From bd5c7d7fd8fc17df990f553d7016b5b47752a018 Mon Sep 17 00:00:00 2001 From: LingLuoYi <32977408+LingLuoYi@users.noreply.github.com> Date: Thu, 16 Apr 2026 18:48:05 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E6=B7=BB=E5=8A=A0zklogin=E7=9A=84?= =?UTF-8?q?=E6=94=AF=E6=8C=81(=E6=9C=AA=E5=AE=8C=E6=88=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chat-app/pnpm-lock.yaml | 2904 +++++++++------------ relayer/.env.example | 1 + relayer/Cargo.toml | 1 + relayer/README.md | 11 +- relayer/src/auth/README.md | 2 +- relayer/src/auth/middleware.rs | 28 +- relayer/src/auth/schemes.rs | 136 +- relayer/src/auth/signature.rs | 280 +- relayer/src/config.rs | 8 + relayer/src/handlers/messages/handlers.rs | 20 +- relayer/src/models/message.rs | 5 +- seal | 1 + 12 files changed, 1690 insertions(+), 1707 deletions(-) create mode 160000 seal diff --git a/chat-app/pnpm-lock.yaml b/chat-app/pnpm-lock.yaml index cd634b9..1af126d 100644 --- a/chat-app/pnpm-lock.yaml +++ b/chat-app/pnpm-lock.yaml @@ -1,8 +1,7 @@ -lockfileVersion: '9.0' +lockfileVersion: 5.4 -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false +onlyBuiltDependencies: + - esbuild overrides: picomatch@>=4.0.0 <4.0.4: ^4.0.4 @@ -10,437 +9,693 @@ overrides: importers: .: + specifiers: + '@mysten/bcs': ^2.0.3 + '@mysten/dapp-kit': ^1.0.4 + '@mysten/seal': ^1.1.1 + '@mysten/sui': ^2.13.2 + '@mysten/sui-groups': ^0.0.1 + '@mysten/sui-stack-messaging': link:../ts-sdks/packages/sui-stack-messaging + '@tailwindcss/vite': ^4.2.1 + '@tanstack/react-query': ^5.90.21 + '@types/react': ^19.1.0 + '@types/react-dom': ^19.1.0 + '@vitejs/plugin-react': ^4.5.2 + react: ^19.1.0 + react-dom: ^19.1.0 + tailwindcss: ^4.2.1 + typescript: ~5.8.3 + vite: ^6.3.5 dependencies: - '@mysten/bcs': - specifier: ^2.0.3 - version: 2.0.3 - '@mysten/dapp-kit': - specifier: ^1.0.4 - version: 1.0.4(@mysten/sui@2.13.2(typescript@5.8.3))(@tanstack/react-query@5.90.21(react@19.2.4))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.8.3) - '@mysten/seal': - specifier: ^1.1.1 - version: 1.1.1(@mysten/sui@2.13.2(typescript@5.8.3)) - '@mysten/sui': - specifier: ^2.13.2 - version: 2.13.2(typescript@5.8.3) - '@mysten/sui-groups': - specifier: ^0.0.1 - version: 0.0.1(@mysten/bcs@2.0.3)(@mysten/sui@2.13.2(typescript@5.8.3)) - '@mysten/sui-stack-messaging': - specifier: link:../ts-sdks/packages/sui-stack-messaging - version: link:../ts-sdks/packages/sui-stack-messaging - '@tailwindcss/vite': - specifier: ^4.2.1 - version: 4.2.1(vite@6.4.1(jiti@2.6.1)(lightningcss@1.31.1)) - '@tanstack/react-query': - specifier: ^5.90.21 - version: 5.90.21(react@19.2.4) - react: - specifier: ^19.1.0 - version: 19.2.4 - react-dom: - specifier: ^19.1.0 - version: 19.2.4(react@19.2.4) - tailwindcss: - specifier: ^4.2.1 - version: 4.2.1 + '@mysten/bcs': 2.0.3 + '@mysten/dapp-kit': 1.0.4_5w3nze4j4rssvpoqrsenfwfyem + '@mysten/seal': 1.1.1_@mysten+sui@2.15.0 + '@mysten/sui': 2.15.0_typescript@5.8.3 + '@mysten/sui-groups': 0.0.1_psvhvrt4eis4bt2u3moapvcmve + '@mysten/sui-stack-messaging': link:../ts-sdks/packages/sui-stack-messaging + '@tailwindcss/vite': 4.2.2_vite@6.4.2 + '@tanstack/react-query': 5.99.0_react@19.2.5 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + tailwindcss: 4.2.2 devDependencies: - '@types/react': - specifier: ^19.1.0 - version: 19.2.14 - '@types/react-dom': - specifier: ^19.1.0 - version: 19.2.3(@types/react@19.2.14) - '@vitejs/plugin-react': - specifier: ^4.5.2 - version: 4.7.0(vite@6.4.1(jiti@2.6.1)(lightningcss@1.31.1)) - typescript: - specifier: ~5.8.3 - version: 5.8.3 - vite: - specifier: ^6.3.5 - version: 6.4.1(jiti@2.6.1)(lightningcss@1.31.1) + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3_@types+react@19.2.14 + '@vitejs/plugin-react': 4.7.0_vite@6.4.2 + typescript: 5.8.3 + vite: 6.4.2 packages: - '@0no-co/graphql.web@1.2.0': + /@0no-co/graphql.web/1.2.0_graphql@16.13.2: resolution: {integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 peerDependenciesMeta: graphql: optional: true + dependencies: + graphql: 16.13.2 + dev: false - '@0no-co/graphqlsp@1.15.2': - resolution: {integrity: sha512-Ys031WnS3sTQQBtRTkQsYnw372OlW72ais4sp0oh2UMPRNyxxnq85zRfU4PIdoy9kWriysPT5BYAkgIxhbonFA==} + /@0no-co/graphqlsp/1.15.3_qjxq2rya6zmizfm4gxuimwlaza: + resolution: {integrity: sha512-rap58Wh1qbRnGpPGwB60P6rvKF6G+mgo1kPeDySWIAcqkGMjuyQdrZPcHS6w7mKOT8i/f1UQmjow6+7vfuEXKw==} peerDependencies: graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 - typescript: ^5.0.0 + typescript: ^5.0.0 || ^6.0.0 + dependencies: + '@gql.tada/internal': 1.0.9_qjxq2rya6zmizfm4gxuimwlaza + graphql: 16.13.2 + typescript: 5.8.3 + dev: false - '@babel/code-frame@7.29.0': + /@babel/code-frame/7.29.0: resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + dev: true - '@babel/compat-data@7.29.0': + /@babel/compat-data/7.29.0: resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} engines: {node: '>=6.9.0'} + dev: true - '@babel/core@7.29.0': + /@babel/core/7.29.0: resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6_@babel+core@7.29.0 + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/generator@7.29.1': + /@babel/generator/7.29.1: resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + dev: true - '@babel/helper-compilation-targets@7.28.6': + /@babel/helper-compilation-targets/7.28.6: resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true - '@babel/helper-globals@7.28.0': + /@babel/helper-globals/7.28.0: resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-module-imports@7.28.6': + /@babel/helper-module-imports/7.28.6: resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/helper-module-transforms@7.28.6': + /@babel/helper-module-transforms/7.28.6_@babel+core@7.29.0: resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/helper-plugin-utils@7.28.6': + /@babel/helper-plugin-utils/7.28.6: resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-string-parser@7.27.1': + /@babel/helper-string-parser/7.27.1: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-validator-identifier@7.28.5': + /@babel/helper-validator-identifier/7.28.5: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} + dev: true - '@babel/helper-validator-option@7.27.1': + /@babel/helper-validator-option/7.27.1: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} + dev: true - '@babel/helpers@7.28.6': - resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + /@babel/helpers/7.29.2: + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + dev: true - '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + /@babel/parser/7.29.2: + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.29.0 + dev: true - '@babel/plugin-transform-react-jsx-self@7.27.1': + /@babel/plugin-transform-react-jsx-self/7.27.1_@babel+core@7.29.0: resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + dev: true - '@babel/plugin-transform-react-jsx-source@7.27.1': + /@babel/plugin-transform-react-jsx-source/7.27.1_@babel+core@7.29.0: resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + dev: true - '@babel/runtime@7.28.6': - resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} + /@babel/runtime/7.29.2: + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} engines: {node: '>=6.9.0'} + dev: false - '@babel/template@7.28.6': + /@babel/template/7.28.6: resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + dev: true - '@babel/traverse@7.29.0': + /@babel/traverse/7.29.0: resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/types@7.29.0': + /@babel/types/7.29.0: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + dev: true - '@emotion/hash@0.9.2': + /@emotion/hash/0.9.2: resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + dev: false - '@esbuild/aix-ppc64@0.25.12': + /@esbuild/aix-ppc64/0.25.12: resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] + optional: true - '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + /@esbuild/android-arm/0.25.12: + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} - cpu: [arm64] + cpu: [arm] os: [android] + optional: true - '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + /@esbuild/android-arm64/0.25.12: + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} - cpu: [arm] + cpu: [arm64] os: [android] + optional: true - '@esbuild/android-x64@0.25.12': + /@esbuild/android-x64/0.25.12: resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] + optional: true - '@esbuild/darwin-arm64@0.25.12': + /@esbuild/darwin-arm64/0.25.12: resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + optional: true - '@esbuild/darwin-x64@0.25.12': + /@esbuild/darwin-x64/0.25.12: resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + optional: true - '@esbuild/freebsd-arm64@0.25.12': + /@esbuild/freebsd-arm64/0.25.12: resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + optional: true - '@esbuild/freebsd-x64@0.25.12': + /@esbuild/freebsd-x64/0.25.12: resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + optional: true - '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + /@esbuild/linux-arm/0.25.12: + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} - cpu: [arm64] + cpu: [arm] os: [linux] + optional: true - '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + /@esbuild/linux-arm64/0.25.12: + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} - cpu: [arm] + cpu: [arm64] os: [linux] + optional: true - '@esbuild/linux-ia32@0.25.12': + /@esbuild/linux-ia32/0.25.12: resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + optional: true - '@esbuild/linux-loong64@0.25.12': + /@esbuild/linux-loong64/0.25.12: resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + optional: true - '@esbuild/linux-mips64el@0.25.12': + /@esbuild/linux-mips64el/0.25.12: resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + optional: true - '@esbuild/linux-ppc64@0.25.12': + /@esbuild/linux-ppc64/0.25.12: resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + optional: true - '@esbuild/linux-riscv64@0.25.12': + /@esbuild/linux-riscv64/0.25.12: resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + optional: true - '@esbuild/linux-s390x@0.25.12': + /@esbuild/linux-s390x/0.25.12: resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + optional: true - '@esbuild/linux-x64@0.25.12': + /@esbuild/linux-x64/0.25.12: resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] + optional: true - '@esbuild/netbsd-arm64@0.25.12': + /@esbuild/netbsd-arm64/0.25.12: resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + optional: true - '@esbuild/netbsd-x64@0.25.12': + /@esbuild/netbsd-x64/0.25.12: resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + optional: true - '@esbuild/openbsd-arm64@0.25.12': + /@esbuild/openbsd-arm64/0.25.12: resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + optional: true - '@esbuild/openbsd-x64@0.25.12': + /@esbuild/openbsd-x64/0.25.12: resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + optional: true - '@esbuild/openharmony-arm64@0.25.12': + /@esbuild/openharmony-arm64/0.25.12: resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] + optional: true - '@esbuild/sunos-x64@0.25.12': + /@esbuild/sunos-x64/0.25.12: resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + optional: true - '@esbuild/win32-arm64@0.25.12': + /@esbuild/win32-arm64/0.25.12: resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + optional: true - '@esbuild/win32-ia32@0.25.12': + /@esbuild/win32-ia32/0.25.12: resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + optional: true - '@esbuild/win32-x64@0.25.12': + /@esbuild/win32-x64/0.25.12: resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] + optional: true - '@floating-ui/core@1.7.5': + /@floating-ui/core/1.7.5: resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} + dependencies: + '@floating-ui/utils': 0.2.11 + dev: false - '@floating-ui/dom@1.7.6': + /@floating-ui/dom/1.7.6: resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==} + dependencies: + '@floating-ui/core': 1.7.5 + '@floating-ui/utils': 0.2.11 + dev: false - '@floating-ui/react-dom@2.1.8': + /@floating-ui/react-dom/2.1.8_6emmfbwqxtzh24ergceii3tsaa: resolution: {integrity: sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.7.6 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + dev: false - '@floating-ui/utils@0.2.11': + /@floating-ui/utils/0.2.11: resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} + dev: false - '@gql.tada/cli-utils@1.7.2': - resolution: {integrity: sha512-Qbc7hbLvCz6IliIJpJuKJa9p05b2Jona7ov7+qofCsMRxHRZE1kpAmZMvL8JCI4c0IagpIlWNaMizXEQUe8XjQ==} + /@gql.tada/cli-utils/1.7.3_qjxq2rya6zmizfm4gxuimwlaza: + resolution: {integrity: sha512-3iQY5E/jvv3Lnh6D1Mh7zr+Bb9C/TGk1DHkm+lbIjQBnZAu2m+BcTcr1e3spUt6Aa6HG/xAN2XxpbWw9oZALEg==} peerDependencies: - '@0no-co/graphqlsp': ^1.12.13 - '@gql.tada/svelte-support': 1.0.1 - '@gql.tada/vue-support': 1.0.1 + '@gql.tada/svelte-support': 1.0.2 + '@gql.tada/vue-support': 1.0.2 graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 - typescript: ^5.0.0 + typescript: ^5.0.0 || ^6.0.0 peerDependenciesMeta: '@gql.tada/svelte-support': optional: true '@gql.tada/vue-support': optional: true + dependencies: + '@0no-co/graphqlsp': 1.15.3_qjxq2rya6zmizfm4gxuimwlaza + '@gql.tada/internal': 1.0.9_qjxq2rya6zmizfm4gxuimwlaza + graphql: 16.13.2 + typescript: 5.8.3 + dev: false - '@gql.tada/internal@1.0.8': - resolution: {integrity: sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==} + /@gql.tada/internal/1.0.9_qjxq2rya6zmizfm4gxuimwlaza: + resolution: {integrity: sha512-Bp8yi+kLrzIJ3l5Dfxhz48H4OCH2LCX+pShaPcJgh+oiBt6clrjUKDYNDD3Z78aDQ3+Tyrxe4dd0MfLgpSLPPg==} peerDependencies: graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 - typescript: ^5.0.0 + typescript: ^5.0.0 || ^6.0.0 + dependencies: + '@0no-co/graphql.web': 1.2.0_graphql@16.13.2 + graphql: 16.13.2 + typescript: 5.8.3 + dev: false - '@graphql-typed-document-node/core@3.2.0': + /@graphql-typed-document-node/core/3.2.0_graphql@16.13.2: resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + graphql: 16.13.2 + dev: false - '@jridgewell/gen-mapping@0.3.13': + /@jridgewell/gen-mapping/0.3.13: resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/remapping@2.3.5': + /@jridgewell/remapping/2.3.5: resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/resolve-uri@3.1.2': + /@jridgewell/resolve-uri/3.1.2: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.5': + /@jridgewell/sourcemap-codec/1.5.5: resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.31': + /@jridgewell/trace-mapping/0.3.31: resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 - '@mysten/bcs@2.0.3': + /@mysten/bcs/2.0.3: resolution: {integrity: sha512-dwcaL4HNAsEGpU3hKUAsXgCZp9l6++e2A3THpzoYZ8e7bsy4XH1V0dXD5dIzgNcVZiZfb6ZnDMG+gdF6+1WOQA==} + dependencies: + '@mysten/utils': 0.3.1 + '@scure/base': 2.0.0 + dev: false - '@mysten/dapp-kit@1.0.4': + /@mysten/dapp-kit/1.0.4_5w3nze4j4rssvpoqrsenfwfyem: resolution: {integrity: sha512-RybvMIT3R+GNWNH7tOWXnsLk0gKLtpY/GOefp/Mzsqb78JD3QzKzlQmrm/Bc5bEisI/SuykU3qYzKDLQivZy0Q==} peerDependencies: '@mysten/sui': ^2.8.0 '@tanstack/react-query': ^5.0.0 react: '*' + dependencies: + '@mysten/slush-wallet': 1.0.3_3wac7dt4vgopstjww7r3jer7ee + '@mysten/sui': 2.15.0_typescript@5.8.3 + '@mysten/utils': 0.3.1 + '@mysten/wallet-standard': 0.20.1_@mysten+sui@2.15.0 + '@radix-ui/react-dialog': 1.1.15_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-dropdown-menu': 2.1.16_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-slot': 1.2.4_2w2zdbrz3hiagriqclqc3vnuey + '@tanstack/react-query': 5.99.0_react@19.2.5 + '@vanilla-extract/css': 1.20.1 + '@vanilla-extract/dynamic': 2.1.5 + '@vanilla-extract/recipes': 0.5.7_7x2wfvjchi7rfscxop3kjc6hxe + clsx: 2.1.1 + react: 19.2.5 + zustand: 5.0.12_2w2zdbrz3hiagriqclqc3vnuey + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - babel-plugin-macros + - immer + - react-dom + - typescript + - use-sync-external-store + dev: false - '@mysten/seal@1.1.1': + /@mysten/seal/1.1.1_@mysten+sui@2.15.0: resolution: {integrity: sha512-OGxEDmEuXQAzxJKz3ap1dkRSf5fD/iKpz/J8+wZlPbeSok2fVt3KPaCZngjrvqqVRn5lmQomNpzXQCKo929A3w==} peerDependencies: '@mysten/sui': ^2.8.0 + dependencies: + '@mysten/bcs': 2.0.3 + '@mysten/sui': 2.15.0_typescript@5.8.3 + '@noble/curves': 2.2.0 + '@noble/hashes': 2.2.0 + dev: false - '@mysten/slush-wallet@1.0.3': + /@mysten/slush-wallet/1.0.3_3wac7dt4vgopstjww7r3jer7ee: resolution: {integrity: sha512-TF1CXXug5VPaV4KImKxZ7nyR0XY//KJVzOFxFXaajBHewLBinCO7s6GS9EYbtQMaNvnjrYQn1cpGhYfwGkzvtQ==} peerDependencies: '@mysten/sui': ^2.8.0 + dependencies: + '@mysten/sui': 2.15.0_typescript@5.8.3 + '@mysten/utils': 0.3.1 + '@mysten/wallet-standard': 0.20.1_@mysten+sui@2.15.0 + '@mysten/window-wallet-core': 0.1.4_typescript@5.8.3 + valibot: 1.3.1_typescript@5.8.3 + transitivePeerDependencies: + - typescript + dev: false - '@mysten/sui-groups@0.0.1': + /@mysten/sui-groups/0.0.1_psvhvrt4eis4bt2u3moapvcmve: resolution: {integrity: sha512-6yck5UQjAtApWUXvgPc0WaMNatTTUxINBU92XrgawYTWZry/PAxGLvU1XjFFW+DAKbQWpkOMqu8yiuwcBybXfA==} peerDependencies: '@mysten/bcs': ^2.0.3 '@mysten/sui': ^2.13.0 + dependencies: + '@mysten/bcs': 2.0.3 + '@mysten/sui': 2.15.0_typescript@5.8.3 + dev: false - '@mysten/sui@2.13.2': - resolution: {integrity: sha512-M/H2CZJQyLyi0vvCJZ6rRzItJCsnh66v1OTI2VoBad2lau/BTuUKOEPjRpfU4YlVJcGR4h+RLCjDXV4ACuRKSA==} + /@mysten/sui/2.15.0_typescript@5.8.3: + resolution: {integrity: sha512-OWdmd/kPOKGCBkAzyKi/AAMcn+rf39sbrqm7KAx1c2SMbaNwskJV4Uw2seiW686neyfoc0cw/hZ7/Rv9PyM+hQ==} engines: {node: '>=22'} + dependencies: + '@graphql-typed-document-node/core': 3.2.0_graphql@16.13.2 + '@mysten/bcs': 2.0.3 + '@mysten/utils': 0.3.1 + '@noble/curves': 2.2.0 + '@noble/hashes': 2.2.0 + '@protobuf-ts/grpcweb-transport': 2.11.1 + '@protobuf-ts/runtime': 2.11.1 + '@protobuf-ts/runtime-rpc': 2.11.1 + '@scure/base': 2.0.0 + '@scure/bip32': 2.0.1 + '@scure/bip39': 2.0.1 + gql.tada: 1.9.2_qjxq2rya6zmizfm4gxuimwlaza + graphql: 16.13.2 + poseidon-lite: 0.2.1 + valibot: 1.3.1_typescript@5.8.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + dev: false - '@mysten/utils@0.3.1': + /@mysten/utils/0.3.1: resolution: {integrity: sha512-36KhxG284uhDdSnlkyNaS6fzKTX9FpP2WQWOwUKIRsqQFFIm2ooCf2TP1IuqrtMpkairwpiWkAS0eg7cpemVzg==} + dependencies: + '@scure/base': 2.0.0 + dev: false - '@mysten/wallet-standard@0.20.1': + /@mysten/wallet-standard/0.20.1_@mysten+sui@2.15.0: resolution: {integrity: sha512-Q2GoXO1SPLayqunNIWI3VT8cyOVGTFAPUvaCzx7jYIEoZBfyCR5RCUS4/ehgAlApF88Y/1c/OfjBvEoeRi76jw==} peerDependencies: '@mysten/sui': '*' + dependencies: + '@mysten/sui': 2.15.0_typescript@5.8.3 + '@wallet-standard/core': 1.1.1 + dev: false - '@mysten/window-wallet-core@0.1.4': + /@mysten/window-wallet-core/0.1.4_typescript@5.8.3: resolution: {integrity: sha512-LK1t5dJQZUJv0fF/Cj8HS8N9HHaa7cAOcdWfPAFuYvgVJMEr9K/p33ldqiflcn6p1d53uTtUH9kA5/lQlTmZ2A==} + dependencies: + '@mysten/utils': 0.3.1 + jose: 6.2.2 + valibot: 1.3.1_typescript@5.8.3 + transitivePeerDependencies: + - typescript + dev: false - '@noble/curves@2.0.1': + /@noble/curves/2.0.1: resolution: {integrity: sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==} engines: {node: '>= 20.19.0'} + dependencies: + '@noble/hashes': 2.0.1 + dev: false + + /@noble/curves/2.2.0: + resolution: {integrity: sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ==} + engines: {node: '>= 20.19.0'} + dependencies: + '@noble/hashes': 2.2.0 + dev: false - '@noble/hashes@2.0.1': + /@noble/hashes/2.0.1: resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==} engines: {node: '>= 20.19.0'} + dev: false + + /@noble/hashes/2.2.0: + resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} + engines: {node: '>= 20.19.0'} + dev: false - '@protobuf-ts/grpcweb-transport@2.11.1': + /@protobuf-ts/grpcweb-transport/2.11.1: resolution: {integrity: sha512-1W4utDdvOB+RHMFQ0soL4JdnxjXV+ddeGIUg08DvZrA8Ms6k5NN6GBFU2oHZdTOcJVpPrDJ02RJlqtaoCMNBtw==} + dependencies: + '@protobuf-ts/runtime': 2.11.1 + '@protobuf-ts/runtime-rpc': 2.11.1 + dev: false - '@protobuf-ts/runtime-rpc@2.11.1': + /@protobuf-ts/runtime-rpc/2.11.1: resolution: {integrity: sha512-4CqqUmNA+/uMz00+d3CYKgElXO9VrEbucjnBFEjqI4GuDrEQ32MaI3q+9qPBvIGOlL4PmHXrzM32vBPWRhQKWQ==} + dependencies: + '@protobuf-ts/runtime': 2.11.1 + dev: false - '@protobuf-ts/runtime@2.11.1': + /@protobuf-ts/runtime/2.11.1: resolution: {integrity: sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==} + dev: false - '@radix-ui/primitive@1.1.3': + /@radix-ui/primitive/1.1.3: resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + dev: false - '@radix-ui/react-arrow@1.1.7': + /@radix-ui/react-arrow/1.1.7_y45ga5w6fuw6masmtkrk454oea: resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} peerDependencies: '@types/react': '*' @@ -452,8 +707,15 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3_@types+react@19.2.14 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + dev: false - '@radix-ui/react-collection@1.1.7': + /@radix-ui/react-collection/1.1.7_y45ga5w6fuw6masmtkrk454oea: resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} peerDependencies: '@types/react': '*' @@ -465,8 +727,18 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-context': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-slot': 1.2.3_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3_@types+react@19.2.14 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + dev: false - '@radix-ui/react-compose-refs@1.1.2': + /@radix-ui/react-compose-refs/1.1.2_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: '@types/react': '*' @@ -474,8 +746,12 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 19.2.14 + react: 19.2.5 + dev: false - '@radix-ui/react-context@1.1.2': + /@radix-ui/react-context/1.1.2_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} peerDependencies: '@types/react': '*' @@ -483,8 +759,12 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 19.2.14 + react: 19.2.5 + dev: false - '@radix-ui/react-dialog@1.1.15': + /@radix-ui/react-dialog/1.1.15_y45ga5w6fuw6masmtkrk454oea: resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} peerDependencies: '@types/react': '*' @@ -496,8 +776,28 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-context': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-dismissable-layer': 1.1.11_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-focus-guards': 1.1.3_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-focus-scope': 1.1.7_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-id': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-portal': 1.1.9_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-presence': 1.1.5_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-slot': 1.2.3_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-use-controllable-state': 1.2.2_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3_@types+react@19.2.14 + aria-hidden: 1.2.6 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + react-remove-scroll: 2.7.2_2w2zdbrz3hiagriqclqc3vnuey + dev: false - '@radix-ui/react-direction@1.1.1': + /@radix-ui/react-direction/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} peerDependencies: '@types/react': '*' @@ -505,8 +805,12 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 19.2.14 + react: 19.2.5 + dev: false - '@radix-ui/react-dismissable-layer@1.1.11': + /@radix-ui/react-dismissable-layer/1.1.11_y45ga5w6fuw6masmtkrk454oea: resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} peerDependencies: '@types/react': '*' @@ -518,8 +822,19 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-use-callback-ref': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-use-escape-keydown': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3_@types+react@19.2.14 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + dev: false - '@radix-ui/react-dropdown-menu@2.1.16': + /@radix-ui/react-dropdown-menu/2.1.16_y45ga5w6fuw6masmtkrk454oea: resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} peerDependencies: '@types/react': '*' @@ -531,8 +846,21 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-context': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-id': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-menu': 2.1.16_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-use-controllable-state': 1.2.2_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3_@types+react@19.2.14 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + dev: false - '@radix-ui/react-focus-guards@1.1.3': + /@radix-ui/react-focus-guards/1.1.3_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} peerDependencies: '@types/react': '*' @@ -540,8 +868,12 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 19.2.14 + react: 19.2.5 + dev: false - '@radix-ui/react-focus-scope@1.1.7': + /@radix-ui/react-focus-scope/1.1.7_y45ga5w6fuw6masmtkrk454oea: resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} peerDependencies: '@types/react': '*' @@ -553,8 +885,17 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-use-callback-ref': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3_@types+react@19.2.14 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + dev: false - '@radix-ui/react-id@1.1.1': + /@radix-ui/react-id/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} peerDependencies: '@types/react': '*' @@ -562,8 +903,13 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + react: 19.2.5 + dev: false - '@radix-ui/react-menu@2.1.16': + /@radix-ui/react-menu/2.1.16_y45ga5w6fuw6masmtkrk454oea: resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} peerDependencies: '@types/react': '*' @@ -575,8 +921,32 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-context': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-direction': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-dismissable-layer': 1.1.11_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-focus-guards': 1.1.3_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-focus-scope': 1.1.7_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-id': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-popper': 1.2.8_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-portal': 1.1.9_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-presence': 1.1.5_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-roving-focus': 1.1.11_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-slot': 1.2.3_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-use-callback-ref': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3_@types+react@19.2.14 + aria-hidden: 1.2.6 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + react-remove-scroll: 2.7.2_2w2zdbrz3hiagriqclqc3vnuey + dev: false - '@radix-ui/react-popper@1.2.8': + /@radix-ui/react-popper/1.2.8_y45ga5w6fuw6masmtkrk454oea: resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} peerDependencies: '@types/react': '*' @@ -588,8 +958,24 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@floating-ui/react-dom': 2.1.8_6emmfbwqxtzh24ergceii3tsaa + '@radix-ui/react-arrow': 1.1.7_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-context': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-use-callback-ref': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-use-rect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-use-size': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/rect': 1.1.1 + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3_@types+react@19.2.14 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + dev: false - '@radix-ui/react-portal@1.1.9': + /@radix-ui/react-portal/1.1.9_y45ga5w6fuw6masmtkrk454oea: resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} peerDependencies: '@types/react': '*' @@ -601,8 +987,16 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3_@types+react@19.2.14 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + dev: false - '@radix-ui/react-presence@1.1.5': + /@radix-ui/react-presence/1.1.5_y45ga5w6fuw6masmtkrk454oea: resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} peerDependencies: '@types/react': '*' @@ -614,8 +1008,16 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3_@types+react@19.2.14 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + dev: false - '@radix-ui/react-primitive@2.1.3': + /@radix-ui/react-primitive/2.1.3_y45ga5w6fuw6masmtkrk454oea: resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} peerDependencies: '@types/react': '*' @@ -627,8 +1029,15 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/react-slot': 1.2.3_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3_@types+react@19.2.14 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + dev: false - '@radix-ui/react-roving-focus@1.1.11': + /@radix-ui/react-roving-focus/1.1.11_y45ga5w6fuw6masmtkrk454oea: resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} peerDependencies: '@types/react': '*' @@ -640,8 +1049,23 @@ packages: optional: true '@types/react-dom': optional: true + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-context': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-direction': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-id': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea + '@radix-ui/react-use-callback-ref': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-use-controllable-state': 1.2.2_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3_@types+react@19.2.14 + react: 19.2.5 + react-dom: 19.2.5_react@19.2.5 + dev: false - '@radix-ui/react-slot@1.2.3': + /@radix-ui/react-slot/1.2.3_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} peerDependencies: '@types/react': '*' @@ -649,8 +1073,13 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + react: 19.2.5 + dev: false - '@radix-ui/react-slot@1.2.4': + /@radix-ui/react-slot/1.2.4_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} peerDependencies: '@types/react': '*' @@ -658,8 +1087,13 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + react: 19.2.5 + dev: false - '@radix-ui/react-use-callback-ref@1.1.1': + /@radix-ui/react-use-callback-ref/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: '@types/react': '*' @@ -667,8 +1101,12 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 19.2.14 + react: 19.2.5 + dev: false - '@radix-ui/react-use-controllable-state@1.2.2': + /@radix-ui/react-use-controllable-state/1.2.2_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} peerDependencies: '@types/react': '*' @@ -676,8 +1114,14 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2_2w2zdbrz3hiagriqclqc3vnuey + '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + react: 19.2.5 + dev: false - '@radix-ui/react-use-effect-event@0.0.2': + /@radix-ui/react-use-effect-event/0.0.2_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} peerDependencies: '@types/react': '*' @@ -685,8 +1129,13 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + react: 19.2.5 + dev: false - '@radix-ui/react-use-escape-keydown@1.1.1': + /@radix-ui/react-use-escape-keydown/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} peerDependencies: '@types/react': '*' @@ -694,8 +1143,13 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + react: 19.2.5 + dev: false - '@radix-ui/react-use-layout-effect@1.1.1': + /@radix-ui/react-use-layout-effect/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} peerDependencies: '@types/react': '*' @@ -703,8 +1157,12 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 19.2.14 + react: 19.2.5 + dev: false - '@radix-ui/react-use-rect@1.1.1': + /@radix-ui/react-use-rect/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} peerDependencies: '@types/react': '*' @@ -712,234 +1170,310 @@ packages: peerDependenciesMeta: '@types/react': optional: true - - '@radix-ui/react-use-size@1.1.1': - resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + dependencies: + '@radix-ui/rect': 1.1.1 + '@types/react': 19.2.14 + react: 19.2.5 + dev: false + + /@radix-ui/react-use-size/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey + '@types/react': 19.2.14 + react: 19.2.5 + dev: false - '@radix-ui/rect@1.1.1': + /@radix-ui/rect/1.1.1: resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + dev: false - '@rolldown/pluginutils@1.0.0-beta.27': + /@rolldown/pluginutils/1.0.0-beta.27: resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + dev: true - '@rollup/rollup-android-arm-eabi@4.59.0': - resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} + /@rollup/rollup-android-arm-eabi/4.60.1: + resolution: {integrity: sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==} cpu: [arm] os: [android] + optional: true - '@rollup/rollup-android-arm64@4.59.0': - resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} + /@rollup/rollup-android-arm64/4.60.1: + resolution: {integrity: sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==} cpu: [arm64] os: [android] + optional: true - '@rollup/rollup-darwin-arm64@4.59.0': - resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} + /@rollup/rollup-darwin-arm64/4.60.1: + resolution: {integrity: sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==} cpu: [arm64] os: [darwin] + optional: true - '@rollup/rollup-darwin-x64@4.59.0': - resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} + /@rollup/rollup-darwin-x64/4.60.1: + resolution: {integrity: sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==} cpu: [x64] os: [darwin] + optional: true - '@rollup/rollup-freebsd-arm64@4.59.0': - resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} + /@rollup/rollup-freebsd-arm64/4.60.1: + resolution: {integrity: sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==} cpu: [arm64] os: [freebsd] + optional: true - '@rollup/rollup-freebsd-x64@4.59.0': - resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} + /@rollup/rollup-freebsd-x64/4.60.1: + resolution: {integrity: sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==} cpu: [x64] os: [freebsd] + optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': - resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} + /@rollup/rollup-linux-arm-gnueabihf/4.60.1: + resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==} cpu: [arm] os: [linux] libc: [glibc] + optional: true - '@rollup/rollup-linux-arm-musleabihf@4.59.0': - resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} + /@rollup/rollup-linux-arm-musleabihf/4.60.1: + resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==} cpu: [arm] os: [linux] libc: [musl] + optional: true - '@rollup/rollup-linux-arm64-gnu@4.59.0': - resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} + /@rollup/rollup-linux-arm64-gnu/4.60.1: + resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==} cpu: [arm64] os: [linux] libc: [glibc] + optional: true - '@rollup/rollup-linux-arm64-musl@4.59.0': - resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} + /@rollup/rollup-linux-arm64-musl/4.60.1: + resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==} cpu: [arm64] os: [linux] libc: [musl] + optional: true - '@rollup/rollup-linux-loong64-gnu@4.59.0': - resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} + /@rollup/rollup-linux-loong64-gnu/4.60.1: + resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==} cpu: [loong64] os: [linux] libc: [glibc] + optional: true - '@rollup/rollup-linux-loong64-musl@4.59.0': - resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + /@rollup/rollup-linux-loong64-musl/4.60.1: + resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==} cpu: [loong64] os: [linux] libc: [musl] + optional: true - '@rollup/rollup-linux-ppc64-gnu@4.59.0': - resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} + /@rollup/rollup-linux-ppc64-gnu/4.60.1: + resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==} cpu: [ppc64] os: [linux] libc: [glibc] + optional: true - '@rollup/rollup-linux-ppc64-musl@4.59.0': - resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + /@rollup/rollup-linux-ppc64-musl/4.60.1: + resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==} cpu: [ppc64] os: [linux] libc: [musl] + optional: true - '@rollup/rollup-linux-riscv64-gnu@4.59.0': - resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} + /@rollup/rollup-linux-riscv64-gnu/4.60.1: + resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==} cpu: [riscv64] os: [linux] libc: [glibc] + optional: true - '@rollup/rollup-linux-riscv64-musl@4.59.0': - resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} + /@rollup/rollup-linux-riscv64-musl/4.60.1: + resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==} cpu: [riscv64] os: [linux] libc: [musl] + optional: true - '@rollup/rollup-linux-s390x-gnu@4.59.0': - resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} + /@rollup/rollup-linux-s390x-gnu/4.60.1: + resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==} cpu: [s390x] os: [linux] libc: [glibc] + optional: true - '@rollup/rollup-linux-x64-gnu@4.59.0': - resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} + /@rollup/rollup-linux-x64-gnu/4.60.1: + resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==} cpu: [x64] os: [linux] libc: [glibc] + optional: true - '@rollup/rollup-linux-x64-musl@4.59.0': - resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} + /@rollup/rollup-linux-x64-musl/4.60.1: + resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==} cpu: [x64] os: [linux] libc: [musl] + optional: true - '@rollup/rollup-openbsd-x64@4.59.0': - resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + /@rollup/rollup-openbsd-x64/4.60.1: + resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==} cpu: [x64] os: [openbsd] + optional: true - '@rollup/rollup-openharmony-arm64@4.59.0': - resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} + /@rollup/rollup-openharmony-arm64/4.60.1: + resolution: {integrity: sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==} cpu: [arm64] os: [openharmony] + optional: true - '@rollup/rollup-win32-arm64-msvc@4.59.0': - resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} + /@rollup/rollup-win32-arm64-msvc/4.60.1: + resolution: {integrity: sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==} cpu: [arm64] os: [win32] + optional: true - '@rollup/rollup-win32-ia32-msvc@4.59.0': - resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} + /@rollup/rollup-win32-ia32-msvc/4.60.1: + resolution: {integrity: sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==} cpu: [ia32] os: [win32] + optional: true - '@rollup/rollup-win32-x64-gnu@4.59.0': - resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} + /@rollup/rollup-win32-x64-gnu/4.60.1: + resolution: {integrity: sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==} cpu: [x64] os: [win32] + optional: true - '@rollup/rollup-win32-x64-msvc@4.59.0': - resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} + /@rollup/rollup-win32-x64-msvc/4.60.1: + resolution: {integrity: sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==} cpu: [x64] os: [win32] + optional: true - '@scure/base@2.0.0': + /@scure/base/2.0.0: resolution: {integrity: sha512-3E1kpuZginKkek01ovG8krQ0Z44E3DHPjc5S2rjJw9lZn3KSQOs8S7wqikF/AH7iRanHypj85uGyxk0XAyC37w==} + dev: false - '@scure/bip32@2.0.1': + /@scure/bip32/2.0.1: resolution: {integrity: sha512-4Md1NI5BzoVP+bhyJaY3K6yMesEFzNS1sE/cP+9nuvE7p/b0kx9XbpDHHFl8dHtufcbdHRUUQdRqLIPHN/s7yA==} + dependencies: + '@noble/curves': 2.0.1 + '@noble/hashes': 2.0.1 + '@scure/base': 2.0.0 + dev: false - '@scure/bip39@2.0.1': + /@scure/bip39/2.0.1: resolution: {integrity: sha512-PsxdFj/d2AcJcZDX1FXN3dDgitDDTmwf78rKZq1a6c1P1Nan1X/Sxc7667zU3U+AN60g7SxxP0YCVw2H/hBycg==} + dependencies: + '@noble/hashes': 2.0.1 + '@scure/base': 2.0.0 + dev: false - '@tailwindcss/node@4.2.1': - resolution: {integrity: sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==} + /@tailwindcss/node/4.2.2: + resolution: {integrity: sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==} + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.20.1 + jiti: 2.6.1 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.2.2 + dev: false - '@tailwindcss/oxide-android-arm64@4.2.1': - resolution: {integrity: sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==} + /@tailwindcss/oxide-android-arm64/4.2.2: + resolution: {integrity: sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==} engines: {node: '>= 20'} cpu: [arm64] os: [android] + dev: false + optional: true - '@tailwindcss/oxide-darwin-arm64@4.2.1': - resolution: {integrity: sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==} + /@tailwindcss/oxide-darwin-arm64/4.2.2: + resolution: {integrity: sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==} engines: {node: '>= 20'} cpu: [arm64] os: [darwin] + dev: false + optional: true - '@tailwindcss/oxide-darwin-x64@4.2.1': - resolution: {integrity: sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==} + /@tailwindcss/oxide-darwin-x64/4.2.2: + resolution: {integrity: sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==} engines: {node: '>= 20'} cpu: [x64] os: [darwin] + dev: false + optional: true - '@tailwindcss/oxide-freebsd-x64@4.2.1': - resolution: {integrity: sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==} + /@tailwindcss/oxide-freebsd-x64/4.2.2: + resolution: {integrity: sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==} engines: {node: '>= 20'} cpu: [x64] os: [freebsd] + dev: false + optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1': - resolution: {integrity: sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==} + /@tailwindcss/oxide-linux-arm-gnueabihf/4.2.2: + resolution: {integrity: sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==} engines: {node: '>= 20'} cpu: [arm] os: [linux] + dev: false + optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.2.1': - resolution: {integrity: sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==} + /@tailwindcss/oxide-linux-arm64-gnu/4.2.2: + resolution: {integrity: sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] libc: [glibc] + dev: false + optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.2.1': - resolution: {integrity: sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==} + /@tailwindcss/oxide-linux-arm64-musl/4.2.2: + resolution: {integrity: sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] libc: [musl] + dev: false + optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.2.1': - resolution: {integrity: sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==} + /@tailwindcss/oxide-linux-x64-gnu/4.2.2: + resolution: {integrity: sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==} engines: {node: '>= 20'} cpu: [x64] os: [linux] libc: [glibc] + dev: false + optional: true - '@tailwindcss/oxide-linux-x64-musl@4.2.1': - resolution: {integrity: sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==} + /@tailwindcss/oxide-linux-x64-musl/4.2.2: + resolution: {integrity: sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==} engines: {node: '>= 20'} cpu: [x64] os: [linux] libc: [musl] + dev: false + optional: true - '@tailwindcss/oxide-wasm32-wasi@4.2.1': - resolution: {integrity: sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==} + /@tailwindcss/oxide-wasm32-wasi/4.2.2: + resolution: {integrity: sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==} engines: {node: '>=14.0.0'} cpu: [wasm32] + dev: false + optional: true bundledDependencies: - '@napi-rs/wasm-runtime' - '@emnapi/core' @@ -948,148 +1482,264 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.2.1': - resolution: {integrity: sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==} + /@tailwindcss/oxide-win32-arm64-msvc/4.2.2: + resolution: {integrity: sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==} engines: {node: '>= 20'} cpu: [arm64] os: [win32] + dev: false + optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.2.1': - resolution: {integrity: sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==} + /@tailwindcss/oxide-win32-x64-msvc/4.2.2: + resolution: {integrity: sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==} engines: {node: '>= 20'} cpu: [x64] os: [win32] + dev: false + optional: true - '@tailwindcss/oxide@4.2.1': - resolution: {integrity: sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==} + /@tailwindcss/oxide/4.2.2: + resolution: {integrity: sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==} engines: {node: '>= 20'} - - '@tailwindcss/vite@4.2.1': - resolution: {integrity: sha512-TBf2sJjYeb28jD2U/OhwdW0bbOsxkWPwQ7SrqGf9sVcoYwZj7rkXljroBO9wKBut9XnmQLXanuDUeqQK0lGg/w==} + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.2.2 + '@tailwindcss/oxide-darwin-arm64': 4.2.2 + '@tailwindcss/oxide-darwin-x64': 4.2.2 + '@tailwindcss/oxide-freebsd-x64': 4.2.2 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.2 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.2 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.2 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.2 + '@tailwindcss/oxide-linux-x64-musl': 4.2.2 + '@tailwindcss/oxide-wasm32-wasi': 4.2.2 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.2 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.2 + dev: false + + /@tailwindcss/vite/4.2.2_vite@6.4.2: + resolution: {integrity: sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w==} peerDependencies: - vite: ^5.2.0 || ^6 || ^7 + vite: ^5.2.0 || ^6 || ^7 || ^8 + dependencies: + '@tailwindcss/node': 4.2.2 + '@tailwindcss/oxide': 4.2.2 + tailwindcss: 4.2.2 + vite: 6.4.2 + dev: false - '@tanstack/query-core@5.90.20': - resolution: {integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==} + /@tanstack/query-core/5.99.0: + resolution: {integrity: sha512-3Jv3WQG0BCcH7G+7lf/bP8QyBfJOXeY+T08Rin3GZ1bshvwlbPt7NrDHMEzGdKIOmOzvIQmxjk28YEQX60k7pQ==} + dev: false - '@tanstack/react-query@5.90.21': - resolution: {integrity: sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==} + /@tanstack/react-query/5.99.0_react@19.2.5: + resolution: {integrity: sha512-OY2bCqPemT1LlqJ8Y2CUau4KELnIhhG9Ol3ZndPbdnB095pRbPo1cHuXTndg8iIwtoHTgwZjyaDnQ0xD0mYwAw==} peerDependencies: react: ^18 || ^19 + dependencies: + '@tanstack/query-core': 5.99.0 + react: 19.2.5 + dev: false - '@types/babel__core@7.20.5': + /@types/babel__core/7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + dev: true - '@types/babel__generator@7.27.0': + /@types/babel__generator/7.27.0: resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + dependencies: + '@babel/types': 7.29.0 + dev: true - '@types/babel__template@7.4.4': + /@types/babel__template/7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + dev: true - '@types/babel__traverse@7.28.0': + /@types/babel__traverse/7.28.0: resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + dependencies: + '@babel/types': 7.29.0 + dev: true - '@types/estree@1.0.8': + /@types/estree/1.0.8: resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/react-dom@19.2.3': + /@types/react-dom/19.2.3_@types+react@19.2.14: resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: '@types/react': ^19.2.0 + dependencies: + '@types/react': 19.2.14 - '@types/react@19.2.14': + /@types/react/19.2.14: resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + dependencies: + csstype: 3.2.3 - '@vanilla-extract/css@1.18.0': - resolution: {integrity: sha512-/p0dwOjr0o8gE5BRQ5O9P0u/2DjUd6Zfga2JGmE4KaY7ZITWMszTzk4x4CPlM5cKkRr2ZGzbE6XkuPNfp9shSQ==} + /@vanilla-extract/css/1.20.1: + resolution: {integrity: sha512-5I9RNo5uZW9tsBnqrWzJqELegOqTHBrZyDFnES0gR9gJJHBB9dom1N0bwITM9tKwBcfKrTX4a6DHVeQdJ2ubQA==} + dependencies: + '@emotion/hash': 0.9.2 + '@vanilla-extract/private': 1.0.9 + css-what: 6.2.2 + csstype: 3.2.3 + dedent: 1.7.2 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + lru-cache: 10.4.3 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - babel-plugin-macros + dev: false - '@vanilla-extract/dynamic@2.1.5': + /@vanilla-extract/dynamic/2.1.5: resolution: {integrity: sha512-QGIFGb1qyXQkbzx6X6i3+3LMc/iv/ZMBttMBL+Wm/DetQd36KsKsFg5CtH3qy+1hCA/5w93mEIIAiL4fkM8ycw==} + dependencies: + '@vanilla-extract/private': 1.0.9 + dev: false - '@vanilla-extract/private@1.0.9': + /@vanilla-extract/private/1.0.9: resolution: {integrity: sha512-gT2jbfZuaaCLrAxwXbRgIhGhcXbRZCG3v4TTUnjw0EJ7ArdBRxkq4msNJkbuRkCgfIK5ATmprB5t9ljvLeFDEA==} + dev: false - '@vanilla-extract/recipes@0.5.7': + /@vanilla-extract/recipes/0.5.7_7x2wfvjchi7rfscxop3kjc6hxe: resolution: {integrity: sha512-Fvr+htdyb6LVUu+PhH61UFPhwkjgDEk8L4Zq9oIdte42sntpKrgFy90MyTRtGwjVALmrJ0pwRUVr8UoByYeW8A==} peerDependencies: '@vanilla-extract/css': ^1.0.0 + dependencies: + '@vanilla-extract/css': 1.20.1 + dev: false - '@vitejs/plugin-react@4.7.0': + /@vitejs/plugin-react/4.7.0_vite@6.4.2: resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1_@babel+core@7.29.0 + '@babel/plugin-transform-react-jsx-source': 7.27.1_@babel+core@7.29.0 + '@rolldown/pluginutils': 1.0.0-beta.27 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 6.4.2 + transitivePeerDependencies: + - supports-color + dev: true - '@wallet-standard/app@1.1.0': + /@wallet-standard/app/1.1.0: resolution: {integrity: sha512-3CijvrO9utx598kjr45hTbbeeykQrQfKmSnxeWOgU25TOEpvcipD/bYDQWIqUv1Oc6KK4YStokSMu/FBNecGUQ==} engines: {node: '>=16'} + dependencies: + '@wallet-standard/base': 1.1.0 + dev: false - '@wallet-standard/base@1.1.0': + /@wallet-standard/base/1.1.0: resolution: {integrity: sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==} engines: {node: '>=16'} + dev: false - '@wallet-standard/core@1.1.1': + /@wallet-standard/core/1.1.1: resolution: {integrity: sha512-5Xmjc6+Oe0hcPfVc5n8F77NVLwx1JVAoCVgQpLyv/43/bhtIif+Gx3WUrDlaSDoM8i2kA2xd6YoFbHCxs+e0zA==} engines: {node: '>=16'} + dependencies: + '@wallet-standard/app': 1.1.0 + '@wallet-standard/base': 1.1.0 + '@wallet-standard/errors': 0.1.1 + '@wallet-standard/features': 1.1.0 + '@wallet-standard/wallet': 1.1.0 + dev: false - '@wallet-standard/errors@0.1.1': + /@wallet-standard/errors/0.1.1: resolution: {integrity: sha512-V8Ju1Wvol8i/VDyQOHhjhxmMVwmKiwyxUZBnHhtiPZJTWY0U/Shb2iEWyGngYEbAkp2sGTmEeNX1tVyGR7PqNw==} engines: {node: '>=16'} hasBin: true + dependencies: + chalk: 5.6.2 + commander: 13.1.0 + dev: false - '@wallet-standard/features@1.1.0': + /@wallet-standard/features/1.1.0: resolution: {integrity: sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==} engines: {node: '>=16'} + dependencies: + '@wallet-standard/base': 1.1.0 + dev: false - '@wallet-standard/wallet@1.1.0': + /@wallet-standard/wallet/1.1.0: resolution: {integrity: sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==} engines: {node: '>=16'} + dependencies: + '@wallet-standard/base': 1.1.0 + dev: false - aria-hidden@1.2.6: + /aria-hidden/1.2.6: resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} engines: {node: '>=10'} + dependencies: + tslib: 2.8.1 + dev: false - baseline-browser-mapping@2.10.0: - resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==} + /baseline-browser-mapping/2.10.19: + resolution: {integrity: sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==} engines: {node: '>=6.0.0'} hasBin: true + dev: true - browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + /browserslist/4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + dependencies: + baseline-browser-mapping: 2.10.19 + caniuse-lite: 1.0.30001788 + electron-to-chromium: 1.5.336 + node-releases: 2.0.37 + update-browserslist-db: 1.2.3_browserslist@4.28.2 + dev: true - caniuse-lite@1.0.30001777: - resolution: {integrity: sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==} + /caniuse-lite/1.0.30001788: + resolution: {integrity: sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==} + dev: true - chalk@5.6.2: + /chalk/5.6.2: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: false - clsx@2.1.1: + /clsx/2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + dev: false - commander@13.1.0: + /commander/13.1.0: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} + dev: false - convert-source-map@2.0.0: + /convert-source-map/2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true - css-what@6.2.2: + /css-what/6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} + dev: false - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - csstype@3.2.3: + /csstype/3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - debug@4.4.3: + /debug/4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: @@ -1097,224 +1747,349 @@ packages: peerDependenciesMeta: supports-color: optional: true + dependencies: + ms: 2.1.3 + dev: true - dedent@1.7.2: + /dedent/1.7.2: resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true + dev: false - deep-object-diff@1.1.9: + /deep-object-diff/1.1.9: resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} + dev: false - deepmerge@4.3.1: + /deepmerge/4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + dev: false - detect-libc@2.1.2: + /detect-libc/2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} + dev: false - detect-node-es@1.1.0: + /detect-node-es/1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: false - electron-to-chromium@1.5.307: - resolution: {integrity: sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==} + /electron-to-chromium/1.5.336: + resolution: {integrity: sha512-AbH9q9J455r/nLmdNZes0G0ZKcRX73FicwowalLs6ijwOmCJSRRrLX63lcAlzy9ux3dWK1w1+1nsBJEWN11hcQ==} + dev: true - enhanced-resolve@5.20.0: - resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==} + /enhanced-resolve/5.20.1: + resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.2 + dev: false - esbuild@0.25.12: + /esbuild/0.25.12: resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 - escalade@3.2.0: + /escalade/3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + dev: true - fdir@6.5.0: + /fdir/6.5.0_picomatch@4.0.4: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} peerDependencies: - picomatch: ^4.0.4 + picomatch: ^3 || ^4 peerDependenciesMeta: picomatch: optional: true + dependencies: + picomatch: 4.0.4 - fsevents@2.3.3: + /fsevents/2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + optional: true - gensync@1.0.0-beta.2: + /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + dev: true - get-nonce@1.0.1: + /get-nonce/1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} + dev: false - gql.tada@1.9.0: - resolution: {integrity: sha512-1LMiA46dRs5oF7Qev6vMU32gmiNvM3+3nHoQZA9K9j2xQzH8xOAWnnJrLSbZOFHTSdFxqn86TL6beo1/7ja/aA==} + /gql.tada/1.9.2_qjxq2rya6zmizfm4gxuimwlaza: + resolution: {integrity: sha512-QxRHVpxtrOVdYXz6oavq0lBM+Zdp0swapLGJcD4SLpXDcsD337BHDFrzqqjfkbepv0sSAiO0LGabu1kI5D5Gyg==} hasBin: true peerDependencies: - typescript: ^5.0.0 + typescript: ^5.0.0 || ^6.0.0 + dependencies: + '@0no-co/graphql.web': 1.2.0_graphql@16.13.2 + '@0no-co/graphqlsp': 1.15.3_qjxq2rya6zmizfm4gxuimwlaza + '@gql.tada/cli-utils': 1.7.3_qjxq2rya6zmizfm4gxuimwlaza + '@gql.tada/internal': 1.0.9_qjxq2rya6zmizfm4gxuimwlaza + typescript: 5.8.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - graphql + dev: false - graceful-fs@4.2.11: + /graceful-fs/4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: false - graphql@16.13.1: - resolution: {integrity: sha512-gGgrVCoDKlIZ8fIqXBBb0pPKqDgki0Z/FSKNiQzSGj2uEYHr1tq5wmBegGwJx6QB5S5cM0khSBpi/JFHMCvsmQ==} + /graphql/16.13.2: + resolution: {integrity: sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + dev: false - jiti@2.6.1: + /jiti/2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + dev: false - jose@6.2.1: - resolution: {integrity: sha512-jUaKr1yrbfaImV7R2TN/b3IcZzsw38/chqMpo2XJ7i2F8AfM/lA4G1goC3JVEwg0H7UldTmSt3P68nt31W7/mw==} + /jose/6.2.2: + resolution: {integrity: sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==} + dev: false - js-tokens@4.0.0: + /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true - jsesc@3.1.0: + /jsesc/3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} hasBin: true + dev: true - json5@2.2.3: + /json5/2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + dev: true - lightningcss-android-arm64@1.31.1: - resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} + /lightningcss-android-arm64/1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] + dev: false + optional: true - lightningcss-darwin-arm64@1.31.1: - resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} + /lightningcss-darwin-arm64/1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] + dev: false + optional: true - lightningcss-darwin-x64@1.31.1: - resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} + /lightningcss-darwin-x64/1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] + dev: false + optional: true - lightningcss-freebsd-x64@1.31.1: - resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} + /lightningcss-freebsd-x64/1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] + dev: false + optional: true - lightningcss-linux-arm-gnueabihf@1.31.1: - resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} + /lightningcss-linux-arm-gnueabihf/1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] + dev: false + optional: true - lightningcss-linux-arm64-gnu@1.31.1: - resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} + /lightningcss-linux-arm64-gnu/1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [glibc] + dev: false + optional: true - lightningcss-linux-arm64-musl@1.31.1: - resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} + /lightningcss-linux-arm64-musl/1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [musl] + dev: false + optional: true - lightningcss-linux-x64-gnu@1.31.1: - resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} + /lightningcss-linux-x64-gnu/1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [glibc] + dev: false + optional: true - lightningcss-linux-x64-musl@1.31.1: - resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} + /lightningcss-linux-x64-musl/1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [musl] + dev: false + optional: true - lightningcss-win32-arm64-msvc@1.31.1: - resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} + /lightningcss-win32-arm64-msvc/1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] + dev: false + optional: true - lightningcss-win32-x64-msvc@1.31.1: - resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} + /lightningcss-win32-x64-msvc/1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] + dev: false + optional: true - lightningcss@1.31.1: - resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} + /lightningcss/1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} - - lru-cache@10.4.3: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + dev: false + + /lru-cache/10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: false - lru-cache@5.1.1: + /lru-cache/5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true - magic-string@0.30.21: + /magic-string/0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + dev: false - media-query-parser@2.0.2: + /media-query-parser/2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + dependencies: + '@babel/runtime': 7.29.2 + dev: false - modern-ahocorasick@1.1.0: + /modern-ahocorasick/1.1.0: resolution: {integrity: sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==} + dev: false - ms@2.1.3: + /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true - nanoid@3.3.11: + /nanoid/3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - node-releases@2.0.36: - resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} + /node-releases/2.0.37: + resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==} + dev: true - picocolors@1.1.1: + /picocolors/1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@4.0.4: + /picomatch/4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} - poseidon-lite@0.2.1: + /poseidon-lite/0.2.1: resolution: {integrity: sha512-xIr+G6HeYfOhCuswdqcFpSX47SPhm0EpisWJ6h7fHlWwaVIvH3dLnejpatrtw6Xc6HaLrpq05y7VRfvDmDGIog==} + dev: false - postcss@8.5.8: - resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} + /postcss/8.5.9: + resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==} engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 - react-dom@19.2.4: - resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} + /react-dom/19.2.5_react@19.2.5: + resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} peerDependencies: - react: ^19.2.4 + react: ^19.2.5 + dependencies: + react: 19.2.5 + scheduler: 0.27.0 + dev: false - react-refresh@0.17.0: + /react-refresh/0.17.0: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} + dev: true - react-remove-scroll-bar@2.3.8: + /react-remove-scroll-bar/2.3.8_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} peerDependencies: @@ -1323,8 +2098,14 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 19.2.14 + react: 19.2.5 + react-style-singleton: 2.2.3_2w2zdbrz3hiagriqclqc3vnuey + tslib: 2.8.1 + dev: false - react-remove-scroll@2.7.2: + /react-remove-scroll/2.7.2_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} engines: {node: '>=10'} peerDependencies: @@ -1333,8 +2114,17 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 19.2.14 + react: 19.2.5 + react-remove-scroll-bar: 2.3.8_2w2zdbrz3hiagriqclqc3vnuey + react-style-singleton: 2.2.3_2w2zdbrz3hiagriqclqc3vnuey + tslib: 2.8.1 + use-callback-ref: 1.3.3_2w2zdbrz3hiagriqclqc3vnuey + use-sidecar: 1.1.3_2w2zdbrz3hiagriqclqc3vnuey + dev: false - react-style-singleton@2.2.3: + /react-style-singleton/2.2.3_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} peerDependencies: @@ -1343,53 +2133,102 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 19.2.14 + get-nonce: 1.0.1 + react: 19.2.5 + tslib: 2.8.1 + dev: false - react@19.2.4: - resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + /react/19.2.5: + resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} engines: {node: '>=0.10.0'} + dev: false - rollup@4.59.0: - resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} + /rollup/4.60.1: + resolution: {integrity: sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.60.1 + '@rollup/rollup-android-arm64': 4.60.1 + '@rollup/rollup-darwin-arm64': 4.60.1 + '@rollup/rollup-darwin-x64': 4.60.1 + '@rollup/rollup-freebsd-arm64': 4.60.1 + '@rollup/rollup-freebsd-x64': 4.60.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.1 + '@rollup/rollup-linux-arm-musleabihf': 4.60.1 + '@rollup/rollup-linux-arm64-gnu': 4.60.1 + '@rollup/rollup-linux-arm64-musl': 4.60.1 + '@rollup/rollup-linux-loong64-gnu': 4.60.1 + '@rollup/rollup-linux-loong64-musl': 4.60.1 + '@rollup/rollup-linux-ppc64-gnu': 4.60.1 + '@rollup/rollup-linux-ppc64-musl': 4.60.1 + '@rollup/rollup-linux-riscv64-gnu': 4.60.1 + '@rollup/rollup-linux-riscv64-musl': 4.60.1 + '@rollup/rollup-linux-s390x-gnu': 4.60.1 + '@rollup/rollup-linux-x64-gnu': 4.60.1 + '@rollup/rollup-linux-x64-musl': 4.60.1 + '@rollup/rollup-openbsd-x64': 4.60.1 + '@rollup/rollup-openharmony-arm64': 4.60.1 + '@rollup/rollup-win32-arm64-msvc': 4.60.1 + '@rollup/rollup-win32-ia32-msvc': 4.60.1 + '@rollup/rollup-win32-x64-gnu': 4.60.1 + '@rollup/rollup-win32-x64-msvc': 4.60.1 + fsevents: 2.3.3 - scheduler@0.27.0: + /scheduler/0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + dev: false - semver@6.3.1: + /semver/6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + dev: true - source-map-js@1.2.1: + /source-map-js/1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - tailwindcss@4.2.1: - resolution: {integrity: sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==} + /tailwindcss/4.2.2: + resolution: {integrity: sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==} + dev: false - tapable@2.3.0: - resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + /tapable/2.3.2: + resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} engines: {node: '>=6'} + dev: false - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + /tinyglobby/0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} + dependencies: + fdir: 6.5.0_picomatch@4.0.4 + picomatch: 4.0.4 - tslib@2.8.1: + /tslib/2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + dev: false - typescript@5.8.3: + /typescript/5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true - update-browserslist-db@1.2.3: + /update-browserslist-db/1.2.3_browserslist@4.28.2: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + dev: true - use-callback-ref@1.3.3: + /use-callback-ref/1.3.3_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} peerDependencies: @@ -1398,8 +2237,13 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 19.2.14 + react: 19.2.5 + tslib: 2.8.1 + dev: false - use-sidecar@1.1.3: + /use-sidecar/1.1.3_2w2zdbrz3hiagriqclqc3vnuey: resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} engines: {node: '>=10'} peerDependencies: @@ -1408,17 +2252,26 @@ packages: peerDependenciesMeta: '@types/react': optional: true + dependencies: + '@types/react': 19.2.14 + detect-node-es: 1.1.0 + react: 19.2.5 + tslib: 2.8.1 + dev: false - valibot@1.2.0: - resolution: {integrity: sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==} + /valibot/1.3.1_typescript@5.8.3: + resolution: {integrity: sha512-sfdRir/QFM0JaF22hqTroPc5xy4DimuGQVKFrzF1YfGwaS1nJot3Y8VqMdLO2Lg27fMzat2yD3pY5PbAYO39Gg==} peerDependencies: typescript: '>=5' peerDependenciesMeta: typescript: optional: true + dependencies: + typescript: 5.8.3 + dev: false - vite@6.4.1: - resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} + /vite/6.4.2: + resolution: {integrity: sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -1456,12 +2309,22 @@ packages: optional: true yaml: optional: true + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0_picomatch@4.0.4 + picomatch: 4.0.4 + postcss: 8.5.9 + rollup: 4.60.1 + tinyglobby: 0.2.16 + optionalDependencies: + fsevents: 2.3.3 - yallist@3.1.1: + /yallist/3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true - zustand@5.0.11: - resolution: {integrity: sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg==} + /zustand/5.0.12_2w2zdbrz3hiagriqclqc3vnuey: + resolution: {integrity: sha512-i77ae3aZq4dhMlRhJVCYgMLKuSiZAaUPAct2AksxQ+gOtimhGMdXljRT21P5BNpeT4kXlLIckvkPM029OljD7g==} engines: {node: '>=12.20.0'} peerDependencies: '@types/react': '>=18.0.0' @@ -1477,1234 +2340,7 @@ packages: optional: true use-sync-external-store: optional: true - -snapshots: - - '@0no-co/graphql.web@1.2.0(graphql@16.13.1)': - optionalDependencies: - graphql: 16.13.1 - - '@0no-co/graphqlsp@1.15.2(graphql@16.13.1)(typescript@5.8.3)': - dependencies: - '@gql.tada/internal': 1.0.8(graphql@16.13.1)(typescript@5.8.3) - graphql: 16.13.1 - typescript: 5.8.3 - - '@babel/code-frame@7.29.0': - dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.29.0': {} - - '@babel/core@7.29.0': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.29.0 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.29.1': - dependencies: - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - - '@babel/helper-compilation-targets@7.28.6': dependencies: - '@babel/compat-data': 7.29.0 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.1 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-globals@7.28.0': {} - - '@babel/helper-module-imports@7.28.6': - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-plugin-utils@7.28.6': {} - - '@babel/helper-string-parser@7.27.1': {} - - '@babel/helper-validator-identifier@7.28.5': {} - - '@babel/helper-validator-option@7.27.1': {} - - '@babel/helpers@7.28.6': - dependencies: - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - - '@babel/parser@7.29.0': - dependencies: - '@babel/types': 7.29.0 - - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/runtime@7.28.6': {} - - '@babel/template@7.28.6': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 - - '@babel/traverse@7.29.0': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.0 - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.29.0': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - - '@emotion/hash@0.9.2': {} - - '@esbuild/aix-ppc64@0.25.12': - optional: true - - '@esbuild/android-arm64@0.25.12': - optional: true - - '@esbuild/android-arm@0.25.12': - optional: true - - '@esbuild/android-x64@0.25.12': - optional: true - - '@esbuild/darwin-arm64@0.25.12': - optional: true - - '@esbuild/darwin-x64@0.25.12': - optional: true - - '@esbuild/freebsd-arm64@0.25.12': - optional: true - - '@esbuild/freebsd-x64@0.25.12': - optional: true - - '@esbuild/linux-arm64@0.25.12': - optional: true - - '@esbuild/linux-arm@0.25.12': - optional: true - - '@esbuild/linux-ia32@0.25.12': - optional: true - - '@esbuild/linux-loong64@0.25.12': - optional: true - - '@esbuild/linux-mips64el@0.25.12': - optional: true - - '@esbuild/linux-ppc64@0.25.12': - optional: true - - '@esbuild/linux-riscv64@0.25.12': - optional: true - - '@esbuild/linux-s390x@0.25.12': - optional: true - - '@esbuild/linux-x64@0.25.12': - optional: true - - '@esbuild/netbsd-arm64@0.25.12': - optional: true - - '@esbuild/netbsd-x64@0.25.12': - optional: true - - '@esbuild/openbsd-arm64@0.25.12': - optional: true - - '@esbuild/openbsd-x64@0.25.12': - optional: true - - '@esbuild/openharmony-arm64@0.25.12': - optional: true - - '@esbuild/sunos-x64@0.25.12': - optional: true - - '@esbuild/win32-arm64@0.25.12': - optional: true - - '@esbuild/win32-ia32@0.25.12': - optional: true - - '@esbuild/win32-x64@0.25.12': - optional: true - - '@floating-ui/core@1.7.5': - dependencies: - '@floating-ui/utils': 0.2.11 - - '@floating-ui/dom@1.7.6': - dependencies: - '@floating-ui/core': 1.7.5 - '@floating-ui/utils': 0.2.11 - - '@floating-ui/react-dom@2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@floating-ui/dom': 1.7.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - - '@floating-ui/utils@0.2.11': {} - - '@gql.tada/cli-utils@1.7.2(@0no-co/graphqlsp@1.15.2(graphql@16.13.1)(typescript@5.8.3))(graphql@16.13.1)(typescript@5.8.3)': - dependencies: - '@0no-co/graphqlsp': 1.15.2(graphql@16.13.1)(typescript@5.8.3) - '@gql.tada/internal': 1.0.8(graphql@16.13.1)(typescript@5.8.3) - graphql: 16.13.1 - typescript: 5.8.3 - - '@gql.tada/internal@1.0.8(graphql@16.13.1)(typescript@5.8.3)': - dependencies: - '@0no-co/graphql.web': 1.2.0(graphql@16.13.1) - graphql: 16.13.1 - typescript: 5.8.3 - - '@graphql-typed-document-node/core@3.2.0(graphql@16.13.1)': - dependencies: - graphql: 16.13.1 - - '@jridgewell/gen-mapping@0.3.13': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/sourcemap-codec@1.5.5': {} - - '@jridgewell/trace-mapping@0.3.31': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - - '@mysten/bcs@2.0.3': - dependencies: - '@mysten/utils': 0.3.1 - '@scure/base': 2.0.0 - - '@mysten/dapp-kit@1.0.4(@mysten/sui@2.13.2(typescript@5.8.3))(@tanstack/react-query@5.90.21(react@19.2.4))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.8.3)': - dependencies: - '@mysten/slush-wallet': 1.0.3(@mysten/sui@2.13.2(typescript@5.8.3))(typescript@5.8.3) - '@mysten/sui': 2.13.2(typescript@5.8.3) - '@mysten/utils': 0.3.1 - '@mysten/wallet-standard': 0.20.1(@mysten/sui@2.13.2(typescript@5.8.3)) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.4) - '@tanstack/react-query': 5.90.21(react@19.2.4) - '@vanilla-extract/css': 1.18.0 - '@vanilla-extract/dynamic': 2.1.5 - '@vanilla-extract/recipes': 0.5.7(@vanilla-extract/css@1.18.0) - clsx: 2.1.1 - react: 19.2.4 - zustand: 5.0.11(@types/react@19.2.14)(react@19.2.4) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - babel-plugin-macros - - immer - - react-dom - - typescript - - use-sync-external-store - - '@mysten/seal@1.1.1(@mysten/sui@2.13.2(typescript@5.8.3))': - dependencies: - '@mysten/bcs': 2.0.3 - '@mysten/sui': 2.13.2(typescript@5.8.3) - '@noble/curves': 2.0.1 - '@noble/hashes': 2.0.1 - - '@mysten/slush-wallet@1.0.3(@mysten/sui@2.13.2(typescript@5.8.3))(typescript@5.8.3)': - dependencies: - '@mysten/sui': 2.13.2(typescript@5.8.3) - '@mysten/utils': 0.3.1 - '@mysten/wallet-standard': 0.20.1(@mysten/sui@2.13.2(typescript@5.8.3)) - '@mysten/window-wallet-core': 0.1.4(typescript@5.8.3) - valibot: 1.2.0(typescript@5.8.3) - transitivePeerDependencies: - - typescript - - '@mysten/sui-groups@0.0.1(@mysten/bcs@2.0.3)(@mysten/sui@2.13.2(typescript@5.8.3))': - dependencies: - '@mysten/bcs': 2.0.3 - '@mysten/sui': 2.13.2(typescript@5.8.3) - - '@mysten/sui@2.13.2(typescript@5.8.3)': - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.1) - '@mysten/bcs': 2.0.3 - '@mysten/utils': 0.3.1 - '@noble/curves': 2.0.1 - '@noble/hashes': 2.0.1 - '@protobuf-ts/grpcweb-transport': 2.11.1 - '@protobuf-ts/runtime': 2.11.1 - '@protobuf-ts/runtime-rpc': 2.11.1 - '@scure/base': 2.0.0 - '@scure/bip32': 2.0.1 - '@scure/bip39': 2.0.1 - gql.tada: 1.9.0(graphql@16.13.1)(typescript@5.8.3) - graphql: 16.13.1 - poseidon-lite: 0.2.1 - valibot: 1.2.0(typescript@5.8.3) - transitivePeerDependencies: - - '@gql.tada/svelte-support' - - '@gql.tada/vue-support' - - typescript - - '@mysten/utils@0.3.1': - dependencies: - '@scure/base': 2.0.0 - - '@mysten/wallet-standard@0.20.1(@mysten/sui@2.13.2(typescript@5.8.3))': - dependencies: - '@mysten/sui': 2.13.2(typescript@5.8.3) - '@wallet-standard/core': 1.1.1 - - '@mysten/window-wallet-core@0.1.4(typescript@5.8.3)': - dependencies: - '@mysten/utils': 0.3.1 - jose: 6.2.1 - valibot: 1.2.0(typescript@5.8.3) - transitivePeerDependencies: - - typescript - - '@noble/curves@2.0.1': - dependencies: - '@noble/hashes': 2.0.1 - - '@noble/hashes@2.0.1': {} - - '@protobuf-ts/grpcweb-transport@2.11.1': - dependencies: - '@protobuf-ts/runtime': 2.11.1 - '@protobuf-ts/runtime-rpc': 2.11.1 - - '@protobuf-ts/runtime-rpc@2.11.1': - dependencies: - '@protobuf-ts/runtime': 2.11.1 - - '@protobuf-ts/runtime@2.11.1': {} - - '@radix-ui/primitive@1.1.3': {} - - '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.4)': - dependencies: - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.4)': - dependencies: - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - aria-hidden: 1.2.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.4)': - dependencies: - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.4)': - dependencies: - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.4)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - aria-hidden: 1.2.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/rect': 1.1.1 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3(@types/react@19.2.14) - - '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.4)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.4)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.4)': - dependencies: - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.4)': - dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.4)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.4)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.4)': - dependencies: - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.4)': - dependencies: - '@radix-ui/rect': 1.1.1 - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.4)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.14 - - '@radix-ui/rect@1.1.1': {} - - '@rolldown/pluginutils@1.0.0-beta.27': {} - - '@rollup/rollup-android-arm-eabi@4.59.0': - optional: true - - '@rollup/rollup-android-arm64@4.59.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.59.0': - optional: true - - '@rollup/rollup-darwin-x64@4.59.0': - optional: true - - '@rollup/rollup-freebsd-arm64@4.59.0': - optional: true - - '@rollup/rollup-freebsd-x64@4.59.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.59.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.59.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.59.0': - optional: true - - '@rollup/rollup-linux-loong64-gnu@4.59.0': - optional: true - - '@rollup/rollup-linux-loong64-musl@4.59.0': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.59.0': - optional: true - - '@rollup/rollup-linux-ppc64-musl@4.59.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.59.0': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.59.0': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.59.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.59.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.59.0': - optional: true - - '@rollup/rollup-openbsd-x64@4.59.0': - optional: true - - '@rollup/rollup-openharmony-arm64@4.59.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.59.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.59.0': - optional: true - - '@rollup/rollup-win32-x64-gnu@4.59.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.59.0': - optional: true - - '@scure/base@2.0.0': {} - - '@scure/bip32@2.0.1': - dependencies: - '@noble/curves': 2.0.1 - '@noble/hashes': 2.0.1 - '@scure/base': 2.0.0 - - '@scure/bip39@2.0.1': - dependencies: - '@noble/hashes': 2.0.1 - '@scure/base': 2.0.0 - - '@tailwindcss/node@4.2.1': - dependencies: - '@jridgewell/remapping': 2.3.5 - enhanced-resolve: 5.20.0 - jiti: 2.6.1 - lightningcss: 1.31.1 - magic-string: 0.30.21 - source-map-js: 1.2.1 - tailwindcss: 4.2.1 - - '@tailwindcss/oxide-android-arm64@4.2.1': - optional: true - - '@tailwindcss/oxide-darwin-arm64@4.2.1': - optional: true - - '@tailwindcss/oxide-darwin-x64@4.2.1': - optional: true - - '@tailwindcss/oxide-freebsd-x64@4.2.1': - optional: true - - '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1': - optional: true - - '@tailwindcss/oxide-linux-arm64-gnu@4.2.1': - optional: true - - '@tailwindcss/oxide-linux-arm64-musl@4.2.1': - optional: true - - '@tailwindcss/oxide-linux-x64-gnu@4.2.1': - optional: true - - '@tailwindcss/oxide-linux-x64-musl@4.2.1': - optional: true - - '@tailwindcss/oxide-wasm32-wasi@4.2.1': - optional: true - - '@tailwindcss/oxide-win32-arm64-msvc@4.2.1': - optional: true - - '@tailwindcss/oxide-win32-x64-msvc@4.2.1': - optional: true - - '@tailwindcss/oxide@4.2.1': - optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.2.1 - '@tailwindcss/oxide-darwin-arm64': 4.2.1 - '@tailwindcss/oxide-darwin-x64': 4.2.1 - '@tailwindcss/oxide-freebsd-x64': 4.2.1 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.1 - '@tailwindcss/oxide-linux-arm64-gnu': 4.2.1 - '@tailwindcss/oxide-linux-arm64-musl': 4.2.1 - '@tailwindcss/oxide-linux-x64-gnu': 4.2.1 - '@tailwindcss/oxide-linux-x64-musl': 4.2.1 - '@tailwindcss/oxide-wasm32-wasi': 4.2.1 - '@tailwindcss/oxide-win32-arm64-msvc': 4.2.1 - '@tailwindcss/oxide-win32-x64-msvc': 4.2.1 - - '@tailwindcss/vite@4.2.1(vite@6.4.1(jiti@2.6.1)(lightningcss@1.31.1))': - dependencies: - '@tailwindcss/node': 4.2.1 - '@tailwindcss/oxide': 4.2.1 - tailwindcss: 4.2.1 - vite: 6.4.1(jiti@2.6.1)(lightningcss@1.31.1) - - '@tanstack/query-core@5.90.20': {} - - '@tanstack/react-query@5.90.21(react@19.2.4)': - dependencies: - '@tanstack/query-core': 5.90.20 - react: 19.2.4 - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.28.0 - - '@types/babel__generator@7.27.0': - dependencies: - '@babel/types': 7.29.0 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.29.0 - '@babel/types': 7.29.0 - - '@types/babel__traverse@7.28.0': - dependencies: - '@babel/types': 7.29.0 - - '@types/estree@1.0.8': {} - - '@types/react-dom@19.2.3(@types/react@19.2.14)': - dependencies: - '@types/react': 19.2.14 - - '@types/react@19.2.14': - dependencies: - csstype: 3.2.3 - - '@vanilla-extract/css@1.18.0': - dependencies: - '@emotion/hash': 0.9.2 - '@vanilla-extract/private': 1.0.9 - css-what: 6.2.2 - cssesc: 3.0.0 - csstype: 3.2.3 - dedent: 1.7.2 - deep-object-diff: 1.1.9 - deepmerge: 4.3.1 - lru-cache: 10.4.3 - media-query-parser: 2.0.2 - modern-ahocorasick: 1.1.0 - picocolors: 1.1.1 - transitivePeerDependencies: - - babel-plugin-macros - - '@vanilla-extract/dynamic@2.1.5': - dependencies: - '@vanilla-extract/private': 1.0.9 - - '@vanilla-extract/private@1.0.9': {} - - '@vanilla-extract/recipes@0.5.7(@vanilla-extract/css@1.18.0)': - dependencies: - '@vanilla-extract/css': 1.18.0 - - '@vitejs/plugin-react@4.7.0(vite@6.4.1(jiti@2.6.1)(lightningcss@1.31.1))': - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) - '@rolldown/pluginutils': 1.0.0-beta.27 - '@types/babel__core': 7.20.5 - react-refresh: 0.17.0 - vite: 6.4.1(jiti@2.6.1)(lightningcss@1.31.1) - transitivePeerDependencies: - - supports-color - - '@wallet-standard/app@1.1.0': - dependencies: - '@wallet-standard/base': 1.1.0 - - '@wallet-standard/base@1.1.0': {} - - '@wallet-standard/core@1.1.1': - dependencies: - '@wallet-standard/app': 1.1.0 - '@wallet-standard/base': 1.1.0 - '@wallet-standard/errors': 0.1.1 - '@wallet-standard/features': 1.1.0 - '@wallet-standard/wallet': 1.1.0 - - '@wallet-standard/errors@0.1.1': - dependencies: - chalk: 5.6.2 - commander: 13.1.0 - - '@wallet-standard/features@1.1.0': - dependencies: - '@wallet-standard/base': 1.1.0 - - '@wallet-standard/wallet@1.1.0': - dependencies: - '@wallet-standard/base': 1.1.0 - - aria-hidden@1.2.6: - dependencies: - tslib: 2.8.1 - - baseline-browser-mapping@2.10.0: {} - - browserslist@4.28.1: - dependencies: - baseline-browser-mapping: 2.10.0 - caniuse-lite: 1.0.30001777 - electron-to-chromium: 1.5.307 - node-releases: 2.0.36 - update-browserslist-db: 1.2.3(browserslist@4.28.1) - - caniuse-lite@1.0.30001777: {} - - chalk@5.6.2: {} - - clsx@2.1.1: {} - - commander@13.1.0: {} - - convert-source-map@2.0.0: {} - - css-what@6.2.2: {} - - cssesc@3.0.0: {} - - csstype@3.2.3: {} - - debug@4.4.3: - dependencies: - ms: 2.1.3 - - dedent@1.7.2: {} - - deep-object-diff@1.1.9: {} - - deepmerge@4.3.1: {} - - detect-libc@2.1.2: {} - - detect-node-es@1.1.0: {} - - electron-to-chromium@1.5.307: {} - - enhanced-resolve@5.20.0: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.3.0 - - esbuild@0.25.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 - - escalade@3.2.0: {} - - fdir@6.5.0(picomatch@4.0.4): - optionalDependencies: - picomatch: 4.0.4 - - fsevents@2.3.3: - optional: true - - gensync@1.0.0-beta.2: {} - - get-nonce@1.0.1: {} - - gql.tada@1.9.0(graphql@16.13.1)(typescript@5.8.3): - dependencies: - '@0no-co/graphql.web': 1.2.0(graphql@16.13.1) - '@0no-co/graphqlsp': 1.15.2(graphql@16.13.1)(typescript@5.8.3) - '@gql.tada/cli-utils': 1.7.2(@0no-co/graphqlsp@1.15.2(graphql@16.13.1)(typescript@5.8.3))(graphql@16.13.1)(typescript@5.8.3) - '@gql.tada/internal': 1.0.8(graphql@16.13.1)(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - '@gql.tada/svelte-support' - - '@gql.tada/vue-support' - - graphql - - graceful-fs@4.2.11: {} - - graphql@16.13.1: {} - - jiti@2.6.1: {} - - jose@6.2.1: {} - - js-tokens@4.0.0: {} - - jsesc@3.1.0: {} - - json5@2.2.3: {} - - lightningcss-android-arm64@1.31.1: - optional: true - - lightningcss-darwin-arm64@1.31.1: - optional: true - - lightningcss-darwin-x64@1.31.1: - optional: true - - lightningcss-freebsd-x64@1.31.1: - optional: true - - lightningcss-linux-arm-gnueabihf@1.31.1: - optional: true - - lightningcss-linux-arm64-gnu@1.31.1: - optional: true - - lightningcss-linux-arm64-musl@1.31.1: - optional: true - - lightningcss-linux-x64-gnu@1.31.1: - optional: true - - lightningcss-linux-x64-musl@1.31.1: - optional: true - - lightningcss-win32-arm64-msvc@1.31.1: - optional: true - - lightningcss-win32-x64-msvc@1.31.1: - optional: true - - lightningcss@1.31.1: - dependencies: - detect-libc: 2.1.2 - optionalDependencies: - lightningcss-android-arm64: 1.31.1 - lightningcss-darwin-arm64: 1.31.1 - lightningcss-darwin-x64: 1.31.1 - lightningcss-freebsd-x64: 1.31.1 - lightningcss-linux-arm-gnueabihf: 1.31.1 - lightningcss-linux-arm64-gnu: 1.31.1 - lightningcss-linux-arm64-musl: 1.31.1 - lightningcss-linux-x64-gnu: 1.31.1 - lightningcss-linux-x64-musl: 1.31.1 - lightningcss-win32-arm64-msvc: 1.31.1 - lightningcss-win32-x64-msvc: 1.31.1 - - lru-cache@10.4.3: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - magic-string@0.30.21: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - - media-query-parser@2.0.2: - dependencies: - '@babel/runtime': 7.28.6 - - modern-ahocorasick@1.1.0: {} - - ms@2.1.3: {} - - nanoid@3.3.11: {} - - node-releases@2.0.36: {} - - picocolors@1.1.1: {} - - picomatch@4.0.4: {} - - poseidon-lite@0.2.1: {} - - postcss@8.5.8: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - react-dom@19.2.4(react@19.2.4): - dependencies: - react: 19.2.4 - scheduler: 0.27.0 - - react-refresh@0.17.0: {} - - react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.4): - dependencies: - react: 19.2.4 - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) - tslib: 2.8.1 - optionalDependencies: - '@types/react': 19.2.14 - - react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.4): - dependencies: - react: 19.2.4 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.4) - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) - tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.4) - use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.14 - - react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.4): - dependencies: - get-nonce: 1.0.1 - react: 19.2.4 - tslib: 2.8.1 - optionalDependencies: - '@types/react': 19.2.14 - - react@19.2.4: {} - - rollup@4.59.0: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.59.0 - '@rollup/rollup-android-arm64': 4.59.0 - '@rollup/rollup-darwin-arm64': 4.59.0 - '@rollup/rollup-darwin-x64': 4.59.0 - '@rollup/rollup-freebsd-arm64': 4.59.0 - '@rollup/rollup-freebsd-x64': 4.59.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 - '@rollup/rollup-linux-arm-musleabihf': 4.59.0 - '@rollup/rollup-linux-arm64-gnu': 4.59.0 - '@rollup/rollup-linux-arm64-musl': 4.59.0 - '@rollup/rollup-linux-loong64-gnu': 4.59.0 - '@rollup/rollup-linux-loong64-musl': 4.59.0 - '@rollup/rollup-linux-ppc64-gnu': 4.59.0 - '@rollup/rollup-linux-ppc64-musl': 4.59.0 - '@rollup/rollup-linux-riscv64-gnu': 4.59.0 - '@rollup/rollup-linux-riscv64-musl': 4.59.0 - '@rollup/rollup-linux-s390x-gnu': 4.59.0 - '@rollup/rollup-linux-x64-gnu': 4.59.0 - '@rollup/rollup-linux-x64-musl': 4.59.0 - '@rollup/rollup-openbsd-x64': 4.59.0 - '@rollup/rollup-openharmony-arm64': 4.59.0 - '@rollup/rollup-win32-arm64-msvc': 4.59.0 - '@rollup/rollup-win32-ia32-msvc': 4.59.0 - '@rollup/rollup-win32-x64-gnu': 4.59.0 - '@rollup/rollup-win32-x64-msvc': 4.59.0 - fsevents: 2.3.3 - - scheduler@0.27.0: {} - - semver@6.3.1: {} - - source-map-js@1.2.1: {} - - tailwindcss@4.2.1: {} - - tapable@2.3.0: {} - - tinyglobby@0.2.15: - dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - - tslib@2.8.1: {} - - typescript@5.8.3: {} - - update-browserslist-db@1.2.3(browserslist@4.28.1): - dependencies: - browserslist: 4.28.1 - escalade: 3.2.0 - picocolors: 1.1.1 - - use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.4): - dependencies: - react: 19.2.4 - tslib: 2.8.1 - optionalDependencies: - '@types/react': 19.2.14 - - use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.4): - dependencies: - detect-node-es: 1.1.0 - react: 19.2.4 - tslib: 2.8.1 - optionalDependencies: - '@types/react': 19.2.14 - - valibot@1.2.0(typescript@5.8.3): - optionalDependencies: - typescript: 5.8.3 - - vite@6.4.1(jiti@2.6.1)(lightningcss@1.31.1): - dependencies: - esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - postcss: 8.5.8 - rollup: 4.59.0 - tinyglobby: 0.2.15 - optionalDependencies: - fsevents: 2.3.3 - jiti: 2.6.1 - lightningcss: 1.31.1 - - yallist@3.1.1: {} - - zustand@5.0.11(@types/react@19.2.14)(react@19.2.4): - optionalDependencies: '@types/react': 19.2.14 - react: 19.2.4 + react: 19.2.5 + dev: false diff --git a/relayer/.env.example b/relayer/.env.example index 8e560b1..c570ea9 100644 --- a/relayer/.env.example +++ b/relayer/.env.example @@ -4,6 +4,7 @@ REQUEST_TTL_SECONDS=900 # Sui Configuration (required) SUI_RPC_URL=https://fullnode.testnet.sui.io:443 +SUI_GRAPHQL_URL=https://graphql.testnet.sui.io/graphql # Testnet: 0xba8a26d42bc8b5e5caf4dac2a0f7544128d5dd9b4614af88eec1311ade11de79 # Mainnet: 0x541840ae7df705d1c6329c22415ed61f9140a18b79b13c1c9dc7415b115c1ba8 GROUPS_PACKAGE_ID= diff --git a/relayer/Cargo.toml b/relayer/Cargo.toml index 917e82e..1b7211f 100644 --- a/relayer/Cargo.toml +++ b/relayer/Cargo.toml @@ -16,6 +16,7 @@ axum = "0.7" tokio = { version = "1.43.0", features = ["full"] } serde = { version = "1.0", features = ["derive"] } serde_json = { version = "1.0", features = ["preserve_order"] } +base64 = "0.21" tracing = "0.1" tracing-subscriber = "0.3" uuid = { version = "1.0", features = ["v4", "serde"] } diff --git a/relayer/README.md b/relayer/README.md index ac0deb6..d7f0f7f 100644 --- a/relayer/README.md +++ b/relayer/README.md @@ -51,7 +51,7 @@ All authenticated requests must include: | Header | Description | |--------|-------------| -| `X-Signature` | Hex-encoded 64-byte raw signature | +| `X-Signature` | Hex-encoded signature bytes. Keypair schemes use raw 64-byte signatures; zkLogin uses the serialized authenticator bytes | | `X-Public-Key` | Hex-encoded bytes: `flag_byte \|\| public_key_bytes` (first byte identifies the scheme) | Bodyless requests (GET, DELETE) also require: @@ -68,11 +68,11 @@ When a request arrives, the auth middleware runs the following steps in order. I 1. **Validate timestamp** — The timestamp (from body or header) must be within the configured TTL window (default 5 minutes). This prevents replay attacks where an attacker resubmits a previously captured request. -2. **Decode public key** — The `X-Public-Key` header is hex-decoded. The first byte is the scheme flag (`0x00` = Ed25519, `0x01` = Secp256k1, `0x02` = Secp256r1). The remaining bytes are the raw public key. If the flag is unrecognized or the key length doesn't match the scheme, the request is rejected. +2. **Decode public key** — The `X-Public-Key` header is hex-decoded. The first byte is the scheme flag (`0x00` = Ed25519, `0x01` = Secp256k1, `0x02` = Secp256r1, `0x05` = zkLogin). The remaining bytes are the raw public key or public identifier. If the flag is unrecognized or the bytes do not match the scheme format, the request is rejected. -3. **Decode signature** — The `X-Signature` header is hex-decoded into 64 raw signature bytes. +3. **Decode signature** — The `X-Signature` header is hex-decoded into scheme-specific signature bytes. -4. **Verify signature** — The signature is verified against the signed message using the public key and the detected scheme. This uses `sui_crypto`'s `UserSignatureVerifier` with `PersonalMessage` wrapping (the same format Sui wallets use). If the signature doesn't match, the request is rejected. +4. **Verify signature** — The signature is verified against the signed message using the public key and the detected scheme. Keypair schemes use `sui_crypto`'s `UserSignatureVerifier` with `PersonalMessage` wrapping. zkLogin signatures are verified against the Sui GraphQL API. If the signature doesn't match, the request is rejected. 5. **Derive Sui address** — The sender's Sui address is derived from the public key by computing `Blake2b-256(flag_byte || public_key_bytes)`. This is how Sui maps public keys to addresses. @@ -468,6 +468,7 @@ All configuration is loaded from environment variables. The relayer also support | `MEMBERSHIP_STORE_TYPE` | `memory` | No | Membership cache backend — currently only `memory` is implemented | | `SUI_RPC_URL` | — | **Yes** | Sui fullnode gRPC URL for checkpoint subscription (e.g., `https://fullnode.testnet.sui.io:443`) | | `GROUPS_PACKAGE_ID` | — | **Yes** | Groups SDK package ID deployed on Sui (e.g., `0xabc123...`) | +| `SUI_GRAPHQL_URL` | — | No | Sui GraphQL endpoint used for zkLogin signature verification (required only for zkLogin auth, e.g., `https://graphql.testnet.sui.io/graphql`) | | `WALRUS_PUBLISHER_URL` | `https://publisher.walrus-testnet.walrus.space` | No | Walrus publisher endpoint for storing blobs/quilts | | `WALRUS_AGGREGATOR_URL` | `https://aggregator.walrus-testnet.walrus.space` | No | Walrus aggregator endpoint for reading blobs | | `WALRUS_STORAGE_EPOCHS` | `5` | No | Number of Walrus epochs to persist stored data | @@ -523,6 +524,7 @@ src/ # Create a .env file with required variables cat > .env << 'EOF' SUI_RPC_URL=https://fullnode.testnet.sui.io:443 +SUI_GRAPHQL_URL=https://graphql.testnet.sui.io/graphql GROUPS_PACKAGE_ID=0x...your_package_id... EOF @@ -589,6 +591,7 @@ docker run -p 3000:3000 --env-file .env messaging-relayer # Or pass env vars directly docker run -p 3000:3000 \ -e SUI_RPC_URL=https://fullnode.testnet.sui.io:443 \ + -e SUI_GRAPHQL_URL=https://graphql.testnet.sui.io/graphql \ -e GROUPS_PACKAGE_ID=0x... \ messaging-relayer ``` diff --git a/relayer/src/auth/README.md b/relayer/src/auth/README.md index 45dce5f..0bdf7ef 100644 --- a/relayer/src/auth/README.md +++ b/relayer/src/auth/README.md @@ -122,7 +122,7 @@ Every authenticated request must include these headers: | Header | Description | |--------|-------------| -| `X-Signature` | Hex-encoded 64-byte raw signature | +| `X-Signature` | Hex-encoded signature bytes. Keypair schemes use raw 64-byte signatures; zkLogin uses the serialized authenticator bytes | | `X-Public-Key` | Hex-encoded (flag_byte \|\| public_key_bytes) | For POST/PUT (requests with a body), the body includes `group_id`, `sender_address`, and `timestamp`. The entire body is the signed message. diff --git a/relayer/src/auth/middleware.rs b/relayer/src/auth/middleware.rs index f24f977..0d48d0a 100644 --- a/relayer/src/auth/middleware.rs +++ b/relayer/src/auth/middleware.rs @@ -7,13 +7,13 @@ //! //! ## Auth Headers (all authenticated requests) //! -//! - `X-Signature`: hex-encoded 64-byte raw signature +//! - `X-Signature`: hex-encoded signature bytes //! - `X-Public-Key`: hex-encoded (flag_byte || public_key_bytes) //! //! ## Requests with a body (POST, PUT) //! //! Auth fields (`group_id`, `sender_address`, `timestamp`) are in the JSON body. -//! The signed message is the raw request body bytes. +//! The signed message is the raw request body bytes as a Sui personal message. //! //! ## Bodyless requests (GET, DELETE) //! @@ -129,7 +129,7 @@ pub async fn auth_middleware( ); } - // Extract scheme flag and determine signature scheme (Ed25519, Secp256k1, Secp256r1) + // Extract scheme flag and determine signature scheme. let scheme_flag = public_key_with_flag[0]; let scheme = match SignatureScheme::from_flag(scheme_flag) { Some(s) => s, @@ -147,16 +147,11 @@ pub async fn auth_middleware( // Public key bytes without the flag prefix let public_key_bytes = &public_key_with_flag[1..]; - // Validate public key length matches the scheme - if public_key_bytes.len() != scheme.public_key_length() { + // Validate public key bytes or public identifier format for the scheme. + if let Err(e) = scheme.validate_public_key(public_key_bytes) { return auth_error_response( StatusCode::UNAUTHORIZED, - AuthError::InvalidPublicKeyFormat(format!( - "Expected {} bytes for {}, got {}", - scheme.public_key_length(), - scheme, - public_key_bytes.len() - )), + AuthError::InvalidPublicKeyFormat(e), ); } @@ -262,7 +257,16 @@ pub async fn auth_middleware( } // 8. Verify the signature against the signed message - if let Err(e) = verify_signature(&message_bytes, &signature_bytes, public_key_bytes, scheme) { + if let Err(e) = verify_signature( + &message_bytes, + &signature_bytes, + public_key_bytes, + scheme, + &sender_address, + &state.config, + ) + .await + { tracing::warn!("Signature verification failed: {}", e); return auth_error_response(StatusCode::UNAUTHORIZED, e); } diff --git a/relayer/src/auth/schemes.rs b/relayer/src/auth/schemes.rs index 9a479a7..119724f 100644 --- a/relayer/src/auth/schemes.rs +++ b/relayer/src/auth/schemes.rs @@ -1,7 +1,8 @@ -//! Sui supports three signature schemes, each identified by a flag byte: +//! Sui signature schemes used by relayer auth. //! - Ed25519 (flag 0x00): 32-byte public key, 64-byte signature //! - Secp256k1 (flag 0x01): 33-byte compressed public key, 64-byte signature //! - Secp256r1 (flag 0x02): 33-byte compressed public key, 64-byte signature +//! - ZkLogin (flag 0x05): variable-length public identifier, non-compact signature use std::fmt; @@ -13,6 +14,8 @@ pub enum SignatureScheme { Secp256k1, Secp256r1, + + ZkLogin, } impl SignatureScheme { @@ -21,6 +24,7 @@ impl SignatureScheme { 0x00 => Some(SignatureScheme::Ed25519), 0x01 => Some(SignatureScheme::Secp256k1), 0x02 => Some(SignatureScheme::Secp256r1), + 0x05 => Some(SignatureScheme::ZkLogin), _ => None, } } @@ -31,23 +35,50 @@ impl SignatureScheme { SignatureScheme::Ed25519 => 0x00, SignatureScheme::Secp256k1 => 0x01, SignatureScheme::Secp256r1 => 0x02, + SignatureScheme::ZkLogin => 0x05, } } - /// Returns the expected public key length in bytes. - pub fn public_key_length(&self) -> usize { + /// Returns the expected fixed public key length in bytes, if the scheme has one. + pub fn public_key_length(&self) -> Option { match self { - SignatureScheme::Ed25519 => 32, - SignatureScheme::Secp256k1 => 33, - SignatureScheme::Secp256r1 => 33, + SignatureScheme::Ed25519 => Some(32), + SignatureScheme::Secp256k1 => Some(33), + SignatureScheme::Secp256r1 => Some(33), + SignatureScheme::ZkLogin => None, } } - /// Returns the expected signature length in bytes. - /// All schemes use 64-byte signatures (r: 32 bytes, s: 32 bytes). + /// Returns the expected fixed raw signature length in bytes, if the scheme uses one. #[allow(dead_code)] - pub fn signature_length(&self) -> usize { - 64 + pub fn signature_length(&self) -> Option { + match self { + SignatureScheme::Ed25519 | SignatureScheme::Secp256k1 | SignatureScheme::Secp256r1 => { + Some(64) + } + SignatureScheme::ZkLogin => None, + } + } + + /// Validates the public key bytes or public identifier for this scheme. + pub fn validate_public_key(&self, public_key_bytes: &[u8]) -> Result<(), String> { + match self { + SignatureScheme::Ed25519 => { + validate_fixed_public_key_length(self, public_key_bytes, 32) + } + SignatureScheme::Secp256k1 => { + validate_fixed_public_key_length(self, public_key_bytes, 33) + } + SignatureScheme::Secp256r1 => { + validate_fixed_public_key_length(self, public_key_bytes, 33) + } + SignatureScheme::ZkLogin => validate_zklogin_public_identifier(public_key_bytes), + } + } + + /// Whether the relayer's current header auth format can verify this scheme. + pub fn supports_raw_signature_auth(&self) -> bool { + self.signature_length().is_some() } } @@ -57,10 +88,61 @@ impl fmt::Display for SignatureScheme { SignatureScheme::Ed25519 => write!(f, "Ed25519"), SignatureScheme::Secp256k1 => write!(f, "Secp256k1"), SignatureScheme::Secp256r1 => write!(f, "Secp256r1"), + SignatureScheme::ZkLogin => write!(f, "ZkLogin"), } } } +fn validate_fixed_public_key_length( + scheme: &SignatureScheme, + public_key_bytes: &[u8], + expected_len: usize, +) -> Result<(), String> { + if public_key_bytes.len() != expected_len { + return Err(format!( + "Expected {} bytes for {}, got {}", + expected_len, + scheme, + public_key_bytes.len() + )); + } + + Ok(()) +} + +fn validate_zklogin_public_identifier(public_key_bytes: &[u8]) -> Result<(), String> { + let iss_len = *public_key_bytes + .first() + .ok_or_else(|| "Empty zkLogin public identifier".to_string())? as usize; + let issuer_end = 1 + iss_len; + + if public_key_bytes.len() < issuer_end { + return Err(format!( + "zkLogin issuer length {} exceeds available bytes {}", + iss_len, + public_key_bytes.len().saturating_sub(1) + )); + } + + let issuer_bytes = &public_key_bytes[1..issuer_end]; + std::str::from_utf8(issuer_bytes) + .map_err(|e| format!("zkLogin issuer is not valid UTF-8: {}", e))?; + + let address_seed_bytes = &public_key_bytes[issuer_end..]; + if address_seed_bytes.is_empty() { + return Err("zkLogin public identifier missing address seed".to_string()); + } + + if address_seed_bytes.len() > 32 { + return Err(format!( + "zkLogin address seed must be at most 32 bytes, got {}", + address_seed_bytes.len() + )); + } + + Ok(()) +} + #[cfg(test)] mod tests { use super::*; @@ -79,6 +161,10 @@ mod tests { SignatureScheme::from_flag(0x02), Some(SignatureScheme::Secp256r1) ); + assert_eq!( + SignatureScheme::from_flag(0x05), + Some(SignatureScheme::ZkLogin) + ); assert_eq!(SignatureScheme::from_flag(0x03), None); assert_eq!(SignatureScheme::from_flag(0xFF), None); } @@ -88,12 +174,36 @@ mod tests { assert_eq!(SignatureScheme::Ed25519.flag(), 0x00); assert_eq!(SignatureScheme::Secp256k1.flag(), 0x01); assert_eq!(SignatureScheme::Secp256r1.flag(), 0x02); + assert_eq!(SignatureScheme::ZkLogin.flag(), 0x05); } #[test] fn test_public_key_length() { - assert_eq!(SignatureScheme::Ed25519.public_key_length(), 32); - assert_eq!(SignatureScheme::Secp256k1.public_key_length(), 33); - assert_eq!(SignatureScheme::Secp256r1.public_key_length(), 33); + assert_eq!(SignatureScheme::Ed25519.public_key_length(), Some(32)); + assert_eq!(SignatureScheme::Secp256k1.public_key_length(), Some(33)); + assert_eq!(SignatureScheme::Secp256r1.public_key_length(), Some(33)); + assert_eq!(SignatureScheme::ZkLogin.public_key_length(), None); + } + + #[test] + fn test_validate_zklogin_public_identifier() { + let mut zklogin_public_identifier = vec![27]; + zklogin_public_identifier.extend_from_slice(b"https://accounts.google.com"); + zklogin_public_identifier.extend_from_slice(&[0u8; 32]); + + assert!(SignatureScheme::ZkLogin + .validate_public_key(&zklogin_public_identifier) + .is_ok()); + } + + #[test] + fn test_validate_zklogin_public_identifier_requires_address_seed() { + let mut zklogin_public_identifier = vec![3]; + zklogin_public_identifier.extend_from_slice(b"iss"); + + let error = SignatureScheme::ZkLogin + .validate_public_key(&zklogin_public_identifier) + .unwrap_err(); + assert_eq!(error, "zkLogin public identifier missing address seed"); } } diff --git a/relayer/src/auth/signature.rs b/relayer/src/auth/signature.rs index 1525c73..62de5ce 100644 --- a/relayer/src/auth/signature.rs +++ b/relayer/src/auth/signature.rs @@ -1,16 +1,64 @@ -//! Signature verification and Sui address derivation -//! Supports all three Sui signature schemes: +//! Signature verification and Sui address derivation. +//! The relayer verifies raw header signatures for keypair schemes and can +//! derive addresses for additional schemes such as zkLogin. //! - Ed25519 (flag 0x00): 32-byte public key //! - Secp256k1 (flag 0x01): 33-byte compressed public key //! - Secp256r1 (flag 0x02): 33-byte compressed public key +//! - ZkLogin (flag 0x05): variable-length public identifier +use base64::{engine::general_purpose::STANDARD, Engine as _}; use blake2::{digest::consts::U32, Blake2b, Digest}; +use serde::{Deserialize, Serialize}; use std::borrow::Cow; use sui_crypto::{SuiVerifier, UserSignatureVerifier}; use sui_sdk_types::{PersonalMessage, UserSignature}; use super::schemes::SignatureScheme; use super::types::AuthError; +use crate::config::Config; + +const VERIFY_ZKLOGIN_SIGNATURE_QUERY: &str = r#"query verifyZkLoginSignature($bytes: Base64!, $signature: Base64!, $intentScope: ZkLoginIntentScope!, $author: SuiAddress!) { + verifyZkLoginSignature(bytes: $bytes, signature: $signature, intentScope: $intentScope, author: $author) { + success + } +}"#; + +#[derive(Serialize)] +struct VerifyZkLoginSignatureRequest<'a> { + query: &'static str, + variables: VerifyZkLoginSignatureVariables<'a>, +} + +#[derive(Serialize)] +struct VerifyZkLoginSignatureVariables<'a> { + bytes: String, + signature: String, + #[serde(rename = "intentScope")] + intent_scope: &'static str, + author: &'a str, +} + +#[derive(Deserialize)] +struct VerifyZkLoginSignatureResponse { + data: Option, + errors: Option>, +} + +#[derive(Deserialize)] +struct VerifyZkLoginSignatureData { + #[serde(rename = "verifyZkLoginSignature")] + verify_zklogin_signature: Option, +} + +#[derive(Deserialize)] +struct ZkLoginVerifyResult { + success: Option, +} + +#[derive(Deserialize)] +struct GraphqlError { + message: String, +} /// Default TTL for request timestamps (5 minutes). #[allow(dead_code)] @@ -33,31 +81,42 @@ pub fn validate_timestamp(timestamp: i64, ttl_seconds: i64) -> Result<(), AuthEr Ok(()) } -/// Verifies a signature against a message -pub fn verify_signature( +/// Verifies a signature against a message. +pub async fn verify_signature( message: &[u8], signature_bytes: &[u8], public_key_bytes: &[u8], scheme: SignatureScheme, + author: &str, + config: &Config, ) -> Result<(), AuthError> { - if signature_bytes.len() != 64 { - return Err(AuthError::InvalidSignatureFormat(format!( - "Expected 64 bytes, got {}", - signature_bytes.len() + if let Err(e) = scheme.validate_public_key(public_key_bytes) { + return Err(AuthError::InvalidPublicKeyFormat(e)); + } + + if scheme == SignatureScheme::ZkLogin { + return verify_zklogin_signature_via_graphql(message, signature_bytes, author, config) + .await; + } + + if !scheme.supports_raw_signature_auth() { + return Err(AuthError::SignatureVerificationFailed(format!( + "{} is not supported by relayer raw header auth", + scheme ))); } - let expected_len = scheme.public_key_length(); - if public_key_bytes.len() != expected_len { - return Err(AuthError::InvalidPublicKeyFormat(format!( + let expected_sig_len = scheme.signature_length().expect("checked above"); + if signature_bytes.len() != expected_sig_len { + return Err(AuthError::InvalidSignatureFormat(format!( "Expected {} bytes for {}, got {}", - expected_len, + expected_sig_len, scheme, - public_key_bytes.len() + signature_bytes.len() ))); } - let mut serialized_sig = Vec::with_capacity(1 + 64 + expected_len); + let mut serialized_sig = Vec::with_capacity(1 + expected_sig_len + public_key_bytes.len()); serialized_sig.push(scheme.flag()); serialized_sig.extend_from_slice(signature_bytes); serialized_sig.extend_from_slice(public_key_bytes); @@ -77,21 +136,102 @@ pub fn verify_signature( Ok(()) } +async fn verify_zklogin_signature_via_graphql( + message: &[u8], + signature_bytes: &[u8], + author: &str, + config: &Config, +) -> Result<(), AuthError> { + let graphql_url = config.sui_graphql_url.as_deref().ok_or_else(|| { + AuthError::SignatureVerificationFailed( + "zkLogin verification requires SUI_GRAPHQL_URL to be configured".to_string(), + ) + })?; + + if signature_bytes.first() != Some(&SignatureScheme::ZkLogin.flag()) { + return Err(AuthError::InvalidSignatureFormat( + "Expected serialized zkLogin signature prefixed with 0x05".to_string(), + )); + } + + let request = VerifyZkLoginSignatureRequest { + query: VERIFY_ZKLOGIN_SIGNATURE_QUERY, + variables: VerifyZkLoginSignatureVariables { + // GraphQL expects the ZkLoginIntentScope enum variant name. + bytes: STANDARD.encode(message), + signature: STANDARD.encode(signature_bytes), + intent_scope: "PERSONAL_MESSAGE", + author, + }, + }; + + let response = reqwest::Client::new() + .post(graphql_url) + .json(&request) + .send() + .await + .map_err(|e| { + AuthError::SignatureVerificationFailed(format!("zkLogin GraphQL request failed: {}", e)) + })?; + + let status = response.status(); + let response_body = response.text().await.map_err(|e| { + AuthError::SignatureVerificationFailed(format!( + "Failed to read zkLogin GraphQL response: {}", + e + )) + })?; + + if !status.is_success() { + return Err(AuthError::SignatureVerificationFailed(format!( + "zkLogin GraphQL request failed: HTTP {} {}", + status.as_u16(), + response_body + ))); + } + + let response: VerifyZkLoginSignatureResponse = + serde_json::from_str(&response_body).map_err(|e| { + AuthError::SignatureVerificationFailed(format!( + "Failed to decode zkLogin GraphQL response: {}", + e + )) + })?; + + if let Some(errors) = response.errors { + if !errors.is_empty() { + return Err(AuthError::SignatureVerificationFailed( + errors + .into_iter() + .map(|error| error.message) + .collect::>() + .join("; "), + )); + } + } + + if response + .data + .and_then(|data| data.verify_zklogin_signature) + .and_then(|result| result.success) + == Some(true) + { + return Ok(()); + } + + Err(AuthError::SignatureVerificationFailed( + "zkLogin GraphQL verification returned success=false".to_string(), + )) +} + /// Derives a Sui address from a public key and scheme. /// Uses Blake2b-256 hash of (flag || public_key). pub fn derive_sui_address( public_key_bytes: &[u8], scheme: SignatureScheme, ) -> Result { - // Validate public key length - let expected_len = scheme.public_key_length(); - if public_key_bytes.len() != expected_len { - return Err(AuthError::InvalidPublicKeyFormat(format!( - "Expected {} bytes for {}, got {}", - expected_len, - scheme, - public_key_bytes.len() - ))); + if let Err(e) = scheme.validate_public_key(public_key_bytes) { + return Err(AuthError::InvalidPublicKeyFormat(e)); } // Build the hash input: flag || public_key @@ -127,10 +267,14 @@ pub fn verify_address_matches_pubkey( #[cfg(test)] mod tests { use super::*; + use crate::config::Config; + use serde_json::json; use sui_crypto::{ ed25519::Ed25519PrivateKey, secp256k1::Secp256k1PrivateKey, secp256r1::Secp256r1PrivateKey, SuiSigner, }; + use wiremock::matchers::{body_string_contains, method, path}; + use wiremock::{Mock, MockServer, ResponseTemplate}; /// Extract raw 64-byte signature from UserSignature bytes. /// Format: flag (1 byte) || signature (64 bytes) || public_key @@ -139,8 +283,8 @@ mod tests { } /// Test Ed25519 signature verification with a real signature - #[test] - fn test_verify_signature_ed25519() { + #[tokio::test] + async fn test_verify_signature_ed25519() { let private_key_hex = "4ac9bd5399f7b41da4f00ec612c4e6521a1c756c41578ed5c15133f96ab9ea78"; let public_key_hex = "dec9c24a98da1187e30a5824ca2ee1e91e956b7dd6970590651d7d46c5e2ed41"; @@ -164,13 +308,16 @@ mod tests { &signature_bytes, &public_key_bytes, SignatureScheme::Ed25519, - ); + "0x0", + &Config::default(), + ) + .await; assert!(result.is_ok(), "Ed25519 verification failed: {:?}", result); } /// Test Secp256k1 signature verification with a real signature - #[test] - fn test_verify_signature_secp256k1() { + #[tokio::test] + async fn test_verify_signature_secp256k1() { let private_key_hex = "6ae98ba75c281c5ea3fb80f06f5f1afd8a6b69ec2a02186c73c928d67c96cd4b"; let private_key_bytes: [u8; 32] = hex::decode(private_key_hex).unwrap().try_into().unwrap(); @@ -193,7 +340,10 @@ mod tests { &signature_bytes, &public_key_bytes, SignatureScheme::Secp256k1, - ); + "0x0", + &Config::default(), + ) + .await; assert!( result.is_ok(), "Secp256k1 verification failed: {:?}", @@ -202,8 +352,8 @@ mod tests { } /// Test Secp256r1 signature verification - #[test] - fn test_verify_signature_secp256r1() { + #[tokio::test] + async fn test_verify_signature_secp256r1() { let private_key_hex = "7e944e7562603f3a6a0d799ca760d9e113de997da5b6915f70716fb371efae90"; let private_key_bytes: [u8; 32] = hex::decode(private_key_hex).unwrap().try_into().unwrap(); @@ -224,7 +374,10 @@ mod tests { &signature_bytes, &public_key_bytes, SignatureScheme::Secp256r1, - ); + "0x0", + &Config::default(), + ) + .await; assert!( result.is_ok(), "Secp256r1 verification failed: {:?}", @@ -232,6 +385,69 @@ mod tests { ); } + #[tokio::test] + async fn test_verify_signature_zklogin_via_graphql() { + let mock_server = MockServer::start().await; + Mock::given(method("POST")) + .and(path("/")) + .and(body_string_contains("verifyZkLoginSignature")) + .and(body_string_contains("PERSONAL_MESSAGE")) + .respond_with(ResponseTemplate::new(200).set_body_json(json!({ + "data": { + "verifyZkLoginSignature": { + "success": true + } + } + }))) + .mount(&mock_server) + .await; + + let mut config = Config::default(); + config.sui_graphql_url = Some(mock_server.uri()); + + let mut public_key_bytes = vec![3]; + public_key_bytes.extend_from_slice(b"iss"); + public_key_bytes.extend_from_slice(&[0u8; 32]); + + let signature_bytes = vec![SignatureScheme::ZkLogin.flag(), 0xAA, 0xBB, 0xCC]; + + let result = verify_signature( + b"test message", + &signature_bytes, + &public_key_bytes, + SignatureScheme::ZkLogin, + "0x123", + &config, + ) + .await; + + assert!(result.is_ok(), "zkLogin verification failed: {:?}", result); + } + + #[tokio::test] + async fn test_verify_signature_zklogin_requires_graphql_url() { + let mut public_key_bytes = vec![3]; + public_key_bytes.extend_from_slice(b"iss"); + public_key_bytes.extend_from_slice(&[0u8; 32]); + + let signature_bytes = vec![SignatureScheme::ZkLogin.flag(), 0xAA, 0xBB]; + + let result = verify_signature( + b"test message", + &signature_bytes, + &public_key_bytes, + SignatureScheme::ZkLogin, + "0x123", + &Config::default(), + ) + .await; + + assert_eq!( + result.unwrap_err().to_string(), + "Signature verification failed: zkLogin verification requires SUI_GRAPHQL_URL to be configured" + ); + } + // ==================== Ed25519 Tests ==================== /// Test Ed25519 address derivation diff --git a/relayer/src/config.rs b/relayer/src/config.rs index 93e1815..7bd4acb 100644 --- a/relayer/src/config.rs +++ b/relayer/src/config.rs @@ -29,6 +29,10 @@ pub struct Config { /// Groups SDK package ID on Sui pub groups_package_id: String, + /// Sui GraphQL URL used for zkLogin signature verification. + /// Optional unless zkLogin authentication is enabled. + pub sui_graphql_url: Option, + /// Walrus Configuration /// Walrus publisher URL for storing blobs/quilts. /// Default: Walrus testnet public publisher @@ -67,6 +71,7 @@ impl Config { /// - `MEMBERSHIP_STORE_TYPE`: Membership store type (default: "memory") /// - `SUI_RPC_URL`: Sui fullnode gRPC URL /// - `GROUPS_PACKAGE_ID`: Groups SDK package ID + /// - `SUI_GRAPHQL_URL`: Sui GraphQL URL for zkLogin verification (optional) /// - `WALRUS_PUBLISHER_URL`: Walrus publisher URL (default: testnet) /// - `WALRUS_AGGREGATOR_URL`: Walrus aggregator URL (default: testnet) /// - `WALRUS_STORAGE_EPOCHS`: How many epochs to store blobs (default: 5) @@ -106,6 +111,7 @@ impl Config { env::var("SUI_RPC_URL").expect("SUI_RPC_URL environment variable is required"); let groups_package_id = env::var("GROUPS_PACKAGE_ID") .expect("GROUPS_PACKAGE_ID environment variable is required"); + let sui_graphql_url = env::var("SUI_GRAPHQL_URL").ok(); // Publisher URL: where we send PUT requests to store blobs let walrus_publisher_url = env::var("WALRUS_PUBLISHER_URL") @@ -146,6 +152,7 @@ impl Config { membership_store_type, sui_rpc_url, groups_package_id, + sui_graphql_url, walrus_publisher_url, walrus_aggregator_url, walrus_storage_epochs, @@ -168,6 +175,7 @@ impl Default for Config { membership_store_type: MembershipStoreType::InMemory, sui_rpc_url: String::new(), groups_package_id: String::new(), + sui_graphql_url: None, walrus_publisher_url: DEFAULT_WALRUS_PUBLISHER_URL.to_string(), walrus_aggregator_url: DEFAULT_WALRUS_AGGREGATOR_URL.to_string(), walrus_storage_epochs: 5, diff --git a/relayer/src/handlers/messages/handlers.rs b/relayer/src/handlers/messages/handlers.rs index c380234..a43f29c 100644 --- a/relayer/src/handlers/messages/handlers.rs +++ b/relayer/src/handlers/messages/handlers.rs @@ -54,7 +54,9 @@ pub async fn create_message( &req.nonce, req.key_version, &auth, - )?; + &state.config, + ) + .await?; let attachments = decode_attachments(req.attachments)?; @@ -187,7 +189,9 @@ pub async fn update_message( &req.nonce, req.key_version, &auth, - )?; + &state.config, + ) + .await?; let attachments = decode_attachments(req.attachments)?; @@ -241,22 +245,17 @@ pub async fn delete_message( /// Verifies the per-message signature over canonical content: /// "{group_id}:{encrypted_text}:{nonce}:{key_version}" -fn verify_message_signature( +async fn verify_message_signature( signature_hex: &str, group_id: &str, encrypted_text: &str, nonce: &str, key_version: i64, auth: &AuthContext, + config: &crate::config::Config, ) -> Result, ApiError> { let signature_bytes = hex::decode(signature_hex) .map_err(|e| ApiError::BadRequest(format!("Invalid hex in message_signature: {}", e)))?; - if signature_bytes.len() != 64 { - return Err(ApiError::BadRequest(format!( - "message_signature must be exactly 64 bytes, got {}", - signature_bytes.len() - ))); - } // Canonical message: "group_id:encrypted_text:nonce:key_version" let canonical = format!("{}:{}:{}:{}", group_id, encrypted_text, nonce, key_version); @@ -266,7 +265,10 @@ fn verify_message_signature( &signature_bytes, &auth.public_key, auth.scheme, + &auth.sender_address, + config, ) + .await .map_err(|e| ApiError::BadRequest(format!("Message signature verification failed: {}", e)))?; Ok(signature_bytes) diff --git a/relayer/src/models/message.rs b/relayer/src/models/message.rs index e0bfc8d..4ef6c30 100644 --- a/relayer/src/models/message.rs +++ b/relayer/src/models/message.rs @@ -37,8 +37,9 @@ pub struct Message { /// Each entry contains the storage ID and encryption metadata needed by /// clients to download and decrypt the attachment. pub attachments: Vec, - /// 64-byte cryptographic signature over the message content. - /// Allows receivers to independently verify the sender authored this message. + /// Cryptographic signature bytes over the message content. + /// For keypair schemes this is the raw 64-byte signature; for zkLogin this is + /// the serialized authenticator bytes. pub signature: Vec, /// Sender's public key (flag byte + key bytes) for signature verification. pub public_key: Vec, diff --git a/seal b/seal new file mode 160000 index 0000000..82656f1 --- /dev/null +++ b/seal @@ -0,0 +1 @@ +Subproject commit 82656f10d3cb5e87c39443b4ac955bb3b0bbcf81 From ea04f638a015387d13e39d67664aa55f4a164cb8 Mon Sep 17 00:00:00 2001 From: Jeronasand Date: Thu, 16 Apr 2026 19:19:12 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E6=B7=BB=E5=8A=A0enoki=E7=9A=84zk=20Logi?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chat-app/.env.example | 7 +- chat-app/package.json | 1 + chat-app/pnpm-lock.yaml | 3960 ++++++++++++----- .../components/enoki/RegisterEnokiWallets.tsx | 34 + chat-app/src/lib/enoki-config.ts | 83 + chat-app/src/main.tsx | 2 + 6 files changed, 2891 insertions(+), 1196 deletions(-) create mode 100644 chat-app/src/components/enoki/RegisterEnokiWallets.tsx create mode 100644 chat-app/src/lib/enoki-config.ts diff --git a/chat-app/.env.example b/chat-app/.env.example index 1aaa791..8b3a089 100644 --- a/chat-app/.env.example +++ b/chat-app/.env.example @@ -1,7 +1,7 @@ # Sui Network VITE_SUI_NETWORK=testnet VITE_SUI_RPC_URL=https://fullnode.testnet.sui.io:443 -VITE_SUI_GRAPHQL_URL=https://sui-testnet.mystenlabs.com/graphql +VITE_SUI_GRAPHQL_URL=https://graphql.testnet.sui.io/graphql # Package IDs (only needed for localnet/devnet; auto-detected for testnet/mainnet) # VITE_PERMISSIONED_GROUPS_ORIGINAL_PACKAGE_ID=0x... @@ -21,3 +21,8 @@ VITE_WALRUS_EPOCHS=5 # Seal Key Servers (threshold encryption) # VITE_SEAL_KEY_SERVER_OBJECT_IDS=0x...,0x... + +# Enoki +VITE_ENOKI_PUBLIC_KEY= +VITE_ENOKI_GOOGLE_CLIENT_ID= +VITE_ENOKI_REDIRECT_URL= diff --git a/chat-app/package.json b/chat-app/package.json index e58aecd..619ce16 100644 --- a/chat-app/package.json +++ b/chat-app/package.json @@ -13,6 +13,7 @@ "@mysten/bcs": "^2.0.3", "@mysten/dapp-kit": "^1.0.4", "@mysten/sui-stack-messaging": "link:../ts-sdks/packages/sui-stack-messaging", + "@mysten/enoki": "^1.0.4", "@mysten/sui-groups": "^0.0.1", "@mysten/seal": "^1.1.1", "@mysten/sui": "^2.13.2", diff --git a/chat-app/pnpm-lock.yaml b/chat-app/pnpm-lock.yaml index 1af126d..2def9d3 100644 --- a/chat-app/pnpm-lock.yaml +++ b/chat-app/pnpm-lock.yaml @@ -1,7 +1,8 @@ -lockfileVersion: 5.4 +lockfileVersion: '9.0' -onlyBuiltDependencies: - - esbuild +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false overrides: picomatch@>=4.0.0 <4.0.4: ^4.0.4 @@ -9,464 +10,345 @@ overrides: importers: .: - specifiers: - '@mysten/bcs': ^2.0.3 - '@mysten/dapp-kit': ^1.0.4 - '@mysten/seal': ^1.1.1 - '@mysten/sui': ^2.13.2 - '@mysten/sui-groups': ^0.0.1 - '@mysten/sui-stack-messaging': link:../ts-sdks/packages/sui-stack-messaging - '@tailwindcss/vite': ^4.2.1 - '@tanstack/react-query': ^5.90.21 - '@types/react': ^19.1.0 - '@types/react-dom': ^19.1.0 - '@vitejs/plugin-react': ^4.5.2 - react: ^19.1.0 - react-dom: ^19.1.0 - tailwindcss: ^4.2.1 - typescript: ~5.8.3 - vite: ^6.3.5 dependencies: - '@mysten/bcs': 2.0.3 - '@mysten/dapp-kit': 1.0.4_5w3nze4j4rssvpoqrsenfwfyem - '@mysten/seal': 1.1.1_@mysten+sui@2.15.0 - '@mysten/sui': 2.15.0_typescript@5.8.3 - '@mysten/sui-groups': 0.0.1_psvhvrt4eis4bt2u3moapvcmve - '@mysten/sui-stack-messaging': link:../ts-sdks/packages/sui-stack-messaging - '@tailwindcss/vite': 4.2.2_vite@6.4.2 - '@tanstack/react-query': 5.99.0_react@19.2.5 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - tailwindcss: 4.2.2 + '@mysten/bcs': + specifier: ^2.0.3 + version: 2.0.3 + '@mysten/dapp-kit': + specifier: ^1.0.4 + version: 1.0.4(@mysten/sui@2.13.2(typescript@5.8.3))(@tanstack/react-query@5.99.0(react@19.2.5))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.8.3) + '@mysten/enoki': + specifier: ^1.0.4 + version: 1.0.4(@mysten/sui@2.13.2(typescript@5.8.3))(@types/react@19.2.14)(react@19.2.5) + '@mysten/seal': + specifier: ^1.1.1 + version: 1.1.1(@mysten/sui@2.13.2(typescript@5.8.3)) + '@mysten/sui': + specifier: 2.13.2 + version: 2.13.2(typescript@5.8.3) + '@mysten/sui-groups': + specifier: ^0.0.1 + version: 0.0.1(@mysten/bcs@2.0.3)(@mysten/sui@2.13.2(typescript@5.8.3)) + '@mysten/sui-stack-messaging': + specifier: link:../ts-sdks/packages/sui-stack-messaging + version: link:../ts-sdks/packages/sui-stack-messaging + '@tailwindcss/vite': + specifier: ^4.2.1 + version: 4.2.2(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)) + '@tanstack/react-query': + specifier: ^5.90.21 + version: 5.99.0(react@19.2.5) + react: + specifier: ^19.1.0 + version: 19.2.5 + react-dom: + specifier: ^19.1.0 + version: 19.2.5(react@19.2.5) + tailwindcss: + specifier: ^4.2.1 + version: 4.2.2 devDependencies: - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3_@types+react@19.2.14 - '@vitejs/plugin-react': 4.7.0_vite@6.4.2 - typescript: 5.8.3 - vite: 6.4.2 + '@types/react': + specifier: ^19.1.0 + version: 19.2.14 + '@types/react-dom': + specifier: ^19.1.0 + version: 19.2.3(@types/react@19.2.14) + '@vitejs/plugin-react': + specifier: ^4.5.2 + version: 4.7.0(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)) + typescript: + specifier: ~5.8.3 + version: 5.8.3 + vite: + specifier: ^6.3.5 + version: 6.4.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0) packages: - /@0no-co/graphql.web/1.2.0_graphql@16.13.2: + '@0no-co/graphql.web@1.2.0': resolution: {integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 peerDependenciesMeta: graphql: optional: true - dependencies: - graphql: 16.13.2 - dev: false - /@0no-co/graphqlsp/1.15.3_qjxq2rya6zmizfm4gxuimwlaza: - resolution: {integrity: sha512-rap58Wh1qbRnGpPGwB60P6rvKF6G+mgo1kPeDySWIAcqkGMjuyQdrZPcHS6w7mKOT8i/f1UQmjow6+7vfuEXKw==} + '@0no-co/graphqlsp@1.15.4': + resolution: {integrity: sha512-Nt1DVHcZ08lKRKwhiU0amXH77fSdrO6DzyjLE0DkCxfbM/N1SAs32d76y1xtCzM5H9eT0iDS7SdksgRXWJu05g==} peerDependencies: graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 typescript: ^5.0.0 || ^6.0.0 - dependencies: - '@gql.tada/internal': 1.0.9_qjxq2rya6zmizfm4gxuimwlaza - graphql: 16.13.2 - typescript: 5.8.3 - dev: false - /@babel/code-frame/7.29.0: + '@babel/code-frame@7.29.0': resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 - dev: true - /@babel/compat-data/7.29.0: + '@babel/compat-data@7.29.0': resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} engines: {node: '>=6.9.0'} - dev: true - /@babel/core/7.29.0: + '@babel/core@7.29.0': resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6_@babel+core@7.29.0 - '@babel/helpers': 7.29.2 - '@babel/parser': 7.29.2 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/generator/7.29.1: + '@babel/generator@7.29.1': resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - dev: true - /@babel/helper-compilation-targets/7.28.6: + '@babel/helper-compilation-targets@7.28.6': resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.29.0 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.2 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - /@babel/helper-globals/7.28.0: + '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-module-imports/7.28.6: + '@babel/helper-module-imports@7.28.6': resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-module-transforms/7.28.6_@babel+core@7.29.0: + '@babel/helper-module-transforms@7.28.6': resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-plugin-utils/7.28.6: + '@babel/helper-plugin-utils@7.28.6': resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-string-parser/7.27.1: + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-identifier/7.28.5: + '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-option/7.27.1: + '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helpers/7.29.2: + '@babel/helpers@7.29.2': resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - dev: true - /@babel/parser/7.29.2: + '@babel/parser@7.29.2': resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} hasBin: true - dependencies: - '@babel/types': 7.29.0 - dev: true - /@babel/plugin-transform-react-jsx-self/7.27.1_@babel+core@7.29.0: + '@babel/plugin-transform-react-jsx-self@7.27.1': resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - dev: true - /@babel/plugin-transform-react-jsx-source/7.27.1_@babel+core@7.29.0: + '@babel/plugin-transform-react-jsx-source@7.27.1': resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.29.0 - '@babel/helper-plugin-utils': 7.28.6 - dev: true - /@babel/runtime/7.29.2: + '@babel/runtime@7.29.2': resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} engines: {node: '>=6.9.0'} - dev: false - /@babel/template/7.28.6: + '@babel/template@7.28.6': resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - dev: true - /@babel/traverse/7.29.0: + '@babel/traverse@7.29.0': resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.2 - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/types/7.29.0: + '@babel/types@7.29.0': resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - dev: true - /@emotion/hash/0.9.2: + '@emotion/hash@0.9.2': resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - dev: false - /@esbuild/aix-ppc64/0.25.12: + '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - optional: true - /@esbuild/android-arm/0.25.12: - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} - cpu: [arm] + cpu: [arm64] os: [android] - optional: true - /@esbuild/android-arm64/0.25.12: - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} - cpu: [arm64] + cpu: [arm] os: [android] - optional: true - /@esbuild/android-x64/0.25.12: + '@esbuild/android-x64@0.25.12': resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] - optional: true - /@esbuild/darwin-arm64/0.25.12: + '@esbuild/darwin-arm64@0.25.12': resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - optional: true - /@esbuild/darwin-x64/0.25.12: + '@esbuild/darwin-x64@0.25.12': resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - optional: true - /@esbuild/freebsd-arm64/0.25.12: + '@esbuild/freebsd-arm64@0.25.12': resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - optional: true - /@esbuild/freebsd-x64/0.25.12: + '@esbuild/freebsd-x64@0.25.12': resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - optional: true - /@esbuild/linux-arm/0.25.12: - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} - cpu: [arm] + cpu: [arm64] os: [linux] - optional: true - /@esbuild/linux-arm64/0.25.12: - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} - cpu: [arm64] + cpu: [arm] os: [linux] - optional: true - /@esbuild/linux-ia32/0.25.12: + '@esbuild/linux-ia32@0.25.12': resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - optional: true - /@esbuild/linux-loong64/0.25.12: + '@esbuild/linux-loong64@0.25.12': resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - optional: true - /@esbuild/linux-mips64el/0.25.12: + '@esbuild/linux-mips64el@0.25.12': resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - optional: true - /@esbuild/linux-ppc64/0.25.12: + '@esbuild/linux-ppc64@0.25.12': resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - optional: true - /@esbuild/linux-riscv64/0.25.12: + '@esbuild/linux-riscv64@0.25.12': resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - optional: true - /@esbuild/linux-s390x/0.25.12: + '@esbuild/linux-s390x@0.25.12': resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - optional: true - /@esbuild/linux-x64/0.25.12: + '@esbuild/linux-x64@0.25.12': resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - optional: true - /@esbuild/netbsd-arm64/0.25.12: + '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - optional: true - /@esbuild/netbsd-x64/0.25.12: + '@esbuild/netbsd-x64@0.25.12': resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - optional: true - /@esbuild/openbsd-arm64/0.25.12: + '@esbuild/openbsd-arm64@0.25.12': resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - optional: true - /@esbuild/openbsd-x64/0.25.12: + '@esbuild/openbsd-x64@0.25.12': resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - optional: true - /@esbuild/openharmony-arm64/0.25.12: + '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - optional: true - /@esbuild/sunos-x64/0.25.12: + '@esbuild/sunos-x64@0.25.12': resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - optional: true - /@esbuild/win32-arm64/0.25.12: + '@esbuild/win32-arm64@0.25.12': resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - optional: true - /@esbuild/win32-ia32/0.25.12: + '@esbuild/win32-ia32@0.25.12': resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - optional: true - /@esbuild/win32-x64/0.25.12: + '@esbuild/win32-x64@0.25.12': resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] - optional: true - /@floating-ui/core/1.7.5: + '@floating-ui/core@1.7.5': resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} - dependencies: - '@floating-ui/utils': 0.2.11 - dev: false - /@floating-ui/dom/1.7.6: + '@floating-ui/dom@1.7.6': resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==} - dependencies: - '@floating-ui/core': 1.7.5 - '@floating-ui/utils': 0.2.11 - dev: false - /@floating-ui/react-dom/2.1.8_6emmfbwqxtzh24ergceii3tsaa: + '@floating-ui/react-dom@2.1.8': resolution: {integrity: sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - dependencies: - '@floating-ui/dom': 1.7.6 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - dev: false - /@floating-ui/utils/0.2.11: + '@floating-ui/utils@0.2.11': resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} - dev: false - /@gql.tada/cli-utils/1.7.3_qjxq2rya6zmizfm4gxuimwlaza: + '@google-cloud/kms@5.4.0': + resolution: {integrity: sha512-+06zUCaJM+wyZISM3F6u/jSqoBs0iZ8Aj9rqOJFePoWkNN7FbR4mQpV7okGHA+Y7caVgq+4QtIDKiFd17SZT+A==} + engines: {node: '>=18'} + + '@gql.tada/cli-utils@1.7.3': resolution: {integrity: sha512-3iQY5E/jvv3Lnh6D1Mh7zr+Bb9C/TGk1DHkm+lbIjQBnZAu2m+BcTcr1e3spUt6Aa6HG/xAN2XxpbWw9oZALEg==} peerDependencies: + '@0no-co/graphqlsp': ^1.12.13 '@gql.tada/svelte-support': 1.0.2 '@gql.tada/vue-support': 1.0.2 graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 @@ -476,246 +358,222 @@ packages: optional: true '@gql.tada/vue-support': optional: true - dependencies: - '@0no-co/graphqlsp': 1.15.3_qjxq2rya6zmizfm4gxuimwlaza - '@gql.tada/internal': 1.0.9_qjxq2rya6zmizfm4gxuimwlaza - graphql: 16.13.2 - typescript: 5.8.3 - dev: false - /@gql.tada/internal/1.0.9_qjxq2rya6zmizfm4gxuimwlaza: + '@gql.tada/internal@1.0.9': resolution: {integrity: sha512-Bp8yi+kLrzIJ3l5Dfxhz48H4OCH2LCX+pShaPcJgh+oiBt6clrjUKDYNDD3Z78aDQ3+Tyrxe4dd0MfLgpSLPPg==} peerDependencies: graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 typescript: ^5.0.0 || ^6.0.0 - dependencies: - '@0no-co/graphql.web': 1.2.0_graphql@16.13.2 - graphql: 16.13.2 - typescript: 5.8.3 - dev: false - /@graphql-typed-document-node/core/3.2.0_graphql@16.13.2: + '@graphql-typed-document-node/core@3.2.0': resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - graphql: 16.13.2 - dev: false - /@jridgewell/gen-mapping/0.3.13: + '@grpc/grpc-js@1.14.3': + resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} + engines: {node: '>=12.10.0'} + + '@grpc/proto-loader@0.8.0': + resolution: {integrity: sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==} + engines: {node: '>=6'} + hasBin: true + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - /@jridgewell/remapping/2.3.5: + '@jridgewell/remapping@2.3.5': resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - /@jridgewell/resolve-uri/3.1.2: + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - /@jridgewell/sourcemap-codec/1.5.5: + '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - /@jridgewell/trace-mapping/0.3.31: + '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - /@mysten/bcs/2.0.3: + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + + '@ledgerhq/devices@8.14.0': + resolution: {integrity: sha512-eMGOaagkMJrqGtqemYNraPg38FA0I/UUEPrbrC+vOZu1qeoG+Sek3gjuJih6rMK4efUfcI4Zs19w/Hv/58fwkQ==} + + '@ledgerhq/errors@6.33.0': + resolution: {integrity: sha512-9iMdjB0Hfxfd8HGMVM0TDPfxBXhJ4MtGKyFlm8aveSHSXjcTjGtCkcnk4OUZ6ZHopBb69BFR+HC2N/ob9xuNgA==} + + '@ledgerhq/hw-bolos@6.36.0': + resolution: {integrity: sha512-l86nSBvjllBbhKyEF4sPtyDerumaA78fuUpqyxMgMJ0/m+pumbuqcmRJpOpu3349CXuBr6OnExMhboOeAaaUZg==} + + '@ledgerhq/hw-transport@6.35.0': + resolution: {integrity: sha512-BFk4Zr5gfzT40RT6nj0NQTNB25bxWD3QWhdrOA6Mi/CChFTdGomjOuAhWHla2kH50ft8M5UsiiUeHoR+56J69g==} + + '@ledgerhq/ledger-cal-service@1.15.2': + resolution: {integrity: sha512-Ir9Gvef+Fjupj8WeKw8W3wAuv5BzmZsLpBk0Zjz4xbGTuiHD7EhqUb2qpIoQdZ7tUq890JGcvITBhrdw9geYFg==} + + '@ledgerhq/live-env@2.32.0': + resolution: {integrity: sha512-5/6gQDRJCxluC3dy8WdtpfE13xLhwOOi07FF6uU57jtx4Pe2C8qKtvA4wnZD5I7R3RAKS4o84meSshGXNplcPA==} + + '@ledgerhq/live-network@2.5.0': + resolution: {integrity: sha512-RBAZDJ1pESE6U4XJbh+3GsFNjodXuJ6ZsTjn33DRs1IyTAZCUifuBQ74TMgIrDzA7hnQ7XAEElA8n30ZKTxcnQ==} + + '@ledgerhq/live-promise@0.2.3': + resolution: {integrity: sha512-f673XOCKL/foDCbsqx2AWYfI1ehc5rGKLh3gObfTQSu3+MDJzhdd/pvyuVLJ0e6iUzUQlwLW27qEyvA7sNKvVQ==} + + '@ledgerhq/logs@6.17.0': + resolution: {integrity: sha512-yra33g5q/AU7+PwAws+GaVpQGUuxnDREjVBnviJjcaJLVKuLzI4pnj8Bd3nY3fypM5k1yZEYKEXfUuGFUjP2+w==} + + '@mysten/bcs@2.0.3': resolution: {integrity: sha512-dwcaL4HNAsEGpU3hKUAsXgCZp9l6++e2A3THpzoYZ8e7bsy4XH1V0dXD5dIzgNcVZiZfb6ZnDMG+gdF6+1WOQA==} - dependencies: - '@mysten/utils': 0.3.1 - '@scure/base': 2.0.0 - dev: false - /@mysten/dapp-kit/1.0.4_5w3nze4j4rssvpoqrsenfwfyem: + '@mysten/dapp-kit@1.0.4': resolution: {integrity: sha512-RybvMIT3R+GNWNH7tOWXnsLk0gKLtpY/GOefp/Mzsqb78JD3QzKzlQmrm/Bc5bEisI/SuykU3qYzKDLQivZy0Q==} peerDependencies: '@mysten/sui': ^2.8.0 '@tanstack/react-query': ^5.0.0 react: '*' - dependencies: - '@mysten/slush-wallet': 1.0.3_3wac7dt4vgopstjww7r3jer7ee - '@mysten/sui': 2.15.0_typescript@5.8.3 - '@mysten/utils': 0.3.1 - '@mysten/wallet-standard': 0.20.1_@mysten+sui@2.15.0 - '@radix-ui/react-dialog': 1.1.15_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-dropdown-menu': 2.1.16_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-slot': 1.2.4_2w2zdbrz3hiagriqclqc3vnuey - '@tanstack/react-query': 5.99.0_react@19.2.5 - '@vanilla-extract/css': 1.20.1 - '@vanilla-extract/dynamic': 2.1.5 - '@vanilla-extract/recipes': 0.5.7_7x2wfvjchi7rfscxop3kjc6hxe - clsx: 2.1.1 - react: 19.2.5 - zustand: 5.0.12_2w2zdbrz3hiagriqclqc3vnuey - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - babel-plugin-macros - - immer - - react-dom - - typescript - - use-sync-external-store - dev: false - /@mysten/seal/1.1.1_@mysten+sui@2.15.0: + '@mysten/enoki@1.0.4': + resolution: {integrity: sha512-6oRRZRG8FZV0U0g7Bp0eGjCjLkCWe3FHYr6tu1fklFMv94LvJSpSjA+582IUm0iXKleIfWZvLxjcXwQ/aM4NvQ==} + peerDependencies: + '@mysten/sui': ^2.5.0 + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + '@mysten/ledgerjs-hw-app-sui@0.8.0': + resolution: {integrity: sha512-v5yJkPO4yMs6BqYZ4mYcH0qamCoK3pkTDqGR4SI1THkI6/8n+UAhX2Hnns9OiVBkv1xyuX27leHbJwHJXv6AoA==} + + '@mysten/seal@1.1.1': resolution: {integrity: sha512-OGxEDmEuXQAzxJKz3ap1dkRSf5fD/iKpz/J8+wZlPbeSok2fVt3KPaCZngjrvqqVRn5lmQomNpzXQCKo929A3w==} peerDependencies: '@mysten/sui': ^2.8.0 - dependencies: - '@mysten/bcs': 2.0.3 - '@mysten/sui': 2.15.0_typescript@5.8.3 - '@noble/curves': 2.2.0 - '@noble/hashes': 2.2.0 - dev: false - /@mysten/slush-wallet/1.0.3_3wac7dt4vgopstjww7r3jer7ee: + '@mysten/signers@1.0.2': + resolution: {integrity: sha512-1+rZ41/lX+bev5ySuYW+6Zts7OHeJO6SaHuMwV9x8nBg+eeAlF+VTihsy3i9ElFrrGt2I1kHz84VUneNY4gjhg==} + engines: {node: '>=22'} + peerDependencies: + '@mysten/sui': ^2.10.0 + + '@mysten/slush-wallet@1.0.3': resolution: {integrity: sha512-TF1CXXug5VPaV4KImKxZ7nyR0XY//KJVzOFxFXaajBHewLBinCO7s6GS9EYbtQMaNvnjrYQn1cpGhYfwGkzvtQ==} peerDependencies: '@mysten/sui': ^2.8.0 - dependencies: - '@mysten/sui': 2.15.0_typescript@5.8.3 - '@mysten/utils': 0.3.1 - '@mysten/wallet-standard': 0.20.1_@mysten+sui@2.15.0 - '@mysten/window-wallet-core': 0.1.4_typescript@5.8.3 - valibot: 1.3.1_typescript@5.8.3 - transitivePeerDependencies: - - typescript - dev: false - /@mysten/sui-groups/0.0.1_psvhvrt4eis4bt2u3moapvcmve: + '@mysten/sui-groups@0.0.1': resolution: {integrity: sha512-6yck5UQjAtApWUXvgPc0WaMNatTTUxINBU92XrgawYTWZry/PAxGLvU1XjFFW+DAKbQWpkOMqu8yiuwcBybXfA==} peerDependencies: '@mysten/bcs': ^2.0.3 '@mysten/sui': ^2.13.0 - dependencies: - '@mysten/bcs': 2.0.3 - '@mysten/sui': 2.15.0_typescript@5.8.3 - dev: false - /@mysten/sui/2.15.0_typescript@5.8.3: - resolution: {integrity: sha512-OWdmd/kPOKGCBkAzyKi/AAMcn+rf39sbrqm7KAx1c2SMbaNwskJV4Uw2seiW686neyfoc0cw/hZ7/Rv9PyM+hQ==} + '@mysten/sui@2.13.2': + resolution: {integrity: sha512-M/H2CZJQyLyi0vvCJZ6rRzItJCsnh66v1OTI2VoBad2lau/BTuUKOEPjRpfU4YlVJcGR4h+RLCjDXV4ACuRKSA==} engines: {node: '>=22'} - dependencies: - '@graphql-typed-document-node/core': 3.2.0_graphql@16.13.2 - '@mysten/bcs': 2.0.3 - '@mysten/utils': 0.3.1 - '@noble/curves': 2.2.0 - '@noble/hashes': 2.2.0 - '@protobuf-ts/grpcweb-transport': 2.11.1 - '@protobuf-ts/runtime': 2.11.1 - '@protobuf-ts/runtime-rpc': 2.11.1 - '@scure/base': 2.0.0 - '@scure/bip32': 2.0.1 - '@scure/bip39': 2.0.1 - gql.tada: 1.9.2_qjxq2rya6zmizfm4gxuimwlaza - graphql: 16.13.2 - poseidon-lite: 0.2.1 - valibot: 1.3.1_typescript@5.8.3 - transitivePeerDependencies: - - '@gql.tada/svelte-support' - - '@gql.tada/vue-support' - - typescript - dev: false - /@mysten/utils/0.3.1: + '@mysten/utils@0.3.1': resolution: {integrity: sha512-36KhxG284uhDdSnlkyNaS6fzKTX9FpP2WQWOwUKIRsqQFFIm2ooCf2TP1IuqrtMpkairwpiWkAS0eg7cpemVzg==} - dependencies: - '@scure/base': 2.0.0 - dev: false - /@mysten/wallet-standard/0.20.1_@mysten+sui@2.15.0: + '@mysten/wallet-standard@0.20.1': resolution: {integrity: sha512-Q2GoXO1SPLayqunNIWI3VT8cyOVGTFAPUvaCzx7jYIEoZBfyCR5RCUS4/ehgAlApF88Y/1c/OfjBvEoeRi76jw==} peerDependencies: '@mysten/sui': '*' - dependencies: - '@mysten/sui': 2.15.0_typescript@5.8.3 - '@wallet-standard/core': 1.1.1 - dev: false - /@mysten/window-wallet-core/0.1.4_typescript@5.8.3: + '@mysten/window-wallet-core@0.1.4': resolution: {integrity: sha512-LK1t5dJQZUJv0fF/Cj8HS8N9HHaa7cAOcdWfPAFuYvgVJMEr9K/p33ldqiflcn6p1d53uTtUH9kA5/lQlTmZ2A==} - dependencies: - '@mysten/utils': 0.3.1 - jose: 6.2.2 - valibot: 1.3.1_typescript@5.8.3 - transitivePeerDependencies: - - typescript - dev: false - /@noble/curves/2.0.1: + '@nanostores/react@1.1.0': + resolution: {integrity: sha512-MbH35fjhcf7LAubYX5vhOChYUfTLzNLqH/mBGLVsHkcvjy0F8crO1WQwdmQ2xKbAmtpalDa2zBt3Hlg5kqr8iw==} + engines: {node: ^20.0.0 || >=22.0.0} + peerDependencies: + nanostores: ^1.2.0 + react: '>=18.0.0' + + '@noble/curves@2.0.1': resolution: {integrity: sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==} engines: {node: '>= 20.19.0'} - dependencies: - '@noble/hashes': 2.0.1 - dev: false - /@noble/curves/2.2.0: + '@noble/curves@2.2.0': resolution: {integrity: sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ==} engines: {node: '>= 20.19.0'} - dependencies: - '@noble/hashes': 2.2.0 - dev: false - /@noble/hashes/2.0.1: + '@noble/hashes@2.0.1': resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==} engines: {node: '>= 20.19.0'} - dev: false - /@noble/hashes/2.2.0: + '@noble/hashes@2.2.0': resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} engines: {node: '>= 20.19.0'} - dev: false - /@protobuf-ts/grpcweb-transport/2.11.1: + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@protobuf-ts/grpcweb-transport@2.11.1': resolution: {integrity: sha512-1W4utDdvOB+RHMFQ0soL4JdnxjXV+ddeGIUg08DvZrA8Ms6k5NN6GBFU2oHZdTOcJVpPrDJ02RJlqtaoCMNBtw==} - dependencies: - '@protobuf-ts/runtime': 2.11.1 - '@protobuf-ts/runtime-rpc': 2.11.1 - dev: false - /@protobuf-ts/runtime-rpc/2.11.1: + '@protobuf-ts/runtime-rpc@2.11.1': resolution: {integrity: sha512-4CqqUmNA+/uMz00+d3CYKgElXO9VrEbucjnBFEjqI4GuDrEQ32MaI3q+9qPBvIGOlL4PmHXrzM32vBPWRhQKWQ==} - dependencies: - '@protobuf-ts/runtime': 2.11.1 - dev: false - /@protobuf-ts/runtime/2.11.1: + '@protobuf-ts/runtime@2.11.1': resolution: {integrity: sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==} - dev: false - /@radix-ui/primitive/1.1.3: - resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} - dev: false + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - /@radix-ui/react-arrow/1.1.7_y45ga5w6fuw6masmtkrk454oea: - resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3_@types+react@19.2.14 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - dev: false - /@radix-ui/react-collection/1.1.7_y45ga5w6fuw6masmtkrk454oea: + '@radix-ui/react-collection@1.1.7': resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} peerDependencies: '@types/react': '*' @@ -727,18 +585,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-context': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-slot': 1.2.3_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3_@types+react@19.2.14 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - dev: false - /@radix-ui/react-compose-refs/1.1.2_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-compose-refs@1.1.2': resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: '@types/react': '*' @@ -746,12 +594,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/react-context/1.1.2_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-context@1.1.2': resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} peerDependencies: '@types/react': '*' @@ -759,12 +603,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/react-dialog/1.1.15_y45ga5w6fuw6masmtkrk454oea: + '@radix-ui/react-dialog@1.1.15': resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} peerDependencies: '@types/react': '*' @@ -776,28 +616,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-context': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-dismissable-layer': 1.1.11_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-focus-guards': 1.1.3_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-focus-scope': 1.1.7_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-id': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-portal': 1.1.9_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-presence': 1.1.5_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-slot': 1.2.3_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-use-controllable-state': 1.2.2_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3_@types+react@19.2.14 - aria-hidden: 1.2.6 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - react-remove-scroll: 2.7.2_2w2zdbrz3hiagriqclqc3vnuey - dev: false - /@radix-ui/react-direction/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-direction@1.1.1': resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} peerDependencies: '@types/react': '*' @@ -805,12 +625,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/react-dismissable-layer/1.1.11_y45ga5w6fuw6masmtkrk454oea: + '@radix-ui/react-dismissable-layer@1.1.11': resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} peerDependencies: '@types/react': '*' @@ -822,19 +638,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-use-callback-ref': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-use-escape-keydown': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3_@types+react@19.2.14 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - dev: false - /@radix-ui/react-dropdown-menu/2.1.16_y45ga5w6fuw6masmtkrk454oea: + '@radix-ui/react-dropdown-menu@2.1.16': resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} peerDependencies: '@types/react': '*' @@ -846,21 +651,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-context': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-id': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-menu': 2.1.16_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-use-controllable-state': 1.2.2_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3_@types+react@19.2.14 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - dev: false - /@radix-ui/react-focus-guards/1.1.3_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-focus-guards@1.1.3': resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} peerDependencies: '@types/react': '*' @@ -868,12 +660,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/react-focus-scope/1.1.7_y45ga5w6fuw6masmtkrk454oea: + '@radix-ui/react-focus-scope@1.1.7': resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} peerDependencies: '@types/react': '*' @@ -885,17 +673,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-use-callback-ref': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3_@types+react@19.2.14 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - dev: false - /@radix-ui/react-id/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-id@1.1.1': resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} peerDependencies: '@types/react': '*' @@ -903,13 +682,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/react-menu/2.1.16_y45ga5w6fuw6masmtkrk454oea: + '@radix-ui/react-menu@2.1.16': resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} peerDependencies: '@types/react': '*' @@ -921,32 +695,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-context': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-direction': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-dismissable-layer': 1.1.11_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-focus-guards': 1.1.3_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-focus-scope': 1.1.7_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-id': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-popper': 1.2.8_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-portal': 1.1.9_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-presence': 1.1.5_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-roving-focus': 1.1.11_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-slot': 1.2.3_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-use-callback-ref': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3_@types+react@19.2.14 - aria-hidden: 1.2.6 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - react-remove-scroll: 2.7.2_2w2zdbrz3hiagriqclqc3vnuey - dev: false - /@radix-ui/react-popper/1.2.8_y45ga5w6fuw6masmtkrk454oea: + '@radix-ui/react-popper@1.2.8': resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} peerDependencies: '@types/react': '*' @@ -958,24 +708,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@floating-ui/react-dom': 2.1.8_6emmfbwqxtzh24ergceii3tsaa - '@radix-ui/react-arrow': 1.1.7_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-context': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-use-callback-ref': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-use-rect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-use-size': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/rect': 1.1.1 - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3_@types+react@19.2.14 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - dev: false - /@radix-ui/react-portal/1.1.9_y45ga5w6fuw6masmtkrk454oea: + '@radix-ui/react-portal@1.1.9': resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} peerDependencies: '@types/react': '*' @@ -987,16 +721,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3_@types+react@19.2.14 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - dev: false - /@radix-ui/react-presence/1.1.5_y45ga5w6fuw6masmtkrk454oea: + '@radix-ui/react-presence@1.1.5': resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} peerDependencies: '@types/react': '*' @@ -1008,16 +734,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3_@types+react@19.2.14 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - dev: false - /@radix-ui/react-primitive/2.1.3_y45ga5w6fuw6masmtkrk454oea: + '@radix-ui/react-primitive@2.1.3': resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} peerDependencies: '@types/react': '*' @@ -1029,15 +747,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/react-slot': 1.2.3_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3_@types+react@19.2.14 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - dev: false - /@radix-ui/react-roving-focus/1.1.11_y45ga5w6fuw6masmtkrk454oea: + '@radix-ui/react-roving-focus@1.1.11': resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} peerDependencies: '@types/react': '*' @@ -1049,23 +760,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-context': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-direction': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-id': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-primitive': 2.1.3_y45ga5w6fuw6masmtkrk454oea - '@radix-ui/react-use-callback-ref': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-use-controllable-state': 1.2.2_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - '@types/react-dom': 19.2.3_@types+react@19.2.14 - react: 19.2.5 - react-dom: 19.2.5_react@19.2.5 - dev: false - /@radix-ui/react-slot/1.2.3_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-slot@1.2.3': resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} peerDependencies: '@types/react': '*' @@ -1073,13 +769,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/react-slot/1.2.4_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-slot@1.2.4': resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} peerDependencies: '@types/react': '*' @@ -1087,13 +778,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-compose-refs': 1.1.2_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/react-use-callback-ref/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-use-callback-ref@1.1.1': resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: '@types/react': '*' @@ -1101,12 +787,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/react-use-controllable-state/1.2.2_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-use-controllable-state@1.2.2': resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} peerDependencies: '@types/react': '*' @@ -1114,14 +796,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-use-effect-event': 0.0.2_2w2zdbrz3hiagriqclqc3vnuey - '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/react-use-effect-event/0.0.2_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-use-effect-event@0.0.2': resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} peerDependencies: '@types/react': '*' @@ -1129,13 +805,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/react-use-escape-keydown/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-use-escape-keydown@1.1.1': resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} peerDependencies: '@types/react': '*' @@ -1143,13 +814,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/react-use-layout-effect/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-use-layout-effect@1.1.1': resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} peerDependencies: '@types/react': '*' @@ -1157,12 +823,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/react-use-rect/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-use-rect@1.1.1': resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} peerDependencies: '@types/react': '*' @@ -1170,13 +832,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/rect': 1.1.1 - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/react-use-size/1.1.1_2w2zdbrz3hiagriqclqc3vnuey: + '@radix-ui/react-use-size@1.1.1': resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} peerDependencies: '@types/react': '*' @@ -1184,296 +841,225 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1_2w2zdbrz3hiagriqclqc3vnuey - '@types/react': 19.2.14 - react: 19.2.5 - dev: false - /@radix-ui/rect/1.1.1: + '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} - dev: false - /@rolldown/pluginutils/1.0.0-beta.27: + '@rolldown/pluginutils@1.0.0-beta.27': resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - dev: true - /@rollup/rollup-android-arm-eabi/4.60.1: + '@rollup/rollup-android-arm-eabi@4.60.1': resolution: {integrity: sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==} cpu: [arm] os: [android] - optional: true - /@rollup/rollup-android-arm64/4.60.1: + '@rollup/rollup-android-arm64@4.60.1': resolution: {integrity: sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==} cpu: [arm64] os: [android] - optional: true - /@rollup/rollup-darwin-arm64/4.60.1: + '@rollup/rollup-darwin-arm64@4.60.1': resolution: {integrity: sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==} cpu: [arm64] os: [darwin] - optional: true - /@rollup/rollup-darwin-x64/4.60.1: + '@rollup/rollup-darwin-x64@4.60.1': resolution: {integrity: sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==} cpu: [x64] os: [darwin] - optional: true - /@rollup/rollup-freebsd-arm64/4.60.1: + '@rollup/rollup-freebsd-arm64@4.60.1': resolution: {integrity: sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==} cpu: [arm64] os: [freebsd] - optional: true - /@rollup/rollup-freebsd-x64/4.60.1: + '@rollup/rollup-freebsd-x64@4.60.1': resolution: {integrity: sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==} cpu: [x64] os: [freebsd] - optional: true - /@rollup/rollup-linux-arm-gnueabihf/4.60.1: + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==} cpu: [arm] os: [linux] libc: [glibc] - optional: true - /@rollup/rollup-linux-arm-musleabihf/4.60.1: + '@rollup/rollup-linux-arm-musleabihf@4.60.1': resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==} cpu: [arm] os: [linux] libc: [musl] - optional: true - /@rollup/rollup-linux-arm64-gnu/4.60.1: + '@rollup/rollup-linux-arm64-gnu@4.60.1': resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==} cpu: [arm64] os: [linux] libc: [glibc] - optional: true - /@rollup/rollup-linux-arm64-musl/4.60.1: + '@rollup/rollup-linux-arm64-musl@4.60.1': resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==} cpu: [arm64] os: [linux] libc: [musl] - optional: true - /@rollup/rollup-linux-loong64-gnu/4.60.1: + '@rollup/rollup-linux-loong64-gnu@4.60.1': resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==} cpu: [loong64] os: [linux] libc: [glibc] - optional: true - /@rollup/rollup-linux-loong64-musl/4.60.1: + '@rollup/rollup-linux-loong64-musl@4.60.1': resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==} cpu: [loong64] os: [linux] libc: [musl] - optional: true - /@rollup/rollup-linux-ppc64-gnu/4.60.1: + '@rollup/rollup-linux-ppc64-gnu@4.60.1': resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==} cpu: [ppc64] os: [linux] libc: [glibc] - optional: true - /@rollup/rollup-linux-ppc64-musl/4.60.1: + '@rollup/rollup-linux-ppc64-musl@4.60.1': resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==} cpu: [ppc64] os: [linux] libc: [musl] - optional: true - /@rollup/rollup-linux-riscv64-gnu/4.60.1: + '@rollup/rollup-linux-riscv64-gnu@4.60.1': resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==} cpu: [riscv64] os: [linux] libc: [glibc] - optional: true - /@rollup/rollup-linux-riscv64-musl/4.60.1: + '@rollup/rollup-linux-riscv64-musl@4.60.1': resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==} cpu: [riscv64] os: [linux] libc: [musl] - optional: true - /@rollup/rollup-linux-s390x-gnu/4.60.1: + '@rollup/rollup-linux-s390x-gnu@4.60.1': resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==} cpu: [s390x] os: [linux] libc: [glibc] - optional: true - /@rollup/rollup-linux-x64-gnu/4.60.1: + '@rollup/rollup-linux-x64-gnu@4.60.1': resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==} cpu: [x64] os: [linux] libc: [glibc] - optional: true - /@rollup/rollup-linux-x64-musl/4.60.1: + '@rollup/rollup-linux-x64-musl@4.60.1': resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==} cpu: [x64] os: [linux] libc: [musl] - optional: true - /@rollup/rollup-openbsd-x64/4.60.1: + '@rollup/rollup-openbsd-x64@4.60.1': resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==} cpu: [x64] os: [openbsd] - optional: true - /@rollup/rollup-openharmony-arm64/4.60.1: + '@rollup/rollup-openharmony-arm64@4.60.1': resolution: {integrity: sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==} cpu: [arm64] os: [openharmony] - optional: true - /@rollup/rollup-win32-arm64-msvc/4.60.1: + '@rollup/rollup-win32-arm64-msvc@4.60.1': resolution: {integrity: sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==} cpu: [arm64] os: [win32] - optional: true - /@rollup/rollup-win32-ia32-msvc/4.60.1: + '@rollup/rollup-win32-ia32-msvc@4.60.1': resolution: {integrity: sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==} cpu: [ia32] os: [win32] - optional: true - /@rollup/rollup-win32-x64-gnu/4.60.1: + '@rollup/rollup-win32-x64-gnu@4.60.1': resolution: {integrity: sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==} cpu: [x64] os: [win32] - optional: true - /@rollup/rollup-win32-x64-msvc/4.60.1: + '@rollup/rollup-win32-x64-msvc@4.60.1': resolution: {integrity: sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==} cpu: [x64] os: [win32] - optional: true - /@scure/base/2.0.0: + '@scure/base@2.0.0': resolution: {integrity: sha512-3E1kpuZginKkek01ovG8krQ0Z44E3DHPjc5S2rjJw9lZn3KSQOs8S7wqikF/AH7iRanHypj85uGyxk0XAyC37w==} - dev: false - /@scure/bip32/2.0.1: + '@scure/bip32@2.0.1': resolution: {integrity: sha512-4Md1NI5BzoVP+bhyJaY3K6yMesEFzNS1sE/cP+9nuvE7p/b0kx9XbpDHHFl8dHtufcbdHRUUQdRqLIPHN/s7yA==} - dependencies: - '@noble/curves': 2.0.1 - '@noble/hashes': 2.0.1 - '@scure/base': 2.0.0 - dev: false - /@scure/bip39/2.0.1: + '@scure/bip39@2.0.1': resolution: {integrity: sha512-PsxdFj/d2AcJcZDX1FXN3dDgitDDTmwf78rKZq1a6c1P1Nan1X/Sxc7667zU3U+AN60g7SxxP0YCVw2H/hBycg==} - dependencies: - '@noble/hashes': 2.0.1 - '@scure/base': 2.0.0 - dev: false - /@tailwindcss/node/4.2.2: + '@tailwindcss/node@4.2.2': resolution: {integrity: sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==} - dependencies: - '@jridgewell/remapping': 2.3.5 - enhanced-resolve: 5.20.1 - jiti: 2.6.1 - lightningcss: 1.32.0 - magic-string: 0.30.21 - source-map-js: 1.2.1 - tailwindcss: 4.2.2 - dev: false - /@tailwindcss/oxide-android-arm64/4.2.2: + '@tailwindcss/oxide-android-arm64@4.2.2': resolution: {integrity: sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==} engines: {node: '>= 20'} cpu: [arm64] os: [android] - dev: false - optional: true - /@tailwindcss/oxide-darwin-arm64/4.2.2: + '@tailwindcss/oxide-darwin-arm64@4.2.2': resolution: {integrity: sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==} engines: {node: '>= 20'} cpu: [arm64] os: [darwin] - dev: false - optional: true - /@tailwindcss/oxide-darwin-x64/4.2.2: + '@tailwindcss/oxide-darwin-x64@4.2.2': resolution: {integrity: sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==} engines: {node: '>= 20'} cpu: [x64] os: [darwin] - dev: false - optional: true - /@tailwindcss/oxide-freebsd-x64/4.2.2: + '@tailwindcss/oxide-freebsd-x64@4.2.2': resolution: {integrity: sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==} engines: {node: '>= 20'} cpu: [x64] os: [freebsd] - dev: false - optional: true - /@tailwindcss/oxide-linux-arm-gnueabihf/4.2.2: + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2': resolution: {integrity: sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==} engines: {node: '>= 20'} cpu: [arm] os: [linux] - dev: false - optional: true - /@tailwindcss/oxide-linux-arm64-gnu/4.2.2: + '@tailwindcss/oxide-linux-arm64-gnu@4.2.2': resolution: {integrity: sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] libc: [glibc] - dev: false - optional: true - /@tailwindcss/oxide-linux-arm64-musl/4.2.2: + '@tailwindcss/oxide-linux-arm64-musl@4.2.2': resolution: {integrity: sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] libc: [musl] - dev: false - optional: true - /@tailwindcss/oxide-linux-x64-gnu/4.2.2: + '@tailwindcss/oxide-linux-x64-gnu@4.2.2': resolution: {integrity: sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==} engines: {node: '>= 20'} cpu: [x64] os: [linux] libc: [glibc] - dev: false - optional: true - /@tailwindcss/oxide-linux-x64-musl/4.2.2: + '@tailwindcss/oxide-linux-x64-musl@4.2.2': resolution: {integrity: sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==} engines: {node: '>= 20'} cpu: [x64] os: [linux] libc: [musl] - dev: false - optional: true - /@tailwindcss/oxide-wasm32-wasi/4.2.2: + '@tailwindcss/oxide-wasm32-wasi@4.2.2': resolution: {integrity: sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==} engines: {node: '>=14.0.0'} cpu: [wasm32] - dev: false - optional: true bundledDependencies: - '@napi-rs/wasm-runtime' - '@emnapi/core' @@ -1482,264 +1068,237 @@ packages: - '@emnapi/wasi-threads' - tslib - /@tailwindcss/oxide-win32-arm64-msvc/4.2.2: + '@tailwindcss/oxide-win32-arm64-msvc@4.2.2': resolution: {integrity: sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==} engines: {node: '>= 20'} cpu: [arm64] os: [win32] - dev: false - optional: true - /@tailwindcss/oxide-win32-x64-msvc/4.2.2: + '@tailwindcss/oxide-win32-x64-msvc@4.2.2': resolution: {integrity: sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==} engines: {node: '>= 20'} cpu: [x64] os: [win32] - dev: false - optional: true - /@tailwindcss/oxide/4.2.2: + '@tailwindcss/oxide@4.2.2': resolution: {integrity: sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==} engines: {node: '>= 20'} - optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.2.2 - '@tailwindcss/oxide-darwin-arm64': 4.2.2 - '@tailwindcss/oxide-darwin-x64': 4.2.2 - '@tailwindcss/oxide-freebsd-x64': 4.2.2 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.2 - '@tailwindcss/oxide-linux-arm64-gnu': 4.2.2 - '@tailwindcss/oxide-linux-arm64-musl': 4.2.2 - '@tailwindcss/oxide-linux-x64-gnu': 4.2.2 - '@tailwindcss/oxide-linux-x64-musl': 4.2.2 - '@tailwindcss/oxide-wasm32-wasi': 4.2.2 - '@tailwindcss/oxide-win32-arm64-msvc': 4.2.2 - '@tailwindcss/oxide-win32-x64-msvc': 4.2.2 - dev: false - /@tailwindcss/vite/4.2.2_vite@6.4.2: + '@tailwindcss/vite@4.2.2': resolution: {integrity: sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w==} peerDependencies: vite: ^5.2.0 || ^6 || ^7 || ^8 - dependencies: - '@tailwindcss/node': 4.2.2 - '@tailwindcss/oxide': 4.2.2 - tailwindcss: 4.2.2 - vite: 6.4.2 - dev: false - /@tanstack/query-core/5.99.0: + '@tanstack/query-core@5.99.0': resolution: {integrity: sha512-3Jv3WQG0BCcH7G+7lf/bP8QyBfJOXeY+T08Rin3GZ1bshvwlbPt7NrDHMEzGdKIOmOzvIQmxjk28YEQX60k7pQ==} - dev: false - /@tanstack/react-query/5.99.0_react@19.2.5: + '@tanstack/react-query@5.99.0': resolution: {integrity: sha512-OY2bCqPemT1LlqJ8Y2CUau4KELnIhhG9Ol3ZndPbdnB095pRbPo1cHuXTndg8iIwtoHTgwZjyaDnQ0xD0mYwAw==} peerDependencies: react: ^18 || ^19 - dependencies: - '@tanstack/query-core': 5.99.0 - react: 19.2.5 - dev: false - /@types/babel__core/7.20.5: + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.28.0 - dev: true - /@types/babel__generator/7.27.0: + '@types/babel__generator@7.27.0': resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} - dependencies: - '@babel/types': 7.29.0 - dev: true - /@types/babel__template/7.4.4: + '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - dev: true - /@types/babel__traverse/7.28.0: + '@types/babel__traverse@7.28.0': resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - dependencies: - '@babel/types': 7.29.0 - dev: true - /@types/estree/1.0.8: + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - /@types/react-dom/19.2.3_@types+react@19.2.14: + '@types/node@25.6.0': + resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} + + '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: '@types/react': ^19.2.0 - dependencies: - '@types/react': 19.2.14 - /@types/react/19.2.14: + '@types/react@19.2.14': resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} - dependencies: - csstype: 3.2.3 - /@vanilla-extract/css/1.20.1: + '@vanilla-extract/css@1.20.1': resolution: {integrity: sha512-5I9RNo5uZW9tsBnqrWzJqELegOqTHBrZyDFnES0gR9gJJHBB9dom1N0bwITM9tKwBcfKrTX4a6DHVeQdJ2ubQA==} - dependencies: - '@emotion/hash': 0.9.2 - '@vanilla-extract/private': 1.0.9 - css-what: 6.2.2 - csstype: 3.2.3 - dedent: 1.7.2 - deep-object-diff: 1.1.9 - deepmerge: 4.3.1 - lru-cache: 10.4.3 - media-query-parser: 2.0.2 - modern-ahocorasick: 1.1.0 - picocolors: 1.1.1 - transitivePeerDependencies: - - babel-plugin-macros - dev: false - /@vanilla-extract/dynamic/2.1.5: + '@vanilla-extract/dynamic@2.1.5': resolution: {integrity: sha512-QGIFGb1qyXQkbzx6X6i3+3LMc/iv/ZMBttMBL+Wm/DetQd36KsKsFg5CtH3qy+1hCA/5w93mEIIAiL4fkM8ycw==} - dependencies: - '@vanilla-extract/private': 1.0.9 - dev: false - /@vanilla-extract/private/1.0.9: + '@vanilla-extract/private@1.0.9': resolution: {integrity: sha512-gT2jbfZuaaCLrAxwXbRgIhGhcXbRZCG3v4TTUnjw0EJ7ArdBRxkq4msNJkbuRkCgfIK5ATmprB5t9ljvLeFDEA==} - dev: false - /@vanilla-extract/recipes/0.5.7_7x2wfvjchi7rfscxop3kjc6hxe: + '@vanilla-extract/recipes@0.5.7': resolution: {integrity: sha512-Fvr+htdyb6LVUu+PhH61UFPhwkjgDEk8L4Zq9oIdte42sntpKrgFy90MyTRtGwjVALmrJ0pwRUVr8UoByYeW8A==} peerDependencies: '@vanilla-extract/css': ^1.0.0 - dependencies: - '@vanilla-extract/css': 1.20.1 - dev: false - /@vitejs/plugin-react/4.7.0_vite@6.4.2: + '@vitejs/plugin-react@4.7.0': resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx-self': 7.27.1_@babel+core@7.29.0 - '@babel/plugin-transform-react-jsx-source': 7.27.1_@babel+core@7.29.0 - '@rolldown/pluginutils': 1.0.0-beta.27 - '@types/babel__core': 7.20.5 - react-refresh: 0.17.0 - vite: 6.4.2 - transitivePeerDependencies: - - supports-color - dev: true - /@wallet-standard/app/1.1.0: + '@wallet-standard/app@1.1.0': resolution: {integrity: sha512-3CijvrO9utx598kjr45hTbbeeykQrQfKmSnxeWOgU25TOEpvcipD/bYDQWIqUv1Oc6KK4YStokSMu/FBNecGUQ==} engines: {node: '>=16'} - dependencies: - '@wallet-standard/base': 1.1.0 - dev: false - /@wallet-standard/base/1.1.0: + '@wallet-standard/base@1.1.0': resolution: {integrity: sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==} engines: {node: '>=16'} - dev: false - /@wallet-standard/core/1.1.1: + '@wallet-standard/core@1.1.1': resolution: {integrity: sha512-5Xmjc6+Oe0hcPfVc5n8F77NVLwx1JVAoCVgQpLyv/43/bhtIif+Gx3WUrDlaSDoM8i2kA2xd6YoFbHCxs+e0zA==} engines: {node: '>=16'} - dependencies: - '@wallet-standard/app': 1.1.0 - '@wallet-standard/base': 1.1.0 - '@wallet-standard/errors': 0.1.1 - '@wallet-standard/features': 1.1.0 - '@wallet-standard/wallet': 1.1.0 - dev: false - /@wallet-standard/errors/0.1.1: + '@wallet-standard/errors@0.1.1': resolution: {integrity: sha512-V8Ju1Wvol8i/VDyQOHhjhxmMVwmKiwyxUZBnHhtiPZJTWY0U/Shb2iEWyGngYEbAkp2sGTmEeNX1tVyGR7PqNw==} engines: {node: '>=16'} hasBin: true - dependencies: - chalk: 5.6.2 - commander: 13.1.0 - dev: false - /@wallet-standard/features/1.1.0: + '@wallet-standard/features@1.1.0': resolution: {integrity: sha512-hiEivWNztx73s+7iLxsuD1sOJ28xtRix58W7Xnz4XzzA/pF0+aicnWgjOdA10doVDEDZdUuZCIIqG96SFNlDUg==} engines: {node: '>=16'} - dependencies: - '@wallet-standard/base': 1.1.0 - dev: false - /@wallet-standard/wallet/1.1.0: - resolution: {integrity: sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==} + '@wallet-standard/ui-compare@1.0.1': + resolution: {integrity: sha512-Qr6AjgxTgTNgjUm/HQend08jFCUJ2ugbONpbC1hSl4Ndul+theJV3CwVZ2ffKun584bHoR8OAibJ+QA4ecogEA==} engines: {node: '>=16'} - dependencies: - '@wallet-standard/base': 1.1.0 - dev: false - - /aria-hidden/1.2.6: - resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} - engines: {node: '>=10'} - dependencies: - tslib: 2.8.1 - dev: false - /baseline-browser-mapping/2.10.19: - resolution: {integrity: sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==} - engines: {node: '>=6.0.0'} - hasBin: true - dev: true + '@wallet-standard/ui-core@1.0.0': + resolution: {integrity: sha512-pnpBfxJois0fIAI0IBJ6hopOguw81JniB6DzOs5J7C16W7/M2kC0OKHQFKrz6cgSGMq8X0bPA8nZTXFTSNbURg==} + engines: {node: '>=16'} - /browserslist/4.28.2: - resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - baseline-browser-mapping: 2.10.19 - caniuse-lite: 1.0.30001788 - electron-to-chromium: 1.5.336 - node-releases: 2.0.37 - update-browserslist-db: 1.2.3_browserslist@4.28.2 - dev: true + '@wallet-standard/ui-features@1.0.1': + resolution: {integrity: sha512-0/lZFx599bGcDEvisAWtbFMuRM/IuqP/o0vbhAeQdLWsWsaqFTUIKZtMt8JJq+fFBMQGc6tuRH6ehrgm+Y0biQ==} + engines: {node: '>=16'} - /caniuse-lite/1.0.30001788: - resolution: {integrity: sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==} - dev: true + '@wallet-standard/ui-registry@1.0.1': + resolution: {integrity: sha512-+SeXEwSoyqEWv9B6JLxRioRlgN5ksSFObZMf+XKm2U+vwmc/mfm43I8zw5wvGBpubzmywbe2eejd5k/snyx+uA==} + engines: {node: '>=16'} - /chalk/5.6.2: - resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: false + '@wallet-standard/ui@1.0.1': + resolution: {integrity: sha512-3b1iSfHOB3YpuBM645ZAgA0LMGZv+3Eh4y9lM3kS+NnvK4NxwnEdn1mLbFxevRhyulNjFZ50m2Cq5mpEOYs2mw==} + engines: {node: '>=16'} - /clsx/2.1.1: + '@wallet-standard/wallet@1.1.0': + resolution: {integrity: sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==} + engines: {node: '>=16'} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + + asn1-ts@11.1.0: + resolution: {integrity: sha512-CpmMTBhSn3c9uCyT7GAui+VhplZLLvVAPWwcHgZKaeGDqx8R4OJfJGTenJZ0ZpGg70Q/OTd9TWUT8zDuBzb78w==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios@1.13.2: + resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + baseline-browser-mapping@2.10.19: + resolution: {integrity: sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==} + engines: {node: '>=6.0.0'} + hasBin: true + + bignumber.js@9.3.1: + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} + + brace-expansion@2.1.0: + resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + caniuse-lite@1.0.30001788: + resolution: {integrity: sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - dev: false - /commander/13.1.0: + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@13.1.0: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} - dev: false - /convert-source-map/2.0.0: + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true - /css-what/6.2.2: + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-what@6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} - dev: false - /csstype/3.2.3: + csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - /debug/4.4.3: + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: @@ -1747,349 +1306,462 @@ packages: peerDependenciesMeta: supports-color: optional: true - dependencies: - ms: 2.1.3 - dev: true - /dedent/1.7.2: + dedent@1.7.2: resolution: {integrity: sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: babel-plugin-macros: optional: true - dev: false - /deep-object-diff/1.1.9: + deep-object-diff@1.1.9: resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} - dev: false - /deepmerge/4.3.1: + deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - dev: false - /detect-libc/2.1.2: + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - dev: false - /detect-node-es/1.1.0: + detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - dev: false - /electron-to-chromium/1.5.336: - resolution: {integrity: sha512-AbH9q9J455r/nLmdNZes0G0ZKcRX73FicwowalLs6ijwOmCJSRRrLX63lcAlzy9ux3dWK1w1+1nsBJEWN11hcQ==} - dev: true + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} - /enhanced-resolve/5.20.1: + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + electron-to-chromium@1.5.339: + resolution: {integrity: sha512-Is+0BBHJ4NrdpAYiperrmp53pLywG/yV/6lIMTAnhxvzj/Cmn5Q/ogSHC6AKe7X+8kPLxxFk0cs5oc/3j/fxIg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + enhanced-resolve@5.20.1: resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.3.2 - dev: false - /esbuild/0.25.12: + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild@0.25.12: resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.12 - '@esbuild/android-arm': 0.25.12 - '@esbuild/android-arm64': 0.25.12 - '@esbuild/android-x64': 0.25.12 - '@esbuild/darwin-arm64': 0.25.12 - '@esbuild/darwin-x64': 0.25.12 - '@esbuild/freebsd-arm64': 0.25.12 - '@esbuild/freebsd-x64': 0.25.12 - '@esbuild/linux-arm': 0.25.12 - '@esbuild/linux-arm64': 0.25.12 - '@esbuild/linux-ia32': 0.25.12 - '@esbuild/linux-loong64': 0.25.12 - '@esbuild/linux-mips64el': 0.25.12 - '@esbuild/linux-ppc64': 0.25.12 - '@esbuild/linux-riscv64': 0.25.12 - '@esbuild/linux-s390x': 0.25.12 - '@esbuild/linux-x64': 0.25.12 - '@esbuild/netbsd-arm64': 0.25.12 - '@esbuild/netbsd-x64': 0.25.12 - '@esbuild/openbsd-arm64': 0.25.12 - '@esbuild/openbsd-x64': 0.25.12 - '@esbuild/openharmony-arm64': 0.25.12 - '@esbuild/sunos-x64': 0.25.12 - '@esbuild/win32-arm64': 0.25.12 - '@esbuild/win32-ia32': 0.25.12 - '@esbuild/win32-x64': 0.25.12 - /escalade/3.2.0: + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - dev: true - /fdir/6.5.0_picomatch@4.0.4: + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-sha256@1.3.0: + resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} + + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} peerDependencies: - picomatch: ^3 || ^4 + picomatch: ^4.0.4 peerDependenciesMeta: picomatch: optional: true - dependencies: - picomatch: 4.0.4 - /fsevents/2.3.3: + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - optional: true - /gensync/1.0.0-beta.2: + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gaxios@7.1.4: + resolution: {integrity: sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==} + engines: {node: '>=18'} + + gcp-metadata@8.1.2: + resolution: {integrity: sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==} + engines: {node: '>=18'} + + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - dev: true - /get-nonce/1.0.1: + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} - dev: false - /gql.tada/1.9.2_qjxq2rya6zmizfm4gxuimwlaza: + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + + google-auth-library@10.6.2: + resolution: {integrity: sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==} + engines: {node: '>=18'} + + google-gax@5.0.6: + resolution: {integrity: sha512-1kGbqVQBZPAAu4+/R1XxPQKP0ydbNYoLAr4l0ZO2bMV0kLyLW4I1gAk++qBLWt7DPORTzmWRMsCZe86gDjShJA==} + engines: {node: '>=18'} + + google-logging-utils@1.1.3: + resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} + engines: {node: '>=14'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + gql.tada@1.9.2: resolution: {integrity: sha512-QxRHVpxtrOVdYXz6oavq0lBM+Zdp0swapLGJcD4SLpXDcsD337BHDFrzqqjfkbepv0sSAiO0LGabu1kI5D5Gyg==} hasBin: true peerDependencies: typescript: ^5.0.0 || ^6.0.0 - dependencies: - '@0no-co/graphql.web': 1.2.0_graphql@16.13.2 - '@0no-co/graphqlsp': 1.15.3_qjxq2rya6zmizfm4gxuimwlaza - '@gql.tada/cli-utils': 1.7.3_qjxq2rya6zmizfm4gxuimwlaza - '@gql.tada/internal': 1.0.9_qjxq2rya6zmizfm4gxuimwlaza - typescript: 5.8.3 - transitivePeerDependencies: - - '@gql.tada/svelte-support' - - '@gql.tada/vue-support' - - graphql - dev: false - /graceful-fs/4.2.11: + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: false - /graphql/16.13.2: + graphql@16.13.2: resolution: {integrity: sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - dev: false - /jiti/2.6.1: + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + idb-keyval@6.2.2: + resolution: {integrity: sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true - dev: false - /jose/6.2.2: + jose@6.2.2: resolution: {integrity: sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==} - dev: false - /js-tokens/4.0.0: + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true - /jsesc/3.1.0: + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} hasBin: true - dev: true - /json5/2.2.3: + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - dev: true - /lightningcss-android-arm64/1.32.0: + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} + + jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} + + lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] - dev: false - optional: true - /lightningcss-darwin-arm64/1.32.0: + lightningcss-darwin-arm64@1.32.0: resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - dev: false - optional: true - /lightningcss-darwin-x64/1.32.0: + lightningcss-darwin-x64@1.32.0: resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - dev: false - optional: true - /lightningcss-freebsd-x64/1.32.0: + lightningcss-freebsd-x64@1.32.0: resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - dev: false - optional: true - /lightningcss-linux-arm-gnueabihf/1.32.0: + lightningcss-linux-arm-gnueabihf@1.32.0: resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - dev: false - optional: true - /lightningcss-linux-arm64-gnu/1.32.0: + lightningcss-linux-arm64-gnu@1.32.0: resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [glibc] - dev: false - optional: true - /lightningcss-linux-arm64-musl/1.32.0: + lightningcss-linux-arm64-musl@1.32.0: resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [musl] - dev: false - optional: true - /lightningcss-linux-x64-gnu/1.32.0: + lightningcss-linux-x64-gnu@1.32.0: resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [glibc] - dev: false - optional: true - /lightningcss-linux-x64-musl/1.32.0: + lightningcss-linux-x64-musl@1.32.0: resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [musl] - dev: false - optional: true - /lightningcss-win32-arm64-msvc/1.32.0: + lightningcss-win32-arm64-msvc@1.32.0: resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - dev: false - optional: true - /lightningcss-win32-x64-msvc/1.32.0: + lightningcss-win32-x64-msvc@1.32.0: resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - dev: false - optional: true - /lightningcss/1.32.0: + lightningcss@1.32.0: resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} - dependencies: - detect-libc: 2.1.2 - optionalDependencies: - lightningcss-android-arm64: 1.32.0 - lightningcss-darwin-arm64: 1.32.0 - lightningcss-darwin-x64: 1.32.0 - lightningcss-freebsd-x64: 1.32.0 - lightningcss-linux-arm-gnueabihf: 1.32.0 - lightningcss-linux-arm64-gnu: 1.32.0 - lightningcss-linux-arm64-musl: 1.32.0 - lightningcss-linux-x64-gnu: 1.32.0 - lightningcss-linux-x64-musl: 1.32.0 - lightningcss-win32-arm64-msvc: 1.32.0 - lightningcss-win32-x64-msvc: 1.32.0 - dev: false - /lru-cache/10.4.3: + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - dev: false - /lru-cache/5.1.1: + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - dev: true - /magic-string/0.30.21: + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - dev: false - /media-query-parser/2.0.2: + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} - dependencies: - '@babel/runtime': 7.29.2 - dev: false - /modern-ahocorasick/1.1.0: + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + modern-ahocorasick@1.1.0: resolution: {integrity: sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==} - dev: false - /ms/2.1.3: + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true - /nanoid/3.3.11: + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /node-releases/2.0.37: + nanostores@1.2.0: + resolution: {integrity: sha512-F0wCzbsH80G7XXo0Jd9/AVQC7ouWY6idUCTnMwW5t/Rv9W8qmO6endavDwg7TNp5GbugwSukFMVZqzPSrSMndg==} + engines: {node: ^20.0.0 || >=22.0.0} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + node-releases@2.0.37: resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==} - dev: true - /picocolors/1.1.1: + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - /picomatch/4.0.4: + picomatch@4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} - /poseidon-lite/0.2.1: + poseidon-lite@0.2.1: resolution: {integrity: sha512-xIr+G6HeYfOhCuswdqcFpSX47SPhm0EpisWJ6h7fHlWwaVIvH3dLnejpatrtw6Xc6HaLrpq05y7VRfvDmDGIog==} - dev: false - /postcss/8.5.9: - resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==} + postcss@8.5.10: + resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - /react-dom/19.2.5_react@19.2.5: + proto3-json-serializer@3.0.4: + resolution: {integrity: sha512-E1sbAYg3aEbXrq0n1ojJkRHQJGE1kaE/O6GLA94y8rnJBfgvOPTOd1b9hOceQK1FFZI9qMh1vBERCyO2ifubcw==} + engines: {node: '>=18'} + + protobufjs@7.5.5: + resolution: {integrity: sha512-3wY1AxV+VBNW8Yypfd1yQY9pXnqTAN+KwQxL8iYm3/BjKYMNg4i0owhEe26PWDOMaIrzeeF98Lqd5NGz4omiIg==} + engines: {node: '>=12.0.0'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + react-dom@19.2.5: resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} peerDependencies: react: ^19.2.5 - dependencies: - react: 19.2.5 - scheduler: 0.27.0 - dev: false - /react-refresh/0.17.0: + react-refresh@0.17.0: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} - dev: true - /react-remove-scroll-bar/2.3.8_2w2zdbrz3hiagriqclqc3vnuey: + react-remove-scroll-bar@2.3.8: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} peerDependencies: @@ -2098,14 +1770,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 19.2.14 - react: 19.2.5 - react-style-singleton: 2.2.3_2w2zdbrz3hiagriqclqc3vnuey - tslib: 2.8.1 - dev: false - /react-remove-scroll/2.7.2_2w2zdbrz3hiagriqclqc3vnuey: + react-remove-scroll@2.7.2: resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} engines: {node: '>=10'} peerDependencies: @@ -2114,17 +1780,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 19.2.14 - react: 19.2.5 - react-remove-scroll-bar: 2.3.8_2w2zdbrz3hiagriqclqc3vnuey - react-style-singleton: 2.2.3_2w2zdbrz3hiagriqclqc3vnuey - tslib: 2.8.1 - use-callback-ref: 1.3.3_2w2zdbrz3hiagriqclqc3vnuey - use-sidecar: 1.1.3_2w2zdbrz3hiagriqclqc3vnuey - dev: false - /react-style-singleton/2.2.3_2w2zdbrz3hiagriqclqc3vnuey: + react-style-singleton@2.2.3: resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} peerDependencies: @@ -2133,102 +1790,132 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 19.2.14 - get-nonce: 1.0.1 - react: 19.2.5 - tslib: 2.8.1 - dev: false - /react/19.2.5: + react@19.2.5: resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} engines: {node: '>=0.10.0'} - dev: false - /rollup/4.60.1: + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + retry-request@8.0.2: + resolution: {integrity: sha512-JzFPAfklk1kjR1w76f0QOIhoDkNkSqW8wYKT08n9yysTmZfB+RQ2QoXoTAeOi1HD9ZipTyTAZg3c4pM/jeqgSw==} + engines: {node: '>=18'} + + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + + rollup@4.60.1: resolution: {integrity: sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.60.1 - '@rollup/rollup-android-arm64': 4.60.1 - '@rollup/rollup-darwin-arm64': 4.60.1 - '@rollup/rollup-darwin-x64': 4.60.1 - '@rollup/rollup-freebsd-arm64': 4.60.1 - '@rollup/rollup-freebsd-x64': 4.60.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.60.1 - '@rollup/rollup-linux-arm-musleabihf': 4.60.1 - '@rollup/rollup-linux-arm64-gnu': 4.60.1 - '@rollup/rollup-linux-arm64-musl': 4.60.1 - '@rollup/rollup-linux-loong64-gnu': 4.60.1 - '@rollup/rollup-linux-loong64-musl': 4.60.1 - '@rollup/rollup-linux-ppc64-gnu': 4.60.1 - '@rollup/rollup-linux-ppc64-musl': 4.60.1 - '@rollup/rollup-linux-riscv64-gnu': 4.60.1 - '@rollup/rollup-linux-riscv64-musl': 4.60.1 - '@rollup/rollup-linux-s390x-gnu': 4.60.1 - '@rollup/rollup-linux-x64-gnu': 4.60.1 - '@rollup/rollup-linux-x64-musl': 4.60.1 - '@rollup/rollup-openbsd-x64': 4.60.1 - '@rollup/rollup-openharmony-arm64': 4.60.1 - '@rollup/rollup-win32-arm64-msvc': 4.60.1 - '@rollup/rollup-win32-ia32-msvc': 4.60.1 - '@rollup/rollup-win32-x64-gnu': 4.60.1 - '@rollup/rollup-win32-x64-msvc': 4.60.1 - fsevents: 2.3.3 - /scheduler/0.27.0: + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - dev: false - /semver/6.3.1: + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - dev: true - /source-map-js/1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + stream-events@1.0.5: + resolution: {integrity: sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} - /tailwindcss/4.2.2: + stubs@3.0.0: + resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} + + tailwindcss@4.2.2: resolution: {integrity: sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==} - dev: false - /tapable/2.3.2: + tapable@2.3.2: resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} engines: {node: '>=6'} - dev: false - /tinyglobby/0.2.16: + teeny-request@10.1.2: + resolution: {integrity: sha512-Xj0ZAQ0CeuQn6UxCDPLbFRlgcSTUEyO3+wiepr2grjIjyL/lMMs1Z4OwXn8kLvn/V1OuaEP0UY7Na6UDNNsYrQ==} + engines: {node: '>=18'} + + tinyglobby@0.2.16: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} - dependencies: - fdir: 6.5.0_picomatch@4.0.4 - picomatch: 4.0.4 - /tslib/2.8.1: + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - dev: false - /typescript/5.8.3: + typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true - /update-browserslist-db/1.2.3_browserslist@4.28.2: + undici-types@7.19.2: + resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} + + update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.28.2 - escalade: 3.2.0 - picocolors: 1.1.1 - dev: true - /use-callback-ref/1.3.3_2w2zdbrz3hiagriqclqc3vnuey: + use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} peerDependencies: @@ -2237,13 +1924,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 19.2.14 - react: 19.2.5 - tslib: 2.8.1 - dev: false - /use-sidecar/1.1.3_2w2zdbrz3hiagriqclqc3vnuey: + use-sidecar@1.1.3: resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} engines: {node: '>=10'} peerDependencies: @@ -2252,25 +1934,23 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 19.2.14 - detect-node-es: 1.1.0 - react: 19.2.5 - tslib: 2.8.1 - dev: false - /valibot/1.3.1_typescript@5.8.3: + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} + + valibot@1.3.1: resolution: {integrity: sha512-sfdRir/QFM0JaF22hqTroPc5xy4DimuGQVKFrzF1YfGwaS1nJot3Y8VqMdLO2Lg27fMzat2yD3pY5PbAYO39Gg==} peerDependencies: typescript: '>=5' peerDependenciesMeta: typescript: optional: true - dependencies: - typescript: 5.8.3 - dev: false - /vite/6.4.2: + vite@6.4.2: resolution: {integrity: sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -2309,21 +1989,43 @@ packages: optional: true yaml: optional: true - dependencies: - esbuild: 0.25.12 - fdir: 6.5.0_picomatch@4.0.4 - picomatch: 4.0.4 - postcss: 8.5.9 - rollup: 4.60.1 - tinyglobby: 0.2.16 - optionalDependencies: - fsevents: 2.3.3 - /yallist/3.1.1: + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true - /zustand/5.0.12_2w2zdbrz3hiagriqclqc3vnuey: + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + zustand@5.0.12: resolution: {integrity: sha512-i77ae3aZq4dhMlRhJVCYgMLKuSiZAaUPAct2AksxQ+gOtimhGMdXljRT21P5BNpeT4kXlLIckvkPM029OljD7g==} engines: {node: '>=12.20.0'} peerDependencies: @@ -2340,7 +2042,1875 @@ packages: optional: true use-sync-external-store: optional: true + +snapshots: + + '@0no-co/graphql.web@1.2.0(graphql@16.13.2)': + optionalDependencies: + graphql: 16.13.2 + + '@0no-co/graphqlsp@1.15.4(graphql@16.13.2)(typescript@5.8.3)': + dependencies: + '@gql.tada/internal': 1.0.9(graphql@16.13.2)(typescript@5.8.3) + graphql: 16.13.2 + typescript: 5.8.3 + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.0': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.28.6': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.29.2': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + + '@babel/parser@7.29.2': + dependencies: + '@babel/types': 7.29.0 + + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.28.6 + + '@babel/runtime@7.29.2': {} + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@emotion/hash@0.9.2': {} + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@floating-ui/core@1.7.5': + dependencies: + '@floating-ui/utils': 0.2.11 + + '@floating-ui/dom@1.7.6': + dependencies: + '@floating-ui/core': 1.7.5 + '@floating-ui/utils': 0.2.11 + + '@floating-ui/react-dom@2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@floating-ui/dom': 1.7.6 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + + '@floating-ui/utils@0.2.11': {} + + '@google-cloud/kms@5.4.0': + dependencies: + google-gax: 5.0.6 + transitivePeerDependencies: + - supports-color + + '@gql.tada/cli-utils@1.7.3(@0no-co/graphqlsp@1.15.4(graphql@16.13.2)(typescript@5.8.3))(graphql@16.13.2)(typescript@5.8.3)': + dependencies: + '@0no-co/graphqlsp': 1.15.4(graphql@16.13.2)(typescript@5.8.3) + '@gql.tada/internal': 1.0.9(graphql@16.13.2)(typescript@5.8.3) + graphql: 16.13.2 + typescript: 5.8.3 + + '@gql.tada/internal@1.0.9(graphql@16.13.2)(typescript@5.8.3)': + dependencies: + '@0no-co/graphql.web': 1.2.0(graphql@16.13.2) + graphql: 16.13.2 + typescript: 5.8.3 + + '@graphql-typed-document-node/core@3.2.0(graphql@16.13.2)': + dependencies: + graphql: 16.13.2 + + '@grpc/grpc-js@1.14.3': + dependencies: + '@grpc/proto-loader': 0.8.0 + '@js-sdsl/ordered-map': 4.4.2 + + '@grpc/proto-loader@0.8.0': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.5.5 + yargs: 17.7.2 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.13': dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@js-sdsl/ordered-map@4.4.2': {} + + '@ledgerhq/devices@8.14.0': + dependencies: + '@ledgerhq/errors': 6.33.0 + '@ledgerhq/logs': 6.17.0 + rxjs: 7.8.2 + semver: 7.7.3 + + '@ledgerhq/errors@6.33.0': {} + + '@ledgerhq/hw-bolos@6.36.0': + dependencies: + '@ledgerhq/hw-transport': 6.35.0 + + '@ledgerhq/hw-transport@6.35.0': + dependencies: + '@ledgerhq/devices': 8.14.0 + '@ledgerhq/errors': 6.33.0 + '@ledgerhq/logs': 6.17.0 + events: 3.3.0 + + '@ledgerhq/ledger-cal-service@1.15.2': + dependencies: + '@ledgerhq/live-env': 2.32.0 + '@ledgerhq/live-network': 2.5.0 + transitivePeerDependencies: + - debug + + '@ledgerhq/live-env@2.32.0': + dependencies: + rxjs: 7.8.2 + utility-types: 3.11.0 + + '@ledgerhq/live-network@2.5.0': + dependencies: + '@ledgerhq/errors': 6.33.0 + '@ledgerhq/live-env': 2.32.0 + '@ledgerhq/live-promise': 0.2.3 + '@ledgerhq/logs': 6.17.0 + axios: 1.13.2 + lru-cache: 7.18.3 + transitivePeerDependencies: + - debug + + '@ledgerhq/live-promise@0.2.3': + dependencies: + '@ledgerhq/logs': 6.17.0 + + '@ledgerhq/logs@6.17.0': {} + + '@mysten/bcs@2.0.3': + dependencies: + '@mysten/utils': 0.3.1 + '@scure/base': 2.0.0 + + '@mysten/dapp-kit@1.0.4(@mysten/sui@2.13.2(typescript@5.8.3))(@tanstack/react-query@5.99.0(react@19.2.5))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.8.3)': + dependencies: + '@mysten/slush-wallet': 1.0.3(@mysten/sui@2.13.2(typescript@5.8.3))(typescript@5.8.3) + '@mysten/sui': 2.13.2(typescript@5.8.3) + '@mysten/utils': 0.3.1 + '@mysten/wallet-standard': 0.20.1(@mysten/sui@2.13.2(typescript@5.8.3)) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.5) + '@tanstack/react-query': 5.99.0(react@19.2.5) + '@vanilla-extract/css': 1.20.1 + '@vanilla-extract/dynamic': 2.1.5 + '@vanilla-extract/recipes': 0.5.7(@vanilla-extract/css@1.20.1) + clsx: 2.1.1 + react: 19.2.5 + zustand: 5.0.12(@types/react@19.2.14)(react@19.2.5) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + - babel-plugin-macros + - immer + - react-dom + - typescript + - use-sync-external-store + + '@mysten/enoki@1.0.4(@mysten/sui@2.13.2(typescript@5.8.3))(@types/react@19.2.14)(react@19.2.5)': + dependencies: + '@mysten/signers': 1.0.2(@mysten/sui@2.13.2(typescript@5.8.3)) + '@mysten/sui': 2.13.2(typescript@5.8.3) + '@mysten/utils': 0.3.1 + '@mysten/wallet-standard': 0.20.1(@mysten/sui@2.13.2(typescript@5.8.3)) + '@nanostores/react': 1.1.0(nanostores@1.2.0)(react@19.2.5) + '@wallet-standard/ui': 1.0.1 + idb-keyval: 6.2.2 + nanostores: 1.2.0 + optionalDependencies: + '@types/react': 19.2.14 + react: 19.2.5 + transitivePeerDependencies: + - debug + - supports-color + + '@mysten/ledgerjs-hw-app-sui@0.8.0': + dependencies: + '@ledgerhq/devices': 8.14.0 + '@ledgerhq/errors': 6.33.0 + '@ledgerhq/hw-bolos': 6.36.0 + '@ledgerhq/hw-transport': 6.35.0 + '@ledgerhq/ledger-cal-service': 1.15.2 + fast-sha256: 1.3.0 + semver: 7.7.4 + transitivePeerDependencies: + - debug + + '@mysten/seal@1.1.1(@mysten/sui@2.13.2(typescript@5.8.3))': + dependencies: + '@mysten/bcs': 2.0.3 + '@mysten/sui': 2.13.2(typescript@5.8.3) + '@noble/curves': 2.2.0 + '@noble/hashes': 2.2.0 + + '@mysten/signers@1.0.2(@mysten/sui@2.13.2(typescript@5.8.3))': + dependencies: + '@google-cloud/kms': 5.4.0 + '@mysten/ledgerjs-hw-app-sui': 0.8.0 + '@mysten/sui': 2.13.2(typescript@5.8.3) + '@noble/curves': 2.2.0 + '@noble/hashes': 2.2.0 + asn1-ts: 11.1.0 + transitivePeerDependencies: + - debug + - supports-color + + '@mysten/slush-wallet@1.0.3(@mysten/sui@2.13.2(typescript@5.8.3))(typescript@5.8.3)': + dependencies: + '@mysten/sui': 2.13.2(typescript@5.8.3) + '@mysten/utils': 0.3.1 + '@mysten/wallet-standard': 0.20.1(@mysten/sui@2.13.2(typescript@5.8.3)) + '@mysten/window-wallet-core': 0.1.4(typescript@5.8.3) + valibot: 1.3.1(typescript@5.8.3) + transitivePeerDependencies: + - typescript + + '@mysten/sui-groups@0.0.1(@mysten/bcs@2.0.3)(@mysten/sui@2.13.2(typescript@5.8.3))': + dependencies: + '@mysten/bcs': 2.0.3 + '@mysten/sui': 2.13.2(typescript@5.8.3) + + '@mysten/sui@2.13.2(typescript@5.8.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) + '@mysten/bcs': 2.0.3 + '@mysten/utils': 0.3.1 + '@noble/curves': 2.2.0 + '@noble/hashes': 2.2.0 + '@protobuf-ts/grpcweb-transport': 2.11.1 + '@protobuf-ts/runtime': 2.11.1 + '@protobuf-ts/runtime-rpc': 2.11.1 + '@scure/base': 2.0.0 + '@scure/bip32': 2.0.1 + '@scure/bip39': 2.0.1 + gql.tada: 1.9.2(graphql@16.13.2)(typescript@5.8.3) + graphql: 16.13.2 + poseidon-lite: 0.2.1 + valibot: 1.3.1(typescript@5.8.3) + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/utils@0.3.1': + dependencies: + '@scure/base': 2.0.0 + + '@mysten/wallet-standard@0.20.1(@mysten/sui@2.13.2(typescript@5.8.3))': + dependencies: + '@mysten/sui': 2.13.2(typescript@5.8.3) + '@wallet-standard/core': 1.1.1 + + '@mysten/window-wallet-core@0.1.4(typescript@5.8.3)': + dependencies: + '@mysten/utils': 0.3.1 + jose: 6.2.2 + valibot: 1.3.1(typescript@5.8.3) + transitivePeerDependencies: + - typescript + + '@nanostores/react@1.1.0(nanostores@1.2.0)(react@19.2.5)': + dependencies: + nanostores: 1.2.0 + react: 19.2.5 + + '@noble/curves@2.0.1': + dependencies: + '@noble/hashes': 2.0.1 + + '@noble/curves@2.2.0': + dependencies: + '@noble/hashes': 2.2.0 + + '@noble/hashes@2.0.1': {} + + '@noble/hashes@2.2.0': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@protobuf-ts/grpcweb-transport@2.11.1': + dependencies: + '@protobuf-ts/runtime': 2.11.1 + '@protobuf-ts/runtime-rpc': 2.11.1 + + '@protobuf-ts/runtime-rpc@2.11.1': + dependencies: + '@protobuf-ts/runtime': 2.11.1 + + '@protobuf-ts/runtime@2.11.1': {} + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + + '@radix-ui/primitive@1.1.3': {} + + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.5)': + dependencies: + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.5)': + dependencies: + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + aria-hidden: 1.2.6 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.5)': + dependencies: + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.5)': + dependencies: + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.5)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + aria-hidden: 1.2.6 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/rect': 1.1.1 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.5)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.5)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.5)': + dependencies: + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.5)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.5)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.5)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.5)': + dependencies: + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.5)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.5)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/rect@1.1.1': {} + + '@rolldown/pluginutils@1.0.0-beta.27': {} + + '@rollup/rollup-android-arm-eabi@4.60.1': + optional: true + + '@rollup/rollup-android-arm64@4.60.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.60.1': + optional: true + + '@rollup/rollup-darwin-x64@4.60.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.60.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.60.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.60.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.60.1': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.60.1': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.60.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.60.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.60.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.60.1': + optional: true + + '@rollup/rollup-openbsd-x64@4.60.1': + optional: true + + '@rollup/rollup-openharmony-arm64@4.60.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.60.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.60.1': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.60.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.60.1': + optional: true + + '@scure/base@2.0.0': {} + + '@scure/bip32@2.0.1': + dependencies: + '@noble/curves': 2.0.1 + '@noble/hashes': 2.0.1 + '@scure/base': 2.0.0 + + '@scure/bip39@2.0.1': + dependencies: + '@noble/hashes': 2.0.1 + '@scure/base': 2.0.0 + + '@tailwindcss/node@4.2.2': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.20.1 + jiti: 2.6.1 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.2.2 + + '@tailwindcss/oxide-android-arm64@4.2.2': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.2.2': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.2.2': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.2.2': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.2.2': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.2.2': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.2.2': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.2.2': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.2.2': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.2.2': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.2.2': + optional: true + + '@tailwindcss/oxide@4.2.2': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.2.2 + '@tailwindcss/oxide-darwin-arm64': 4.2.2 + '@tailwindcss/oxide-darwin-x64': 4.2.2 + '@tailwindcss/oxide-freebsd-x64': 4.2.2 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.2 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.2 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.2 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.2 + '@tailwindcss/oxide-linux-x64-musl': 4.2.2 + '@tailwindcss/oxide-wasm32-wasi': 4.2.2 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.2 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.2 + + '@tailwindcss/vite@4.2.2(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0))': + dependencies: + '@tailwindcss/node': 4.2.2 + '@tailwindcss/oxide': 4.2.2 + tailwindcss: 4.2.2 + vite: 6.4.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0) + + '@tanstack/query-core@5.99.0': {} + + '@tanstack/react-query@5.99.0(react@19.2.5)': + dependencies: + '@tanstack/query-core': 5.99.0 + react: 19.2.5 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.29.0 + + '@types/estree@1.0.8': {} + + '@types/node@25.6.0': + dependencies: + undici-types: 7.19.2 + + '@types/react-dom@19.2.3(@types/react@19.2.14)': + dependencies: + '@types/react': 19.2.14 + + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + + '@vanilla-extract/css@1.20.1': + dependencies: + '@emotion/hash': 0.9.2 + '@vanilla-extract/private': 1.0.9 + css-what: 6.2.2 + csstype: 3.2.3 + dedent: 1.7.2 + deep-object-diff: 1.1.9 + deepmerge: 4.3.1 + lru-cache: 10.4.3 + media-query-parser: 2.0.2 + modern-ahocorasick: 1.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - babel-plugin-macros + + '@vanilla-extract/dynamic@2.1.5': + dependencies: + '@vanilla-extract/private': 1.0.9 + + '@vanilla-extract/private@1.0.9': {} + + '@vanilla-extract/recipes@0.5.7(@vanilla-extract/css@1.20.1)': + dependencies: + '@vanilla-extract/css': 1.20.1 + + '@vitejs/plugin-react@4.7.0(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0))': + dependencies: + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) + '@rolldown/pluginutils': 1.0.0-beta.27 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 6.4.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0) + transitivePeerDependencies: + - supports-color + + '@wallet-standard/app@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/base@1.1.0': {} + + '@wallet-standard/core@1.1.1': + dependencies: + '@wallet-standard/app': 1.1.0 + '@wallet-standard/base': 1.1.0 + '@wallet-standard/errors': 0.1.1 + '@wallet-standard/features': 1.1.0 + '@wallet-standard/wallet': 1.1.0 + + '@wallet-standard/errors@0.1.1': + dependencies: + chalk: 5.6.2 + commander: 13.1.0 + + '@wallet-standard/features@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/ui-compare@1.0.1': + dependencies: + '@wallet-standard/base': 1.1.0 + '@wallet-standard/ui-core': 1.0.0 + '@wallet-standard/ui-registry': 1.0.1 + + '@wallet-standard/ui-core@1.0.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + '@wallet-standard/ui-features@1.0.1': + dependencies: + '@wallet-standard/base': 1.1.0 + '@wallet-standard/errors': 0.1.1 + '@wallet-standard/ui-core': 1.0.0 + '@wallet-standard/ui-registry': 1.0.1 + + '@wallet-standard/ui-registry@1.0.1': + dependencies: + '@wallet-standard/base': 1.1.0 + '@wallet-standard/errors': 0.1.1 + '@wallet-standard/ui-core': 1.0.0 + + '@wallet-standard/ui@1.0.1': + dependencies: + '@wallet-standard/ui-compare': 1.0.1 + '@wallet-standard/ui-core': 1.0.0 + '@wallet-standard/ui-features': 1.0.1 + + '@wallet-standard/wallet@1.1.0': + dependencies: + '@wallet-standard/base': 1.1.0 + + agent-base@7.1.4: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + + asn1-ts@11.1.0: {} + + asynckit@0.4.0: {} + + axios@1.13.2: + dependencies: + follow-redirects: 1.16.0 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.10.19: {} + + bignumber.js@9.3.1: {} + + brace-expansion@2.1.0: + dependencies: + balanced-match: 1.0.2 + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.19 + caniuse-lite: 1.0.30001788 + electron-to-chromium: 1.5.339 + node-releases: 2.0.37 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + + buffer-equal-constant-time@1.0.1: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + caniuse-lite@1.0.30001788: {} + + chalk@5.6.2: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@2.1.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@13.1.0: {} + + convert-source-map@2.0.0: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-what@6.2.2: {} + + csstype@3.2.3: {} + + data-uri-to-buffer@4.0.1: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + dedent@1.7.2: {} + + deep-object-diff@1.1.9: {} + + deepmerge@4.3.1: {} + + delayed-stream@1.0.0: {} + + detect-libc@2.1.2: {} + + detect-node-es@1.1.0: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexify@4.1.3: + dependencies: + end-of-stream: 1.4.5 + inherits: 2.0.4 + readable-stream: 3.6.2 + stream-shift: 1.0.3 + + eastasianwidth@0.2.0: {} + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + electron-to-chromium@1.5.339: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.20.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.2 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + escalade@3.2.0: {} + + events@3.3.0: {} + + extend@3.0.2: {} + + fast-sha256@1.3.0: {} + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + + follow-redirects@1.16.0: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gaxios@7.1.4: + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.6 + node-fetch: 3.3.2 + transitivePeerDependencies: + - supports-color + + gcp-metadata@8.1.2: + dependencies: + gaxios: 7.1.4 + google-logging-utils: 1.1.3 + json-bigint: 1.0.0 + transitivePeerDependencies: + - supports-color + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-nonce@1.0.1: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + google-auth-library@10.6.2: + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 7.1.4 + gcp-metadata: 8.1.2 + google-logging-utils: 1.1.3 + jws: 4.0.1 + transitivePeerDependencies: + - supports-color + + google-gax@5.0.6: + dependencies: + '@grpc/grpc-js': 1.14.3 + '@grpc/proto-loader': 0.8.0 + duplexify: 4.1.3 + google-auth-library: 10.6.2 + google-logging-utils: 1.1.3 + node-fetch: 3.3.2 + object-hash: 3.0.0 + proto3-json-serializer: 3.0.4 + protobufjs: 7.5.5 + retry-request: 8.0.2 + rimraf: 5.0.10 + transitivePeerDependencies: + - supports-color + + google-logging-utils@1.1.3: {} + + gopd@1.2.0: {} + + gql.tada@1.9.2(graphql@16.13.2)(typescript@5.8.3): + dependencies: + '@0no-co/graphql.web': 1.2.0(graphql@16.13.2) + '@0no-co/graphqlsp': 1.15.4(graphql@16.13.2)(typescript@5.8.3) + '@gql.tada/cli-utils': 1.7.3(@0no-co/graphqlsp@1.15.4(graphql@16.13.2)(typescript@5.8.3))(graphql@16.13.2)(typescript@5.8.3) + '@gql.tada/internal': 1.0.9(graphql@16.13.2)(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - graphql + + graceful-fs@4.2.11: {} + + graphql@16.13.2: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + idb-keyval@6.2.2: {} + + inherits@2.0.4: {} + + is-fullwidth-code-point@3.0.0: {} + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@2.6.1: {} + + jose@6.2.2: {} + + js-tokens@4.0.0: {} + + jsesc@3.1.0: {} + + json-bigint@1.0.0: + dependencies: + bignumber.js: 9.3.1 + + json5@2.2.3: {} + + jwa@2.0.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@4.0.1: + dependencies: + jwa: 2.0.1 + safe-buffer: 5.2.1 + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + lodash.camelcase@4.3.0: {} + + long@5.3.2: {} + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@7.18.3: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + math-intrinsics@1.1.0: {} + + media-query-parser@2.0.2: + dependencies: + '@babel/runtime': 7.29.2 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.0 + + minipass@7.1.3: {} + + modern-ahocorasick@1.1.0: {} + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + nanostores@1.2.0: {} + + node-domexception@1.0.0: {} + + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + + node-releases@2.0.37: {} + + object-hash@3.0.0: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + package-json-from-dist@1.0.1: {} + + path-key@3.1.1: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + + picocolors@1.1.1: {} + + picomatch@4.0.4: {} + + poseidon-lite@0.2.1: {} + + postcss@8.5.10: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + proto3-json-serializer@3.0.4: + dependencies: + protobufjs: 7.5.5 + + protobufjs@7.5.5: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 25.6.0 + long: 5.3.2 + + proxy-from-env@1.1.0: {} + + react-dom@19.2.5(react@19.2.5): + dependencies: + react: 19.2.5 + scheduler: 0.27.0 + + react-refresh@0.17.0: {} + + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.5): + dependencies: + react: 19.2.5 + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.5) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.5): + dependencies: + react: 19.2.5 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.5) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.5) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.5) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + + react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.5): + dependencies: + get-nonce: 1.0.1 + react: 19.2.5 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + react@19.2.5: {} + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + require-directory@2.1.1: {} + + retry-request@8.0.2: + dependencies: + extend: 3.0.2 + teeny-request: 10.1.2 + transitivePeerDependencies: + - supports-color + + rimraf@5.0.10: + dependencies: + glob: 10.5.0 + + rollup@4.60.1: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.60.1 + '@rollup/rollup-android-arm64': 4.60.1 + '@rollup/rollup-darwin-arm64': 4.60.1 + '@rollup/rollup-darwin-x64': 4.60.1 + '@rollup/rollup-freebsd-arm64': 4.60.1 + '@rollup/rollup-freebsd-x64': 4.60.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.1 + '@rollup/rollup-linux-arm-musleabihf': 4.60.1 + '@rollup/rollup-linux-arm64-gnu': 4.60.1 + '@rollup/rollup-linux-arm64-musl': 4.60.1 + '@rollup/rollup-linux-loong64-gnu': 4.60.1 + '@rollup/rollup-linux-loong64-musl': 4.60.1 + '@rollup/rollup-linux-ppc64-gnu': 4.60.1 + '@rollup/rollup-linux-ppc64-musl': 4.60.1 + '@rollup/rollup-linux-riscv64-gnu': 4.60.1 + '@rollup/rollup-linux-riscv64-musl': 4.60.1 + '@rollup/rollup-linux-s390x-gnu': 4.60.1 + '@rollup/rollup-linux-x64-gnu': 4.60.1 + '@rollup/rollup-linux-x64-musl': 4.60.1 + '@rollup/rollup-openbsd-x64': 4.60.1 + '@rollup/rollup-openharmony-arm64': 4.60.1 + '@rollup/rollup-win32-arm64-msvc': 4.60.1 + '@rollup/rollup-win32-ia32-msvc': 4.60.1 + '@rollup/rollup-win32-x64-gnu': 4.60.1 + '@rollup/rollup-win32-x64-msvc': 4.60.1 + fsevents: 2.3.3 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-buffer@5.2.1: {} + + scheduler@0.27.0: {} + + semver@6.3.1: {} + + semver@7.7.3: {} + + semver@7.7.4: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@4.1.0: {} + + source-map-js@1.2.1: {} + + stream-events@1.0.5: + dependencies: + stubs: 3.0.0 + + stream-shift@1.0.3: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + stubs@3.0.0: {} + + tailwindcss@4.2.2: {} + + tapable@2.3.2: {} + + teeny-request@10.1.2: + dependencies: + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + node-fetch: 3.3.2 + stream-events: 1.0.5 + transitivePeerDependencies: + - supports-color + + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tslib@2.8.1: {} + + typescript@5.8.3: {} + + undici-types@7.19.2: {} + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.5): + dependencies: + react: 19.2.5 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.5): + dependencies: + detect-node-es: 1.1.0 + react: 19.2.5 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + util-deprecate@1.0.2: {} + + utility-types@3.11.0: {} + + valibot@1.3.1(typescript@5.8.3): + optionalDependencies: + typescript: 5.8.3 + + vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0): + dependencies: + esbuild: 0.25.12 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.10 + rollup: 4.60.1 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 25.6.0 + fsevents: 2.3.3 + jiti: 2.6.1 + lightningcss: 1.32.0 + + web-streams-polyfill@3.3.3: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + wrappy@1.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + zustand@5.0.12(@types/react@19.2.14)(react@19.2.5): + optionalDependencies: '@types/react': 19.2.14 react: 19.2.5 - dev: false diff --git a/chat-app/src/components/enoki/RegisterEnokiWallets.tsx b/chat-app/src/components/enoki/RegisterEnokiWallets.tsx new file mode 100644 index 0000000..3a8bdff --- /dev/null +++ b/chat-app/src/components/enoki/RegisterEnokiWallets.tsx @@ -0,0 +1,34 @@ +import { useEffect } from 'react'; +import { registerEnokiWallets } from '@mysten/enoki'; +import { SuiGrpcClient } from '@mysten/sui/grpc'; +import { getEnokiConfig } from '../../lib/enoki-config'; + +let hasRegisteredEnokiWallets = false; + +export function RegisterEnokiWallets() { + useEffect(() => { + if (hasRegisteredEnokiWallets) return; + + const config = getEnokiConfig(); + if (!config.enabled) { + console.info(`[enoki] Skip registration: ${config.reason}`); + return; + } + + registerEnokiWallets({ + apiKey: config.apiKey, + client: new SuiGrpcClient({ baseUrl: config.rpcUrl, network: config.network }), + network: config.network, + providers: { + google: { + clientId: config.googleClientId, + redirectUrl: config.redirectUrl, + }, + }, + }); + + hasRegisteredEnokiWallets = true; + }, []); + + return null; +} diff --git a/chat-app/src/lib/enoki-config.ts b/chat-app/src/lib/enoki-config.ts new file mode 100644 index 0000000..d0a2286 --- /dev/null +++ b/chat-app/src/lib/enoki-config.ts @@ -0,0 +1,83 @@ +import type { EnokiNetwork } from '@mysten/enoki'; + +type EnabledEnokiConfig = { + enabled: true; + apiKey: string; + googleClientId: string; + redirectUrl: string; + rpcUrl: string; + network: EnokiNetwork; +}; + +type DisabledEnokiConfig = { + enabled: false; + reason: string; +}; + +export type EnokiConfig = EnabledEnokiConfig | DisabledEnokiConfig; + +function readEnv(name: string): string { + const value = import.meta.env[name]; + return typeof value === 'string' ? value.trim() : ''; +} + +function getNetwork(): EnokiNetwork { + const configuredNetwork = readEnv('VITE_SUI_NETWORK'); + if ( + configuredNetwork === 'mainnet' || + configuredNetwork === 'testnet' || + configuredNetwork === 'devnet' + ) { + return configuredNetwork; + } + return 'testnet'; +} + +function isValidUrl(url: string): boolean { + try { + new URL(url); + return true; + } catch { + return false; + } +} + +export function getEnokiConfig(): EnokiConfig { + const apiKey = readEnv('VITE_ENOKI_PUBLIC_KEY'); + const googleClientId = readEnv('VITE_ENOKI_GOOGLE_CLIENT_ID'); + const redirectUrl = readEnv('VITE_ENOKI_REDIRECT_URL'); + const rpcUrl = readEnv('VITE_SUI_RPC_URL'); + + if (!apiKey || !googleClientId || !redirectUrl || !rpcUrl) { + return { + enabled: false, + reason: + 'Missing one or more Enoki env vars: VITE_ENOKI_PUBLIC_KEY, VITE_ENOKI_GOOGLE_CLIENT_ID, VITE_ENOKI_REDIRECT_URL, VITE_SUI_RPC_URL.', + }; + } + + if (!isValidUrl(redirectUrl)) { + return { + enabled: false, + reason: 'VITE_ENOKI_REDIRECT_URL is not a valid URL.', + }; + } + + if (!isValidUrl(rpcUrl)) { + return { + enabled: false, + reason: 'VITE_SUI_RPC_URL is not a valid URL.', + }; + } + + const network = getNetwork(); + + return { + enabled: true, + apiKey, + googleClientId, + redirectUrl, + rpcUrl, + network, + }; +} diff --git a/chat-app/src/main.tsx b/chat-app/src/main.tsx index 06cff71..381da0e 100644 --- a/chat-app/src/main.tsx +++ b/chat-app/src/main.tsx @@ -5,6 +5,7 @@ import { SuiClientProvider, WalletProvider } from '@mysten/dapp-kit'; import { networkConfig } from './lib/network-config'; import { MessagingClientProvider } from './contexts/MessagingClientContext'; import { ErrorBoundary } from './components/ErrorBoundary'; +import { RegisterEnokiWallets } from './components/enoki/RegisterEnokiWallets'; import App from './App'; import '@mysten/dapp-kit/dist/index.css'; import './index.css'; @@ -16,6 +17,7 @@ createRoot(document.getElementById('root')!).render( + From 151e23168c0b5c4457d8857acbec0eb9b43c6ba4 Mon Sep 17 00:00:00 2001 From: LingLuoYi <32977408+LingLuoYi@users.noreply.github.com> Date: Mon, 20 Apr 2026 16:47:25 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E5=AE=8C=E6=88=90zklogin=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chat-app/pnpm-lock.yaml | 2 +- .../src/contexts/MessagingClientContext.tsx | 1 + chat-app/src/lib/dapp-kit-signer.ts | 15 +- relayer/src/auth/signature.rs | 115 +++++++++++++++ .../sui-stack-messaging/src/client.ts | 6 +- .../src/relayer/http-transport.ts | 10 +- .../sui-stack-messaging/src/relayer/types.ts | 6 +- .../sui-stack-messaging/src/verification.ts | 74 +++++++--- .../test/unit/http-transport.test.ts | 84 +++++++++++ .../test/unit/verification.test.ts | 132 +++++++++++++++++- 10 files changed, 404 insertions(+), 41 deletions(-) diff --git a/chat-app/pnpm-lock.yaml b/chat-app/pnpm-lock.yaml index 2def9d3..a852f3a 100644 --- a/chat-app/pnpm-lock.yaml +++ b/chat-app/pnpm-lock.yaml @@ -24,7 +24,7 @@ importers: specifier: ^1.1.1 version: 1.1.1(@mysten/sui@2.13.2(typescript@5.8.3)) '@mysten/sui': - specifier: 2.13.2 + specifier: ^2.13.2 version: 2.13.2(typescript@5.8.3) '@mysten/sui-groups': specifier: ^0.0.1 diff --git a/chat-app/src/contexts/MessagingClientContext.tsx b/chat-app/src/contexts/MessagingClientContext.tsx index 2701c82..dd36c98 100644 --- a/chat-app/src/contexts/MessagingClientContext.tsx +++ b/chat-app/src/contexts/MessagingClientContext.tsx @@ -113,6 +113,7 @@ export function MessagingClientProvider({ serverConfigs: sealServerConfigs, }, encryption: { + sealThreshold: 1, sessionKey: { address: account.address, onSign: async (message: Uint8Array) => { diff --git a/chat-app/src/lib/dapp-kit-signer.ts b/chat-app/src/lib/dapp-kit-signer.ts index 3bffc6f..d6ba65c 100644 --- a/chat-app/src/lib/dapp-kit-signer.ts +++ b/chat-app/src/lib/dapp-kit-signer.ts @@ -2,11 +2,11 @@ * Adapter that wraps dapp-kit's signPersonalMessage into a Signer-compatible object * for use with the messaging SDK's relayer transport. * - * Supports all Sui wallet types (Ed25519, Secp256k1, Secp256r1, zkLogin, multisig) - * by lazily extracting the public key from the first signature when the wallet - * doesn't expose publicKey upfront. + * Lazily extracts the public key from the first signature when the wallet + * doesn't expose publicKey upfront, which is useful for wallet adapters that + * derive the signing identity dynamically, including zkLogin-backed wallets. */ -import { Signer, parseSerializedSignature } from '@mysten/sui/cryptography'; +import { Signer, parseSerializedSignature, SIGNATURE_FLAG_TO_SCHEME } from '@mysten/sui/cryptography'; import type { PublicKey, SignatureScheme } from '@mysten/sui/cryptography'; import { publicKeyFromRawBytes, publicKeyFromSuiBytes } from '@mysten/sui/verify'; import { toBase64 } from '@mysten/sui/utils'; @@ -65,10 +65,9 @@ export class DappKitSigner extends Signer { if (!this.#publicKey) { return 'ED25519'; // default until first signature resolves it } - const flag = this.#publicKey.flag(); - if (flag === 0x00) return 'ED25519'; - if (flag === 0x01) return 'Secp256k1'; - return 'Secp256r1'; + return SIGNATURE_FLAG_TO_SCHEME[ + this.#publicKey.flag() as keyof typeof SIGNATURE_FLAG_TO_SCHEME + ] ?? 'ED25519'; } getPublicKey(): PublicKey { diff --git a/relayer/src/auth/signature.rs b/relayer/src/auth/signature.rs index 62de5ce..ec56cf5 100644 --- a/relayer/src/auth/signature.rs +++ b/relayer/src/auth/signature.rs @@ -234,6 +234,10 @@ pub fn derive_sui_address( return Err(AuthError::InvalidPublicKeyFormat(e)); } + if scheme == SignatureScheme::ZkLogin { + return derive_zklogin_address(public_key_bytes, false); + } + // Build the hash input: flag || public_key let mut hash_input = vec![scheme.flag()]; hash_input.extend_from_slice(public_key_bytes); @@ -252,6 +256,24 @@ pub fn verify_address_matches_pubkey( public_key_bytes: &[u8], scheme: SignatureScheme, ) -> Result { + if scheme == SignatureScheme::ZkLogin { + let current_address = derive_zklogin_address(public_key_bytes, false)?; + let legacy_address = derive_zklogin_address(public_key_bytes, true)?; + + if claimed_address == current_address { + return Ok(current_address); + } + + if claimed_address == legacy_address { + return Ok(legacy_address); + } + + return Err(AuthError::AddressMismatch { + expected: format!("{} (legacy: {})", current_address, legacy_address), + got: claimed_address.to_string(), + }); + } + let derived_address = derive_sui_address(public_key_bytes, scheme)?; if claimed_address != derived_address { @@ -264,6 +286,70 @@ pub fn verify_address_matches_pubkey( Ok(derived_address) } +fn derive_zklogin_address(public_key_bytes: &[u8], legacy: bool) -> Result { + let normalized_key = normalize_zklogin_public_identifier(public_key_bytes, legacy)?; + let mut hash_input = vec![SignatureScheme::ZkLogin.flag()]; + hash_input.extend_from_slice(&normalized_key); + + type Blake2b256 = Blake2b; + let hash = Blake2b256::digest(&hash_input); + Ok(format!("0x{}", hex::encode(hash))) +} + +fn normalize_zklogin_public_identifier( + public_key_bytes: &[u8], + legacy: bool, +) -> Result, AuthError> { + let issuer_len = *public_key_bytes + .first() + .ok_or_else(|| { + AuthError::InvalidPublicKeyFormat("Empty zkLogin public identifier".to_string()) + })? + as usize; + let issuer_end = 1 + issuer_len; + + if public_key_bytes.len() < issuer_end { + return Err(AuthError::InvalidPublicKeyFormat(format!( + "zkLogin issuer length {} exceeds available bytes {}", + issuer_len, + public_key_bytes.len().saturating_sub(1) + ))); + } + + let mut normalized = public_key_bytes[..issuer_end].to_vec(); + let address_seed_bytes = &public_key_bytes[issuer_end..]; + + let normalized_seed = if legacy { + trim_leading_zeros(address_seed_bytes) + } else { + left_pad_zeros(address_seed_bytes, 32)? + }; + + normalized.extend_from_slice(&normalized_seed); + Ok(normalized) +} + +fn trim_leading_zeros(bytes: &[u8]) -> Vec { + match bytes.iter().position(|byte| *byte != 0) { + Some(index) => bytes[index..].to_vec(), + None => vec![0], + } +} + +fn left_pad_zeros(bytes: &[u8], width: usize) -> Result, AuthError> { + if bytes.len() > width { + return Err(AuthError::InvalidPublicKeyFormat(format!( + "zkLogin address seed must be at most {} bytes, got {}", + width, + bytes.len() + ))); + } + + let mut padded = vec![0; width - bytes.len()]; + padded.extend_from_slice(bytes); + Ok(padded) +} + #[cfg(test)] mod tests { use super::*; @@ -529,6 +615,35 @@ mod tests { assert!(result.is_ok()); } + #[test] + fn test_verify_address_matches_zklogin_accepts_current_and_legacy_addresses() { + let mut public_key_bytes = vec![27]; + public_key_bytes.extend_from_slice(b"https://accounts.google.com"); + public_key_bytes.extend_from_slice(&[0u8; 31]); + public_key_bytes.push(1); + + let current_address = derive_zklogin_address(&public_key_bytes, false).unwrap(); + let legacy_address = derive_zklogin_address(&public_key_bytes, true).unwrap(); + + assert_ne!(current_address, legacy_address); + assert!( + verify_address_matches_pubkey( + ¤t_address, + &public_key_bytes, + SignatureScheme::ZkLogin, + ) + .is_ok() + ); + assert!( + verify_address_matches_pubkey( + &legacy_address, + &public_key_bytes, + SignatureScheme::ZkLogin, + ) + .is_ok() + ); + } + // ==================== Address Mismatch Test ==================== #[test] diff --git a/ts-sdks/packages/sui-stack-messaging/src/client.ts b/ts-sdks/packages/sui-stack-messaging/src/client.ts index 4d3df8a..4b2fca8 100644 --- a/ts-sdks/packages/sui-stack-messaging/src/client.ts +++ b/ts-sdks/packages/sui-stack-messaging/src/client.ts @@ -646,6 +646,7 @@ export class SuiStackMessagingClient { senderAddress: raw.senderAddress, signature: raw.signature, publicKey: raw.publicKey, + client: this.#client, }) : false; @@ -737,7 +738,10 @@ export class SuiStackMessagingClient { * @returns `true` if the signature is valid and the derived address matches `senderAddress`. */ verifyMessageSender(params: VerifyMessageSenderParams): Promise { - return verifyMessageSender(params); + return verifyMessageSender({ + ...params, + client: this.#client, + }); } // === Top-Level Imperative Methods === diff --git a/ts-sdks/packages/sui-stack-messaging/src/relayer/http-transport.ts b/ts-sdks/packages/sui-stack-messaging/src/relayer/http-transport.ts index aa72fd1..828e1bd 100644 --- a/ts-sdks/packages/sui-stack-messaging/src/relayer/http-transport.ts +++ b/ts-sdks/packages/sui-stack-messaging/src/relayer/http-transport.ts @@ -121,12 +121,10 @@ function fromWireMessage(wire: WireMessageResponse): RelayerMessage { }; } -function extractRawSignature(serializedSignature: string): Uint8Array { +function extractSignatureBytes(serializedSignature: string): Uint8Array { const parsed = parseSerializedSignature(serializedSignature); if (!parsed.signature) { - throw new Error( - 'Unsupported signature scheme: only keypair signatures (Ed25519, Secp256k1, Secp256r1) are supported', - ); + throw new Error('Unsupported signature scheme: relayer auth requires extractable signature bytes'); } return parsed.signature; } @@ -140,12 +138,12 @@ async function signAndCreateAuthHeaders( messageBytes: Uint8Array, ): Promise> { const { signature } = await signer.signPersonalMessage(messageBytes); - const rawSig = extractRawSignature(signature); + const signatureBytes = extractSignatureBytes(signature); // getPublicKey() is called after signPersonalMessage() so that signers which // lazily resolve their key from the first signature (e.g. wallets that don't // expose publicKey upfront) have it available by this point. return { - 'x-signature': toHex(rawSig), + 'x-signature': toHex(signatureBytes), 'x-public-key': getPublicKeyHex(signer), }; } diff --git a/ts-sdks/packages/sui-stack-messaging/src/relayer/types.ts b/ts-sdks/packages/sui-stack-messaging/src/relayer/types.ts index 7b6413e..d69ba19 100644 --- a/ts-sdks/packages/sui-stack-messaging/src/relayer/types.ts +++ b/ts-sdks/packages/sui-stack-messaging/src/relayer/types.ts @@ -33,7 +33,7 @@ export interface RelayerMessage { syncStatus?: SyncStatus; /** Only present when the backend persists messages to Walrus. */ quiltPatchId?: string | null; - /** Hex-encoded per-message signature (64 bytes). */ + /** Hex-encoded per-message signature bytes. Keypair schemes use raw 64-byte signatures; zkLogin uses serialized authenticator bytes. */ signature: string; /** Hex-encoded public key with scheme flag prefix. */ publicKey: string; @@ -46,7 +46,7 @@ export interface SendMessageParams { nonce: Uint8Array; keyVersion: bigint; attachments?: Attachment[]; - /** Hex-encoded per-message signature for sender verification. */ + /** Hex-encoded per-message signature bytes for sender verification. */ messageSignature?: string; } @@ -73,7 +73,7 @@ export interface UpdateMessageParams { nonce: Uint8Array; keyVersion: bigint; attachments?: Attachment[]; - /** Hex-encoded per-message signature for sender verification. */ + /** Hex-encoded per-message signature bytes for sender verification. */ messageSignature?: string; } diff --git a/ts-sdks/packages/sui-stack-messaging/src/verification.ts b/ts-sdks/packages/sui-stack-messaging/src/verification.ts index 3a5cd1e..843dd4b 100644 --- a/ts-sdks/packages/sui-stack-messaging/src/verification.ts +++ b/ts-sdks/packages/sui-stack-messaging/src/verification.ts @@ -1,15 +1,32 @@ // Copyright (c) Mysten Labs, Inc. // SPDX-License-Identifier: Apache-2.0 -import type { Signer } from '@mysten/sui/cryptography'; +import type { ClientWithCoreApi } from '@mysten/sui/client'; +import type { Signer, SignatureScheme } from '@mysten/sui/cryptography'; import { parseSerializedSignature, SIGNATURE_FLAG_TO_SCHEME, toSerializedSignature, } from '@mysten/sui/cryptography'; -import { fromHex, toHex } from '@mysten/sui/utils'; +import { fromHex, toBase64, toHex } from '@mysten/sui/utils'; import { publicKeyFromSuiBytes, verifyPersonalMessageSignature } from '@mysten/sui/verify'; +const COMPACT_SIGNATURE_SCHEMES = new Set([ + 'ED25519', + 'Secp256k1', + 'Secp256r1', +]); + +function bytesEqual(a: Uint8Array, b: Uint8Array): boolean { + if (a.length !== b.length) return false; + + for (let i = 0; i < a.length; i += 1) { + if (a[i] !== b[i]) return false; + } + + return true; +} + // ── Canonical message ──────────────────────────────────────────── /** @@ -33,7 +50,8 @@ export function buildCanonicalMessage(params: { /** * Sign the per-message canonical content. - * Returns the raw 64-byte signature as a hex string. + * Returns hex-encoded signature bytes. + * Keypair schemes use the raw 64-byte signature; zkLogin uses the serialized authenticator bytes. */ export async function signMessageContent( signer: Signer, @@ -48,9 +66,7 @@ export async function signMessageContent( const { signature } = await signer.signPersonalMessage(canonicalBytes); const parsed = parseSerializedSignature(signature); if (!parsed.signature) { - throw new Error( - 'Unsupported signature scheme: only keypair signatures (Ed25519, Secp256k1, Secp256r1) are supported', - ); + throw new Error('Unsupported signature scheme: relayer auth requires extractable signature bytes'); } return toHex(parsed.signature); } @@ -63,17 +79,18 @@ export interface VerifyMessageSenderParams { nonce: Uint8Array; keyVersion: bigint; senderAddress: string; - /** Hex-encoded 64-byte raw signature. */ + /** Hex-encoded signature bytes. Keypair schemes use raw 64-byte signatures; zkLogin uses serialized authenticator bytes. */ signature: string; /** Hex-encoded public key with scheme flag prefix (as returned by the relayer). */ publicKey: string; + client?: ClientWithCoreApi; } /** * Verify that a message was signed by the claimed sender. * * Reconstructs the canonical message from the ciphertext fields, - * rebuilds the serialized signature from the stored raw components, + * rebuilds or reuses the serialized signature according to the signing scheme, * then verifies using `verifyPersonalMessageSignature`. * * @returns `true` if the signature is valid and the derived address matches `senderAddress`. @@ -81,26 +98,43 @@ export interface VerifyMessageSenderParams { export async function verifyMessageSender(params: VerifyMessageSenderParams): Promise { try { const canonicalBytes = buildCanonicalMessage(params); - - // Reconstruct the serialized signature from raw components. - const rawSig = fromHex(params.signature); + const signatureBytes = fromHex(params.signature); const pubKeyBytes = fromHex(params.publicKey); - // First byte is the scheme flag. const flag = pubKeyBytes[0] as keyof typeof SIGNATURE_FLAG_TO_SCHEME; const signatureScheme = SIGNATURE_FLAG_TO_SCHEME[flag]; if (!signatureScheme) return false; - const publicKey = publicKeyFromSuiBytes(pubKeyBytes); - - const serializedSignature = toSerializedSignature({ - signatureScheme, - signature: rawSig, - publicKey, + const publicKey = publicKeyFromSuiBytes(pubKeyBytes, { + address: params.senderAddress, + client: params.client, }); - // Verify the signature and check the derived address matches. - const verifiedKey = await verifyPersonalMessageSignature(canonicalBytes, serializedSignature); + let serializedSignature: string; + + if (COMPACT_SIGNATURE_SCHEMES.has(signatureScheme)) { + serializedSignature = toSerializedSignature({ + signatureScheme, + signature: signatureBytes, + publicKey, + }); + } else if (signatureScheme === 'ZkLogin') { + const parsedSignature = parseSerializedSignature(toBase64(signatureBytes)); + if (parsedSignature.signatureScheme !== 'ZkLogin') { + return false; + } + if (!bytesEqual(parsedSignature.publicKey, pubKeyBytes.slice(1))) { + return false; + } + serializedSignature = parsedSignature.serializedSignature; + } else { + return false; + } + + const verifiedKey = await verifyPersonalMessageSignature(canonicalBytes, serializedSignature, { + address: params.senderAddress, + client: params.client, + }); return verifiedKey.toSuiAddress() === params.senderAddress; } catch { return false; diff --git a/ts-sdks/packages/sui-stack-messaging/test/unit/http-transport.test.ts b/ts-sdks/packages/sui-stack-messaging/test/unit/http-transport.test.ts index a0828aa..ffc5a86 100644 --- a/ts-sdks/packages/sui-stack-messaging/test/unit/http-transport.test.ts +++ b/ts-sdks/packages/sui-stack-messaging/test/unit/http-transport.test.ts @@ -1,8 +1,11 @@ // Copyright (c) Mysten Labs, Inc. // SPDX-License-Identifier: Apache-2.0 +import type { PublicKey, Signer } from '@mysten/sui/cryptography'; import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'; +import { parseSerializedSignature } from '@mysten/sui/cryptography'; import { toHex } from '@mysten/sui/utils'; +import { getZkLoginSignature, toZkLoginPublicIdentifier } from '@mysten/sui/zklogin'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import type { Attachment } from '../../src/attachments/types.js'; @@ -10,6 +13,11 @@ import { HTTPRelayerTransport } from '../../src/relayer/http-transport.js'; import { RelayerTransportError } from '../../src/relayer/types.js'; const MOCK_RELAYER_URL = 'https://relayer.example.com'; +const ZKLOGIN_ISS = 'https://accounts.google.com'; +const ZKLOGIN_ISS_DETAILS = { + value: 'CJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLC', + indexMod4: 1, +}; // Sample wire message from the relayer (snake_case, as returned by the HTTP API) const WIRE_MESSAGE = { @@ -42,6 +50,59 @@ function createTransport() { }); } +function createZkLoginSigner(): { + signer: Signer; + publicKey: PublicKey; + signatureBytes: Uint8Array; +} { + const publicKey = toZkLoginPublicIdentifier(1n, ZKLOGIN_ISS, { + legacyAddress: false, + }); + const serializedSignature = getZkLoginSignature({ + inputs: { + proofPoints: { + a: ['1', '2', '3'], + b: [ + ['4', '5'], + ['6', '7'], + ], + c: ['8', '9', '10'], + }, + issBase64Details: ZKLOGIN_ISS_DETAILS, + headerBase64: 'eyJhbGciOiJSUzI1NiJ9', + addressSeed: '1', + }, + maxEpoch: 10n, + userSignature: new Uint8Array(64).fill(7), + }); + + const signer = { + async signPersonalMessage(bytes: Uint8Array) { + return { + bytes: Buffer.from(bytes).toString('base64'), + signature: serializedSignature, + }; + }, + getPublicKey(): PublicKey { + return publicKey; + }, + toSuiAddress() { + return publicKey.toSuiAddress(); + }, + } as unknown as Signer; + const parsedSignature = parseSerializedSignature(serializedSignature); + + if (!parsedSignature.signature) { + throw new Error('Expected serialized zkLogin signature bytes'); + } + + return { + signer, + publicKey, + signatureBytes: parsedSignature.signature, + }; +} + describe('HTTPRelayerTransport', () => { beforeEach(() => { mockFetch.mockClear(); @@ -504,6 +565,29 @@ describe('HTTPRelayerTransport', () => { expect(headers['x-signature']).toHaveLength(128); }); + + it('sends full serialized zkLogin signature bytes in X-Signature', async () => { + const transport = createTransport(); + const { signer, publicKey, signatureBytes } = createZkLoginSigner(); + + mockFetch.mockResolvedValueOnce( + new Response(JSON.stringify({ message_id: 'test' }), { status: 201 }), + ); + + await transport.sendMessage({ + signer, + groupId: '0x' + 'ab'.repeat(32), + encryptedText: new Uint8Array([1]), + nonce: new Uint8Array(12), + keyVersion: 0n, + }); + + const headers = mockFetch.mock.calls[0][1]?.headers as Record; + + expect(headers['x-public-key']).toBe(toHex(publicKey.toSuiBytes())); + expect(headers['x-signature']).toBe(toHex(signatureBytes)); + expect(headers['x-signature'].length).toBeGreaterThan(128); + }); }); // URL handling diff --git a/ts-sdks/packages/sui-stack-messaging/test/unit/verification.test.ts b/ts-sdks/packages/sui-stack-messaging/test/unit/verification.test.ts index 5e91f89..00cdec0 100644 --- a/ts-sdks/packages/sui-stack-messaging/test/unit/verification.test.ts +++ b/ts-sdks/packages/sui-stack-messaging/test/unit/verification.test.ts @@ -1,9 +1,13 @@ // Copyright (c) Mysten Labs, Inc. // SPDX-License-Identifier: Apache-2.0 +import type { ClientWithCoreApi } from '@mysten/sui/client'; +import { parseSerializedSignature } from '@mysten/sui/cryptography'; import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519'; import { toHex } from '@mysten/sui/utils'; -import { describe, expect, it } from 'vitest'; +import type { PublicKey, Signer } from '@mysten/sui/cryptography'; +import { getZkLoginSignature, toZkLoginPublicIdentifier } from '@mysten/sui/zklogin'; +import { describe, expect, it, vi } from 'vitest'; import { buildCanonicalMessage, @@ -12,6 +16,12 @@ import { } from '../../src/verification.js'; const MOCK_GROUP_ID = '0x' + 'ab'.repeat(32); +const ZKLOGIN_ISS = 'https://accounts.google.com'; +const ZKLOGIN_ADDRESS_SEED = 1n; +const ZKLOGIN_ISS_DETAILS = { + value: 'CJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLC', + indexMod4: 1, +}; function makeMessageParams() { return { @@ -22,6 +32,73 @@ function makeMessageParams() { }; } +function createMockClient(verifyResult = true) { + const verifyZkLoginSignature = vi.fn().mockResolvedValue({ + success: verifyResult, + errors: [], + }); + + return { + client: { + core: { + verifyZkLoginSignature, + }, + } as unknown as ClientWithCoreApi, + verifyZkLoginSignature, + }; +} + +function createZkLoginFixture() { + const publicKey = toZkLoginPublicIdentifier(ZKLOGIN_ADDRESS_SEED, ZKLOGIN_ISS, { + legacyAddress: false, + }); + const serializedSignature = getZkLoginSignature({ + inputs: { + proofPoints: { + a: ['1', '2', '3'], + b: [ + ['4', '5'], + ['6', '7'], + ], + c: ['8', '9', '10'], + }, + issBase64Details: ZKLOGIN_ISS_DETAILS, + headerBase64: 'eyJhbGciOiJSUzI1NiJ9', + addressSeed: ZKLOGIN_ADDRESS_SEED.toString(), + }, + maxEpoch: 10n, + userSignature: new Uint8Array(64).fill(7), + }); + + const signer = { + async signPersonalMessage(bytes: Uint8Array) { + return { + bytes: Buffer.from(bytes).toString('base64'), + signature: serializedSignature, + }; + }, + getPublicKey(): PublicKey { + return publicKey; + }, + toSuiAddress() { + return publicKey.toSuiAddress(); + }, + } as unknown as Signer; + const parsedSignature = parseSerializedSignature(serializedSignature); + + if (!parsedSignature.signature) { + throw new Error('Expected serialized zkLogin signature bytes'); + } + + return { + signer, + publicKey, + serializedSignature, + signatureBytes: parsedSignature.signature, + senderAddress: publicKey.toSuiAddress(), + }; +} + describe('buildCanonicalMessage', () => { it('produces deterministic output for the same inputs', () => { const params = makeMessageParams(); @@ -72,7 +149,7 @@ describe('buildCanonicalMessage', () => { }); describe('signMessageContent', () => { - it('returns a 64-byte hex-encoded signature', async () => { + it('returns a 64-byte hex-encoded signature for Ed25519 signers', async () => { const keypair = Ed25519Keypair.generate(); const sig = await signMessageContent(keypair, makeMessageParams()); @@ -92,6 +169,15 @@ describe('signMessageContent', () => { expect(sig1).not.toBe(sig2); }); + + it('returns the full serialized zkLogin signature bytes as hex', async () => { + const { signer, signatureBytes } = createZkLoginFixture(); + + const sig = await signMessageContent(signer, makeMessageParams()); + + expect(sig).toBe(toHex(signatureBytes)); + expect(sig.length).toBeGreaterThan(128); + }); }); describe('verifyMessageSender', () => { @@ -232,4 +318,46 @@ describe('verifyMessageSender', () => { expect(result).toBe(false); }); + + it('verifies zkLogin signatures when a client is available', async () => { + const params = makeMessageParams(); + const { signer, publicKey, senderAddress, signatureBytes, serializedSignature } = + createZkLoginFixture(); + const { client, verifyZkLoginSignature } = createMockClient(true); + + const signature = await signMessageContent(signer, params); + expect(signature).toBe(toHex(signatureBytes)); + + const result = await verifyMessageSender({ + ...params, + senderAddress, + signature, + publicKey: toHex(publicKey.toSuiBytes()), + client, + }); + + expect(result).toBe(true); + expect(verifyZkLoginSignature).toHaveBeenCalledOnce(); + expect(verifyZkLoginSignature).toHaveBeenCalledWith({ + address: senderAddress, + bytes: Buffer.from(buildCanonicalMessage(params)).toString('base64'), + signature: serializedSignature, + intentScope: 'PersonalMessage', + }); + }); + + it('returns false for zkLogin signatures when no client is available', async () => { + const params = makeMessageParams(); + const { signer, publicKey, senderAddress } = createZkLoginFixture(); + const signature = await signMessageContent(signer, params); + + const result = await verifyMessageSender({ + ...params, + senderAddress, + signature, + publicKey: toHex(publicKey.toSuiBytes()), + }); + + expect(result).toBe(false); + }); }); From 772be351c6b619f7e2769d8bd78dc3bac9861bee Mon Sep 17 00:00:00 2001 From: LingLuoYi <32977408+LingLuoYi@users.noreply.github.com> Date: Mon, 20 Apr 2026 16:48:03 +0800 Subject: [PATCH 04/10] 1 --- seal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seal b/seal index 82656f1..a07d09b 160000 --- a/seal +++ b/seal @@ -1 +1 @@ -Subproject commit 82656f10d3cb5e87c39443b4ac955bb3b0bbcf81 +Subproject commit a07d09b5d6d71cabe3e45703aa6441c3dba3c852 From c878ba81c3c5222f1f4b0ca5b8b4e85f1d8a2218 Mon Sep 17 00:00:00 2001 From: Jeronasand Date: Tue, 21 Apr 2026 22:03:02 +0800 Subject: [PATCH 05/10] change api route / -> /relayer --- relayer/Dockerfile | 2 +- relayer/docker-compose.yml | 2 +- relayer/src/main.rs | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/relayer/Dockerfile b/relayer/Dockerfile index 8beafe1..95a1cc5 100644 --- a/relayer/Dockerfile +++ b/relayer/Dockerfile @@ -21,6 +21,6 @@ COPY --from=builder /app/target/release/messaging-relayer ./messaging-relayer EXPOSE 3000 HEALTHCHECK --interval=10s --timeout=5s --retries=3 --start-period=5s \ - CMD curl -f http://localhost:3000/health_check || exit 1 + CMD curl -f http://localhost:3000/relayer/health_check || exit 1 CMD ["./messaging-relayer"] diff --git a/relayer/docker-compose.yml b/relayer/docker-compose.yml index 39647a5..620ae19 100644 --- a/relayer/docker-compose.yml +++ b/relayer/docker-compose.yml @@ -8,7 +8,7 @@ services: environment: - RUST_LOG=${RUST_LOG:-messaging_relayer=info} healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:${PORT:-3000}/health_check"] + test: ["CMD", "curl", "-f", "http://localhost:${PORT:-3000}/relayer/health_check"] interval: 10s timeout: 5s retries: 3 diff --git a/relayer/src/main.rs b/relayer/src/main.rs index b4978d6..2ec1935 100644 --- a/relayer/src/main.rs +++ b/relayer/src/main.rs @@ -97,10 +97,9 @@ async fn main() { .allow_methods(Any) .allow_headers(Any); - // Combine all routes + // Combine all routes under /relayer prefix let app = Router::new() - .merge(public_routes) - .merge(authenticated_routes) + .nest("/relayer", public_routes.merge(authenticated_routes)) .layer(cors); let addr = format!("0.0.0.0:{}", config.port); From 14a61186f84961b77f3a33a8c87922445eb655f9 Mon Sep 17 00:00:00 2001 From: Jeronasand Date: Wed, 22 Apr 2026 00:10:58 +0800 Subject: [PATCH 06/10] update --- chat-app/src/contexts/MessagingClientContext.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/chat-app/src/contexts/MessagingClientContext.tsx b/chat-app/src/contexts/MessagingClientContext.tsx index dd36c98..af9eaa0 100644 --- a/chat-app/src/contexts/MessagingClientContext.tsx +++ b/chat-app/src/contexts/MessagingClientContext.tsx @@ -52,12 +52,15 @@ function parsePackageConfig() { } // Seal key server object IDs (comma-separated in env) -function parseSealServerConfigs(): { objectId: string; weight: number }[] { +function parseSealServerConfigs(): { objectId: string; weight: number; aggregatorUrl?: string }[] { const ids = import.meta.env.VITE_SEAL_KEY_SERVER_OBJECT_IDS; if (!ids) return []; + const aggregatorUrl = + import.meta.env.VITE_SEAL_AGGREGATOR_URL; return ids.split(',').map((id: string) => ({ objectId: id.trim(), weight: 1, + aggregatorUrl, })); } From 1641c426488bcc4ccee1ec6d5b1c64e95295c2f5 Mon Sep 17 00:00:00 2001 From: Jeronasand Date: Wed, 22 Apr 2026 00:22:48 +0800 Subject: [PATCH 07/10] updatge seal server support --- .../src/contexts/MessagingClientContext.tsx | 61 ++++++++++++++++--- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/chat-app/src/contexts/MessagingClientContext.tsx b/chat-app/src/contexts/MessagingClientContext.tsx index af9eaa0..b489560 100644 --- a/chat-app/src/contexts/MessagingClientContext.tsx +++ b/chat-app/src/contexts/MessagingClientContext.tsx @@ -36,6 +36,42 @@ const WALRUS_PUBLISHER_URL = const WALRUS_AGGREGATOR_URL = import.meta.env.VITE_WALRUS_AGGREGATOR_URL || ''; const WALRUS_EPOCHS = Number(import.meta.env.VITE_WALRUS_EPOCHS) || 1; +const SEAL_URL_OVERRIDE_FROM = + import.meta.env.VITE_SEAL_URL_OVERRIDE_FROM || 'http://localhost:2024'; +const SEAL_URL_OVERRIDE_TO = + import.meta.env.VITE_SEAL_URL_OVERRIDE_TO || ''; + +function installSealFetchUrlOverride() { + if (!SEAL_URL_OVERRIDE_TO) return; + + const g = globalThis as typeof globalThis & { + __sealFetchRewriteInstalled?: boolean; + }; + if (g.__sealFetchRewriteInstalled) return; + + const originalFetch = globalThis.fetch.bind(globalThis); + globalThis.fetch = ((input: RequestInfo | URL, init?: RequestInit) => { + const requestUrl = + typeof input === 'string' + ? input + : input instanceof URL + ? input.toString() + : input.url; + + if (requestUrl.startsWith(SEAL_URL_OVERRIDE_FROM)) { + const rewrittenUrl = `${SEAL_URL_OVERRIDE_TO}${requestUrl.slice(SEAL_URL_OVERRIDE_FROM.length)}`; + if (input instanceof Request) { + return originalFetch(new Request(rewrittenUrl, input), init); + } + return originalFetch(rewrittenUrl, init); + } + + return originalFetch(input, init); + }) as typeof fetch; + g.__sealFetchRewriteInstalled = true; +} + +installSealFetchUrlOverride(); // Package config overrides (optional — auto-detected from network if not set) function parsePackageConfig() { @@ -55,13 +91,24 @@ function parsePackageConfig() { function parseSealServerConfigs(): { objectId: string; weight: number; aggregatorUrl?: string }[] { const ids = import.meta.env.VITE_SEAL_KEY_SERVER_OBJECT_IDS; if (!ids) return []; - const aggregatorUrl = - import.meta.env.VITE_SEAL_AGGREGATOR_URL; - return ids.split(',').map((id: string) => ({ - objectId: id.trim(), - weight: 1, - aggregatorUrl, - })); + const aggregatorUrl = import.meta.env.VITE_SEAL_AGGREGATOR_URL?.trim(); + const committeeServerIds = new Set( + (import.meta.env.VITE_SEAL_COMMITTEE_SERVER_OBJECT_IDS || '') + .split(',') + .map((id: string) => id.trim()) + .filter(Boolean), + ); + return ids + .split(',') + .map((id: string) => id.trim()) + .filter(Boolean) + .map((objectId) => ({ + objectId, + weight: 1, + ...(aggregatorUrl && committeeServerIds.has(objectId) + ? { aggregatorUrl } + : {}), + })); } // Singleton GraphQL client (does not depend on wallet) From 46608ffafa0a1650694e194fbc86eb20d40a4f57 Mon Sep 17 00:00:00 2001 From: Jeronasand Date: Wed, 22 Apr 2026 00:22:56 +0800 Subject: [PATCH 08/10] 1 --- chat-app/.env.example | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/chat-app/.env.example b/chat-app/.env.example index 8b3a089..14f3f2e 100644 --- a/chat-app/.env.example +++ b/chat-app/.env.example @@ -21,6 +21,13 @@ VITE_WALRUS_EPOCHS=5 # Seal Key Servers (threshold encryption) # VITE_SEAL_KEY_SERVER_OBJECT_IDS=0x...,0x... +# Only set when some key server object IDs are committee mode. +# VITE_SEAL_COMMITTEE_SERVER_OBJECT_IDS=0x...,0x... +VITE_SEAL_AGGREGATOR_URL= +VITE_SEAL_COMMITTEE_SERVER_OBJECT_IDS= +# Optional: rewrite on-chain key server URL in browser (useful when on-chain URL is localhost). +VITE_SEAL_URL_OVERRIDE_FROM=http://localhost:2024 +VITE_SEAL_URL_OVERRIDE_TO= # Enoki VITE_ENOKI_PUBLIC_KEY= From b314b4a360a16bf30d0956893c409e5e55a6e681 Mon Sep 17 00:00:00 2001 From: Jeronasand Date: Wed, 22 Apr 2026 01:13:13 +0800 Subject: [PATCH 09/10] 1 --- chat-app/src/contexts/MessagingClientContext.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chat-app/src/contexts/MessagingClientContext.tsx b/chat-app/src/contexts/MessagingClientContext.tsx index b489560..6b994ef 100644 --- a/chat-app/src/contexts/MessagingClientContext.tsx +++ b/chat-app/src/contexts/MessagingClientContext.tsx @@ -102,7 +102,7 @@ function parseSealServerConfigs(): { objectId: string; weight: number; aggregato .split(',') .map((id: string) => id.trim()) .filter(Boolean) - .map((objectId) => ({ + .map((objectId: string) => ({ objectId, weight: 1, ...(aggregatorUrl && committeeServerIds.has(objectId) From 0180cfb0888de19bf949d459f39b343f8c350c64 Mon Sep 17 00:00:00 2001 From: Jeronasand Date: Sun, 17 May 2026 03:00:03 +0800 Subject: [PATCH 10/10] fix: update chat app title --- chat-app/README.md | 2 +- chat-app/index.html | 2 +- chat-app/src/App.tsx | 2 +- chat-app/src/index.css | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/chat-app/README.md b/chat-app/README.md index 1f4f424..ca4f3db 100644 --- a/chat-app/README.md +++ b/chat-app/README.md @@ -1,4 +1,4 @@ -# Sui Messaging Chat — Reference Application +# Mizu Messaging Chat Demo — Reference Application ## 1. Overview diff --git a/chat-app/index.html b/chat-app/index.html index 75ce1f3..3a653de 100644 --- a/chat-app/index.html +++ b/chat-app/index.html @@ -3,7 +3,7 @@ - Sui Messaging Chat + Mizu Messaging Chat Demo
diff --git a/chat-app/src/App.tsx b/chat-app/src/App.tsx index 0fe93ce..0811adf 100644 --- a/chat-app/src/App.tsx +++ b/chat-app/src/App.tsx @@ -40,7 +40,7 @@ function App() { {/* Header */}

- Sui Messaging Chat + Mizu Messaging Chat Demo

diff --git a/chat-app/src/index.css b/chat-app/src/index.css index 5d3eb78..d31eceb 100644 --- a/chat-app/src/index.css +++ b/chat-app/src/index.css @@ -1,7 +1,7 @@ @import 'tailwindcss'; /* - * Custom theme for Sui Messaging Chat. + * Custom theme for Mizu Messaging Chat Demo. * Tailwind v4 uses CSS-native @theme instead of tailwind.config.js. * Dark mode: use `class` strategy via `@variant dark (&:where(.dark, .dark *))`. */