From 43d095ea0f8c8dc61d17e2d22fd9cd2b40e7c154 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9F=A9=E5=86=B7?= <280828574@qq.com>
Date: Wed, 16 Sep 2026 15:04:08 +0800
Subject: [PATCH] first commit
---
.gitignore | 9 +
.nvmrc | 1 +
.workbuddy/memory/2026-09-15.md | 18 +
index.html | 12 +
package-lock.json | 5385 ++++++++++++++++++
package.json | 33 +
src/App.vue | 117 +
src/components/BTopBar.vue | 124 +
src/components/CustomTabBar.vue | 163 +
src/components/DeviceCard.vue | 245 +
src/components/Empty.vue | 31 +
src/components/NavBar.vue | 55 +
src/components/NewsFeed.vue | 160 +
src/components/OrderCard.vue | 135 +
src/components/RevenueCard.vue | 102 +
src/composables/useNavigation.js | 172 +
src/main.js | 16 +
src/manifest.json | 69 +
src/pages-sub/b-promotion/b-level.vue | 347 ++
src/pages-sub/b-promotion/leader-detail.vue | 376 ++
src/pages-sub/b-promotion/leader-poster.vue | 228 +
src/pages-sub/b-promotion/leader-promo.vue | 356 ++
src/pages-sub/b-promotion/manager-level.vue | 601 ++
src/pages-sub/b-promotion/manager-poster.vue | 241 +
src/pages-sub/b-promotion/manager-promo.vue | 488 ++
src/pages-sub/b-promotion/poster.vue | 228 +
src/pages-sub/b-promotion/promo-home.vue | 611 ++
src/pages-sub/content/doc-detail.vue | 193 +
src/pages-sub/content/docs.vue | 149 +
src/pages-sub/content/news-detail.vue | 133 +
src/pages-sub/content/news-list.vue | 200 +
src/pages-sub/content/notice-detail.vue | 177 +
src/pages-sub/content/notices.vue | 214 +
src/pages-sub/content/software.vue | 191 +
src/pages-sub/device/add-own.vue | 526 ++
src/pages-sub/device/credit-detail.vue | 185 +
src/pages-sub/device/deploy-guide.vue | 197 +
src/pages-sub/device/deploy-progress.vue | 144 +
src/pages-sub/device/detail.vue | 188 +
src/pages-sub/device/device-info.vue | 93 +
src/pages-sub/device/diagnosis.vue | 139 +
src/pages-sub/device/docking-detail.vue | 277 +
src/pages-sub/device/log.vue | 176 +
src/pages-sub/device/monitor.vue | 497 ++
src/pages-sub/device/nat-test.vue | 126 +
src/pages-sub/device/own-order-detail.vue | 289 +
src/pages-sub/device/own-orders.vue | 198 +
src/pages-sub/device/own-voucher.vue | 396 ++
src/pages-sub/device/revenue-detail.vue | 203 +
src/pages-sub/mall/coupon-detail.vue | 282 +
src/pages-sub/mall/my-coupons.vue | 222 +
src/pages-sub/mall/order-list.vue | 109 +
src/pages-sub/mall/pending-order-detail.vue | 506 ++
src/pages-sub/mall/pending-payment.vue | 270 +
src/pages-sub/mall/product-detail.vue | 269 +
src/pages-sub/mall/welfare.vue | 120 +
src/pages-sub/revenue/calculator.vue | 658 +++
src/pages-sub/revenue/leaderboard.vue | 132 +
src/pages-sub/revenue/online-reward.vue | 188 +
src/pages-sub/revenue/overview.vue | 109 +
src/pages-sub/revenue/points-log.vue | 330 ++
src/pages-sub/revenue/withdraw.vue | 442 ++
src/pages-sub/user/contract-preview.vue | 246 +
src/pages-sub/user/contracts.vue | 189 +
src/pages-sub/user/help-center.vue | 229 +
src/pages-sub/user/invitation.vue | 244 +
src/pages-sub/user/level-rules.vue | 161 +
src/pages-sub/user/level.vue | 327 ++
src/pages-sub/user/partner-apply.vue | 291 +
src/pages-sub/user/poster.vue | 118 +
src/pages-sub/user/profile-edit.vue | 191 +
src/pages-sub/user/promotion-center.vue | 225 +
src/pages-sub/user/realname-auth.vue | 139 +
src/pages-sub/user/settings.vue | 180 +
src/pages-sub/user/ticket-create.vue | 164 +
src/pages-sub/user/ticket-detail.vue | 205 +
src/pages-sub/user/tickets.vue | 139 +
src/pages-sub/user/wallet.vue | 136 +
src/pages.json | 270 +
src/pages/b-home/index.vue | 536 ++
src/pages/b-manager-home/index.vue | 590 ++
src/pages/b-manager-profile/index.vue | 511 ++
src/pages/b-manager-revenue/index.vue | 433 ++
src/pages/b-manager-team/index.vue | 329 ++
src/pages/b-profile/index.vue | 562 ++
src/pages/b-revenue/index.vue | 402 ++
src/pages/b-super-home/index.vue | 523 ++
src/pages/b-super-profile/index.vue | 516 ++
src/pages/b-super-revenue/index.vue | 319 ++
src/pages/b-super-team/index.vue | 431 ++
src/pages/b-team/index.vue | 345 ++
src/pages/devices/index.vue | 259 +
src/pages/index/index.vue | 723 +++
src/pages/login/index-bak.vue | 533 ++
src/pages/login/index.vue | 410 ++
src/pages/mall/index.vue | 787 +++
src/pages/profile/index.vue | 431 ++
src/pages/revenue/index.vue | 213 +
src/static/images/README.md | 8 +
src/static/images/logo.svg | 11 +
src/static/quanxiyun-logo.png | Bin 0 -> 621204 bytes
src/static/share-cover.png | Bin 0 -> 179520 bytes
src/static/styles/common.scss | 124 +
src/store/index.js | 5 +
src/store/modules/app.js | 66 +
src/store/modules/device.js | 77 +
src/store/modules/user.js | 64 +
src/uni.scss | 25 +
src/utils/auth.js | 25 +
src/utils/constant.js | 143 +
src/utils/order.mjs | 4 +
src/utils/request.js | 91 +
src/utils/richText.mjs | 24 +
src/utils/util.js | 93 +
tests/receipt-display.test.mjs | 13 +
tests/rich-text-image.test.mjs | 19 +
vite.config.js | 32 +
117 files changed, 31982 insertions(+)
create mode 100644 .gitignore
create mode 100644 .nvmrc
create mode 100644 .workbuddy/memory/2026-09-15.md
create mode 100644 index.html
create mode 100644 package-lock.json
create mode 100644 package.json
create mode 100644 src/App.vue
create mode 100644 src/components/BTopBar.vue
create mode 100644 src/components/CustomTabBar.vue
create mode 100644 src/components/DeviceCard.vue
create mode 100644 src/components/Empty.vue
create mode 100644 src/components/NavBar.vue
create mode 100644 src/components/NewsFeed.vue
create mode 100644 src/components/OrderCard.vue
create mode 100644 src/components/RevenueCard.vue
create mode 100644 src/composables/useNavigation.js
create mode 100644 src/main.js
create mode 100644 src/manifest.json
create mode 100644 src/pages-sub/b-promotion/b-level.vue
create mode 100644 src/pages-sub/b-promotion/leader-detail.vue
create mode 100644 src/pages-sub/b-promotion/leader-poster.vue
create mode 100644 src/pages-sub/b-promotion/leader-promo.vue
create mode 100644 src/pages-sub/b-promotion/manager-level.vue
create mode 100644 src/pages-sub/b-promotion/manager-poster.vue
create mode 100644 src/pages-sub/b-promotion/manager-promo.vue
create mode 100644 src/pages-sub/b-promotion/poster.vue
create mode 100644 src/pages-sub/b-promotion/promo-home.vue
create mode 100644 src/pages-sub/content/doc-detail.vue
create mode 100644 src/pages-sub/content/docs.vue
create mode 100644 src/pages-sub/content/news-detail.vue
create mode 100644 src/pages-sub/content/news-list.vue
create mode 100644 src/pages-sub/content/notice-detail.vue
create mode 100644 src/pages-sub/content/notices.vue
create mode 100644 src/pages-sub/content/software.vue
create mode 100644 src/pages-sub/device/add-own.vue
create mode 100644 src/pages-sub/device/credit-detail.vue
create mode 100644 src/pages-sub/device/deploy-guide.vue
create mode 100644 src/pages-sub/device/deploy-progress.vue
create mode 100644 src/pages-sub/device/detail.vue
create mode 100644 src/pages-sub/device/device-info.vue
create mode 100644 src/pages-sub/device/diagnosis.vue
create mode 100644 src/pages-sub/device/docking-detail.vue
create mode 100644 src/pages-sub/device/log.vue
create mode 100644 src/pages-sub/device/monitor.vue
create mode 100644 src/pages-sub/device/nat-test.vue
create mode 100644 src/pages-sub/device/own-order-detail.vue
create mode 100644 src/pages-sub/device/own-orders.vue
create mode 100644 src/pages-sub/device/own-voucher.vue
create mode 100644 src/pages-sub/device/revenue-detail.vue
create mode 100644 src/pages-sub/mall/coupon-detail.vue
create mode 100644 src/pages-sub/mall/my-coupons.vue
create mode 100644 src/pages-sub/mall/order-list.vue
create mode 100644 src/pages-sub/mall/pending-order-detail.vue
create mode 100644 src/pages-sub/mall/pending-payment.vue
create mode 100644 src/pages-sub/mall/product-detail.vue
create mode 100644 src/pages-sub/mall/welfare.vue
create mode 100644 src/pages-sub/revenue/calculator.vue
create mode 100644 src/pages-sub/revenue/leaderboard.vue
create mode 100644 src/pages-sub/revenue/online-reward.vue
create mode 100644 src/pages-sub/revenue/overview.vue
create mode 100644 src/pages-sub/revenue/points-log.vue
create mode 100644 src/pages-sub/revenue/withdraw.vue
create mode 100644 src/pages-sub/user/contract-preview.vue
create mode 100644 src/pages-sub/user/contracts.vue
create mode 100644 src/pages-sub/user/help-center.vue
create mode 100644 src/pages-sub/user/invitation.vue
create mode 100644 src/pages-sub/user/level-rules.vue
create mode 100644 src/pages-sub/user/level.vue
create mode 100644 src/pages-sub/user/partner-apply.vue
create mode 100644 src/pages-sub/user/poster.vue
create mode 100644 src/pages-sub/user/profile-edit.vue
create mode 100644 src/pages-sub/user/promotion-center.vue
create mode 100644 src/pages-sub/user/realname-auth.vue
create mode 100644 src/pages-sub/user/settings.vue
create mode 100644 src/pages-sub/user/ticket-create.vue
create mode 100644 src/pages-sub/user/ticket-detail.vue
create mode 100644 src/pages-sub/user/tickets.vue
create mode 100644 src/pages-sub/user/wallet.vue
create mode 100644 src/pages.json
create mode 100644 src/pages/b-home/index.vue
create mode 100644 src/pages/b-manager-home/index.vue
create mode 100644 src/pages/b-manager-profile/index.vue
create mode 100644 src/pages/b-manager-revenue/index.vue
create mode 100644 src/pages/b-manager-team/index.vue
create mode 100644 src/pages/b-profile/index.vue
create mode 100644 src/pages/b-revenue/index.vue
create mode 100644 src/pages/b-super-home/index.vue
create mode 100644 src/pages/b-super-profile/index.vue
create mode 100644 src/pages/b-super-revenue/index.vue
create mode 100644 src/pages/b-super-team/index.vue
create mode 100644 src/pages/b-team/index.vue
create mode 100644 src/pages/devices/index.vue
create mode 100644 src/pages/index/index.vue
create mode 100644 src/pages/login/index-bak.vue
create mode 100644 src/pages/login/index.vue
create mode 100644 src/pages/mall/index.vue
create mode 100644 src/pages/profile/index.vue
create mode 100644 src/pages/revenue/index.vue
create mode 100644 src/static/images/README.md
create mode 100644 src/static/images/logo.svg
create mode 100644 src/static/quanxiyun-logo.png
create mode 100644 src/static/share-cover.png
create mode 100644 src/static/styles/common.scss
create mode 100644 src/store/index.js
create mode 100644 src/store/modules/app.js
create mode 100644 src/store/modules/device.js
create mode 100644 src/store/modules/user.js
create mode 100644 src/uni.scss
create mode 100644 src/utils/auth.js
create mode 100644 src/utils/constant.js
create mode 100644 src/utils/order.mjs
create mode 100644 src/utils/request.js
create mode 100644 src/utils/richText.mjs
create mode 100644 src/utils/util.js
create mode 100644 tests/receipt-display.test.mjs
create mode 100644 tests/rich-text-image.test.mjs
create mode 100644 vite.config.js
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b5e8de4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+node_modules/
+unpackage/
+dist/
+.hbuilderx/
+.DS_Store
+*.log
+*.tmp
+.idea/
+.vscode/
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 0000000..3c03207
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+18
diff --git a/.workbuddy/memory/2026-09-15.md b/.workbuddy/memory/2026-09-15.md
new file mode 100644
index 0000000..33b5e02
--- /dev/null
+++ b/.workbuddy/memory/2026-09-15.md
@@ -0,0 +1,18 @@
+# 2026-09-15 工作记录
+
+## npm run dev:h5 报错修复
+
+### 问题
+运行 时报错:
+
+
+### 原因
+nvm 默认 Node.js 版本为 **14.21.3**,但 CLI 依赖的 包使用了 (nullish coalescing assignment)运算符,该语法需要 **Node.js 15+**。
+
+### 解决
+将 nvm 默认版本切换至 Node 18:
+
+切换后 正常运行,H5 开发服务器监听在 **http://localhost:5174**。
+
+### 建议
+- 在项目根目录添加 文件,内容为 ,确保后续协作时自动使用正确版本
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..1dd3653
--- /dev/null
+++ b/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+ 全犀云CDN
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..39a3f68
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,5385 @@
+{
+ "name": "quanxiyun-app",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "@babel/code-frame": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+ "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
+ "requires": {
+ "@babel/highlight": "^7.24.7",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz",
+ "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg=="
+ },
+ "@babel/core": {
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz",
+ "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
+ "requires": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.25.0",
+ "@babel/helper-compilation-targets": "^7.25.2",
+ "@babel/helper-module-transforms": "^7.25.2",
+ "@babel/helpers": "^7.25.0",
+ "@babel/parser": "^7.25.0",
+ "@babel/template": "^7.25.0",
+ "@babel/traverse": "^7.25.2",
+ "@babel/types": "^7.25.2",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz",
+ "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==",
+ "requires": {
+ "@babel/parser": "^7.29.8",
+ "@babel/types": "^7.29.8",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "dependencies": {
+ "@babel/parser": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz",
+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==",
+ "requires": {
+ "@babel/types": "^7.29.8"
+ }
+ },
+ "@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "requires": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ }
+ }
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz",
+ "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.29.7"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ }
+ }
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
+ "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
+ "requires": {
+ "@babel/compat-data": "^7.29.7",
+ "@babel/helper-validator-option": "^7.29.7",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz",
+ "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-member-expression-to-functions": "^7.29.7",
+ "@babel/helper-optimise-call-expression": "^7.29.7",
+ "@babel/helper-replace-supers": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7",
+ "@babel/traverse": "^7.29.7",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/helper-create-regexp-features-plugin": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz",
+ "integrity": "sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "regexpu-core": "^6.3.1",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/helper-define-polyfill-provider": {
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz",
+ "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-compilation-targets": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6",
+ "debug": "^4.4.3",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.22.11"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.3"
+ }
+ },
+ "resolve": {
+ "version": "1.22.12",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz",
+ "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==",
+ "dev": true,
+ "requires": {
+ "es-errors": "^1.3.0",
+ "is-core-module": "^2.16.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-globals": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
+ "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA=="
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz",
+ "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==",
+ "dev": true,
+ "requires": {
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ }
+ }
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
+ "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
+ "requires": {
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "requires": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ }
+ }
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
+ "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz",
+ "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.29.7"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ }
+ }
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz",
+ "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==",
+ "dev": true
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz",
+ "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-wrap-function": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
+ }
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz",
+ "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-member-expression-to-functions": "^7.29.7",
+ "@babel/helper-optimise-call-expression": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
+ }
+ },
+ "@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz",
+ "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==",
+ "dev": true,
+ "requires": {
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ }
+ }
+ }
+ },
+ "@babel/helper-string-parser": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
+ "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
+ "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="
+ },
+ "@babel/helper-validator-option": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
+ "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw=="
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz",
+ "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.29.7",
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ }
+ }
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz",
+ "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
+ "requires": {
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "requires": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ }
+ }
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz",
+ "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
+ "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
+ "requires": {
+ "@babel/types": "^7.25.6"
+ }
+ },
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz",
+ "integrity": "sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
+ }
+ },
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz",
+ "integrity": "sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz",
+ "integrity": "sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz",
+ "integrity": "sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7"
+ }
+ },
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz",
+ "integrity": "sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7",
+ "@babel/plugin-transform-optional-chaining": "^7.29.7"
+ }
+ },
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz",
+ "integrity": "sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
+ }
+ },
+ "@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "dev": true
+ },
+ "@babel/plugin-syntax-import-assertions": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz",
+ "integrity": "sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-syntax-import-attributes": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz",
+ "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz",
+ "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-syntax-typescript": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz",
+ "integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ }
+ },
+ "@babel/plugin-transform-arrow-functions": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz",
+ "integrity": "sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-async-generator-functions": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz",
+ "integrity": "sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-remap-async-to-generator": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz",
+ "integrity": "sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-remap-async-to-generator": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz",
+ "integrity": "sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-block-scoping": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz",
+ "integrity": "sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-class-properties": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz",
+ "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-class-static-block": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz",
+ "integrity": "sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz",
+ "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-globals": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-replace-supers": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz",
+ "integrity": "sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/template": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz",
+ "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz",
+ "integrity": "sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-duplicate-keys": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz",
+ "integrity": "sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz",
+ "integrity": "sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-dynamic-import": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz",
+ "integrity": "sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-explicit-resource-management": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz",
+ "integrity": "sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/plugin-transform-destructuring": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz",
+ "integrity": "sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-export-namespace-from": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz",
+ "integrity": "sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-for-of": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz",
+ "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz",
+ "integrity": "sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-json-strings": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz",
+ "integrity": "sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-literals": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz",
+ "integrity": "sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz",
+ "integrity": "sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz",
+ "integrity": "sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-modules-amd": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz",
+ "integrity": "sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz",
+ "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-modules-systemjs": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz",
+ "integrity": "sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "@babel/traverse": "^7.29.8"
+ }
+ },
+ "@babel/plugin-transform-modules-umd": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz",
+ "integrity": "sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz",
+ "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-new-target": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz",
+ "integrity": "sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz",
+ "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-numeric-separator": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz",
+ "integrity": "sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-object-rest-spread": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz",
+ "integrity": "sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/plugin-transform-destructuring": "^7.29.7",
+ "@babel/plugin-transform-parameters": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz",
+ "integrity": "sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-replace-supers": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz",
+ "integrity": "sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-optional-chaining": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz",
+ "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz",
+ "integrity": "sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-private-methods": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz",
+ "integrity": "sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-private-property-in-object": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz",
+ "integrity": "sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-create-class-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz",
+ "integrity": "sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-regenerator": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz",
+ "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-regexp-modifiers": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz",
+ "integrity": "sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-reserved-words": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz",
+ "integrity": "sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz",
+ "integrity": "sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-spread": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.8.tgz",
+ "integrity": "sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz",
+ "integrity": "sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-template-literals": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz",
+ "integrity": "sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-typeof-symbol": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz",
+ "integrity": "sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-typescript": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz",
+ "integrity": "sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.29.7",
+ "@babel/helper-create-class-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7",
+ "@babel/plugin-syntax-typescript": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-unicode-escapes": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz",
+ "integrity": "sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz",
+ "integrity": "sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz",
+ "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz",
+ "integrity": "sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7"
+ }
+ },
+ "@babel/preset-env": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.7.tgz",
+ "integrity": "sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.29.7",
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-plugin-utils": "^7.29.7",
+ "@babel/helper-validator-option": "^7.29.7",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.29.7",
+ "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.29.7",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.29.7",
+ "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.7",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.29.7",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.29.7",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-import-assertions": "^7.29.7",
+ "@babel/plugin-syntax-import-attributes": "^7.29.7",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.29.7",
+ "@babel/plugin-transform-async-generator-functions": "^7.29.7",
+ "@babel/plugin-transform-async-to-generator": "^7.29.7",
+ "@babel/plugin-transform-block-scoped-functions": "^7.29.7",
+ "@babel/plugin-transform-block-scoping": "^7.29.7",
+ "@babel/plugin-transform-class-properties": "^7.29.7",
+ "@babel/plugin-transform-class-static-block": "^7.29.7",
+ "@babel/plugin-transform-classes": "^7.29.7",
+ "@babel/plugin-transform-computed-properties": "^7.29.7",
+ "@babel/plugin-transform-destructuring": "^7.29.7",
+ "@babel/plugin-transform-dotall-regex": "^7.29.7",
+ "@babel/plugin-transform-duplicate-keys": "^7.29.7",
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.7",
+ "@babel/plugin-transform-dynamic-import": "^7.29.7",
+ "@babel/plugin-transform-explicit-resource-management": "^7.29.7",
+ "@babel/plugin-transform-exponentiation-operator": "^7.29.7",
+ "@babel/plugin-transform-export-namespace-from": "^7.29.7",
+ "@babel/plugin-transform-for-of": "^7.29.7",
+ "@babel/plugin-transform-function-name": "^7.29.7",
+ "@babel/plugin-transform-json-strings": "^7.29.7",
+ "@babel/plugin-transform-literals": "^7.29.7",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.29.7",
+ "@babel/plugin-transform-member-expression-literals": "^7.29.7",
+ "@babel/plugin-transform-modules-amd": "^7.29.7",
+ "@babel/plugin-transform-modules-commonjs": "^7.29.7",
+ "@babel/plugin-transform-modules-systemjs": "^7.29.7",
+ "@babel/plugin-transform-modules-umd": "^7.29.7",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.7",
+ "@babel/plugin-transform-new-target": "^7.29.7",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7",
+ "@babel/plugin-transform-numeric-separator": "^7.29.7",
+ "@babel/plugin-transform-object-rest-spread": "^7.29.7",
+ "@babel/plugin-transform-object-super": "^7.29.7",
+ "@babel/plugin-transform-optional-catch-binding": "^7.29.7",
+ "@babel/plugin-transform-optional-chaining": "^7.29.7",
+ "@babel/plugin-transform-parameters": "^7.29.7",
+ "@babel/plugin-transform-private-methods": "^7.29.7",
+ "@babel/plugin-transform-private-property-in-object": "^7.29.7",
+ "@babel/plugin-transform-property-literals": "^7.29.7",
+ "@babel/plugin-transform-regenerator": "^7.29.7",
+ "@babel/plugin-transform-regexp-modifiers": "^7.29.7",
+ "@babel/plugin-transform-reserved-words": "^7.29.7",
+ "@babel/plugin-transform-shorthand-properties": "^7.29.7",
+ "@babel/plugin-transform-spread": "^7.29.7",
+ "@babel/plugin-transform-sticky-regex": "^7.29.7",
+ "@babel/plugin-transform-template-literals": "^7.29.7",
+ "@babel/plugin-transform-typeof-symbol": "^7.29.7",
+ "@babel/plugin-transform-unicode-escapes": "^7.29.7",
+ "@babel/plugin-transform-unicode-property-regex": "^7.29.7",
+ "@babel/plugin-transform-unicode-regex": "^7.29.7",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.29.7",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.15",
+ "babel-plugin-polyfill-corejs3": "^0.14.0",
+ "babel-plugin-polyfill-regenerator": "^0.6.6",
+ "core-js-compat": "^3.48.0",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz",
+ "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw=="
+ },
+ "@babel/runtime-corejs3": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.29.7.tgz",
+ "integrity": "sha512-ppj9ouYku+RX0ljtgZd+KMO5mkM2bCqg8H2PYAFWnLsHEIKIdRojqbJ2i3eVHrisuxy7nOFCmngTDdWtUCdXUQ==",
+ "requires": {
+ "core-js-pure": "^3.48.0"
+ }
+ },
+ "@babel/template": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
+ "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
+ "requires": {
+ "@babel/code-frame": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz",
+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==",
+ "requires": {
+ "@babel/types": "^7.29.8"
+ }
+ },
+ "@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "requires": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ }
+ },
+ "picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ }
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz",
+ "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==",
+ "requires": {
+ "@babel/code-frame": "^7.29.7",
+ "@babel/generator": "^7.29.8",
+ "@babel/helper-globals": "^7.29.7",
+ "@babel/parser": "^7.29.8",
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.8",
+ "debug": "^4.3.1"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz",
+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==",
+ "requires": {
+ "@babel/types": "^7.29.8"
+ }
+ },
+ "@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "requires": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ }
+ },
+ "picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
+ "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
+ "requires": {
+ "@babel/helper-string-parser": "^7.24.8",
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@dcloudio/types": {
+ "version": "3.4.32",
+ "resolved": "https://registry.npmjs.org/@dcloudio/types/-/types-3.4.32.tgz",
+ "integrity": "sha512-sjhbkjUKxoym8KLEnyeXxCsxvRlBc7Bd/kNSZZRLj+lewS384bDPtq/x5FZ4iG+NrnzDmg3+HyiwV5u5vu2reQ==",
+ "dev": true
+ },
+ "@dcloudio/uni-app": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-app/-/uni-app-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-yMfuGjj52VIgdG1VJ/YpQus3TyVnlc1JYt7rcqGfsSG+pPI7M/kTKSEIsXZ2acEPKH6hHYX/DC3k4wPdwf18Ag==",
+ "requires": {
+ "@dcloudio/uni-cloud": "3.0.0-5010520260709002",
+ "@dcloudio/uni-components": "3.0.0-5010520260709002",
+ "@dcloudio/uni-console": "3.0.0-5010520260709002",
+ "@dcloudio/uni-i18n": "3.0.0-5010520260709002",
+ "@dcloudio/uni-push": "3.0.0-5010520260709002",
+ "@dcloudio/uni-shared": "3.0.0-5010520260709002",
+ "@dcloudio/uni-stat": "3.0.0-5010520260709002",
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "@dcloudio/uni-automator": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-automator/-/uni-automator-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-9wIp9LnBcSzRDVn71LH3N+krXrZXZZDwGBaFUvHR09/J+cKUGSw246gRLwkgxX7U0rgDvD6S2JuZhZor1hlxnw==",
+ "dev": true,
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-5010520260709002",
+ "address": "^1.1.2",
+ "cross-env": "^7.0.3",
+ "debug": "4.3.7",
+ "default-gateway": "^6.0.3",
+ "fs-extra": "10.1.0",
+ "jsonc-parser": "3.3.1",
+ "licia": "1.41.1",
+ "merge": "2.1.1",
+ "qrcode-reader": "1.0.4",
+ "qrcode-terminal": "0.12.0",
+ "ws": "8.18.0"
+ }
+ },
+ "@dcloudio/uni-cli-shared": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-cli-shared/-/uni-cli-shared-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-2zZvEQ5fAZpmWDR+u2BcKnuYNrzoWtHUgUG7ZtGaLwMJSowSOywHZRR/dokKuW89Ll5pFCJC32Q85ECkaq0y5A==",
+ "requires": {
+ "@ampproject/remapping": "^2.1.2",
+ "@babel/code-frame": "7.24.7",
+ "@babel/core": "7.25.2",
+ "@babel/parser": "7.25.6",
+ "@babel/types": "7.25.6",
+ "@dcloudio/uni-i18n": "3.0.0-5010520260709002",
+ "@dcloudio/uni-nvue-styler": "3.0.0-5010520260709002",
+ "@dcloudio/uni-shared": "3.0.0-5010520260709002",
+ "@intlify/core-base": "9.1.9",
+ "@intlify/shared": "9.1.9",
+ "@intlify/vue-devtools": "9.1.9",
+ "@rollup/pluginutils": "5.1.0",
+ "@vue/compiler-core": "3.4.21",
+ "@vue/compiler-dom": "3.4.21",
+ "@vue/compiler-sfc": "3.4.21",
+ "@vue/compiler-ssr": "3.4.21",
+ "@vue/server-renderer": "3.4.21",
+ "@vue/shared": "3.4.21",
+ "adm-zip": "0.5.16",
+ "autoprefixer": "10.4.20",
+ "base64url": "^3.0.1",
+ "chokidar": "3.6.0",
+ "compare-versions": "^3.6.0",
+ "debug": "4.3.7",
+ "entities": "^7.0.0",
+ "es-module-lexer": "1.5.4",
+ "esbuild": "0.20.2",
+ "estree-walker": "2.0.2",
+ "fast-glob": "3.3.3",
+ "fs-extra": "10.1.0",
+ "hash-sum": "2.0.0",
+ "isbinaryfile": "5.0.2",
+ "jsonc-parser": "3.3.1",
+ "lines-and-columns": "^2.0.4",
+ "magic-string": "0.30.11",
+ "merge": "2.1.1",
+ "mime": "3.0.0",
+ "module-alias": "2.2.3",
+ "os-locale-s-fix": "^1.0.8-fix-1",
+ "picocolors": "1.1.0",
+ "postcss-import": "^14.0.2",
+ "postcss-load-config": "^3.1.1",
+ "postcss-modules": "^4.3.0",
+ "postcss-selector-parser": "6.1.2",
+ "resolve": "1.22.8",
+ "source-map-js": "1.2.1",
+ "tapable": "^2.2.0",
+ "tinycolor2": "1.6.0",
+ "unimport": "4.1.1",
+ "unplugin-auto-import": "19.1.0",
+ "xregexp": "5.1.2"
+ }
+ },
+ "@dcloudio/uni-cloud": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-cloud/-/uni-cloud-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-/AGi0uKwEZzL58rPNjHTYPlH0TN5903ldyOJYMYWhwTvDftfAvoVI4rFrAmDTeVxF/eEsTSNr73Sh+gw0qTC2g==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-5010520260709002",
+ "@dcloudio/uni-i18n": "3.0.0-5010520260709002",
+ "@dcloudio/uni-shared": "3.0.0-5010520260709002",
+ "@vue/shared": "3.4.21",
+ "fast-glob": "3.3.3"
+ }
+ },
+ "@dcloudio/uni-components": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-components/-/uni-components-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-Pj8bPRjPwUKvFt3JOj1HDfEyz1Pejnq2lpJ3MWGnWQlATZgESfruWcglGt1+D8KJolrzodyXk8ffSXBEkn6moA==",
+ "requires": {
+ "@dcloudio/uni-cloud": "3.0.0-5010520260709002",
+ "@dcloudio/uni-h5": "3.0.0-5010520260709002",
+ "@dcloudio/uni-i18n": "3.0.0-5010520260709002"
+ }
+ },
+ "@dcloudio/uni-console": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-console/-/uni-console-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-CXpJt726xYdtGSvDvEny5zsQllB1TY23aq6ShSj4CEkdoxz2+6fJxlFBdIHwcO55C5GWlZSqjQfUKC99bslNDw==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-5010520260709002",
+ "fs-extra": "10.1.0"
+ }
+ },
+ "@dcloudio/uni-h5": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5/-/uni-h5-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-a/PXypwJjJUa5iqufJ0PGt7+1H5KjUksHsv9p0r+naYj2pA8+MhIDnrLQJ36rAepgCRwkSV1K3WqxYJxVpdA0Q==",
+ "requires": {
+ "@dcloudio/uni-h5-vite": "3.0.0-5010520260709002",
+ "@dcloudio/uni-h5-vue": "3.0.0-5010520260709002",
+ "@dcloudio/uni-i18n": "3.0.0-5010520260709002",
+ "@dcloudio/uni-shared": "3.0.0-5010520260709002",
+ "@vue/server-renderer": "3.4.21",
+ "@vue/shared": "3.4.21",
+ "debug": "4.3.7",
+ "localstorage-polyfill": "^1.0.1",
+ "postcss-selector-parser": "6.1.2",
+ "safe-area-insets": "1.4.1",
+ "vue-router": "4.4.4",
+ "xmlhttprequest": "^1.8.0"
+ }
+ },
+ "@dcloudio/uni-h5-vite": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5-vite/-/uni-h5-vite-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-jUOvuSsu89TMM/S7ZieqyQI7fBSjDAMSHiH5RwBLFyYgp8ln8BtNtaDrlWBhrz+TXY7lGzRj2842+KM1PAn7VQ==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-5010520260709002",
+ "@dcloudio/uni-shared": "3.0.0-5010520260709002",
+ "@rollup/pluginutils": "5.1.0",
+ "@vitejs/plugin-basic-ssl": "1.2.0",
+ "@vue/compiler-dom": "3.4.21",
+ "@vue/compiler-sfc": "3.4.21",
+ "@vue/server-renderer": "3.4.21",
+ "@vue/shared": "3.4.21",
+ "debug": "4.3.7",
+ "fs-extra": "10.1.0",
+ "mime": "3.0.0",
+ "module-alias": "2.2.3"
+ }
+ },
+ "@dcloudio/uni-h5-vue": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-h5-vue/-/uni-h5-vue-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-lo/mZdF+NgJESVpJC7ec5MiEMbnY8hF9PNBLlvrsloqMiC8epvFcqCsNCe5QW/ZqQD7szS4vuC8lbqWs7rDfFA==",
+ "requires": {
+ "@dcloudio/uni-shared": "3.0.0-5010520260709002",
+ "@vue/server-renderer": "3.4.21"
+ }
+ },
+ "@dcloudio/uni-i18n": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-i18n/-/uni-i18n-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-DktZWotqAOT1dtrGq+IO61LXW1z7FBxqh+Zl71BU2lgWcnjrPNdxJmbDOsDmlM+QuXPCial0VEyzCtJqqkvWjg=="
+ },
+ "@dcloudio/uni-mp-compiler": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-compiler/-/uni-mp-compiler-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-5svWqWCzyUMiSTwz2b6xo+QWcZryLm1C8z3clhbJwQUSGxopLzalUCorA8nJx/4zfG6QcxdKVp/O4GymXw9vbg==",
+ "requires": {
+ "@babel/generator": "7.25.6",
+ "@babel/parser": "7.25.6",
+ "@babel/types": "7.25.6",
+ "@dcloudio/uni-cli-shared": "3.0.0-5010520260709002",
+ "@dcloudio/uni-shared": "3.0.0-5010520260709002",
+ "@vue/compiler-core": "3.4.21",
+ "@vue/compiler-dom": "3.4.21",
+ "@vue/shared": "3.4.21",
+ "estree-walker": "2.0.2"
+ },
+ "dependencies": {
+ "@babel/generator": {
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz",
+ "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==",
+ "requires": {
+ "@babel/types": "^7.25.6",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^2.5.1"
+ }
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
+ }
+ }
+ },
+ "@dcloudio/uni-mp-vite": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-vite/-/uni-mp-vite-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-Sr+omTz9dqxRaXL0MgVJoxCX7s5Iouo0SQL86I55CdCaybACx9cr5y3idNoFkCHXQaycjg3U6ZQts9PeEUVlwg==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-5010520260709002",
+ "@dcloudio/uni-i18n": "3.0.0-5010520260709002",
+ "@dcloudio/uni-mp-compiler": "3.0.0-5010520260709002",
+ "@dcloudio/uni-mp-vue": "3.0.0-5010520260709002",
+ "@dcloudio/uni-shared": "3.0.0-5010520260709002",
+ "@vue/compiler-dom": "3.4.21",
+ "@vue/compiler-sfc": "3.4.21",
+ "@vue/shared": "3.4.21",
+ "debug": "4.3.7"
+ }
+ },
+ "@dcloudio/uni-mp-vue": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-vue/-/uni-mp-vue-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-ZdVsTcWQA6YFFXbQ5lqV1ghk81Nn6/TNCMs1EbTANMXtyCa/yboWrqBt7c+UENwheGQTqIMb+hdeqMx+XF3BQw==",
+ "requires": {
+ "@dcloudio/uni-shared": "3.0.0-5010520260709002",
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "@dcloudio/uni-mp-weixin": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-weixin/-/uni-mp-weixin-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-Nmd8Gst6BnMbhouoc7JWZaYA8xCU9Wp+vu1/QTjn0f0nTUHKLXvQMV/itC9X9CLQiebLUpZ4BcsDaRIPHiFVhg==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-5010520260709002",
+ "@dcloudio/uni-mp-compiler": "3.0.0-5010520260709002",
+ "@dcloudio/uni-mp-vite": "3.0.0-5010520260709002",
+ "@dcloudio/uni-mp-vue": "3.0.0-5010520260709002",
+ "@dcloudio/uni-shared": "3.0.0-5010520260709002",
+ "@vue/shared": "3.4.21",
+ "jimp": "0.10.3",
+ "licia": "1.41.1",
+ "qrcode-reader": "1.0.4",
+ "qrcode-terminal": "0.12.0",
+ "ws": "8.18.0"
+ }
+ },
+ "@dcloudio/uni-nvue-styler": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-nvue-styler/-/uni-nvue-styler-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-83M+uqEpokNqngpb47Qvc70FLp11oBDSMtgwsj2jphjMSyrFq7jPtIEcccQZJk+nJeo0XsJxNR3ZXOCigipOKw==",
+ "requires": {
+ "@vue/shared": "3.4.21",
+ "parse-css-font": "^4.0.0",
+ "postcss": "8.5.6",
+ "tinycolor2": "1.6.0"
+ }
+ },
+ "@dcloudio/uni-push": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-push/-/uni-push-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-WatifhlclLyjpnA8zu0CmKvNa2k2917idUe5sFsHyJyK3VNuvxBxbJ6gJnnMVKJDWTitHwUkoByPUapkdzdEHw==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-5010520260709002"
+ }
+ },
+ "@dcloudio/uni-shared": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-shared/-/uni-shared-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-+LvzWApQTNV+x7exXWNZcwmk6dAUhkpzjMqC8lYUZ4TnduoSq940XxEbPQEBR4ZELvKzhp18nyP3IzkQ97TSow==",
+ "requires": {
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "@dcloudio/uni-stacktracey": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-stacktracey/-/uni-stacktracey-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-DPSKSWS2kfj1vzdiZC4Oulis/UvpHl/fBh0rjaH0CkjhVWqtIcxfOVwHzX0BWcjD8QKdLTIhE35co737YUCLRg==",
+ "dev": true
+ },
+ "@dcloudio/uni-stat": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-stat/-/uni-stat-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-+adkx156iY4/B6JzttO0AJBi4PyJEByz+NlP5si72RSVbIYgrGXUsljuYM2vGgzIaVuyl5isilg8DozNNU57YA==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-5010520260709002",
+ "@dcloudio/uni-shared": "3.0.0-5010520260709002",
+ "debug": "4.3.7"
+ }
+ },
+ "@dcloudio/vite-plugin-uni": {
+ "version": "3.0.0-5010520260709002",
+ "resolved": "https://registry.npmjs.org/@dcloudio/vite-plugin-uni/-/vite-plugin-uni-3.0.0-5010520260709002.tgz",
+ "integrity": "sha512-HynSNsicIj8KJ9OztI3hVcU7inFw/vzQGauqfzlLV+yBNRhAGqxx9WKN/NZiN6HVpOc8xTyICr0x4XlI7r7f7A==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "7.25.2",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-transform-typescript": "^7.23.3",
+ "@dcloudio/uni-cli-shared": "3.0.0-5010520260709002",
+ "@dcloudio/uni-nvue-styler": "3.0.0-5010520260709002",
+ "@dcloudio/uni-shared": "3.0.0-5010520260709002",
+ "@rollup/pluginutils": "5.1.0",
+ "@vitejs/plugin-legacy": "5.3.2",
+ "@vitejs/plugin-vue": "5.2.4",
+ "@vitejs/plugin-vue-jsx": "3.1.0",
+ "@vue/compiler-core": "3.4.21",
+ "@vue/compiler-dom": "3.4.21",
+ "@vue/compiler-sfc": "3.4.21",
+ "@vue/shared": "3.4.21",
+ "cac": "6.7.9",
+ "debug": "4.3.7",
+ "estree-walker": "2.0.2",
+ "express": "4.20.0",
+ "fast-glob": "3.3.3",
+ "fs-extra": "10.1.0",
+ "hash-sum": "2.0.0",
+ "jsonc-parser": "3.3.1",
+ "magic-string": "0.30.11",
+ "picocolors": "1.1.0",
+ "terser": "^5.4.0",
+ "unplugin-auto-import": "19.1.0"
+ }
+ },
+ "@esbuild/aix-ppc64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
+ "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
+ "optional": true
+ },
+ "@esbuild/android-arm": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
+ "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
+ "optional": true
+ },
+ "@esbuild/android-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
+ "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
+ "optional": true
+ },
+ "@esbuild/android-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
+ "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
+ "optional": true
+ },
+ "@esbuild/darwin-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
+ "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
+ "optional": true
+ },
+ "@esbuild/darwin-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
+ "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
+ "optional": true
+ },
+ "@esbuild/freebsd-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
+ "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
+ "optional": true
+ },
+ "@esbuild/freebsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
+ "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
+ "optional": true
+ },
+ "@esbuild/linux-arm": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
+ "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
+ "optional": true
+ },
+ "@esbuild/linux-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
+ "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
+ "optional": true
+ },
+ "@esbuild/linux-ia32": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
+ "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
+ "optional": true
+ },
+ "@esbuild/linux-loong64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
+ "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
+ "optional": true
+ },
+ "@esbuild/linux-mips64el": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
+ "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
+ "optional": true
+ },
+ "@esbuild/linux-ppc64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
+ "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
+ "optional": true
+ },
+ "@esbuild/linux-riscv64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
+ "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
+ "optional": true
+ },
+ "@esbuild/linux-s390x": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
+ "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
+ "optional": true
+ },
+ "@esbuild/linux-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
+ "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
+ "optional": true
+ },
+ "@esbuild/netbsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
+ "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
+ "optional": true
+ },
+ "@esbuild/openbsd-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
+ "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
+ "optional": true
+ },
+ "@esbuild/sunos-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
+ "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
+ "optional": true
+ },
+ "@esbuild/win32-arm64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
+ "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
+ "optional": true
+ },
+ "@esbuild/win32-ia32": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
+ "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
+ "optional": true
+ },
+ "@esbuild/win32-x64": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
+ "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
+ "optional": true
+ },
+ "@intlify/core-base": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.1.9.tgz",
+ "integrity": "sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==",
+ "requires": {
+ "@intlify/devtools-if": "9.1.9",
+ "@intlify/message-compiler": "9.1.9",
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/runtime": "9.1.9",
+ "@intlify/shared": "9.1.9",
+ "@intlify/vue-devtools": "9.1.9"
+ }
+ },
+ "@intlify/devtools-if": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.1.9.tgz",
+ "integrity": "sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==",
+ "requires": {
+ "@intlify/shared": "9.1.9"
+ }
+ },
+ "@intlify/message-compiler": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.1.9.tgz",
+ "integrity": "sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==",
+ "requires": {
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/shared": "9.1.9",
+ "source-map": "0.6.1"
+ }
+ },
+ "@intlify/message-resolver": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.1.9.tgz",
+ "integrity": "sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA=="
+ },
+ "@intlify/runtime": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.1.9.tgz",
+ "integrity": "sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==",
+ "requires": {
+ "@intlify/message-compiler": "9.1.9",
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/shared": "9.1.9"
+ }
+ },
+ "@intlify/shared": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.1.9.tgz",
+ "integrity": "sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw=="
+ },
+ "@intlify/vue-devtools": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.1.9.tgz",
+ "integrity": "sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==",
+ "requires": {
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/runtime": "9.1.9",
+ "@intlify/shared": "9.1.9"
+ }
+ },
+ "@jimp/bmp": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.10.3.tgz",
+ "integrity": "sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "bmp-js": "^0.1.0",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/core": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.10.3.tgz",
+ "integrity": "sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "any-base": "^1.1.0",
+ "buffer": "^5.2.0",
+ "core-js": "^3.4.1",
+ "exif-parser": "^0.1.12",
+ "file-type": "^9.0.0",
+ "load-bmfont": "^1.3.1",
+ "mkdirp": "^0.5.1",
+ "phin": "^2.9.1",
+ "pixelmatch": "^4.0.2",
+ "tinycolor2": "^1.4.1"
+ }
+ },
+ "@jimp/custom": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.10.3.tgz",
+ "integrity": "sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/core": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/gif": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.10.3.tgz",
+ "integrity": "sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "omggif": "^1.0.9"
+ }
+ },
+ "@jimp/jpeg": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.10.3.tgz",
+ "integrity": "sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "jpeg-js": "^0.3.4"
+ }
+ },
+ "@jimp/plugin-blit": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.10.3.tgz",
+ "integrity": "sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-blur": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.10.3.tgz",
+ "integrity": "sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-circle": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.10.3.tgz",
+ "integrity": "sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-color": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.10.3.tgz",
+ "integrity": "sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "tinycolor2": "^1.4.1"
+ }
+ },
+ "@jimp/plugin-contain": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.10.3.tgz",
+ "integrity": "sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-cover": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.10.3.tgz",
+ "integrity": "sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-crop": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.10.3.tgz",
+ "integrity": "sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-displace": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.10.3.tgz",
+ "integrity": "sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-dither": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.10.3.tgz",
+ "integrity": "sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-fisheye": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.10.3.tgz",
+ "integrity": "sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-flip": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.10.3.tgz",
+ "integrity": "sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-gaussian": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.10.3.tgz",
+ "integrity": "sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-invert": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.10.3.tgz",
+ "integrity": "sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-mask": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.10.3.tgz",
+ "integrity": "sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-normalize": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.10.3.tgz",
+ "integrity": "sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-print": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.10.3.tgz",
+ "integrity": "sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "load-bmfont": "^1.4.0"
+ }
+ },
+ "@jimp/plugin-resize": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.10.3.tgz",
+ "integrity": "sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-rotate": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.10.3.tgz",
+ "integrity": "sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-scale": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.10.3.tgz",
+ "integrity": "sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-shadow": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.10.3.tgz",
+ "integrity": "sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugin-threshold": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.10.3.tgz",
+ "integrity": "sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "@jimp/plugins": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.10.3.tgz",
+ "integrity": "sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/plugin-blit": "^0.10.3",
+ "@jimp/plugin-blur": "^0.10.3",
+ "@jimp/plugin-circle": "^0.10.3",
+ "@jimp/plugin-color": "^0.10.3",
+ "@jimp/plugin-contain": "^0.10.3",
+ "@jimp/plugin-cover": "^0.10.3",
+ "@jimp/plugin-crop": "^0.10.3",
+ "@jimp/plugin-displace": "^0.10.3",
+ "@jimp/plugin-dither": "^0.10.3",
+ "@jimp/plugin-fisheye": "^0.10.3",
+ "@jimp/plugin-flip": "^0.10.3",
+ "@jimp/plugin-gaussian": "^0.10.3",
+ "@jimp/plugin-invert": "^0.10.3",
+ "@jimp/plugin-mask": "^0.10.3",
+ "@jimp/plugin-normalize": "^0.10.3",
+ "@jimp/plugin-print": "^0.10.3",
+ "@jimp/plugin-resize": "^0.10.3",
+ "@jimp/plugin-rotate": "^0.10.3",
+ "@jimp/plugin-scale": "^0.10.3",
+ "@jimp/plugin-shadow": "^0.10.3",
+ "@jimp/plugin-threshold": "^0.10.3",
+ "core-js": "^3.4.1",
+ "timm": "^1.6.1"
+ }
+ },
+ "@jimp/png": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.10.3.tgz",
+ "integrity": "sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "pngjs": "^3.3.3"
+ }
+ },
+ "@jimp/tiff": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.10.3.tgz",
+ "integrity": "sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "core-js": "^3.4.1",
+ "utif": "^2.0.1"
+ }
+ },
+ "@jimp/types": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.10.3.tgz",
+ "integrity": "sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/bmp": "^0.10.3",
+ "@jimp/gif": "^0.10.3",
+ "@jimp/jpeg": "^0.10.3",
+ "@jimp/png": "^0.10.3",
+ "@jimp/tiff": "^0.10.3",
+ "core-js": "^3.4.1",
+ "timm": "^1.6.1"
+ }
+ },
+ "@jimp/utils": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.10.3.tgz",
+ "integrity": "sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "core-js": "^3.4.1",
+ "regenerator-runtime": "^0.13.3"
+ }
+ },
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="
+ },
+ "@jridgewell/source-map": {
+ "version": "0.3.11",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
+ "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz",
+ "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw=="
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "requires": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "requires": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@parcel/watcher": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.6.0.tgz",
+ "integrity": "sha512-7FNeNl8NCE7aINx7WXiKQrPYZWC/hvrTsmk6zmxbI7LTXE7hVek/n8AfVgpe2y82zl3w0HvCHN0bVKMBoJcC0w==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "@parcel/watcher-android-arm64": "2.6.0",
+ "@parcel/watcher-darwin-arm64": "2.6.0",
+ "@parcel/watcher-darwin-x64": "2.6.0",
+ "@parcel/watcher-freebsd-x64": "2.6.0",
+ "@parcel/watcher-linux-arm-glibc": "2.6.0",
+ "@parcel/watcher-linux-arm-musl": "2.6.0",
+ "@parcel/watcher-linux-arm64-glibc": "2.6.0",
+ "@parcel/watcher-linux-arm64-musl": "2.6.0",
+ "@parcel/watcher-linux-x64-glibc": "2.6.0",
+ "@parcel/watcher-linux-x64-musl": "2.6.0",
+ "@parcel/watcher-win32-arm64": "2.6.0",
+ "@parcel/watcher-win32-x64": "2.6.0",
+ "detect-libc": "^2.0.3",
+ "is-glob": "^4.0.3",
+ "node-addon-api": "^7.0.0",
+ "picomatch": "^4.0.4"
+ },
+ "dependencies": {
+ "picomatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
+ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "@parcel/watcher-android-arm64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.6.0.tgz",
+ "integrity": "sha512-trgpLSCKRC/huFjXX/Smh+0sWe4+YtKfktIToiMl59ghz7z+qkH6kMvNnUbLyRs9N11t8l4svSCs1+5B3rOAhA==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-darwin-arm64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.6.0.tgz",
+ "integrity": "sha512-Y3QV0gl7Q1zbfueunkWIERICbEojQFCgpyG7YqOGNFLsckXyI1xu9mAIUpKY9QBYzBtSkN8dBPwd3yiAO9ovMw==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-darwin-x64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.6.0.tgz",
+ "integrity": "sha512-Ohv6OpzhUfKYD7Beb8kDvG0jbIxORCYY1JRdZnaBtnjjkJxgD7ZVL0nw2sCYd0yTMKTvz3nnTnOF3cDifK+kvw==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-freebsd-x64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.6.0.tgz",
+ "integrity": "sha512-5HmXvDgs8VK+74jF9y9/2FE3/OnlcKmc56tjmSrEuZjpSZOGL+fvAu+HKJBdPs9uwoP2hE6TlSUpXZ/C5jUFmQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-linux-arm-glibc": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.6.0.tgz",
+ "integrity": "sha512-Ps/hui3A+vMbjdqlqAowK2ZL8+BO8dBjxeWXj6npTBs3jx4wWmbPpaLuqwrQrSqIVMCnpWo238bJ1U37GhQOYg==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-linux-arm-musl": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.6.0.tgz",
+ "integrity": "sha512-9c6AUHgHoG+IY88MRIHupztQiQnrbqHYQjkM2btA+Bf/wQnQMuiD0Wfk1EVv3TlNT3x41uU71rn6E4xh/+zvkw==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.6.0.tgz",
+ "integrity": "sha512-yHRqS2owEXe6Hic9z6Mh1ECsCd+ODVOGvZDyciqRd21+v+o+DnXMOrw50DSpIG2sb8GPEaPPmfeCAWKPJdq46g==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-linux-arm64-musl": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.6.0.tgz",
+ "integrity": "sha512-WhB2e/V7rqdHHWZusBSPuy5Ei8S6lSz6FE5TKKQz5h3a0O+C+mhY7vxU9b/stqvMb8beLnPY82ZrFTLKs+SrKA==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-linux-x64-glibc": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.6.0.tgz",
+ "integrity": "sha512-ulGE6x6Oz6iAwg75T8YQSoguBWasniIbX+QWpaYPcCnDOpdWX3k+4xbEYPZVLxOuoJI+svJJPD3sEj8G7lrQ3A==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-linux-x64-musl": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.6.0.tgz",
+ "integrity": "sha512-tkBYKt7YQrjIJWYDnto2YgO8MRkjlMTSNoRHzsXinBqbLdeOM3L32wPZJvIZxqaLMfSlS/4sUjH/6STVP/XDLw==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-win32-arm64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.6.0.tgz",
+ "integrity": "sha512-gIZAP23jaHjGWasY/TY6yL7NHFClf0Ga7FN+iINvk+KN94rhm94lYZhFsbYFNcA04/onvGD9kKmiJLJB2HbNwQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@parcel/watcher-win32-x64": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.6.0.tgz",
+ "integrity": "sha512-cA+/pXV2YkfxlIcXOQ5fSWqAzzPyD78/x5qbK/I0vUkrlYHA8TIz+MXjAbGouguKVSI4bOmkTSJ1/poVSsgt+A==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/pluginutils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
+ "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+ "requires": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "@rollup/rollup-android-arm-eabi": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz",
+ "integrity": "sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-android-arm64": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz",
+ "integrity": "sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-darwin-arm64": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz",
+ "integrity": "sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-darwin-x64": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz",
+ "integrity": "sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz",
+ "integrity": "sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz",
+ "integrity": "sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz",
+ "integrity": "sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-linux-arm64-musl": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz",
+ "integrity": "sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz",
+ "integrity": "sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz",
+ "integrity": "sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz",
+ "integrity": "sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-linux-x64-gnu": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz",
+ "integrity": "sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-linux-x64-musl": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz",
+ "integrity": "sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz",
+ "integrity": "sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz",
+ "integrity": "sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==",
+ "dev": true,
+ "optional": true
+ },
+ "@rollup/rollup-win32-x64-msvc": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz",
+ "integrity": "sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==",
+ "dev": true,
+ "optional": true
+ },
+ "@types/estree": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="
+ },
+ "@vitejs/plugin-basic-ssl": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.2.0.tgz",
+ "integrity": "sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q=="
+ },
+ "@vitejs/plugin-legacy": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-5.3.2.tgz",
+ "integrity": "sha512-8moCOrIMaZ/Rjln0Q6GsH6s8fAt1JOI3k8nmfX4tXUxE5KAExVctSyOBk+A25GClsdSWqIk2yaUthH3KJ2X4tg==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.23.9",
+ "@babel/preset-env": "^7.23.9",
+ "browserslist": "^4.23.0",
+ "browserslist-to-esbuild": "^2.1.1",
+ "core-js": "^3.36.0",
+ "magic-string": "^0.30.7",
+ "regenerator-runtime": "^0.14.1",
+ "systemjs": "^6.14.3"
+ },
+ "dependencies": {
+ "regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
+ "dev": true
+ }
+ }
+ },
+ "@vitejs/plugin-vue": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz",
+ "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==",
+ "dev": true
+ },
+ "@vitejs/plugin-vue-jsx": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz",
+ "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.23.3",
+ "@babel/plugin-transform-typescript": "^7.23.3",
+ "@vue/babel-plugin-jsx": "^1.1.5"
+ }
+ },
+ "@vue/babel-helper-vue-transform-on": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.5.0.tgz",
+ "integrity": "sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==",
+ "dev": true
+ },
+ "@vue/babel-plugin-jsx": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.5.0.tgz",
+ "integrity": "sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/plugin-syntax-jsx": "^7.27.1",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.0",
+ "@babel/types": "^7.28.2",
+ "@vue/babel-helper-vue-transform-on": "1.5.0",
+ "@vue/babel-plugin-resolve-type": "1.5.0",
+ "@vue/shared": "^3.5.18"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.42.tgz",
+ "integrity": "sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/babel-plugin-resolve-type": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.5.0.tgz",
+ "integrity": "sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/parser": "^7.28.0",
+ "@vue/compiler-sfc": "^3.5.18"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz",
+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.29.8"
+ }
+ },
+ "@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ }
+ },
+ "@vue/compiler-core": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.42.tgz",
+ "integrity": "sha512-2Ye1ilMtKXxl8qZUrQ5j0CdgenFp/HFQmta6rfRyfEsTG69L6Wk+tWuNoHYHMx9E8tF2Slvdg1FuwDvAXdy1LQ==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.29.8",
+ "@vue/shared": "3.5.42",
+ "entities": "^7.0.1",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.42.tgz",
+ "integrity": "sha512-qbhQZEFmycr+ni/qyuccS4sucNN7VAbDfbkvNxWOX2VfgFm90MNs3/UhRNKoPMEIVn0F8gdlYjLPvqxHwHeQOA==",
+ "dev": true,
+ "requires": {
+ "@vue/compiler-core": "3.5.42",
+ "@vue/shared": "3.5.42"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.42.tgz",
+ "integrity": "sha512-fkCAFB4okcAANGMThboWnScp/gzWjU0ZSkVnjTIiplmMDq2uq0tIB3j+xVu4rhv5rvOgBySCysudmbMd6xRRqw==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.29.8",
+ "@vue/compiler-core": "3.5.42",
+ "@vue/compiler-dom": "3.5.42",
+ "@vue/compiler-ssr": "3.5.42",
+ "@vue/shared": "3.5.42",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.21",
+ "postcss": "^8.5.19",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.42.tgz",
+ "integrity": "sha512-xmLk3wLkbizPAiLyomjgFFosf2ys9b5Ghb+oh/k2tnvipNz8OFrQOiTcWCzyK7MpBp9KkyGtfvgfLUivbmuGYA==",
+ "dev": true,
+ "requires": {
+ "@vue/compiler-dom": "3.5.42",
+ "@vue/shared": "3.5.42"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.42.tgz",
+ "integrity": "sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g==",
+ "dev": true
+ },
+ "magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "8.5.28",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz",
+ "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==",
+ "dev": true,
+ "requires": {
+ "nanoid": "^3.3.18",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ }
+ }
+ }
+ },
+ "@vue/compiler-core": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz",
+ "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==",
+ "requires": {
+ "@babel/parser": "^7.23.9",
+ "@vue/shared": "3.4.21",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.0.2"
+ },
+ "dependencies": {
+ "entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
+ }
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz",
+ "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==",
+ "requires": {
+ "@vue/compiler-core": "3.4.21",
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz",
+ "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==",
+ "requires": {
+ "@babel/parser": "^7.23.9",
+ "@vue/compiler-core": "3.4.21",
+ "@vue/compiler-dom": "3.4.21",
+ "@vue/compiler-ssr": "3.4.21",
+ "@vue/shared": "3.4.21",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.7",
+ "postcss": "^8.4.35",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz",
+ "integrity": "sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==",
+ "requires": {
+ "@vue/compiler-dom": "3.4.21",
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "@vue/devtools-api": {
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
+ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
+ },
+ "@vue/reactivity": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.42.tgz",
+ "integrity": "sha512-TzNNfKpb7hDxbQltwAut8VDQA5YP+BuRlxntHUuRjyKwlMvmAPbs3unhCvieijifY6vFfVBwsS7wG/C7uq+bEQ==",
+ "requires": {
+ "@vue/shared": "3.5.42"
+ },
+ "dependencies": {
+ "@vue/shared": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.42.tgz",
+ "integrity": "sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g=="
+ }
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.42.tgz",
+ "integrity": "sha512-9uACtuHs7vJGkm5Bp3xu4xRDLFTIYy5DgxpToVjqGIAhAEKwQfsaLvKINhM6nFVp6bZPRFGdDqd1g52MqKsotA==",
+ "requires": {
+ "@vue/reactivity": "3.5.42",
+ "@vue/shared": "3.5.42"
+ },
+ "dependencies": {
+ "@vue/shared": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.42.tgz",
+ "integrity": "sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g=="
+ }
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.42.tgz",
+ "integrity": "sha512-rsCmhiWLaRxGltLwhlCWyYkFn7WAbKRh0q17eZ1A6Dq6eqc2ACQ61IIryxz0LrsvCzHSilLA9JHovVwM8CNE2g==",
+ "requires": {
+ "@vue/reactivity": "3.5.42",
+ "@vue/runtime-core": "3.5.42",
+ "@vue/shared": "3.5.42",
+ "csstype": "^3.2.3"
+ },
+ "dependencies": {
+ "@vue/shared": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.42.tgz",
+ "integrity": "sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g=="
+ }
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.21.tgz",
+ "integrity": "sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==",
+ "requires": {
+ "@vue/compiler-ssr": "3.4.21",
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz",
+ "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g=="
+ },
+ "accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "requires": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ }
+ },
+ "acorn": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz",
+ "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ=="
+ },
+ "address": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz",
+ "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
+ "dev": true
+ },
+ "adm-zip": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz",
+ "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ=="
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "any-base": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz",
+ "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="
+ },
+ "anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true
+ },
+ "autoprefixer": {
+ "version": "10.4.20",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
+ "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
+ "requires": {
+ "browserslist": "^4.23.3",
+ "caniuse-lite": "^1.0.30001646",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.1",
+ "postcss-value-parser": "^4.2.0"
+ }
+ },
+ "babel-plugin-polyfill-corejs2": {
+ "version": "0.4.17",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz",
+ "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.28.6",
+ "@babel/helper-define-polyfill-provider": "^0.6.8",
+ "semver": "^6.3.1"
+ }
+ },
+ "babel-plugin-polyfill-corejs3": {
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz",
+ "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.6.8",
+ "core-js-compat": "^3.48.0"
+ }
+ },
+ "babel-plugin-polyfill-regenerator": {
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz",
+ "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.6.8"
+ }
+ },
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+ },
+ "base64url": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz",
+ "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A=="
+ },
+ "baseline-browser-mapping": {
+ "version": "2.11.23",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.23.tgz",
+ "integrity": "sha512-le521dGVfxM7yRX0EikCoSz+rOK+hHzdDt/E7mG1jOJB/6WAAUuwVroLwaB7ApaUsz5Q0kFlDXLSA9MheUIfRQ=="
+ },
+ "binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="
+ },
+ "bmp-js": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz",
+ "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw=="
+ },
+ "body-parser": {
+ "version": "1.20.3",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
+ "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "dev": true,
+ "requires": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.13.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "dev": true,
+ "requires": {
+ "side-channel": "^1.0.6"
+ }
+ }
+ }
+ },
+ "braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "requires": {
+ "fill-range": "^7.1.1"
+ }
+ },
+ "browserslist": {
+ "version": "4.28.9",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.9.tgz",
+ "integrity": "sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==",
+ "requires": {
+ "baseline-browser-mapping": "^2.11.20",
+ "caniuse-lite": "^1.0.30001810",
+ "electron-to-chromium": "^1.5.420",
+ "node-releases": "^2.0.54",
+ "update-browserslist-db": "^1.3.2"
+ }
+ },
+ "browserslist-to-esbuild": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/browserslist-to-esbuild/-/browserslist-to-esbuild-2.1.1.tgz",
+ "integrity": "sha512-KN+mty6C3e9AN8Z5dI1xeN15ExcRNeISoC3g7V0Kax/MMF9MSoYA2G7lkTTcVUFntiEjkpI0HNgqJC1NjdyNUw==",
+ "dev": true,
+ "requires": {
+ "meow": "^13.0.0"
+ }
+ },
+ "buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "buffer-equal": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
+ "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA=="
+ },
+ "buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true
+ },
+ "cac": {
+ "version": "6.7.9",
+ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.9.tgz",
+ "integrity": "sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==",
+ "dev": true
+ },
+ "call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
+ "requires": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ }
+ },
+ "call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "dev": true,
+ "requires": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ }
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001810",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz",
+ "integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg=="
+ },
+ "centra": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz",
+ "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==",
+ "requires": {
+ "follow-redirects": "^1.15.6"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "requires": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "compare-versions": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
+ "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA=="
+ },
+ "confbox": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
+ "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="
+ },
+ "content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.2.1"
+ }
+ },
+ "content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
+ },
+ "cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "dev": true
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true
+ },
+ "core-js": {
+ "version": "3.50.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.50.0.tgz",
+ "integrity": "sha512-BRWgOLKkFeCgRudR6zrs8p9XJZcE14grzKMMssoYrk6krtuEZ7MTKPIY5RzOnqsEKIR9kst7wNzphttraT+Yqw=="
+ },
+ "core-js-compat": {
+ "version": "3.50.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.50.0.tgz",
+ "integrity": "sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.28.7"
+ }
+ },
+ "core-js-pure": {
+ "version": "3.50.0",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.50.0.tgz",
+ "integrity": "sha512-6GP3Pxz4IKyWjAfa747vIu/jilB5z29JWROLqH/b+pXVcpgh6tM06ZIBwSuglgVqzDYURhOK6oEzTrG0bCHitA=="
+ },
+ "cross-env": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
+ "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.1"
+ }
+ },
+ "cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "css-font-size-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz",
+ "integrity": "sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q=="
+ },
+ "css-font-stretch-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz",
+ "integrity": "sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg=="
+ },
+ "css-font-style-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz",
+ "integrity": "sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg=="
+ },
+ "css-font-weight-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz",
+ "integrity": "sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA=="
+ },
+ "css-list-helpers": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/css-list-helpers/-/css-list-helpers-2.0.0.tgz",
+ "integrity": "sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ=="
+ },
+ "css-system-font-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz",
+ "integrity": "sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA=="
+ },
+ "cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
+ },
+ "csstype": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
+ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="
+ },
+ "debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "requires": {
+ "ms": "^2.1.3"
+ }
+ },
+ "default-gateway": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
+ "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
+ "dev": true,
+ "requires": {
+ "execa": "^5.0.0"
+ }
+ },
+ "depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true
+ },
+ "destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true
+ },
+ "detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "dev": true,
+ "optional": true
+ },
+ "dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
+ },
+ "dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "requires": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true
+ },
+ "electron-to-chromium": {
+ "version": "1.5.428",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.428.tgz",
+ "integrity": "sha512-1JxbaFJj1bRKurj1uY3l4xxpU9kOUAUjcIgApj0qu1Pao5GhoIWI8iL0BeMYJ2njig1hBx0A7eKD9VGjH9wlHw=="
+ },
+ "encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "dev": true
+ },
+ "entities": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
+ "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="
+ },
+ "es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true
+ },
+ "es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true
+ },
+ "es-module-lexer": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz",
+ "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw=="
+ },
+ "es-object-atoms": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
+ "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
+ "dev": true,
+ "requires": {
+ "es-errors": "^1.3.0"
+ }
+ },
+ "esbuild": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
+ "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
+ "requires": {
+ "@esbuild/aix-ppc64": "0.20.2",
+ "@esbuild/android-arm": "0.20.2",
+ "@esbuild/android-arm64": "0.20.2",
+ "@esbuild/android-x64": "0.20.2",
+ "@esbuild/darwin-arm64": "0.20.2",
+ "@esbuild/darwin-x64": "0.20.2",
+ "@esbuild/freebsd-arm64": "0.20.2",
+ "@esbuild/freebsd-x64": "0.20.2",
+ "@esbuild/linux-arm": "0.20.2",
+ "@esbuild/linux-arm64": "0.20.2",
+ "@esbuild/linux-ia32": "0.20.2",
+ "@esbuild/linux-loong64": "0.20.2",
+ "@esbuild/linux-mips64el": "0.20.2",
+ "@esbuild/linux-ppc64": "0.20.2",
+ "@esbuild/linux-riscv64": "0.20.2",
+ "@esbuild/linux-s390x": "0.20.2",
+ "@esbuild/linux-x64": "0.20.2",
+ "@esbuild/netbsd-x64": "0.20.2",
+ "@esbuild/openbsd-x64": "0.20.2",
+ "@esbuild/sunos-x64": "0.20.2",
+ "@esbuild/win32-arm64": "0.20.2",
+ "@esbuild/win32-ia32": "0.20.2",
+ "@esbuild/win32-x64": "0.20.2"
+ }
+ },
+ "escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
+ },
+ "estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true
+ },
+ "execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ }
+ },
+ "exif-parser": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz",
+ "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw=="
+ },
+ "express": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz",
+ "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.3",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.6.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.3",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.10",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.19.0",
+ "serve-static": "1.16.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "exsolve": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.1.1.tgz",
+ "integrity": "sha512-9U/jZUgjnSGyntRr6y5Muu1MJcwFl6kPu7k8qLF0IMNfLqvw0NZ4nnVDq0RVoZ0RvCyumib4Ez3KYrVfilrw+g=="
+ },
+ "fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ }
+ },
+ "fastq": {
+ "version": "1.20.3",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz",
+ "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==",
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "file-type": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz",
+ "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw=="
+ },
+ "fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "follow-redirects": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
+ "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="
+ },
+ "forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "dev": true
+ },
+ "fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ }
+ },
+ "fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
+ },
+ "generic-names": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz",
+ "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==",
+ "requires": {
+ "loader-utils": "^3.2.0"
+ }
+ },
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
+ },
+ "get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
+ "requires": {
+ "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-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
+ "requires": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "global": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
+ "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+ "requires": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
+ }
+ },
+ "gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
+ },
+ "has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true
+ },
+ "hash-sum": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
+ "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg=="
+ },
+ "hasown": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
+ "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
+ "requires": {
+ "function-bind": "^1.1.2"
+ }
+ },
+ "http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "requires": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ }
+ },
+ "human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "icss-replace-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+ "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg=="
+ },
+ "icss-utils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
+ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA=="
+ },
+ "ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+ },
+ "immutable": {
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.9.tgz",
+ "integrity": "sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "invert-kv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz",
+ "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw=="
+ },
+ "ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-core-module": {
+ "version": "2.16.2",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz",
+ "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==",
+ "requires": {
+ "hasown": "^2.0.3"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
+ },
+ "is-function": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz",
+ "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+ },
+ "is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true
+ },
+ "isbinaryfile": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz",
+ "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg=="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "jimp": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.10.3.tgz",
+ "integrity": "sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/custom": "^0.10.3",
+ "@jimp/plugins": "^0.10.3",
+ "@jimp/types": "^0.10.3",
+ "core-js": "^3.4.1",
+ "regenerator-runtime": "^0.13.3"
+ }
+ },
+ "jpeg-js": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz",
+ "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ=="
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="
+ },
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
+ },
+ "jsonc-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ=="
+ },
+ "jsonfile": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz",
+ "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ }
+ },
+ "lcid": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz",
+ "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==",
+ "requires": {
+ "invert-kv": "^3.0.0"
+ }
+ },
+ "licia": {
+ "version": "1.41.1",
+ "resolved": "https://registry.npmjs.org/licia/-/licia-1.41.1.tgz",
+ "integrity": "sha512-XqObV8u1KEMdYWaNK0leRrTwhzKnLQEkhbnuUu7qGNH3zJoN7l9sfvF6PfHstSCuUOmpEP+0SBjRrk0I9uZs8g=="
+ },
+ "lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ=="
+ },
+ "lines-and-columns": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz",
+ "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A=="
+ },
+ "load-bmfont": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz",
+ "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==",
+ "requires": {
+ "buffer-equal": "0.0.1",
+ "mime": "^1.3.4",
+ "parse-bmfont-ascii": "^1.0.3",
+ "parse-bmfont-binary": "^1.0.5",
+ "parse-bmfont-xml": "^1.1.4",
+ "phin": "^3.7.1",
+ "xhr": "^2.0.1",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ },
+ "phin": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz",
+ "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==",
+ "requires": {
+ "centra": "^2.7.0"
+ }
+ }
+ }
+ },
+ "loader-utils": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz",
+ "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg=="
+ },
+ "local-pkg": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.2.1.tgz",
+ "integrity": "sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==",
+ "requires": {
+ "mlly": "^1.7.4",
+ "pkg-types": "^2.3.0",
+ "quansync": "^0.2.11"
+ },
+ "dependencies": {
+ "confbox": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.3.1.tgz",
+ "integrity": "sha512-cKUSoKa8YxFZZSmraVi7onONx3amu77ngK3kGpsYHDH7drPwCRkQE1RYMPlLRrMtnciRj274XNRxcHxnKmDSnA=="
+ },
+ "pkg-types": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.3.tgz",
+ "integrity": "sha512-j/lCFdcppV0JxWpCEITdbDltBxPP6cHT+yNJ6Go2OgoSA9518X847X9z0p6LtA4Nc16+eQzCZjRrWanTGvHJ5w==",
+ "requires": {
+ "confbox": "^0.3.1",
+ "exsolve": "^1.1.1",
+ "pathe": "^2.0.3"
+ }
+ }
+ }
+ },
+ "localstorage-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/localstorage-polyfill/-/localstorage-polyfill-1.0.1.tgz",
+ "integrity": "sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw=="
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
+ },
+ "lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "magic-string": {
+ "version": "0.30.11",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
+ "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.5.0"
+ }
+ },
+ "math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "dev": true
+ },
+ "meow": {
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
+ "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
+ "dev": true
+ },
+ "merge": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz",
+ "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w=="
+ },
+ "merge-descriptors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "dev": true
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "requires": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.52.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "min-document": {
+ "version": "2.19.2",
+ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.2.tgz",
+ "integrity": "sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==",
+ "requires": {
+ "dom-walk": "^0.1.0"
+ }
+ },
+ "minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
+ },
+ "mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "requires": {
+ "minimist": "^1.2.6"
+ }
+ },
+ "mlly": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz",
+ "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==",
+ "requires": {
+ "acorn": "^8.16.0",
+ "pathe": "^2.0.3",
+ "pkg-types": "^1.3.1",
+ "ufo": "^1.6.3"
+ }
+ },
+ "module-alias": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.3.tgz",
+ "integrity": "sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q=="
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "nanoid": {
+ "version": "3.3.19",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz",
+ "integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug=="
+ },
+ "negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true
+ },
+ "node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "dev": true,
+ "optional": true
+ },
+ "node-releases": {
+ "version": "2.0.55",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.55.tgz",
+ "integrity": "sha512-mIrE/Cw9y+9Au6dS5vDKDhQza9YvG6w+ZrS6X+ZzA7yFW/soAeaups4Qzn1bL6g5FVy8WtP79+0j82oPIbqRjQ=="
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+ },
+ "normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="
+ },
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.0.0"
+ }
+ },
+ "object-inspect": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "dev": true
+ },
+ "omggif": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz",
+ "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="
+ },
+ "on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "os-locale-s-fix": {
+ "version": "1.0.8-fix-1",
+ "resolved": "https://registry.npmjs.org/os-locale-s-fix/-/os-locale-s-fix-1.0.8-fix-1.tgz",
+ "integrity": "sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==",
+ "requires": {
+ "lcid": "^3.0.0"
+ }
+ },
+ "pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+ },
+ "parse-bmfont-ascii": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
+ "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA=="
+ },
+ "parse-bmfont-binary": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz",
+ "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA=="
+ },
+ "parse-bmfont-xml": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz",
+ "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==",
+ "requires": {
+ "xml-parse-from-string": "^1.0.0",
+ "xml2js": "^0.5.0"
+ }
+ },
+ "parse-css-font": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-css-font/-/parse-css-font-4.0.0.tgz",
+ "integrity": "sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==",
+ "requires": {
+ "css-font-size-keywords": "^1.0.0",
+ "css-font-stretch-keywords": "^1.0.1",
+ "css-font-style-keywords": "^1.0.1",
+ "css-font-weight-keywords": "^1.0.0",
+ "css-list-helpers": "^2.0.0",
+ "css-system-font-keywords": "^1.0.0",
+ "unquote": "^1.1.1"
+ }
+ },
+ "parse-headers": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz",
+ "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A=="
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "path-to-regexp": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
+ "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
+ "dev": true
+ },
+ "pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="
+ },
+ "phin": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz",
+ "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA=="
+ },
+ "picocolors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
+ "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw=="
+ },
+ "picomatch": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="
+ },
+ "pinia": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.1.tgz",
+ "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==",
+ "requires": {
+ "@vue/devtools-api": "^6.6.3",
+ "vue-demi": "^0.14.10"
+ }
+ },
+ "pixelmatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz",
+ "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==",
+ "requires": {
+ "pngjs": "^3.0.0"
+ }
+ },
+ "pkg-types": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz",
+ "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==",
+ "requires": {
+ "confbox": "^0.1.8",
+ "mlly": "^1.7.4",
+ "pathe": "^2.0.1"
+ }
+ },
+ "pngjs": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+ "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="
+ },
+ "postcss": {
+ "version": "8.5.6",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+ "requires": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ }
+ }
+ },
+ "postcss-import": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
+ "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
+ "requires": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ }
+ },
+ "postcss-load-config": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
+ "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
+ "requires": {
+ "lilconfig": "^2.0.5",
+ "yaml": "^1.10.2"
+ }
+ },
+ "postcss-modules": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz",
+ "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==",
+ "requires": {
+ "generic-names": "^4.0.0",
+ "icss-replace-symbols": "^1.1.0",
+ "lodash.camelcase": "^4.3.0",
+ "postcss-modules-extract-imports": "^3.0.0",
+ "postcss-modules-local-by-default": "^4.0.0",
+ "postcss-modules-scope": "^3.0.0",
+ "postcss-modules-values": "^4.0.0",
+ "string-hash": "^1.1.1"
+ }
+ },
+ "postcss-modules-extract-imports": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
+ "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q=="
+ },
+ "postcss-modules-local-by-default": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz",
+ "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==",
+ "requires": {
+ "icss-utils": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "dependencies": {
+ "postcss-selector-parser": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.6.tgz",
+ "integrity": "sha512-7qASPzhKF2l2KLboRZux8CCTRMdGiV08vWmyKzPz22qZ7ZjQBOeY7rNzNoCLSUiftJ7HUq0GERHmxw/t0dCdMw==",
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ }
+ }
+ },
+ "postcss-modules-scope": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz",
+ "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==",
+ "requires": {
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "dependencies": {
+ "postcss-selector-parser": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.6.tgz",
+ "integrity": "sha512-7qASPzhKF2l2KLboRZux8CCTRMdGiV08vWmyKzPz22qZ7ZjQBOeY7rNzNoCLSUiftJ7HUq0GERHmxw/t0dCdMw==",
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ }
+ }
+ },
+ "postcss-modules-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+ "requires": {
+ "icss-utils": "^5.0.0"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
+ },
+ "proxy-addr": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.8.tgz",
+ "integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==",
+ "dev": true,
+ "requires": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ }
+ },
+ "qrcode-reader": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/qrcode-reader/-/qrcode-reader-1.0.4.tgz",
+ "integrity": "sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ=="
+ },
+ "qrcode-terminal": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz",
+ "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ=="
+ },
+ "qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dev": true,
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ },
+ "quansync": {
+ "version": "0.2.11",
+ "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz",
+ "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="
+ },
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+ },
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true
+ },
+ "raw-body": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "dev": true,
+ "requires": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ }
+ },
+ "read-cache": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.2.tgz",
+ "integrity": "sha512-/peqiBB/n07gQGLsWaHho3WfvUyRscw0gYTsEFMhrIe/nWLkYaf5SbKYjGYqtRV3aPwykJgF2VEMo1ac4bnsGA=="
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true
+ },
+ "regenerate-unicode-properties": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz",
+ "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.2"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+ },
+ "regexpu-core": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz",
+ "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.2.2",
+ "regjsgen": "^0.8.0",
+ "regjsparser": "^0.13.0",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.2.1"
+ }
+ },
+ "regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.13.2",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz",
+ "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==",
+ "dev": true,
+ "requires": {
+ "jsesc": "~3.1.0"
+ }
+ },
+ "resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "requires": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="
+ },
+ "rollup": {
+ "version": "4.14.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.3.tgz",
+ "integrity": "sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==",
+ "dev": true,
+ "requires": {
+ "@rollup/rollup-android-arm-eabi": "4.14.3",
+ "@rollup/rollup-android-arm64": "4.14.3",
+ "@rollup/rollup-darwin-arm64": "4.14.3",
+ "@rollup/rollup-darwin-x64": "4.14.3",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.14.3",
+ "@rollup/rollup-linux-arm-musleabihf": "4.14.3",
+ "@rollup/rollup-linux-arm64-gnu": "4.14.3",
+ "@rollup/rollup-linux-arm64-musl": "4.14.3",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.14.3",
+ "@rollup/rollup-linux-riscv64-gnu": "4.14.3",
+ "@rollup/rollup-linux-s390x-gnu": "4.14.3",
+ "@rollup/rollup-linux-x64-gnu": "4.14.3",
+ "@rollup/rollup-linux-x64-musl": "4.14.3",
+ "@rollup/rollup-win32-arm64-msvc": "4.14.3",
+ "@rollup/rollup-win32-ia32-msvc": "4.14.3",
+ "@rollup/rollup-win32-x64-msvc": "4.14.3",
+ "@types/estree": "1.0.5",
+ "fsevents": "~2.3.2"
+ },
+ "dependencies": {
+ "@types/estree": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
+ "dev": true
+ }
+ }
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "requires": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "safe-area-insets": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/safe-area-insets/-/safe-area-insets-1.4.1.tgz",
+ "integrity": "sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ=="
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "sass": {
+ "version": "1.104.1",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.104.1.tgz",
+ "integrity": "sha512-yDA+1aIG3EHgN4V/BvuhCvu61FF6hEd4e+9DxikUm9U0CAGuvdIZ/UYy7qbOxjhbbWQraoyLlMuzdRGOSV5Bmw==",
+ "dev": true,
+ "requires": {
+ "@parcel/watcher": "^2.4.1",
+ "chokidar": "^5.0.0",
+ "immutable": "^5.1.5",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "dependencies": {
+ "chokidar": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
+ "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
+ "dev": true,
+ "requires": {
+ "readdirp": "^5.0.0"
+ }
+ },
+ "readdirp": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz",
+ "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==",
+ "dev": true
+ }
+ }
+ },
+ "sax": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz",
+ "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q=="
+ },
+ "scule": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz",
+ "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g=="
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
+ },
+ "send": {
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz",
+ "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==",
+ "dev": true,
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true
+ },
+ "send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ }
+ }
+ }
+ },
+ "setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "side-channel": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
+ "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
+ "dev": true,
+ "requires": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.4",
+ "side-channel-list": "^1.0.1",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ }
+ },
+ "side-channel-list": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
+ "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
+ "dev": true,
+ "requires": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.4"
+ }
+ },
+ "side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "dev": true,
+ "requires": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ }
+ },
+ "side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "dev": true,
+ "requires": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ }
+ },
+ "signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="
+ },
+ "source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true
+ },
+ "string-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
+ "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A=="
+ },
+ "strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true
+ },
+ "strip-literal": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz",
+ "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==",
+ "requires": {
+ "js-tokens": "^9.0.1"
+ },
+ "dependencies": {
+ "js-tokens": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
+ "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="
+ }
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
+ },
+ "systemjs": {
+ "version": "6.15.1",
+ "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.15.1.tgz",
+ "integrity": "sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==",
+ "dev": true
+ },
+ "tapable": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
+ "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A=="
+ },
+ "terser": {
+ "version": "5.51.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.51.2.tgz",
+ "integrity": "sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.15.0",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ }
+ },
+ "timm": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz",
+ "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw=="
+ },
+ "tinycolor2": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
+ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "dev": true
+ },
+ "type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dev": true,
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ }
+ },
+ "ufo": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.4.tgz",
+ "integrity": "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA=="
+ },
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
+ "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
+ "dev": true
+ },
+ "unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "dev": true,
+ "requires": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ }
+ },
+ "unicode-match-property-value-ecmascript": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz",
+ "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==",
+ "dev": true
+ },
+ "unicode-property-aliases-ecmascript": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz",
+ "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==",
+ "dev": true
+ },
+ "unimport": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/unimport/-/unimport-4.1.1.tgz",
+ "integrity": "sha512-j9+fijH6aDd05yv1fXlyt7HSxtOWtGtrZeYTVBsSUg57Iuf+Ps2itIZjeyu7bEQ4k0WOgYhHrdW8m/pJgOpl5g==",
+ "requires": {
+ "acorn": "^8.14.0",
+ "escape-string-regexp": "^5.0.0",
+ "estree-walker": "^3.0.3",
+ "fast-glob": "^3.3.3",
+ "local-pkg": "^1.0.0",
+ "magic-string": "^0.30.17",
+ "mlly": "^1.7.4",
+ "pathe": "^2.0.2",
+ "picomatch": "^4.0.2",
+ "pkg-types": "^1.3.1",
+ "scule": "^1.3.0",
+ "strip-literal": "^3.0.0",
+ "unplugin": "^2.1.2",
+ "unplugin-utils": "^0.2.3"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="
+ },
+ "estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "requires": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "picomatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
+ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="
+ }
+ }
+ },
+ "universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true
+ },
+ "unplugin": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz",
+ "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==",
+ "requires": {
+ "@jridgewell/remapping": "^2.3.5",
+ "acorn": "^8.15.0",
+ "picomatch": "^4.0.3",
+ "webpack-virtual-modules": "^0.6.2"
+ },
+ "dependencies": {
+ "picomatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
+ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="
+ }
+ }
+ },
+ "unplugin-auto-import": {
+ "version": "19.1.0",
+ "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-19.1.0.tgz",
+ "integrity": "sha512-B+TGBEBHqY9aR+7YfShfLujETOHstzpV+yaqgy5PkfV0QG7Py+TYMX7vJ9W4SrysHR+UzR+gzcx/nuZjmPeclA==",
+ "requires": {
+ "local-pkg": "^1.0.0",
+ "magic-string": "^0.30.17",
+ "picomatch": "^4.0.2",
+ "unimport": "^4.1.1",
+ "unplugin": "^2.2.0",
+ "unplugin-utils": "^0.2.4"
+ },
+ "dependencies": {
+ "magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "picomatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
+ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="
+ }
+ }
+ },
+ "unplugin-utils": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.2.5.tgz",
+ "integrity": "sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg==",
+ "requires": {
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.3"
+ },
+ "dependencies": {
+ "picomatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
+ "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="
+ }
+ }
+ },
+ "unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg=="
+ },
+ "update-browserslist-db": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.3.tgz",
+ "integrity": "sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==",
+ "requires": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ }
+ }
+ },
+ "utif": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz",
+ "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==",
+ "requires": {
+ "pako": "^1.0.5"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true
+ },
+ "uview-plus": {
+ "version": "3.8.120",
+ "resolved": "https://registry.npmjs.org/uview-plus/-/uview-plus-3.8.120.tgz",
+ "integrity": "sha512-tXIxmHlHwO8uMwBjXWUoNwl5PiEDNaY1fDXMBVz6X78FG8AHaurwFDDo/FvILw+r9Hj2F93JYxzuYyDBZUpebQ=="
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true
+ },
+ "vite": {
+ "version": "5.2.8",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.8.tgz",
+ "integrity": "sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==",
+ "dev": true,
+ "requires": {
+ "esbuild": "^0.20.1",
+ "fsevents": "~2.3.3",
+ "postcss": "^8.4.38",
+ "rollup": "^4.13.0"
+ }
+ },
+ "vue": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.42.tgz",
+ "integrity": "sha512-4RyHQTbQvOPs3MfvUO1Sg0YRrKNnA0mAVtvpd12Tg1fKDN7OHBUl1IqSn8zGJjK9nI3NkNp8cgTpVrSZC5TTcA==",
+ "requires": {
+ "@vue/compiler-dom": "3.5.42",
+ "@vue/compiler-sfc": "3.5.42",
+ "@vue/runtime-dom": "3.5.42",
+ "@vue/server-renderer": "3.5.42",
+ "@vue/shared": "3.5.42"
+ },
+ "dependencies": {
+ "@babel/parser": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz",
+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==",
+ "requires": {
+ "@babel/types": "^7.29.8"
+ }
+ },
+ "@babel/types": {
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "requires": {
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
+ }
+ },
+ "@vue/compiler-core": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.42.tgz",
+ "integrity": "sha512-2Ye1ilMtKXxl8qZUrQ5j0CdgenFp/HFQmta6rfRyfEsTG69L6Wk+tWuNoHYHMx9E8tF2Slvdg1FuwDvAXdy1LQ==",
+ "requires": {
+ "@babel/parser": "^7.29.8",
+ "@vue/shared": "3.5.42",
+ "entities": "^7.0.1",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.42.tgz",
+ "integrity": "sha512-qbhQZEFmycr+ni/qyuccS4sucNN7VAbDfbkvNxWOX2VfgFm90MNs3/UhRNKoPMEIVn0F8gdlYjLPvqxHwHeQOA==",
+ "requires": {
+ "@vue/compiler-core": "3.5.42",
+ "@vue/shared": "3.5.42"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.42.tgz",
+ "integrity": "sha512-fkCAFB4okcAANGMThboWnScp/gzWjU0ZSkVnjTIiplmMDq2uq0tIB3j+xVu4rhv5rvOgBySCysudmbMd6xRRqw==",
+ "requires": {
+ "@babel/parser": "^7.29.8",
+ "@vue/compiler-core": "3.5.42",
+ "@vue/compiler-dom": "3.5.42",
+ "@vue/compiler-ssr": "3.5.42",
+ "@vue/shared": "3.5.42",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.21",
+ "postcss": "^8.5.19",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.42.tgz",
+ "integrity": "sha512-xmLk3wLkbizPAiLyomjgFFosf2ys9b5Ghb+oh/k2tnvipNz8OFrQOiTcWCzyK7MpBp9KkyGtfvgfLUivbmuGYA==",
+ "requires": {
+ "@vue/compiler-dom": "3.5.42",
+ "@vue/shared": "3.5.42"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.42.tgz",
+ "integrity": "sha512-2++5dUyYS4gvo7xQXSECUDhB7TS0aOl5SeVfC5qSq1Jgfhjvegw1zqhwTIR3imZ+QYPJQw9gfcFvXGAjGZ7ajQ==",
+ "requires": {
+ "@vue/compiler-ssr": "3.5.42",
+ "@vue/runtime-dom": "3.5.42",
+ "@vue/shared": "3.5.42"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.5.42",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.42.tgz",
+ "integrity": "sha512-2rPxex1jQf4jvl9MOHl6YaXCPcrNqz/FstMOEh3QWY+/OME9nQTvl9WYeCwhW7AFjaR0SnngZGlp/wkR6rkI6g=="
+ },
+ "magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ },
+ "postcss": {
+ "version": "8.5.28",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz",
+ "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==",
+ "requires": {
+ "nanoid": "^3.3.18",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ }
+ }
+ }
+ },
+ "vue-demi": {
+ "version": "0.14.10",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz",
+ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg=="
+ },
+ "vue-i18n": {
+ "version": "9.14.5",
+ "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.14.5.tgz",
+ "integrity": "sha512-0jQ9Em3ymWngyiIkj0+c/k7WgaPO+TNzjKSNq9BvBQaKJECqn9cd9fL4tkDhB5G1QBskGl9YxxbDAhgbFtpe2g==",
+ "requires": {
+ "@intlify/core-base": "9.14.5",
+ "@intlify/shared": "9.14.5",
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "dependencies": {
+ "@intlify/core-base": {
+ "version": "9.14.5",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.14.5.tgz",
+ "integrity": "sha512-5ah5FqZG4pOoHjkvs8mjtv+gPKYU0zCISaYNjBNNqYiaITxW8ZtVih3GS/oTOqN8d9/mDLyrjD46GBApNxmlsA==",
+ "requires": {
+ "@intlify/message-compiler": "9.14.5",
+ "@intlify/shared": "9.14.5"
+ }
+ },
+ "@intlify/message-compiler": {
+ "version": "9.14.5",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.14.5.tgz",
+ "integrity": "sha512-IHzgEu61/YIpQV5Pc3aRWScDcnFKWvQA9kigcINcCBXN8mbW+vk9SK+lDxA6STzKQsVJxUPg9ACC52pKKo3SVQ==",
+ "requires": {
+ "@intlify/shared": "9.14.5",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "@intlify/shared": {
+ "version": "9.14.5",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.14.5.tgz",
+ "integrity": "sha512-9gB+E53BYuAEMhbCAxVgG38EZrk59sxBtv3jSizNL2hEWlgjBjAw1AwpLHtNaeda12pe6W20OGEa0TwuMSRbyQ=="
+ }
+ }
+ },
+ "vue-router": {
+ "version": "4.4.4",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.4.tgz",
+ "integrity": "sha512-3MlnDqwRwZwCQVbtVfpsU+nrNymNjnXSsQtXName5925NVC1+326VVfYH9vSrA0N13teGEo8z5x7gbRnGjCDiQ==",
+ "requires": {
+ "@vue/devtools-api": "^6.6.4"
+ }
+ },
+ "webpack-virtual-modules": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
+ "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "ws": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="
+ },
+ "xhr": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz",
+ "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==",
+ "requires": {
+ "global": "~4.4.0",
+ "is-function": "^1.0.1",
+ "parse-headers": "^2.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "xml-parse-from-string": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz",
+ "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g=="
+ },
+ "xml2js": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
+ "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
+ "requires": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ }
+ },
+ "xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
+ },
+ "xmlhttprequest": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+ "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA=="
+ },
+ "xregexp": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-5.1.2.tgz",
+ "integrity": "sha512-6hGgEMCGhqCTFEJbqmWrNIPqfpdirdGWkqshu7fFZddmTSfgv5Sn9D2SaKloR79s5VUiUlpwzg3CM3G6D3VIlw==",
+ "requires": {
+ "@babel/runtime-corejs3": "^7.26.9"
+ }
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ },
+ "yaml": {
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz",
+ "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA=="
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..2b9e6e3
--- /dev/null
+++ b/package.json
@@ -0,0 +1,33 @@
+{
+ "name": "quanxiyun-app",
+ "version": "1.0.0",
+ "private": true,
+ "description": "全犀云移动端",
+ "scripts": {
+ "dev:h5": "uni",
+ "dev:mp-weixin": "uni -p mp-weixin",
+ "build:h5": "uni build",
+ "build:mp-weixin": "uni build -p mp-weixin"
+ },
+ "dependencies": {
+ "@dcloudio/uni-app": "3.0.0-5010520260709002",
+ "@dcloudio/uni-components": "3.0.0-5010520260709002",
+ "@dcloudio/uni-h5": "3.0.0-5010520260709002",
+ "@dcloudio/uni-mp-weixin": "3.0.0-5010520260709002",
+ "vue": "^3.4.21",
+ "vue-i18n": "^9.1.9",
+ "pinia": "^2.0.36",
+ "uview-plus": "^3.3.43"
+ },
+ "devDependencies": {
+ "@dcloudio/types": "^3.4.8",
+ "@dcloudio/uni-automator": "3.0.0-5010520260709002",
+ "@dcloudio/uni-cli-shared": "3.0.0-5010520260709002",
+ "@dcloudio/uni-stacktracey": "3.0.0-5010520260709002",
+ "@dcloudio/vite-plugin-uni": "3.0.0-5010520260709002",
+ "@vue/runtime-core": "^3.4.21",
+ "rollup": "4.14.3",
+ "vite": "5.2.8",
+ "sass": "^1.77.6"
+ }
+}
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..28bdcf8
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
diff --git a/src/components/BTopBar.vue b/src/components/BTopBar.vue
new file mode 100644
index 0000000..9ff5c54
--- /dev/null
+++ b/src/components/BTopBar.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/CustomTabBar.vue b/src/components/CustomTabBar.vue
new file mode 100644
index 0000000..f9ce435
--- /dev/null
+++ b/src/components/CustomTabBar.vue
@@ -0,0 +1,163 @@
+
+
+
+
+ {{ item.emoji }}
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
diff --git a/src/components/DeviceCard.vue b/src/components/DeviceCard.vue
new file mode 100644
index 0000000..3d8fce0
--- /dev/null
+++ b/src/components/DeviceCard.vue
@@ -0,0 +1,245 @@
+
+
+
+
+
+
+ {{ device.name || '未命名设备' }}
+ VIP{{ device.vipLevel }}
+ {{ isOwn ? '自有部署' : '平台购买' }}
+
+ {{ statusConfig.label }}
+
+ {{ device.model || '' }}
+
+
+
+
+ {{ device.bandwidth > 0 ? device.bandwidth : '—' }}
+ 带宽 Mbps
+
+
+
+ ¥{{ formatMoney(device.todayRevenue || 0) }}
+ 今日产出
+
+
+ ¥{{ formatMoney(device.totalRevenue || 0) }}
+ 累计积分
+
+
+
+
+
+
+
+
diff --git a/src/components/Empty.vue b/src/components/Empty.vue
new file mode 100644
index 0000000..fb0a22f
--- /dev/null
+++ b/src/components/Empty.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue
new file mode 100644
index 0000000..d51b619
--- /dev/null
+++ b/src/components/NavBar.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/NewsFeed.vue b/src/components/NewsFeed.vue
new file mode 100644
index 0000000..e6b2260
--- /dev/null
+++ b/src/components/NewsFeed.vue
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+
+ {{ item.title }}
+
+ {{ item.category }}
+ {{ item.time }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/OrderCard.vue b/src/components/OrderCard.vue
new file mode 100644
index 0000000..7da9bce
--- /dev/null
+++ b/src/components/OrderCard.vue
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+ {{ order.productName || '--' }}
+ {{ order.spec }}
+ {{ order.createTime || '--' }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/RevenueCard.vue b/src/components/RevenueCard.vue
new file mode 100644
index 0000000..971c8f7
--- /dev/null
+++ b/src/components/RevenueCard.vue
@@ -0,0 +1,102 @@
+
+
+
+ {{ label }}
+
+ ¥{{ formatThousands(value) }}
+
+ {{ trendEmoji }}
+ {{ Math.abs(trend) }}%
+
+
+ {{ sub }}
+
+
+
+
+
+
diff --git a/src/composables/useNavigation.js b/src/composables/useNavigation.js
new file mode 100644
index 0000000..1c93663
--- /dev/null
+++ b/src/composables/useNavigation.js
@@ -0,0 +1,172 @@
+/**
+ * 全局子页面导航工具
+ * 封装 uni.navigateTo / navigateBack,提供统一的子页面跳转和数据传递
+ */
+import { useAppStore } from '@/store/modules/app'
+
+// 路由映射表:sub page name → actual route path
+const ROUTE_MAP = {
+ // 设备模块
+ 'device-detail': '/pages-sub/device/detail',
+ 'device-monitor': '/pages-sub/device/monitor',
+ 'monitor': '/pages-sub/device/monitor',
+ 'device-revenue': '/pages-sub/device/revenue-detail',
+ 'revenue-detail': '/pages-sub/device/revenue-detail',
+ 'device-log': '/pages-sub/device/log',
+ 'log': '/pages-sub/device/log',
+ 'add-own-device': '/pages-sub/device/add-own',
+ 'own-voucher': '/pages-sub/device/own-voucher',
+ 'own-orders': '/pages-sub/device/own-orders',
+ 'own-order-detail': '/pages-sub/device/own-order-detail',
+ 'deploy-guide': '/pages-sub/device/deploy-guide',
+ 'docking-detail': '/pages-sub/device/docking-detail',
+ 'credit-detail': '/pages-sub/device/credit-detail',
+ 'diagnosis': '/pages-sub/device/diagnosis',
+ 'nat-test': '/pages-sub/device/nat-test',
+ 'deploy-progress': '/pages-sub/device/deploy-progress',
+ 'device-info': '/pages-sub/device/device-info',
+
+ // 商城模块
+ 'product-detail': '/pages-sub/mall/product-detail',
+ 'coupon-detail': '/pages-sub/mall/coupon-detail',
+ 'my-coupons': '/pages-sub/mall/my-coupons',
+ 'mall-orders': '/pages-sub/mall/order-list',
+ 'pending-payment': '/pages-sub/mall/pending-payment',
+ 'pending-order-detail': '/pages-sub/mall/pending-order-detail',
+ 'welfare': '/pages-sub/mall/welfare',
+
+ // 收益模块
+ 'points-log': '/pages-sub/revenue/points-log',
+ 'withdraw': '/pages-sub/revenue/withdraw',
+ 'leaderboard': '/pages-sub/revenue/leaderboard',
+ 'revenue-overview': '/pages-sub/revenue/overview',
+ 'calculator': '/pages-sub/revenue/calculator',
+ 'online-reward': '/pages-sub/revenue/online-reward',
+
+ // 用户模块
+ 'user-level': '/pages-sub/user/level',
+ 'level-rules': '/pages-sub/user/level-rules',
+ 'contracts': '/pages-sub/user/contracts',
+ 'contract-preview': '/pages-sub/user/contract-preview',
+ 'tickets': '/pages-sub/user/tickets',
+ 'ticket-detail': '/pages-sub/user/ticket-detail',
+ 'ticket-create': '/pages-sub/user/ticket-create',
+ 'profile-edit': '/pages-sub/user/profile-edit',
+ 'partner-apply': '/pages-sub/user/partner-apply',
+ 'invitation': '/pages-sub/user/invitation',
+ 'user-poster': '/pages-sub/user/poster',
+ 'realname-auth': '/pages-sub/user/realname-auth',
+ 'settings': '/pages-sub/user/settings',
+ 'promotion-center': '/pages-sub/user/promotion-center',
+ 'help-center': '/pages-sub/user/help-center',
+ 'wallet': '/pages-sub/user/wallet',
+
+ // B端推广模块
+ 'b-sub-promo-home': '/pages-sub/b-promotion/promo-home',
+ 'b-sub-leader-promo': '/pages-sub/b-promotion/leader-promo',
+ 'b-team': '/pages/b-team/index',
+ 'b-sub-poster': '/pages-sub/b-promotion/poster',
+ 'b-sub-poster-leader': '/pages-sub/b-promotion/leader-poster',
+ 'b-level': '/pages-sub/b-promotion/b-level',
+ 'b-sub-level': '/pages-sub/b-promotion/b-level',
+
+ // 商务经理推广模块
+ 'b-sub-manager-promo': '/pages-sub/b-promotion/manager-promo',
+ 'b-sub-manager-team': '/pages/b-manager-team/index',
+ 'b-sub-manager-poster': '/pages-sub/b-promotion/manager-poster',
+ 'b-sub-manager-level': '/pages-sub/b-promotion/manager-level',
+ 'b-sub-leader-detail': '/pages-sub/b-promotion/leader-detail',
+
+ // 内容模块
+ 'notifications': '/pages-sub/content/notices',
+ 'news-list': '/pages-sub/content/news-list',
+ 'news-detail': '/pages-sub/content/news-detail',
+ 'notice-detail': '/pages-sub/content/notice-detail',
+ 'docs': '/pages-sub/content/docs',
+ 'doc-detail': '/pages-sub/content/doc-detail',
+ 'software': '/pages-sub/content/software'
+}
+
+/**
+ * 打开子页面
+ * @param {string} name - 子页面标识名,对应 ROUTE_MAP 中的 key
+ * @param {object} params - 传递给子页面的参数(会编码到URL query中)
+ */
+export function openSub(name, params = {}) {
+ const route = ROUTE_MAP[name]
+ if (!route) {
+ console.warn(`[useNavigation] Unknown subpage: ${name}`)
+ uni.showToast({ title: `页面 ${name} 未配置路由`, icon: 'none' })
+ return
+ }
+
+ // 构建URL参数
+ const queryParts = []
+ for (const [key, value] of Object.entries(params)) {
+ if (value !== undefined && value !== null) {
+ queryParts.push(`${key}=${encodeURIComponent(value)}`)
+ }
+ }
+
+ const url = queryParts.length > 0 ? `${route}?${queryParts.join('&')}` : route
+
+ uni.navigateTo({
+ url,
+ animationType: 'slide-in-right',
+ animationDuration: 300,
+ fail: (err) => {
+ console.error(`[useNavigation] Failed to open ${name}:`, err)
+ }
+ })
+}
+
+/**
+ * 关闭当前子页面,返回上一页
+ */
+export function closeSub() {
+ uni.navigateBack({ delta: 1 })
+}
+
+/**
+ * 切换到TabBar页面
+ */
+export function switchTab(tabName) {
+ const tabMap = {
+ home: '/pages/index/index',
+ devices: '/pages/devices/index',
+ revenue: '/pages/revenue/index',
+ mall: '/pages/mall/index',
+ profile: '/pages/profile/index',
+ 'b-home': '/pages/b-home/index',
+ 'b-team': '/pages/b-team/index',
+ 'b-revenue': '/pages/b-revenue/index',
+ 'b-profile': '/pages/b-profile/index',
+ 'b-super-home': '/pages/b-super-home/index',
+ 'b-super-team': '/pages/b-super-team/index',
+ 'b-super-revenue': '/pages/b-super-revenue/index',
+ 'b-super-profile': '/pages/b-super-profile/index',
+ 'b-manager-home': '/pages/b-manager-home/index',
+ 'b-manager-team': '/pages/b-manager-team/index',
+ 'b-manager-revenue': '/pages/b-manager-revenue/index',
+ 'b-manager-profile': '/pages/b-manager-profile/index'
+ }
+ const url = tabMap[tabName]
+ if (!url) return
+ // C端页面在 tabBar.list 中,用 switchTab
+ // B端页面不在 tabBar.list 中,需用 reLaunch
+ if (tabName.startsWith('b-')) {
+ uni.reLaunch({ url })
+ } else {
+ uni.switchTab({ url })
+ }
+}
+
+/**
+ * 从URL参数中解析子页面传入的数据
+ * 在子页面的 onLoad 中使用
+ */
+export function parseSubParams(options) {
+ return options || {}
+}
+
+export { ROUTE_MAP }
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..9435ba8
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,16 @@
+import { createSSRApp } from 'vue'
+import App from './App.vue'
+import uviewPlus from 'uview-plus'
+import { createPinia } from 'pinia'
+
+export function createApp() {
+ const app = createSSRApp(App)
+ const pinia = createPinia()
+
+ app.use(uviewPlus)
+ app.use(pinia)
+
+ return {
+ app
+ }
+}
diff --git a/src/manifest.json b/src/manifest.json
new file mode 100644
index 0000000..622a70e
--- /dev/null
+++ b/src/manifest.json
@@ -0,0 +1,69 @@
+{
+ "name": "全犀云",
+ "appid": "__UNI__QUANXIYUN",
+ "description": "全犀云移动端APP",
+ "versionName": "1.0.0",
+ "versionCode": "100",
+ "transformPx": false,
+ "app-plus": {
+ "usingComponents": true,
+ "nvueStyleCompiler": "uni-app",
+ "compilerVersion": 3,
+ "splashscreen": {
+ "alwaysShowBeforeRender": true,
+ "waiting": true,
+ "autoclose": true,
+ "delay": 0
+ },
+ "modules": {},
+ "distribute": {
+ "android": {
+ "permissions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "minSdkVersion": 21,
+ "targetSdkVersion": 33
+ },
+ "ios": {},
+ "sdkConfigs": {}
+ }
+ },
+ "quickapp": {},
+ "mp-weixin": {
+ "appid": "wx25de044b93c55fa2",
+ "setting": {
+ "urlCheck": false,
+ "es6": true,
+ "postcss": true,
+ "minified": true
+ },
+ "usingComponents": true
+ },
+ "h5": {
+ "title": "全犀云",
+ "router": {
+ "mode": "hash",
+ "base": "./"
+ },
+ "devServer": {
+ "port": 5174,
+ "proxy": {
+ "/api": {
+ "target": "http://127.0.0.1:8000",
+ "changeOrigin": true
+ },
+ "/storage": {
+ "target": "http://127.0.0.1:8000",
+ "changeOrigin": true
+ }
+ }
+ }
+ },
+ "vueVersion": "3"
+}
diff --git a/src/pages-sub/b-promotion/b-level.vue b/src/pages-sub/b-promotion/b-level.vue
new file mode 100644
index 0000000..b8bfd36
--- /dev/null
+++ b/src/pages-sub/b-promotion/b-level.vue
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+
+
+
+
+ ★
+
+ {{ currentLevelName }}
+ {{ isMaxLevel ? `已解锁${currentLevelName}权益,已达到最高等级` : `已解锁${currentLevelName}权益,距离下一等级仅差 ${targetRemain.toLocaleString()} 成长值` }}
+
+
+
+
+ 当前等级权益
+
+
+
+ 💰
+
+ 直接推荐 C 端{{ currentR1 }}% 即时收益
+
+
+
+ 🕐
+
+ 直接推荐 C 端{{ currentR2 }}% 长期激励
+
+
+
+ 🖼️
+
+ 专属推广海报 + 链接
+
+
+
+ 💳
+
+ 基础兑换额度
+
+
+
+
+
+
+
+ {{ isMaxLevel ? '当前等级' : '下个等级' }}
+ {{ displayGrowthValue.toLocaleString() }} / {{ targetThreshold.toLocaleString() }}
+
+
+
+
+ 已达到当前角色的最高等级
+ 还差 {{ targetRemain.toLocaleString() }} 成长值 即可升级,解锁更高推广比例、专属活动优先权等权益
+
+
+
+
+ 所有等级权益
+
+
+ {{ item.badge }}
+
+ {{ item.name }}
+ {{ item.quota }}
+
+
+ ✓
+ ●
+ ○
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/b-promotion/leader-detail.vue b/src/pages-sub/b-promotion/leader-detail.vue
new file mode 100644
index 0000000..934ac23
--- /dev/null
+++ b/src/pages-sub/b-promotion/leader-detail.vue
@@ -0,0 +1,376 @@
+
+
+
+
+
+
+
+
+
+
+ {{ leaderData.name ? leaderData.name.charAt(0) : '团' }}
+
+ {{ leaderData.name || '团长' }}
+ {{ leaderData.isSuper ? '超级团长 · 可查看直接推荐C端 + 直接推荐团长贡献数据' : '普通团长 · 仅可查看直接推荐C端贡献数据' }}
+
+
+ 超级团长
+
+
+
+
+
+ {{ leaderData.cCount || 0 }}
+ 直接推荐C端
+
+
+ {{ leaderData.cDevices || 0 }}
+ 设备(台)
+
+
+ ¥{{ leaderData.cAmount || '0' }}
+ C端总额
+
+
+ {{ leaderData.lCount || 0 }}
+ 直接推荐团长
+
+
+
+
+
+
+ {{ leaderData.isSuper ? '直接推荐C端用户贡献(黄金池)' : '直接推荐C端用户贡献' }}
+ 共 {{ leaderData.cCount || 0 }} 人
+
+
+
+
+ {{ user.avatar }}
+
+ {{ user.name }}
+
+ 设备 {{ user.devices }} 台
+ ·
+ 消费 ¥{{ user.amount }}
+
+
+
+ {{ user.contribution }}
+ 贡献积分
+
+
+
+ 暂无直接推荐C端用户
+
+
+
+
+
+
+ 超级
+ 直接推荐团长贡献
+
+ 共 {{ leaderData.lCount || 0 }} 人
+
+
+
+
+ {{ l.avatar }}
+
+ {{ l.name }}下级团长
+
+ 设备 {{ l.devices }} 台
+ ·
+ 总金额 ¥{{ l.amount }}
+
+
+
+ {{ l.contribution }}
+ 贡献积分
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/b-promotion/leader-poster.vue b/src/pages-sub/b-promotion/leader-poster.vue
new file mode 100644
index 0000000..9568940
--- /dev/null
+++ b/src/pages-sub/b-promotion/leader-poster.vue
@@ -0,0 +1,228 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 邀请团长 加入平台
+
+ 每邀请一位团长获得该团长贡献收益的 5%
+
+ 团长·推广
+ 后台暂未上传海报图片
+
+
+
+ 保存到相册
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/b-promotion/leader-promo.vue b/src/pages-sub/b-promotion/leader-promo.vue
new file mode 100644
index 0000000..2348e8c
--- /dev/null
+++ b/src/pages-sub/b-promotion/leader-promo.vue
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+ ♡
+
+ 推荐好友,获取直接推荐奖励
+
+
+
+
+ 我的推荐码
+ {{ inviteCode }}
+ 复制
+
+
+
+
+
+
+
+ {{ stats.monthInvites }}
+ 本月邀请
+
+
+ {{ stats.totalInvites }}
+ 累计邀请
+
+
+ {{ stats.totalEarnings }}
+ 累计积分
+
+
+
+
+
+
+
+ 🔗
+
+
+ 复制C端邀请链接
+ {{ inviteUrl }}
+
+
+
+
+
+ 🖼️
+
+
+ 生成C端分享海报
+ 一键生成专属分享海报
+
+
+
+
+
+
+
+ 邀请成果
+
+
+
+ 查看/生成专属海报
+
+
+
+
+
+ {{ item.avatar }}
+
+ {{ item.name }}
+ {{ item.meta }}
+
+ {{ item.value }}
+
+
+
+ 暂无推荐记录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/b-promotion/manager-level.vue b/src/pages-sub/b-promotion/manager-level.vue
new file mode 100644
index 0000000..af7300c
--- /dev/null
+++ b/src/pages-sub/b-promotion/manager-level.vue
@@ -0,0 +1,601 @@
+
+
+
+
+
+
+
+
+
+
+ 目前等级
+ 商务经理
+
+
+ ★
+ {{ currentLevelName }}
+
+
+
+
+
+
+ VIP1
+ VIP2
+ VIP3
+ VIP4
+ VIP5
+
+
+ 已累计 {{ currentGrowthValue.toLocaleString() }} / {{ targetThreshold.toLocaleString() }} 成长值
+
+
+
+
+
+
+
+
+ 分成
+ 团长直接推荐C端即时分成 {{ currentR1 }}%
+
+
+ 长期
+ 团长直接推荐C端长期分成 {{ currentR2 }}%
+
+
+ 下级
+ 超级团长的下级分成 {{ currentSuperRatio }}%
+
+
+ 特权
+ 专属商务经理素材中心 + 优先结算
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ¥
+
+
+ 累计成长值 ≥ {{ targetThreshold.toLocaleString() }}
+ 当前 {{ currentGrowthValue.toLocaleString() }} / {{ targetThreshold.toLocaleString() }}(已完成 {{ progressPct }}%)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ VIP1
+ 10,000
+
+
+
+ 2
+ VIP2
+ 30,000
+
+
+
+ 3
+ VIP3
+ 60,000
+
+
+
+ 4
+ VIP4
+ 100,000
+
+
+ 5
+ VIP5
+ 200,000
+
+
+
+
+
+
+
+
+ VIP1
+ 银牌经理(10,000 成长值)
+
+ 团长直接推荐C端即时分成 2% · 长期分成 1% · 基础素材中心
+
+
+
+ VIP2
+ 银牌经理+(30,000 成长值)
+
+ 团长直接推荐C端即时分成 3% · 长期分成 2% · 超级团长下级分成 0.5%
+
+
+
+ VIP3
+ 金牌经理(60,000 成长值)
+ 当前
+
+ 团长直接推荐C端即时分成 5% · 长期分成 3% · 超级团长下级分成 1% · 专属素材中心 + 优先结算
+
+
+
+ VIP4
+ 钻石经理(100,000 成长值)
+
+ 团长直接推荐C端即时分成 7% · 长期分成 4% · 超级团长下级分成 1.5% · 季度激励
+
+
+
+ VIP5
+ 王牌经理(200,000 成长值)
+
+ 团长直接推荐C端即时分成 10% · 长期分成 5% · 超级团长下级分成 2% · 年度奖励 + 战略合作权益
+
+
+
+
+
+ ⚠ 等级调整规则
+ 成长值基于最近30天的有效数据计算
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/b-promotion/manager-poster.vue b/src/pages-sub/b-promotion/manager-poster.vue
new file mode 100644
index 0000000..a86b8af
--- /dev/null
+++ b/src/pages-sub/b-promotion/manager-poster.vue
@@ -0,0 +1,241 @@
+
+
+
+
+
+
+
+
+
+
+
+ 邀请团长 加入我们
+ 每邀请一位团长获得该团长贡献收益的 3%
+ 商务经理·推广
+ 后台暂未上传海报图片
+
+
+
+ 保存到相册
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/b-promotion/manager-promo.vue b/src/pages-sub/b-promotion/manager-promo.vue
new file mode 100644
index 0000000..35a0089
--- /dev/null
+++ b/src/pages-sub/b-promotion/manager-promo.vue
@@ -0,0 +1,488 @@
+
+
+
+
+
+
+
+
+
+ 您是商务经理
+ VIP3 · 金牌经理
+ 仅可邀团长(不支持邀请 C 端用户)
+
+
+ 我的推荐码
+ {{ inviteCode }}
+ 复制
+
+
+
+
+
+
+ 📄
+ 分享激励政策
+
+
+
+ 1
+ 商务经理仅可邀请团长,注册成功即建立推荐关系
+
+
+ 2
+ 获得团长直接推荐C端的 即时奖励分成 + 长期奖励分成
+
+
+ 3
+ 若直接推荐团长后台开放了邀请团长权益(超级团长),您可获得其下级团长的奖励分成
+
+
+ 4
+ 推广关系长期有效,无时间限制
+
+
+ 5
+ 后台运营可调整奖励分成比例和邀请范围
+
+
+
+
+
+
+ 🔗
+ 邀请团长链接
+
+
+ {{ inviteUrl }}
+
+
+ 复制链接
+
+
+
+
+
+
+ 🖼️
+ 邀请团长海报
+
+
+
+ 邀请团长加入我们
+
+
+ 每邀请一位团长,获得该团长直接推荐C端收益的奖励分成
+ 查看/生成海报
+
+
+
+
+
+
+
+
+
+ {{ stats.leaderCount }}
+ 邀请团长
+
+
+ {{ stats.totalCommission }}
+ 累计奖励分成(积分)
+
+
+
+
+
+ {{ item.avatar }}
+
+ {{ item.name }}
+ 注册 {{ item.date }} · 已贡献 {{ item.contribution }}
+
+
+ 超级
+ 已激活
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/b-promotion/poster.vue b/src/pages-sub/b-promotion/poster.vue
new file mode 100644
index 0000000..ed49980
--- /dev/null
+++ b/src/pages-sub/b-promotion/poster.vue
@@ -0,0 +1,228 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 推荐好友加入 一起赚收益
+
+ 邀请C端用户获得好友年度收益的直接推荐奖励
+
+ 团长·推广
+ 后台暂未上传海报图片
+
+
+
+ 保存到相册
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/b-promotion/promo-home.vue b/src/pages-sub/b-promotion/promo-home.vue
new file mode 100644
index 0000000..52de385
--- /dev/null
+++ b/src/pages-sub/b-promotion/promo-home.vue
@@ -0,0 +1,611 @@
+
+
+
+
+
+
+
+
+
+
+ ♡
+
+ 推荐好友与团长,获取双重奖励
+
+ 推荐好友得3%直接推荐奖励 + 邀请团长得5%团队贡献收益
+
+
+
+
+
+ C端推荐码
+ {{ cCode }}
+ 复制
+
+
+ 团长推荐码
+ {{ ldrCode }}
+ 复制
+
+
+
+
+
+
+
+ {{ stats.monthInvites }}
+ 本月邀请
+
+
+ {{ stats.totalInvites }}
+ 累计邀请
+
+
+ {{ stats.totalEarnings }}
+ 累计积分
+
+
+
+
+
+
+ 邀请C端
+ 邀请团长
+
+
+
+
+ 🔗
+
+
+ 复制C端邀请链接
+ {{ cUrl }}
+
+
+
+
+
+ 👥
+
+
+ 复制团长邀请链接
+ {{ ldrUrl }}
+
+
+
+
+
+ 🖼️
+
+
+ 生成C端分享海报
+ 邀请C端用户的海报
+
+
+
+
+
+
+ 🖼️
+
+
+ 生成团长分享海报
+ 邀请团长的海报
+
+
+
+
+
+
+
+ 邀请成果
+
+
+
+
+
+
+
+ {{ item.avatar }}
+
+ {{ item.name }}
+ {{ item.meta }}
+
+ {{ item.value }}
+
+
+
+ 加载中...
+ 暂无推荐记录
+
+ {{ currentRecordState.loading ? '加载中...' : '加载更多' }}
+
+ 已加载全部
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/content/doc-detail.vue b/src/pages-sub/content/doc-detail.vue
new file mode 100644
index 0000000..30420e9
--- /dev/null
+++ b/src/pages-sub/content/doc-detail.vue
@@ -0,0 +1,193 @@
+
+
+
+
+
+
+
+
+ {{ currentDoc.title }}文档列表:
+
+
+
+
+
+
+
+
+
+
+ 暂无文档内容
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/content/docs.vue b/src/pages-sub/content/docs.vue
new file mode 100644
index 0000000..9ec4126
--- /dev/null
+++ b/src/pages-sub/content/docs.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ doc.icon }}
+
+
+ {{ doc.title }}
+ {{ doc.desc }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/content/news-detail.vue b/src/pages-sub/content/news-detail.vue
new file mode 100644
index 0000000..07de6f7
--- /dev/null
+++ b/src/pages-sub/content/news-detail.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+ {{ article.title }}
+
+
+ {{ article.category }}
+ {{ article.date }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/content/news-list.vue b/src/pages-sub/content/news-list.vue
new file mode 100644
index 0000000..3d17b87
--- /dev/null
+++ b/src/pages-sub/content/news-list.vue
@@ -0,0 +1,200 @@
+
+
+
+
+
+
+
+
+
+ {{ tab }}
+
+
+
+
+
+
+
+
+ {{ news.emoji || '📰' }}
+
+
+ {{ news.title }}
+ {{ news.desc }}
+
+ {{ news.category }}
+ {{ news.date }}
+
+
+
+
+
+ 暂无资讯
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/content/notice-detail.vue b/src/pages-sub/content/notice-detail.vue
new file mode 100644
index 0000000..41b2058
--- /dev/null
+++ b/src/pages-sub/content/notice-detail.vue
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+
+ {{ notice.title }}
+ {{ notice.subtitle }}
+
+ 系统通知
+ {{ notice.date }}
+
+
+
+
+
+ 📋
+ 暂无正文内容
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/content/notices.vue b/src/pages-sub/content/notices.vue
new file mode 100644
index 0000000..4dbd51a
--- /dev/null
+++ b/src/pages-sub/content/notices.vue
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+
+
+
+ {{ tab.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ n.type }}
+ {{ n.time }}
+
+ {{ n.title }}
+ {{ n.desc }}
+
+
+
+
+ 暂无消息
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/content/software.vue b/src/pages-sub/content/software.vue
new file mode 100644
index 0000000..53f8ef2
--- /dev/null
+++ b/src/pages-sub/content/software.vue
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+
+ 客户端下载
+
+
+
+
+ {{ item.platform === 'windows' ? '🪟' : '🐧' }}
+
+
+ {{ item.name }}
+ v{{ item.version }}
+ {{ formatThousands(item.download_count) }} 次下载
+
+
+ 下载
+
+
+
+ 暂无可用客户端
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+ 更新日志
+
+
+
+ {{ log.changelog }}
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/add-own.vue b/src/pages-sub/device/add-own.vue
new file mode 100644
index 0000000..bc3c78a
--- /dev/null
+++ b/src/pages-sub/device/add-own.vue
@@ -0,0 +1,526 @@
+
+
+
+
+
+
+
+
+ 🖥️
+ 自有设备部署
+ 支持用户自主部署服务器、安装软件,通过设备ID和特征码绑定接入平台,独立运行、独立统计收益
+
+
+
+
+
+ 1
+ 填写设备信息
+
+
+
+
+ 设备名称 *
+
+ 规则: 2‑32字符,支持中文、字母、数字、‑_,禁止空格及其它特殊符号
+
+
+
+
+ 设备ID / 型号 *
+
+
+ 📷
+
+ 支持手动输入或拍照识别设备铭牌(设备ID / SN / 型号等)
+
+
+
+
+ 对接方式
+ 对接方式说明(图文/视频)由后台运营编辑下发,包括方案介绍、适用场景、操作步骤等
+ 查看对接机制详情 ›
+
+
+
+
+ 特征码
+
+
+ 扫码
+
+
+ 1. 在设备上安装全犀云Agent
+ 2. Agent自动采集硬件指纹生成特征码
+ 3. 复制特征码到此处录入并验证
+
+ 特征码与设备硬件唯一绑定(CPU+MAC+磁盘序列号),换机即失效
+
+
+
+
+ 设备类型 *
+
+ {{ selectedTypeFee.name }}(¥{{ formatThousands(selectedTypeFee.fee) }})
+ {{ showTypePicker ? '▲' : '▼' }}
+
+
+
+
+
+ {{ t.name }}
+ ¥{{ formatThousands(t.fee) }}
+
+
+ 设备类型由后台统一配置,工程师按您设备实际型号匹配最优方案
+
+
+
+
+ 部署位置
+
+
+
+
+
+
+
+ 2
+ 部署引导
+
+
+ 1
+
+ 下载部署脚本
+ SSH登录设备,执行安装命令
+
+ curl -fsSL https://quanxi.cloud/install | bash
+
+
+
+
+ 2
+
+ 启动Agent服务
+ 安装完成后Agent自动启动,并生成特征码
+
+
+
+ 3
+
+ 验证绑定
+ 将特征码填入 Step 1,点击提交完成绑定
+
+
+
+
+
+
+
+ 3
+ 接口费(已选设备类型)
+
+
+
+
+
+ {{ selectedTypeFee.name }}
+ {{ selectedTypeFee.desc }}
+
+ ¥{{ formatThousands(selectedTypeFee.fee) }}
+
+
+
+
+ 应付接口费
+ ¥{{ formatThousands(selectedTypeFee.fee) }}
+
+ 订单生成后请按公户信息打款并上传回执凭证,平台审核完成后开通部署权限;接口费按设备型号一次性收取,不含硬件费用
+
+
+
+
+ 自有设备权益
+
+ {{ b.label }}
+ {{ b.value }}
+
+
+
+
+
+ 生成订单并公户打款
+ 提交后生成订单,需通过公户打款完成支付
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/credit-detail.vue b/src/pages-sub/device/credit-detail.vue
new file mode 100644
index 0000000..344fc4a
--- /dev/null
+++ b/src/pages-sub/device/credit-detail.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+ 📡 单设备 · 由中控平台计算并推送
+ 📊 全部设备信用分均值 · 点击设备详情查看单设备明细
+
+
+
+
+
+ 当前信用分
+
+
+
+
+ {{ creditScore }}
+ / 100
+
+
+
+ {{ scoreLabel }}
+
+
+
+
+
+ 信用分构成(五维度)
+
+ {{ d.name }} (权重{{ d.weight }}%)
+ {{ d.raw }} → {{ d.score }}分
+
+
+
+ 信用分构成(五维度)
+
+ 查看单设备信用分明细请从设备详情页进入
+
+
+
+
+
+ 信用分等级说明
+
+ {{ g.label }} ({{ g.range }})
+ {{ g.bonus }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/deploy-guide.vue b/src/pages-sub/device/deploy-guide.vue
new file mode 100644
index 0000000..c9f0cde
--- /dev/null
+++ b/src/pages-sub/device/deploy-guide.vue
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+ 1
+ 2
+ 3
+ 4
+
+
+
+
+ 🖥️
+ {{ deviceName }}ID: {{ deviceIdDisplay }} · 待部署
+ 部署中
+
+
+
+
+ ✓步骤1 · 特征码绑定方案B
+
+ ✓{{ c.label }}{{ c.status }}
+
+ 了解双轨对接策略 ›
+
+
+
+
+ ✓步骤2 · 网络环境检测
+
+
+ {{ c.warn ? '!' : '✓' }}{{ c.label }}{{ c.status }}
+
+
+ 环境检测全部通过,可以继续部署
+
+
+
+
+ 3步骤3 · 安装全犀云Agent
+ Linux / macOS 一键安装
+ curl -fsSL https://quanxi.cloud/install | bash复制
+ Windows 下载安装
+ QuanXiAgent_Setup_v2.1.0.exe · 下载
+
+
+
+
+ 4步骤4 · 验证绑定 & 启动收益
+
+ ✓{{ c }}
+
+ ¥106.60/天自有设备 1.1x 加成 · 月产出约 ¥3,198
+ 完成部署,上线收益
+
+
+
+
+ 遇到问题?
+ 技术支持:400-888-0000
+ 在线客服:立即咨询
+ 部署交流群:QQ群 123456789
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/deploy-progress.vue b/src/pages-sub/device/deploy-progress.vue
new file mode 100644
index 0000000..c2ea1c0
--- /dev/null
+++ b/src/pages-sub/device/deploy-progress.vue
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+ 运
+
+
+ 部署进行中
+ 已完成 5/7 个阶段
+
+ 72%
+
+
+
+
+
+
+
+
+
+ 部署阶段
+
+
+
+ ✓
+ {{ i + 1 }}
+
+
+
+
+ {{ phase.desc }}
+ {{ phase.time }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/detail.vue b/src/pages-sub/device/detail.vue
new file mode 100644
index 0000000..7b2b4c3
--- /dev/null
+++ b/src/pages-sub/device/detail.vue
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+ 加载中...
+
+
+
+
+
+
+ {{ device.model }} · {{ device.deviceId }}
+
+
+
+
+ {{ device.bandwidth }}
+ Mbps
+ 当前带宽
+
+
+ ¥{{ device.todayRevenue }}
+ 今日产出
+
+
+
+ ¥{{ device.totalRevenue }}
+ 累计积分
+
+
+
+
+
+
+
+
+
+ 积分明细
+
+
+
+
+ 运行记录
+
+
+
+ 📊
+ 实时监控
+
+
+
+
+ 诊断报告
+
+
+
+
+ NAT检测
+
+
+
+
+ 部署进度
+
+
+
+
+ 设备信息
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/device-info.vue b/src/pages-sub/device/device-info.vue
new file mode 100644
index 0000000..41cc2d7
--- /dev/null
+++ b/src/pages-sub/device/device-info.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+ 基本信息
+ 设备ID{{ info.deviceId }}
+ 型号{{ info.model }}
+ 来源{{ info.source }}
+ 激活时间{{ info.createdAt }}
+ 最后遥测{{ info.lastUpdate }}
+
+
+
+ 运行指标
+ CPU使用率{{ info.cpu }}%
+ 内存使用率{{ info.memory }}%
+ 磁盘类型{{ info.ssd || '--' }}
+ 磁盘使用率{{ info.disk }}%
+ 设备温度{{ info.temperature }}°C
+ 网络延迟{{ info.latency }}ms
+ 丢包率{{ info.packetLoss }}%
+ 在线时长{{ info.onlineHours }}h
+ 当前带宽{{ info.bandwidth }}Mbps
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/diagnosis.vue b/src/pages-sub/device/diagnosis.vue
new file mode 100644
index 0000000..4028a2d
--- /dev/null
+++ b/src/pages-sub/device/diagnosis.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+ 综合健康评分
+ {{ data.score }}
+ {{ data.level }}
+
+
+
+
+
+ 8维度诊断指标
+
+ {{ dim.name }}
+ {{ dim.value }} → {{ dim.level }}
+
+
+
+
+
+ 优化建议
+
+ {{ s.title }}
+ {{ s.body }}
+
+
+
+
+
+ 历史诊断记录
+
+
+
+ {{ h.date }} 诊断报告
+ 综合评分 {{ h.score }} · {{ h.level }}
+
+ {{ h.level }}
+
+
+ 暂无历史诊断记录
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/docking-detail.vue b/src/pages-sub/device/docking-detail.vue
new file mode 100644
index 0000000..f51e7b4
--- /dev/null
+++ b/src/pages-sub/device/docking-detail.vue
@@ -0,0 +1,277 @@
+
+
+
+
+
+
+
+
+ {{ verified ? '✓' : '!' }}
+
+ {{ verified ? '已验证(方案B)' : '待验证' }}
+ Agent本地生成特征码,基于硬件指纹绑定
+
+
+
+
+
+ 硬件指纹信息
+
+
+ 设备名称
+ {{ deviceName }}
+
+
+ 对接方式
+ {{ dockMethod }}
+
+
+ 特征码
+ {{ featureCode }}
+
+
+ 生成方式
+ 本地Agent生成
+
+
+ 绑定时间
+ {{ bindTime }}
+
+
+ 验证状态
+ {{ verified ? '已验证通过' : '未验证' }}
+
+
+
+
+
+
+ 双轨策略
+
+
+
+ 当前使用
+
+
+
+ {{ i + 1 }}
+ {{ s }}
+
+
+
+
+
+
+ 二期上线
+
+
+
+ {{ i + 1 }}
+ {{ s }}
+
+
+
+
+
+
+
+ 对接验证流程
+
+
+ {{ f.step }}
+
+ {{ f.title }}
+ {{ f.desc }}
+
+
+
+
+
+
+
+ 方案对比
+
+
+
+ {{ row.item }}
+ {{ row.planB }}
+ {{ row.planA }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/log.vue b/src/pages-sub/device/log.vue
new file mode 100644
index 0000000..bfa30ac
--- /dev/null
+++ b/src/pages-sub/device/log.vue
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+ 事件时间线
+
+
+ 加载中...
+
+
+
+ 暂无运行记录
+
+
+
+
+
+
+
+
+
+ {{ event.time }}
+ {{ event.content }}
+ {{ event.detail }}
+
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/monitor.vue b/src/pages-sub/device/monitor.vue
new file mode 100644
index 0000000..ac2f569
--- /dev/null
+++ b/src/pages-sub/device/monitor.vue
@@ -0,0 +1,497 @@
+
+
+
+
+
+
+
+
+ 设备状态
+
+
+ {{ data.statusText }}
+
+
+ 在线 {{ data.onlineDays }}天
+ 高峰在线率 98.5%
+ 日均在线 {{ dailyAvg }}h
+
+
+
+
+
+
+ {{ m.label }}
+
+ {{ m.value }}
+ {{ m.unit }}
+
+ {{ m.note }}
+
+
+
+
+
+
+
+
+
+ {{ l }}
+
+
+ {{ bwTooltip.time }}
+ ↑ {{ bwTooltip.up }}
+ ↓ {{ bwTooltip.down }}
+
+
+
+
+
+
+
+
+
+
+ {{ l }}
+
+
+ {{ revTooltip.time }}
+ ¥{{ revTooltip.value }}
+
+
+
+
+
+
+ 网络质量
+
+ {{ r.label }}
+ {{ r.value }}
+
+
+
+
+
+ 硬件状态
+
+ {{ r.label }}
+ {{ r.value }}
+
+
+
+
+
+ 在线统计
+
+ {{ r.label }}
+ {{ r.value }}
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/nat-test.vue b/src/pages-sub/device/nat-test.vue
new file mode 100644
index 0000000..44936e5
--- /dev/null
+++ b/src/pages-sub/device/nat-test.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+ 当前NAT类型
+ {{ data.nat_type.cn }}({{ data.nat_type.en }})
+ 最优秀的NAT类型 · 对所有CDN业务无限制
+ NAT类型较差,建议优化网络以提升收益
+
+
+
+
+ {{ t.cn }}{{ t.cn === data.nat_type.cn ? ' ●' : '' }}
+
+
+
+
+
+
+ NAT类型说明
+
+ {{ t.cn }}
+ {{ t.level }} · 收益加成{{ t.multiplier }}x
+
+
+
+
+
+ NAT优化指南
+
+ ① PPPoE拨号(推荐)
+ 将设备直接通过PPPoE拨号获取公网IP,可达到公网型NAT,最大化收益。联系运营商申请公网IP。
+
+
+ ② DMZ设置
+ 在路由器管理页面将设备内网IP设置为DMZ主机,开放所有端口。适用于无公网IP场景。
+
+
+ ③ UPNP设置
+ 在路由器管理页面开启UPNP功能,设备自动映射端口。适用于大部分家庭和小型企业网络。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/own-order-detail.vue b/src/pages-sub/device/own-order-detail.vue
new file mode 100644
index 0000000..b0d4b88
--- /dev/null
+++ b/src/pages-sub/device/own-order-detail.vue
@@ -0,0 +1,289 @@
+
+
+
+
+
+
+
+
+
+ {{ order.orderId }}
+ {{ statusCfg.label }}
+
+
+ {{ order.deviceName }}
+ {{ order.deviceModel }}
+
+
+ 接口费用
+ ¥{{ formatThousands(order.fee) }}
+
+
+ {{ order.createTime }} 创建
+ {{ order.deviceType }}
+
+
+
+
+
+ 订单进度
+
+
+
+ ✓
+ {{ i + 1 }}
+
+
+
+ {{ step.title }}
+ {{ step.desc }}
+ {{ step.time }}
+
+
+
+
+
+
+
+ 设备信息
+
+
+ {{ item.label }}
+ {{ item.value }}
+
+
+
+
+
+
+ 立即支付
+ 取消订单
+
+
+ 查看部署指南
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/own-orders.vue b/src/pages-sub/device/own-orders.vue
new file mode 100644
index 0000000..674b598
--- /dev/null
+++ b/src/pages-sub/device/own-orders.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+ {{ tab.label }}
+
+
+
+
+
+
+ 📦
+ 暂无订单
+
+
+
+
+
+
+
+ 设备名称
+ {{ order.deviceName }}
+
+
+ 支付方式
+ {{ order.payMethod }}
+
+
+ 金额
+ ¥{{ formatThousands(order.amount) }}
+
+
+ 创建时间
+ {{ order.createTime }}
+
+
+
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/own-voucher.vue b/src/pages-sub/device/own-voucher.vue
new file mode 100644
index 0000000..5996e6d
--- /dev/null
+++ b/src/pages-sub/device/own-voucher.vue
@@ -0,0 +1,396 @@
+
+
+
+
+
+
+
+
+
+ 订单编号
+
+ {{ order.orderNo }}
+ 复制
+
+
+
+
+ 接口费用
+ ¥{{ formatThousands(order.amount) }}
+
+
+ 支付期限
+ 请在 2 小时内完成转账
+
+
+ 订单状态
+ {{ statusCfg.label }}
+
+
+
+
+
+ 对公收款账户
+
+
+ 户名
+ {{ bankInfo.account_name || '--' }}
+
+
+ 开户行
+ {{ bankInfo.bank_name || '--' }}
+
+
+ 账号
+ {{ bankInfo.bank_card || '--' }}
+
+
+ 备注
+ {{ order.orderNo }}
+
+
+
+
+
+
+ 上传支付凭证
+ 支持 JPG / JPEG / PNG 格式,单文件不超过10MB
+
+
+
+
+ +
+ 点击上传凭证文件
+
+
+
+
+ 📄
+
+ {{ uploadedFile.name }}
+ {{ uploadedFile.time || '' }}
+
+ 删除
+
+
+
+ 我已完成打款并上传凭证
+
+
+
+
+
+ 订单进度
+
+
+
+
+
+ {{ step.title }}
+ {{ step.time }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/device/revenue-detail.vue b/src/pages-sub/device/revenue-detail.vue
new file mode 100644
index 0000000..c8b5388
--- /dev/null
+++ b/src/pages-sub/device/revenue-detail.vue
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+ ¥{{ todayRevenue }}
+ 今日产出
+
+
+
+ ¥{{ monthRevenue }}
+ 本月产出
+
+
+
+ ¥{{ totalRevenue }}
+ 累计积分
+
+
+
+
+
+ 积分明细
+
+
+
+ {{ row.date }}
+ {{ row.hours }}h
+ {{ row.bw }}M
+ {{ row.timeFactor }}
+ {{ row.qualityFactor }}
+ ¥{{ row.revenue }}
+
+
+ 暂无收益记录
+
+
+
+
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+ 共 {{ rows.length }} 天收益记录
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/mall/coupon-detail.vue b/src/pages-sub/mall/coupon-detail.vue
new file mode 100644
index 0000000..aaed4fd
--- /dev/null
+++ b/src/pages-sub/mall/coupon-detail.vue
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+ 加载中...
+
+
+
+
+
+ ⚡ 收益加成券
+ {{ coupon.multiplier }}x
+ 设备收益{{ coupon.multiplier }}倍加成 · 限时生效
+
+ {{ coupon.days }}天有效期
+ {{ coupon.days * 24 }}小时加成
+ +{{ ((coupon.multiplierVal - 1) * 100).toFixed(0) }}%收益提升
+
+
+
+
+
+
+ 📊{{ coupon.multiplier }}x加成倍数
+ 📅{{ coupon.days }}天有效期
+ ✅{{ coupon.scope }}适用范围
+ 🔒{{ coupon.limit }}限购规则
+
+
+
+
+
+ ⚡ 加成效果说明
+
+
+ 无加成券¥{{ formatThousands(coupon.baselineM) }}/月
+ →
+ 含加成券¥{{ formatThousands(coupon.boostedM) }}/月
+
+ 以 QH-500 Edge 为例,额外多赚 ¥{{ formatThousands(coupon.benefit) }},设备成本缩短 {{ coupon.paybackShort }} 天
+
+
+
+
+
+ 🖥️ 绑定设备
+ 购买后选择1台设备绑定,加成期间该设备收益按{{ coupon.multiplier }}x计算
+
+
+
+ {{ d.name }}{{ d.model }}
+ ¥{{ d.daily }} → ¥{{ d.dailyBoosted }}/天
+
+
+
+
+
+
+ 使用规则
+ · 加成券购买后需在7天内绑定设备,过期失效
+ · 每台设备同时仅可生效一张加成券
+ · 有效期从绑定当日开始计算
+ · 加成期设备下线,加成期顺延
+ · 收益加成在每日0:30结算时生效
+ · 绑定后不可更换设备,解绑后券失效
+
+
+
+
+ {{ coupon.priceText }}
+ {{ coupon.oldPrice }}
+
+
+
+ {{ m.label }}
+
+
+
+
+ 现金部分 ¥{{ coupon.cashPart }} + 积分部分 {{ coupon.pointsPart }}积分
+
+
+
+
+ {{ coupon.points_exchange || 0 }}积分兑换
+ ¥{{ coupon.price || 0 }} 立即购买
+ ¥{{ coupon.price || 0 }} + {{ coupon.points_exchange || 0 }}积分 立即兑换
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/mall/my-coupons.vue b/src/pages-sub/mall/my-coupons.vue
new file mode 100644
index 0000000..4e8bce5
--- /dev/null
+++ b/src/pages-sub/mall/my-coupons.vue
@@ -0,0 +1,222 @@
+
+
+
+
+
+
+
+
+ 可用加成券
+ {{ summary.unused }} 张
+
+ {{ summary.unused }}未使用
+ {{ summary.using }}使用中
+ {{ summary.expired }}已过期
+
+
+
+
+
+
+ {{ t.label }}{{ t.count }}
+
+
+
+
+
+
+
+ {{ c.multiplier }}x
+
+ 收益加成券 {{ c.multiplier }}x
+ {{ c.desc }}
+
+ 未使用
+
+
+
+ {{ c.multiplier }}x加成倍数
+ {{ c.days }}天有效期
+ {{ c.scope }}适用范围
+
+ {{ c.boughtAt }} · 剩余 {{ c.remainTime }}
+
+ 使用规则
+ 去使用
+
+
+
+
+
+
+
+
+
+ {{ c.multiplier }}x
+
+ 收益加成券 {{ c.multiplier }}x
+ 绑定: {{ c.deviceName }}
+
+ 使用中
+
+
+ 🖥️ {{ c.deviceName }} · {{ c.deviceModel }}
+ 日产出 ¥{{ c.dailyEarn }}
+
+ 已使用 {{ c.usedDays }}天剩余 {{ c.remainDays }}天
+
+ 积分明细
+ 解绑设备
+
+
+
+
+
+
+
+
+
+ {{ c.multiplier }}x
+
+ 收益加成券 {{ c.multiplier }}x
+ 已过期 {{ c.expiredAt }}
+
+ 已过期
+
+
+ 曾绑定: {{ c.boundDevice }} · 产生收益 ¥{{ formatThousands(c.generatedRev) }}
+
+
+ 仅显示最近3条过期记录 · 查看全部
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/mall/order-list.vue b/src/pages-sub/mall/order-list.vue
new file mode 100644
index 0000000..05c2e72
--- /dev/null
+++ b/src/pages-sub/mall/order-list.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+ {{ t.label }}
+
+
+
+ {{ o.name }}
+ {{ o.status }}
+
+ 订单号: {{ o.order_no }}
+ ¥{{ formatThousands(o.amount) }}
+ {{ o.pay_method }}
+
+ 暂无订单
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/mall/pending-order-detail.vue b/src/pages-sub/mall/pending-order-detail.vue
new file mode 100644
index 0000000..e16669c
--- /dev/null
+++ b/src/pages-sub/mall/pending-order-detail.vue
@@ -0,0 +1,506 @@
+
+
+
+
+
+
+
+
+
+ {{ toastMsg }}
+
+
+
+
+
+ {{ toastMsg }}
+
+
+
+
+ 加载中...
+
+
+
+
+
+
+
+ {{ statusLabel }}
+
+
+ 请在 2 小时内完成支付
+ {{ countdownText }}
+
+
+
+
+
+ 订单信息
+
+
+ 订单编号
+ {{ orderNo }}
+
+
+ 创建时间
+ {{ createTime }}
+
+
+ 商品名称
+ {{ productName }}
+
+
+ 应付金额
+ {{ amount }}
+
+
+
+
+
+
+ 银行转账信息
+
+
+ 户名
+ {{ bankInfo.account_name }}
+
+
+
+
+ 账号
+ {{ bankInfo.bank_card }}
+
+
+
+
+ 开户行
+ {{ bankInfo.bank_name }}
+
+
+
+
+ 备注
+
+
+
+
+
+
+
+
+
+ 打款回执
+
+ 支持 JPG / JPEG / PNG 格式,大小不超过10MB
+
+
+
+
+ 点击上传回执
+
+
+ 已选择回执,重新选择
+
+
+
+
+ 回执已上传,可点击查看
+
+
+
+ 未上传回执
+
+
+
+
+ 订单进度
+
+
+
+
+
+
+
+ {{ step.title }}
+ {{ step.desc }}
+
+
+
+
+
+
+
+
+
+
+
+ 返回
+
+
+ {{ submitting ? '上传中...' : '上传打款回执' }}
+
+
+ 查看我的订单
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/mall/pending-payment.vue b/src/pages-sub/mall/pending-payment.vue
new file mode 100644
index 0000000..5a298b4
--- /dev/null
+++ b/src/pages-sub/mall/pending-payment.vue
@@ -0,0 +1,270 @@
+
+
+
+
+
+
+
+
+
+ 🖥️
+
+
+ {{ productName }}
+ {{ productSpec }}
+ {{ totalAmount }}
+
+
+
+
+
+ 设备绑定
+
+
+ 绑定设备
+ {{ deviceName }}
+
+
+ 设备编号
+ {{ deviceId }}
+
+
+
+
+
+
+ 费用明细
+
+ {{ item.label }}
+ {{ item.value }}
+
+
+
+ 应付总额
+ {{ totalAmount }}
+
+
+
+
+
+ 支付方式
+
+
+
+ {{ method.emoji }}
+ {{ method.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 应付
+ {{ totalAmount }}
+
+
+ 确认支付
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/mall/product-detail.vue b/src/pages-sub/mall/product-detail.vue
new file mode 100644
index 0000000..4c13bf8
--- /dev/null
+++ b/src/pages-sub/mall/product-detail.vue
@@ -0,0 +1,269 @@
+
+
+
+
+
+
+ 加载中...
+
+
+
+
+
+
+ {{ product.emoji }}
+ {{ product.topBadge }}
+ {{ product.stockBadge }}
+
+
+
+
+
+ {{ t.text }}
+
+ {{ product.name }}
+ {{ product.desc }}
+
+
+
+ ¥{{ formatThousands(product.price) }}
+ 可用 {{ formatThousands(product.pointsUse) }} 积分抵扣
+
+
+
+
+ ¥{{ formatThousands(product.hwPrice) }}硬件费
+ +
+ ¥{{ formatThousands(product.svcPrice) }}服务费
+ =
+ ¥{{ formatThousands(product.price) }}总价
+
+
+
+
+ 📌 服务费说明
+ 前:收益的90%归您,10%平台服务费
+ 后:收益的40%归您,60%平台服务费
+
+
+
+
+
+ 技术参数
+
+ {{ s.label }}
+ {{ s.value }}
+
+
+
+
+
+ 收益预估
+
+
+ ¥{{ product.dailyEarn }}
+ /天
+ 日产出
+
+
+ ¥{{ formatThousands(product.monthlyEarn) }}
+ /月
+ 月产出
+
+
+ {{ product.paybackDays }}
+ 天
+ 设备成本收益周期
+
+
+ 使用积分计算器详细测算 ›
+
+
+
+
+ 购买流程
+
+ 1下单支付
+ 2签署合同
+ 3运输安装
+ 4上线收益
+
+
+
+
+
+
+
+
+ 收益计算
+ 立即购买
+
+
+
+
+
+
+
diff --git a/src/pages-sub/mall/welfare.vue b/src/pages-sub/mall/welfare.vue
new file mode 100644
index 0000000..f2d6f48
--- /dev/null
+++ b/src/pages-sub/mall/welfare.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+ 搜索福利商品
+
+
+
+
+ {{ cat.emoji }}
+ {{ cat.name }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+ {{ item.points }}积分
+ ¥{{ item.price }}
+
+
+
+
+
+
+
+ 为你推荐
+
+
+
+ {{ item.name }}
+ {{ item.points }}积分
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/revenue/calculator.vue b/src/pages-sub/revenue/calculator.vue
new file mode 100644
index 0000000..b7519e7
--- /dev/null
+++ b/src/pages-sub/revenue/calculator.vue
@@ -0,0 +1,658 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ model.name }}
+ {{ model.multiplier }}x 收益系数
+ ¥{{ formatThousands(model.price) }}
+
+
+
+
+
+
+
+
+
+
+
+ 100Mbps
+ 5000Mbps
+
+
+
+
+
+
+
+
+
+ {{ svc.name }}
+ {{ svc.multiplier }}x
+
+
+
+
+
+
+
+
+
+ 省份
+
+
+ {{ selectedProvince || '请选择省份' }}
+
+ ↓
+
+
+
+ 城市
+
+
+ {{ selectedCity || '请选择城市' }}
+
+ ↓
+
+
+
+ 区域系数
+ {{ regionCoefficient.toFixed(2) }}x
+
+
+
+
+
+
+ 费用参数
+
+
+ {{ cost.label }}
+ ¥{{ formatMoney(cost.value) }}
+
+
+ 总计
+ ¥{{ formatCalculatedMoney(totalCost) }}
+
+
+
+
+
+
+
+
+
+ ¥{{ formatCalculatedMoney(dailyEarning) }}
+ /天
+ 日产出参考
+
+
+ ¥{{ formatCalculatedMoney(monthlyEarning) }}
+ /月
+ 月产出参考
+
+
+ ¥{{ formatCalculatedMoney(annualEarning) }}
+ /年
+ 年产出参考
+
+
+ {{ roi }}%
+ 参考产出率
+
+
+
+
+
+
+ 设备成本周期分析
+
+
+ 含残值
+ {{ residualPaybackDays }}天
+ 设备残值按30%计算
+
+
+ 不含残值
+ {{ noResidualPaybackDays }}天
+ 纯收益
+
+
+
+ 含残值可缩短 {{ paybackDiff }}天 设备成本
+
+
+
+
+
+ 加成券效果对比
+
+
+
+ 无券
+ ¥{{ formatCalculatedMoney(monthlyEarning) }}
+
+ VS
+
+ 1.5x加成
+ ¥{{ formatCalculatedMoney(monthlyWithCoupon) }}
+
+
+ 使用加成券每月多收益 ¥{{ formatCalculatedMoney(couponBenefit) }}
+
+
+
+
+
+ 12个月产出趋势
+
+
+
+
+
+ {{ m }}
+
+
+
+
+
+
+
+ 第一年产出明细
+
+
+ {{ item.label }}
+ ¥{{ formatCalculatedMoney(item.value) }}
+
+
+
+
+
+
+
+
+ 前往商城选购
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/revenue/leaderboard.vue b/src/pages-sub/revenue/leaderboard.vue
new file mode 100644
index 0000000..7221e46
--- /dev/null
+++ b/src/pages-sub/revenue/leaderboard.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+ 用户榜
+ 设备榜
+
+
+
+
+
+ {{ t.label }}
+
+
+
+
+
+
+ {{ i + 1 }}
+
+ {{ item.name }}
+
+ ¥{{ formatThousands(item.revenue) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/revenue/online-reward.vue b/src/pages-sub/revenue/online-reward.vue
new file mode 100644
index 0000000..76bf442
--- /dev/null
+++ b/src/pages-sub/revenue/online-reward.vue
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ actualHours }}h
+ 目标 {{ targetHours }}h
+
+
+
+ 还差 {{ diffHours }}h 达标,加油!
+
+
+
+ 已超额完成 {{ Math.abs(diffHours) }}h
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ rule.condition }}
+ {{ rule.reward }}
+
+ 已达成
+
+
+
+
+
+
+ 历史记录
+
+
+
+ {{ record.week }}
+
+
+ 在线 {{ record.hours }}h
+
+
+
+
+
+ {{ record.reward > 0 ? '+' + record.reward : '未达标' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/revenue/overview.vue b/src/pages-sub/revenue/overview.vue
new file mode 100644
index 0000000..f1582bb
--- /dev/null
+++ b/src/pages-sub/revenue/overview.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+ 近30天收益趋势
+
+
+
+
+ {{ d.date }}
+
+
+
+
+
+
+
+
+ {{ item.label }}
+ {{ item.value }}
+ {{ item.trend }}
+
+
+
+
+
+ 收益构成
+
+ {{ item.label }}
+ ¥{{ item.value }}
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/revenue/points-log.vue b/src/pages-sub/revenue/points-log.vue
new file mode 100644
index 0000000..b77d000
--- /dev/null
+++ b/src/pages-sub/revenue/points-log.vue
@@ -0,0 +1,330 @@
+
+
+
+
+
+
+
+
+
+
+ 可用兑换积分
+ ¥{{ withdrawableAmount }}
+ 1积分 = ¥1.00 · 最低兑换 ¥100
+
+
+ 兑换
+
+
+
+
+
+ {{ item.icon }}
+ {{ item.label }}
+
+ {{ item.amount }}
+ {{ item.sub }}
+
+
+
+
+
+
+
+
+
+ ¥{{ statusCard.withdrawable }}
+ 可兑换
+
+
+ ¥{{ statusCard.frozen }}
+ 冻结中
+
+
+ ¥{{ statusCard.withdrawn }}
+ 已兑换
+
+
+ ¥{{ statusCard.gift }}
+ 活动赠送
+
+
+
+
+
+
+
+ {{ t.label }}
+
+
+
+
+
+
+
+
+ {{ item.icon }}
+
+
+ {{ item.title }}
+ {{ item.sub }}
+
+
+ {{ item.amount }}
+ {{ item.status }}
+
+
+
+
+ 暂无相关积分记录
+
+
+
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/revenue/withdraw.vue b/src/pages-sub/revenue/withdraw.vue
new file mode 100644
index 0000000..f958ab2
--- /dev/null
+++ b/src/pages-sub/revenue/withdraw.vue
@@ -0,0 +1,442 @@
+
+
+
+
+
+
+
+
+ 可兑换积分余额
+ ¥{{ formatThousands(balance) }}
+ 1积分 = ¥1.00 · 服务费{{ feeRatePercent }}% · 最低{{ minAmount }}积分起提
+ 全部兑换
+
+
+
+
+
+
+ 兑换金额
+
+ ¥
+
+
+
+ {{ q === 'all' ? '全部' : '¥' + formatThousands(q) }}
+
+ {{ errorMsg }}
+ 当前可兑换积分余额 ¥{{ formatThousands(balance) }},预计1-3个工作日发放
+
+
+
+
+ 收款账户
+
+
+ {{ accountTypes[selectedAccountType] }}
+ ▼
+
+
+
+ {{ walletCard.bank_name }}
+ {{ walletCard.bank_card }}
+ {{ walletCard.account_name }}
+ 修改 ›
+
+
+ 尚未绑定{{ accountTypes[selectedAccountType] }},点击设置 ›
+
+
+
+
+
+
+ 兑换金额
+ ¥{{ formatThousands(Number(withdrawAmount) || 0) }}
+
+
+ 服务费({{ feeRatePercent }}%)
+ -¥{{ formatMoney(calcFee()) }}
+
+
+
+ 实际发放金额
+ ¥{{ formatThousands(calcActual()) }}
+
+
+
+
+
+
+ 确认兑换
+
+
+
+
+
+
+
+
+ -¥{{ formatThousands(record.amount) }}
+ {{ record.time }}
+
+
+ {{ record.statusLabel }}
+
+
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/contract-preview.vue b/src/pages-sub/user/contract-preview.vue
new file mode 100644
index 0000000..6137f55
--- /dev/null
+++ b/src/pages-sub/user/contract-preview.vue
@@ -0,0 +1,246 @@
+
+
+
+
+
+
+
+ {{ contract.title }}
+ 合同编号:{{ contract.number }}
+
+
+
+ 甲方
+ {{ contract.partyA }}
+
+
+ 乙方
+ {{ contract.partyB }}
+
+
+ 签订日期
+ {{ contract.date }}
+
+
+
+
+
+
+ 合同条款
+
+ {{ cl.title }}
+ {{ cl.content }}
+
+
+
+
+
+
+
+ 请仔细阅读合同条款,特别是关于付款方式、违约责任、争议解决等条款。如有疑问,请咨询平台客服或法律顾问后再签署。
+
+
+
+
+
+ 返回
+ 确认签署
+
+
+ ✓
+ 该合同已签署
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/contracts.vue b/src/pages-sub/user/contracts.vue
new file mode 100644
index 0000000..1713b1b
--- /dev/null
+++ b/src/pages-sub/user/contracts.vue
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
+ {{ tab }}
+
+
+
+
+
+
+
+ 合同编号:{{ c.number }}
+
+ {{ c.date }}
+ {{ formatMoney(c.amount) }}元
+
+
+
+
+ 暂无合同
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/help-center.vue b/src/pages-sub/user/help-center.vue
new file mode 100644
index 0000000..a9c7759
--- /dev/null
+++ b/src/pages-sub/user/help-center.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ cat.icon }}
+
+ {{ cat.label }}
+
+
+
+
+
+ 常见问题
+
+
+
+ {{ faq.a }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/invitation.vue b/src/pages-sub/user/invitation.vue
new file mode 100644
index 0000000..1224db5
--- /dev/null
+++ b/src/pages-sub/user/invitation.vue
@@ -0,0 +1,244 @@
+
+
+
+
+
+
+
+
+
+
+
+ 分享链接
+
+ {{ inviteUrl }}
+ 复制
+
+
+
+
+ 🖼
+ 生成海报
+
+
+
+
+
+
+
+
+
+
+
+ {{ s.value }}
+ {{ s.label }}
+
+
+
+
+
+ 推荐记录
+
+ {{ r.name[0] }}
+
+ {{ r.name }}
+ {{ r.time }}
+
+
+ {{ r.statusText }}
+ +{{ formatMoney(r.earnings) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/level-rules.vue b/src/pages-sub/user/level-rules.vue
new file mode 100644
index 0000000..a7c3c48
--- /dev/null
+++ b/src/pages-sub/user/level-rules.vue
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+
+ 📐 活跃度计算公式
+
+ 活跃度 = 自身消费 × 0.4 + 直接推荐C端消费 × 0.2
+
+ 消费指购买服务器、加成券、自有设备接口费等订单金额
+
+
+
+
+ 等级条件 · VIP3 → VIP4
+
+
+
+ 基础条件(必须达成)
+
+ ✓
+
+ 累计积分 ≥ 200,000
+
+ 156,800 / 200,000 (78%)
+
+
+
+
+
+
+ 次要条件(至少满足3项)
+
+
+ {{ c.met ? '✓' : '○' }}
+
+
+ {{ c.name }}
+ {{ c.current }} / {{ c.target }} {{ c.unit }}
+
+ {{ c.met ? '已达标' : '未达标' }}
+
+
+ 当前已满足 3/4 项次要条件 ✓
+
+
+
+
+
+ 📌 等级维持规则
+ VIP3 季度考核,任意满足2项即等级维持:
+ · 季度收益 ≥ ¥15,000
+ · 设备在线率 ≥ 85%
+ · 新增设备 ≥ 1台
+
+
+ ⚠️ 等级调整规则
+ 连续2个评估周期未满足等级维持条件,将自动等级调整至 VIP2。
+ 等级调整后30天内达到等级条件可恢复原等级。
+
+
+
+
+
+ 权益发放方式
+
+
+ ⚡
+ 直接发放户
+ 收益加成 · 直接推荐奖励
+ 自动发放,每日结算
+
+
+ 📋
+ 公示发放
+ 加成券 · 优先工单
+ 每月1日公示,统一发放
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/level.vue b/src/pages-sub/user/level.vue
new file mode 100644
index 0000000..fb36b78
--- /dev/null
+++ b/src/pages-sub/user/level.vue
@@ -0,0 +1,327 @@
+
+
+
+
+
+
+
+
+ {{ currentLevel }}
+ {{ currentLevelName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/partner-apply.vue b/src/pages-sub/user/partner-apply.vue
new file mode 100644
index 0000000..41c04b0
--- /dev/null
+++ b/src/pages-sub/user/partner-apply.vue
@@ -0,0 +1,291 @@
+
+
+
+
+
+
+
+
+
+
+ 角色:{{ roleLabelMap[application.role] || '未知' }}
+ 企业:{{ application.company_name }}
+ 提交时间:{{ application.created_at }}
+
+
+
+
+
+
+ *角色选择
+
+
+ {{ roleLabelMap[form.role] || '请选择角色' }}
+
+
+
+
+
+ *所在省份
+
+
+ {{ selectedProvince || '请选择省份' }}
+
+
+
+
+
+ *所在城市
+
+
+ {{ selectedCity || '请选择城市' }}
+
+
+
+
+
+ *所在区县
+
+
+ {{ selectedDistrict || '请选择区县' }}
+
+
+
+
+ *企业名称
+
+
+
+ *联系电话
+
+
+
+ *申请说明
+
+
+
+
+ 提交申请
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/poster.vue b/src/pages-sub/user/poster.vue
new file mode 100644
index 0000000..976f9c5
--- /dev/null
+++ b/src/pages-sub/user/poster.vue
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+ 推荐好友加入 一起赚收益
+ 邀请C端用户获得好友年度收益的直接推荐奖励
+ {{ userName }}
+ 生成中...
+
+
+
+ 保存到相册
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/profile-edit.vue b/src/pages-sub/user/profile-edit.vue
new file mode 100644
index 0000000..cd7e03e
--- /dev/null
+++ b/src/pages-sub/user/profile-edit.vue
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+
+
+
+ 企业名称
+
+
+
+ 手机号
+
+
+
+ VIP等级
+
+
+
+ 实名认证状态
+
+ {{ authStatus.text }}
+ 去认证
+
+
+
+ 排行榜展示
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/promotion-center.vue b/src/pages-sub/user/promotion-center.vue
new file mode 100644
index 0000000..94d9865
--- /dev/null
+++ b/src/pages-sub/user/promotion-center.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+ 推荐好友获取直接推荐奖励
+ 每邀请一位好友注册并消费,您可获得最高8%的直接推荐收益
+
+
+ 🎉
+
+
+
+
+
+ 我的推荐码
+
+ {{ inviteCode }}
+ 复制
+
+
+ {{ inviteUrl }}
+ 复制链接
+
+
+
+ 🖼
+ 生成海报
+
+
+ 💬
+ 微信分享
+
+
+ 📤
+ 更多
+
+
+
+
+
+
+
+ {{ stats.direct }}
+ 直接推荐人数
+
+
+ {{ stats.team }}
+ 团队人数
+
+
+ {{ stats.total }}
+ 总收益
+
+
+ {{ stats.month }}
+ 本月产出
+
+
+
+
+
+ 推广技巧
+
+ {{ i + 1 }}
+ {{ tip }}
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/realname-auth.vue b/src/pages-sub/user/realname-auth.vue
new file mode 100644
index 0000000..213f433
--- /dev/null
+++ b/src/pages-sub/user/realname-auth.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+ ✓
+
+ 已认证
+ 您的身份信息已通过实名认证
+
+
+
+
+ 身份信息
+
+ 姓名
+ *峰
+
+
+ 证件号码
+ 440************876
+
+
+ 证件类型
+ 中国大陆身份证
+
+
+ 认证时间
+ 2026-03-15 10:30
+
+
+
+
+
+ 人脸识别
+
+ 活体检测
+ 已通过
+
+
+ 识别时间
+ 2026-03-15 10:32
+
+
+
+
+
+ 企业信息
+
+ 企业名称
+ 深圳智算科技有限公司
+
+
+ 统一社会信用代码
+ 914403************
+
+
+ 企业认证
+ 已认证
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/settings.vue b/src/pages-sub/user/settings.vue
new file mode 100644
index 0000000..3b82197
--- /dev/null
+++ b/src/pages-sub/user/settings.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+
+
+
+ 🔒
+ 账号安全
+
+
+
+
+
+ 🔔
+ 通知设置
+
+
+
+
+
+ 🛡
+ 隐私设置
+
+
+
+
+
+ 🗑
+ 清除缓存
+
+
+ {{ cacheSize }}
+
+
+
+
+
+
+
+
+
+ ℹ
+ 当前版本
+
+ v2.1.0
+
+
+
+
+
+
+ 退出登录
+
+
+
+
+
+
diff --git a/src/pages-sub/user/ticket-create.vue b/src/pages-sub/user/ticket-create.vue
new file mode 100644
index 0000000..93548cf
--- /dev/null
+++ b/src/pages-sub/user/ticket-create.vue
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+ 工单类型
+
+
+ {{ form.type || '请选择工单类型' }}
+
+
+
+
+
+ 关联设备
+
+
+ {{ form.device || '请选择设备(可选)' }}
+
+
+
+
+
+ 工单标题
+
+
+
+ 问题描述
+
+
+
+
+
+
+
+ 提交工单
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/ticket-detail.vue b/src/pages-sub/user/ticket-detail.vue
new file mode 100644
index 0000000..9c641ba
--- /dev/null
+++ b/src/pages-sub/user/ticket-detail.vue
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+
+
+ {{ ticket.title }}
+
+
+
+ 工单类型
+ {{ ticket.type }}
+
+
+ 关联设备
+ {{ ticket.device }}
+
+
+ 处理目标
+ {{ ticket.target }}
+
+
+ 处理人
+ {{ ticket.assignee }}
+
+
+ 创建时间
+ {{ ticket.createTime }}
+
+
+
+
+
+
+ 处理日志
+
+
+
+
+
+ {{ log.action }}
+ {{ log.operator }}
+ {{ log.time }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/tickets.vue b/src/pages-sub/user/tickets.vue
new file mode 100644
index 0000000..93eaac3
--- /dev/null
+++ b/src/pages-sub/user/tickets.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+ {{ t.id }}
+ {{ t.statusText }}
+
+ {{ t.title }}
+
+ {{ t.type }}
+ {{ t.time }}
+
+
+
+
+
+
+
+ +
+ 创建工单
+
+
+
+
+
+
+
+
diff --git a/src/pages-sub/user/wallet.vue b/src/pages-sub/user/wallet.vue
new file mode 100644
index 0000000..3432c06
--- /dev/null
+++ b/src/pages-sub/user/wallet.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+ 个人收款账户
+
+ * 开户行
+
+
+
+ * 收款账户号
+
+
+
+ * 持卡人姓名
+
+
+
+
+
+
+ 公户收款账户
+
+ * 开户行
+
+
+
+ * 收款账户号
+
+
+
+ * 公司名称
+
+
+
+
+ 保存
+
+
+
+
+
+
+
diff --git a/src/pages.json b/src/pages.json
new file mode 100644
index 0000000..996a8ea
--- /dev/null
+++ b/src/pages.json
@@ -0,0 +1,270 @@
+{
+ "pages": [
+ {
+ "path": "pages/login/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "登录",
+ "backgroundColor": "#ffffff"
+ }
+ },
+ {
+ "path": "pages/index/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "全犀云",
+ "backgroundColor": "#f5f7fa",
+ }
+ },
+ {
+ "path": "pages/devices/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "我的设备",
+ "backgroundColor": "#f5f7fa",
+ "enablePullDownRefresh": true
+ }
+ },
+ {
+ "path": "pages/revenue/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "收益",
+ "backgroundColor": "#f5f7fa",
+ "enablePullDownRefresh": true
+ }
+ },
+ {
+ "path": "pages/mall/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "商城",
+ "backgroundColor": "#f5f7fa",
+ "enablePullDownRefresh": true
+ }
+ },
+ {
+ "path": "pages/profile/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "我的",
+ "backgroundColor": "#f5f7fa"
+ }
+ },
+ {
+ "path": "pages/b-home/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "普通团长首页",
+ "backgroundColor": "#f5f7fa"
+ }
+ },
+ {
+ "path": "pages/b-team/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "普通团长团队",
+ "backgroundColor": "#f5f7fa"
+ }
+ },
+ {
+ "path": "pages/b-revenue/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "普通团长收益",
+ "backgroundColor": "#f5f7fa"
+ }
+ },
+ {
+ "path": "pages/b-profile/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "普通团长我的",
+ "backgroundColor": "#f5f7fa"
+ }
+ },
+ {
+ "path": "pages/b-super-home/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "超级团长首页",
+ "backgroundColor": "#f5f7fa"
+ }
+ },
+ {
+ "path": "pages/b-super-team/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "超级团长团队",
+ "backgroundColor": "#f5f7fa"
+ }
+ },
+ {
+ "path": "pages/b-super-revenue/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "超级团长收益",
+ "backgroundColor": "#f5f7fa"
+ }
+ },
+ {
+ "path": "pages/b-super-profile/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "超级团长我的",
+ "backgroundColor": "#f5f7fa"
+ }
+ },
+ {
+ "path": "pages/b-manager-home/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "商务经理首页",
+ "backgroundColor": "#f5f7fa"
+ }
+ },
+ {
+ "path": "pages/b-manager-team/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "商务经理团队",
+ "backgroundColor": "#f5f7fa"
+ }
+ },
+ {
+ "path": "pages/b-manager-revenue/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "商务经理收益",
+ "backgroundColor": "#f5f7fa"
+ }
+ },
+ {
+ "path": "pages/b-manager-profile/index",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "商务经理我的",
+ "backgroundColor": "#f5f7fa"
+ }
+ }
+ ],
+ "subPackages": [
+ {
+ "root": "pages-sub/device",
+ "pages": [
+ { "path": "detail", "style": { "navigationStyle": "custom", "navigationBarTitleText": "设备详情" } },
+ { "path": "monitor", "style": { "navigationStyle": "custom", "navigationBarTitleText": "实时监控" } },
+ { "path": "revenue-detail", "style": { "navigationStyle": "custom", "navigationBarTitleText": "积分明细" } },
+ { "path": "log", "style": { "navigationStyle": "custom", "navigationBarTitleText": "运行记录" } },
+ { "path": "add-own", "style": { "navigationStyle": "custom", "navigationBarTitleText": "添加自有设备" } },
+ { "path": "own-voucher", "style": { "navigationStyle": "custom", "navigationBarTitleText": "凭证管理" } },
+ { "path": "own-orders", "style": { "navigationStyle": "custom", "navigationBarTitleText": "自有设备订单" } },
+ { "path": "own-order-detail", "style": { "navigationStyle": "custom", "navigationBarTitleText": "订单详情" } },
+ { "path": "deploy-guide", "style": { "navigationStyle": "custom", "navigationBarTitleText": "部署引导" } },
+ { "path": "docking-detail", "style": { "navigationStyle": "custom", "navigationBarTitleText": "特征码对接" } },
+ { "path": "credit-detail", "style": { "navigationStyle": "custom", "navigationBarTitleText": "信用分详情" } },
+ { "path": "diagnosis", "style": { "navigationStyle": "custom", "navigationBarTitleText": "诊断报告" } },
+ { "path": "nat-test", "style": { "navigationStyle": "custom", "navigationBarTitleText": "NAT检测" } },
+ { "path": "deploy-progress", "style": { "navigationStyle": "custom", "navigationBarTitleText": "部署进度" } },
+ { "path": "device-info", "style": { "navigationStyle": "custom", "navigationBarTitleText": "设备信息" } }
+ ]
+ },
+ {
+ "root": "pages-sub/mall",
+ "pages": [
+ { "path": "product-detail", "style": { "navigationStyle": "custom", "navigationBarTitleText": "商品详情" } },
+ { "path": "coupon-detail", "style": { "navigationStyle": "custom", "navigationBarTitleText": "加成券详情" } },
+ { "path": "my-coupons", "style": { "navigationStyle": "custom", "navigationBarTitleText": "我的加成券" } },
+ { "path": "order-list", "style": { "navigationStyle": "custom", "navigationBarTitleText": "商城订单" } },
+ { "path": "pending-payment", "style": { "navigationStyle": "custom", "navigationBarTitleText": "立即购买" } },
+ { "path": "pending-order-detail", "style": { "navigationStyle": "custom", "navigationBarTitleText": "待支付详情" } },
+ { "path": "welfare", "style": { "navigationStyle": "custom", "navigationBarTitleText": "福利商城" } }
+ ]
+ },
+ {
+ "root": "pages-sub/revenue",
+ "pages": [
+ { "path": "points-log", "style": { "navigationStyle": "custom", "navigationBarTitleText": "积分明细" } },
+ { "path": "withdraw", "style": { "navigationStyle": "custom", "navigationBarTitleText": "积分兑换" } },
+ { "path": "leaderboard", "style": { "navigationStyle": "custom", "navigationBarTitleText": "排行榜" } },
+ { "path": "overview", "style": { "navigationStyle": "custom", "navigationBarTitleText": "积分概览" } },
+ { "path": "calculator", "style": { "navigationStyle": "custom", "navigationBarTitleText": "积分计算器" } },
+ { "path": "online-reward", "style": { "navigationStyle": "custom", "navigationBarTitleText": "在线激励" } }
+ ]
+ },
+ {
+ "root": "pages-sub/user",
+ "pages": [
+ { "path": "level", "style": { "navigationStyle": "custom", "navigationBarTitleText": "用户等级" } },
+ { "path": "level-rules", "style": { "navigationStyle": "custom", "navigationBarTitleText": "等级规则" } },
+ { "path": "contracts", "style": { "navigationStyle": "custom", "navigationBarTitleText": "合同管理" } },
+ { "path": "contract-preview", "style": { "navigationStyle": "custom", "navigationBarTitleText": "合同预览" } },
+ { "path": "tickets", "style": { "navigationStyle": "custom", "navigationBarTitleText": "工单管理" } },
+ { "path": "ticket-detail", "style": { "navigationStyle": "custom", "navigationBarTitleText": "工单详情" } },
+ { "path": "ticket-create", "style": { "navigationStyle": "custom", "navigationBarTitleText": "新建工单" } },
+ { "path": "profile-edit", "style": { "navigationStyle": "custom", "navigationBarTitleText": "企业信息" } },
+ { "path": "partner-apply", "style": { "navigationStyle": "custom", "navigationBarTitleText": "拓展伙伴申请" } },
+ { "path": "invitation", "style": { "navigationStyle": "custom", "navigationBarTitleText": "推荐有礼" } },
+ { "path": "poster", "style": { "navigationStyle": "custom", "navigationBarTitleText": "分享海报" } },
+ { "path": "realname-auth", "style": { "navigationStyle": "custom", "navigationBarTitleText": "实名认证" } },
+ { "path": "settings", "style": { "navigationStyle": "custom", "navigationBarTitleText": "设置" } },
+ { "path": "promotion-center", "style": { "navigationStyle": "custom", "navigationBarTitleText": "分享中心" } },
+ { "path": "help-center", "style": { "navigationStyle": "custom", "navigationBarTitleText": "帮助中心" } },
+ { "path": "wallet", "style": { "navigationStyle": "custom", "navigationBarTitleText": "收款账户" } }
+ ]
+ },
+ {
+ "root": "pages-sub/content",
+ "pages": [
+ { "path": "notices", "style": { "navigationStyle": "custom", "navigationBarTitleText": "消息中心" } },
+ { "path": "news-list", "style": { "navigationStyle": "custom", "navigationBarTitleText": "行业资讯" } },
+ { "path": "news-detail", "style": { "navigationStyle": "custom", "navigationBarTitleText": "资讯详情" } },
+ { "path": "notice-detail", "style": { "navigationStyle": "custom", "navigationBarTitleText": "通知详情" } },
+ { "path": "docs", "style": { "navigationStyle": "custom", "navigationBarTitleText": "帮助文档" } },
+ { "path": "doc-detail", "style": { "navigationStyle": "custom", "navigationBarTitleText": "文档详情" } },
+ { "path": "software", "style": { "navigationStyle": "custom", "navigationBarTitleText": "平台软件" } }
+ ]
+ },
+ {
+ "root": "pages-sub/b-promotion",
+ "pages": [
+ { "path": "promo-home", "style": { "navigationStyle": "custom", "navigationBarTitleText": "分享中心" } },
+ { "path": "leader-promo", "style": { "navigationStyle": "custom", "navigationBarTitleText": "分享中心" } },
+ { "path": "poster", "style": { "navigationStyle": "custom", "navigationBarTitleText": "分享海报" } },
+ { "path": "leader-poster", "style": { "navigationStyle": "custom", "navigationBarTitleText": "超级团长分享海报" } },
+ { "path": "b-level", "style": { "navigationStyle": "custom", "navigationBarTitleText": "等级权益" } },
+ { "path": "manager-promo", "style": { "navigationStyle": "custom", "navigationBarTitleText": "分享中心" } },
+ { "path": "manager-poster", "style": { "navigationStyle": "custom", "navigationBarTitleText": "商务经理分享海报" } },
+ { "path": "manager-level", "style": { "navigationStyle": "custom", "navigationBarTitleText": "经理等级权益" } },
+ { "path": "leader-detail", "style": { "navigationStyle": "custom", "navigationBarTitleText": "团长详情" } }
+ ]
+ }
+ ],
+ "globalStyle": {
+ "navigationBarTextStyle": "black",
+ "navigationBarTitleText": "全犀云",
+ "navigationBarBackgroundColor": "#ffffff",
+ "backgroundColor": "#f5f7fa",
+ "navigationStyle": "custom"
+ },
+ "easycom": {
+ "autoscan": true,
+ "custom": {
+ "^u-(.*)": "uview-plus/components/u-$1/u-$1.vue"
+ }
+ },
+ "tabBar": {
+ "custom": true,
+ "color": "#999999",
+ "selectedColor": "#1677ff",
+ "backgroundColor": "#ffffff",
+ "borderStyle": "black",
+ "list": [
+ { "pagePath": "pages/index/index", "text": "首页" },
+ { "pagePath": "pages/devices/index", "text": "设备" },
+ { "pagePath": "pages/revenue/index", "text": "收益" },
+ { "pagePath": "pages/mall/index", "text": "商城" },
+ { "pagePath": "pages/profile/index", "text": "我的" }
+ ]
+ }
+}
diff --git a/src/pages/b-home/index.vue b/src/pages/b-home/index.vue
new file mode 100644
index 0000000..b45bae0
--- /dev/null
+++ b/src/pages/b-home/index.vue
@@ -0,0 +1,536 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ greetingText }},{{ userName }}
+
+ ★
+ {{ dashboard.level_name }}
+ ›
+
+
+ 总收益积分
+
+ {{ dashboard.total_points ?? 0 }}
+ 累计已结算
+
+
+ 积分说明
+ 1元 = 1积分
+
+
+
+ 总积分
+ {{ dashboard.total_points ?? 0 }}
+ 累计激励金
+
+
+ 待生效积分
+ {{ dashboard.frozen_points ?? 0 }}
+ T+1生效
+
+
+ 总金额
+ ¥{{ dashboard.total_amount ?? 0 }}
+ C端消费总额
+
+
+
+
+
+
+
+
+
+ {{ noticeText }}
+ 更多 ›
+
+
+
+
+
+
+
+ 总积分
+ {{ formatThousands(dashboard.total_points || 0) }}
+ 累计激励金
+
+
+ 待生效积分
+ {{ formatThousands(dashboard.frozen_points || 0) }}
+ T+1生效
+
+
+ 总金额
+ ¥{{ formatThousands(dashboard.total_amount || 0) }}
+ C端消费总额
+
+
+ 活跃C端
+ {{ dashboard.active_c_count || 0 }}
+ 7日内活跃
+
+
+ 设备总数
+ {{ dashboard.device_count || 0 }}台
+ 已支付订单
+
+
+ 本月新增C端
+ {{ dashboard.new_c_count || 0 }}
+ 本月注册
+
+
+
+
+
+
+
+
+
+
+ ❤️
+
+ 分享中心
+
+
+
+ 👥
+
+ 我的团队
+
+
+
+ 🖼️
+
+ 生成海报
+
+
+
+ 💰
+
+ 积分明细
+
+
+
+
+
+
+
+
+ 暂无直属C端用户
+
+ {{ item.rank }}
+ {{ item.name }}
+ ¥{{ item.value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/b-manager-home/index.vue b/src/pages/b-manager-home/index.vue
new file mode 100644
index 0000000..0c01b4f
--- /dev/null
+++ b/src/pages/b-manager-home/index.vue
@@ -0,0 +1,590 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ greetingText }},{{ userName }}
+
+ ★
+ {{ dashboard.level_name }}
+ ›
+
+
+ 总收益积分
+
+ {{ dashboard.total_points ?? 0 }}
+ 累计已结算
+
+
+ 积分说明
+ 1元 = 1积分
+
+
+
+ 下属团长
+ {{ dashboard.leader_count || 0 }} 人
+ 商务经理下属
+
+
+ 团长直接推荐C端
+ {{ dashboard.total_c_count || 0 }} 人
+ 下属团长直接推荐
+
+
+ 本月积分
+ {{ dashboard.total_points ?? 0 }}
+ 累计激励金
+
+
+
+
+
+
+
+ 📢
+
+ {{ noticeText }}
+ 更多 ›
+
+
+
+
+
+
+
+ {{ item.title }}
+
+ {{ item.value }}{{ item.unit }}
+
+ {{ item.trend }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.emoji }}
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+ {{ item.rank }}
+ {{ item.name }}
+ {{ item.value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/b-manager-profile/index.vue b/src/pages/b-manager-profile/index.vue
new file mode 100644
index 0000000..10282f5
--- /dev/null
+++ b/src/pages/b-manager-profile/index.vue
@@ -0,0 +1,511 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (profile.name || '用')[0] }}
+
+ ✓
+
+
+
+ {{ profile.name }}
+
+
+ ★
+ {{ profile.level }}
+ ›
+
+ ID: {{ profile.id }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ❤️
+
+ 分享中心
+
+
+
+ 👥
+
+ 我的团队
+
+
+
+ 🖼️
+
+ 生成海报
+
+
+
+ 💰
+
+ 积分明细
+
+
+
+
+
+
+
+
+
+
+ 👥
+
+
+ 推荐记录
+ {{ inviteSub }}
+
+
+
+
+
+ 💰
+
+
+ 积分动态
+ 即时积分+长期积分明细
+
+
+
+
+
+ 💳
+
+
+ 兑换记录
+ 积分余额·兑换·兑换记录
+
+
+
+
+
+ ⭐
+
+
+ 等级规则
+ 等级条件·奖励比例
+
+
+
+
+
+ 🪪
+
+
+ 实名认证
+ 身份证·人脸识别·企业资质
+
+ 待认证
+
+
+
+
+ 💳
+
+
+ 收款账户
+ 管理个人/公户收款账户
+
+
+
+
+
+ ❓
+
+
+ 帮助中心
+ FAQ·在线客服·常见问题
+
+
+
+
+
+
+
+
+
+
+
+
+ ⚙️
+
+
+ 账号设置
+ 安全·通知·隐私
+
+
+
+
+
+
+ 退出登录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/b-manager-revenue/index.vue b/src/pages/b-manager-revenue/index.vue
new file mode 100644
index 0000000..346c515
--- /dev/null
+++ b/src/pages/b-manager-revenue/index.vue
@@ -0,0 +1,433 @@
+
+
+
+
+
+
+
+
+
+ 可兑换收益积分
+ {{ withdrawable }}
+
+ 兑换
+ 积分明细
+
+
+
+
+
+
+ {{ item.label }}
+ {{ item.value }}
+ {{ item.trend }}
+
+
+
+
+
+ 收益积分来源构成 商务经理·下属团长贡献
+
+
+
+
+ {{ item.label }}
+ {{ item.value }}
+
+
+
+
+
+
+
+
+ 暂无相关收益记录
+
+
+
+
+
+ {{ item.icon }}
+
+
+ {{ item.title }}
+ {{ item.date }} · {{ item.desc }}
+
+
+ {{ item.amount }}
+ {{ item.status }}
+
+
+
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/b-manager-team/index.vue b/src/pages/b-manager-team/index.vue
new file mode 100644
index 0000000..5990f31
--- /dev/null
+++ b/src/pages/b-manager-team/index.vue
@@ -0,0 +1,329 @@
+
+
+
+
+
+
+
+
+
+
+
+ 下属团长人数
+ {{ teamStats.leader_count }} 人
+
+
+ 团队总贡献积分
+ {{ formatThousands(teamStats.total_contribution || 0) }}
+
+
+
+
+ {{ teamStats.total_c_count }}
+ 团长直接推荐C端
+
+
+ {{ teamStats.device_count }}
+ 设备总数(台)
+
+
+ {{ formatThousands(teamStats.total_spend || 0) }}
+ 总消费金额
+
+
+
+
+
+
+ 直接合作伙伴 {{ leaderList.length }} 人
+ 超级团长带 紫 标签,可点击查看下级
+
+
+
+
+ 直接合作伙伴贡献收益汇总
+
+ 直接合作伙伴 {{ leaderList.length }}人
+ 设备总数 {{ teamStats.device_count }}台
+
+
+
+
+
+
+ {{ item.avatar }}
+
+
+ {{ item.name }}
+ 超级团长
+
+
+ 直接推荐C端 {{ item.cCount }}人
+ ·
+ 设备 {{ item.cDevices }}台
+ ·
+ 总金额 ¥{{ item.cAmount }}
+
+
+ ▎直接推荐团长 {{ item.lCount }}人
+ ·
+ 设备 {{ item.lDevices }}台
+ ·
+ 总金额 ¥{{ item.lAmount }}
+
+
+
+ {{ item.contribution }}
+ 贡献积分
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/b-profile/index.vue b/src/pages/b-profile/index.vue
new file mode 100644
index 0000000..217e277
--- /dev/null
+++ b/src/pages/b-profile/index.vue
@@ -0,0 +1,562 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ profile.name ? profile.name.charAt(0) : '团' }}
+
+ ✓
+
+
+
+ {{ profile.name }}
+
+ 仅可邀请C端
+
+
+
+ ★
+ {{ profile.level }}
+ ›
+
+ ID: {{ profile.id }}
+
+
+
+
+
+
+
+ {{ profile.isMaxLevel ? profile.nextLevelName + '合作伙伴' : '距离' + profile.nextLevelName + '合作伙伴' }}
+ {{ profile.displayGrowthValue.toLocaleString() }} / {{ profile.targetPoints.toLocaleString() }} 成长值
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ❤️
+
+ 分享中心
+
+
+
+ 🔗
+
+ 分享链接
+
+
+
+ 🖼️
+
+ 分享海报
+
+
+
+ 📋
+
+ 关联订单
+
+
+
+
+
+
+
+
+
+
+ 👥
+
+
+ 推荐记录
+ {{ inviteSub }}
+
+
+
+
+
+ 💰
+
+
+ 积分动态
+ 即时积分+长期积分明细
+
+
+
+
+
+ 💳
+
+
+ 兑换记录
+ 积分余额·兑换·兑换记录
+
+
+
+
+
+ ⭐
+
+
+ 等级规则
+ 等级条件·奖励比例
+
+
+
+
+
+ 🛡️
+
+
+ 实名认证
+ 身份证·人脸识别·企业资质
+
+ 待认证
+
+
+
+
+ 💳
+
+
+ 收款账户
+ 管理个人/公户收款账户
+
+
+
+
+
+ ❓
+
+
+ 帮助中心
+ FAQ·在线客服·常见问题
+
+
+
+
+
+
+
+
+
+
+
+
+ ⚙️
+
+
+ 账号设置
+ 安全·通知·隐私
+
+
+
+
+
+
+ 退出登录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/b-revenue/index.vue b/src/pages/b-revenue/index.vue
new file mode 100644
index 0000000..3652732
--- /dev/null
+++ b/src/pages/b-revenue/index.vue
@@ -0,0 +1,402 @@
+
+
+
+
+
+
+
+
+
+
+
+ 可兑换收益积分
+ {{ withdrawable }}
+
+ 兑换
+ 积分明细
+
+
+
+
+
+
+ {{ item.label }}
+ {{ item.value }}
+ {{ item.trend }}
+
+
+
+
+
+ 收益积分来源构成 团长·激励金收益
+
+ {{ item.label }}
+ {{ item.value }}
+
+
+
+
+
+
+ 收益积分明细
+
+
+
+
+
+ 暂无相关收益记录
+
+
+
+
+ {{ item.icon }}
+
+
+ {{ item.title }}
+ {{ item.sub }}
+
+
+ {{ item.amount }}
+ {{ item.status }}
+
+
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/b-super-home/index.vue b/src/pages/b-super-home/index.vue
new file mode 100644
index 0000000..d56d670
--- /dev/null
+++ b/src/pages/b-super-home/index.vue
@@ -0,0 +1,523 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ greetingText }},{{ userName }}
+
+ ★
+ {{ dashboard.level_name }}
+ ›
+
+
+ 总收益积分
+
+ {{ dashboard.total_points ?? 0 }}
+ 累计已结算
+
+
+ 积分说明
+ 1元 = 1积分
+
+
+
+ 直接推荐C端
+ {{ dashboard.direct_c_count || 0 }} 人
+ 团长直接推荐
+
+
+ 设备总数
+ {{ dashboard.device_count || 0 }} 台
+ 直接推荐C端设备
+
+
+ 本月积分
+ {{ dashboard.total_points ?? 0 }}
+ 累计激励金
+
+
+
+
+
+
+
+
+
+ {{ noticeText }}
+ 更多 ›
+
+
+
+
+
+
+
+ {{ item.title }}
+
+ {{ item.value }}{{ item.unit }}
+
+ {{ item.trend }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.emoji }}
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+ 暂无直属C端用户
+
+ {{ item.rank }}
+ {{ item.name }}
+ ¥{{ item.value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/b-super-profile/index.vue b/src/pages/b-super-profile/index.vue
new file mode 100644
index 0000000..aea072a
--- /dev/null
+++ b/src/pages/b-super-profile/index.vue
@@ -0,0 +1,516 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (profile.name || '用')[0] }}
+
+ ✓
+
+
+
+ {{ profile.name }}
+
+ 已开放邀请团长
+
+
+
+ ★
+ {{ profile.level }}
+
+
+ ID: {{ profile.id }}
+
+
+
+
+
+
+ {{ profile.isMaxLevel ? profile.nextLevelName + '合作伙伴' : '距离' + profile.nextLevelName + '合作伙伴' }}
+ {{ profile.displayGrowthValue.toLocaleString() }} / {{ profile.targetPoints.toLocaleString() }} 成长值
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ❤️
+
+ 分享中心
+
+
+
+ 🔗
+
+ 分享链接
+
+
+
+ 🖼️
+
+ 分享海报
+
+
+
+ 📋
+
+ 关联订单
+
+
+
+
+
+
+
+
+
+
+ 👥
+
+
+ 推荐记录
+ {{ inviteSub }}
+
+
+
+
+
+ 💰
+
+
+ 积分动态
+ 即时积分+长期激励+团队贡献收益
+
+
+
+
+
+ 💳
+
+
+ 兑换记录
+ 积分余额·兑换·兑换记录
+
+
+
+
+
+ ⭐
+
+
+ 等级规则
+ 等级条件·奖励比例
+
+
+
+
+
+ 🛡️
+
+
+ 实名认证
+ 身份证·人脸识别·企业资质
+
+ 待认证
+
+
+
+
+ 💳
+
+
+ 收款账户
+ 管理个人/公户收款账户
+
+
+
+
+
+ ❓
+
+
+ 帮助中心
+ FAQ·在线客服·常见问题
+
+
+
+
+
+
+
+
+
+
+
+
+ ⚙️
+
+
+ 账号设置
+ 安全·通知·隐私
+
+
+
+
+
+
+ 退出登录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/b-super-revenue/index.vue b/src/pages/b-super-revenue/index.vue
new file mode 100644
index 0000000..14e3187
--- /dev/null
+++ b/src/pages/b-super-revenue/index.vue
@@ -0,0 +1,319 @@
+
+
+
+
+
+
+
+
+
+
+ 可兑换收益积分
+ {{ withdrawable }}
+
+ 兑换
+ 积分明细
+
+
+
+
+
+
+ {{ item.label }}
+ {{ item.value }}
+ {{ item.trend }}
+
+
+
+
+
+ 收益积分来源构成 团长·激励金收益
+
+ {{ item.label }}
+ {{ item.value }}
+
+
+
+
+
+
+ 收益积分明细
+
+
+
+
+ {{ item.icon }}
+
+
+ {{ item.title }}
+ {{ item.sub }}
+
+
+ {{ item.amount }}
+ {{ item.status }}
+
+
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/b-super-team/index.vue b/src/pages/b-super-team/index.vue
new file mode 100644
index 0000000..09150f2
--- /dev/null
+++ b/src/pages/b-super-team/index.vue
@@ -0,0 +1,431 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 直接推荐C端总数
+ {{ teamStats.userCount }} 人
+
+
+ 团队总贡献积分
+ {{ teamStats.totalContribution }}
+
+
+
+
+ {{ teamStats.directCUsers }}
+ 团长直接推荐C端
+
+
+ {{ teamStats.deviceCount }}
+ 设备总数(台)
+
+
+ {{ teamStats.totalSpend }}
+ 总消费金额
+
+
+ {{ teamStats.leaderContribution }}
+ 团长团队贡献
+
+
+
+
+
+
+
+ 直接推荐C端 ({{ teamStats.userCount }})
+
+
+ 直接推荐团长 ({{ teamStats.leaderCount }})
+
+
+
+
+
+
+ 直接推荐C端用户·贡献收益汇总
+
+ 直接推荐C端 {{ teamStats.userCount }}人
+ 设备总数 {{ teamStats.deviceCount }}台
+
+
+
+
+
+ 暂无下属成员记录
+
+
+
+ {{ member.avatar }}
+
+
+ {{ member.name }}
+ 由团长"{{ member.promoter }}"直接推荐 · {{ member.devices }}台设备
+
+
+ {{ formatThousands(member.points) }}
+ 贡献积分
+
+
+
+ {{ memberState.c.loading ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+ 直接推荐团长·团队贡献收益汇总
+
+ 直接推荐团长 {{ teamStats.leaderCount }}人
+ 团队C端 {{ teamStats.leaderTeamCCount }}人
+ 设备 {{ teamStats.leaderTeamDeviceCount }}台
+
+
+
+
+
+ 暂无下属团长记录
+
+
+
+ {{ item.avatar }}
+
+
+ {{ item.name }}
+ {{ item.desc }}
+
+
+ {{ formatThousands(item.points) }}
+ 团队贡献积分
+
+
+
+ {{ memberState.leader.loading ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/b-team/index.vue b/src/pages/b-team/index.vue
new file mode 100644
index 0000000..d77d6c1
--- /dev/null
+++ b/src/pages/b-team/index.vue
@@ -0,0 +1,345 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 下属用户总数
+ {{ teamStats.userCount }} 人
+
+
+ 团队总贡献积分
+ {{ teamStats.totalContribution }}
+
+
+
+
+ {{ teamStats.directPush }}
+ 团长直接推荐C端
+
+
+ {{ teamStats.deviceCount }}
+ 设备总数(台)
+
+
+ {{ teamStats.totalSpend }}
+ 总消费金额
+
+
+
+
+
+
+ 直接推荐C端 ({{ teamMembers.length }})
+
+
+
+
+ 直接推荐C端用户·贡献收益汇总
+
+ 直接推荐C端 {{ teamMembers.length }}人
+ 设备总数 {{ teamStats.deviceCount }}台
+
+
+
+
+
+
+
+ 暂无下属成员记录
+
+
+
+
+ {{ member.avatar }}
+
+
+ {{ member.name }}
+ 由团长"{{ member.promoter }}"直接推荐 · {{ member.devices }}台设备
+
+
+ {{ formatThousands(member.points) }}
+ 贡献积分
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/devices/index.vue b/src/pages/devices/index.vue
new file mode 100644
index 0000000..e79c5ee
--- /dev/null
+++ b/src/pages/devices/index.vue
@@ -0,0 +1,259 @@
+
+
+
+
+
+ 共 {{ stats.total }} 台
+
+
+
+
+
+
+
+ 平台购买
+ {{ stats.platform }}台
+ 累计积分 ¥{{ formatThousands(stats.buyRevenue) }}
+
+
+ 自有部署
+ {{ stats.self }}台
+ 累计积分 ¥{{ formatThousands(stats.ownRevenue) }}
+
+
+
+
+
+
+ {{ tab }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 暂无相关设备
+
+
+
+
+ {{ loadingMore ? '加载中...' : '加载更多' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue
new file mode 100644
index 0000000..977d77f
--- /dev/null
+++ b/src/pages/index/index.vue
@@ -0,0 +1,723 @@
+
+
+
+
+
+
+
+
+ 全犀云
+
+
+
+ ✕
+ 🔍
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ greeting }},{{ userCompany }}
+
+
+ 累计积分
+
+ ¥{{ stats.totalPoints }}
+ ≈ {{ stats.totalPoints }} 积分
+
+
+
+
+
+ 我的设备
+ {{ deviceStats.total }} 台
+ {{ deviceStats.running }} 运行中
+
+
+ 今日产出
+ ¥{{ stats.todayPoints }}
+
+
+
+
+
+
+
+
+
+
+
+ 📢
+
+ {{ noticeText }}
+ 更多 ›
+
+
+
+
+
+
+
+
+
+ {{ item.emoji }}
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.emoji }}
+
+
+ {{ item.name }}
+ {{ item.specs }}
+ ¥{{ formatThousands(item.price) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 用户收益榜
+ 设备收益榜
+
+
+
+
+ {{ i + 1 }}
+ {{ item.name }}
+ ¥{{ formatThousands(item.revenue) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ news.emoji }}
+
+
+ {{ news.title }}
+ {{ news.subtitle }}
+
+ {{ news.cat }}
+ {{ news.date }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/login/index-bak.vue b/src/pages/login/index-bak.vue
new file mode 100644
index 0000000..0612f7a
--- /dev/null
+++ b/src/pages/login/index-bak.vue
@@ -0,0 +1,533 @@
+
+
+
+
+
+
+
+
+
+
+ 全犀云
+
+
+
+
+
+
+ 正在验证身份...
+ 首次访问需注册 · 已注册用户将自动登录
+ 点击继续
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 手机号
+
+
+
+ {{ codeCountdown > 0 ? codeCountdown + 's' : '获取验证码' }}
+
+
+
+
+
+
+ 验证码
+
+
+
+
+
+
+ ✓
+
+
+ 我已阅读并同意 《用户协议》 和 《隐私政策》
+
+
+
+ 登 录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 手机号
+
+
+
+
+
+ 验证码
+
+
+
+ {{ regCodeCountdown > 0 ? regCodeCountdown + 's' : '获取验证码' }}
+
+
+ 登录环节已通过手机号与验证码校验,请直接填写推荐码完成注册
+
+
+
+
+ 推荐码(推荐码) *
+
+ 注册需填写推荐码(必填)。扫描推荐人海报二维码进入时将自动填入,填写后与推荐人建立推荐关系
+
+
+
+
+
+ ✓
+
+
+ 我已阅读并同意 《用户协议》 和 《隐私政策》
+
+
+
+ 注 册
+
+
+
+
+
+
+
+
+
+
+
+
+ 一、服务条款
+ 欢迎使用全犀云边缘宽带共享平台。本协议是您与全犀云平台之间关于使用全犀云服务所订立的协议。
+ 1. 您在使用全犀云服务时,应遵守中华人民共和国相关法律法规。
+ 2. 您应保证所提供的企业及个人信息真实、准确、完整。
+ 3. 平台有权根据业务需要调整服务内容和收费标准,并提前公告通知。
+
+
+ 二、隐私政策
+ 全犀云重视您的隐私保护。我们将按照法律法规要求,采取相应的安全保护措施保护您的个人信息。
+ 1. 我们收集的信息包括:企业信息、联系人信息、设备信息、收益数据等。
+ 2. 我们不会将您的个人信息出售或分享给第三方。
+ 3. 您有权查询、更正、删除您的个人信息。
+
+
+ 三、收益与结算
+ 1. 设备收益根据实际带宽贡献量和服务质量综合计算。
+ 2. 收益积分按日结算,T+1日发放至账户。
+ 3. 积分兑换需满足最低兑换门槛,服务费按平台规则执行。
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/login/index.vue b/src/pages/login/index.vue
new file mode 100644
index 0000000..ddcb1b0
--- /dev/null
+++ b/src/pages/login/index.vue
@@ -0,0 +1,410 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 欢迎回来
+ 请输入手机号登录
+
+
+
+
+ +86
+
+
+
+
+
+
+
+
+
+
+
+ {{ codeCountdown > 0 ? codeCountdown + 's' : '重新获取' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ sending ? '发送中...' : '获取验证码' }}
+
+
+ {{ loading ? '登录中...' : '登 录' }}
+
+
+ {{ loading ? '注册中...' : '注 册' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/mall/index.vue b/src/pages/mall/index.vue
new file mode 100644
index 0000000..f9f3896
--- /dev/null
+++ b/src/pages/mall/index.vue
@@ -0,0 +1,787 @@
+
+
+
+
+
+
+
+
+ 商城
+
+
+
+ ✕
+ 🔍
+
+
+ 🛒
+
+
+
+
+
+
+
+
+
+
+
+ {{ tab.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ product.emoji }}
+ {{ product.topBadge }}
+ {{ product.stockBadge }}
+
+
+
+
+ {{ tag.text }}
+
+
+ {{ product.name }}
+
+ {{ product.stars }}
+ {{ product.score }}
+ ({{ product.reviewCount }}评价)
+
+
+
+
+ ¥{{ product.dailyEarn }}/天
+ 日产出
+
+
+ ¥{{ formatThousands(product.monthlyEarn) }}/月
+ 月产出
+
+
+ {{ product.paybackDays }}天
+ 设备成本周期
+
+
+
+
+ {{ spec }}
+
+
+
+
+
+
+ 已售 {{ product.sold }}台
+ 库存 {{ product.stock }}
+
+
+
+
+ ¥{{ formatThousands(product.price) }} 起
+
+
+ 月销{{ product.sold }}台
+ 立即购买
+
+
+
+
+ 硬件费 ¥{{ formatThousands(product.hardwarePrice) }} + 服务费 ¥{{ formatThousands(product.servicePrice) }}
+
+
+
+
+
+
+ {{ serverLoading ? '加载中...' : '加载更多' }}
+
+ — 已加载全部 —
+
+
+
+
+
+ ⚡
+ -30%
+ 秒杀
+
+
+
+ 限时
+ 1.2x
+
+ QH-200 Pro 秒杀款
+
+
+ ¥12,600
+ ¥18,000
+
+ 立即抢
+
+
+
+ 剩余 02:35:18
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ coupon.multiplier }}x
+
+ 收益加成券 {{ coupon.multiplier }}x
+
+ {{ tag.text }}
+
+
+
+ {{ coupon.priceText }}
+ {{ coupon.oldPrice }}
+
+
+
+
+
+
+ {{ coupon.multiplier }}x
+ 加成倍数
+
+
+ {{ coupon.days }}天
+ 有效期
+
+
+ {{ coupon.scope }}
+ 适用范围
+
+
+
+
+ 💡 月产出预估
+
+
+ ¥{{ formatThousands(coupon.baselineMonthly) }}
+ 基础收益
+
+ →
+
+ ¥{{ formatThousands(coupon.boostedMonthly) }}
+ 加成后
+
+
+
+
+
+ {{ coupon.btnText }}
+ 月销 {{ coupon.sold }}张
+
+
+
+
+
+
+ {{ couponLoading ? '加载中...' : '加载更多' }}
+
+ — 已加载全部 —
+
+
+
+ 💡 加成券使用说明
+ · 加成券购买后需绑定到具体设备方可生效
+ · 每台设备同时仅可生效一张加成券
+ · 有效期从绑定当日开始计算,过期失效
+ · 收益加成在每日0:30结算时生效
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ cat.emoji }}
+
+ {{ cat.name }}
+
+
+
+
+
+
+
+
+
+ {{ item.emoji }}
+
+ {{ item.name }}
+
+ ¥{{ item.price }}
+ ¥{{ item.oldPrice }}
+
+
+
+
+
+
+
+ 为你推荐
+
+
+
+
+ {{ item.emoji }}
+
+
+ {{ item.name }}
+ ¥{{ item.price }}
+ ¥{{ item.oldPrice }}
+ 已售 {{ item.sold }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/profile/index.vue b/src/pages/profile/index.vue
new file mode 100644
index 0000000..e3d2516
--- /dev/null
+++ b/src/pages/profile/index.vue
@@ -0,0 +1,431 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 云
+
+
+ {{ userInfo.companyName }}
+
+ {{ userInfo.vipLevel }}
+ ID: {{ userInfo.userId }}
+
+
+
+
+
+
+
+
+
+
+ {{ userInfo.deviceCount }}
+ 设备
+
+
+ {{ userInfo.totalPoints }}
+ 累计积分
+
+
+
+
+
+
+
+
+ {{ userInfo.vipLevel }}
+ 用户等级
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 常用功能
+
+
+
+
+ {{ item.emoji }}
+
+
+ {{ item.name }}
+ {{ item.badge }}
+
+
+
+
+
+
+
+
+ 业务中心
+
+
+
+ {{ item.emoji }}
+
+
+
+ {{ item.name }}
+ {{ item.desc }}
+
+
+ {{ item.badge }}
+
+
+
+
+
+
+
+
+
+
+ 工具与支持
+
+
+
+ {{ item.emoji }}
+
+
+
+ {{ item.name }}
+ {{ item.desc }}
+
+ {{ item.badge }}
+
+
+
+
+
+
+
+
+ 通用
+
+
+
+
+
+
+ 设置
+ 账号安全与偏好设置
+
+
+
+
+
+
+
+ 退出登录
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/revenue/index.vue b/src/pages/revenue/index.vue
new file mode 100644
index 0000000..b0e4cb7
--- /dev/null
+++ b/src/pages/revenue/index.vue
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+
+
+ 可用兑换积分
+ ¥{{ formatThousands(withdrawablePoints) }}
+
+ 兑换
+ 积分明细
+
+
+
+
+
+
+
+
+ ¥{{ item.amount }}
+ {{ item.label }}
+ {{ item.sub }}
+
+
+
+
+
+
+ 收益监控
+
+
+ {{ item.label }}
+ ¥{{ item.value }}
+
+ {{ item.trend > 0 ? '↑' : item.trend < 0 ? '↓' : '' }} {{ Math.abs(item.trend) }}%
+
+
+
+
+
+
+
+ 快捷功能
+
+
+
+ {{ item.emoji }}
+
+
+
+ {{ item.title }}
+ {{ item.desc }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/static/images/README.md b/src/static/images/README.md
new file mode 100644
index 0000000..170d409
--- /dev/null
+++ b/src/static/images/README.md
@@ -0,0 +1,8 @@
+# 图片资源目录
+
+存放以下图片资源:
+- logo.png - 平台logo(80x80px)
+- 各种图标、默认占位图
+- 运营海报、商品图片等
+
+当前占位使用uView自带图标,后续替换为实际设计资源。
diff --git a/src/static/images/logo.svg b/src/static/images/logo.svg
new file mode 100644
index 0000000..799d847
--- /dev/null
+++ b/src/static/images/logo.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/static/quanxiyun-logo.png b/src/static/quanxiyun-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..4bd636956449b892052324bf51470f0ba8693c9c
GIT binary patch
literal 621204
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