diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..8aa924d
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,3 @@
+{
+ "presets": ["@babel/preset-env"]
+}
\ No newline at end of file
diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..10d975e
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,25 @@
+NODE_ENV = 'development'
+
+# api请求地址
+VITE_APP_BASE_URL='http://shop.zeyan.wang/index.php/api/'
+
+# 图片服务器地址
+VITE_IMG_DOMAIN='http://shop.zeyan.wang/'
+
+# 站点id 仅在编译为小程序时生效
+VITE_SITE_ID = '100000'
+
+# 本地存储时token的参数名
+VITE_REQUEST_STORAGE_TOKEN_KEY='wapToken'
+
+# 请求时header中token的参数名
+VITE_REQUEST_HEADER_TOKEN_KEY='token'
+
+# 请求时header中站点的参数名
+VITE_REQUEST_HEADER_SITEID_KEY='site-id'
+
+# 请求时header中来源场景的参数名
+VITE_REQUEST_HEADER_CHANNEL_KEY='channel'
+
+# 应用版本
+VITE_APP_VERSION='1.0.1'
diff --git a/.env.production b/.env.production
new file mode 100644
index 0000000..9b800db
--- /dev/null
+++ b/.env.production
@@ -0,0 +1,25 @@
+NODE_ENV = 'production'
+
+# api请求地址
+VITE_APP_BASE_URL='http://shop.zeyan.wang/index.php/api/'
+
+# 图片服务器地址
+VITE_IMG_DOMAIN='http://shop.zeyan.wang/'
+
+# 站点id 仅在编译为小程序时生效
+VITE_SITE_ID = '100000'
+
+# 本地存储时token的参数名
+VITE_REQUEST_STORAGE_TOKEN_KEY='wapToken'
+
+# 请求时header中token的参数名
+VITE_REQUEST_HEADER_TOKEN_KEY='token'
+
+# 请求时header中站点的参数名
+VITE_REQUEST_HEADER_SITEID_KEY='site-id'
+
+# 请求时header中来源场景的参数名
+VITE_REQUEST_HEADER_CHANNEL_KEY='channel'
+
+# 应用版本
+VITE_APP_VERSION='1.0.1'
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8013dc3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,22 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+*.local
+
+# Editor directories and files
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+.hbuilderx
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..f73e730
--- /dev/null
+++ b/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..8bca018
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,21866 @@
+{
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "dependencies": {
+ "@dcloudio/uni-app": "3.0.0-3080720230703001",
+ "@dcloudio/uni-app-plus": "3.0.0-3080720230703001",
+ "@dcloudio/uni-components": "3.0.0-3080720230703001",
+ "@dcloudio/uni-h5": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-alipay": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-baidu": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-jd": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-kuaishou": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-lark": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-qq": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3080720230703001",
+ "@dcloudio/uni-quickapp-webview": "3.0.0-3080720230703001",
+ "html2canvas": "^1.4.1",
+ "image-tools": "^1.4.0",
+ "lodash-es": "^4.17.21",
+ "pinia": "2.0.36",
+ "qrcode": "^1.5.1",
+ "qs": "6.7.0",
+ "sortablejs": "^1.15.0",
+ "uview-plus": "^3.1.29",
+ "vue": "^3.3.0",
+ "vue-i18n": "^9.2.2",
+ "weixin-js-sdk": "^1.6.0"
+ },
+ "devDependencies": {
+ "@dcasia/mini-program-tailwind-webpack-plugin": "^1.5.6",
+ "@dcloudio/types": "^3.3.2",
+ "@dcloudio/uni-automator": "3.0.0-3080720230703001",
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-stacktracey": "3.0.0-3080720230703001",
+ "@dcloudio/vite-plugin-uni": "3.0.0-3080720230703001",
+ "@rollup/plugin-commonjs": "^24.0.1",
+ "@types/qrcode": "^1.5.0",
+ "@types/sortablejs": "^1.15.0",
+ "@vue/tsconfig": "^0.1.3",
+ "sass": "^1.54.5",
+ "typescript": "^4.9.4",
+ "vite": "4.0.4",
+ "vite-plugin-windicss": "^1.8.10",
+ "vue-tsc": "^1.0.24",
+ "windicss": "^3.5.6"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@antfu/utils": {
+ "version": "0.7.8",
+ "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.8.tgz",
+ "integrity": "sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==",
+ "dev": true
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.24.2",
+ "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.24.2.tgz",
+ "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==",
+ "dependencies": {
+ "@babel/highlight": "^7.24.2",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.24.4",
+ "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.24.4.tgz",
+ "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.24.5.tgz",
+ "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.24.2",
+ "@babel/generator": "^7.24.5",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.24.5",
+ "@babel/helpers": "^7.24.5",
+ "@babel/parser": "^7.24.5",
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.5",
+ "@babel/types": "^7.24.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.24.5.tgz",
+ "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==",
+ "dependencies": {
+ "@babel/types": "^7.24.5",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz",
+ "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+ "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "dependencies": {
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "browserslist": "^4.22.2",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz",
+ "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-member-expression-to-functions": "^7.24.5",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.24.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.24.5",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz",
+ "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "regexpu-core": "^5.3.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
+ "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz",
+ "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.24.3",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz",
+ "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==",
+ "dependencies": {
+ "@babel/types": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz",
+ "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.24.3",
+ "@babel/helper-simple-access": "^7.24.5",
+ "@babel/helper-split-export-declaration": "^7.24.5",
+ "@babel/helper-validator-identifier": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+ "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz",
+ "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz",
+ "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-wrap-function": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz",
+ "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-member-expression-to-functions": "^7.23.0",
+ "@babel/helper-optimise-call-expression": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz",
+ "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==",
+ "dependencies": {
+ "@babel/types": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+ "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz",
+ "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==",
+ "dependencies": {
+ "@babel/types": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz",
+ "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz",
+ "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz",
+ "integrity": "sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/template": "^7.24.0",
+ "@babel/types": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.24.5.tgz",
+ "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==",
+ "dependencies": {
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.5",
+ "@babel/types": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.24.5.tgz",
+ "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.24.5",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.24.5.tgz",
+ "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz",
+ "integrity": "sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-plugin-utils": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz",
+ "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz",
+ "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-transform-optional-chaining": "^7.24.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz",
+ "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmmirror.com/@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,
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-bigint": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+ "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz",
+ "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz",
+ "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz",
+ "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz",
+ "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz",
+ "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-generator-functions": {
+ "version": "7.24.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz",
+ "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-remap-async-to-generator": "^7.22.20",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz",
+ "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.24.1",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-remap-async-to-generator": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz",
+ "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz",
+ "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-properties": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz",
+ "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.24.1",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-class-static-block": {
+ "version": "7.24.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz",
+ "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.24.4",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz",
+ "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-plugin-utils": "^7.24.5",
+ "@babel/helper-replace-supers": "^7.24.1",
+ "@babel/helper-split-export-declaration": "^7.24.5",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz",
+ "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/template": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz",
+ "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz",
+ "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz",
+ "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dynamic-import": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz",
+ "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz",
+ "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-export-namespace-from": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz",
+ "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz",
+ "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz",
+ "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-json-strings": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz",
+ "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz",
+ "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz",
+ "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz",
+ "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz",
+ "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz",
+ "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-simple-access": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz",
+ "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz",
+ "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
+ "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz",
+ "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz",
+ "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-numeric-separator": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz",
+ "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-rest-spread": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz",
+ "integrity": "sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-plugin-utils": "^7.24.5",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz",
+ "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-replace-supers": "^7.24.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz",
+ "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-optional-chaining": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz",
+ "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz",
+ "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-methods": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz",
+ "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.24.1",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-private-property-in-object": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz",
+ "integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.24.5",
+ "@babel/helper-plugin-utils": "^7.24.5",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz",
+ "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz",
+ "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "regenerator-transform": "^0.15.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz",
+ "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz",
+ "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz",
+ "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz",
+ "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz",
+ "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz",
+ "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz",
+ "integrity": "sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.24.5",
+ "@babel/helper-plugin-utils": "^7.24.5",
+ "@babel/plugin-syntax-typescript": "^7.24.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz",
+ "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz",
+ "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz",
+ "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz",
+ "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.24.5.tgz",
+ "integrity": "sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.24.4",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-plugin-utils": "^7.24.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.5",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-import-assertions": "^7.24.1",
+ "@babel/plugin-syntax-import-attributes": "^7.24.1",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.24.1",
+ "@babel/plugin-transform-async-generator-functions": "^7.24.3",
+ "@babel/plugin-transform-async-to-generator": "^7.24.1",
+ "@babel/plugin-transform-block-scoped-functions": "^7.24.1",
+ "@babel/plugin-transform-block-scoping": "^7.24.5",
+ "@babel/plugin-transform-class-properties": "^7.24.1",
+ "@babel/plugin-transform-class-static-block": "^7.24.4",
+ "@babel/plugin-transform-classes": "^7.24.5",
+ "@babel/plugin-transform-computed-properties": "^7.24.1",
+ "@babel/plugin-transform-destructuring": "^7.24.5",
+ "@babel/plugin-transform-dotall-regex": "^7.24.1",
+ "@babel/plugin-transform-duplicate-keys": "^7.24.1",
+ "@babel/plugin-transform-dynamic-import": "^7.24.1",
+ "@babel/plugin-transform-exponentiation-operator": "^7.24.1",
+ "@babel/plugin-transform-export-namespace-from": "^7.24.1",
+ "@babel/plugin-transform-for-of": "^7.24.1",
+ "@babel/plugin-transform-function-name": "^7.24.1",
+ "@babel/plugin-transform-json-strings": "^7.24.1",
+ "@babel/plugin-transform-literals": "^7.24.1",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.24.1",
+ "@babel/plugin-transform-member-expression-literals": "^7.24.1",
+ "@babel/plugin-transform-modules-amd": "^7.24.1",
+ "@babel/plugin-transform-modules-commonjs": "^7.24.1",
+ "@babel/plugin-transform-modules-systemjs": "^7.24.1",
+ "@babel/plugin-transform-modules-umd": "^7.24.1",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
+ "@babel/plugin-transform-new-target": "^7.24.1",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1",
+ "@babel/plugin-transform-numeric-separator": "^7.24.1",
+ "@babel/plugin-transform-object-rest-spread": "^7.24.5",
+ "@babel/plugin-transform-object-super": "^7.24.1",
+ "@babel/plugin-transform-optional-catch-binding": "^7.24.1",
+ "@babel/plugin-transform-optional-chaining": "^7.24.5",
+ "@babel/plugin-transform-parameters": "^7.24.5",
+ "@babel/plugin-transform-private-methods": "^7.24.1",
+ "@babel/plugin-transform-private-property-in-object": "^7.24.5",
+ "@babel/plugin-transform-property-literals": "^7.24.1",
+ "@babel/plugin-transform-regenerator": "^7.24.1",
+ "@babel/plugin-transform-reserved-words": "^7.24.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.24.1",
+ "@babel/plugin-transform-spread": "^7.24.1",
+ "@babel/plugin-transform-sticky-regex": "^7.24.1",
+ "@babel/plugin-transform-template-literals": "^7.24.1",
+ "@babel/plugin-transform-typeof-symbol": "^7.24.5",
+ "@babel/plugin-transform-unicode-escapes": "^7.24.1",
+ "@babel/plugin-transform-unicode-property-regex": "^7.24.1",
+ "@babel/plugin-transform-unicode-regex": "^7.24.1",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.24.1",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.4",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "core-js-compat": "^3.31.0",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/@babel/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+ "dev": true
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.5.tgz",
+ "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/runtime/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ },
+ "node_modules/@babel/template": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.24.0.tgz",
+ "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/parser": "^7.24.0",
+ "@babel/types": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.24.5.tgz",
+ "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==",
+ "dependencies": {
+ "@babel/code-frame": "^7.24.2",
+ "@babel/generator": "^7.24.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.24.5",
+ "@babel/parser": "^7.24.5",
+ "@babel/types": "^7.24.5",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.24.5.tgz",
+ "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.24.1",
+ "@babel/helper-validator-identifier": "^7.24.5",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@dcasia/mini-program-tailwind-webpack-plugin": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmmirror.com/@dcasia/mini-program-tailwind-webpack-plugin/-/mini-program-tailwind-webpack-plugin-1.5.7.tgz",
+ "integrity": "sha512-BXcYi8iAFh9qRewsJPT9+paxBto5zdLLmad1Yx1GkZXmKFE6W7qHDRWxOmskXFtSCzCKdomFqZG2RzW1eBzMZg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.17.5",
+ "@vivaxy/wxml": "^2.1.0",
+ "micromatch": "^4.0.5",
+ "postcss": "^8.4.7",
+ "webpack-sources": "^1.4.3",
+ "windicss-webpack-plugin": "^1.7.2"
+ }
+ },
+ "node_modules/@dcloudio/types": {
+ "version": "3.4.8",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/types/-/types-3.4.8.tgz",
+ "integrity": "sha512-IPXuoghLv7qNPOnRuP7vC5++MdRHhE0U7EMw9ia//uOh69fFXZiRTfoHd51+nzciD6R50gqYhbrCCZIxnxhM9Q=="
+ },
+ "node_modules/@dcloudio/uni-app": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app/-/uni-app-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-6fip3G+s6pJDudu+Rsy/v7CtGYzjcc0ZjjKYZuXttM1Vgkg3QD1/qHhJW27Vb+nmzfL+Wg1tbRhTl7kgA+8TVA==",
+ "dependencies": {
+ "@dcloudio/uni-cloud": "3.0.0-3080720230703001",
+ "@dcloudio/uni-components": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-push": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-stat": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47"
+ },
+ "peerDependencies": {
+ "@dcloudio/types": "^3.3.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-plus": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-plus/-/uni-app-plus-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-WGHniWrEJPIAVP3GDp+maf30fZz/Dc+gAfiPMDWvQdE12nAcnpbgnmaLEPifPDeeV2dr7/VuxoVM+Z2M5AlN1Q==",
+ "dependencies": {
+ "@dcloudio/uni-app-uts": "3.0.0-3080720230703001",
+ "@dcloudio/uni-app-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-app-vue": "3.0.0-3080720230703001",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "licia": "^1.29.0",
+ "postcss-selector-parser": "^6.0.6"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-uts": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-uts/-/uni-app-uts-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-6GXBYE3/bfliADNMmnmm2UHLpzR2BF5hgs/ExIXcC9sMOxDAUd149R+YsDp9HUfUc+dA32DXHHjoQOhYunZTTA==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@babel/types": "^7.20.7",
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-nvue-styler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3",
+ "es-module-lexer": "^1.2.1",
+ "fs-extra": "^10.0.0",
+ "picocolors": "^1.0.0",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-vite": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-vite/-/uni-app-vite-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-OAFjSfrin2pLuBBfDMg3qvm7ZCS3Vqt0/CDxRicc7lD6ioiahUvaXdLhARTWykoO6rlYjbIckDmg3HuBbb3wjA==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-nvue-styler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vitejs/plugin-vue": "^4.2.1",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-app-vue": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-vue/-/uni-app-vue-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-VTeoupAGJ1GREy2GvB+E29KPkIoHJ0C9ElvxcNpT0bEYWXMAE8m+O6D10aI8Qfwn1dObnxx6ohaRCbrDG9TG3w=="
+ },
+ "node_modules/@dcloudio/uni-automator": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-automator/-/uni-automator-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-DbvYu6uGA+My5l103RgZ5BfqSlxGN5NbvK59ELH0NhK5mGge/f8RQPJ9zPz2rlLJT9/GUzjaw7b+f4FELeRpHg==",
+ "dev": true,
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "address": "^1.1.2",
+ "cross-env": "^7.0.3",
+ "debug": "^4.3.3",
+ "default-gateway": "^6.0.3",
+ "fs-extra": "^10.0.0",
+ "jsonc-parser": "^3.2.0",
+ "licia": "^1.29.0",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ },
+ "peerDependencies": {
+ "jest": "27.0.4",
+ "jest-environment-node": "27.5.1"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-cli-shared/-/uni-cli-shared-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-WP5IfAXIlinWs/ItHu2/EP746kSCxl9+I8wBC6BfI4xq8RD2ga6F5WJt/+blBzbp2gVnJsW/13eafUQs5T3RFA==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.1.2",
+ "@babel/core": "^7.21.3",
+ "@babel/parser": "^7.16.4",
+ "@babel/types": "^7.20.7",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@intlify/core-base": "9.1.9",
+ "@intlify/shared": "9.1.9",
+ "@intlify/vue-devtools": "9.1.9",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "autoprefixer": "^10.4.14",
+ "base64url": "^3.0.1",
+ "chokidar": "^3.5.3",
+ "compare-versions": "^3.6.0",
+ "debug": "^4.3.3",
+ "es-module-lexer": "^1.2.1",
+ "esbuild": "^0.17.5",
+ "estree-walker": "^2.0.2",
+ "fast-glob": "^3.2.11",
+ "fs-extra": "^10.0.0",
+ "hash-sum": "^2.0.0",
+ "jsonc-parser": "^3.0.0",
+ "magic-string": "^0.30.0",
+ "merge": "^2.1.1",
+ "mime": "^3.0.0",
+ "module-alias": "^2.2.2",
+ "os-locale-s-fix": "^1.0.8-fix-1",
+ "picocolors": "^1.0.0",
+ "postcss-import": "^14.0.2",
+ "postcss-load-config": "^3.1.1",
+ "postcss-modules": "^4.3.0",
+ "postcss-selector-parser": "^6.0.6",
+ "resolve": "^1.22.1",
+ "tapable": "^2.2.0",
+ "xregexp": "3.1.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared/node_modules/@vue/reactivity": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
+ "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+ "peer": true,
+ "dependencies": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared/node_modules/@vue/runtime-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
+ "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+ "peer": true,
+ "dependencies": {
+ "@vue/reactivity": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared/node_modules/@vue/runtime-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
+ "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+ "peer": true,
+ "dependencies": {
+ "@vue/runtime-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared/node_modules/@vue/server-renderer": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
+ "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/shared": "3.2.47"
+ },
+ "peerDependencies": {
+ "vue": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-cli-shared/node_modules/csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "peer": true
+ },
+ "node_modules/@dcloudio/uni-cli-shared/node_modules/vue": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
+ "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/runtime-dom": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-cloud": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-cloud/-/uni-cloud-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-xulo8fMQZ6+DsU7Bs6Re7i51OVF/tzT72GmooXvvNt3H+5XUAo/1mQIIiNlxeR4sKesR8Y9n7j+Z4dfs/2ce9w==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47",
+ "fast-glob": "^3.2.11"
+ }
+ },
+ "node_modules/@dcloudio/uni-components": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-components/-/uni-components-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-Ggd7m9TOxdLZxfJ1PWkUBowTUyYVH1WuPsooMWmJNRkMpvnAtK6ZPdS0ThdglX0F/FT82IUUC+wdeZtFG/QRcA==",
+ "dependencies": {
+ "@dcloudio/uni-cloud": "3.0.0-3080720230703001",
+ "@dcloudio/uni-h5": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-h5/-/uni-h5-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-brRSBmxzg07Bt86AhJ70T0wsJBaDjgRAaAND0QsRQAaQfRFyEjqU1wp+x4Dt7GoNbg5hmNEabhdJKv24RweMnA==",
+ "dependencies": {
+ "@dcloudio/uni-h5-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-h5-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3",
+ "localstorage-polyfill": "^1.0.1",
+ "postcss-selector-parser": "^6.0.6",
+ "safe-area-insets": "^1.4.1",
+ "vue-router": "^4.1.6",
+ "xmlhttprequest": "^1.8.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vite": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-h5-vite/-/uni-h5-vite-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-bqPj6p2Zj0TIMOoUFCryPaBR/LIGMdHg5vDGlxoU1F84VdtCXlgDTodbp/4n24MDCd6KiuHZEyURt4jODtxd8Q==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "mime": "^3.0.0",
+ "module-alias": "^2.2.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vite/node_modules/@vue/reactivity": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
+ "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+ "peer": true,
+ "dependencies": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vite/node_modules/@vue/runtime-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
+ "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+ "peer": true,
+ "dependencies": {
+ "@vue/reactivity": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vite/node_modules/@vue/runtime-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
+ "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+ "peer": true,
+ "dependencies": {
+ "@vue/runtime-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vite/node_modules/@vue/server-renderer": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
+ "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/shared": "3.2.47"
+ },
+ "peerDependencies": {
+ "vue": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vite/node_modules/csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "peer": true
+ },
+ "node_modules/@dcloudio/uni-h5-vite/node_modules/vue": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
+ "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/runtime-dom": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vue": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-h5-vue/-/uni-h5-vue-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-dRb9y4bgVSvZgJySumu0ZLL+tb/K1KbHd7Rx5c2G9Q7Yw42y0rrooYgbKFQILw0LFF0bKpzZv0JjNwkpKcD/mA==",
+ "dependencies": {
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/server-renderer": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vue/node_modules/@vue/reactivity": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
+ "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+ "peer": true,
+ "dependencies": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vue/node_modules/@vue/runtime-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
+ "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+ "peer": true,
+ "dependencies": {
+ "@vue/reactivity": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vue/node_modules/@vue/runtime-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
+ "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+ "peer": true,
+ "dependencies": {
+ "@vue/runtime-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vue/node_modules/@vue/server-renderer": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
+ "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/shared": "3.2.47"
+ },
+ "peerDependencies": {
+ "vue": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5-vue/node_modules/csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "peer": true
+ },
+ "node_modules/@dcloudio/uni-h5-vue/node_modules/vue": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
+ "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/runtime-dom": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5/node_modules/@vue/reactivity": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
+ "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+ "peer": true,
+ "dependencies": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5/node_modules/@vue/runtime-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
+ "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+ "peer": true,
+ "dependencies": {
+ "@vue/reactivity": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5/node_modules/@vue/runtime-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
+ "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+ "peer": true,
+ "dependencies": {
+ "@vue/runtime-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5/node_modules/@vue/server-renderer": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
+ "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/shared": "3.2.47"
+ },
+ "peerDependencies": {
+ "vue": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-h5/node_modules/csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "peer": true
+ },
+ "node_modules/@dcloudio/uni-h5/node_modules/vue": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
+ "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
+ "peer": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/runtime-dom": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-i18n": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-i18n/-/uni-i18n-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-fmN3HnHhq2GXgT+PlCiy1g9KAVAD1HASErnv4cKtu4YofJH6Nh+uWAfPNWwp/6ZfNgPrblku7Rq7qdDFEltFcg=="
+ },
+ "node_modules/@dcloudio/uni-mp-alipay": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-alipay/-/uni-mp-alipay-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-qTBERfPRxa4e3cHzptD82kTNrleT6Mxl+hdzDMK4/xSD4XLiMb2ZKDqsG8MtAAvNpHMe8QKiEKXR2/Oljs8A9A==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-baidu": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-baidu/-/uni-mp-baidu-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-22llCMmOgpPuuWtaJ8pExLStvIoy+/KJLL09/a+Y87z3F+W40VfA6WFNNF3peVX22pw8fDvUBMDN9nCusAVrqA==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "jimp": "^0.10.1",
+ "licia": "^1.29.0",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-compiler": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-compiler/-/uni-mp-compiler-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-osLFR5CDm5xrQiSSh0fqXDCDam0Zg8mGMohHKFtqSbPoKHBxv+i4KkdU1Ai3MhutPXK4xMU6xk6PqQ2XhJmxAg==",
+ "dependencies": {
+ "@babel/generator": "^7.20.5",
+ "@babel/parser": "^7.16.4",
+ "@babel/types": "^7.20.7",
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-jd": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-jd/-/uni-mp-jd-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-5FJ0ZtJnCUTaPWLbdcpwAfPG/XGAlyanWolgdwzq0eFMQtAGtcrbCCv2GXXcErMjDyDbM4LRBS3JPEmcBLe5Zw==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-kuaishou": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-kuaishou/-/uni-mp-kuaishou-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-t1H8YaS5HUYNI/ArKTPaK17JqNyvLC4ge+oJpAtW1gJOxT/qdRE7BPyfIfoKUoN0QlDxQiuxbvz1ILdT00u0yg==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-lark": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-lark/-/uni-mp-lark-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-3E+vRxFypvcdTMPIGlfI3WWAVlUi3/IfKc0eM53YqNGHFTnzJOAofvFABqE6hcY24FjwepgNDttGddbaE8LtKA==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-qq": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-qq/-/uni-mp-qq-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-nx9PoO/+zFWlA54O20aXj/gaefUHLqBrhrKPNERAphafFembjudIvo/YS1tjlDk5idJ9G+J5XJNWL60eQcnKNA==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47",
+ "fs-extra": "^10.0.0"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-toutiao": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-toutiao/-/uni-mp-toutiao-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-x39UGX+gelydwYXnDX8YlD7qCpwAWzUwY3DuDNig3GAmtBiBMheM4nQKxxs0zrImRB77eUffwtNn+1+kvTvjyA==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-vite": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-vite/-/uni-mp-vite-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-KGi1tfIrlzGx9vbcrU979I56jaZ+kpQsm+SfKOYg2j6JezQ0/GFqHEHaDdiAdhSZcTX759Qs1PXZmXFxMdDFDA==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-vue": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-vue/-/uni-mp-vue-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-Fo0lNHwGhVV2ceaU4Cta8OmB831k6PhJttpaJ18R0o1AM0RykI8NCw2OUuZ5Ex/TedoyejQBxs6skMDCvPb5IQ==",
+ "dependencies": {
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-mp-weixin": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-weixin/-/uni-mp-weixin-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-8S+6I1OuGk8r+s5nNfqo+Cq+BrK0M+RksDQUtkI8z2e798GrWZiHbTqQ89pEwVdtkhP5G+5orqUg6e5NCLaskQ==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47",
+ "jimp": "^0.10.1",
+ "licia": "^1.29.0",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ }
+ },
+ "node_modules/@dcloudio/uni-nvue-styler": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-nvue-styler/-/uni-nvue-styler-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-nhWQ/B/AYYqJZ/7HCmSWylARJ2dRrRyYVwBVs1Re8yk8SoaEkTvvgt5jas3tqjIxhyi5M8hzXeaxdpkY1Jgsyw==",
+ "dependencies": {
+ "@vue/shared": "3.2.47",
+ "parse-css-font": "^4.0.0",
+ "postcss": "^8.4.23"
+ }
+ },
+ "node_modules/@dcloudio/uni-push": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-push/-/uni-push-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-q0chMYDBdj+KGxj/pA2hOm356tPU9WsVxjB2f7JW3Ue6JUNl5snuq0Rk1C/s1IDDAU8W4DTgb9KjsRYTXHV77w==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001"
+ }
+ },
+ "node_modules/@dcloudio/uni-quickapp-webview": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-quickapp-webview/-/uni-quickapp-webview-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-LgV/CvGVp2IyLbIDeir4rPRAi+eglJLrBl86LT1ey+YA/Jecoz9LH4fHhB5gJEedm+KUqL7hjxd7F/XcrIULzg==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-shared": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-shared/-/uni-shared-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-saa7FGqduwcEe0jxntYAFCE6wAtSM9aNG52uLAW5m0c4uRNYVFWJltBkm8Ev7eyko2xkvNhoQAGIGXDTQ+Hxhw==",
+ "dependencies": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@dcloudio/uni-stacktracey": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-stacktracey/-/uni-stacktracey-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-xo0O4sQ9gXa0wg1V1I13l/6JxQSTmfTcjyyQWOb3t5E/ME6tVo/RSlA0QN/Guo9XlogmQXs99D30NW/r3KGdJA==",
+ "dev": true
+ },
+ "node_modules/@dcloudio/uni-stat": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-stat/-/uni-stat-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-jzX9nRWk24udvVneFVA/8cfzqedib/nHbTO6GsFPamc6KDFa7QXhLy2m+BV+3inLiMkedfVnvgxNkZDigujyLw==",
+ "dependencies": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "debug": "^4.3.3"
+ }
+ },
+ "node_modules/@dcloudio/vite-plugin-uni": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/vite-plugin-uni/-/vite-plugin-uni-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-PMDGsIDjBuoGNzzNPxLAHrXEzBsA2huoZgjbaGa3H8N+4cnbJZmEJEsy/OVdA3I9lrgZ+H6QW95qIA5aVO6djA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.21.3",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-transform-typescript": "^7.20.7",
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vitejs/plugin-legacy": "^4.0.3",
+ "@vitejs/plugin-vue": "^4.2.1",
+ "@vitejs/plugin-vue-jsx": "^3.0.1",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "cac": "6.7.9",
+ "debug": "^4.3.3",
+ "estree-walker": "^2.0.2",
+ "express": "^4.17.1",
+ "fast-glob": "^3.2.11",
+ "fs-extra": "^10.0.0",
+ "hash-sum": "^2.0.0",
+ "jsonc-parser": "^3.0.0",
+ "magic-string": "^0.30.0",
+ "picocolors": "^1.0.0",
+ "terser": "^5.4.0"
+ },
+ "bin": {
+ "uni": "bin/uni.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz",
+ "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz",
+ "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz",
+ "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz",
+ "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz",
+ "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz",
+ "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz",
+ "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz",
+ "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz",
+ "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz",
+ "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz",
+ "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz",
+ "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==",
+ "cpu": [
+ "mips64el"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz",
+ "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz",
+ "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz",
+ "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz",
+ "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz",
+ "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz",
+ "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz",
+ "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz",
+ "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz",
+ "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz",
+ "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@intlify/core-base": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.1.9.tgz",
+ "integrity": "sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==",
+ "dependencies": {
+ "@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"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/devtools-if": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.1.9.tgz",
+ "integrity": "sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==",
+ "dependencies": {
+ "@intlify/shared": "9.1.9"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/message-compiler": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.1.9.tgz",
+ "integrity": "sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==",
+ "dependencies": {
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/shared": "9.1.9",
+ "source-map": "0.6.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/message-resolver": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmmirror.com/@intlify/message-resolver/-/message-resolver-9.1.9.tgz",
+ "integrity": "sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/runtime": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmmirror.com/@intlify/runtime/-/runtime-9.1.9.tgz",
+ "integrity": "sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==",
+ "dependencies": {
+ "@intlify/message-compiler": "9.1.9",
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/shared": "9.1.9"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/shared": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.1.9.tgz",
+ "integrity": "sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@intlify/vue-devtools": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.1.9.tgz",
+ "integrity": "sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==",
+ "dependencies": {
+ "@intlify/message-resolver": "9.1.9",
+ "@intlify/runtime": "9.1.9",
+ "@intlify/shared": "9.1.9"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+ "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "get-package-type": "^0.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmmirror.com/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/console/-/console-27.5.1.tgz",
+ "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/console/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@jest/console/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/console/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@jest/console/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/core": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/core/-/core-27.5.1.tgz",
+ "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/reporters": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "jest-changed-files": "^27.5.1",
+ "jest-config": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-resolve-dependencies": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "jest-watcher": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "rimraf": "^3.0.0",
+ "slash": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/core/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/core/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@jest/core/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/core/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@jest/core/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/core/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/environment": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/environment/-/environment-27.5.1.tgz",
+ "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
+ "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@sinonjs/fake-timers": "^8.0.1",
+ "@types/node": "*",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/globals": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/globals/-/globals-27.5.1.tgz",
+ "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "expect": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/reporters": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/reporters/-/reporters-27.5.1.tgz",
+ "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@jest/console": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "exit": "^0.1.2",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.2.9",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-instrument": "^5.1.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.1.3",
+ "jest-haste-map": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.0",
+ "string-length": "^4.0.1",
+ "terminal-link": "^2.0.0",
+ "v8-to-istanbul": "^8.1.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@jest/reporters/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@jest/reporters/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/source-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/source-map/-/source-map-27.5.1.tgz",
+ "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.2.9",
+ "source-map": "^0.6.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/test-result": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/test-result/-/test-result-27.5.1.tgz",
+ "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "collect-v8-coverage": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/test-sequencer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz",
+ "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/test-result": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-runtime": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/transform/-/transform-27.5.1.tgz",
+ "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.1.0",
+ "@jest/types": "^27.5.1",
+ "babel-plugin-istanbul": "^6.1.1",
+ "chalk": "^4.0.0",
+ "convert-source-map": "^1.4.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "pirates": "^4.0.4",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.1",
+ "write-file-atomic": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@jest/transform/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@jest/transform/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/transform/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/@jest/types/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/types/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@jest/types/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@jest/types/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@jest/types/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/types/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jimp/bmp": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/bmp/-/bmp-0.10.3.tgz",
+ "integrity": "sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "bmp-js": "^0.1.0",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/core": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/core/-/core-0.10.3.tgz",
+ "integrity": "sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==",
+ "dependencies": {
+ "@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"
+ }
+ },
+ "node_modules/@jimp/custom": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/custom/-/custom-0.10.3.tgz",
+ "integrity": "sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/core": "^0.10.3",
+ "core-js": "^3.4.1"
+ }
+ },
+ "node_modules/@jimp/gif": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/gif/-/gif-0.10.3.tgz",
+ "integrity": "sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "omggif": "^1.0.9"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/jpeg": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/jpeg/-/jpeg-0.10.3.tgz",
+ "integrity": "sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "jpeg-js": "^0.3.4"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-blit": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-blit/-/plugin-blit-0.10.3.tgz",
+ "integrity": "sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-blur": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-blur/-/plugin-blur-0.10.3.tgz",
+ "integrity": "sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-circle": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-circle/-/plugin-circle-0.10.3.tgz",
+ "integrity": "sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-color": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-color/-/plugin-color-0.10.3.tgz",
+ "integrity": "sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "tinycolor2": "^1.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-contain": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-contain/-/plugin-contain-0.10.3.tgz",
+ "integrity": "sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5",
+ "@jimp/plugin-scale": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-cover": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-cover/-/plugin-cover-0.10.3.tgz",
+ "integrity": "sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-crop": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5",
+ "@jimp/plugin-scale": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-crop": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-crop/-/plugin-crop-0.10.3.tgz",
+ "integrity": "sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-displace": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-displace/-/plugin-displace-0.10.3.tgz",
+ "integrity": "sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-dither": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-dither/-/plugin-dither-0.10.3.tgz",
+ "integrity": "sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-fisheye": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.10.3.tgz",
+ "integrity": "sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-flip": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-flip/-/plugin-flip-0.10.3.tgz",
+ "integrity": "sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-rotate": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-gaussian": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.10.3.tgz",
+ "integrity": "sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-invert": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-invert/-/plugin-invert-0.10.3.tgz",
+ "integrity": "sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-mask": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-mask/-/plugin-mask-0.10.3.tgz",
+ "integrity": "sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-normalize": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-normalize/-/plugin-normalize-0.10.3.tgz",
+ "integrity": "sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-print": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-print/-/plugin-print-0.10.3.tgz",
+ "integrity": "sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "load-bmfont": "^1.4.0"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-resize": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-resize/-/plugin-resize-0.10.3.tgz",
+ "integrity": "sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-rotate": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-rotate/-/plugin-rotate-0.10.3.tgz",
+ "integrity": "sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5",
+ "@jimp/plugin-crop": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-scale": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-scale/-/plugin-scale-0.10.3.tgz",
+ "integrity": "sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-shadow": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-shadow/-/plugin-shadow-0.10.3.tgz",
+ "integrity": "sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blur": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-threshold": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugin-threshold/-/plugin-threshold-0.10.3.tgz",
+ "integrity": "sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-color": ">=0.8.0",
+ "@jimp/plugin-resize": ">=0.8.0"
+ }
+ },
+ "node_modules/@jimp/plugins": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/plugins/-/plugins-0.10.3.tgz",
+ "integrity": "sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==",
+ "dependencies": {
+ "@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"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/png": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/png/-/png-0.10.3.tgz",
+ "integrity": "sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "pngjs": "^3.3.3"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/tiff": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/tiff/-/tiff-0.10.3.tgz",
+ "integrity": "sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "core-js": "^3.4.1",
+ "utif": "^2.0.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/types": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/types/-/types-0.10.3.tgz",
+ "integrity": "sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==",
+ "dependencies": {
+ "@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"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/utils": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@jimp/utils/-/utils-0.10.3.tgz",
+ "integrity": "sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "core-js": "^3.4.1",
+ "regenerator-runtime": "^0.13.3"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "devOptional": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@rollup/plugin-commonjs": {
+ "version": "24.1.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz",
+ "integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^5.0.1",
+ "commondir": "^1.0.1",
+ "estree-walker": "^2.0.2",
+ "glob": "^8.0.3",
+ "is-reference": "1.2.1",
+ "magic-string": "^0.27.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.68.0||^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/plugin-commonjs/node_modules/@rollup/pluginutils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
+ "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/plugin-commonjs/node_modules/magic-string": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.27.0.tgz",
+ "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.13"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "dependencies": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/@sinonjs/commons": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmmirror.com/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+ "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "node_modules/@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.8",
+ "resolved": "https://registry.npmmirror.com/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+ "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmmirror.com/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz",
+ "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
+ "dev": true
+ },
+ "node_modules/@types/graceful-fs": {
+ "version": "4.1.9",
+ "resolved": "https://registry.npmmirror.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
+ "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+ "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "20.12.12",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.12.12.tgz",
+ "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==",
+ "devOptional": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/prettier": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmmirror.com/@types/prettier/-/prettier-2.7.3.tgz",
+ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@types/qrcode": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmmirror.com/@types/qrcode/-/qrcode-1.5.5.tgz",
+ "integrity": "sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/sortablejs": {
+ "version": "1.15.8",
+ "resolved": "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.15.8.tgz",
+ "integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==",
+ "dev": true
+ },
+ "node_modules/@types/stack-utils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/@types/stack-utils/-/stack-utils-2.0.3.tgz",
+ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmmirror.com/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmmirror.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/@vitejs/plugin-legacy": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-4.1.1.tgz",
+ "integrity": "sha512-um3gbVouD2Q/g19C0qpDfHwveXDCAHzs8OC3e9g6aXpKoD1H14himgs7wkMnhAynBJy7QqUoZNAXDuqN8zLR2g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.22.9",
+ "@babel/preset-env": "^7.22.9",
+ "browserslist": "^4.21.9",
+ "core-js": "^3.31.1",
+ "magic-string": "^0.30.1",
+ "regenerator-runtime": "^0.13.11",
+ "systemjs": "^6.14.1"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "terser": "^5.4.0",
+ "vite": "^4.0.0"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz",
+ "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==",
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0 || ^5.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue-jsx": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz",
+ "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.23.3",
+ "@babel/plugin-transform-typescript": "^7.23.3",
+ "@vue/babel-plugin-jsx": "^1.1.5"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0 || ^5.0.0",
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/@vivaxy/wxml": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@vivaxy/wxml/-/wxml-2.1.0.tgz",
+ "integrity": "sha512-xqnfAB58tl5SPyfkQjrn7D7nuvq7XV9um7QUsjCrvA4X6aZBxcau9sAM47LsQTOpJIVPzjaKIMvq3ul07yZlOA==",
+ "dev": true
+ },
+ "node_modules/@volar/language-core": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.11.1.tgz",
+ "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==",
+ "dev": true,
+ "dependencies": {
+ "@volar/source-map": "1.11.1"
+ }
+ },
+ "node_modules/@volar/source-map": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.11.1.tgz",
+ "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==",
+ "dev": true,
+ "dependencies": {
+ "muggle-string": "^0.3.1"
+ }
+ },
+ "node_modules/@volar/typescript": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.11.1.tgz",
+ "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==",
+ "dev": true,
+ "dependencies": {
+ "@volar/language-core": "1.11.1",
+ "path-browserify": "^1.0.1"
+ }
+ },
+ "node_modules/@vue/babel-helper-vue-transform-on": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.2.tgz",
+ "integrity": "sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==",
+ "dev": true
+ },
+ "node_modules/@vue/babel-plugin-jsx": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.2.tgz",
+ "integrity": "sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "~7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.23.3",
+ "@babel/template": "^7.23.9",
+ "@babel/traverse": "^7.23.9",
+ "@babel/types": "^7.23.9",
+ "@vue/babel-helper-vue-transform-on": "1.2.2",
+ "@vue/babel-plugin-resolve-type": "1.2.2",
+ "camelcase": "^6.3.0",
+ "html-tags": "^3.3.1",
+ "svg-tags": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/babel-plugin-jsx/node_modules/@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.2.tgz",
+ "integrity": "sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/helper-module-imports": "~7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/parser": "^7.23.9",
+ "@vue/compiler-sfc": "^3.4.15"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-core": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
+ "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.24.4",
+ "@vue/shared": "3.4.27",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-dom": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
+ "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
+ "dev": true,
+ "dependencies": {
+ "@vue/compiler-core": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-sfc": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz",
+ "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.24.4",
+ "@vue/compiler-core": "3.4.27",
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/compiler-ssr": "3.4.27",
+ "@vue/shared": "3.4.27",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.10",
+ "postcss": "^8.4.38",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-ssr": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",
+ "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",
+ "dev": true,
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==",
+ "dev": true
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
+ "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
+ "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
+ "dependencies": {
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
+ "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/reactivity-transform": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7",
+ "postcss": "^8.1.10",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-sfc/node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
+ "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "6.6.1",
+ "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.1.tgz",
+ "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA=="
+ },
+ "node_modules/@vue/language-core": {
+ "version": "1.8.27",
+ "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.27.tgz",
+ "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==",
+ "dev": true,
+ "dependencies": {
+ "@volar/language-core": "~1.11.1",
+ "@volar/source-map": "~1.11.1",
+ "@vue/compiler-dom": "^3.3.0",
+ "@vue/shared": "^3.3.0",
+ "computeds": "^0.0.1",
+ "minimatch": "^9.0.3",
+ "muggle-string": "^0.3.1",
+ "path-browserify": "^1.0.1",
+ "vue-template-compiler": "^2.7.14"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/language-core/node_modules/@vue/compiler-core": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
+ "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.24.4",
+ "@vue/shared": "3.4.27",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/language-core/node_modules/@vue/compiler-dom": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
+ "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
+ "dev": true,
+ "dependencies": {
+ "@vue/compiler-core": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "node_modules/@vue/language-core/node_modules/@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==",
+ "dev": true
+ },
+ "node_modules/@vue/language-core/node_modules/minimatch": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.4.27.tgz",
+ "integrity": "sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==",
+ "dependencies": {
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "node_modules/@vue/reactivity-transform": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
+ "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ }
+ },
+ "node_modules/@vue/reactivity-transform/node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/@vue/reactivity/node_modules/@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.27.tgz",
+ "integrity": "sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==",
+ "dependencies": {
+ "@vue/reactivity": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "node_modules/@vue/runtime-core/node_modules/@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz",
+ "integrity": "sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==",
+ "dependencies": {
+ "@vue/runtime-core": "3.4.27",
+ "@vue/shared": "3.4.27",
+ "csstype": "^3.1.3"
+ }
+ },
+ "node_modules/@vue/runtime-dom/node_modules/@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.27.tgz",
+ "integrity": "sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.4.27",
+ "@vue/shared": "3.4.27"
+ },
+ "peerDependencies": {
+ "vue": "3.4.27"
+ }
+ },
+ "node_modules/@vue/server-renderer/node_modules/@vue/compiler-core": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
+ "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
+ "dependencies": {
+ "@babel/parser": "^7.24.4",
+ "@vue/shared": "3.4.27",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/server-renderer/node_modules/@vue/compiler-dom": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
+ "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
+ "dependencies": {
+ "@vue/compiler-core": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "node_modules/@vue/server-renderer/node_modules/@vue/compiler-ssr": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",
+ "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "node_modules/@vue/server-renderer/node_modules/@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz",
+ "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ=="
+ },
+ "node_modules/@vue/tsconfig": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmmirror.com/@vue/tsconfig/-/tsconfig-0.1.3.tgz",
+ "integrity": "sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==",
+ "dev": true,
+ "peerDependencies": {
+ "@types/node": "*"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@windicss/config": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/@windicss/config/-/config-1.9.3.tgz",
+ "integrity": "sha512-u8GUjsfC9r5X1AGYhzb1lX3zZj8wqk6SH1DYex8XUGmZ1M2UpvnUPOFi63XFViduspQ6l2xTX84QtG+lUzhEoQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4",
+ "jiti": "^1.18.2",
+ "windicss": "^3.5.6"
+ }
+ },
+ "node_modules/@windicss/plugin-utils": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/@windicss/plugin-utils/-/plugin-utils-1.9.3.tgz",
+ "integrity": "sha512-3VG5HEGeuIfG/9iTwLyzWWm/aGKNTbtSVkpkAabdRuDP/2lEmf6Hpo4uo5drwE+2O9gXfc6nSYgAwBjotx5CfQ==",
+ "dev": true,
+ "dependencies": {
+ "@antfu/utils": "^0.7.2",
+ "@windicss/config": "1.9.3",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.2.12",
+ "magic-string": "^0.30.0",
+ "micromatch": "^4.0.5",
+ "windicss": "^3.5.6"
+ }
+ },
+ "node_modules/abab": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz",
+ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+ "deprecated": "Use your platform's native atob() and btoa() methods instead",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.11.3",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "devOptional": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-globals": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-6.0.0.tgz",
+ "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1"
+ }
+ },
+ "node_modules/acorn-globals/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/address": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz",
+ "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/any-base": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/any-base/-/any-base-1.1.0.tgz",
+ "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.19",
+ "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.19.tgz",
+ "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==",
+ "dependencies": {
+ "browserslist": "^4.23.0",
+ "caniuse-lite": "^1.0.30001599",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/babel-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/babel-jest/-/babel-jest-27.5.1.tgz",
+ "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__core": "^7.1.14",
+ "babel-plugin-istanbul": "^6.1.1",
+ "babel-preset-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.8.0"
+ }
+ },
+ "node_modules/babel-jest/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-jest/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/babel-jest/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/babel-jest/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/babel-jest/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-jest/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-istanbul": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+ "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-instrument": "^5.0.4",
+ "test-exclude": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-jest-hoist": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz",
+ "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/template": "^7.3.3",
+ "@babel/types": "^7.3.3",
+ "@types/babel__core": "^7.0.0",
+ "@types/babel__traverse": "^7.0.6"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.4.11",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
+ "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "semver": "^6.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.10.4",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz",
+ "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.1",
+ "core-js-compat": "^3.36.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
+ "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-preset-current-node-syntax": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+ "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-bigint": "^7.8.3",
+ "@babel/plugin-syntax-class-properties": "^7.8.3",
+ "@babel/plugin-syntax-import-meta": "^7.8.3",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-top-level-await": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/babel-preset-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz",
+ "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "babel-plugin-jest-hoist": "^27.5.1",
+ "babel-preset-current-node-syntax": "^1.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/base64-arraybuffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+ "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+ },
+ "node_modules/base64url": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/base64url/-/base64url-3.0.1.tgz",
+ "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bmp-js": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/bmp-js/-/bmp-js-0.1.0.tgz",
+ "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw=="
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.2",
+ "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.2.tgz",
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+ "dev": true,
+ "dependencies": {
+ "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.11.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/body-parser/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/body-parser/node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browser-process-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/browserslist": {
+ "version": "4.23.0",
+ "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.0.tgz",
+ "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001587",
+ "electron-to-chromium": "^1.4.668",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-equal": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/buffer-equal/-/buffer-equal-0.0.1.tgz",
+ "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "devOptional": true
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cac": {
+ "version": "6.7.9",
+ "resolved": "https://registry.npmmirror.com/cac/-/cac-6.7.9.tgz",
+ "integrity": "sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001620",
+ "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz",
+ "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew=="
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.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"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz",
+ "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/clipboard": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmmirror.com/clipboard/-/clipboard-2.0.11.tgz",
+ "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
+ "dependencies": {
+ "good-listener": "^1.2.2",
+ "select": "^1.1.2",
+ "tiny-emitter": "^2.0.0"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmmirror.com/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/collect-v8-coverage": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "devOptional": true
+ },
+ "node_modules/commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+ "dev": true
+ },
+ "node_modules/compare-versions": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/compare-versions/-/compare-versions-3.6.0.tgz",
+ "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA=="
+ },
+ "node_modules/computeds": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz",
+ "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
+ "dev": true
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
+ },
+ "node_modules/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true
+ },
+ "node_modules/core-js": {
+ "version": "3.37.1",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.37.1.tgz",
+ "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==",
+ "hasInstallScript": true
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.37.1",
+ "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.37.1.tgz",
+ "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.23.0"
+ }
+ },
+ "node_modules/cross-env": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/cross-env/-/cross-env-7.0.3.tgz",
+ "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.1"
+ },
+ "bin": {
+ "cross-env": "src/bin/cross-env.js",
+ "cross-env-shell": "src/bin/cross-env-shell.js"
+ },
+ "engines": {
+ "node": ">=10.14",
+ "npm": ">=6",
+ "yarn": ">=1"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-font-size-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz",
+ "integrity": "sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q=="
+ },
+ "node_modules/css-font-stretch-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz",
+ "integrity": "sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg=="
+ },
+ "node_modules/css-font-style-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz",
+ "integrity": "sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg=="
+ },
+ "node_modules/css-font-weight-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz",
+ "integrity": "sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA=="
+ },
+ "node_modules/css-line-break": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
+ "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+ "dependencies": {
+ "utrie": "^1.0.2"
+ }
+ },
+ "node_modules/css-list-helpers": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/css-list-helpers/-/css-list-helpers-2.0.0.tgz",
+ "integrity": "sha512-9Bj8tZ0jWbAM3u/U6m/boAzAwLPwtjzFvwivr2piSvyVa3K3rChJzQy4RIHkNkKiZCHrEMWDJWtTR8UyVhdDnQ=="
+ },
+ "node_modules/css-system-font-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz",
+ "integrity": "sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA=="
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cssom": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.4.4.tgz",
+ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "cssom": "~0.3.6"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cssstyle/node_modules/cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "node_modules/data-urls": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/data-urls/-/data-urls-2.0.0.tgz",
+ "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "abab": "^2.0.3",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.11",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.11.tgz",
+ "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg=="
+ },
+ "node_modules/de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
+ "dev": true
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decimal.js": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz",
+ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/dedent": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmmirror.com/dedent/-/dedent-0.7.0.tgz",
+ "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-gateway": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz",
+ "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/delegate": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/delegate/-/delegate-3.2.0.tgz",
+ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/diff-sequences": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/diff-sequences/-/diff-sequences-27.5.1.tgz",
+ "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/dijkstrajs": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+ "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+ },
+ "node_modules/dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
+ },
+ "node_modules/domexception": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/domexception/-/domexception-2.0.1.tgz",
+ "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
+ "deprecated": "Use your platform's native DOMException instead",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "webidl-conversions": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/domexception/node_modules/webidl-conversions": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.772",
+ "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.772.tgz",
+ "integrity": "sha512-jFfEbxR/abTTJA3ci+2ok1NTuOBBtB4jH+UT6PUmRN+DY3WSD4FFRsgoVQ+QNIJ0T7wrXwzsWCI2WKC46b++2A=="
+ },
+ "node_modules/emittery": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmmirror.com/emittery/-/emittery-0.8.1.tgz",
+ "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/encode-utf8": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
+ "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz",
+ "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA=="
+ },
+ "node_modules/esbuild": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz",
+ "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==",
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.17.19",
+ "@esbuild/android-arm64": "0.17.19",
+ "@esbuild/android-x64": "0.17.19",
+ "@esbuild/darwin-arm64": "0.17.19",
+ "@esbuild/darwin-x64": "0.17.19",
+ "@esbuild/freebsd-arm64": "0.17.19",
+ "@esbuild/freebsd-x64": "0.17.19",
+ "@esbuild/linux-arm": "0.17.19",
+ "@esbuild/linux-arm64": "0.17.19",
+ "@esbuild/linux-ia32": "0.17.19",
+ "@esbuild/linux-loong64": "0.17.19",
+ "@esbuild/linux-mips64el": "0.17.19",
+ "@esbuild/linux-ppc64": "0.17.19",
+ "@esbuild/linux-riscv64": "0.17.19",
+ "@esbuild/linux-s390x": "0.17.19",
+ "@esbuild/linux-x64": "0.17.19",
+ "@esbuild/netbsd-x64": "0.17.19",
+ "@esbuild/openbsd-x64": "0.17.19",
+ "@esbuild/sunos-x64": "0.17.19",
+ "@esbuild/win32-arm64": "0.17.19",
+ "@esbuild/win32-ia32": "0.17.19",
+ "@esbuild/win32-x64": "0.17.19"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "dev": true
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/exif-parser": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmmirror.com/exif-parser/-/exif-parser-0.1.12.tgz",
+ "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw=="
+ },
+ "node_modules/exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.19.2",
+ "resolved": "https://registry.npmmirror.com/express/-/express-4.19.2.tgz",
+ "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
+ "dev": true,
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.2",
+ "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": "~1.0.2",
+ "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.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/express/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/express/node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fb-watchman": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/fb-watchman/-/fb-watchman-2.0.2.tgz",
+ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "bser": "2.1.1"
+ }
+ },
+ "node_modules/file-type": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmmirror.com/file-type/-/file-type-9.0.0.tgz",
+ "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/form-data/-/form-data-3.0.1.tgz",
+ "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
+ },
+ "node_modules/generic-names": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/generic-names/-/generic-names-4.0.0.tgz",
+ "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==",
+ "dependencies": {
+ "loader-utils": "^3.2.0"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/get-port": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmmirror.com/get-port/-/get-port-6.1.2.tgz",
+ "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/global": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmmirror.com/global/-/global-4.4.0.tgz",
+ "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+ "dependencies": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
+ }
+ },
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/good-listener": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/good-listener/-/good-listener-1.2.2.tgz",
+ "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
+ "dependencies": {
+ "delegate": "^3.1.2"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hash-sum": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz",
+ "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg=="
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true,
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
+ "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "whatwg-encoding": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/html2canvas": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
+ "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+ "dependencies": {
+ "css-line-break": "^2.1.0",
+ "text-segmentation": "^1.0.3"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/icss-replace-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+ "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg=="
+ },
+ "node_modules/icss-utils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz",
+ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+ },
+ "node_modules/image-tools": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/image-tools/-/image-tools-1.4.0.tgz",
+ "integrity": "sha512-TKtvJ6iUwM0mfaD4keMnk1ENHFC470QEjBfA3IlvKdEOufzvWbjbaoNcoyYq6HlViF8+d5tOS1ooE6j7CHf1lQ=="
+ },
+ "node_modules/immutable": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.6.tgz",
+ "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==",
+ "devOptional": true
+ },
+ "node_modules/import-local": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/import-local/-/import-local-3.1.0.tgz",
+ "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/invert-kv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/invert-kv/-/invert-kv-3.0.1.tgz",
+ "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-function": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz",
+ "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
+ },
+ "node_modules/is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/is-reference": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/is-reference/-/is-reference-1.2.1.tgz",
+ "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+ "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-report/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmmirror.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
+ "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest": {
+ "version": "27.0.4",
+ "resolved": "https://registry.npmmirror.com/jest/-/jest-27.0.4.tgz",
+ "integrity": "sha512-Px1iKFooXgGSkk1H8dJxxBIrM3tsc5SIuI4kfKYK2J+4rvCvPGr/cXktxh0e9zIPQ5g09kOMNfHQEmusBUf/ZA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/core": "^27.0.4",
+ "import-local": "^3.0.2",
+ "jest-cli": "^27.0.4"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-changed-files": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz",
+ "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "execa": "^5.0.0",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-circus/-/jest-circus-27.5.1.tgz",
+ "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "dedent": "^0.7.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-circus/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-circus/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-circus/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-circus/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-circus/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-cli": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-cli/-/jest-cli-27.5.1.tgz",
+ "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/core": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "import-local": "^3.0.2",
+ "jest-config": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "prompts": "^2.0.1",
+ "yargs": "^16.2.0"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-cli/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-cli/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-cli/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-cli/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-cli/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-cli/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-config": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-config/-/jest-config-27.5.1.tgz",
+ "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.8.0",
+ "@jest/test-sequencer": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "babel-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "deepmerge": "^4.2.2",
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.2.9",
+ "jest-circus": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-jasmine2": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "parse-json": "^5.2.0",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "peerDependencies": {
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-config/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-config/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/jest-config/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-config/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-config/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-config/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/jest-config/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-config/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/jest-config/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-diff": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-diff/-/jest-diff-27.5.1.tgz",
+ "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-diff/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-diff/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-diff/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-diff/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-diff/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-diff/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-docblock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-docblock/-/jest-docblock-27.5.1.tgz",
+ "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "detect-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-each/-/jest-each-27.5.1.tgz",
+ "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-each/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-each/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-each/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-each/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-each/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-environment-jsdom": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz",
+ "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jsdom": "^16.6.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-environment-node": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz",
+ "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-haste-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz",
+ "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/graceful-fs": "^4.1.2",
+ "@types/node": "*",
+ "anymatch": "^3.0.3",
+ "fb-watchman": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-regex-util": "^27.5.1",
+ "jest-serializer": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "walker": "^1.0.7"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.3.2"
+ }
+ },
+ "node_modules/jest-jasmine2": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
+ "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-jasmine2/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-jasmine2/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-leak-detector": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
+ "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
+ "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-matcher-utils/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-matcher-utils/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-message-util/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-mock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-mock/-/jest-mock-27.5.1.tgz",
+ "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-pnp-resolver": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "jest-resolve": "*"
+ },
+ "peerDependenciesMeta": {
+ "jest-resolve": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-regex-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
+ "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-resolve/-/jest-resolve-27.5.1.tgz",
+ "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-pnp-resolver": "^1.2.2",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "resolve": "^1.20.0",
+ "resolve.exports": "^1.1.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz",
+ "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-snapshot": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-resolve/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-resolve/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runner": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-runner/-/jest-runner-27.5.1.tgz",
+ "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/console": "^27.5.1",
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "graceful-fs": "^4.2.9",
+ "jest-docblock": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-leak-detector": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "source-map-support": "^0.5.6",
+ "throat": "^6.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runner/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-runner/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-runner/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-runner/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runner/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runtime": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-runtime/-/jest-runtime-27.5.1.tgz",
+ "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/globals": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "cjs-module-lexer": "^1.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "execa": "^5.0.0",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-bom": "^4.0.0"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-runtime/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/jest-runtime/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-serializer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-serializer/-/jest-serializer-27.5.1.tgz",
+ "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*",
+ "graceful-fs": "^4.2.9"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
+ "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/core": "^7.7.2",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.0.0",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__traverse": "^7.0.4",
+ "@types/prettier": "^2.1.5",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^27.5.1",
+ "semver": "^7.3.2"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-snapshot/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-util/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-util/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-util/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-util/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-util/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-util/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-validate": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-validate/-/jest-validate-27.5.1.tgz",
+ "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/types": "^27.5.1",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "leven": "^3.1.0",
+ "pretty-format": "^27.5.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-validate/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-validate/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-validate/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-validate/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watcher": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-watcher/-/jest-watcher-27.5.1.tgz",
+ "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "jest-util": "^27.5.1",
+ "string-length": "^4.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/jest-watcher/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-watcher/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jimp": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/jimp/-/jimp-0.10.3.tgz",
+ "integrity": "sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==",
+ "dependencies": {
+ "@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"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmmirror.com/jiti/-/jiti-1.21.0.tgz",
+ "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
+ "dev": true,
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/jpeg-js": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmmirror.com/jpeg-js/-/jpeg-js-0.3.7.tgz",
+ "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ=="
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsdom": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmmirror.com/jsdom/-/jsdom-16.7.0.tgz",
+ "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "abab": "^2.0.5",
+ "acorn": "^8.2.4",
+ "acorn-globals": "^6.0.0",
+ "cssom": "^0.4.4",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^2.0.0",
+ "decimal.js": "^10.2.1",
+ "domexception": "^2.0.1",
+ "escodegen": "^2.0.0",
+ "form-data": "^3.0.0",
+ "html-encoding-sniffer": "^2.0.1",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.0",
+ "parse5": "6.0.1",
+ "saxes": "^5.0.1",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.0.0",
+ "w3c-hr-time": "^1.0.2",
+ "w3c-xmlserializer": "^2.0.0",
+ "webidl-conversions": "^6.1.0",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.5.0",
+ "ws": "^7.4.6",
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsdom/node_modules/ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz",
+ "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA=="
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/kolorist": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz",
+ "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
+ "dev": true
+ },
+ "node_modules/lcid": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/lcid/-/lcid-3.1.1.tgz",
+ "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==",
+ "dependencies": {
+ "invert-kv": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/licia": {
+ "version": "1.39.2",
+ "resolved": "https://registry.npmmirror.com/licia/-/licia-1.39.2.tgz",
+ "integrity": "sha512-4pte7gXufSAa3JcsR0iT+2Lj2RX5Qpj+Nc0n84xs0ynNmw7eJmeZzk2oPTEtsQqwHwtT+NiX0arGkL5HPjTs7g=="
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/load-bmfont": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/load-bmfont/-/load-bmfont-1.4.1.tgz",
+ "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==",
+ "dependencies": {
+ "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": "^2.9.1",
+ "xhr": "^2.0.1",
+ "xtend": "^4.0.0"
+ }
+ },
+ "node_modules/load-bmfont/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/loader-utils": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-3.2.1.tgz",
+ "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==",
+ "engines": {
+ "node": ">= 12.13.0"
+ }
+ },
+ "node_modules/localstorage-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/localstorage-polyfill/-/localstorage-polyfill-1.0.1.tgz",
+ "integrity": "sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "dev": true
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.10",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.10.tgz",
+ "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/makeerror": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmmirror.com/makeerror/-/makeerror-1.0.12.tgz",
+ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "tmpl": "1.0.5"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/merge": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/merge/-/merge-2.1.1.tgz",
+ "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w=="
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
+ "dev": true
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/min-document": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz",
+ "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
+ "dependencies": {
+ "dom-walk": "^0.1.0"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/module-alias": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmmirror.com/module-alias/-/module-alias-2.2.3.tgz",
+ "integrity": "sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q=="
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/muggle-string": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.3.1.tgz",
+ "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==",
+ "dev": true
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/nwsapi": {
+ "version": "2.2.10",
+ "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.10.tgz",
+ "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "dev": true
+ },
+ "node_modules/omggif": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmmirror.com/omggif/-/omggif-1.0.10.tgz",
+ "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dev": true,
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/os-locale-s-fix": {
+ "version": "1.0.8-fix-1",
+ "resolved": "https://registry.npmmirror.com/os-locale-s-fix/-/os-locale-s-fix-1.0.8-fix-1.tgz",
+ "integrity": "sha512-Sv0OvhPiMutICiwORAUefv02DCPb62IelBmo8ZsSrRHyI3FStqIWZvjqDkvtjU+lcujo7UNir+dCwKSqlEQ/5w==",
+ "dependencies": {
+ "lcid": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "yarn": "^1.22.4"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+ },
+ "node_modules/parse-bmfont-ascii": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
+ "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA=="
+ },
+ "node_modules/parse-bmfont-binary": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz",
+ "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA=="
+ },
+ "node_modules/parse-bmfont-xml": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz",
+ "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==",
+ "dependencies": {
+ "xml-parse-from-string": "^1.0.0",
+ "xml2js": "^0.5.0"
+ }
+ },
+ "node_modules/parse-css-font": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/parse-css-font/-/parse-css-font-4.0.0.tgz",
+ "integrity": "sha512-lnY7dTUfjRXsSo5G5C639L8RaBBaVSgL+5hacIFKsNHzeCJQ5SFSZv1DZmc7+wZv/22PFGOq2YbaEHLdaCS/mQ==",
+ "dependencies": {
+ "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"
+ }
+ },
+ "node_modules/parse-headers": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz",
+ "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA=="
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "dev": true
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
+ "dev": true
+ },
+ "node_modules/pathe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz",
+ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
+ "dev": true
+ },
+ "node_modules/phin": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmmirror.com/phin/-/phin-2.9.3.tgz",
+ "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.1.tgz",
+ "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinia": {
+ "version": "2.0.36",
+ "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.36.tgz",
+ "integrity": "sha512-4UKApwjlmJH+VuHKgA+zQMddcCb3ezYnyewQ9NVrsDqZ/j9dMv5+rh+1r48whKNdpFkZAWVxhBp5ewYaYX9JcQ==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": "*"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.4.0",
+ "typescript": ">=4.4.4",
+ "vue": "^2.6.14 || ^3.2.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pinia/node_modules/vue-demi": {
+ "version": "0.14.7",
+ "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.7.tgz",
+ "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmmirror.com/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pixelmatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/pixelmatch/-/pixelmatch-4.0.2.tgz",
+ "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==",
+ "dependencies": {
+ "pngjs": "^3.0.0"
+ },
+ "bin": {
+ "pixelmatch": "bin/pixelmatch"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pngjs": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-3.4.0.tgz",
+ "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.38",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.38.tgz",
+ "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.2.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-import": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmmirror.com/postcss-import/-/postcss-import-14.1.0.tgz",
+ "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
+ "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
+ "dependencies": {
+ "lilconfig": "^2.0.5",
+ "yaml": "^1.10.2"
+ },
+ "engines": {
+ "node": ">= 10"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-modules": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-modules/-/postcss-modules-4.3.1.tgz",
+ "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==",
+ "dependencies": {
+ "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"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-modules-extract-imports": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
+ "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-local-by-default": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz",
+ "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==",
+ "dependencies": {
+ "icss-utils": "^5.0.0",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-scope": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz",
+ "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.4"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-modules-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
+ "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
+ "dependencies": {
+ "icss-utils": "^5.0.0"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >= 14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.16",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
+ "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+ },
+ "node_modules/pretty-format": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/pretty-format/-/pretty-format-27.5.1.tgz",
+ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
+ "node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dev": true,
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qrcode": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.3.tgz",
+ "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
+ "dependencies": {
+ "dijkstrajs": "^1.0.1",
+ "encode-utf8": "^1.0.3",
+ "pngjs": "^5.0.0",
+ "yargs": "^15.3.1"
+ },
+ "bin": {
+ "qrcode": "bin/qrcode"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/qrcode-reader": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/qrcode-reader/-/qrcode-reader-1.0.4.tgz",
+ "integrity": "sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ=="
+ },
+ "node_modules/qrcode-terminal": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmmirror.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz",
+ "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==",
+ "bin": {
+ "qrcode-terminal": "bin/qrcode-terminal.js"
+ }
+ },
+ "node_modules/qrcode/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/qrcode/node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qrcode/node_modules/cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "node_modules/qrcode/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/qrcode/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/qrcode/node_modules/pngjs": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+ "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/qrcode/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/qrcode/node_modules/y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+ },
+ "node_modules/qrcode/node_modules/yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "dependencies": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/qrcode/node_modules/yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.7.0.tgz",
+ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "dev": true,
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmmirror.com/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
+ "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
+ "dev": true,
+ "dependencies": {
+ "regenerate": "^1.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+ },
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "node_modules/regexpu-core": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz",
+ "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/regjsgen": "^0.8.0",
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.1.0",
+ "regjsparser": "^0.9.1",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regjsparser": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz",
+ "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+ "dev": true,
+ "dependencies": {
+ "jsesc": "~0.5.0"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
+ "node_modules/regjsparser/node_modules/jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ }
+ },
+ "node_modules/resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve.exports": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/resolve.exports/-/resolve.exports-1.1.1.tgz",
+ "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/rimraf/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/rimraf/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "3.29.4",
+ "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz",
+ "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=14.18.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-area-insets": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/safe-area-insets/-/safe-area-insets-1.4.1.tgz",
+ "integrity": "sha512-r/nRWTjFGhhm3w1Z6Kd/jY11srN+lHt2mNl1E/emQGW8ic7n3Avu4noibklfSM+Y34peNphHD/BSZecav0sXYQ=="
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "node_modules/sass": {
+ "version": "1.77.1",
+ "resolved": "https://registry.npmmirror.com/sass/-/sass-1.77.1.tgz",
+ "integrity": "sha512-OMEyfirt9XEfyvocduUIOlUSkWOXS/LAt6oblR/ISXCTukyavjex+zQNm51pPCOiFKY1QpWvEH1EeCkgyV3I6w==",
+ "devOptional": true,
+ "dependencies": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sax": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz",
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
+ },
+ "node_modules/saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz",
+ "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/select": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/select/-/select-1.1.2.tgz",
+ "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/send/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dev": true,
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sortablejs": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.2.tgz",
+ "integrity": "sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA=="
+ },
+ "node_modules/source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+ "dev": true
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz",
+ "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "devOptional": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+ "deprecated": "Please use @jridgewell/sourcemap-codec instead"
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/stack-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/stack-utils/-/stack-utils-2.0.6.tgz",
+ "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stack-utils/node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/string-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/string-hash/-/string-hash-1.1.3.tgz",
+ "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A=="
+ },
+ "node_modules/string-length": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/string-length/-/string-length-4.0.2.tgz",
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "char-regex": "^1.0.2",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
+ "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/systemjs": {
+ "version": "6.15.1",
+ "resolved": "https://registry.npmmirror.com/systemjs/-/systemjs-6.15.1.tgz",
+ "integrity": "sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==",
+ "dev": true
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terminal-link": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/terminal-link/-/terminal-link-2.1.1.tgz",
+ "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "supports-hyperlinks": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.31.0",
+ "resolved": "https://registry.npmmirror.com/terser/-/terser-5.31.0.tgz",
+ "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==",
+ "devOptional": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/test-exclude/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/test-exclude/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/test-exclude/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/text-segmentation": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
+ "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+ "dependencies": {
+ "utrie": "^1.0.2"
+ }
+ },
+ "node_modules/throat": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/throat/-/throat-6.0.2.tgz",
+ "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/timm": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmmirror.com/timm/-/timm-1.7.1.tgz",
+ "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw=="
+ },
+ "node_modules/tiny-emitter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
+ },
+ "node_modules/tinycolor2": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.6.0.tgz",
+ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
+ },
+ "node_modules/tmpl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/tmpl/-/tmpl-1.0.5.tgz",
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tough-cookie": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tough-cookie/node_modules/universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/tr46/-/tr46-2.1.0.tgz",
+ "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dev": true,
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmmirror.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "4.9.5",
+ "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "devOptional": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "devOptional": true
+ },
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "dev": true,
+ "dependencies": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg=="
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
+ "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==",
+ "dependencies": {
+ "escalade": "^3.1.2",
+ "picocolors": "^1.0.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "node_modules/utif": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/utif/-/utif-2.0.1.tgz",
+ "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==",
+ "dependencies": {
+ "pako": "^1.0.5"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/utrie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
+ "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+ "dependencies": {
+ "base64-arraybuffer": "^1.0.2"
+ }
+ },
+ "node_modules/uview-plus": {
+ "version": "3.2.22",
+ "resolved": "https://registry.npmmirror.com/uview-plus/-/uview-plus-3.2.22.tgz",
+ "integrity": "sha512-ouhq0CCGP/ElR7eCCu0rBFNPTGW/EctcrxKIerjj1DOkEIY9BwKBbdI0VTSSkMFnr6RFejSQLBw/aKkqd6Q+7g==",
+ "dependencies": {
+ "clipboard": "^2.0.11",
+ "dayjs": "^1.11.3"
+ },
+ "engines": {
+ "HBuilderX": "^3.1.0"
+ }
+ },
+ "node_modules/v8-to-istanbul": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmmirror.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
+ "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0",
+ "source-map": "^0.7.3"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/v8-to-istanbul/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/v8-to-istanbul/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vite": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmmirror.com/vite/-/vite-4.0.4.tgz",
+ "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==",
+ "dependencies": {
+ "esbuild": "^0.16.3",
+ "postcss": "^8.4.20",
+ "resolve": "^1.22.1",
+ "rollup": "^3.7.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "@types/node": ">= 14",
+ "less": "*",
+ "sass": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-plugin-windicss": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/vite-plugin-windicss/-/vite-plugin-windicss-1.9.3.tgz",
+ "integrity": "sha512-PqNiIsrEftCrgn0xIpj8ZMSdpz8NZn+OJ3gKXnOF+hFzbHFrKGJA49ViOUKCHDOquxoGBZMmTjepWr8GrftKcQ==",
+ "dev": true,
+ "dependencies": {
+ "@windicss/plugin-utils": "1.9.3",
+ "debug": "^4.3.4",
+ "kolorist": "^1.8.0",
+ "windicss": "^3.5.6"
+ },
+ "peerDependencies": {
+ "vite": "^2.0.1 || ^3.0.0 || ^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-arm": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
+ "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
+ "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
+ "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
+ "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/darwin-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
+ "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
+ "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
+ "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-arm": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
+ "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
+ "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-ia32": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
+ "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-loong64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
+ "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
+ "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
+ "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
+ "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-s390x": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
+ "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
+ "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
+ "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
+ "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/sunos-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
+ "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
+ "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-ia32": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
+ "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
+ "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/esbuild": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz",
+ "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.16.17",
+ "@esbuild/android-arm64": "0.16.17",
+ "@esbuild/android-x64": "0.16.17",
+ "@esbuild/darwin-arm64": "0.16.17",
+ "@esbuild/darwin-x64": "0.16.17",
+ "@esbuild/freebsd-arm64": "0.16.17",
+ "@esbuild/freebsd-x64": "0.16.17",
+ "@esbuild/linux-arm": "0.16.17",
+ "@esbuild/linux-arm64": "0.16.17",
+ "@esbuild/linux-ia32": "0.16.17",
+ "@esbuild/linux-loong64": "0.16.17",
+ "@esbuild/linux-mips64el": "0.16.17",
+ "@esbuild/linux-ppc64": "0.16.17",
+ "@esbuild/linux-riscv64": "0.16.17",
+ "@esbuild/linux-s390x": "0.16.17",
+ "@esbuild/linux-x64": "0.16.17",
+ "@esbuild/netbsd-x64": "0.16.17",
+ "@esbuild/openbsd-x64": "0.16.17",
+ "@esbuild/sunos-x64": "0.16.17",
+ "@esbuild/win32-arm64": "0.16.17",
+ "@esbuild/win32-ia32": "0.16.17",
+ "@esbuild/win32-x64": "0.16.17"
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.4.27.tgz",
+ "integrity": "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/compiler-sfc": "3.4.27",
+ "@vue/runtime-dom": "3.4.27",
+ "@vue/server-renderer": "3.4.27",
+ "@vue/shared": "3.4.27"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-i18n": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz",
+ "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==",
+ "dependencies": {
+ "@intlify/core-base": "9.13.1",
+ "@intlify/shared": "9.13.1",
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/vue-i18n/node_modules/@intlify/core-base": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz",
+ "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==",
+ "dependencies": {
+ "@intlify/message-compiler": "9.13.1",
+ "@intlify/shared": "9.13.1"
+ },
+ "engines": {
+ "node": ">= 16"
+ }
+ },
+ "node_modules/vue-i18n/node_modules/@intlify/message-compiler": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz",
+ "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==",
+ "dependencies": {
+ "@intlify/shared": "9.13.1",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 16"
+ }
+ },
+ "node_modules/vue-i18n/node_modules/@intlify/shared": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz",
+ "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==",
+ "engines": {
+ "node": ">= 16"
+ }
+ },
+ "node_modules/vue-router": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.3.2.tgz",
+ "integrity": "sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.1"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue-template-compiler": {
+ "version": "2.7.16",
+ "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
+ "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
+ "dev": true,
+ "dependencies": {
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
+ "node_modules/vue-tsc": {
+ "version": "1.8.27",
+ "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.8.27.tgz",
+ "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==",
+ "dev": true,
+ "dependencies": {
+ "@volar/typescript": "~1.11.1",
+ "@vue/language-core": "1.8.27",
+ "semver": "^7.5.4"
+ },
+ "bin": {
+ "vue-tsc": "bin/vue-tsc.js"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ }
+ },
+ "node_modules/vue-tsc/node_modules/semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vue/node_modules/@vue/compiler-core": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
+ "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
+ "dependencies": {
+ "@babel/parser": "^7.24.4",
+ "@vue/shared": "3.4.27",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/vue/node_modules/@vue/compiler-dom": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
+ "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
+ "dependencies": {
+ "@vue/compiler-core": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "node_modules/vue/node_modules/@vue/compiler-sfc": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz",
+ "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==",
+ "dependencies": {
+ "@babel/parser": "^7.24.4",
+ "@vue/compiler-core": "3.4.27",
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/compiler-ssr": "3.4.27",
+ "@vue/shared": "3.4.27",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.10",
+ "postcss": "^8.4.38",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/vue/node_modules/@vue/compiler-ssr": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",
+ "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "node_modules/vue/node_modules/@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
+ },
+ "node_modules/w3c-hr-time": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+ "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+ "node_modules/w3c-xmlserializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+ "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/walker": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/walker/-/walker-1.0.8.tgz",
+ "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "makeerror": "1.0.12"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
+ "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10.4"
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz",
+ "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+ "dev": true,
+ "dependencies": {
+ "source-list-map": "^2.0.0",
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/webpack-virtual-modules": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz",
+ "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==",
+ "dev": true
+ },
+ "node_modules/weixin-js-sdk": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmmirror.com/weixin-js-sdk/-/weixin-js-sdk-1.6.5.tgz",
+ "integrity": "sha512-Gph1WAWB2YN/lMOFB/ymb+hbU/wYazzJgu6PMMktCy9cSCeW5wA6Zwt0dpahJbJ+RJEwtTv2x9iIu0U4enuVSQ=="
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/whatwg-url": {
+ "version": "8.7.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-8.7.0.tgz",
+ "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "lodash": "^4.7.0",
+ "tr46": "^2.1.0",
+ "webidl-conversions": "^6.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-module": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
+ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+ },
+ "node_modules/windicss": {
+ "version": "3.5.6",
+ "resolved": "https://registry.npmmirror.com/windicss/-/windicss-3.5.6.tgz",
+ "integrity": "sha512-P1mzPEjgFMZLX0ZqfFht4fhV/FX8DTG7ERG1fBLiWvd34pTLVReS5CVsewKn9PApSgXnVfPWwvq+qUsRwpnwFA==",
+ "dev": true,
+ "bin": {
+ "windicss": "cli/index.js"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/windicss-webpack-plugin": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/windicss-webpack-plugin/-/windicss-webpack-plugin-1.8.0.tgz",
+ "integrity": "sha512-zCzNLJ4hjgl5A2+mq8XlPtbvM5RONNz/ol93YG9tcMSn+aH/6Ll/lA5UDnVJluBr8b2Ch5C/GIqXcIMGG8mmdA==",
+ "dev": true,
+ "dependencies": {
+ "@windicss/plugin-utils": "^1.9.1",
+ "debug": "^4.3.4",
+ "get-port": "^6.1.2",
+ "loader-utils": "^2.0.0",
+ "lodash": "^4.17.21",
+ "pathe": "^1.1.0",
+ "webpack-virtual-modules": "^0.5.0",
+ "windicss": "^3.5.6"
+ }
+ },
+ "node_modules/windicss-webpack-plugin/node_modules/loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=8.9.0"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.17.0",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-8.17.0.tgz",
+ "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xhr": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmmirror.com/xhr/-/xhr-2.6.0.tgz",
+ "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==",
+ "dependencies": {
+ "global": "~4.4.0",
+ "is-function": "^1.0.1",
+ "parse-headers": "^2.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "node_modules/xml-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/xml-parse-from-string": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz",
+ "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g=="
+ },
+ "node_modules/xml2js": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.5.0.tgz",
+ "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/xmlhttprequest": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+ "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/xregexp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/xregexp/-/xregexp-3.1.0.tgz",
+ "integrity": "sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg=="
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ },
+ "node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ }
+ }
+ },
+ "dependencies": {
+ "@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "@antfu/utils": {
+ "version": "0.7.8",
+ "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.8.tgz",
+ "integrity": "sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==",
+ "dev": true
+ },
+ "@babel/code-frame": {
+ "version": "7.24.2",
+ "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.24.2.tgz",
+ "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==",
+ "requires": {
+ "@babel/highlight": "^7.24.2",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.24.4",
+ "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.24.4.tgz",
+ "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ=="
+ },
+ "@babel/core": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.24.5.tgz",
+ "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==",
+ "requires": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.24.2",
+ "@babel/generator": "^7.24.5",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.24.5",
+ "@babel/helpers": "^7.24.5",
+ "@babel/parser": "^7.24.5",
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.5",
+ "@babel/types": "^7.24.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.24.5.tgz",
+ "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==",
+ "requires": {
+ "@babel/types": "^7.24.5",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^2.5.1"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz",
+ "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.15"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+ "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "requires": {
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "browserslist": "^4.22.2",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz",
+ "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-member-expression-to-functions": "^7.24.5",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.24.1",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.24.5",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/helper-create-regexp-features-plugin": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz",
+ "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "regexpu-core": "^5.3.1",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/helper-define-polyfill-provider": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
+ "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
+ }
+ },
+ "@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA=="
+ },
+ "@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "requires": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz",
+ "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.24.5"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.24.3",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz",
+ "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==",
+ "requires": {
+ "@babel/types": "^7.24.0"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz",
+ "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==",
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.24.3",
+ "@babel/helper-simple-access": "^7.24.5",
+ "@babel/helper-split-export-declaration": "^7.24.5",
+ "@babel/helper-validator-identifier": "^7.24.5"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+ "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz",
+ "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==",
+ "dev": true
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz",
+ "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-wrap-function": "^7.22.20"
+ }
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz",
+ "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-member-expression-to-functions": "^7.23.0",
+ "@babel/helper-optimise-call-expression": "^7.22.5"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz",
+ "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==",
+ "requires": {
+ "@babel/types": "^7.24.5"
+ }
+ },
+ "@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+ "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz",
+ "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==",
+ "requires": {
+ "@babel/types": "^7.24.5"
+ }
+ },
+ "@babel/helper-string-parser": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz",
+ "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ=="
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz",
+ "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA=="
+ },
+ "@babel/helper-validator-option": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw=="
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz",
+ "integrity": "sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/template": "^7.24.0",
+ "@babel/types": "^7.24.5"
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.24.5.tgz",
+ "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==",
+ "requires": {
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.5",
+ "@babel/types": "^7.24.5"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.24.5.tgz",
+ "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.24.5",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.24.5.tgz",
+ "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg=="
+ },
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz",
+ "integrity": "sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-plugin-utils": "^7.24.5"
+ }
+ },
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz",
+ "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz",
+ "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-transform-optional-chaining": "^7.24.1"
+ }
+ },
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz",
+ "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmmirror.com/@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,
+ "requires": {}
+ },
+ "@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-bigint": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+ "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ }
+ },
+ "@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-syntax-import-assertions": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz",
+ "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-syntax-import-attributes": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz",
+ "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@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-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz",
+ "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-typescript": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz",
+ "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@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.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz",
+ "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-async-generator-functions": {
+ "version": "7.24.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz",
+ "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-remap-async-to-generator": "^7.22.20",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz",
+ "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.24.1",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-remap-async-to-generator": "^7.22.20"
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz",
+ "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-block-scoping": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz",
+ "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.5"
+ }
+ },
+ "@babel/plugin-transform-class-properties": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz",
+ "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.24.1",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-class-static-block": {
+ "version": "7.24.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz",
+ "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.24.4",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz",
+ "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-plugin-utils": "^7.24.5",
+ "@babel/helper-replace-supers": "^7.24.1",
+ "@babel/helper-split-export-declaration": "^7.24.5",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz",
+ "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/template": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz",
+ "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.5"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz",
+ "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-duplicate-keys": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz",
+ "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-dynamic-import": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz",
+ "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz",
+ "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-export-namespace-from": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz",
+ "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-for-of": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz",
+ "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz",
+ "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-json-strings": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz",
+ "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-literals": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz",
+ "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz",
+ "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz",
+ "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-modules-amd": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz",
+ "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz",
+ "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-simple-access": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-modules-systemjs": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz",
+ "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ }
+ },
+ "@babel/plugin-transform-modules-umd": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz",
+ "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
+ "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-new-target": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz",
+ "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz",
+ "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-numeric-separator": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz",
+ "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-object-rest-spread": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz",
+ "integrity": "sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-plugin-utils": "^7.24.5",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.24.5"
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz",
+ "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-replace-supers": "^7.24.1"
+ }
+ },
+ "@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz",
+ "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-optional-chaining": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz",
+ "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz",
+ "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.5"
+ }
+ },
+ "@babel/plugin-transform-private-methods": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz",
+ "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.24.1",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-private-property-in-object": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz",
+ "integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.24.5",
+ "@babel/helper-plugin-utils": "^7.24.5",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz",
+ "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-regenerator": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz",
+ "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "regenerator-transform": "^0.15.2"
+ }
+ },
+ "@babel/plugin-transform-reserved-words": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz",
+ "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz",
+ "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-spread": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz",
+ "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz",
+ "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-template-literals": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz",
+ "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-typeof-symbol": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz",
+ "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.5"
+ }
+ },
+ "@babel/plugin-transform-typescript": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz",
+ "integrity": "sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.24.5",
+ "@babel/helper-plugin-utils": "^7.24.5",
+ "@babel/plugin-syntax-typescript": "^7.24.1"
+ }
+ },
+ "@babel/plugin-transform-unicode-escapes": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz",
+ "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz",
+ "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz",
+ "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz",
+ "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.24.0"
+ }
+ },
+ "@babel/preset-env": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.24.5.tgz",
+ "integrity": "sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.24.4",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-plugin-utils": "^7.24.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.5",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-import-assertions": "^7.24.1",
+ "@babel/plugin-syntax-import-attributes": "^7.24.1",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.24.1",
+ "@babel/plugin-transform-async-generator-functions": "^7.24.3",
+ "@babel/plugin-transform-async-to-generator": "^7.24.1",
+ "@babel/plugin-transform-block-scoped-functions": "^7.24.1",
+ "@babel/plugin-transform-block-scoping": "^7.24.5",
+ "@babel/plugin-transform-class-properties": "^7.24.1",
+ "@babel/plugin-transform-class-static-block": "^7.24.4",
+ "@babel/plugin-transform-classes": "^7.24.5",
+ "@babel/plugin-transform-computed-properties": "^7.24.1",
+ "@babel/plugin-transform-destructuring": "^7.24.5",
+ "@babel/plugin-transform-dotall-regex": "^7.24.1",
+ "@babel/plugin-transform-duplicate-keys": "^7.24.1",
+ "@babel/plugin-transform-dynamic-import": "^7.24.1",
+ "@babel/plugin-transform-exponentiation-operator": "^7.24.1",
+ "@babel/plugin-transform-export-namespace-from": "^7.24.1",
+ "@babel/plugin-transform-for-of": "^7.24.1",
+ "@babel/plugin-transform-function-name": "^7.24.1",
+ "@babel/plugin-transform-json-strings": "^7.24.1",
+ "@babel/plugin-transform-literals": "^7.24.1",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.24.1",
+ "@babel/plugin-transform-member-expression-literals": "^7.24.1",
+ "@babel/plugin-transform-modules-amd": "^7.24.1",
+ "@babel/plugin-transform-modules-commonjs": "^7.24.1",
+ "@babel/plugin-transform-modules-systemjs": "^7.24.1",
+ "@babel/plugin-transform-modules-umd": "^7.24.1",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
+ "@babel/plugin-transform-new-target": "^7.24.1",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1",
+ "@babel/plugin-transform-numeric-separator": "^7.24.1",
+ "@babel/plugin-transform-object-rest-spread": "^7.24.5",
+ "@babel/plugin-transform-object-super": "^7.24.1",
+ "@babel/plugin-transform-optional-catch-binding": "^7.24.1",
+ "@babel/plugin-transform-optional-chaining": "^7.24.5",
+ "@babel/plugin-transform-parameters": "^7.24.5",
+ "@babel/plugin-transform-private-methods": "^7.24.1",
+ "@babel/plugin-transform-private-property-in-object": "^7.24.5",
+ "@babel/plugin-transform-property-literals": "^7.24.1",
+ "@babel/plugin-transform-regenerator": "^7.24.1",
+ "@babel/plugin-transform-reserved-words": "^7.24.1",
+ "@babel/plugin-transform-shorthand-properties": "^7.24.1",
+ "@babel/plugin-transform-spread": "^7.24.1",
+ "@babel/plugin-transform-sticky-regex": "^7.24.1",
+ "@babel/plugin-transform-template-literals": "^7.24.1",
+ "@babel/plugin-transform-typeof-symbol": "^7.24.5",
+ "@babel/plugin-transform-unicode-escapes": "^7.24.1",
+ "@babel/plugin-transform-unicode-property-regex": "^7.24.1",
+ "@babel/plugin-transform-unicode-regex": "^7.24.1",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.24.1",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "babel-plugin-polyfill-corejs2": "^0.4.10",
+ "babel-plugin-polyfill-corejs3": "^0.10.4",
+ "babel-plugin-polyfill-regenerator": "^0.6.1",
+ "core-js-compat": "^3.31.0",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmmirror.com/@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/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+ "dev": true
+ },
+ "@babel/runtime": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.5.tgz",
+ "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==",
+ "requires": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "dependencies": {
+ "regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ }
+ }
+ },
+ "@babel/template": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.24.0.tgz",
+ "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
+ "requires": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/parser": "^7.24.0",
+ "@babel/types": "^7.24.0"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.24.5.tgz",
+ "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==",
+ "requires": {
+ "@babel/code-frame": "^7.24.2",
+ "@babel/generator": "^7.24.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.24.5",
+ "@babel/parser": "^7.24.5",
+ "@babel/types": "^7.24.5",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.24.5",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.24.5.tgz",
+ "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==",
+ "requires": {
+ "@babel/helper-string-parser": "^7.24.1",
+ "@babel/helper-validator-identifier": "^7.24.5",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true,
+ "peer": true
+ },
+ "@dcasia/mini-program-tailwind-webpack-plugin": {
+ "version": "1.5.7",
+ "resolved": "https://registry.npmmirror.com/@dcasia/mini-program-tailwind-webpack-plugin/-/mini-program-tailwind-webpack-plugin-1.5.7.tgz",
+ "integrity": "sha512-BXcYi8iAFh9qRewsJPT9+paxBto5zdLLmad1Yx1GkZXmKFE6W7qHDRWxOmskXFtSCzCKdomFqZG2RzW1eBzMZg==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.17.5",
+ "@vivaxy/wxml": "^2.1.0",
+ "micromatch": "^4.0.5",
+ "postcss": "^8.4.7",
+ "webpack-sources": "^1.4.3",
+ "windicss-webpack-plugin": "^1.7.2"
+ }
+ },
+ "@dcloudio/types": {
+ "version": "3.4.8",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/types/-/types-3.4.8.tgz",
+ "integrity": "sha512-IPXuoghLv7qNPOnRuP7vC5++MdRHhE0U7EMw9ia//uOh69fFXZiRTfoHd51+nzciD6R50gqYhbrCCZIxnxhM9Q=="
+ },
+ "@dcloudio/uni-app": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app/-/uni-app-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-6fip3G+s6pJDudu+Rsy/v7CtGYzjcc0ZjjKYZuXttM1Vgkg3QD1/qHhJW27Vb+nmzfL+Wg1tbRhTl7kgA+8TVA==",
+ "requires": {
+ "@dcloudio/uni-cloud": "3.0.0-3080720230703001",
+ "@dcloudio/uni-components": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-push": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-stat": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@dcloudio/uni-app-plus": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-plus/-/uni-app-plus-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-WGHniWrEJPIAVP3GDp+maf30fZz/Dc+gAfiPMDWvQdE12nAcnpbgnmaLEPifPDeeV2dr7/VuxoVM+Z2M5AlN1Q==",
+ "requires": {
+ "@dcloudio/uni-app-uts": "3.0.0-3080720230703001",
+ "@dcloudio/uni-app-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-app-vue": "3.0.0-3080720230703001",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "licia": "^1.29.0",
+ "postcss-selector-parser": "^6.0.6"
+ }
+ },
+ "@dcloudio/uni-app-uts": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-uts/-/uni-app-uts-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-6GXBYE3/bfliADNMmnmm2UHLpzR2BF5hgs/ExIXcC9sMOxDAUd149R+YsDp9HUfUc+dA32DXHHjoQOhYunZTTA==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@babel/types": "^7.20.7",
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-nvue-styler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3",
+ "es-module-lexer": "^1.2.1",
+ "fs-extra": "^10.0.0",
+ "picocolors": "^1.0.0",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@dcloudio/uni-app-vite": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-vite/-/uni-app-vite-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-OAFjSfrin2pLuBBfDMg3qvm7ZCS3Vqt0/CDxRicc7lD6ioiahUvaXdLhARTWykoO6rlYjbIckDmg3HuBbb3wjA==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-nvue-styler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vitejs/plugin-vue": "^4.2.1",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "@dcloudio/uni-app-vue": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-app-vue/-/uni-app-vue-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-VTeoupAGJ1GREy2GvB+E29KPkIoHJ0C9ElvxcNpT0bEYWXMAE8m+O6D10aI8Qfwn1dObnxx6ohaRCbrDG9TG3w=="
+ },
+ "@dcloudio/uni-automator": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-automator/-/uni-automator-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-DbvYu6uGA+My5l103RgZ5BfqSlxGN5NbvK59ELH0NhK5mGge/f8RQPJ9zPz2rlLJT9/GUzjaw7b+f4FELeRpHg==",
+ "dev": true,
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "address": "^1.1.2",
+ "cross-env": "^7.0.3",
+ "debug": "^4.3.3",
+ "default-gateway": "^6.0.3",
+ "fs-extra": "^10.0.0",
+ "jsonc-parser": "^3.2.0",
+ "licia": "^1.29.0",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ }
+ },
+ "@dcloudio/uni-cli-shared": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-cli-shared/-/uni-cli-shared-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-WP5IfAXIlinWs/ItHu2/EP746kSCxl9+I8wBC6BfI4xq8RD2ga6F5WJt/+blBzbp2gVnJsW/13eafUQs5T3RFA==",
+ "requires": {
+ "@ampproject/remapping": "^2.1.2",
+ "@babel/core": "^7.21.3",
+ "@babel/parser": "^7.16.4",
+ "@babel/types": "^7.20.7",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@intlify/core-base": "9.1.9",
+ "@intlify/shared": "9.1.9",
+ "@intlify/vue-devtools": "9.1.9",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "autoprefixer": "^10.4.14",
+ "base64url": "^3.0.1",
+ "chokidar": "^3.5.3",
+ "compare-versions": "^3.6.0",
+ "debug": "^4.3.3",
+ "es-module-lexer": "^1.2.1",
+ "esbuild": "^0.17.5",
+ "estree-walker": "^2.0.2",
+ "fast-glob": "^3.2.11",
+ "fs-extra": "^10.0.0",
+ "hash-sum": "^2.0.0",
+ "jsonc-parser": "^3.0.0",
+ "magic-string": "^0.30.0",
+ "merge": "^2.1.1",
+ "mime": "^3.0.0",
+ "module-alias": "^2.2.2",
+ "os-locale-s-fix": "^1.0.8-fix-1",
+ "picocolors": "^1.0.0",
+ "postcss-import": "^14.0.2",
+ "postcss-load-config": "^3.1.1",
+ "postcss-modules": "^4.3.0",
+ "postcss-selector-parser": "^6.0.6",
+ "resolve": "^1.22.1",
+ "tapable": "^2.2.0",
+ "xregexp": "3.1.0"
+ },
+ "dependencies": {
+ "@vue/reactivity": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
+ "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+ "peer": true,
+ "requires": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
+ "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+ "peer": true,
+ "requires": {
+ "@vue/reactivity": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
+ "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+ "peer": true,
+ "requires": {
+ "@vue/runtime-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "csstype": "^2.6.8"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
+ "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+ "requires": {
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "peer": true
+ },
+ "vue": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
+ "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
+ "peer": true,
+ "requires": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/runtime-dom": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ }
+ }
+ },
+ "@dcloudio/uni-cloud": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-cloud/-/uni-cloud-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-xulo8fMQZ6+DsU7Bs6Re7i51OVF/tzT72GmooXvvNt3H+5XUAo/1mQIIiNlxeR4sKesR8Y9n7j+Z4dfs/2ce9w==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47",
+ "fast-glob": "^3.2.11"
+ }
+ },
+ "@dcloudio/uni-components": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-components/-/uni-components-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-Ggd7m9TOxdLZxfJ1PWkUBowTUyYVH1WuPsooMWmJNRkMpvnAtK6ZPdS0ThdglX0F/FT82IUUC+wdeZtFG/QRcA==",
+ "requires": {
+ "@dcloudio/uni-cloud": "3.0.0-3080720230703001",
+ "@dcloudio/uni-h5": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001"
+ }
+ },
+ "@dcloudio/uni-h5": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-h5/-/uni-h5-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-brRSBmxzg07Bt86AhJ70T0wsJBaDjgRAaAND0QsRQAaQfRFyEjqU1wp+x4Dt7GoNbg5hmNEabhdJKv24RweMnA==",
+ "requires": {
+ "@dcloudio/uni-h5-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-h5-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3",
+ "localstorage-polyfill": "^1.0.1",
+ "postcss-selector-parser": "^6.0.6",
+ "safe-area-insets": "^1.4.1",
+ "vue-router": "^4.1.6",
+ "xmlhttprequest": "^1.8.0"
+ },
+ "dependencies": {
+ "@vue/reactivity": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
+ "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+ "peer": true,
+ "requires": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
+ "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+ "peer": true,
+ "requires": {
+ "@vue/reactivity": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
+ "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+ "peer": true,
+ "requires": {
+ "@vue/runtime-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "csstype": "^2.6.8"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
+ "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+ "requires": {
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "peer": true
+ },
+ "vue": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
+ "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
+ "peer": true,
+ "requires": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/runtime-dom": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ }
+ }
+ },
+ "@dcloudio/uni-h5-vite": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-h5-vite/-/uni-h5-vite-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-bqPj6p2Zj0TIMOoUFCryPaBR/LIGMdHg5vDGlxoU1F84VdtCXlgDTodbp/4n24MDCd6KiuHZEyURt4jODtxd8Q==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3",
+ "fs-extra": "^10.0.0",
+ "mime": "^3.0.0",
+ "module-alias": "^2.2.2"
+ },
+ "dependencies": {
+ "@vue/reactivity": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
+ "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+ "peer": true,
+ "requires": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
+ "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+ "peer": true,
+ "requires": {
+ "@vue/reactivity": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
+ "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+ "peer": true,
+ "requires": {
+ "@vue/runtime-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "csstype": "^2.6.8"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
+ "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+ "requires": {
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "peer": true
+ },
+ "vue": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
+ "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
+ "peer": true,
+ "requires": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/runtime-dom": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ }
+ }
+ },
+ "@dcloudio/uni-h5-vue": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-h5-vue/-/uni-h5-vue-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-dRb9y4bgVSvZgJySumu0ZLL+tb/K1KbHd7Rx5c2G9Q7Yw42y0rrooYgbKFQILw0LFF0bKpzZv0JjNwkpKcD/mA==",
+ "requires": {
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/server-renderer": "3.2.47"
+ },
+ "dependencies": {
+ "@vue/reactivity": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
+ "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+ "peer": true,
+ "requires": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
+ "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+ "peer": true,
+ "requires": {
+ "@vue/reactivity": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
+ "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+ "peer": true,
+ "requires": {
+ "@vue/runtime-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "csstype": "^2.6.8"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
+ "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+ "requires": {
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "csstype": {
+ "version": "2.6.21",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
+ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
+ "peer": true
+ },
+ "vue": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
+ "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
+ "peer": true,
+ "requires": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/runtime-dom": "3.2.47",
+ "@vue/server-renderer": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ }
+ }
+ },
+ "@dcloudio/uni-i18n": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-i18n/-/uni-i18n-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-fmN3HnHhq2GXgT+PlCiy1g9KAVAD1HASErnv4cKtu4YofJH6Nh+uWAfPNWwp/6ZfNgPrblku7Rq7qdDFEltFcg=="
+ },
+ "@dcloudio/uni-mp-alipay": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-alipay/-/uni-mp-alipay-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-qTBERfPRxa4e3cHzptD82kTNrleT6Mxl+hdzDMK4/xSD4XLiMb2ZKDqsG8MtAAvNpHMe8QKiEKXR2/Oljs8A9A==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@dcloudio/uni-mp-baidu": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-baidu/-/uni-mp-baidu-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-22llCMmOgpPuuWtaJ8pExLStvIoy+/KJLL09/a+Y87z3F+W40VfA6WFNNF3peVX22pw8fDvUBMDN9nCusAVrqA==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "jimp": "^0.10.1",
+ "licia": "^1.29.0",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ }
+ },
+ "@dcloudio/uni-mp-compiler": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-compiler/-/uni-mp-compiler-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-osLFR5CDm5xrQiSSh0fqXDCDam0Zg8mGMohHKFtqSbPoKHBxv+i4KkdU1Ai3MhutPXK4xMU6xk6PqQ2XhJmxAg==",
+ "requires": {
+ "@babel/generator": "^7.20.5",
+ "@babel/parser": "^7.16.4",
+ "@babel/types": "^7.20.7",
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2"
+ }
+ },
+ "@dcloudio/uni-mp-jd": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-jd/-/uni-mp-jd-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-5FJ0ZtJnCUTaPWLbdcpwAfPG/XGAlyanWolgdwzq0eFMQtAGtcrbCCv2GXXcErMjDyDbM4LRBS3JPEmcBLe5Zw==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@dcloudio/uni-mp-kuaishou": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-kuaishou/-/uni-mp-kuaishou-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-t1H8YaS5HUYNI/ArKTPaK17JqNyvLC4ge+oJpAtW1gJOxT/qdRE7BPyfIfoKUoN0QlDxQiuxbvz1ILdT00u0yg==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@dcloudio/uni-mp-lark": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-lark/-/uni-mp-lark-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-3E+vRxFypvcdTMPIGlfI3WWAVlUi3/IfKc0eM53YqNGHFTnzJOAofvFABqE6hcY24FjwepgNDttGddbaE8LtKA==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@dcloudio/uni-mp-qq": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-qq/-/uni-mp-qq-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-nx9PoO/+zFWlA54O20aXj/gaefUHLqBrhrKPNERAphafFembjudIvo/YS1tjlDk5idJ9G+J5XJNWL60eQcnKNA==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47",
+ "fs-extra": "^10.0.0"
+ }
+ },
+ "@dcloudio/uni-mp-toutiao": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-toutiao/-/uni-mp-toutiao-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-x39UGX+gelydwYXnDX8YlD7qCpwAWzUwY3DuDNig3GAmtBiBMheM4nQKxxs0zrImRB77eUffwtNn+1+kvTvjyA==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@dcloudio/uni-mp-vite": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-vite/-/uni-mp-vite-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-KGi1tfIrlzGx9vbcrU979I56jaZ+kpQsm+SfKOYg2j6JezQ0/GFqHEHaDdiAdhSZcTX759Qs1PXZmXFxMdDFDA==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-i18n": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-compiler": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "debug": "^4.3.3"
+ }
+ },
+ "@dcloudio/uni-mp-vue": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-vue/-/uni-mp-vue-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-Fo0lNHwGhVV2ceaU4Cta8OmB831k6PhJttpaJ18R0o1AM0RykI8NCw2OUuZ5Ex/TedoyejQBxs6skMDCvPb5IQ==",
+ "requires": {
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@dcloudio/uni-mp-weixin": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-weixin/-/uni-mp-weixin-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-8S+6I1OuGk8r+s5nNfqo+Cq+BrK0M+RksDQUtkI8z2e798GrWZiHbTqQ89pEwVdtkhP5G+5orqUg6e5NCLaskQ==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47",
+ "jimp": "^0.10.1",
+ "licia": "^1.29.0",
+ "qrcode-reader": "^1.0.4",
+ "qrcode-terminal": "^0.12.0",
+ "ws": "^8.4.2"
+ }
+ },
+ "@dcloudio/uni-nvue-styler": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-nvue-styler/-/uni-nvue-styler-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-nhWQ/B/AYYqJZ/7HCmSWylARJ2dRrRyYVwBVs1Re8yk8SoaEkTvvgt5jas3tqjIxhyi5M8hzXeaxdpkY1Jgsyw==",
+ "requires": {
+ "@vue/shared": "3.2.47",
+ "parse-css-font": "^4.0.0",
+ "postcss": "^8.4.23"
+ }
+ },
+ "@dcloudio/uni-push": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-push/-/uni-push-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-q0chMYDBdj+KGxj/pA2hOm356tPU9WsVxjB2f7JW3Ue6JUNl5snuq0Rk1C/s1IDDAU8W4DTgb9KjsRYTXHV77w==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001"
+ }
+ },
+ "@dcloudio/uni-quickapp-webview": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-quickapp-webview/-/uni-quickapp-webview-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-LgV/CvGVp2IyLbIDeir4rPRAi+eglJLrBl86LT1ey+YA/Jecoz9LH4fHhB5gJEedm+KUqL7hjxd7F/XcrIULzg==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vite": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-vue": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@dcloudio/uni-shared": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-shared/-/uni-shared-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-saa7FGqduwcEe0jxntYAFCE6wAtSM9aNG52uLAW5m0c4uRNYVFWJltBkm8Ev7eyko2xkvNhoQAGIGXDTQ+Hxhw==",
+ "requires": {
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@dcloudio/uni-stacktracey": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-stacktracey/-/uni-stacktracey-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-xo0O4sQ9gXa0wg1V1I13l/6JxQSTmfTcjyyQWOb3t5E/ME6tVo/RSlA0QN/Guo9XlogmQXs99D30NW/r3KGdJA==",
+ "dev": true
+ },
+ "@dcloudio/uni-stat": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/uni-stat/-/uni-stat-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-jzX9nRWk24udvVneFVA/8cfzqedib/nHbTO6GsFPamc6KDFa7QXhLy2m+BV+3inLiMkedfVnvgxNkZDigujyLw==",
+ "requires": {
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "debug": "^4.3.3"
+ }
+ },
+ "@dcloudio/vite-plugin-uni": {
+ "version": "3.0.0-3080720230703001",
+ "resolved": "https://registry.npmmirror.com/@dcloudio/vite-plugin-uni/-/vite-plugin-uni-3.0.0-3080720230703001.tgz",
+ "integrity": "sha512-PMDGsIDjBuoGNzzNPxLAHrXEzBsA2huoZgjbaGa3H8N+4cnbJZmEJEsy/OVdA3I9lrgZ+H6QW95qIA5aVO6djA==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.21.3",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-transform-typescript": "^7.20.7",
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-shared": "3.0.0-3080720230703001",
+ "@rollup/pluginutils": "^4.2.0",
+ "@vitejs/plugin-legacy": "^4.0.3",
+ "@vitejs/plugin-vue": "^4.2.1",
+ "@vitejs/plugin-vue-jsx": "^3.0.1",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-sfc": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "cac": "6.7.9",
+ "debug": "^4.3.3",
+ "estree-walker": "^2.0.2",
+ "express": "^4.17.1",
+ "fast-glob": "^3.2.11",
+ "fs-extra": "^10.0.0",
+ "hash-sum": "^2.0.0",
+ "jsonc-parser": "^3.0.0",
+ "magic-string": "^0.30.0",
+ "picocolors": "^1.0.0",
+ "terser": "^5.4.0"
+ }
+ },
+ "@esbuild/android-arm": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz",
+ "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==",
+ "optional": true
+ },
+ "@esbuild/android-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz",
+ "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==",
+ "optional": true
+ },
+ "@esbuild/android-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz",
+ "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==",
+ "optional": true
+ },
+ "@esbuild/darwin-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz",
+ "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==",
+ "optional": true
+ },
+ "@esbuild/darwin-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz",
+ "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==",
+ "optional": true
+ },
+ "@esbuild/freebsd-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz",
+ "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==",
+ "optional": true
+ },
+ "@esbuild/freebsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz",
+ "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==",
+ "optional": true
+ },
+ "@esbuild/linux-arm": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz",
+ "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==",
+ "optional": true
+ },
+ "@esbuild/linux-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz",
+ "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==",
+ "optional": true
+ },
+ "@esbuild/linux-ia32": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz",
+ "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==",
+ "optional": true
+ },
+ "@esbuild/linux-loong64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz",
+ "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==",
+ "optional": true
+ },
+ "@esbuild/linux-mips64el": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz",
+ "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==",
+ "optional": true
+ },
+ "@esbuild/linux-ppc64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz",
+ "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==",
+ "optional": true
+ },
+ "@esbuild/linux-riscv64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz",
+ "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==",
+ "optional": true
+ },
+ "@esbuild/linux-s390x": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz",
+ "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==",
+ "optional": true
+ },
+ "@esbuild/linux-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz",
+ "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==",
+ "optional": true
+ },
+ "@esbuild/netbsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz",
+ "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==",
+ "optional": true
+ },
+ "@esbuild/openbsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz",
+ "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==",
+ "optional": true
+ },
+ "@esbuild/sunos-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz",
+ "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==",
+ "optional": true
+ },
+ "@esbuild/win32-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz",
+ "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==",
+ "optional": true
+ },
+ "@esbuild/win32-ia32": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz",
+ "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==",
+ "optional": true
+ },
+ "@esbuild/win32-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz",
+ "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==",
+ "optional": true
+ },
+ "@intlify/core-base": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@intlify/message-resolver/-/message-resolver-9.1.9.tgz",
+ "integrity": "sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA=="
+ },
+ "@intlify/runtime": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@intlify/shared/-/shared-9.1.9.tgz",
+ "integrity": "sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw=="
+ },
+ "@intlify/vue-devtools": {
+ "version": "9.1.9",
+ "resolved": "https://registry.npmmirror.com/@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"
+ }
+ },
+ "@istanbuljs/load-nyc-config": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+ "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "get-package-type": "^0.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmmirror.com/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "peer": true
+ },
+ "@jest/console": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/console/-/console-27.5.1.tgz",
+ "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@jest/core": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/core/-/core-27.5.1.tgz",
+ "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/console": "^27.5.1",
+ "@jest/reporters": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "jest-changed-files": "^27.5.1",
+ "jest-config": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-resolve-dependencies": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "jest-watcher": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "rimraf": "^3.0.0",
+ "slash": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@jest/environment": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/environment/-/environment-27.5.1.tgz",
+ "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1"
+ }
+ },
+ "@jest/fake-timers": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz",
+ "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/types": "^27.5.1",
+ "@sinonjs/fake-timers": "^8.0.1",
+ "@types/node": "*",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ }
+ },
+ "@jest/globals": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/globals/-/globals-27.5.1.tgz",
+ "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/environment": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "expect": "^27.5.1"
+ }
+ },
+ "@jest/reporters": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/reporters/-/reporters-27.5.1.tgz",
+ "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@jest/console": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "exit": "^0.1.2",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.2.9",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-instrument": "^5.1.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.1.3",
+ "jest-haste-map": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.0",
+ "string-length": "^4.0.1",
+ "terminal-link": "^2.0.0",
+ "v8-to-istanbul": "^8.1.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@jest/source-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/source-map/-/source-map-27.5.1.tgz",
+ "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "callsites": "^3.0.0",
+ "graceful-fs": "^4.2.9",
+ "source-map": "^0.6.0"
+ }
+ },
+ "@jest/test-result": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/test-result/-/test-result-27.5.1.tgz",
+ "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/console": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "collect-v8-coverage": "^1.0.0"
+ }
+ },
+ "@jest/test-sequencer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz",
+ "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/test-result": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-runtime": "^27.5.1"
+ }
+ },
+ "@jest/transform": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/transform/-/transform-27.5.1.tgz",
+ "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/core": "^7.1.0",
+ "@jest/types": "^27.5.1",
+ "babel-plugin-istanbul": "^6.1.1",
+ "chalk": "^4.0.0",
+ "convert-source-map": "^1.4.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "pirates": "^4.0.4",
+ "slash": "^3.0.0",
+ "source-map": "^0.6.1",
+ "write-file-atomic": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@jest/types": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/@jest/types/-/types-27.5.1.tgz",
+ "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^16.0.0",
+ "chalk": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@jimp/bmp": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.5",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "requires": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="
+ },
+ "@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="
+ },
+ "@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "devOptional": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "requires": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/@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"
+ }
+ },
+ "@rollup/plugin-commonjs": {
+ "version": "24.1.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz",
+ "integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==",
+ "dev": true,
+ "requires": {
+ "@rollup/pluginutils": "^5.0.1",
+ "commondir": "^1.0.1",
+ "estree-walker": "^2.0.2",
+ "glob": "^8.0.3",
+ "is-reference": "1.2.1",
+ "magic-string": "^0.27.0"
+ },
+ "dependencies": {
+ "@rollup/pluginutils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
+ "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+ "dev": true,
+ "requires": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "magic-string": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.27.0.tgz",
+ "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.4.13"
+ }
+ }
+ }
+ },
+ "@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "requires": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ }
+ },
+ "@sinonjs/commons": {
+ "version": "1.8.6",
+ "resolved": "https://registry.npmmirror.com/@sinonjs/commons/-/commons-1.8.6.tgz",
+ "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "type-detect": "4.0.8"
+ }
+ },
+ "@sinonjs/fake-timers": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
+ "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@sinonjs/commons": "^1.7.0"
+ }
+ },
+ "@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true,
+ "peer": true
+ },
+ "@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "@types/babel__generator": {
+ "version": "7.6.8",
+ "resolved": "https://registry.npmmirror.com/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+ "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmmirror.com/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@types/babel__traverse": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz",
+ "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "@types/estree": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
+ "dev": true
+ },
+ "@types/graceful-fs": {
+ "version": "4.1.9",
+ "resolved": "https://registry.npmmirror.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
+ "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "dev": true,
+ "peer": true
+ },
+ "@types/istanbul-lib-report": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+ "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "@types/istanbul-reports": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "@types/node": {
+ "version": "20.12.12",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.12.12.tgz",
+ "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==",
+ "devOptional": true,
+ "requires": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "@types/prettier": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmmirror.com/@types/prettier/-/prettier-2.7.3.tgz",
+ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
+ "dev": true,
+ "peer": true
+ },
+ "@types/qrcode": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmmirror.com/@types/qrcode/-/qrcode-1.5.5.tgz",
+ "integrity": "sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/sortablejs": {
+ "version": "1.15.8",
+ "resolved": "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.15.8.tgz",
+ "integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==",
+ "dev": true
+ },
+ "@types/stack-utils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/@types/stack-utils/-/stack-utils-2.0.3.tgz",
+ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
+ "dev": true,
+ "peer": true
+ },
+ "@types/yargs": {
+ "version": "16.0.9",
+ "resolved": "https://registry.npmmirror.com/@types/yargs/-/yargs-16.0.9.tgz",
+ "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "@types/yargs-parser": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmmirror.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "dev": true,
+ "peer": true
+ },
+ "@vitejs/plugin-legacy": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-4.1.1.tgz",
+ "integrity": "sha512-um3gbVouD2Q/g19C0qpDfHwveXDCAHzs8OC3e9g6aXpKoD1H14himgs7wkMnhAynBJy7QqUoZNAXDuqN8zLR2g==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.22.9",
+ "@babel/preset-env": "^7.22.9",
+ "browserslist": "^4.21.9",
+ "core-js": "^3.31.1",
+ "magic-string": "^0.30.1",
+ "regenerator-runtime": "^0.13.11",
+ "systemjs": "^6.14.1"
+ }
+ },
+ "@vitejs/plugin-vue": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz",
+ "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==",
+ "requires": {}
+ },
+ "@vitejs/plugin-vue-jsx": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/@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"
+ }
+ },
+ "@vivaxy/wxml": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@vivaxy/wxml/-/wxml-2.1.0.tgz",
+ "integrity": "sha512-xqnfAB58tl5SPyfkQjrn7D7nuvq7XV9um7QUsjCrvA4X6aZBxcau9sAM47LsQTOpJIVPzjaKIMvq3ul07yZlOA==",
+ "dev": true
+ },
+ "@volar/language-core": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.11.1.tgz",
+ "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==",
+ "dev": true,
+ "requires": {
+ "@volar/source-map": "1.11.1"
+ }
+ },
+ "@volar/source-map": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.11.1.tgz",
+ "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==",
+ "dev": true,
+ "requires": {
+ "muggle-string": "^0.3.1"
+ }
+ },
+ "@volar/typescript": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.11.1.tgz",
+ "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==",
+ "dev": true,
+ "requires": {
+ "@volar/language-core": "1.11.1",
+ "path-browserify": "^1.0.1"
+ }
+ },
+ "@vue/babel-helper-vue-transform-on": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.2.tgz",
+ "integrity": "sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==",
+ "dev": true
+ },
+ "@vue/babel-plugin-jsx": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.2.tgz",
+ "integrity": "sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "~7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.23.3",
+ "@babel/template": "^7.23.9",
+ "@babel/traverse": "^7.23.9",
+ "@babel/types": "^7.23.9",
+ "@vue/babel-helper-vue-transform-on": "1.2.2",
+ "@vue/babel-plugin-resolve-type": "1.2.2",
+ "camelcase": "^6.3.0",
+ "html-tags": "^3.3.1",
+ "svg-tags": "^1.0.0"
+ },
+ "dependencies": {
+ "@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.15"
+ }
+ }
+ }
+ },
+ "@vue/babel-plugin-resolve-type": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.2.tgz",
+ "integrity": "sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/helper-module-imports": "~7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/parser": "^7.23.9",
+ "@vue/compiler-sfc": "^3.4.15"
+ },
+ "dependencies": {
+ "@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.15"
+ }
+ },
+ "@vue/compiler-core": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
+ "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.24.4",
+ "@vue/shared": "3.4.27",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
+ "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
+ "dev": true,
+ "requires": {
+ "@vue/compiler-core": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz",
+ "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.24.4",
+ "@vue/compiler-core": "3.4.27",
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/compiler-ssr": "3.4.27",
+ "@vue/shared": "3.4.27",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.10",
+ "postcss": "^8.4.38",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",
+ "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",
+ "dev": true,
+ "requires": {
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/compiler-core": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
+ "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
+ "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
+ "requires": {
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
+ "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/compiler-ssr": "3.2.47",
+ "@vue/reactivity-transform": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7",
+ "postcss": "^8.1.10",
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "requires": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ }
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
+ "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
+ "requires": {
+ "@vue/compiler-dom": "3.2.47",
+ "@vue/shared": "3.2.47"
+ }
+ },
+ "@vue/devtools-api": {
+ "version": "6.6.1",
+ "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.1.tgz",
+ "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA=="
+ },
+ "@vue/language-core": {
+ "version": "1.8.27",
+ "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.27.tgz",
+ "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==",
+ "dev": true,
+ "requires": {
+ "@volar/language-core": "~1.11.1",
+ "@volar/source-map": "~1.11.1",
+ "@vue/compiler-dom": "^3.3.0",
+ "@vue/shared": "^3.3.0",
+ "computeds": "^0.0.1",
+ "minimatch": "^9.0.3",
+ "muggle-string": "^0.3.1",
+ "path-browserify": "^1.0.1",
+ "vue-template-compiler": "^2.7.14"
+ },
+ "dependencies": {
+ "@vue/compiler-core": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
+ "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.24.4",
+ "@vue/shared": "3.4.27",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
+ "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
+ "dev": true,
+ "requires": {
+ "@vue/compiler-core": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ }
+ }
+ },
+ "@vue/reactivity": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.4.27.tgz",
+ "integrity": "sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==",
+ "requires": {
+ "@vue/shared": "3.4.27"
+ },
+ "dependencies": {
+ "@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
+ }
+ }
+ },
+ "@vue/reactivity-transform": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
+ "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.47",
+ "@vue/shared": "3.2.47",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ },
+ "dependencies": {
+ "magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "requires": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ }
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.27.tgz",
+ "integrity": "sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==",
+ "requires": {
+ "@vue/reactivity": "3.4.27",
+ "@vue/shared": "3.4.27"
+ },
+ "dependencies": {
+ "@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
+ }
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz",
+ "integrity": "sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==",
+ "requires": {
+ "@vue/runtime-core": "3.4.27",
+ "@vue/shared": "3.4.27",
+ "csstype": "^3.1.3"
+ },
+ "dependencies": {
+ "@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
+ }
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.27.tgz",
+ "integrity": "sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==",
+ "requires": {
+ "@vue/compiler-ssr": "3.4.27",
+ "@vue/shared": "3.4.27"
+ },
+ "dependencies": {
+ "@vue/compiler-core": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
+ "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
+ "requires": {
+ "@babel/parser": "^7.24.4",
+ "@vue/shared": "3.4.27",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
+ "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
+ "requires": {
+ "@vue/compiler-core": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",
+ "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",
+ "requires": {
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
+ }
+ }
+ },
+ "@vue/shared": {
+ "version": "3.2.47",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz",
+ "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ=="
+ },
+ "@vue/tsconfig": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmmirror.com/@vue/tsconfig/-/tsconfig-0.1.3.tgz",
+ "integrity": "sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==",
+ "dev": true,
+ "requires": {}
+ },
+ "@windicss/config": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/@windicss/config/-/config-1.9.3.tgz",
+ "integrity": "sha512-u8GUjsfC9r5X1AGYhzb1lX3zZj8wqk6SH1DYex8XUGmZ1M2UpvnUPOFi63XFViduspQ6l2xTX84QtG+lUzhEoQ==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.3.4",
+ "jiti": "^1.18.2",
+ "windicss": "^3.5.6"
+ }
+ },
+ "@windicss/plugin-utils": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/@windicss/plugin-utils/-/plugin-utils-1.9.3.tgz",
+ "integrity": "sha512-3VG5HEGeuIfG/9iTwLyzWWm/aGKNTbtSVkpkAabdRuDP/2lEmf6Hpo4uo5drwE+2O9gXfc6nSYgAwBjotx5CfQ==",
+ "dev": true,
+ "requires": {
+ "@antfu/utils": "^0.7.2",
+ "@windicss/config": "1.9.3",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.2.12",
+ "magic-string": "^0.30.0",
+ "micromatch": "^4.0.5",
+ "windicss": "^3.5.6"
+ }
+ },
+ "abab": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz",
+ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+ "dev": true,
+ "peer": true
+ },
+ "accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmmirror.com/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.11.3",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "devOptional": true
+ },
+ "acorn-globals": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-6.0.0.tgz",
+ "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "dev": true,
+ "peer": true
+ },
+ "address": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz",
+ "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
+ "dev": true
+ },
+ "agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "debug": "4"
+ }
+ },
+ "ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "type-fest": "^0.21.3"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/any-base/-/any-base-1.1.0.tgz",
+ "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="
+ },
+ "anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true,
+ "peer": true
+ },
+ "autoprefixer": {
+ "version": "10.4.19",
+ "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.19.tgz",
+ "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==",
+ "requires": {
+ "browserslist": "^4.23.0",
+ "caniuse-lite": "^1.0.30001599",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ }
+ },
+ "babel-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/babel-jest/-/babel-jest-27.5.1.tgz",
+ "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__core": "^7.1.14",
+ "babel-plugin-istanbul": "^6.1.1",
+ "babel-preset-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "slash": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "babel-plugin-istanbul": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
+ "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-instrument": "^5.0.4",
+ "test-exclude": "^6.0.0"
+ }
+ },
+ "babel-plugin-jest-hoist": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz",
+ "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/template": "^7.3.3",
+ "@babel/types": "^7.3.3",
+ "@types/babel__core": "^7.0.0",
+ "@types/babel__traverse": "^7.0.6"
+ }
+ },
+ "babel-plugin-polyfill-corejs2": {
+ "version": "0.4.11",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
+ "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.6.2",
+ "semver": "^6.3.1"
+ }
+ },
+ "babel-plugin-polyfill-corejs3": {
+ "version": "0.10.4",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz",
+ "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.6.1",
+ "core-js-compat": "^3.36.1"
+ }
+ },
+ "babel-plugin-polyfill-regenerator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
+ "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.6.2"
+ }
+ },
+ "babel-preset-current-node-syntax": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz",
+ "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-bigint": "^7.8.3",
+ "@babel/plugin-syntax-class-properties": "^7.8.3",
+ "@babel/plugin-syntax-import-meta": "^7.8.3",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.8.3",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-top-level-await": "^7.8.3"
+ }
+ },
+ "babel-preset-jest": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz",
+ "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "babel-plugin-jest-hoist": "^27.5.1",
+ "babel-preset-current-node-syntax": "^1.0.0"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "base64-arraybuffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+ "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
+ },
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+ },
+ "base64url": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/base64url/-/base64url-3.0.1.tgz",
+ "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A=="
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="
+ },
+ "bmp-js": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/bmp-js/-/bmp-js-0.1.0.tgz",
+ "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw=="
+ },
+ "body-parser": {
+ "version": "1.20.2",
+ "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.2.tgz",
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+ "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.11.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dev": true,
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "browser-process-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
+ "dev": true,
+ "peer": true
+ },
+ "browserslist": {
+ "version": "4.23.0",
+ "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.0.tgz",
+ "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
+ "requires": {
+ "caniuse-lite": "^1.0.30001587",
+ "electron-to-chromium": "^1.4.668",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
+ }
+ },
+ "bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/buffer-equal/-/buffer-equal-0.0.1.tgz",
+ "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA=="
+ },
+ "buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "devOptional": true
+ },
+ "bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true
+ },
+ "cac": {
+ "version": "6.7.9",
+ "resolved": "https://registry.npmmirror.com/cac/-/cac-6.7.9.tgz",
+ "integrity": "sha512-XN5qEpfNQCJ8jRaZgitSkkukjMRCGio+X3Ks5KUbGGlPbV+pSem1l9VuzooCBXOiMFshUZgyYqg6rgN8rjkb/w==",
+ "dev": true
+ },
+ "call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "dev": true,
+ "requires": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ }
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "peer": true
+ },
+ "camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001620",
+ "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz",
+ "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew=="
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "dev": true,
+ "peer": true
+ },
+ "chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "dev": true,
+ "peer": true
+ },
+ "cjs-module-lexer": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz",
+ "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==",
+ "dev": true,
+ "peer": true
+ },
+ "clipboard": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmmirror.com/clipboard/-/clipboard-2.0.11.tgz",
+ "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
+ "requires": {
+ "good-listener": "^1.2.2",
+ "select": "^1.1.2",
+ "tiny-emitter": "^2.0.0"
+ }
+ },
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmmirror.com/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "dev": true,
+ "peer": true
+ },
+ "collect-v8-coverage": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
+ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==",
+ "dev": true,
+ "peer": true
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "devOptional": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+ "dev": true
+ },
+ "compare-versions": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/compare-versions/-/compare-versions-3.6.0.tgz",
+ "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA=="
+ },
+ "computeds": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz",
+ "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "peer": true
+ },
+ "content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
+ },
+ "cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "dev": true
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true
+ },
+ "core-js": {
+ "version": "3.37.1",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.37.1.tgz",
+ "integrity": "sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw=="
+ },
+ "core-js-compat": {
+ "version": "3.37.1",
+ "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.37.1.tgz",
+ "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.23.0"
+ }
+ },
+ "cross-env": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/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.3",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz",
+ "integrity": "sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA=="
+ },
+ "css-line-break": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
+ "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+ "requires": {
+ "utrie": "^1.0.2"
+ }
+ },
+ "css-list-helpers": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
+ },
+ "cssom": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.4.4.tgz",
+ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
+ "dev": true,
+ "peer": true
+ },
+ "cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "cssom": "~0.3.6"
+ },
+ "dependencies": {
+ "cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "data-urls": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/data-urls/-/data-urls-2.0.0.tgz",
+ "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "abab": "^2.0.3",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.0.0"
+ }
+ },
+ "dayjs": {
+ "version": "1.11.11",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.11.tgz",
+ "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg=="
+ },
+ "de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
+ },
+ "decimal.js": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz",
+ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
+ "dev": true,
+ "peer": true
+ },
+ "dedent": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmmirror.com/dedent/-/dedent-0.7.0.tgz",
+ "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
+ "dev": true,
+ "peer": true
+ },
+ "deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "dev": true,
+ "peer": true
+ },
+ "default-gateway": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz",
+ "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
+ "dev": true,
+ "requires": {
+ "execa": "^5.0.0"
+ }
+ },
+ "define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "requires": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "peer": true
+ },
+ "delegate": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/delegate/-/delegate-3.2.0.tgz",
+ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
+ },
+ "depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true
+ },
+ "destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true
+ },
+ "detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "dev": true,
+ "peer": true
+ },
+ "diff-sequences": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/diff-sequences/-/diff-sequences-27.5.1.tgz",
+ "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==",
+ "dev": true,
+ "peer": true
+ },
+ "dijkstrajs": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+ "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+ },
+ "dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
+ },
+ "domexception": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/domexception/-/domexception-2.0.1.tgz",
+ "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "webidl-conversions": "^5.0.0"
+ },
+ "dependencies": {
+ "webidl-conversions": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true
+ },
+ "electron-to-chromium": {
+ "version": "1.4.772",
+ "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.772.tgz",
+ "integrity": "sha512-jFfEbxR/abTTJA3ci+2ok1NTuOBBtB4jH+UT6PUmRN+DY3WSD4FFRsgoVQ+QNIJ0T7wrXwzsWCI2WKC46b++2A=="
+ },
+ "emittery": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmmirror.com/emittery/-/emittery-0.8.1.tgz",
+ "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==",
+ "dev": true,
+ "peer": true
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true
+ },
+ "encode-utf8": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
+ "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true
+ },
+ "entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.2.4"
+ }
+ },
+ "es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true
+ },
+ "es-module-lexer": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz",
+ "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA=="
+ },
+ "esbuild": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz",
+ "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==",
+ "requires": {
+ "@esbuild/android-arm": "0.17.19",
+ "@esbuild/android-arm64": "0.17.19",
+ "@esbuild/android-x64": "0.17.19",
+ "@esbuild/darwin-arm64": "0.17.19",
+ "@esbuild/darwin-x64": "0.17.19",
+ "@esbuild/freebsd-arm64": "0.17.19",
+ "@esbuild/freebsd-x64": "0.17.19",
+ "@esbuild/linux-arm": "0.17.19",
+ "@esbuild/linux-arm64": "0.17.19",
+ "@esbuild/linux-ia32": "0.17.19",
+ "@esbuild/linux-loong64": "0.17.19",
+ "@esbuild/linux-mips64el": "0.17.19",
+ "@esbuild/linux-ppc64": "0.17.19",
+ "@esbuild/linux-riscv64": "0.17.19",
+ "@esbuild/linux-s390x": "0.17.19",
+ "@esbuild/linux-x64": "0.17.19",
+ "@esbuild/netbsd-x64": "0.17.19",
+ "@esbuild/openbsd-x64": "0.17.19",
+ "@esbuild/sunos-x64": "0.17.19",
+ "@esbuild/win32-arm64": "0.17.19",
+ "@esbuild/win32-ia32": "0.17.19",
+ "@esbuild/win32-x64": "0.17.19"
+ }
+ },
+ "escalade": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA=="
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
+ },
+ "escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2",
+ "source-map": "~0.6.1"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "peer": true
+ },
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "peer": true
+ },
+ "estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true
+ },
+ "execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/exif-parser/-/exif-parser-0.1.12.tgz",
+ "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw=="
+ },
+ "exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
+ "dev": true,
+ "peer": true
+ },
+ "expect": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/expect/-/expect-27.5.1.tgz",
+ "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/types": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1"
+ }
+ },
+ "express": {
+ "version": "4.19.2",
+ "resolved": "https://registry.npmmirror.com/express/-/express-4.19.2.tgz",
+ "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.2",
+ "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": "~1.0.2",
+ "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.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.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.npmmirror.com/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.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dev": true,
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ }
+ }
+ },
+ "fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "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.4"
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "peer": true
+ },
+ "fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "fb-watchman": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/fb-watchman/-/fb-watchman-2.0.2.tgz",
+ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "bser": "2.1.1"
+ }
+ },
+ "file-type": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmmirror.com/file-type/-/file-type-9.0.0.tgz",
+ "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw=="
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "form-data": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/form-data/-/form-data-3.0.1.tgz",
+ "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "dev": true
+ },
+ "fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
+ },
+ "generic-names": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+ },
+ "get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "dev": true,
+ "requires": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ }
+ },
+ "get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "dev": true,
+ "peer": true
+ },
+ "get-port": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmmirror.com/get-port/-/get-port-6.1.2.tgz",
+ "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true
+ },
+ "glob": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz",
+ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/global/-/global-4.4.0.tgz",
+ "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+ "requires": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
+ }
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
+ },
+ "good-listener": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/good-listener/-/good-listener-1.2.2.tgz",
+ "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
+ "requires": {
+ "delegate": "^3.1.2"
+ }
+ },
+ "gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.3"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
+ },
+ "has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "requires": {
+ "es-define-property": "^1.0.0"
+ }
+ },
+ "has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "dev": true
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true
+ },
+ "hash-sum": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz",
+ "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg=="
+ },
+ "hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "requires": {
+ "function-bind": "^1.1.2"
+ }
+ },
+ "he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true
+ },
+ "html-encoding-sniffer": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
+ "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "whatwg-encoding": "^1.0.5"
+ }
+ },
+ "html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true,
+ "peer": true
+ },
+ "html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "dev": true
+ },
+ "html2canvas": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
+ "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+ "requires": {
+ "css-line-break": "^2.1.0",
+ "text-segmentation": "^1.0.3"
+ }
+ },
+ "http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ }
+ },
+ "https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "agent-base": "6",
+ "debug": "4"
+ }
+ },
+ "human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz",
+ "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+ "requires": {}
+ },
+ "ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+ },
+ "image-tools": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/image-tools/-/image-tools-1.4.0.tgz",
+ "integrity": "sha512-TKtvJ6iUwM0mfaD4keMnk1ENHFC470QEjBfA3IlvKdEOufzvWbjbaoNcoyYq6HlViF8+d5tOS1ooE6j7CHf1lQ=="
+ },
+ "immutable": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.6.tgz",
+ "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==",
+ "devOptional": true
+ },
+ "import-local": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/import-local/-/import-local-3.1.0.tgz",
+ "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "peer": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "invert-kv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true,
+ "peer": true
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/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.13.1",
+ "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "requires": {
+ "hasown": "^2.0.0"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+ },
+ "is-function": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz",
+ "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
+ },
+ "is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "dev": true,
+ "peer": true
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+ },
+ "is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+ "dev": true,
+ "peer": true
+ },
+ "is-reference": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/is-reference/-/is-reference-1.2.1.tgz",
+ "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
+ "dev": true,
+ "requires": {
+ "@types/estree": "*"
+ }
+ },
+ "is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true,
+ "peer": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "istanbul-lib-coverage": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+ "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+ "dev": true,
+ "peer": true
+ },
+ "istanbul-lib-instrument": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^6.3.0"
+ }
+ },
+ "istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "istanbul-lib-source-maps": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0",
+ "source-map": "^0.6.1"
+ }
+ },
+ "istanbul-reports": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmmirror.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
+ "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ }
+ },
+ "jest": {
+ "version": "27.0.4",
+ "resolved": "https://registry.npmmirror.com/jest/-/jest-27.0.4.tgz",
+ "integrity": "sha512-Px1iKFooXgGSkk1H8dJxxBIrM3tsc5SIuI4kfKYK2J+4rvCvPGr/cXktxh0e9zIPQ5g09kOMNfHQEmusBUf/ZA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/core": "^27.0.4",
+ "import-local": "^3.0.2",
+ "jest-cli": "^27.0.4"
+ }
+ },
+ "jest-changed-files": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz",
+ "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/types": "^27.5.1",
+ "execa": "^5.0.0",
+ "throat": "^6.0.1"
+ }
+ },
+ "jest-circus": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-circus/-/jest-circus-27.5.1.tgz",
+ "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "dedent": "^0.7.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3",
+ "throat": "^6.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-cli": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-cli/-/jest-cli-27.5.1.tgz",
+ "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/core": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "import-local": "^3.0.2",
+ "jest-config": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "prompts": "^2.0.1",
+ "yargs": "^16.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-config": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-config/-/jest-config-27.5.1.tgz",
+ "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/core": "^7.8.0",
+ "@jest/test-sequencer": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "babel-jest": "^27.5.1",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "deepmerge": "^4.2.2",
+ "glob": "^7.1.1",
+ "graceful-fs": "^4.2.9",
+ "jest-circus": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-jasmine2": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runner": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "parse-json": "^5.2.0",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-diff": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-diff/-/jest-diff-27.5.1.tgz",
+ "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "chalk": "^4.0.0",
+ "diff-sequences": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-docblock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-docblock/-/jest-docblock-27.5.1.tgz",
+ "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "detect-newline": "^3.0.0"
+ }
+ },
+ "jest-each": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-each/-/jest-each-27.5.1.tgz",
+ "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-environment-jsdom": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz",
+ "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jsdom": "^16.6.0"
+ }
+ },
+ "jest-environment-node": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz",
+ "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "jest-mock": "^27.5.1",
+ "jest-util": "^27.5.1"
+ }
+ },
+ "jest-get-type": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-get-type/-/jest-get-type-27.5.1.tgz",
+ "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==",
+ "dev": true,
+ "peer": true
+ },
+ "jest-haste-map": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz",
+ "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/types": "^27.5.1",
+ "@types/graceful-fs": "^4.1.2",
+ "@types/node": "*",
+ "anymatch": "^3.0.3",
+ "fb-watchman": "^2.0.0",
+ "fsevents": "^2.3.2",
+ "graceful-fs": "^4.2.9",
+ "jest-regex-util": "^27.5.1",
+ "jest-serializer": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "micromatch": "^4.0.4",
+ "walker": "^1.0.7"
+ }
+ },
+ "jest-jasmine2": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
+ "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/environment": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "co": "^4.6.0",
+ "expect": "^27.5.1",
+ "is-generator-fn": "^2.0.0",
+ "jest-each": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "pretty-format": "^27.5.1",
+ "throat": "^6.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-leak-detector": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz",
+ "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ }
+ },
+ "jest-matcher-utils": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz",
+ "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "chalk": "^4.0.0",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "pretty-format": "^27.5.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-message-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-message-util/-/jest-message-util-27.5.1.tgz",
+ "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^27.5.1",
+ "@types/stack-utils": "^2.0.0",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^27.5.1",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-mock": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-mock/-/jest-mock-27.5.1.tgz",
+ "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*"
+ }
+ },
+ "jest-pnp-resolver": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+ "dev": true,
+ "peer": true,
+ "requires": {}
+ },
+ "jest-regex-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
+ "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==",
+ "dev": true,
+ "peer": true
+ },
+ "jest-resolve": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-resolve/-/jest-resolve-27.5.1.tgz",
+ "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-pnp-resolver": "^1.2.2",
+ "jest-util": "^27.5.1",
+ "jest-validate": "^27.5.1",
+ "resolve": "^1.20.0",
+ "resolve.exports": "^1.1.0",
+ "slash": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-resolve-dependencies": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz",
+ "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/types": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-snapshot": "^27.5.1"
+ }
+ },
+ "jest-runner": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-runner/-/jest-runner-27.5.1.tgz",
+ "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/console": "^27.5.1",
+ "@jest/environment": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "emittery": "^0.8.1",
+ "graceful-fs": "^4.2.9",
+ "jest-docblock": "^27.5.1",
+ "jest-environment-jsdom": "^27.5.1",
+ "jest-environment-node": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-leak-detector": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-runtime": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "jest-worker": "^27.5.1",
+ "source-map-support": "^0.5.6",
+ "throat": "^6.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-runtime": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-runtime/-/jest-runtime-27.5.1.tgz",
+ "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/environment": "^27.5.1",
+ "@jest/fake-timers": "^27.5.1",
+ "@jest/globals": "^27.5.1",
+ "@jest/source-map": "^27.5.1",
+ "@jest/test-result": "^27.5.1",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "chalk": "^4.0.0",
+ "cjs-module-lexer": "^1.0.0",
+ "collect-v8-coverage": "^1.0.0",
+ "execa": "^5.0.0",
+ "glob": "^7.1.3",
+ "graceful-fs": "^4.2.9",
+ "jest-haste-map": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-mock": "^27.5.1",
+ "jest-regex-util": "^27.5.1",
+ "jest-resolve": "^27.5.1",
+ "jest-snapshot": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "slash": "^3.0.0",
+ "strip-bom": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-serializer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-serializer/-/jest-serializer-27.5.1.tgz",
+ "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/node": "*",
+ "graceful-fs": "^4.2.9"
+ }
+ },
+ "jest-snapshot": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz",
+ "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/core": "^7.7.2",
+ "@babel/generator": "^7.7.2",
+ "@babel/plugin-syntax-typescript": "^7.7.2",
+ "@babel/traverse": "^7.7.2",
+ "@babel/types": "^7.0.0",
+ "@jest/transform": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/babel__traverse": "^7.0.4",
+ "@types/prettier": "^2.1.5",
+ "babel-preset-current-node-syntax": "^1.0.0",
+ "chalk": "^4.0.0",
+ "expect": "^27.5.1",
+ "graceful-fs": "^4.2.9",
+ "jest-diff": "^27.5.1",
+ "jest-get-type": "^27.5.1",
+ "jest-haste-map": "^27.5.1",
+ "jest-matcher-utils": "^27.5.1",
+ "jest-message-util": "^27.5.1",
+ "jest-util": "^27.5.1",
+ "natural-compare": "^1.4.0",
+ "pretty-format": "^27.5.1",
+ "semver": "^7.3.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-util": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-util/-/jest-util-27.5.1.tgz",
+ "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-validate": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-validate/-/jest-validate-27.5.1.tgz",
+ "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/types": "^27.5.1",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.0.0",
+ "jest-get-type": "^27.5.1",
+ "leven": "^3.1.0",
+ "pretty-format": "^27.5.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-watcher": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-watcher/-/jest-watcher-27.5.1.tgz",
+ "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@jest/test-result": "^27.5.1",
+ "@jest/types": "^27.5.1",
+ "@types/node": "*",
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.0.0",
+ "jest-util": "^27.5.1",
+ "string-length": "^4.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "jimp": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "jiti": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmmirror.com/jiti/-/jiti-1.21.0.tgz",
+ "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
+ "dev": true
+ },
+ "jpeg-js": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmmirror.com/jpeg-js/-/jpeg-js-0.3.7.tgz",
+ "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ=="
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsdom": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmmirror.com/jsdom/-/jsdom-16.7.0.tgz",
+ "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "abab": "^2.0.5",
+ "acorn": "^8.2.4",
+ "acorn-globals": "^6.0.0",
+ "cssom": "^0.4.4",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^2.0.0",
+ "decimal.js": "^10.2.1",
+ "domexception": "^2.0.1",
+ "escodegen": "^2.0.0",
+ "form-data": "^3.0.0",
+ "html-encoding-sniffer": "^2.0.1",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.0",
+ "parse5": "6.0.1",
+ "saxes": "^5.0.1",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.0.0",
+ "w3c-hr-time": "^1.0.2",
+ "w3c-xmlserializer": "^2.0.0",
+ "webidl-conversions": "^6.1.0",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.5.0",
+ "ws": "^7.4.6",
+ "xml-name-validator": "^3.0.0"
+ },
+ "dependencies": {
+ "ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {}
+ }
+ }
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
+ },
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true,
+ "peer": true
+ },
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
+ },
+ "jsonc-parser": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz",
+ "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA=="
+ },
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ }
+ },
+ "kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "dev": true,
+ "peer": true
+ },
+ "kolorist": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz",
+ "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
+ "dev": true
+ },
+ "lcid": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/lcid/-/lcid-3.1.1.tgz",
+ "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==",
+ "requires": {
+ "invert-kv": "^3.0.0"
+ }
+ },
+ "leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true,
+ "peer": true
+ },
+ "licia": {
+ "version": "1.39.2",
+ "resolved": "https://registry.npmmirror.com/licia/-/licia-1.39.2.tgz",
+ "integrity": "sha512-4pte7gXufSAa3JcsR0iT+2Lj2RX5Qpj+Nc0n84xs0ynNmw7eJmeZzk2oPTEtsQqwHwtT+NiX0arGkL5HPjTs7g=="
+ },
+ "lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ=="
+ },
+ "lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true,
+ "peer": true
+ },
+ "load-bmfont": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/load-bmfont/-/load-bmfont-1.4.1.tgz",
+ "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==",
+ "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": "^2.9.1",
+ "xhr": "^2.0.1",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ }
+ }
+ },
+ "loader-utils": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-3.2.1.tgz",
+ "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw=="
+ },
+ "localstorage-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/localstorage-polyfill/-/localstorage-polyfill-1.0.1.tgz",
+ "integrity": "sha512-m4iHVZxFH5734oQcPKU08025gIz2+4bjWR9lulP8ZYxEJR0BpA0w32oJmkzh8y3UI9ci7xCBehQDc3oA1X+VHw=="
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
+ },
+ "lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "magic-string": {
+ "version": "0.30.10",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.10.tgz",
+ "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ }
+ },
+ "make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "semver": "^7.5.3"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "makeerror": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmmirror.com/makeerror/-/makeerror-1.0.12.tgz",
+ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "tmpl": "1.0.5"
+ }
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "dev": true
+ },
+ "merge": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/merge/-/merge-2.1.1.tgz",
+ "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w=="
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
+ "dev": true
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "min-document": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz",
+ "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
+ "requires": {
+ "dom-walk": "^0.1.0"
+ }
+ },
+ "minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ },
+ "minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
+ },
+ "mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "requires": {
+ "minimist": "^1.2.6"
+ }
+ },
+ "module-alias": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmmirror.com/module-alias/-/module-alias-2.2.3.tgz",
+ "integrity": "sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q=="
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "muggle-string": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.3.1.tgz",
+ "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==",
+ "dev": true
+ },
+ "nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "peer": true
+ },
+ "negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true
+ },
+ "node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+ "dev": true,
+ "peer": true
+ },
+ "node-releases": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+ },
+ "normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="
+ },
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.0.0"
+ }
+ },
+ "nwsapi": {
+ "version": "2.2.10",
+ "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.10.tgz",
+ "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==",
+ "dev": true,
+ "peer": true
+ },
+ "object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "dev": true
+ },
+ "omggif": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmmirror.com/omggif/-/omggif-1.0.10.tgz",
+ "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="
+ },
+ "on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
+ "pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+ },
+ "parse-bmfont-ascii": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
+ "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA=="
+ },
+ "parse-bmfont-binary": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.5",
+ "resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz",
+ "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA=="
+ },
+ "parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ }
+ },
+ "parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true,
+ "peer": true
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "peer": true
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
+ "dev": true
+ },
+ "pathe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz",
+ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
+ "dev": true
+ },
+ "phin": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmmirror.com/phin/-/phin-2.9.3.tgz",
+ "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA=="
+ },
+ "picocolors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.1.tgz",
+ "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew=="
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="
+ },
+ "pinia": {
+ "version": "2.0.36",
+ "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.36.tgz",
+ "integrity": "sha512-4UKApwjlmJH+VuHKgA+zQMddcCb3ezYnyewQ9NVrsDqZ/j9dMv5+rh+1r48whKNdpFkZAWVxhBp5ewYaYX9JcQ==",
+ "requires": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": "*"
+ },
+ "dependencies": {
+ "vue-demi": {
+ "version": "0.14.7",
+ "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.7.tgz",
+ "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
+ "requires": {}
+ }
+ }
+ },
+ "pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmmirror.com/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "dev": true,
+ "peer": true
+ },
+ "pixelmatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/pixelmatch/-/pixelmatch-4.0.2.tgz",
+ "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==",
+ "requires": {
+ "pngjs": "^3.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ },
+ "pngjs": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-3.4.0.tgz",
+ "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="
+ },
+ "postcss": {
+ "version": "8.4.38",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.38.tgz",
+ "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
+ "requires": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "postcss-import": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
+ "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
+ "requires": {}
+ },
+ "postcss-modules-local-by-default": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz",
+ "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==",
+ "requires": {
+ "icss-utils": "^5.0.0",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.1.0"
+ }
+ },
+ "postcss-modules-scope": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz",
+ "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==",
+ "requires": {
+ "postcss-selector-parser": "^6.0.4"
+ }
+ },
+ "postcss-modules-values": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/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.0.16",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
+ "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
+ },
+ "pretty-format": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmmirror.com/pretty-format/-/pretty-format-27.5.1.tgz",
+ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
+ },
+ "prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ }
+ },
+ "proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dev": true,
+ "requires": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ }
+ },
+ "psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
+ "dev": true,
+ "peer": true
+ },
+ "punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "peer": true
+ },
+ "qrcode": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.3.tgz",
+ "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
+ "requires": {
+ "dijkstrajs": "^1.0.1",
+ "encode-utf8": "^1.0.3",
+ "pngjs": "^5.0.0",
+ "yargs": "^15.3.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "pngjs": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+ "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+ },
+ "yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "requires": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "qrcode-reader": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/qrcode-reader/-/qrcode-reader-1.0.4.tgz",
+ "integrity": "sha512-rRjALGNh9zVqvweg1j5OKIQKNsw3bLC+7qwlnead5K/9cb1cEIAGkwikt/09U0K+2IDWGD9CC6SP7tHAjUeqvQ=="
+ },
+ "qrcode-terminal": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmmirror.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz",
+ "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ=="
+ },
+ "qs": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.7.0.tgz",
+ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
+ },
+ "querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "dev": true,
+ "peer": true
+ },
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+ },
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ },
+ "react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmmirror.com/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true,
+ "peer": true
+ },
+ "read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "requires": {
+ "pify": "^2.3.0"
+ }
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true
+ },
+ "regenerate-unicode-properties": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
+ "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.2"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+ },
+ "regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "regexpu-core": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz",
+ "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+ "dev": true,
+ "requires": {
+ "@babel/regjsgen": "^0.8.0",
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.1.0",
+ "regjsparser": "^0.9.1",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
+ }
+ },
+ "regjsparser": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz",
+ "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+ "dev": true,
+ "requires": {
+ "jsesc": "~0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "dev": true
+ }
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "dev": true,
+ "peer": true
+ },
+ "resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "resolve-from": "^5.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "peer": true
+ },
+ "resolve.exports": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/resolve.exports/-/resolve.exports-1.1.1.tgz",
+ "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==",
+ "dev": true,
+ "peer": true
+ },
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
+ },
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "glob": "^7.1.3"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ }
+ }
+ },
+ "rollup": {
+ "version": "3.29.4",
+ "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz",
+ "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
+ "requires": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "sass": {
+ "version": "1.77.1",
+ "resolved": "https://registry.npmmirror.com/sass/-/sass-1.77.1.tgz",
+ "integrity": "sha512-OMEyfirt9XEfyvocduUIOlUSkWOXS/LAt6oblR/ISXCTukyavjex+zQNm51pPCOiFKY1QpWvEH1EeCkgyV3I6w==",
+ "devOptional": true,
+ "requires": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ }
+ },
+ "sax": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz",
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
+ },
+ "saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz",
+ "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "xmlchars": "^2.2.0"
+ }
+ },
+ "select": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/select/-/select-1.1.2.tgz",
+ "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
+ },
+ "send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dev": true,
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+ },
+ "set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "requires": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ }
+ },
+ "setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ }
+ },
+ "signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "dev": true,
+ "peer": true
+ },
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "peer": true
+ },
+ "sortablejs": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.2.tgz",
+ "integrity": "sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA=="
+ },
+ "source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-js": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz",
+ "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg=="
+ },
+ "source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "devOptional": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true,
+ "peer": true
+ },
+ "stack-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/stack-utils/-/stack-utils-2.0.6.tgz",
+ "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true
+ },
+ "string-hash": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/string-hash/-/string-hash-1.1.3.tgz",
+ "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A=="
+ },
+ "string-length": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/string-length/-/string-length-4.0.2.tgz",
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "char-regex": "^1.0.2",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ },
+ "strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "dev": true,
+ "peer": true
+ },
+ "strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "supports-hyperlinks": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
+ "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
+ },
+ "svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true,
+ "peer": true
+ },
+ "systemjs": {
+ "version": "6.15.1",
+ "resolved": "https://registry.npmmirror.com/systemjs/-/systemjs-6.15.1.tgz",
+ "integrity": "sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==",
+ "dev": true
+ },
+ "tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="
+ },
+ "terminal-link": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/terminal-link/-/terminal-link-2.1.1.tgz",
+ "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-escapes": "^4.2.1",
+ "supports-hyperlinks": "^2.0.0"
+ }
+ },
+ "terser": {
+ "version": "5.31.0",
+ "resolved": "https://registry.npmmirror.com/terser/-/terser-5.31.0.tgz",
+ "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==",
+ "devOptional": true,
+ "requires": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ }
+ },
+ "test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ }
+ }
+ },
+ "text-segmentation": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
+ "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+ "requires": {
+ "utrie": "^1.0.2"
+ }
+ },
+ "throat": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/throat/-/throat-6.0.2.tgz",
+ "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==",
+ "dev": true,
+ "peer": true
+ },
+ "timm": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmmirror.com/timm/-/timm-1.7.1.tgz",
+ "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw=="
+ },
+ "tiny-emitter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
+ },
+ "tinycolor2": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.6.0.tgz",
+ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
+ },
+ "tmpl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/tmpl/-/tmpl-1.0.5.tgz",
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+ "dev": true,
+ "peer": true
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "dependencies": {
+ "universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "tr46": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/tr46/-/tr46-2.1.0.tgz",
+ "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "punycode": "^2.1.1"
+ }
+ },
+ "type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true,
+ "peer": true
+ },
+ "type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true,
+ "peer": true
+ },
+ "type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmmirror.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
+ "typescript": {
+ "version": "4.9.5",
+ "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "devOptional": true
+ },
+ "undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "devOptional": true
+ },
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+ "dev": true
+ },
+ "unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/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.1.0",
+ "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+ "dev": true
+ },
+ "unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "dev": true
+ },
+ "universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true
+ },
+ "unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg=="
+ },
+ "update-browserslist-db": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
+ "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==",
+ "requires": {
+ "escalade": "^3.1.2",
+ "picocolors": "^1.0.1"
+ }
+ },
+ "url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "utif": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true
+ },
+ "utrie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
+ "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+ "requires": {
+ "base64-arraybuffer": "^1.0.2"
+ }
+ },
+ "uview-plus": {
+ "version": "3.2.22",
+ "resolved": "https://registry.npmmirror.com/uview-plus/-/uview-plus-3.2.22.tgz",
+ "integrity": "sha512-ouhq0CCGP/ElR7eCCu0rBFNPTGW/EctcrxKIerjj1DOkEIY9BwKBbdI0VTSSkMFnr6RFejSQLBw/aKkqd6Q+7g==",
+ "requires": {
+ "clipboard": "^2.0.11",
+ "dayjs": "^1.11.3"
+ }
+ },
+ "v8-to-istanbul": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmmirror.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
+ "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^1.6.0",
+ "source-map": "^0.7.3"
+ },
+ "dependencies": {
+ "convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true,
+ "peer": true
+ },
+ "source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true
+ },
+ "vite": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmmirror.com/vite/-/vite-4.0.4.tgz",
+ "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==",
+ "requires": {
+ "esbuild": "^0.16.3",
+ "fsevents": "~2.3.2",
+ "postcss": "^8.4.20",
+ "resolve": "^1.22.1",
+ "rollup": "^3.7.0"
+ },
+ "dependencies": {
+ "@esbuild/android-arm": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
+ "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
+ "optional": true
+ },
+ "@esbuild/android-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
+ "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
+ "optional": true
+ },
+ "@esbuild/android-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
+ "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
+ "optional": true
+ },
+ "@esbuild/darwin-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
+ "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
+ "optional": true
+ },
+ "@esbuild/darwin-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
+ "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
+ "optional": true
+ },
+ "@esbuild/freebsd-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
+ "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
+ "optional": true
+ },
+ "@esbuild/freebsd-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
+ "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
+ "optional": true
+ },
+ "@esbuild/linux-arm": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
+ "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
+ "optional": true
+ },
+ "@esbuild/linux-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
+ "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
+ "optional": true
+ },
+ "@esbuild/linux-ia32": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
+ "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
+ "optional": true
+ },
+ "@esbuild/linux-loong64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
+ "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
+ "optional": true
+ },
+ "@esbuild/linux-mips64el": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
+ "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
+ "optional": true
+ },
+ "@esbuild/linux-ppc64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
+ "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
+ "optional": true
+ },
+ "@esbuild/linux-riscv64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
+ "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
+ "optional": true
+ },
+ "@esbuild/linux-s390x": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
+ "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
+ "optional": true
+ },
+ "@esbuild/linux-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
+ "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
+ "optional": true
+ },
+ "@esbuild/netbsd-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
+ "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
+ "optional": true
+ },
+ "@esbuild/openbsd-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
+ "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
+ "optional": true
+ },
+ "@esbuild/sunos-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
+ "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
+ "optional": true
+ },
+ "@esbuild/win32-arm64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
+ "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
+ "optional": true
+ },
+ "@esbuild/win32-ia32": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
+ "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
+ "optional": true
+ },
+ "@esbuild/win32-x64": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
+ "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
+ "optional": true
+ },
+ "esbuild": {
+ "version": "0.16.17",
+ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz",
+ "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
+ "requires": {
+ "@esbuild/android-arm": "0.16.17",
+ "@esbuild/android-arm64": "0.16.17",
+ "@esbuild/android-x64": "0.16.17",
+ "@esbuild/darwin-arm64": "0.16.17",
+ "@esbuild/darwin-x64": "0.16.17",
+ "@esbuild/freebsd-arm64": "0.16.17",
+ "@esbuild/freebsd-x64": "0.16.17",
+ "@esbuild/linux-arm": "0.16.17",
+ "@esbuild/linux-arm64": "0.16.17",
+ "@esbuild/linux-ia32": "0.16.17",
+ "@esbuild/linux-loong64": "0.16.17",
+ "@esbuild/linux-mips64el": "0.16.17",
+ "@esbuild/linux-ppc64": "0.16.17",
+ "@esbuild/linux-riscv64": "0.16.17",
+ "@esbuild/linux-s390x": "0.16.17",
+ "@esbuild/linux-x64": "0.16.17",
+ "@esbuild/netbsd-x64": "0.16.17",
+ "@esbuild/openbsd-x64": "0.16.17",
+ "@esbuild/sunos-x64": "0.16.17",
+ "@esbuild/win32-arm64": "0.16.17",
+ "@esbuild/win32-ia32": "0.16.17",
+ "@esbuild/win32-x64": "0.16.17"
+ }
+ }
+ }
+ },
+ "vite-plugin-windicss": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/vite-plugin-windicss/-/vite-plugin-windicss-1.9.3.tgz",
+ "integrity": "sha512-PqNiIsrEftCrgn0xIpj8ZMSdpz8NZn+OJ3gKXnOF+hFzbHFrKGJA49ViOUKCHDOquxoGBZMmTjepWr8GrftKcQ==",
+ "dev": true,
+ "requires": {
+ "@windicss/plugin-utils": "1.9.3",
+ "debug": "^4.3.4",
+ "kolorist": "^1.8.0",
+ "windicss": "^3.5.6"
+ }
+ },
+ "vue": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.4.27.tgz",
+ "integrity": "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==",
+ "requires": {
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/compiler-sfc": "3.4.27",
+ "@vue/runtime-dom": "3.4.27",
+ "@vue/server-renderer": "3.4.27",
+ "@vue/shared": "3.4.27"
+ },
+ "dependencies": {
+ "@vue/compiler-core": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.27.tgz",
+ "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",
+ "requires": {
+ "@babel/parser": "^7.24.4",
+ "@vue/shared": "3.4.27",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",
+ "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",
+ "requires": {
+ "@vue/compiler-core": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz",
+ "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==",
+ "requires": {
+ "@babel/parser": "^7.24.4",
+ "@vue/compiler-core": "3.4.27",
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/compiler-ssr": "3.4.27",
+ "@vue/shared": "3.4.27",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.10",
+ "postcss": "^8.4.38",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",
+ "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",
+ "requires": {
+ "@vue/compiler-dom": "3.4.27",
+ "@vue/shared": "3.4.27"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.4.27",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz",
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="
+ }
+ }
+ },
+ "vue-i18n": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz",
+ "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==",
+ "requires": {
+ "@intlify/core-base": "9.13.1",
+ "@intlify/shared": "9.13.1",
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "dependencies": {
+ "@intlify/core-base": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz",
+ "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==",
+ "requires": {
+ "@intlify/message-compiler": "9.13.1",
+ "@intlify/shared": "9.13.1"
+ }
+ },
+ "@intlify/message-compiler": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz",
+ "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==",
+ "requires": {
+ "@intlify/shared": "9.13.1",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "@intlify/shared": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz",
+ "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ=="
+ }
+ }
+ },
+ "vue-router": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.3.2.tgz",
+ "integrity": "sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==",
+ "requires": {
+ "@vue/devtools-api": "^6.5.1"
+ }
+ },
+ "vue-template-compiler": {
+ "version": "2.7.16",
+ "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
+ "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
+ "dev": true,
+ "requires": {
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
+ "vue-tsc": {
+ "version": "1.8.27",
+ "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.8.27.tgz",
+ "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==",
+ "dev": true,
+ "requires": {
+ "@volar/typescript": "~1.11.1",
+ "@vue/language-core": "1.8.27",
+ "semver": "^7.5.4"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "dev": true
+ }
+ }
+ },
+ "w3c-hr-time": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+ "w3c-xmlserializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+ "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "xml-name-validator": "^3.0.0"
+ }
+ },
+ "walker": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/walker/-/walker-1.0.8.tgz",
+ "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "makeerror": "1.0.12"
+ }
+ },
+ "webidl-conversions": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
+ "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+ "dev": true,
+ "peer": true
+ },
+ "webpack-sources": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz",
+ "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+ "dev": true,
+ "requires": {
+ "source-list-map": "^2.0.0",
+ "source-map": "~0.6.1"
+ }
+ },
+ "webpack-virtual-modules": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz",
+ "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==",
+ "dev": true
+ },
+ "weixin-js-sdk": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmmirror.com/weixin-js-sdk/-/weixin-js-sdk-1.6.5.tgz",
+ "integrity": "sha512-Gph1WAWB2YN/lMOFB/ymb+hbU/wYazzJgu6PMMktCy9cSCeW5wA6Zwt0dpahJbJ+RJEwtTv2x9iIu0U4enuVSQ=="
+ },
+ "whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "dev": true,
+ "peer": true
+ },
+ "whatwg-url": {
+ "version": "8.7.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-8.7.0.tgz",
+ "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "lodash": "^4.7.0",
+ "tr46": "^2.1.0",
+ "webidl-conversions": "^6.1.0"
+ }
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
+ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+ },
+ "windicss": {
+ "version": "3.5.6",
+ "resolved": "https://registry.npmmirror.com/windicss/-/windicss-3.5.6.tgz",
+ "integrity": "sha512-P1mzPEjgFMZLX0ZqfFht4fhV/FX8DTG7ERG1fBLiWvd34pTLVReS5CVsewKn9PApSgXnVfPWwvq+qUsRwpnwFA==",
+ "dev": true
+ },
+ "windicss-webpack-plugin": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/windicss-webpack-plugin/-/windicss-webpack-plugin-1.8.0.tgz",
+ "integrity": "sha512-zCzNLJ4hjgl5A2+mq8XlPtbvM5RONNz/ol93YG9tcMSn+aH/6Ll/lA5UDnVJluBr8b2Ch5C/GIqXcIMGG8mmdA==",
+ "dev": true,
+ "requires": {
+ "@windicss/plugin-utils": "^1.9.1",
+ "debug": "^4.3.4",
+ "get-port": "^6.1.2",
+ "loader-utils": "^2.0.0",
+ "lodash": "^4.17.21",
+ "pathe": "^1.1.0",
+ "webpack-virtual-modules": "^0.5.0",
+ "windicss": "^3.5.6"
+ },
+ "dependencies": {
+ "loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "dev": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ }
+ }
+ },
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
+ "ws": {
+ "version": "8.17.0",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-8.17.0.tgz",
+ "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==",
+ "requires": {}
+ },
+ "xhr": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmmirror.com/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-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+ "dev": true,
+ "peer": true
+ },
+ "xml-parse-from-string": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz",
+ "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g=="
+ },
+ "xml2js": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
+ },
+ "xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+ "dev": true,
+ "peer": true
+ },
+ "xmlhttprequest": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
+ "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA=="
+ },
+ "xregexp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/xregexp/-/xregexp-3.1.0.tgz",
+ "integrity": "sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg=="
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+ },
+ "y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "peer": true
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ },
+ "yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
+ },
+ "yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "peer": true
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..bf823b7
--- /dev/null
+++ b/package.json
@@ -0,0 +1,85 @@
+{
+ "name": "uni-preset-vue",
+ "version": "0.0.0",
+ "scripts": {
+ "dev:app": "uni -p app",
+ "dev:app-android": "uni -p app-android",
+ "dev:app-ios": "uni -p app-ios",
+ "dev:custom": "uni -p",
+ "dev:h5": "uni",
+ "dev:h5:ssr": "uni --ssr",
+ "dev:mp-alipay": "uni -p mp-alipay",
+ "dev:mp-baidu": "uni -p mp-baidu",
+ "dev:mp-jd": "uni -p mp-jd",
+ "dev:mp-kuaishou": "uni -p mp-kuaishou",
+ "dev:mp-lark": "uni -p mp-lark",
+ "dev:mp-qq": "uni -p mp-qq",
+ "dev:mp-toutiao": "uni -p mp-toutiao",
+ "dev:mp-weixin": "uni -p mp-weixin",
+ "dev:quickapp-webview": "uni -p quickapp-webview",
+ "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei",
+ "dev:quickapp-webview-union": "uni -p quickapp-webview-union",
+ "build:app": "uni build -p app",
+ "build:app-android": "uni build -p app-android",
+ "build:app-ios": "uni build -p app-ios",
+ "build:custom": "uni build -p",
+ "build:h5": "uni build && node publish.cjs",
+ "build:h5:ssr": "uni build --ssr",
+ "build:mp-alipay": "uni build -p mp-alipay",
+ "build:mp-baidu": "uni build -p mp-baidu",
+ "build:mp-jd": "uni build -p mp-jd",
+ "build:mp-kuaishou": "uni build -p mp-kuaishou",
+ "build:mp-lark": "uni build -p mp-lark",
+ "build:mp-qq": "uni build -p mp-qq",
+ "build:mp-toutiao": "uni build -p mp-toutiao",
+ "build:mp-weixin": "uni build -p mp-weixin",
+ "build:quickapp-webview": "uni build -p quickapp-webview",
+ "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei",
+ "build:quickapp-webview-union": "uni build -p quickapp-webview-union",
+ "type-check": "vue-tsc --noEmit"
+ },
+ "dependencies": {
+ "@dcloudio/uni-app": "3.0.0-3080720230703001",
+ "@dcloudio/uni-app-plus": "3.0.0-3080720230703001",
+ "@dcloudio/uni-components": "3.0.0-3080720230703001",
+ "@dcloudio/uni-h5": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-alipay": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-baidu": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-jd": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-kuaishou": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-lark": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-qq": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-toutiao": "3.0.0-3080720230703001",
+ "@dcloudio/uni-mp-weixin": "3.0.0-3080720230703001",
+ "@dcloudio/uni-quickapp-webview": "3.0.0-3080720230703001",
+ "html2canvas": "^1.4.1",
+ "image-tools": "^1.4.0",
+ "lodash-es": "^4.17.21",
+ "pinia": "2.0.36",
+ "qrcode": "^1.5.1",
+ "qs": "6.7.0",
+ "sortablejs": "^1.15.0",
+ "uview-plus": "^3.1.29",
+ "vue": "^3.3.0",
+ "vue-i18n": "^9.2.2",
+ "weixin-js-sdk": "^1.6.0"
+ },
+ "devDependencies": {
+ "@dcasia/mini-program-tailwind-webpack-plugin": "^1.5.6",
+ "@dcloudio/types": "^3.3.2",
+ "@dcloudio/uni-automator": "3.0.0-3080720230703001",
+ "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001",
+ "@dcloudio/uni-stacktracey": "3.0.0-3080720230703001",
+ "@dcloudio/vite-plugin-uni": "3.0.0-3080720230703001",
+ "@rollup/plugin-commonjs": "^24.0.1",
+ "@types/qrcode": "^1.5.0",
+ "@types/sortablejs": "^1.15.0",
+ "@vue/tsconfig": "^0.1.3",
+ "sass": "^1.54.5",
+ "typescript": "^4.9.4",
+ "vite": "4.0.4",
+ "vite-plugin-windicss": "^1.8.10",
+ "vue-tsc": "^1.0.24",
+ "windicss": "^3.5.6"
+ }
+}
diff --git a/public/niucloud.ico b/public/niucloud.ico
new file mode 100644
index 0000000..d770505
Binary files /dev/null and b/public/niucloud.ico differ
diff --git a/publish.cjs b/publish.cjs
new file mode 100644
index 0000000..7b349b8
--- /dev/null
+++ b/publish.cjs
@@ -0,0 +1,51 @@
+const fs = require('fs')
+
+const publish = () => {
+ const src = './dist/build/h5'
+ const dest = '../niucloud/public/wap'
+
+ solve()
+
+ // 目标目录不存在停止复制
+ try {
+ const dir = fs.readdirSync(dest)
+ } catch (e) {
+ return
+ }
+
+ // 删除目标目录下文件
+ fs.rm(dest, { recursive: true }, err => {
+ if(err) {
+ console.log(err)
+ return
+ }
+
+ fs.cp(src, dest, { recursive: true }, (err) => {
+ if (err) {
+ console.error(err)
+ }
+ })
+ })
+}
+
+const solve = () => {
+ const src = './dist/build/h5/assets'
+ const filemaps = fs.readdirSync(src)
+
+ filemaps.forEach(file => {
+ if (/^(index-)(\w{8})(.js)$/.test(file)) {
+ const path = `${src}/${file}`
+ let content = fs.readFileSync(path, 'utf-8')
+ const first = 'const match = location.href.match(/\\/wap\\/(\\d*)\\//);'
+
+ if (content.indexOf(first) == -1) {
+ content = first + content
+ const replace = 'router:{mode:"history",base: match ? `/wap/${match[1]}/` : "/wap/",assets:"assets",routerBase: match ? `/wap/${match[1]}/` : "/wap/"},darkmode'
+ content = content.replace(/router:{(.*?)},darkmode/s, replace)
+ fs.writeFileSync(path, content, 'utf8')
+ }
+ }
+ })
+}
+
+publish()
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..889963a
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,111 @@
+
+
+
diff --git a/src/app/api/auth.ts b/src/app/api/auth.ts
new file mode 100644
index 0000000..f20c791
--- /dev/null
+++ b/src/app/api/auth.ts
@@ -0,0 +1,97 @@
+import request from '@/utils/request'
+
+/**
+ * 用户名登录
+ */
+export function usernameLogin(data : AnyObject) {
+ return request.get('login', data, { showErrorMessage: true })
+}
+
+/**
+ * 手机验证码登录
+ */
+export function mobileLogin(data : AnyObject) {
+ return request.post('login/mobile', data, { showErrorMessage: true })
+}
+
+/**
+ * 获取登录配置
+ */
+export function getConfig() {
+ return request.get('login/config')
+}
+
+/**
+ * 退出登录
+ */
+export function logout() {
+ return request.put('auth/logout')
+}
+
+/**
+ * 用户名注册
+ */
+export function usernameRegister(data : AnyObject) {
+ let url = 'register'
+ if(uni.getStorageSync('pid')){
+ data.pid = uni.getStorageSync('pid');
+ }
+ return request.post(url, data, { showErrorMessage: true })
+}
+
+/**
+ * 手机号注册
+ */
+export function mobileRegister(data : AnyObject) {
+ let url = 'register/mobile'
+ if(uni.getStorageSync('pid')){
+ data.pid = uni.getStorageSync('pid');
+ }
+ return request.post(url, data, { showErrorMessage: true })
+}
+
+/**
+ * 微信公众号授权信息
+ */
+export function wechatUser(data : AnyObject) {
+ return request.get('wechat/user', data, { showErrorMessage: false })
+}
+
+/**
+ * 微信公众号授权信息登录(openid)
+ */
+export function wechatUserLogin(data : AnyObject) {
+ return request.post('wechat/userlogin', data, { showErrorMessage: true })
+}
+
+/**
+ * 微信公众号授权登录
+ */
+export function wechatLogin(data : AnyObject) {
+ return request.post('wechat/login', data, { showErrorMessage: false })
+}
+
+/**
+ * 微信小程序授权登录
+ */
+export function weappLogin(data : AnyObject) {
+ return request.post('weapp/login', data, { showErrorMessage: false })
+}
+
+/**
+ * 绑定手机号
+ */
+export function bind(data : AnyObject) {
+ let url = 'bind'
+ if(uni.getStorageSync('pid')){
+ data.pid = uni.getStorageSync('pid');
+ }
+ return request.post(url, data, { showErrorMessage: true })
+}
+
+/**
+ * 记录会员访问日志
+ */
+export function memberLog(data : AnyObject) {
+ return request.post('member/log', data, { showErrorMessage: false })
+}
diff --git a/src/app/api/device.ts b/src/app/api/device.ts
new file mode 100644
index 0000000..de35d99
--- /dev/null
+++ b/src/app/api/device.ts
@@ -0,0 +1,39 @@
+import request from '@/utils/request'
+
+
+/**
+ * 绑定设备
+ */
+export function set_equipment(params: AnyObject) {
+ return request.get(`member/set_equipment`, params)
+}
+/**
+ * 档案列表
+ */
+export function list_archives() {
+ return request.get(`member/list_archives`)
+}
+/**
+ * 操作档案
+ */
+export function edit_archives(data : any) {
+ return request.post(`member/edit_archives`, data)
+}
+/**
+ * 删除档案
+ */
+export function del_archives(id : number) {
+ return request.get(`member/del_archives?id=`+ id)
+}
+/**
+ * 设备列表
+ */
+export function list_equipment() {
+ return request.get(`member/list_equipment`)
+}
+/**
+ * 解绑设备
+ */
+export function del_equipment(id : number) {
+ return request.get(`member/del_equipment?id=`+ id)
+}
\ No newline at end of file
diff --git a/src/app/api/diy.ts b/src/app/api/diy.ts
new file mode 100644
index 0000000..e3f971f
--- /dev/null
+++ b/src/app/api/diy.ts
@@ -0,0 +1,29 @@
+import request from '@/utils/request'
+
+/**
+ * 获取自定义页面信息
+ */
+export function getDiyInfo(params: Record) {
+ return request.get('diy/diy', params)
+}
+
+/**
+ * 获取底部导航信息
+ */
+export function getTabbarInfo(params: Record) {
+ return request.get('diy/tabbar', params)
+}
+
+/**
+ * 获取底部导航列表
+ */
+export function getTabbarList(params: Record) {
+ return request.get('diy/tabbar/list', params)
+}
+
+/**
+ * 获取页面分享信息
+ */
+export function getShareInfo(params: Record) {
+ return request.get('diy/share', params)
+}
\ No newline at end of file
diff --git a/src/app/api/home.ts b/src/app/api/home.ts
new file mode 100644
index 0000000..322f5de
--- /dev/null
+++ b/src/app/api/home.ts
@@ -0,0 +1,101 @@
+import request from "@/utils/request";
+
+// 获取轮播图
+export function getCarousel() {
+ return request.get('/shop/slideshow/list')
+}
+
+// 获取分类
+export function getClassification() {
+ return request.get('/shop/homeCategory/list')
+}
+
+// 获取文章分类
+export function getArticle(data) {
+ return request.get('/cms/category',data)
+}
+
+// 获取医生
+export function getDoctor(data) {
+ return request.get('/shop/doctor/list',data)
+}
+// 获取驿站
+export function getDak(data) {
+ return request.get('/shop/communityStation/list',data)
+}
+
+// 获取科室分类
+export function getDepartmentClassification(data) {
+ return request.get('/shop/doctorsDepartment/list',data)
+}
+
+// 获取驿站详情
+export function getRelayDetails(data) {
+ return request.get('/shop/communityStation/info',data)
+}
+
+// 获取行政区划
+export function getAdministrativeDivision() {
+ return request.get('/accompany/getAreaTree')
+}
+
+// 获取专题列表
+export function getTopicsList(data) {
+ return request.get('/cms/article',data)
+}
+
+// 获取专题详情
+export function getTopicsDetails(id) {
+ return request.get(`/cms/article/${id}`)
+}
+
+// 获取医院分类
+export function getHospitalClassification() {
+ return request.get(`/shop/doctor/getHospitalsAll`)
+}
+
+// 获取医生详情
+export function getDoctorDetails(data) {
+ return request.get(`/shop/goods/detail`,data)
+}
+
+// 商品详情
+export function getProductDetails(data) {
+ return request.get(`/shop/goods/detail`,data)
+}
+
+// 订单计算
+export function orderCalculation(data) {
+ return request.get(`/shop/order_create/calculate`,data)
+}
+
+// 订单创建
+export function orderCreation(data) {
+ return request.post(`/shop/order_create/create`,data)
+}
+
+// 获取通知
+export function getNotifications(data) {
+ return request.get(`/shop/memberNotifications/lists`,data )
+}
+
+// 获取用户信息
+export function getUserInfo() {
+ return request.get(`/member/member`)
+}
+
+// 获取客服
+export function customerService() {
+ return request.get(`/shop/shopConfig/info`)
+}
+
+
+// 获取支付信息
+export function getPaymentInfo(trade_type,trade_id) {
+ return request.get(`/pay/info/${trade_type}/${trade_id}`)
+}
+
+// 去支付
+export function toPay(data) {
+ return request.post(`/pay`,data)
+}
\ No newline at end of file
diff --git a/src/app/api/member.ts b/src/app/api/member.ts
new file mode 100644
index 0000000..b6a6a3a
--- /dev/null
+++ b/src/app/api/member.ts
@@ -0,0 +1,244 @@
+import request from '@/utils/request'
+
+export function getMemberInfo() {
+ return request.get('member/member')
+}
+
+/**
+ * 获取积分流水
+ */
+export function getPointList(data : AnyObject) {
+ return request.get('member/account/point', data)
+}
+
+/**
+ * 获取不可提现余额流水
+ */
+export function getBalanceList(data : AnyObject) {
+ return request.get('member/account/balance', data)
+}
+/**
+ * 获取余额流水,条件获取
+ */
+export function getBalanceListAll(data : AnyObject) {
+ return request.get('member/account/balance_list', data)
+}
+
+/**
+ * 获取可提现余额流水
+ */
+export function getMoneyList(data : AnyObject) {
+ return request.get('member/account/money', data)
+}
+
+/**
+ * 会员信息修改
+ */
+export function modifyMember(data : AnyObject) {
+ return request.put(`member/modify/${data.field}`, data, { showErrorMessage: true })
+}
+
+/**
+ * 登录会员绑定手机号
+ */
+export function bindMobile(data : AnyObject) {
+ return request.put('member/mobile', data, { showErrorMessage: true })
+}
+
+/**
+ * 提现转账方式
+ */
+export function cashOutTransferType() {
+ return request.get('member/cash_out/transfertype')
+}
+
+/**
+ * 提现配置
+ */
+export function cashOutConfig() {
+ return request.get('member/cash_out/config')
+}
+
+/**
+ * 申请余额提现
+ */
+export function cashOutApply(data : AnyObject) {
+ return request.post('member/cash_out/apply', data, { showSuccessMessage: true, showErrorMessage: true })
+}
+
+/**
+ * 获取提现账户信息
+ */
+export function getCashoutAccountInfo(data : AnyObject) {
+ return request.get(`member/cashout_account/${data.account_id}`, {})
+}
+
+/**
+ * 获取首条提现账户信息
+ */
+export function getFirstCashoutAccountInfo(data : AnyObject) {
+ return request.get('member/cashout_account/firstinfo', data)
+}
+
+/**
+ * 获取提现账户列表
+ */
+export function getCashoutAccountList(data : AnyObject) {
+ return request.get(`member/cashout_account`, data)
+}
+
+/**
+ * 获取提现记录列表
+ */
+export function getCashOutList(data : AnyObject) {
+ return request.get(`member/cash_out`, data)
+}
+
+/**
+ * 获取提现记录详情
+ */
+export function getCashOutDetail(id : number) {
+ return request.get(`member/cash_out/${id}`)
+}
+
+/**
+ * 添加提现账户
+ */
+export function addCashoutAccount(data : AnyObject) {
+ return request.post('member/cashout_account', data, { showSuccessMessage: true, showErrorMessage: true })
+}
+
+/**
+ * 添加提现账户
+ */
+export function editCashoutAccount(data : AnyObject) {
+ return request.put(`member/cashout_account/${data.account_id}`, data, { showSuccessMessage: true, showErrorMessage: true })
+}
+
+/**
+ * 删除提现账户
+ */
+export function deleteCashoutAccount(accountId: number) {
+ return request.delete(`member/cashout_account/${accountId}`, { showSuccessMessage: true, showErrorMessage: true })
+}
+
+/**
+ * 佣金账户流水
+ */
+export function getMemberCommission(data : AnyObject) {
+ return request.get(`member/account/commission`,data)
+}
+/**
+ * 佣金列表
+ */
+export function getCommissionList(data : AnyObject) {
+ return request.get(`member/account/commission`, data)
+}
+
+/**
+ * 获取账号变动类型
+ */
+export function getAccountType(params: Record) {
+ return request.get(`member/account/fromtype/${params.account_type}`)
+}
+
+/**
+ * 获取会员收货地址列表
+ * @param params
+ * @returns
+ */
+export function getAddressList(params: Record) {
+ return request.get(`member/address`, params)
+}
+
+/**
+ * 获取会员收货地址详情
+ * @param id 会员收货地址id
+ * @returns
+ */
+export function getAddressInfo(id: number) {
+ return request.get(`member/address/${id}`);
+}
+
+/**
+ * 添加会员收货地址
+ * @param params
+ * @returns
+ */
+export function addAddress(params: Record) {
+ return request.post('member/address', params, { showErrorMessage: true, showSuccessMessage: true })
+}
+
+/**
+ * 编辑会员收货地址
+ * @param params
+ * @returns
+ */
+export function editAddress(params: Record) {
+ return request.put(`member/address/${params.id}`, params, { showErrorMessage: true, showSuccessMessage: true })
+}
+
+/**
+ * 删除会员收货地址
+ * @param id
+ * @returns
+ */
+export function deleteAddress(id: number) {
+ return request.delete(`member/address/${id}`, { showErrorMessage: true, showSuccessMessage: true })
+}
+
+/**
+ * 获取会员等级
+ */
+export function getMemberLevel() {
+ return request.get(`member/level`);
+}
+
+/**
+ * 获取成长值任务
+ */
+export function getTaskGrowth() {
+ return request.get(`task/growth`);
+}
+
+/**
+ * 获取签到日期
+ */
+export function getSignInfo(data : AnyObject) {
+ return request.get(`member/sign/info/${data.year}/${data.month}`, {})
+}
+
+/**
+ * 获取日签到奖励
+ */
+export function getDayPack(data : AnyObject) {
+ return request.get(`member/sign/award/${data.year}/${data.month}/${data.day}`)
+}
+/**
+ * 获取签到设置
+ */
+export function getSignConfig() {
+ return request.get(`member/sign/config`)
+}
+
+/**
+ * 点击签到
+ * @returns
+ */
+export function setSign() {
+ return request.post('member/sign')
+}
+
+/**
+ * 获取个人积分
+ */
+export function getMemberAccountPointcount() {
+ return request.get(`member/account/pointcount`)
+}
+
+/**
+ * 获取积分任务
+ */
+export function getTaskPoint() {
+ return request.get(`task/point`)
+}
\ No newline at end of file
diff --git a/src/app/api/mine.ts b/src/app/api/mine.ts
new file mode 100644
index 0000000..ba8416c
--- /dev/null
+++ b/src/app/api/mine.ts
@@ -0,0 +1,8 @@
+import request from '@/utils/request'
+
+/**
+ * 个人中心
+ */
+export function getUserDet() {
+ return request.get('member/member')
+}
\ No newline at end of file
diff --git a/src/app/api/pay.ts b/src/app/api/pay.ts
new file mode 100644
index 0000000..05cf914
--- /dev/null
+++ b/src/app/api/pay.ts
@@ -0,0 +1,15 @@
+import request from '@/utils/request'
+
+/**
+ * 支付
+ */
+export function pay(data : AnyObject) {
+ return request.post(`pay`, data, { showErrorMessage: true })
+}
+
+/**
+ * 获取支付信息
+ */
+export function getPayInfo(tradeType : string, tradeId : number) {
+ return request.get(`pay/info/${tradeType}/${tradeId}`, {}, { showErrorMessage: true })
+}
\ No newline at end of file
diff --git a/src/app/api/shop.ts b/src/app/api/shop.ts
new file mode 100644
index 0000000..89f65b4
--- /dev/null
+++ b/src/app/api/shop.ts
@@ -0,0 +1,76 @@
+import request from '@/utils/request'
+
+/**
+ * 商品分类树状结构
+ */
+export function goodsTree() {
+ return request.get(`shop/goods/category/tree`)
+}
+/**
+ * 商品列表
+ */
+export function goodsList(params : Record) {
+ return request.get(`shop/goods/pages`, params)
+}
+/**
+ * 获取商品详情
+ */
+export function goodsDetail(params : Record) {
+ return request.get(`shop/goods/detail`, params)
+}
+/**
+ * 商品收藏-添加
+ */
+export function goodsCollect(id : number) {
+ return request.post(`shop/goods/collect/`+id)
+}
+/**
+ * 购物车-添加
+ */
+export function shopCart(data : any) {
+ return request.post(`shop/cart`, data)
+}
+/**
+ * 购物车-列表
+ */
+export function shopcartList() {
+ return request.get(`shop/cart`)
+}
+/**
+ * 购物车-删除
+ */
+export function deleteCart(data : any) {
+ return request.put(`shop/cart/delete`, data)
+}
+/**
+ * 获取商品分类列表
+ */
+export function categoryList(params : Record) {
+ return request.get(`shop/goods/category/list`, params)
+}
+/**
+ * 订单-计算(创建订单第1步)
+ */
+export function calculateCreate(params : Record) {
+ return request.get(`shop/order_create/calculate`, params)
+}
+/**
+ * 订单-创建(创建订单第2步-完成订单的创建)
+ */
+export function orderCreate(data : Record) {
+ return request.post(`shop/order_create/create`, data)
+}
+
+/**
+ * 获取支付信息
+ */
+export function getPayInfo(tradeType : string, tradeId : number) {
+ return request.get(`pay/info/${tradeType}/${tradeId}`, {}, { showErrorMessage: true })
+}
+/**
+ * 去支付(第2步)
+
+ */
+export function goPayy(data : Record) {
+ return request.post(`pay`,data)
+}
\ No newline at end of file
diff --git a/src/app/api/system.ts b/src/app/api/system.ts
new file mode 100644
index 0000000..462f82c
--- /dev/null
+++ b/src/app/api/system.ts
@@ -0,0 +1,147 @@
+import request from '@/utils/request'
+
+/**
+ * 获取验证码
+ */
+export function getCaptcha() {
+ return request.get('captcha', {}, {showErrorMessage: true})
+}
+
+/**
+ * 获取微信公众号授权码
+ */
+export function getWechatAuthCode(data: AnyObject) {
+ return request.get('wechat/codeurl', data, {showErrorMessage: false})
+}
+
+/**
+ * 同步微信信息
+ */
+export function wechatSync(data: AnyObject) {
+ return request.post('wechat/sync', data, {showErrorMessage: false})
+}
+
+/**
+ * 获取协议信息
+ */
+export function getAgreementInfo(key: string) {
+ return request.get(`agreement/${key}`)
+}
+
+/**
+ * 重置密码
+ */
+export function resetPassword(data: AnyObject) {
+ return request.post(`password/reset`, data, {showErrorMessage: true})
+}
+
+/**
+ * 发送短信验证码
+ */
+export function sendSms(data: AnyObject) {
+ return request.post(`send/mobile/${data.type}`, data, {showErrorMessage: true})
+}
+
+/**
+ * 获取微信jssdk config
+ */
+export function getWechatSkdConfig(data: AnyObject) {
+ return request.get('wechat/jssdkconfig', data, {showErrorMessage: false})
+}
+
+/**
+ * 上传图片
+ */
+export function uploadImage(data: AnyObject) {
+ return request.upload('file/image', data, {showErrorMessage: true})
+}
+
+/**
+ * 拉取图片
+ */
+export function fetchImage(data: AnyObject) {
+ return request.post('file/image/fetch', data)
+}
+
+/**
+ * 拉取base64图片
+ */
+export function fetchBase64Image(data: AnyObject) {
+ return request.post('file/image/base64', data)
+}
+
+/**
+ * 获取站点信息
+ */
+export function getSiteInfo() {
+ return request.get('site')
+}
+
+/**
+ * 获取微信小程序订阅消息模板id
+ */
+export function getWeappTemplateId(keys: string) {
+ return request.get('weapp/subscribemsg', {keys})
+}
+
+/**
+ * 获取下级地址列表
+ * @param pid
+ */
+export function getAreaListByPid(pid: number = 0) {
+ return request.get(`area/list_by_pid/${pid}`)
+}
+
+/**
+ * 获取地址树列表
+ * @param level
+ */
+export function getAreatree(level: number = 1) {
+ return request.get(`area/tree/${level}`)
+}
+
+/**
+ * 获取地址
+ * @param code
+ */
+export function getAreaByCode(code: number | string) {
+ return request.get(`area/code/${code}`)
+}
+
+/**
+ * 通过经纬度查询地址
+ * @param params
+ */
+export function getAddressByLatlng(params: Record) {
+ return request.get(`area/address_by_latlng`, params, {showErrorMessage: true})
+}
+
+/**
+ * 获取手机端首页列表
+ */
+export function getWapIndexList(data: AnyObject) {
+ return request.get('wap_index', data)
+}
+
+/**
+ * 获取海报
+ * @returns
+ */
+export function getPoster(params: Record) {
+ return request.get("poster", params)
+}
+
+/**
+ * 获取地图设置
+ */
+export function getMap() {
+ return request.get('map')
+}
+
+/**
+ * 通过外部交易号获取消息跳转路径
+ * @param params
+ */
+export function getMsgJumpPath(params: Record) {
+ return request.get('weapp/getMsgJumpPath', params)
+}
diff --git a/src/app/api/verify.ts b/src/app/api/verify.ts
new file mode 100644
index 0000000..d45dccc
--- /dev/null
+++ b/src/app/api/verify.ts
@@ -0,0 +1,47 @@
+import request from '@/utils/request'
+
+/**
+ * 获取核销信息
+ */
+export function getVerifyCode(type: string ,params: AnyObject) {
+ return request.get('verify', {type, data: params})
+}
+
+/**
+ * 获取核销记录
+ */
+export function getVerifyRecords(params: Record) {
+ return request.get('verify_records', params)
+}
+
+/**
+ * 判断是否是核销员
+ */
+export function getCheckVerifier() {
+ return request.get('check_verifier')
+}
+
+
+/**
+ * 获取核销信息
+ */
+export function getVerifierInfo(code: string) {
+ return request.get(`get_verify_by_code/${code}`)
+}
+
+/**
+ * 核销
+ */
+export function verify(code: string) {
+ return request.post(`verify/${code}`,{}, { showSuccessMessage: true, showErrorMessage: true })
+}
+
+/**
+ * 获取核销详情
+ */
+export function getVerifyDetail(code: string) {
+ return request.get(`verify_detail/${code}`,{}, { showErrorMessage: true })
+}
+
+
+
diff --git a/src/app/components/diy/active-cube/index.vue b/src/app/components/diy/active-cube/index.vue
new file mode 100644
index 0000000..fa50e36
--- /dev/null
+++ b/src/app/components/diy/active-cube/index.vue
@@ -0,0 +1,219 @@
+
+
+
+
+
+
+ {{ diyComponent.text }}
+ {{ diyComponent.subTitle.text }}
+
+
+ {{ diyComponent.text }}
+ {{ diyComponent.subTitle.text }}
+
+
+ {{ diyComponent.text }}
+
+ {{ diyComponent.subTitle.text }}
+
+
+
+
+
+ {{ diyComponent.text }}
+
+ {{ diyComponent.subTitle.text }}
+
+
+
+
+
+
+
+
+ {{ item.title.text }}
+ {{ item.subTitle.text }}
+
+ {{ item.moreTitle.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title.text }}
+ {{ item.subTitle.text }}
+
+ {{ item.moreTitle.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.subTitle.text }}
+
+ {{ item.title.text }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/components/diy/carousel-search/index.vue b/src/app/components/diy/carousel-search/index.vue
new file mode 100644
index 0000000..0152ff2
--- /dev/null
+++ b/src/app/components/diy/carousel-search/index.vue
@@ -0,0 +1,634 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+ 首页
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 全部分类
+
+
+ 首页
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/components/diy/float-btn/index.vue b/src/app/components/diy/float-btn/index.vue
new file mode 100644
index 0000000..775cf4f
--- /dev/null
+++ b/src/app/components/diy/float-btn/index.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/components/diy/graphic-nav/index.vue b/src/app/components/diy/graphic-nav/index.vue
new file mode 100644
index 0000000..bf27db7
--- /dev/null
+++ b/src/app/components/diy/graphic-nav/index.vue
@@ -0,0 +1,257 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label.text }}
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label.text }}
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label.text }}
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/components/diy/horz-blank/index.vue b/src/app/components/diy/horz-blank/index.vue
new file mode 100644
index 0000000..42c10ed
--- /dev/null
+++ b/src/app/components/diy/horz-blank/index.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
diff --git a/src/app/components/diy/horz-line/index.vue b/src/app/components/diy/horz-line/index.vue
new file mode 100644
index 0000000..bcab013
--- /dev/null
+++ b/src/app/components/diy/horz-line/index.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/components/diy/hot-area/index.vue b/src/app/components/diy/hot-area/index.vue
new file mode 100644
index 0000000..6bc95eb
--- /dev/null
+++ b/src/app/components/diy/hot-area/index.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/components/diy/image-ads/index.vue b/src/app/components/diy/image-ads/index.vue
new file mode 100644
index 0000000..e388e4c
--- /dev/null
+++ b/src/app/components/diy/image-ads/index.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/components/diy/member-info/index.vue b/src/app/components/diy/member-info/index.vue
new file mode 100644
index 0000000..a5d05b1
--- /dev/null
+++ b/src/app/components/diy/member-info/index.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ info.nickname }}
+
+ UID:{{ info.member_no }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('login') }}/{{ t('register') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ money }}
+
+
+ {{ t('balance') }}
+
+
+
+
+
+ {{ parseInt(info?.point) || 0 }}
+
+
+ {{ t('point') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/components/diy/member-level/index.vue b/src/app/components/diy/member-level/index.vue
new file mode 100644
index 0000000..0a7c775
--- /dev/null
+++ b/src/app/components/diy/member-level/index.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
+ {{info.member_level_name}}
+
+
+ {{ info.member_level ? (upgradeGrowth > 0 ? '去升级' : '去查看') : '去解锁' }}
+
+
+
+
+
+
+
+ {{info.member_level_name}}
+
+ {{info.member_level_name}}购物享{{benefits_arr[0].title}}
+
+
+ {{ info.member_level ? (upgradeGrowth > 0 ? '去升级' : '去查看') : '去解锁' }}
+
+
+
+
+
+
+
+
+ VIP.{{currIndex}}
+
+ {{info.member_level_name}}
+
+ 购物或邀请好友可以提升等级
+
+
+
+
+ 规则
+
+
+
+
+
+
+
+
+
+ 还差{{upgradeGrowth}}成长值即可升级为{{ list[afterCurrIndex].level_name }}
+ 恭喜您升级为最高等级
+
+
+ {{info.member_level ? (upgradeGrowth > 0 ? '做任务' : '点击查看') : '去解锁'}}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/components/diy/notice/index.vue b/src/app/components/diy/notice/index.vue
new file mode 100644
index 0000000..07e8ab5
--- /dev/null
+++ b/src/app/components/diy/notice/index.vue
@@ -0,0 +1,291 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ diyComponent.noticeTitle }}
+
+
+
+
+ {{ item.text }}
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 公告
+
+
+ {{ noticeContent }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/components/diy/rich-text/index.vue b/src/app/components/diy/rich-text/index.vue
new file mode 100644
index 0000000..73613cc
--- /dev/null
+++ b/src/app/components/diy/rich-text/index.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+ 点此编辑『富文本』内容 ——>
+
+ 你可以对文字进行
+ 、
+ 加粗
+ 、
+ 斜体
+ 、
+ 下划线
+ 、
+ 删除线
+ 、文字
+ 颜色
+ 、
+ 背景色
+ 、以及字号
+ 大
+ 小
+ 等简单排版操作。
+
+ 也可在这里插入图片、并对图片加上超级链接,方便用户点击。
+
+
+
+
+
+
+
+
diff --git a/src/app/components/diy/rubik-cube/index.vue b/src/app/components/diy/rubik-cube/index.vue
new file mode 100644
index 0000000..176f05c
--- /dev/null
+++ b/src/app/components/diy/rubik-cube/index.vue
@@ -0,0 +1,590 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/components/diy/text/index.vue b/src/app/components/diy/text/index.vue
new file mode 100644
index 0000000..78dcdf6
--- /dev/null
+++ b/src/app/components/diy/text/index.vue
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+ {{ diyComponent.text }}
+
+
+
+
+
+
+ {{ diyComponent.text }}
+
+
+ {{ diyComponent.subTitle.text }}
+
+
+ {{ diyComponent.more.text }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/components/fixed/demo-index/index.vue b/src/app/components/fixed/demo-index/index.vue
new file mode 100644
index 0000000..df0379a
--- /dev/null
+++ b/src/app/components/fixed/demo-index/index.vue
@@ -0,0 +1,15 @@
+
+
+ 固定模板示例,我也可以装修
+
+
+
+
+
+
+
+
diff --git a/src/app/components/tag/tag.vue b/src/app/components/tag/tag.vue
new file mode 100644
index 0000000..bdb51f2
--- /dev/null
+++ b/src/app/components/tag/tag.vue
@@ -0,0 +1,37 @@
+
+
+ {{ text }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/locale/en/pages.setting.index.json b/src/app/locale/en/pages.setting.index.json
new file mode 100644
index 0000000..bde9e26
--- /dev/null
+++ b/src/app/locale/en/pages.setting.index.json
@@ -0,0 +1,6 @@
+{
+ "personalSettings": "Personal settings",
+ "switchLang": "Switch language",
+ "version": "Version",
+ "logout": "Log out"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.article.detail.json b/src/app/locale/zh-Hans/pages.article.detail.json
new file mode 100644
index 0000000..ca6b8c2
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.article.detail.json
@@ -0,0 +1,5 @@
+{
+ "detail": "文章详情",
+ "abstract": "摘要",
+ "loadingText": "正在加载"
+}
diff --git a/src/app/locale/zh-Hans/pages.article.list.json b/src/app/locale/zh-Hans/pages.article.list.json
new file mode 100644
index 0000000..1770d8c
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.article.list.json
@@ -0,0 +1,7 @@
+{
+ "list": "文章列表",
+ "noData": "~ 暂无数据 ~",
+ "all": "全部",
+ "end": "-- 到底了 --",
+ "searchPlaceholder": "请输入搜索关键词"
+}
diff --git a/src/app/locale/zh-Hans/pages.auth.bind.json b/src/app/locale/zh-Hans/pages.auth.bind.json
new file mode 100644
index 0000000..c02202f
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.auth.bind.json
@@ -0,0 +1,10 @@
+{
+ "bindMobile": "绑定手机号",
+ "bind": "绑定",
+ "binding": "绑定中",
+ "agreeTips": "请阅读并同意",
+ "pleaceAgree": "请勾选已阅读并同意",
+ "mobilePlaceholder": "请输入手机号",
+ "codePlaceholder": "请输入验证码",
+ "weixinUserAuth": "微信用户一键绑定"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.auth.login.json b/src/app/locale/zh-Hans/pages.auth.login.json
new file mode 100644
index 0000000..94bfa6b
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.auth.login.json
@@ -0,0 +1,14 @@
+{
+ "logining": "登录中",
+ "usernamePlaceholder": "请输入账号",
+ "passwordPlaceholder": "请输入密码",
+ "resetpwd": "忘记密码",
+ "noAccount": "还没有账号",
+ "toRegister": "去注册",
+ "and": "和",
+ "agreeTips": "登录代表您同意",
+ "isAgreeTips": "请先阅读并同意协议",
+ "usernameLogin": "密码登录",
+ "mobileLogin": "验证码登录",
+ "mobilePlaceholder": "请输入手机号"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.auth.register.json b/src/app/locale/zh-Hans/pages.auth.register.json
new file mode 100644
index 0000000..961a082
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.auth.register.json
@@ -0,0 +1,16 @@
+{
+ "registering": "注册中",
+ "usernamePlaceholder": "请输入账号",
+ "passwordPlaceholder": "请输入密码",
+ "confirmPasswordPlaceholder": "请再次确认密码",
+ "confirmPasswordError": "两次输入的密码不一致",
+ "resetpwd": "忘记密码",
+ "haveAccount": "已有账号",
+ "toLogin": "去登录",
+ "and": "和",
+ "registerAgreeTips": "注册代表您同意",
+ "isAgreeTips": "请先阅读并同意协议",
+ "usernameRegister": "账号注册",
+ "mobileRegister": "手机号注册",
+ "mobilePlaceholder": "请输入手机号"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.auth.resetpwd.json b/src/app/locale/zh-Hans/pages.auth.resetpwd.json
new file mode 100644
index 0000000..8422899
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.auth.resetpwd.json
@@ -0,0 +1,6 @@
+{
+ "findPassword": "找回密码",
+ "passwordPlaceholder": "请输入密码",
+ "confirmPasswordPlaceholder": "请再次确认密码",
+ "confirmPasswordError": "两次输入的密码不一致"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.index.develop.json b/src/app/locale/zh-Hans/pages.index.develop.json
new file mode 100644
index 0000000..f54fd23
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.index.develop.json
@@ -0,0 +1,10 @@
+{
+ "developTitle":"开发环境配置",
+ "baseUrl":"API请求地址",
+ "imgUrl":"图片服务器地址",
+ "siteId":"站点ID(VITE_SITE_ID)",
+ "siteIdPlaceholder": "请输入站点ID",
+ "pleaseEnterNumber":"请输入数字",
+ "maximumCannotExceed":"最大不能超过"
+
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.account.json b/src/app/locale/zh-Hans/pages.member.account.json
new file mode 100644
index 0000000..c853542
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.account.json
@@ -0,0 +1,7 @@
+{
+ "alipayAccountNo": "支付宝账号",
+ "addBankCard": "添加银行卡",
+ "addAlipayAccount": "添加支付宝账号",
+ "endNumber": "尾号",
+ "bankCard": "银行卡"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.account_edit.json b/src/app/locale/zh-Hans/pages.member.account_edit.json
new file mode 100644
index 0000000..27dd321
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.account_edit.json
@@ -0,0 +1,17 @@
+{
+ "addBankCard": "添加银行卡",
+ "addBankCardTips": "请添加持卡人本人的银行卡",
+ "addAlipayAccount": "添加支付宝账号",
+ "addAlipayAccountTips": "请添加已实名的支付宝账号",
+ "bankRealname": "持卡人姓名",
+ "bankRealnamePlaceholder": "请输入持卡人姓名",
+ "bankName": "银行名称",
+ "bankNamePlaceholder": "请输入银行名称",
+ "bankAccountNo": "银行卡号",
+ "bankAccountNoPlaceholder": "请输入银行卡号",
+ "alipayRealname": "真实姓名",
+ "alipayRealnamePlaceholder": "请输入真实姓名",
+ "alipayAccountNo": "支付宝账号",
+ "alipayAccountNoPlaceholder": "请输入支付宝账号",
+ "deleteConfirm": "确定要删除该账号吗?"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.address.json b/src/app/locale/zh-Hans/pages.member.address.json
new file mode 100644
index 0000000..cee5bf2
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.address.json
@@ -0,0 +1,6 @@
+{
+ "address": "快递地址",
+ "locationAddress": "同城配送地址",
+ "createAddress": "新建收货地址",
+ "default": "默认"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.address_edit.json b/src/app/locale/zh-Hans/pages.member.address_edit.json
new file mode 100644
index 0000000..16563d3
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.address_edit.json
@@ -0,0 +1,12 @@
+{
+ "name": "收货人",
+ "namePlaceholder": "请输入收货人姓名",
+ "mobile": "手机号码",
+ "mobilePlaceholder": "请输入手机号码",
+ "selectArea":"选择地区",
+ "selectAreaPlaceholder":"请选择地区",
+ "address": "详细地址",
+ "addressPlaceholder": "请填写详细地址",
+ "defaultAddress": "设为默认地址",
+ "selectAddressPlaceholder":"请选择地址"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.apply_cash_out.json b/src/app/locale/zh-Hans/pages.member.apply_cash_out.json
new file mode 100644
index 0000000..f12234b
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.apply_cash_out.json
@@ -0,0 +1,30 @@
+{
+ "cashOutNow": "立即提现",
+ "balanceDetail": "余额明细",
+ "cashOutTo": "提现到",
+ "cashOutTypePlaceholder": "请选择提现方式",
+ "wechatpay": "微信默认钱包",
+ "cashOutMoneyTip": "提现金额",
+ "money": "可提现余额",
+ "allTx": "全部提现",
+ "minWithdrawal": "最小提现金额为",
+ "commissionTo": "手续费为",
+ "cashOutList": "提现记录",
+ "cashOutToWechat": "提现至微信",
+ "cashOutToWechatTips": "提现至微信零钱",
+ "cashOutToAlipay": "提现至支付宝",
+ "cashOutToAlipayTips": "请先添加支付宝账号",
+ "cashOutToBank": "提现至银行卡",
+ "cashOutToBankTips": "请先添加银行卡",
+ "alipayAccountNo": "支付宝账号",
+ "debitCard": "储蓄卡",
+ "abnormalOperation": "异常操作",
+ "noAvailableCashOutType": "没有可用的提现方式",
+ "applyMoneyPlaceholder": "请输入提现金额",
+ "moneyformatError": "提现金额格式错误",
+ "applyMoneyExceed": "提现金额超出可提现金额",
+ "applyMoneyBelow": "提现金额小于最低提现金额",
+ "replace": "更换",
+ "isOpenApply": "提现设置未开启",
+ "toAdd": "添加"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.balance.json b/src/app/locale/zh-Hans/pages.member.balance.json
new file mode 100644
index 0000000..f201d71
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.balance.json
@@ -0,0 +1,15 @@
+{
+ "balanceInfo": "我的余额",
+ "recharge": "充值",
+ "cashOut":"提现",
+ "balanceDetail": "余额明细",
+ "accountBalance":"账户余额 (元)",
+ "balance":"余额 (元)",
+ "money":"可提现余额 (元)",
+ "availableBalance": "可用余额",
+ "rechargeAmountError": "充值金额错误",
+ "clickRecharge": "立即充值",
+ "rechargeAmountPlaceholder": "请输入充值金额",
+ "yuan":"元",
+ "rechargeRecord":"充值记录"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.cash_out.json b/src/app/locale/zh-Hans/pages.member.cash_out.json
new file mode 100644
index 0000000..5ab0bd0
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.cash_out.json
@@ -0,0 +1,11 @@
+{
+ "applyTime": "申请时间",
+ "toBeReviewed": "官方正在审核,请耐心等待",
+ "toBeTransfer": "官方正在转账,请耐心等待",
+ "transfer": "官方已转账,请及时查收",
+ "cancelApply": "申请已取消",
+ "balanceDetail": "余额记录",
+ "commissionDetail": "佣金记录",
+ "emptyTip": "暂无提现记录",
+ "commissemptyTip": "暂无佣金记录"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.cash_out_detail.json b/src/app/locale/zh-Hans/pages.member.cash_out_detail.json
new file mode 100644
index 0000000..3f17229
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.cash_out_detail.json
@@ -0,0 +1,12 @@
+{
+ "statusName": "当前状态",
+ "cashOutNo": "交易号",
+ "serviceMoney": "手续费",
+ "createTime": "申请时间",
+ "auditTime": "审核时间",
+ "transferBank": "银行名称",
+ "transferAccount": "收款账号",
+ "refuseReason": "拒绝理由",
+ "transferTypeName": "转账方式名称",
+ "transferTime": "转账时间"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.commission.json b/src/app/locale/zh-Hans/pages.member.commission.json
new file mode 100644
index 0000000..3eef972
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.commission.json
@@ -0,0 +1,15 @@
+{
+ "recharge": "充值",
+ "cashOut":"提现",
+ "transferMoney":"提现",
+ "commissionDetail": "佣金明细",
+ "accountCommission":"当前佣金(元)",
+ "commission":"累计佣金(元)",
+ "money":"提现中佣金(元)",
+ "availableCommission": "可用佣金",
+ "rechargeAmountError": "充值金额错误",
+ "clickRecharge": "立即充值",
+ "rechargeAmountPlaceholder": "请输入充值金额",
+ "yuan":"元",
+ "commissionInfo": "我的佣金"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.detailed_account.json b/src/app/locale/zh-Hans/pages.member.detailed_account.json
new file mode 100644
index 0000000..5527d0f
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.detailed_account.json
@@ -0,0 +1,7 @@
+{
+ "balanceDetail": "余额明细",
+ "commissionDetail": "佣金明细",
+ "balanceEmptyTip": "暂无余额明细",
+ "moneyEmptyTip": "暂无提现明细",
+ "commissionEmptyTip": "暂无佣金明细"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.location_address_edit.json b/src/app/locale/zh-Hans/pages.member.location_address_edit.json
new file mode 100644
index 0000000..6dbc742
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.location_address_edit.json
@@ -0,0 +1,14 @@
+{
+ "name": "收货人",
+ "namePlaceholder": "请输入收货人姓名",
+ "mobile": "手机号码",
+ "mobilePlaceholder": "请输入手机号码",
+ "deliveryAddress":"收货地址",
+ "selectAddress":"选择地址",
+ "selectAddressPlaceholder":"请选择地址",
+ "address": "楼号门牌",
+ "addressPlaceholder": "详细地址如 1单元101",
+ "addressError": "请填写门牌号",
+ "defaultAddress": "设为默认地址",
+ "update": "修改"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.personal.json b/src/app/locale/zh-Hans/pages.member.personal.json
new file mode 100644
index 0000000..fca88d0
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.personal.json
@@ -0,0 +1,12 @@
+{
+ "nickname": "昵称",
+ "sex": "性别",
+ "mobile": "手机号",
+ "birthday": "生日",
+ "unknown": "未知",
+ "updateHeadimg": "更换头像",
+ "updateNickname": "修改昵称",
+ "man": "男",
+ "woman": "女",
+ "bindMobile": "绑定手机"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.recharge_record.json b/src/app/locale/zh-Hans/pages.member.recharge_record.json
new file mode 100644
index 0000000..5b3a1d8
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.recharge_record.json
@@ -0,0 +1,4 @@
+{
+ "rechargeRecord": "充值记录",
+ "emptyTip": "暂无充值记录"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.recharge_record_detail.json b/src/app/locale/zh-Hans/pages.member.recharge_record_detail.json
new file mode 100644
index 0000000..0646047
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.recharge_record_detail.json
@@ -0,0 +1,4 @@
+{
+ "orderNo": "订单编号",
+ "createTime": "创建时间"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.member.withdrawal_detail.json b/src/app/locale/zh-Hans/pages.member.withdrawal_detail.json
new file mode 100644
index 0000000..288248b
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.member.withdrawal_detail.json
@@ -0,0 +1,13 @@
+{
+ "recharge": "充值",
+ "cashOut":"提现",
+ "balanceDetail": "余额明细",
+ "accountBalance":"账户余额(元)",
+ "balance":"余额(元)",
+ "money":"可提现余额(元)",
+ "availableBalance": "可用余额",
+ "rechargeAmountError": "充值金额错误",
+ "clickRecharge": "立即充值",
+ "rechargeAmountPlaceholder": "请输入充值金额",
+ "yuan":"元"
+}
\ No newline at end of file
diff --git a/src/app/locale/zh-Hans/pages.setting.index.json b/src/app/locale/zh-Hans/pages.setting.index.json
new file mode 100644
index 0000000..fc3ef4b
--- /dev/null
+++ b/src/app/locale/zh-Hans/pages.setting.index.json
@@ -0,0 +1,6 @@
+{
+ "personalSettings": "个人设置",
+ "switchLang": "切换语言",
+ "version": "版本号",
+ "logout": "退出登录"
+}
\ No newline at end of file
diff --git a/src/app/pages/auth/agreement.vue b/src/app/pages/auth/agreement.vue
new file mode 100644
index 0000000..f046ac9
--- /dev/null
+++ b/src/app/pages/auth/agreement.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/app/pages/auth/bind.vue b/src/app/pages/auth/bind.vue
new file mode 100644
index 0000000..bd7e1cf
--- /dev/null
+++ b/src/app/pages/auth/bind.vue
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+ {{ t('bindMobile') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('agreeTips') }}
+
+ 《{{ t('userAgreement') }}》
+
+
+ 《{{ t('privacyAgreement') }}》
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/pages/auth/login.vue b/src/app/pages/auth/login.vue
new file mode 100644
index 0000000..df2e839
--- /dev/null
+++ b/src/app/pages/auth/login.vue
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+ {{ t('login') }}
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('noAccount') }}
+ {{ t('toRegister') }}
+
+ {{ t('resetpwd') }}
+
+
+
+
+
+
+
+
+
+
+ {{ t('agreeTips') }}
+
+ {{ t('userAgreement') }}
+
+ {{ t('and') }}
+
+ {{ t('privacyAgreement') }}
+
+
+
+
+
+
+
+
diff --git a/src/app/pages/auth/register.vue b/src/app/pages/auth/register.vue
new file mode 100644
index 0000000..35ae99a
--- /dev/null
+++ b/src/app/pages/auth/register.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+ {{ t('register') }}
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('haveAccount') }},{{ t('toLogin') }}
+
+
+
+
+
+
+
+
+
+
+ {{ t('registerAgreeTips') }}
+
+ {{ t('userAgreement') }}
+
+ {{ t('and') }}
+
+ {{ t('privacyAgreement') }}
+
+
+
+
+
+
+
+
diff --git a/src/app/pages/auth/resetpwd.vue b/src/app/pages/auth/resetpwd.vue
new file mode 100644
index 0000000..26b8eea
--- /dev/null
+++ b/src/app/pages/auth/resetpwd.vue
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+ {{ t('findPassword') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/pages/commodity/commodity.png b/src/app/pages/commodity/commodity.png
new file mode 100644
index 0000000..c921f52
Binary files /dev/null and b/src/app/pages/commodity/commodity.png differ
diff --git a/src/app/pages/commodity/index.vue b/src/app/pages/commodity/index.vue
new file mode 100644
index 0000000..d21042d
--- /dev/null
+++ b/src/app/pages/commodity/index.vue
@@ -0,0 +1,156 @@
+
+
+
+
+
![]()
+
+
+
{{ details.goods.goods_name }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/pages/electionList/index.vue b/src/app/pages/electionList/index.vue
new file mode 100644
index 0000000..a5c4930
--- /dev/null
+++ b/src/app/pages/electionList/index.vue
@@ -0,0 +1,13 @@
+//选举列表
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/pages/electionResults/index.vue b/src/app/pages/electionResults/index.vue
new file mode 100644
index 0000000..6ce6311
--- /dev/null
+++ b/src/app/pages/electionResults/index.vue
@@ -0,0 +1,14 @@
+//选举结果
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/pages/mine/index.vue b/src/app/pages/mine/index.vue
new file mode 100644
index 0000000..c0011f5
--- /dev/null
+++ b/src/app/pages/mine/index.vue
@@ -0,0 +1,14 @@
+//个人信息
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/pages/myElection/index.vue b/src/app/pages/myElection/index.vue
new file mode 100644
index 0000000..648148c
--- /dev/null
+++ b/src/app/pages/myElection/index.vue
@@ -0,0 +1,14 @@
+//我的选举
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/pages/votingElection/index.vue b/src/app/pages/votingElection/index.vue
new file mode 100644
index 0000000..66ae9d4
--- /dev/null
+++ b/src/app/pages/votingElection/index.vue
@@ -0,0 +1,120 @@
+//投票选举
+
+
+
+
+
+ 2024年度董事会成员选举
+
+
+ 投票开始时间:2024年3月15日 18:00
+
+
+ 投票截止时间:2024年3月15日 18:00
+
+
+
+
+
+
+
+ {{item.name}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/pages/webview/index.vue b/src/app/pages/webview/index.vue
new file mode 100644
index 0000000..f78c1b3
--- /dev/null
+++ b/src/app/pages/webview/index.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/stores/diy.ts b/src/app/stores/diy.ts
new file mode 100644
index 0000000..ce9dd5a
--- /dev/null
+++ b/src/app/stores/diy.ts
@@ -0,0 +1,138 @@
+import { defineStore } from 'pinia'
+import { toRaw } from 'vue'
+import { diyRedirect, currRoute, getToken } from '@/utils/common';
+import { useLogin } from '@/hooks/useLogin';
+
+interface Diy {
+ mode: string, // 模式:decorate 装修,为空表示正常
+ pageMode: string, // 页面展示模式,diy:自定义,fixed:固定
+ currentIndex: number,
+ global: {
+ title: string,
+ pageStartBgColor: string, // 页面背景颜色(开始)
+ pageEndBgColor: string, // 页面背景颜色(结束)
+ bottomTabBarSwitch: boolean, // 底部导航开关
+ bgUrl: string
+ },
+ // 组件集合
+ value: any[],
+ topFixedStatus: string, // 置顶组件的状态
+ scrollTop: number,
+ topTabarHeight: number
+}
+
+const useDiyStore = defineStore('diy', {
+ state: (): Diy => {
+ return {
+ mode: '',
+ pageMode: 'diy',
+ currentIndex: -99,
+ global: {
+ title: "",
+ pageStartBgColor: '', // 页面背景颜色(开始)
+ pageEndBgColor: '', // 页面背景颜色(结束)
+ bottomTabBarSwitch: true,
+ bgUrl: ''
+ },
+ value: [], // 组件集合
+ topFixedStatus: 'home', // 顶部 置顶组件状态,home:展示首页数据、diy:展示置顶组件定义的子页面
+ scrollTop: 0, // 滚动位置
+ topTabarHeight: 0
+ }
+ },
+ getters: {},
+ actions: {
+ // 初始化
+ init() {
+ // #ifdef H5
+ var data = JSON.stringify({
+ type: 'init',
+ load: true
+ });
+ // 传输给后台数据
+ window.parent.postMessage(data, '*');
+
+ // 监听父页面发来的消息
+ window.addEventListener('message', event => {
+ try {
+ let data = JSON.parse(event.data);
+ this.currentIndex = data.currentIndex;
+ this.pageMode = data.pageMode;
+ if (data.global) this.global = data.global;
+ if (data.value) this.value = data.value;
+
+ if (this.value) {
+ this.value.forEach((item, index) => {
+ item.pageStyle = '';
+ if (item.pageStartBgColor) {
+ if (item.pageStartBgColor && item.pageEndBgColor) item.pageStyle += `background:linear-gradient(${ item.pageGradientAngle },${ item.pageStartBgColor },${ item.pageEndBgColor });`;
+ else item.pageStyle += 'background-color:' + item.pageStartBgColor + ';';
+ }
+
+ if (item.margin) {
+ if (item.margin.top > 0) {
+ item.pageStyle += 'padding-top:' + item.margin.top * 2 + 'rpx' + ';';
+ } else {
+ item.pageStyle += 'padding-top:2rpx' + ';'; // 装修实时预览需要设置
+ }
+ item.pageStyle += 'padding-bottom:' + item.margin.bottom * 2 + 'rpx' + ';';
+ item.pageStyle += 'padding-right:' + item.margin.both * 2 + 'rpx' + ';';
+ item.pageStyle += 'padding-left:' + item.margin.both * 2 + 'rpx' + ';';
+ }
+ });
+ }
+ // console.log('uniapp 接受后台装修返回的组件数据', data);
+ } catch (e) {
+ console.log('uni-app diy 接受数据错误', e)
+ }
+ }, false);
+ // #endif
+ },
+ // 将数据传输给后台
+ postMessage(index: any, component: any) {
+ // #ifdef H5
+ this.currentIndex = index;
+ if (component)
+ var data: any = JSON.stringify({
+ type: 'data',
+ index: this.currentIndex,
+ global: toRaw(this.global),
+ value: toRaw(this.value),
+ component: toRaw(component)
+ });
+ // 传输给后台数据
+ window.parent.postMessage(data, '*');
+ // #endif
+ },
+ // 选中正在编辑的组件
+ changeCurrentIndex(index: number, component: any = null) {
+ // #ifdef H5
+
+ // 实际展示禁止编辑
+ if (this.mode == '') return;
+
+ // 减少重复请求
+ if (this.currentIndex == index) return;
+ this.currentIndex = index;
+ var data = JSON.stringify({
+ type: 'change',
+ index,
+ component: toRaw(component)
+ });
+ window.parent.postMessage(data, '*');
+ // #endif
+ },
+ toRedirect(data: any) {
+ if (Object.keys(data).length) {
+ if (!data.name) return;
+ if (currRoute() == 'app/pages/member/index' && !getToken()) {
+ useLogin().setLoginBack({ url: data.url })
+ return;
+ }
+ diyRedirect(data);
+ }
+ }
+ }
+})
+
+export default useDiyStore
\ No newline at end of file
diff --git a/src/components/area-select/area-select.vue b/src/components/area-select/area-select.vue
new file mode 100644
index 0000000..cf86629
--- /dev/null
+++ b/src/components/area-select/area-select.vue
@@ -0,0 +1,154 @@
+
+
+ 请选择地区
+
+
+
+ {{ selected.province.name }}
+ 请选择
+
+
+ {{ selected.city.name }}
+ 请选择
+
+
+ {{ selected.district.name }}
+ 请选择
+
+
+
+
+
+ {{ item.name }}
+
+
+ {{ item.name }}
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/information-filling/information-filling.vue b/src/components/information-filling/information-filling.vue
new file mode 100644
index 0000000..83026b4
--- /dev/null
+++ b/src/components/information-filling/information-filling.vue
@@ -0,0 +1,117 @@
+
+
+
+ {{ t('getAvatarNickname') }}
+ {{ t('getAvatarNicknameTips') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/libs/config/index.ts b/src/components/libs/config/index.ts
new file mode 100644
index 0000000..9ec304a
--- /dev/null
+++ b/src/components/libs/config/index.ts
@@ -0,0 +1,22 @@
+const version = '3'
+
+// 开发环境才提示,生产环境不会提示
+if (process.env.NODE_ENV === 'development') {
+ console.log(`\n %c lxui-uni V${version} %c https://blog.csdn.net/qq_51091386/article/details/138125947 \n\n`, 'color: #ffffff; background: #3c9cff; padding:5px 0;', 'color: #3c9cff;background: #ffffff; padding:5px 0;');
+}
+
+export let uploadUrl = '/api/v1.Resources/upload'
+export let uploadBaseUrl = ''
+const setConfig = (config: any) => {
+ console.log(config)
+ if (config?.uploadUrl) {
+ uploadUrl = config.uploadUrl
+ }
+ if (config?.uploadBaseUrl) {
+ uploadBaseUrl = config.uploadBaseUrl
+ }
+}
+export default {
+ version,
+ setConfig
+}
\ No newline at end of file
diff --git a/src/components/libs/hooks/useListLoadClass/index.ts b/src/components/libs/hooks/useListLoadClass/index.ts
new file mode 100644
index 0000000..ae48474
--- /dev/null
+++ b/src/components/libs/hooks/useListLoadClass/index.ts
@@ -0,0 +1,145 @@
+/*
+ * @description: 分页请求
+ * @fileName: useListLoadClass.ts
+ * @author: lxx
+ * @date: 2023-07-08 08:55:52
+ * @version: V1.0.0
+ */
+import { reactive, ref, computed } from "vue"
+import { onReachBottom } from "@dcloudio/uni-app"
+
+class LoadDataClass {
+ // 请求参数
+ static queryParams = reactive({
+ page: 1,
+ limit: 10
+ })
+ // 列表数据
+ list = ref([])
+ total = ref(0)
+ // 前置处理方法
+ afterLoadData: Function | undefined
+ // 请求方法
+ Query: Function
+ // 加载状态参数
+ isLoading = ref(false)
+ // 无更多数据了
+ isNoData = computed(() => {
+ if (LoadDataClass.queryParams.page * LoadDataClass.queryParams.limit >= this.total.value) {
+ return true
+ } else {
+ return false
+ }
+ })
+ // 显示暂无数据
+ isEmpty = computed(() => {
+ if (this.total.value === 0) {
+ return true
+ } else {
+ return false
+ }
+ })
+
+ constructor(apiFunctions: Function, afterLoadData?: Function, options: any = {}) {
+ this.queryParamsReset()
+ this.Query = apiFunctions
+ this.afterLoadData = afterLoadData
+ // console.log('options', options)
+ // 存在额外参数拼接
+ this.setParams(options)
+ }
+ // 加载数据
+ LoadData = async () => {
+ uni.showLoading({
+ title: '加载中...'
+ })
+ this.isLoading.value = true
+ const res = await this.Query(LoadDataClass.queryParams)
+ this.afterLoadData && this.afterLoadData(res)
+ this.total.value = res.data.total
+ this.list.value = this.list.value.concat(res.data.data)
+
+ uni.hideLoading()
+ uni.stopPullDownRefresh()
+ this.isLoading.value = false
+ }
+ /**
+ * 添加额外参数刷新
+ * @param options: 参数
+ * @param isClear: 是否清空数据 false
+ */
+ setParams = (options: any, isClear: boolean = false) => {
+ if (isClear) {
+ this.queryParamsReset()
+ } else {
+ LoadDataClass.queryParams.page = 1
+ }
+ this.list.value = []
+ LoadDataClass.queryParams = Object.assign(LoadDataClass.queryParams, options)
+ // 加载数据
+ this.LoadData()
+ }
+ // 加载更多
+ LoadMore = () => {
+ if (this.isNoData.value || this.isLoading.value) return // 无数据或者加载中不进行加载
+ LoadDataClass.queryParams.page += 1
+ this.LoadData()
+ }
+ // 重置参数
+ queryParamsReset = () => {
+ LoadDataClass.queryParams = reactive({
+ page: 1,
+ limit: 10
+ })
+ }
+
+ /**
+ * 刷新
+ * @param isClear: 是否清空数据
+ */
+ ReLoad = (isClear: boolean = false) => {
+ this.isLoading.value = false
+ this.list.value = []
+ if (isClear) {
+ this.queryParamsReset()
+ } else {
+ LoadDataClass.queryParams.page = 1
+ }
+ this.LoadData()
+ }
+}
+/**
+ * 分页加载数据方法
+ * @param api: ListAPI 方法
+ * @param afterLoadData: res数据前置处理方法
+ * @returns
+ */
+interface LoadDataInt {
+ api: Function
+ afterLoadData?: Function
+ options?: any
+ isNeedReachBottom?: boolean
+}
+
+export function LoadData({ api, afterLoadData, options, isNeedReachBottom = true }: LoadDataInt) {
+ const data = new LoadDataClass(api, afterLoadData, options)
+
+ // 下拉加载
+ if (isNeedReachBottom) {
+ onReachBottom(() => {
+ console.log('onReachBottom')
+ data.LoadMore()
+ })
+ }
+
+ return {
+ list: data.list,
+ isLoading: data.isLoading,
+ isNoData: data.isNoData,
+ isEmpty: data.isEmpty,
+ ReLoad: data.ReLoad,
+ setParams: data.setParams,
+ LoadMore: data.LoadMore
+ }
+}
+
diff --git a/src/components/libs/util/index.ts b/src/components/libs/util/index.ts
new file mode 100644
index 0000000..b2a4b42
--- /dev/null
+++ b/src/components/libs/util/index.ts
@@ -0,0 +1,294 @@
+/**
+ * 公共跳转方法
+ * @author liux
+ * @date 2023-08-15 14:17
+ * @param { string } url 跳转路径
+ * @param { "navigateTo" | "redirectTo" | "reLaunch" | "switchTab" } [mode=navigateTo] 跳转模式
+ * @param { object } params 跳转传参
+ * @example
+ * goToPage({ url: 'pages/index/index', mode: 'navigateTo', params: {'id': 1} })
+ * @returns { void }
+ */
+type pageMode = 'navigateTo' | 'redirectTo' | 'reLaunch' | 'switchTab'
+
+interface goToPageInt {
+ url: string
+ mode?: pageMode
+ params?: {
+ [n: string]: string | number | boolean
+ }
+}
+
+export const goToPage = ({ url, mode = 'navigateTo', params = {} }: goToPageInt): void => {
+ if (!url || url.length === 0) {
+ throw Error('"url" is a required parameter')
+ }
+
+ const urlEncode = (params: any = {}) => {
+ const result :string[] = []
+ for (const k in params) {
+ if (!params[k]) continue
+ result.push(k + '=' + params[k])
+ }
+
+ return result.join('&')
+ }
+ // const storage = JSON.parse(uni.getStorageSync('LX_user'))
+ // const token = storage?.userInfo?.token
+ // if(!token) {
+ // url = 'pages/login/loginXcx'
+ // mode = 'navigateTo'
+ // }
+ const queryStr = !isEmpty(params) ? '?' + urlEncode(params) : ''
+ const obj = { url: `/${url}${queryStr}` }
+ // console.log('obj', obj)
+ switch (mode) {
+ case 'navigateTo':
+ uni.navigateTo(obj)
+ break
+ case 'redirectTo':
+ uni.redirectTo(obj)
+ break
+ case 'reLaunch':
+ uni.reLaunch(obj)
+ break
+ case 'switchTab':
+ uni.switchTab(obj)
+ break
+ default:
+ throw Error(`${mode} does not exist`)
+ }
+}
+
+/**
+ * 判断是否为空对象
+ * @author liux
+ * @date 2023-08-15 14:17
+ * @license MIT
+ * @param {*} object 源对象
+ * @returns { boolean }
+ */
+export const isEmptyObject = (object: any): boolean => {
+ return Object.keys(object).length === 0
+}
+
+/**
+ * 判断是否为对象
+ * @author liux
+ * @date 2023-08-15 14:17
+ * @license MIT
+ * @param {*} object 源对象
+ * @returns { boolean }
+ */
+export const isObject = (object: any): boolean => {
+ return Object.prototype.toString.call(object) === '[object Object]'
+}
+
+/**
+ * 判断是否为数组
+ * @author liux
+ * @license MIT
+ * @param {*} object 源对象
+ * @returns { boolean }
+ */
+export const isArray = (object: any): boolean => {
+ return Object.prototype.toString.call(object) === '[object Array]'
+}
+
+/**
+ * 判断是否为空
+ * @author liux
+ * @license MIT
+ * @param {*} value 源对象
+ * @returns { boolean }
+ */
+export const isEmpty = (value: any): boolean => {
+ if (isArray(value)) {
+ return value.length === 0
+ }
+ if (isObject(value)) {
+ return isEmptyObject(value)
+ }
+ return !value
+}
+
+/**
+ * 格式化时间戳(多格式)
+ * @author liux
+ * @license MIT
+ * @param { number } time 长度为 10 | 13 的时间戳
+ * @param { string } [format=yyyy-MM-dd] format 转换格式
+ * @example
+ * formatTime(1691744378556, 'yyyy-MM-dd HH:mm:ss')
+ * @returns { string }
+ */
+
+export const formatTime = (time: number, format: string = 'yyyy-MM-dd HH:mm:ss'): string => {
+ const len = time.toString().trim().length
+ if (len !== 10 && len !== 13) {
+ throw Error('"time" is a error parameter')
+ }
+
+ time = len !== 13 ? time * 1000 : time
+
+ if (!time) return ''
+ const date = new Date(time)
+ const M = (date.getMonth() + 1).toString()
+ const d = date.getDate().toString()
+ const H = date.getHours().toString()
+ const m = date.getMinutes().toString()
+ const s = date.getSeconds().toString()
+ const timeObject: {
+ [n: string]: string
+ } = {
+ yyyy: date.getFullYear().toString(),
+ MM: M.padStart(2, '0'),
+ dd: d.padStart(2, '0'),
+ HH: H.padStart(2, '0'),
+ mm: m.padStart(2, '0'),
+ ss: s.padStart(2, '0'),
+ M: M,
+ d: d,
+ H: H,
+ m: m,
+ s: s
+ }
+ const reg = new RegExp(Object.keys(timeObject).join('|'), 'g')
+ const res = format.replace(reg, (k) => {
+ return timeObject[k]
+ })
+ return res
+}
+
+// 判断当前时间是否在一个时间区间内
+export const isTimeIn = (start: string, end: string) => {
+ // 获取当前时间
+ const currentTime = new Date()
+ const startArr = start.split(':').map(Number)
+ // 设置开始时间为10:00
+ const startTime = new Date()
+ startTime.setHours(startArr[0], startArr[1])
+
+ // 设置结束时间为20:00
+ const endArr = end.split(':').map(Number)
+ const endTime = new Date()
+ endTime.setHours(endArr[0], endArr[1])
+
+ // 检查当前时间是否在10:00到20:00之间
+ if (currentTime >= startTime && currentTime <= endTime) {
+ // console.log('当前时间在之间')
+ } else {
+ // console.log('当前时间不在之间')
+ }
+}
+
+/**
+ * 防抖函数
+ * @author liux
+ * @license MIT
+ * @param {function} fn
+ * @param {umber} [wait=1000] wait
+ * @returns { void }
+ */
+export const debounce = any>(fn: T, wait: number = 1000): ((...args: Parameters) => void) => {
+ let timer: any
+
+ return function (this: any, ...args: Parameters) {
+ if (timer) clearTimeout(timer)
+
+ timer = setTimeout(() => {
+ fn.apply(this, args)
+ }, wait)
+ }
+}
+
+/**
+ * 节流函数
+ * @author liux
+ * @date 2023-08-15 14:17
+ * @license MIT
+ * @param { function } fn
+ * @param { number } [wait=1000] wait
+ */
+export const throttle = any>(fn: T, wait: number = 1000) => {
+ let timer: number = Date.now()
+ return function (this: any, ...args: Parameters) {
+ if (Date.now() - timer >= wait) {
+ fn.apply(this, args)
+ timer = Date.now()
+ }
+ }
+}
+
+/**
+ * 保存图片到本地
+ * @author liux
+ * @param { string } url 需要下载的图片
+ * @example
+ * saveImgData('/upload/images/img.png')
+ * @returns
+ */
+export const saveImgData = debounce((url: string) => {
+ uni.showLoading({ title: '图片保存中...', mask: true })
+ // 判断图片地址是否有http
+ if (url.indexOf('http') === -1) {
+ url = import.meta.env.VITE_APP_BASE_URL + url
+ }
+ uni.downloadFile({
+ url,
+ success: (res: any) => {
+ if (res.statusCode === 200) {
+ uni.saveImageToPhotosAlbum({
+ filePath: res.tempFilePath,
+ success: () => {
+ uni.showToast({
+ title: '保存成功~',
+ icon: 'none',
+ duration: 2000
+ })
+ },
+ fail: () => {
+ uni.showToast({
+ title: '保存失败~',
+ icon: 'none',
+ duration: 2000
+ })
+ },
+ complete: () => {
+ uni.hideLoading()
+ }
+ })
+ }
+ }
+ })
+})
+
+/**
+ * 设置剪贴板
+ * @author liux
+ * @param { string } data 需要复制的内容
+ * @example
+ * setClipboardData('123456')
+ * @returns
+ */
+export const setClipboardData = (data: string) => {
+ uni.setClipboardData({
+ data: data,
+ success: () => {
+ uni.showToast({
+ title: '复制成功',
+ icon: 'none',
+ duration: 2000
+ })
+ }
+ })
+}
+
+export default {
+ goToPage,
+ formatTime,
+ debounce,
+ throttle,
+ saveImgData,
+ setClipboardData
+}
diff --git a/src/components/liu-checkBox/liu-checkBox.vue b/src/components/liu-checkBox/liu-checkBox.vue
new file mode 100644
index 0000000..5681577
--- /dev/null
+++ b/src/components/liu-checkBox/liu-checkBox.vue
@@ -0,0 +1,133 @@
+
+
+
+ {{item.sku_name}}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/lx-header/lx-header.vue b/src/components/lx-header/lx-header.vue
new file mode 100644
index 0000000..5339e9c
--- /dev/null
+++ b/src/components/lx-header/lx-header.vue
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+
+
+../../libs/util
\ No newline at end of file
diff --git a/src/components/lx-img/lx-img.vue b/src/components/lx-img/lx-img.vue
new file mode 100644
index 0000000..e5d3f97
--- /dev/null
+++ b/src/components/lx-img/lx-img.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/lx-list-state/lx-list-state.vue b/src/components/lx-list-state/lx-list-state.vue
new file mode 100644
index 0000000..941b18d
--- /dev/null
+++ b/src/components/lx-list-state/lx-list-state.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ tips }}
+
+
+
+ 正在努力加载更多~
+ 已加载全部~
+ 上拉加载更多~
+
+
+
+
diff --git a/src/components/lx-list/lx-list.vue b/src/components/lx-list/lx-list.vue
new file mode 100644
index 0000000..47bdc3b
--- /dev/null
+++ b/src/components/lx-list/lx-list.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/mescroll/hooks/useMescroll.js b/src/components/mescroll/hooks/useMescroll.js
new file mode 100644
index 0000000..ef91cd1
--- /dev/null
+++ b/src/components/mescroll/hooks/useMescroll.js
@@ -0,0 +1,66 @@
+// 小程序无法在hook中使用页面级别生命周期,需单独传入: https://ask.dcloud.net.cn/question/161173
+// import { onPageScroll, onReachBottom, onPullDownRefresh} from '@dcloudio/uni-app';
+
+/**
+ * 初始化mescroll, 相当于vue2的mescroll-mixins.js文件 (mescroll-body 和 mescroll-uni 通用)
+ * mescroll-body需传入onPageScroll, onReachBottom
+ * mescroll-uni无需传onPageScroll, onReachBottom
+ * 当down.native为true时,需传入onPullDownRefresh
+ */
+function useMescroll(onPageScroll, onReachBottom, onPullDownRefresh){
+ // mescroll实例对象
+ let mescroll = null;
+
+ // mescroll组件初始化的回调,可获取到mescroll对象
+ const mescrollInit = (e)=> {
+ mescroll = e;
+ }
+
+ // 获取mescroll对象, mescrollInit执行之后会有值, 生命周期created中会有值
+ const getMescroll = ()=>{
+ return mescroll
+ }
+
+ // 下拉刷新的回调 (mixin默认resetUpScroll)
+ const downCallback = ()=> {
+ if(mescroll.optUp.use){
+ mescroll.resetUpScroll()
+ }else{
+ setTimeout(()=>{
+ mescroll.endSuccess();
+ }, 500)
+ }
+ }
+
+ // 上拉加载的回调
+ const upCallback = ()=> {
+ // mixin默认延时500自动结束加载
+ setTimeout(()=>{
+ mescroll.endErr();
+ }, 500)
+ }
+
+ // 注册系统自带的下拉刷新 (配置down.native为true时生效, 还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
+ onPullDownRefresh && onPullDownRefresh(() => {
+ mescroll && mescroll.onPullDownRefresh();
+ })
+
+ // 注册列表滚动事件,用于判定在顶部可下拉刷新,在指定位置可显示隐藏回到顶部按钮 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效)
+ onPageScroll && onPageScroll(e=>{
+ mescroll && mescroll.onPageScroll(e);
+ })
+
+ // 注册滚动到底部的事件,用于上拉加载 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效)
+ onReachBottom && onReachBottom(()=>{
+ mescroll && mescroll.onReachBottom();
+ })
+
+ return {
+ getMescroll,
+ mescrollInit,
+ downCallback,
+ upCallback
+ }
+}
+
+export default useMescroll
\ No newline at end of file
diff --git a/src/components/mescroll/hooks/useMescrollComp.js b/src/components/mescroll/hooks/useMescrollComp.js
new file mode 100644
index 0000000..3b83847
--- /dev/null
+++ b/src/components/mescroll/hooks/useMescrollComp.js
@@ -0,0 +1,56 @@
+import { ref } from 'vue';
+
+// 小程序无法在hook中使用页面级别生命周期,需单独传入: https://ask.dcloud.net.cn/question/161173
+// import { onPageScroll, onReachBottom, onPullDownRefresh} from '@dcloudio/uni-app';
+
+/**
+ * mescroll-body写在子组件时,需通过useMescrollComp补充子组件缺少的生命周期, 相当于vue2的mescroll-comp.js文件
+ * 必须传入onPageScroll, onReachBottom
+ * 当down.native为true时,需传入onPullDownRefresh
+ */
+function useMescrollComp(onPageScroll, onReachBottom, onPullDownRefresh){
+ // 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件
+ onPageScroll(e=>{
+ handlePageScroll(e)
+ })
+
+ onReachBottom(()=>{
+ handleReachBottom()
+ })
+
+ // 当down的native: true时, 还需传递此方法进到子组件
+ onPullDownRefresh && onPullDownRefresh(()=>{
+ handlePullDownRefresh()
+ })
+
+ const mescrollItem = ref(null)
+
+ const handlePageScroll = (e)=>{
+ const mescroll = getMescroll()
+ mescroll && mescroll.onPageScroll(e);
+ }
+
+ const handleReachBottom = ()=>{
+ const mescroll = getMescroll()
+ mescroll && mescroll.onReachBottom();
+ }
+
+ const handlePullDownRefresh = ()=>{
+ const mescroll = getMescroll()
+ mescroll && mescroll.onPullDownRefresh();
+ }
+
+ const getMescroll = ()=>{
+ if(mescrollItem.value && mescrollItem.value.getMescroll){
+ return mescrollItem.value.getMescroll()
+ }
+ return null
+ }
+
+ return {
+ mescrollItem,
+ getMescroll
+ }
+}
+
+export default useMescrollComp
\ No newline at end of file
diff --git a/src/components/mescroll/hooks/useMescrollMore.js b/src/components/mescroll/hooks/useMescrollMore.js
new file mode 100644
index 0000000..f9a3cd0
--- /dev/null
+++ b/src/components/mescroll/hooks/useMescrollMore.js
@@ -0,0 +1,69 @@
+import { ref } from 'vue';
+
+// 小程序无法在hook中使用页面级别生命周期,需单独传入: https://ask.dcloud.net.cn/question/161173
+// import { onPageScroll, onReachBottom, onPullDownRefresh} from '@dcloudio/uni-app';
+
+/** mescroll-more示例写在子组件时,需通过useMescrollMore补充子组件缺少的生命周期, 相当于vue2的mescroll-more.js文件 */
+function useMescrollMore(mescrollItems, onPageScroll, onReachBottom, onPullDownRefresh){
+ // 当前tab下标
+ const tabIndex = ref(0)
+
+ // 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件
+ onPageScroll && onPageScroll(e=>{
+ handlePageScroll(e)
+ })
+
+ onReachBottom && onReachBottom(()=>{
+ handleReachBottom()
+ })
+
+ // 当down的native: true时, 还需传递此方法进到子组件
+ onPullDownRefresh && onPullDownRefresh(()=>{
+ handlePullDownRefresh()
+ })
+
+ const handlePageScroll = (e)=>{
+ let mescroll = getMescroll(tabIndex.value);
+ mescroll && mescroll.onPageScroll(e);
+ }
+ const handleReachBottom = ()=>{
+ let mescroll = getMescroll(tabIndex.value);
+ mescroll && mescroll.onReachBottom();
+ }
+
+ const handlePullDownRefresh = ()=>{
+ let mescroll = getMescroll(tabIndex.value);
+ mescroll && mescroll.onPullDownRefresh();
+ }
+
+ // 根据下标获取对应子组件的mescroll
+ const getMescroll = (i)=>{
+ if (mescrollItems && mescrollItems[i]) {
+ return mescrollItems[i].value.getMescroll()
+ } else{
+ return null
+ }
+ }
+
+ // 切换tab,恢复滚动条位置
+ const scrollToLastY = ()=>{
+ let mescroll = getMescroll(tabIndex.value);
+ if(mescroll){
+ // 恢复上次滚动条的位置
+ let y = mescroll.getScrollTop()
+ mescroll.scrollTo(y, 0)
+ // 再次恢复上次滚动条的位置, 确保元素已渲染
+ setTimeout(()=>{
+ mescroll.scrollTo(y, 0)
+ },20)
+ }
+ }
+
+ return {
+ tabIndex,
+ getMescroll,
+ scrollToLastY
+ }
+}
+
+export default useMescrollMore
\ No newline at end of file
diff --git a/src/components/mescroll/mescroll-body/mescroll-body.css b/src/components/mescroll/mescroll-body/mescroll-body.css
new file mode 100644
index 0000000..1107710
--- /dev/null
+++ b/src/components/mescroll/mescroll-body/mescroll-body.css
@@ -0,0 +1,19 @@
+.mescroll-body {
+ position: relative; /* 下拉刷新区域相对自身定位 */
+ height: auto; /* 不可固定高度,否则overflow:hidden导致无法滑动; 同时使设置的最小高生效,实现列表不满屏仍可下拉*/
+ overflow: hidden; /* 当有元素写在mescroll-body标签前面时,可遮住下拉刷新区域 */
+ box-sizing: border-box; /* 避免设置padding出现双滚动条的问题 */
+}
+
+/* 使sticky生效: 父元素不能overflow:hidden或者overflow:auto属性 */
+.mescroll-body.mescorll-sticky{
+ overflow: unset !important
+}
+
+/* 适配 iPhoneX */
+@supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) {
+ .mescroll-safearea {
+ padding-bottom: constant(safe-area-inset-bottom);
+ padding-bottom: env(safe-area-inset-bottom);
+ }
+}
\ No newline at end of file
diff --git a/src/components/mescroll/mescroll-body/mescroll-body.vue b/src/components/mescroll/mescroll-body/mescroll-body.vue
new file mode 100644
index 0000000..ef01f2d
--- /dev/null
+++ b/src/components/mescroll/mescroll-body/mescroll-body.vue
@@ -0,0 +1,400 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{downText}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ mescroll.optUp.textLoading }}
+
+
+ {{ mescroll.optUp.textNoMore }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/mescroll/mescroll-diy/beibei/components/mescroll-down.css b/src/components/mescroll/mescroll-diy/beibei/components/mescroll-down.css
new file mode 100644
index 0000000..dcefe2d
--- /dev/null
+++ b/src/components/mescroll/mescroll-diy/beibei/components/mescroll-down.css
@@ -0,0 +1,47 @@
+/*下拉刷新--标语*/
+.mescroll-downwarp .downwarp-slogan{
+ display: block;
+ width: 420rpx;
+ height: 168rpx;
+ margin: auto;
+}
+/*下拉刷新--向下进度动画*/
+.mescroll-downwarp .downwarp-progress{
+ display: inline-block;
+ width: 40rpx;
+ height: 40rpx;
+ border: none;
+ margin: auto;
+ background-size: contain;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-image: url(https://www.mescroll.com/img/beibei/mescroll-progress.png);
+ transition: all 300ms;
+}
+/*下拉刷新--进度条*/
+.mescroll-downwarp .downwarp-loading{
+ display: inline-block;
+ width: 32rpx;
+ height: 32rpx;
+ border-radius: 50%;
+ border: 2rpx solid #FF8095;
+ border-bottom-color: transparent;
+}
+/*下拉刷新--吉祥物*/
+.mescroll-downwarp .downwarp-mascot{
+ position: absolute;
+ right: 16rpx;
+ bottom: 0;
+ width: 100rpx;
+ height: 100rpx;
+ background-size: contain;
+ background-repeat: no-repeat;
+ animation: animMascot .6s steps(1,end) infinite;
+}
+@keyframes animMascot {
+ 0% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb1.png)}
+ 25% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb2.png)}
+ 50% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb3.png)}
+ 75% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb4.png)}
+ 100% {background-image: url(https://www.mescroll.com/img/beibei/mescroll-bb1.png)}
+}
\ No newline at end of file
diff --git a/src/components/mescroll/mescroll-diy/beibei/components/mescroll-down.vue b/src/components/mescroll/mescroll-diy/beibei/components/mescroll-down.vue
new file mode 100644
index 0000000..ee1d321
--- /dev/null
+++ b/src/components/mescroll/mescroll-diy/beibei/components/mescroll-down.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/mescroll/mescroll-diy/beibei/mescroll-body.vue b/src/components/mescroll/mescroll-diy/beibei/mescroll-body.vue
new file mode 100644
index 0000000..305330c
--- /dev/null
+++ b/src/components/mescroll/mescroll-diy/beibei/mescroll-body.vue
@@ -0,0 +1,360 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ mescroll.optUp.textLoading }}
+
+
+ {{ mescroll.optUp.textNoMore }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/mescroll/mescroll-diy/beibei/mescroll-uni-option.js b/src/components/mescroll/mescroll-diy/beibei/mescroll-uni-option.js
new file mode 100644
index 0000000..0411f49
--- /dev/null
+++ b/src/components/mescroll/mescroll-diy/beibei/mescroll-uni-option.js
@@ -0,0 +1,51 @@
+import { img } from '@/utils/common';
+
+// mescroll-uni和mescroll-body 的全局配置
+const GlobalOption = {
+ down: {
+ // 其他down的配置参数也可以写,这里只展示了常用的配置:
+ offset: uni.upx2px(140), // 在列表顶部,下拉大于140upx,松手即可触发下拉刷新的回调
+ native: false // 是否使用系统自带的下拉刷新; 默认false; 仅在mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
+ },
+ up: {
+ // 其他up的配置参数也可以写,这里只展示了常用的配置:
+ offset: 150, // 距底部多远时,触发upCallback
+ toTop: {
+ // 回到顶部按钮,需配置src才显示
+ src: "https://www.mescroll.com/img/mescroll-totop.png", // 图片路径 (建议放入static目录, 如 /static/img/mescroll-totop.png )
+ offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000px
+ right: 20, // 到右边的距离, 默认20 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx)
+ bottom: 120, // 到底部的距离, 默认120 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx)
+ width: 72 // 回到顶部图标的宽度, 默认72 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx)
+ },
+ empty: {
+ use: true, // 是否显示空布局
+ icon: img("static/resource/images/system/empty.png") // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png )
+ }
+ },
+ // 国际化配置
+ i18n: {
+ // 中文
+ zh: {
+ up: {
+ textLoading: '加载中 ...', // 加载中的提示文本
+ textNoMore: '', // 没有更多数据的提示文本
+ empty: {
+ tip: '~ 暂无相关数据 ~' // 空提示
+ }
+ }
+ },
+ // 英文
+ en: {
+ up: {
+ textLoading: 'loading ...',
+ textNoMore: '',
+ empty: {
+ tip: '~ absolutely empty ~'
+ }
+ }
+ }
+ }
+}
+
+export default GlobalOption
\ No newline at end of file
diff --git a/src/components/mescroll/mescroll-diy/beibei/mescroll-uni.vue b/src/components/mescroll/mescroll-diy/beibei/mescroll-uni.vue
new file mode 100644
index 0000000..e144de7
--- /dev/null
+++ b/src/components/mescroll/mescroll-diy/beibei/mescroll-uni.vue
@@ -0,0 +1,437 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ mescroll.optUp.textLoading }}
+
+
+ {{ mescroll.optUp.textNoMore }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/mescroll/mescroll-diy/xinlang/components/mescroll-down.css b/src/components/mescroll/mescroll-diy/xinlang/components/mescroll-down.css
new file mode 100644
index 0000000..b62ed40
--- /dev/null
+++ b/src/components/mescroll/mescroll-diy/xinlang/components/mescroll-down.css
@@ -0,0 +1,44 @@
+/*下拉刷新--上下箭头*/
+.mescroll-downwarp .downwarp-arrow {
+ display: inline-block;
+ width: 20px;
+ height: 20px;
+ margin: 10px;
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-arrow.png);
+ background-size: contain;
+ vertical-align: middle;
+ transition: all 300ms;
+}
+
+/*下拉刷新--旋转进度条*/
+.mescroll-downwarp .downwarp-progress{
+ width: 36px;
+ height: 36px;
+ border: none;
+ margin: auto;
+ background-size: contain;
+ animation: progressRotate 0.6s steps(6, start) infinite;
+}
+@keyframes progressRotate {
+ 0% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress1.png);
+ }
+ 16% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress2.png);
+ }
+ 32% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress3.png);
+ }
+ 48% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress4.png);
+ }
+ 64% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress5.png);
+ }
+ 80% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress6.png);
+ }
+ 100% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress1.png);
+ }
+}
\ No newline at end of file
diff --git a/src/components/mescroll/mescroll-diy/xinlang/components/mescroll-down.vue b/src/components/mescroll/mescroll-diy/xinlang/components/mescroll-down.vue
new file mode 100644
index 0000000..745d903
--- /dev/null
+++ b/src/components/mescroll/mescroll-diy/xinlang/components/mescroll-down.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+ {{ downText }}
+
+
+
+
+
+
+
diff --git a/src/components/mescroll/mescroll-diy/xinlang/components/mescroll-up.css b/src/components/mescroll/mescroll-diy/xinlang/components/mescroll-up.css
new file mode 100644
index 0000000..abf51f1
--- /dev/null
+++ b/src/components/mescroll/mescroll-diy/xinlang/components/mescroll-up.css
@@ -0,0 +1,32 @@
+/*上拉加载--旋转进度条*/
+.mescroll-upwarp .upwarp-progress {
+ width: 36px;
+ height: 36px;
+ border: none;
+ margin: auto;
+ background-size: contain;
+ animation: progressRotate 0.6s steps(6, start) infinite;
+}
+@keyframes progressRotate {
+ 0% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress1.png);
+ }
+ 16% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress2.png);
+ }
+ 32% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress3.png);
+ }
+ 48% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress4.png);
+ }
+ 64% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress5.png);
+ }
+ 80% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress6.png);
+ }
+ 100% {
+ background-image: url(https://www.mescroll.com/img/xinlang/mescroll-progress1.png);
+ }
+}
\ No newline at end of file
diff --git a/src/components/mescroll/mescroll-diy/xinlang/components/mescroll-up.vue b/src/components/mescroll/mescroll-diy/xinlang/components/mescroll-up.vue
new file mode 100644
index 0000000..31bd42a
--- /dev/null
+++ b/src/components/mescroll/mescroll-diy/xinlang/components/mescroll-up.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ {{ mOption.textLoading }}
+
+
+ {{ mOption.textNoMore }}
+
+
+
+
+
+
diff --git a/src/components/mescroll/mescroll-diy/xinlang/mescroll-body.vue b/src/components/mescroll/mescroll-diy/xinlang/mescroll-body.vue
new file mode 100644
index 0000000..1daa3bf
--- /dev/null
+++ b/src/components/mescroll/mescroll-diy/xinlang/mescroll-body.vue
@@ -0,0 +1,380 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ downText }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ mescroll.optUp.textLoading }}
+
+
+ {{ mescroll.optUp.textNoMore }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/mescroll/mescroll-diy/xinlang/mescroll-uni-option.js b/src/components/mescroll/mescroll-diy/xinlang/mescroll-uni-option.js
new file mode 100644
index 0000000..47e8fae
--- /dev/null
+++ b/src/components/mescroll/mescroll-diy/xinlang/mescroll-uni-option.js
@@ -0,0 +1,66 @@
+import { img } from '@/utils/common';
+
+// 全局配置
+// mescroll-body 和 mescroll-uni 通用
+const GlobalOption = {
+ down: {
+ // 其他down的配置参数也可以写,这里只展示了常用的配置:
+ offset: 80, // 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调
+ native: false // 是否使用系统自带的下拉刷新; 默认false; 仅在mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
+ },
+ up: {
+ // 其他up的配置参数也可以写,这里只展示了常用的配置:
+ offset: 150, // 距底部多远时,触发upCallback,仅mescroll-uni生效 ( mescroll-body配置的是pages.json的 onReachBottomDistance )
+ toTop: {
+ // 回到顶部按钮,需配置src才显示
+ src: "https://www.mescroll.com/img/mescroll-totop.png", // 图片路径 (建议放入static目录, 如 /static/img/mescroll-totop.png )
+ offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000px
+ right: 20, // 到右边的距离, 默认20 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx)
+ bottom: 120, // 到底部的距离, 默认120 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx)
+ width: 72 // 回到顶部图标的宽度, 默认72 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx)
+ },
+ empty: {
+ use: true, // 是否显示空布局
+ icon: img("static/resource/images/system/empty.png") // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png )
+ }
+ },
+ // 国际化配置
+ i18n: {
+ // 中文
+ zh: {
+ down: {
+ textInOffset: '下拉刷新', // 下拉的距离在offset范围内的提示文本
+ textOutOffset: '释放更新', // 下拉的距离大于offset范围的提示文本
+ textLoading: '加载中 ...', // 加载中的提示文本
+ textSuccess: '加载成功', // 加载成功的文本
+ textErr: '加载失败', // 加载失败的文本
+ },
+ up: {
+ textLoading: '加载中 ...', // 加载中的提示文本
+ textNoMore: '', // 没有更多数据的提示文本
+ empty: {
+ tip: '暂无相关数据' // 空提示
+ }
+ }
+ },
+ // 英文
+ en: {
+ down: {
+ textInOffset: 'drop down refresh',
+ textOutOffset: 'release updates',
+ textLoading: 'loading ...',
+ textSuccess: 'loaded successfully',
+ textErr: 'loading failed'
+ },
+ up: {
+ textLoading: 'loading ...',
+ textNoMore: '',
+ empty: {
+ tip: '~ absolutely empty ~'
+ }
+ }
+ }
+ }
+}
+
+export default GlobalOption
diff --git a/src/components/mescroll/mescroll-diy/xinlang/mescroll-uni.vue b/src/components/mescroll/mescroll-diy/xinlang/mescroll-uni.vue
new file mode 100644
index 0000000..65c9fbe
--- /dev/null
+++ b/src/components/mescroll/mescroll-diy/xinlang/mescroll-uni.vue
@@ -0,0 +1,462 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ downText }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ mescroll.optUp.textLoading }}
+
+
+ {{ mescroll.optUp.textNoMore }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/mescroll/mescroll-empty/mescroll-empty.vue b/src/components/mescroll/mescroll-empty/mescroll-empty.vue
new file mode 100644
index 0000000..5361aac
--- /dev/null
+++ b/src/components/mescroll/mescroll-empty/mescroll-empty.vue
@@ -0,0 +1,116 @@
+
+
+
+
+ {{ tip }}
+ {{ btnText }}
+
+
+
+
+
+
diff --git a/src/components/mescroll/mescroll-uni/components/mescroll-down.css b/src/components/mescroll/mescroll-uni/components/mescroll-down.css
new file mode 100644
index 0000000..72bf106
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/components/mescroll-down.css
@@ -0,0 +1,55 @@
+/* 下拉刷新区域 */
+.mescroll-downwarp {
+ position: absolute;
+ top: -100%;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ text-align: center;
+}
+
+/* 下拉刷新--内容区,定位于区域底部 */
+.mescroll-downwarp .downwarp-content {
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ min-height: 60rpx;
+ padding: 20rpx 0;
+ text-align: center;
+}
+
+/* 下拉刷新--提示文本 */
+.mescroll-downwarp .downwarp-tip {
+ display: inline-block;
+ font-size: 28rpx;
+ vertical-align: middle;
+ margin-left: 16rpx;
+ /* color: gray; 已在style设置color,此处删去*/
+}
+
+/* 下拉刷新--旋转进度条 */
+.mescroll-downwarp .downwarp-progress {
+ display: inline-block;
+ width: 32rpx;
+ height: 32rpx;
+ border-radius: 50%;
+ border: 2rpx solid gray;
+ border-bottom-color: transparent !important; /*已在style设置border-color,此处需加 !important*/
+ vertical-align: middle;
+}
+
+/* 旋转动画 */
+.mescroll-downwarp .mescroll-rotate {
+ animation: mescrollDownRotate 0.6s linear infinite;
+}
+
+@keyframes mescrollDownRotate {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+}
\ No newline at end of file
diff --git a/src/components/mescroll/mescroll-uni/components/mescroll-down.vue b/src/components/mescroll/mescroll-uni/components/mescroll-down.vue
new file mode 100644
index 0000000..9fd1567
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/components/mescroll-down.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+ {{downText}}
+
+
+
+
+
+
+
diff --git a/src/components/mescroll/mescroll-uni/components/mescroll-top.vue b/src/components/mescroll/mescroll-uni/components/mescroll-top.vue
new file mode 100644
index 0000000..5115fd8
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/components/mescroll-top.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/mescroll/mescroll-uni/components/mescroll-up.css b/src/components/mescroll/mescroll-uni/components/mescroll-up.css
new file mode 100644
index 0000000..cbf48cd
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/components/mescroll-up.css
@@ -0,0 +1,47 @@
+/* 上拉加载区域 */
+.mescroll-upwarp {
+ box-sizing: border-box;
+ min-height: 110rpx;
+ padding: 30rpx 0;
+ text-align: center;
+ clear: both;
+}
+
+/*提示文本 */
+.mescroll-upwarp .upwarp-tip,
+.mescroll-upwarp .upwarp-nodata {
+ display: inline-block;
+ font-size: 28rpx;
+ vertical-align: middle;
+ /* color: gray; 已在style设置color,此处删去*/
+}
+
+.mescroll-upwarp .upwarp-tip {
+ margin-left: 16rpx;
+}
+
+/*旋转进度条 */
+.mescroll-upwarp .upwarp-progress {
+ display: inline-block;
+ width: 32rpx;
+ height: 32rpx;
+ border-radius: 50%;
+ border: 2rpx solid gray;
+ border-bottom-color: transparent !important; /*已在style设置border-color,此处需加 !important*/
+ vertical-align: middle;
+}
+
+/* 旋转动画 */
+.mescroll-upwarp .mescroll-rotate {
+ animation: mescrollUpRotate 0.6s linear infinite;
+}
+
+@keyframes mescrollUpRotate {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+}
\ No newline at end of file
diff --git a/src/components/mescroll/mescroll-uni/components/mescroll-up.vue b/src/components/mescroll/mescroll-uni/components/mescroll-up.vue
new file mode 100644
index 0000000..11c2e1f
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/components/mescroll-up.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ {{ mOption.textLoading }}
+
+
+ {{ mOption.textNoMore }}
+
+
+
+
+
+
diff --git a/src/components/mescroll/mescroll-uni/mescroll-i18n.js b/src/components/mescroll/mescroll-uni/mescroll-i18n.js
new file mode 100644
index 0000000..2b6a50f
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/mescroll-i18n.js
@@ -0,0 +1,15 @@
+// 国际化工具类
+const mescrollI18n = {
+ // 默认语言
+ def: "zh",
+ // 获取当前语言类型
+ getType(){
+ return uni.getStorageSync("mescroll-i18n") || this.def
+ },
+ // 设置当前语言类型
+ setType(type){
+ uni.setStorageSync("mescroll-i18n", type)
+ }
+}
+
+export default mescrollI18n
diff --git a/src/components/mescroll/mescroll-uni/mescroll-mixins.js b/src/components/mescroll/mescroll-uni/mescroll-mixins.js
new file mode 100644
index 0000000..bf3714a
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/mescroll-mixins.js
@@ -0,0 +1,57 @@
+// mescroll-body 和 mescroll-uni 通用
+const MescrollMixin = {
+ data() {
+ return {
+ mescroll: null //mescroll实例对象
+ }
+ },
+ // 注册系统自带的下拉刷新 (配置down.native为true时生效, 还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
+ onPullDownRefresh(){
+ this.mescroll && this.mescroll.onPullDownRefresh();
+ },
+ // 注册列表滚动事件,用于判定在顶部可下拉刷新,在指定位置可显示隐藏回到顶部按钮 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效)
+ onPageScroll(e) {
+ this.mescroll && this.mescroll.onPageScroll(e);
+ },
+ // 注册滚动到底部的事件,用于上拉加载 (此方法为页面生命周期,无法在子组件中触发, 仅在mescroll-body生效)
+ onReachBottom() {
+ this.mescroll && this.mescroll.onReachBottom();
+ },
+ methods: {
+ // mescroll组件初始化的回调,可获取到mescroll对象
+ mescrollInit(mescroll) {
+ this.mescroll = mescroll;
+ this.mescrollInitByRef(); // 兼容字节跳动小程序
+ },
+ // 以ref的方式初始化mescroll对象 (兼容字节跳动小程序)
+ mescrollInitByRef() {
+ if(!this.mescroll || !this.mescroll.resetUpScroll){
+ let mescrollRef = this.$refs.mescrollRef;
+ if(mescrollRef) this.mescroll = mescrollRef.mescroll
+ }
+ },
+ // 下拉刷新的回调 (mixin默认resetUpScroll)
+ downCallback() {
+ if(this.mescroll.optUp.use){
+ this.mescroll.resetUpScroll()
+ }else{
+ setTimeout(()=>{
+ this.mescroll.endSuccess();
+ }, 500)
+ }
+ },
+ // 上拉加载的回调
+ upCallback() {
+ // mixin默认延时500自动结束加载
+ setTimeout(()=>{
+ this.mescroll.endErr();
+ }, 500)
+ }
+ },
+ mounted() {
+ this.mescrollInitByRef(); // 兼容字节跳动小程序, 避免未设置@init或@init此时未能取到ref的情况
+ }
+
+}
+
+export default MescrollMixin;
diff --git a/src/components/mescroll/mescroll-uni/mescroll-uni-option.js b/src/components/mescroll/mescroll-uni/mescroll-uni-option.js
new file mode 100644
index 0000000..47e8fae
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/mescroll-uni-option.js
@@ -0,0 +1,66 @@
+import { img } from '@/utils/common';
+
+// 全局配置
+// mescroll-body 和 mescroll-uni 通用
+const GlobalOption = {
+ down: {
+ // 其他down的配置参数也可以写,这里只展示了常用的配置:
+ offset: 80, // 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调
+ native: false // 是否使用系统自带的下拉刷新; 默认false; 仅在mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
+ },
+ up: {
+ // 其他up的配置参数也可以写,这里只展示了常用的配置:
+ offset: 150, // 距底部多远时,触发upCallback,仅mescroll-uni生效 ( mescroll-body配置的是pages.json的 onReachBottomDistance )
+ toTop: {
+ // 回到顶部按钮,需配置src才显示
+ src: "https://www.mescroll.com/img/mescroll-totop.png", // 图片路径 (建议放入static目录, 如 /static/img/mescroll-totop.png )
+ offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000px
+ right: 20, // 到右边的距离, 默认20 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx)
+ bottom: 120, // 到底部的距离, 默认120 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx)
+ width: 72 // 回到顶部图标的宽度, 默认72 (支持"20rpx", "20px", "20%"格式的值, 纯数字则默认单位rpx)
+ },
+ empty: {
+ use: true, // 是否显示空布局
+ icon: img("static/resource/images/system/empty.png") // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png )
+ }
+ },
+ // 国际化配置
+ i18n: {
+ // 中文
+ zh: {
+ down: {
+ textInOffset: '下拉刷新', // 下拉的距离在offset范围内的提示文本
+ textOutOffset: '释放更新', // 下拉的距离大于offset范围的提示文本
+ textLoading: '加载中 ...', // 加载中的提示文本
+ textSuccess: '加载成功', // 加载成功的文本
+ textErr: '加载失败', // 加载失败的文本
+ },
+ up: {
+ textLoading: '加载中 ...', // 加载中的提示文本
+ textNoMore: '', // 没有更多数据的提示文本
+ empty: {
+ tip: '暂无相关数据' // 空提示
+ }
+ }
+ },
+ // 英文
+ en: {
+ down: {
+ textInOffset: 'drop down refresh',
+ textOutOffset: 'release updates',
+ textLoading: 'loading ...',
+ textSuccess: 'loaded successfully',
+ textErr: 'loading failed'
+ },
+ up: {
+ textLoading: 'loading ...',
+ textNoMore: '',
+ empty: {
+ tip: '~ absolutely empty ~'
+ }
+ }
+ }
+ }
+}
+
+export default GlobalOption
diff --git a/src/components/mescroll/mescroll-uni/mescroll-uni.css b/src/components/mescroll/mescroll-uni/mescroll-uni.css
new file mode 100644
index 0000000..39438cd
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/mescroll-uni.css
@@ -0,0 +1,36 @@
+.mescroll-uni-warp{
+ height: 100%;
+}
+
+.mescroll-uni-content{
+ height: 100%;
+}
+
+.mescroll-uni {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ min-height: 200rpx;
+ overflow-y: auto;
+ box-sizing: border-box; /* 避免设置padding出现双滚动条的问题 */
+}
+
+/* 定位的方式固定高度 */
+.mescroll-uni-fixed{
+ z-index: 1;
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ width: auto; /* 使right生效 */
+ height: auto; /* 使bottom生效 */
+}
+
+/* 适配 iPhoneX */
+@supports (bottom: constant(safe-area-inset-bottom)) or (bottom: env(safe-area-inset-bottom)) {
+ .mescroll-safearea {
+ padding-bottom: constant(safe-area-inset-bottom);
+ padding-bottom: env(safe-area-inset-bottom);
+ }
+}
diff --git a/src/components/mescroll/mescroll-uni/mescroll-uni.js b/src/components/mescroll/mescroll-uni/mescroll-uni.js
new file mode 100644
index 0000000..2020a4f
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/mescroll-uni.js
@@ -0,0 +1,799 @@
+/* mescroll
+ * version 1.3.7
+ * 2021-04-12 wenju
+ * https://www.mescroll.com
+ */
+
+export default function MeScroll(options, isScrollBody) {
+ let me = this;
+ me.version = '1.3.7'; // mescroll版本号
+ me.options = options || {}; // 配置
+ me.isScrollBody = isScrollBody || false; // 滚动区域是否为原生页面滚动; 默认为scroll-view
+
+ me.isDownScrolling = false; // 是否在执行下拉刷新的回调
+ me.isUpScrolling = false; // 是否在执行上拉加载的回调
+ let hasDownCallback = me.options.down && me.options.down.callback; // 是否配置了down的callback
+
+ // 初始化下拉刷新
+ me.initDownScroll();
+ // 初始化上拉加载,则初始化
+ me.initUpScroll();
+
+ // 自动加载
+ setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例
+ // 自动触发下拉刷新 (只有配置了down的callback才自动触发下拉刷新)
+ if ((me.optDown.use || me.optDown.native) && me.optDown.auto && hasDownCallback) {
+ if (me.optDown.autoShowLoading) {
+ me.triggerDownScroll(); // 显示下拉进度,执行下拉回调
+ } else {
+ me.optDown.callback && me.optDown.callback(me); // 不显示下拉进度,直接执行下拉回调
+ }
+ }
+ // 自动触发上拉加载
+ if(!me.isUpAutoLoad){ // 部分小程序(头条小程序)emit是异步, 会导致isUpAutoLoad判断有误, 先延时确保先执行down的callback,再执行up的callback
+ setTimeout(function(){
+ me.optUp.use && me.optUp.auto && !me.isUpAutoLoad && me.triggerUpScroll();
+ },100)
+ }
+ }, 30); // 需让me.optDown.inited和me.optUp.inited先执行
+}
+
+/* 配置参数:下拉刷新 */
+MeScroll.prototype.extendDownScroll = function(optDown) {
+ // 下拉刷新的配置
+ MeScroll.extend(optDown, {
+ use: true, // 是否启用下拉刷新; 默认true
+ auto: true, // 是否在初始化完毕之后自动执行下拉刷新的回调; 默认true
+ native: false, // 是否使用系统自带的下拉刷新; 默认false; 仅mescroll-body生效 (值为true时,还需在pages配置enablePullDownRefresh:true;详请参考mescroll-native的案例)
+ autoShowLoading: false, // 如果设置auto=true(在初始化完毕之后自动执行下拉刷新的回调),那么是否显示下拉刷新的进度; 默认false
+ isLock: false, // 是否锁定下拉刷新,默认false;
+ offset: 80, // 在列表顶部,下拉大于80px,松手即可触发下拉刷新的回调
+ startTop: 100, // scroll-view快速滚动到顶部时,此时的scroll-top可能大于0, 此值用于控制最大的误差
+ inOffsetRate: 1, // 在列表顶部,下拉的距离小于offset时,改变下拉区域高度比例;值小于1且越接近0,高度变化越小,表现为越往下越难拉
+ outOffsetRate: 0.2, // 在列表顶部,下拉的距离大于offset时,改变下拉区域高度比例;值小于1且越接近0,高度变化越小,表现为越往下越难拉
+ bottomOffset: 20, // 当手指touchmove位置在距离body底部20px范围内的时候结束上拉刷新,避免Webview嵌套导致touchend事件不执行
+ minAngle: 45, // 向下滑动最少偏移的角度,取值区间 [0,90];默认45度,即向下滑动的角度大于45度则触发下拉;而小于45度,将不触发下拉,避免与左右滑动的轮播等组件冲突;
+ textInOffset: '下拉刷新', // 下拉的距离在offset范围内的提示文本
+ textOutOffset: '释放更新', // 下拉的距离大于offset范围的提示文本
+ textLoading: '加载中 ...', // 加载中的提示文本
+ textSuccess: '加载成功', // 加载成功的文本
+ textErr: '加载失败', // 加载失败的文本
+ beforeEndDelay: 0, // 延时结束的时长 (显示加载成功/失败的时长, android小程序设置此项结束下拉会卡顿, 配置后请注意测试)
+ bgColor: "transparent", // 背景颜色 (建议在pages.json中再设置一下backgroundColorTop)
+ textColor: "gray", // 文本颜色 (当bgColor配置了颜色,而textColor未配置时,则textColor会默认为白色)
+ inited: null, // 下拉刷新初始化完毕的回调
+ inOffset: null, // 下拉的距离进入offset范围内那一刻的回调
+ outOffset: null, // 下拉的距离大于offset那一刻的回调
+ onMoving: null, // 下拉过程中的回调,滑动过程一直在执行; rate下拉区域当前高度与指定距离的比值(inOffset: rate<1; outOffset: rate>=1); downHight当前下拉区域的高度
+ beforeLoading: null, // 准备触发下拉刷新的回调: 如果return true,将不触发showLoading和callback回调; 常用来完全自定义下拉刷新, 参考案例【淘宝 v6.8.0】
+ showLoading: null, // 显示下拉刷新进度的回调
+ afterLoading: null, // 显示下拉刷新进度的回调之后,马上要执行的代码 (如: 在wxs中使用)
+ beforeEndDownScroll: null, // 准备结束下拉的回调. 返回结束下拉的延时执行时间,默认0ms; 常用于结束下拉之前再显示另外一小段动画,才去隐藏下拉刷新的场景, 参考案例【dotJump】
+ endDownScroll: null, // 结束下拉刷新的回调
+ afterEndDownScroll: null, // 结束下拉刷新的回调,马上要执行的代码 (如: 在wxs中使用)
+ callback: function(mescroll) {
+ // 下拉刷新的回调;默认重置上拉加载列表为第一页
+ mescroll.resetUpScroll();
+ }
+ })
+}
+
+/* 配置参数:上拉加载 */
+MeScroll.prototype.extendUpScroll = function(optUp) {
+ // 上拉加载的配置
+ MeScroll.extend(optUp, {
+ use: true, // 是否启用上拉加载; 默认true
+ auto: true, // 是否在初始化完毕之后自动执行上拉加载的回调; 默认true
+ isLock: false, // 是否锁定上拉加载,默认false;
+ isBoth: true, // 上拉加载时,如果滑动到列表顶部是否可以同时触发下拉刷新;默认true,两者可同时触发;
+ callback: null, // 上拉加载的回调;function(page,mescroll){ }
+ page: {
+ num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+ size: 10, // 每页数据的数量
+ time: null // 加载第一页数据服务器返回的时间; 防止用户翻页时,后台新增了数据从而导致下一页数据重复;
+ },
+ noMoreSize: 5, // 如果列表已无数据,可设置列表的总数量要大于等于5条才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看
+ offset: 150, // 距底部多远时,触发upCallback,仅mescroll-uni生效 ( mescroll-body配置的是pages.json的 onReachBottomDistance )
+ textLoading: '加载中 ...', // 加载中的提示文本
+ textNoMore: '', // 没有更多数据的提示文本,-- END --
+ bgColor: "transparent", // 背景颜色 (建议在pages.json中再设置一下backgroundColorBottom)
+ textColor: "gray", // 文本颜色 (当bgColor配置了颜色,而textColor未配置时,则textColor会默认为白色)
+ inited: null, // 初始化完毕的回调
+ showLoading: null, // 显示加载中的回调
+ showNoMore: null, // 显示无更多数据的回调
+ hideUpScroll: null, // 隐藏上拉加载的回调
+ errDistance: 60, // endErr的时候需往上滑动一段距离,使其往下滑动时再次触发onReachBottom,仅mescroll-body生效
+ toTop: {
+ // 回到顶部按钮,需配置src才显示
+ src: null, // 图片路径,默认null (绝对路径或网络图)
+ offset: 1000, // 列表滚动多少距离才显示回到顶部按钮,默认1000
+ duration: 300, // 回到顶部的动画时长,默认300ms (当值为0或300则使用系统自带回到顶部,更流畅; 其他值则通过step模拟,部分机型可能不够流畅,所以非特殊情况不建议修改此项)
+ btnClick: null, // 点击按钮的回调
+ onShow: null, // 是否显示的回调
+ zIndex: 9990, // fixed定位z-index值
+ left: null, // 到左边的距离, 默认null. 此项有值时,right不生效. (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
+ right: 20, // 到右边的距离, 默认20 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
+ bottom: 120, // 到底部的距离, 默认120 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
+ safearea: false, // bottom的偏移量是否加上底部安全区的距离, 默认false, 需要适配iPhoneX时使用 (具体的界面如果不配置此项,则取本vue的safearea值)
+ width: 72, // 回到顶部图标的宽度, 默认72 (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
+ radius: "50%" // 圆角, 默认"50%" (支持20, "20rpx", "20px", "20%"格式的值, 其中纯数字则默认单位rpx)
+ },
+ empty: {
+ use: true, // 是否显示空布局
+ icon: null, // 图标路径
+ tip: '~ 暂无相关数据 ~', // 提示
+ btnText: '', // 按钮
+ btnClick: null, // 点击按钮的回调
+ onShow: null, // 是否显示的回调
+ fixed: false, // 是否使用fixed定位,默认false; 配置fixed为true,以下的top和zIndex才生效 (transform会使fixed失效,最终会降级为absolute)
+ top: "100rpx", // fixed定位的top值 (完整的单位值,如 "10%"; "100rpx")
+ zIndex: 99 // fixed定位z-index值
+ },
+ onScroll: false // 是否监听滚动事件
+ })
+}
+
+/* 配置参数 */
+MeScroll.extend = function(userOption, defaultOption) {
+ if (!userOption) return defaultOption;
+ for (let key in defaultOption) {
+ if (userOption[key] == null) {
+ let def = defaultOption[key];
+ if (def != null && typeof def === 'object') {
+ userOption[key] = MeScroll.extend({}, def); // 深度匹配
+ } else {
+ userOption[key] = def;
+ }
+ } else if (typeof userOption[key] === 'object') {
+ MeScroll.extend(userOption[key], defaultOption[key]); // 深度匹配
+ }
+ }
+ return userOption;
+}
+
+/* 简单判断是否配置了颜色 (非透明,非白色) */
+MeScroll.prototype.hasColor = function(color) {
+ if(!color) return false;
+ let c = color.toLowerCase();
+ return c != "#fff" && c != "#ffffff" && c != "transparent" && c != "white"
+}
+
+/* -------初始化下拉刷新------- */
+MeScroll.prototype.initDownScroll = function() {
+ let me = this;
+ // 配置参数
+ me.optDown = me.options.down || {};
+ if(!me.optDown.textColor && me.hasColor(me.optDown.bgColor)) me.optDown.textColor = "#fff"; // 当bgColor有值且textColor未设置,则textColor默认白色
+ me.extendDownScroll(me.optDown);
+
+ // 如果是mescroll-body且配置了native,则禁止自定义的下拉刷新
+ if(me.isScrollBody && me.optDown.native){
+ me.optDown.use = false
+ }else{
+ me.optDown.native = false // 仅mescroll-body支持,mescroll-uni不支持
+ }
+
+ me.downHight = 0; // 下拉区域的高度
+
+ // 在页面中加入下拉布局
+ if (me.optDown.use && me.optDown.inited) {
+ // 初始化完毕的回调
+ setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例
+ me.optDown.inited(me);
+ }, 0)
+ }
+}
+
+/* 列表touchstart事件 */
+MeScroll.prototype.touchstartEvent = function(e) {
+ if (!this.optDown.use) return;
+
+ this.startPoint = this.getPoint(e); // 记录起点
+ this.startTop = this.getScrollTop(); // 记录此时的滚动条位置
+ this.startAngle = 0; // 初始角度
+ this.lastPoint = this.startPoint; // 重置上次move的点
+ this.maxTouchmoveY = this.getBodyHeight() - this.optDown.bottomOffset; // 手指触摸的最大范围(写在touchstart避免body获取高度为0的情况)
+ this.inTouchend = false; // 标记不是touchend
+}
+
+/* 列表touchmove事件 */
+MeScroll.prototype.touchmoveEvent = function(e) {
+ if (!this.optDown.use) return;
+ let me = this;
+
+ let scrollTop = me.getScrollTop(); // 当前滚动条的距离
+ let curPoint = me.getPoint(e); // 当前点
+
+ let moveY = curPoint.y - me.startPoint.y; // 和起点比,移动的距离,大于0向下拉,小于0向上拉
+
+ // 向下拉 && 在顶部
+ // mescroll-body,直接判定在顶部即可
+ // scroll-view在滚动时不会触发touchmove,当触顶/底/左/右时,才会触发touchmove
+ // scroll-view滚动到顶部时,scrollTop不一定为0,也有可能大于0; 在iOS的APP中scrollTop可能为负数,不一定和startTop相等
+ if (moveY > 0 && (
+ (me.isScrollBody && scrollTop <= 0)
+ ||
+ (!me.isScrollBody && (scrollTop <= 0 || (scrollTop <= me.optDown.startTop && scrollTop === me.startTop)) )
+ )) {
+ // 可下拉的条件
+ if (!me.inTouchend && !me.isDownScrolling && !me.optDown.isLock && (!me.isUpScrolling || (me.isUpScrolling &&
+ me.optUp.isBoth))) {
+
+ // 下拉的初始角度是否在配置的范围内
+ if(!me.startAngle) me.startAngle = me.getAngle(me.lastPoint, curPoint); // 两点之间的角度,区间 [0,90]
+ if (me.startAngle < me.optDown.minAngle) return; // 如果小于配置的角度,则不往下执行下拉刷新
+
+ // 如果手指的位置超过配置的距离,则提前结束下拉,避免Webview嵌套导致touchend无法触发
+ if (me.maxTouchmoveY > 0 && curPoint.y >= me.maxTouchmoveY) {
+ me.inTouchend = true; // 标记执行touchend
+ me.touchendEvent(); // 提前触发touchend
+ return;
+ }
+
+ me.preventDefault(e); // 阻止默认事件
+
+ let diff = curPoint.y - me.lastPoint.y; // 和上次比,移动的距离 (大于0向下,小于0向上)
+
+ // 下拉距离 < 指定距离
+ if (me.downHight < me.optDown.offset) {
+ if (me.movetype !== 1) {
+ me.movetype = 1; // 加入标记,保证只执行一次
+ me.isDownEndSuccess = null; // 重置是否加载成功的状态 (wxs执行的是wxs.wxs)
+ me.optDown.inOffset && me.optDown.inOffset(me); // 进入指定距离范围内那一刻的回调,只执行一次
+ me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来
+ }
+ me.downHight += diff * me.optDown.inOffsetRate; // 越往下,高度变化越小
+
+ // 指定距离 <= 下拉距离
+ } else {
+ if (me.movetype !== 2) {
+ me.movetype = 2; // 加入标记,保证只执行一次
+ me.optDown.outOffset && me.optDown.outOffset(me); // 下拉超过指定距离那一刻的回调,只执行一次
+ me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来
+ }
+ if (diff > 0) { // 向下拉
+ me.downHight += diff * me.optDown.outOffsetRate; // 越往下,高度变化越小
+ } else { // 向上收
+ me.downHight += diff; // 向上收回高度,则向上滑多少收多少高度
+ }
+ }
+
+ me.downHight = Math.round(me.downHight) // 取整
+ let rate = me.downHight / me.optDown.offset; // 下拉区域当前高度与指定距离的比值
+ me.optDown.onMoving && me.optDown.onMoving(me, rate, me.downHight); // 下拉过程中的回调,一直在执行
+ }
+ }
+
+ me.lastPoint = curPoint; // 记录本次移动的点
+}
+
+/* 列表touchend事件 */
+MeScroll.prototype.touchendEvent = function(e) {
+ if (!this.optDown.use) return;
+ // 如果下拉区域高度已改变,则需重置回来
+ if (this.isMoveDown) {
+ if (this.downHight >= this.optDown.offset) {
+ // 符合触发刷新的条件
+ this.triggerDownScroll();
+ } else {
+ // 不符合的话 则重置
+ this.downHight = 0;
+ this.endDownScrollCall(this);
+ }
+ this.movetype = 0;
+ this.isMoveDown = false;
+ } else if (!this.isScrollBody && this.getScrollTop() === this.startTop) { // scroll-view到顶/左/右/底的滑动事件
+ let isScrollUp = this.getPoint(e).y - this.startPoint.y < 0; // 和起点比,移动的距离,大于0向下拉,小于0向上拉
+ // 上滑
+ if (isScrollUp) {
+ // 需检查滑动的角度
+ let angle = this.getAngle(this.getPoint(e), this.startPoint); // 两点之间的角度,区间 [0,90]
+ if (angle > 80) {
+ // 检查并触发上拉
+ this.triggerUpScroll(true);
+ }
+ }
+ }
+}
+
+/* 根据点击滑动事件获取第一个手指的坐标 */
+MeScroll.prototype.getPoint = function(e) {
+ if (!e) {
+ return {
+ x: 0,
+ y: 0
+ }
+ }
+ if (e.touches && e.touches[0]) {
+ return {
+ x: e.touches[0].pageX,
+ y: e.touches[0].pageY
+ }
+ } else if (e.changedTouches && e.changedTouches[0]) {
+ return {
+ x: e.changedTouches[0].pageX,
+ y: e.changedTouches[0].pageY
+ }
+ } else {
+ return {
+ x: e.clientX,
+ y: e.clientY
+ }
+ }
+}
+
+/* 计算两点之间的角度: 区间 [0,90]*/
+MeScroll.prototype.getAngle = function(p1, p2) {
+ let x = Math.abs(p1.x - p2.x);
+ let y = Math.abs(p1.y - p2.y);
+ let z = Math.sqrt(x * x + y * y);
+ let angle = 0;
+ if (z !== 0) {
+ angle = Math.asin(y / z) / Math.PI * 180;
+ }
+ return angle
+}
+
+/* 触发下拉刷新 */
+MeScroll.prototype.triggerDownScroll = function() {
+ if (this.optDown.beforeLoading && this.optDown.beforeLoading(this)) {
+ //return true则处于完全自定义状态
+ } else {
+ this.showDownScroll(); // 下拉刷新中...
+ !this.optDown.native && this.optDown.callback && this.optDown.callback(this); // 执行回调,联网加载数据
+ }
+}
+
+/* 显示下拉进度布局 */
+MeScroll.prototype.showDownScroll = function() {
+ this.isDownScrolling = true; // 标记下拉中
+ if (this.optDown.native) {
+ uni.startPullDownRefresh(); // 系统自带的下拉刷新
+ this.showDownLoadingCall(0); // 仍触发showLoading,因为上拉加载用到
+ } else{
+ this.downHight = this.optDown.offset; // 更新下拉区域高度
+ this.showDownLoadingCall(this.downHight); // 下拉刷新中...
+ }
+}
+
+MeScroll.prototype.showDownLoadingCall = function(downHight) {
+ this.optDown.showLoading && this.optDown.showLoading(this, downHight); // 下拉刷新中...
+ this.optDown.afterLoading && this.optDown.afterLoading(this, downHight); // 下拉刷新中...触发之后马上要执行的代码
+}
+
+/* 显示系统自带的下拉刷新时需要处理的业务 */
+MeScroll.prototype.onPullDownRefresh = function() {
+ this.isDownScrolling = true; // 标记下拉中
+ this.showDownLoadingCall(0); // 仍触发showLoading,因为上拉加载用到
+ this.optDown.callback && this.optDown.callback(this); // 执行回调,联网加载数据
+}
+
+/* 结束下拉刷新 */
+MeScroll.prototype.endDownScroll = function() {
+ if (this.optDown.native) { // 结束原生下拉刷新
+ this.isDownScrolling = false;
+ this.endDownScrollCall(this);
+ uni.stopPullDownRefresh();
+ return
+ }
+ let me = this;
+ // 结束下拉刷新的方法
+ let endScroll = function() {
+ me.downHight = 0;
+ me.isDownScrolling = false;
+ me.endDownScrollCall(me);
+ if(!me.isScrollBody){
+ me.setScrollHeight(0) // scroll-view重置滚动区域,使数据不满屏时仍可检查触发翻页
+ me.scrollTo(0,0) // scroll-view需重置滚动条到顶部,避免startTop大于0时,对下拉刷新的影响
+ }
+ }
+ // 结束下拉刷新时的回调
+ let delay = 0;
+ if (me.optDown.beforeEndDownScroll) {
+ delay = me.optDown.beforeEndDownScroll(me); // 结束下拉刷新的延时,单位ms
+ if(me.isDownEndSuccess == null) delay = 0; // 没有执行加载中,则不延时
+ }
+ if (typeof delay === 'number' && delay > 0) {
+ setTimeout(endScroll, delay);
+ } else {
+ endScroll();
+ }
+}
+
+MeScroll.prototype.endDownScrollCall = function() {
+ this.optDown.endDownScroll && this.optDown.endDownScroll(this);
+ this.optDown.afterEndDownScroll && this.optDown.afterEndDownScroll(this);
+}
+
+/* 锁定下拉刷新:isLock=ture,null锁定;isLock=false解锁 */
+MeScroll.prototype.lockDownScroll = function(isLock) {
+ if (isLock == null) isLock = true;
+ this.optDown.isLock = isLock;
+}
+
+/* 锁定上拉加载:isLock=ture,null锁定;isLock=false解锁 */
+MeScroll.prototype.lockUpScroll = function(isLock) {
+ if (isLock == null) isLock = true;
+ this.optUp.isLock = isLock;
+}
+
+/* -------初始化上拉加载------- */
+MeScroll.prototype.initUpScroll = function() {
+ let me = this;
+ // 配置参数
+ me.optUp = me.options.up || {use: false}
+ if(!me.optUp.textColor && me.hasColor(me.optUp.bgColor)) me.optUp.textColor = "#fff"; // 当bgColor有值且textColor未设置,则textColor默认白色
+ me.extendUpScroll(me.optUp);
+
+ if (me.optUp.use === false) return; // 配置不使用上拉加载时,则不初始化上拉布局
+ me.optUp.hasNext = true; // 如果使用上拉,则默认有下一页
+ me.startNum = me.optUp.page.num + 1; // 记录page开始的页码
+
+ // 初始化完毕的回调
+ if (me.optUp.inited) {
+ setTimeout(function() { // 待主线程执行完毕再执行,避免new MeScroll未初始化,在回调获取不到mescroll的实例
+ me.optUp.inited(me);
+ }, 0)
+ }
+}
+
+/*滚动到底部的事件 (仅mescroll-body生效)*/
+MeScroll.prototype.onReachBottom = function() {
+ if (this.isScrollBody && !this.isUpScrolling) { // 只能支持下拉刷新的时候同时可以触发上拉加载,否则滚动到底部就需要上滑一点才能触发onReachBottom
+ if (!this.optUp.isLock && this.optUp.hasNext) {
+ this.triggerUpScroll();
+ }
+ }
+}
+
+/*列表滚动事件 (仅mescroll-body生效)*/
+MeScroll.prototype.onPageScroll = function(e) {
+ if (!this.isScrollBody) return;
+
+ // 更新滚动条的位置 (主要用于判断下拉刷新时,滚动条是否在顶部)
+ this.setScrollTop(e.scrollTop);
+
+ // 顶部按钮的显示隐藏
+ if (e.scrollTop >= this.optUp.toTop.offset) {
+ this.showTopBtn();
+ } else {
+ this.hideTopBtn();
+ }
+}
+
+/*列表滚动事件*/
+MeScroll.prototype.scroll = function(e, onScroll) {
+ // 更新滚动条的位置
+ this.setScrollTop(e.scrollTop);
+ // 更新滚动内容高度
+ this.setScrollHeight(e.scrollHeight);
+
+ // 向上滑还是向下滑动
+ if (this.preScrollY == null) this.preScrollY = 0;
+ this.isScrollUp = e.scrollTop - this.preScrollY > 0;
+ this.preScrollY = e.scrollTop;
+
+ // 上滑 && 检查并触发上拉
+ this.isScrollUp && this.triggerUpScroll(true);
+
+ // 顶部按钮的显示隐藏
+ if (e.scrollTop >= this.optUp.toTop.offset) {
+ this.showTopBtn();
+ } else {
+ this.hideTopBtn();
+ }
+
+ // 滑动监听
+ this.optUp.onScroll && onScroll && onScroll()
+}
+
+/* 触发上拉加载 */
+MeScroll.prototype.triggerUpScroll = function(isCheck) {
+ if (!this.isUpScrolling && this.optUp.use && this.optUp.callback) {
+ // 是否校验在底部; 默认不校验
+ if (isCheck === true) {
+ let canUp = false;
+ // 还有下一页 && 没有锁定 && 不在下拉中
+ if (this.optUp.hasNext && !this.optUp.isLock && !this.isDownScrolling) {
+ if (this.getScrollBottom() <= this.optUp.offset) { // 到底部
+ canUp = true; // 标记可上拉
+ }
+ }
+ if (canUp === false) return;
+ }
+ this.showUpScroll(); // 上拉加载中...
+ this.optUp.page.num++; // 预先加一页,如果失败则减回
+ this.isUpAutoLoad = true; // 标记上拉已经自动执行过,避免初始化时多次触发上拉回调
+ this.num = this.optUp.page.num; // 把最新的页数赋值在mescroll上,避免对page的影响
+ this.size = this.optUp.page.size; // 把最新的页码赋值在mescroll上,避免对page的影响
+ this.time = this.optUp.page.time; // 把最新的页码赋值在mescroll上,避免对page的影响
+ this.optUp.callback(this); // 执行回调,联网加载数据
+ }
+}
+
+/* 显示上拉加载中 */
+MeScroll.prototype.showUpScroll = function() {
+ this.isUpScrolling = true; // 标记上拉加载中
+ this.optUp.showLoading && this.optUp.showLoading(this); // 回调
+}
+
+/* 显示上拉无更多数据 */
+MeScroll.prototype.showNoMore = function() {
+ this.optUp.hasNext = false; // 标记无更多数据
+ this.optUp.showNoMore && this.optUp.showNoMore(this); // 回调
+}
+
+/* 隐藏上拉区域**/
+MeScroll.prototype.hideUpScroll = function() {
+ this.optUp.hideUpScroll && this.optUp.hideUpScroll(this); // 回调
+}
+
+/* 结束上拉加载 */
+MeScroll.prototype.endUpScroll = function(isShowNoMore) {
+ if (isShowNoMore != null) { // isShowNoMore=null,不处理下拉状态,下拉刷新的时候调用
+ if (isShowNoMore) {
+ this.showNoMore(); // isShowNoMore=true,显示无更多数据
+ } else {
+ this.hideUpScroll(); // isShowNoMore=false,隐藏上拉加载
+ }
+ }
+ this.isUpScrolling = false; // 标记结束上拉加载
+}
+
+/* 重置上拉加载列表为第一页
+ *isShowLoading 是否显示进度布局;
+ * 1.默认null,不传参,则显示上拉加载的进度布局
+ * 2.传参true, 则显示下拉刷新的进度布局
+ * 3.传参false,则不显示上拉和下拉的进度 (常用于静默更新列表数据)
+ */
+MeScroll.prototype.resetUpScroll = function(isShowLoading) {
+ if (this.optUp && this.optUp.use) {
+ let page = this.optUp.page;
+ this.prePageNum = page.num; // 缓存重置前的页码,加载失败可退回
+ this.prePageTime = page.time; // 缓存重置前的时间,加载失败可退回
+ page.num = this.startNum; // 重置为第一页
+ page.time = null; // 重置时间为空
+ if (!this.isDownScrolling && isShowLoading !== false) { // 如果不是下拉刷新触发的resetUpScroll并且不配置列表静默更新,则显示进度;
+ if (isShowLoading == null) {
+ this.removeEmpty(); // 移除空布局
+ this.showUpScroll(); // 不传参,默认显示上拉加载的进度布局
+ } else {
+ this.showDownScroll(); // 传true,显示下拉刷新的进度布局,不清空列表
+ }
+ }
+ this.isUpAutoLoad = true; // 标记上拉已经自动执行过,避免初始化时多次触发上拉回调
+ this.num = page.num; // 把最新的页数赋值在mescroll上,避免对page的影响
+ this.size = page.size; // 把最新的页码赋值在mescroll上,避免对page的影响
+ this.time = page.time; // 把最新的页码赋值在mescroll上,避免对page的影响
+ this.optUp.callback && this.optUp.callback(this); // 执行上拉回调
+ }
+}
+
+/* 设置page.num的值 */
+MeScroll.prototype.setPageNum = function(num) {
+ this.optUp.page.num = num - 1;
+}
+
+/* 设置page.size的值 */
+MeScroll.prototype.setPageSize = function(size) {
+ this.optUp.page.size = size;
+}
+
+/* 联网回调成功,结束下拉刷新和上拉加载
+ * dataSize: 当前页的数据量(必传)
+ * totalPage: 总页数(必传)
+ * systime: 服务器时间 (可空)
+ */
+MeScroll.prototype.endByPage = function(dataSize, totalPage, systime) {
+ let hasNext;
+ if (this.optUp.use && totalPage != null) hasNext = this.optUp.page.num < totalPage; // 是否还有下一页
+ this.endSuccess(dataSize, hasNext, systime);
+}
+
+/* 联网回调成功,结束下拉刷新和上拉加载
+ * dataSize: 当前页的数据量(必传)
+ * totalSize: 列表所有数据总数量(必传)
+ * systime: 服务器时间 (可空)
+ */
+MeScroll.prototype.endBySize = function(dataSize, totalSize, systime) {
+ let hasNext;
+ if (this.optUp.use && totalSize != null) {
+ let loadSize = (this.optUp.page.num - 1) * this.optUp.page.size + dataSize; // 已加载的数据总数
+ hasNext = loadSize < totalSize; // 是否还有下一页
+ }
+ this.endSuccess(dataSize, hasNext, systime);
+}
+
+/* 联网回调成功,结束下拉刷新和上拉加载
+ * dataSize: 当前页的数据个数(不是所有页的数据总和),用于上拉加载判断是否还有下一页.如果不传,则会判断还有下一页
+ * hasNext: 是否还有下一页,布尔类型;用来解决这个小问题:比如列表共有20条数据,每页加载10条,共2页.如果只根据dataSize判断,则需翻到第三页才会知道无更多数据,如果传了hasNext,则翻到第二页即可显示无更多数据.
+ * systime: 服务器时间(可空);用来解决这个小问题:当准备翻下一页时,数据库新增了几条记录,此时翻下一页,前面的几条数据会和上一页的重复;这里传入了systime,那么upCallback的page.time就会有值,把page.time传给服务器,让后台过滤新加入的那几条记录
+ */
+MeScroll.prototype.endSuccess = function(dataSize, hasNext, systime) {
+ let me = this;
+ // 结束下拉刷新
+ if (me.isDownScrolling) {
+ me.isDownEndSuccess = true
+ me.endDownScroll();
+ }
+
+ // 结束上拉加载
+ if (me.optUp.use) {
+ let isShowNoMore; // 是否已无更多数据
+ if (dataSize != null) {
+ let pageNum = me.optUp.page.num; // 当前页码
+ let pageSize = me.optUp.page.size; // 每页长度
+ // 如果是第一页
+ if (pageNum === 1) {
+ if (systime) me.optUp.page.time = systime; // 设置加载列表数据第一页的时间
+ }
+ if (dataSize < pageSize || hasNext === false) {
+ // 返回的数据不满一页时,则说明已无更多数据
+ me.optUp.hasNext = false;
+ if (dataSize === 0 && pageNum === 1) {
+ // 如果第一页无任何数据且配置了空布局
+ isShowNoMore = false;
+ me.showEmpty();
+ } else {
+ // 总列表数少于配置的数量,则不显示无更多数据
+ let allDataSize = (pageNum - 1) * pageSize + dataSize;
+ if (allDataSize < me.optUp.noMoreSize) {
+ isShowNoMore = false;
+ } else {
+ isShowNoMore = true;
+ }
+ me.removeEmpty(); // 移除空布局
+ }
+ } else {
+ // 还有下一页
+ isShowNoMore = false;
+ me.optUp.hasNext = true;
+ me.removeEmpty(); // 移除空布局
+ }
+ }
+
+ // 隐藏上拉
+ me.endUpScroll(isShowNoMore);
+ }
+}
+
+/* 回调失败,结束下拉刷新和上拉加载 */
+MeScroll.prototype.endErr = function(errDistance) {
+ // 结束下拉,回调失败重置回原来的页码和时间
+ if (this.isDownScrolling) {
+ this.isDownEndSuccess = false
+ let page = this.optUp.page;
+ if (page && this.prePageNum) {
+ page.num = this.prePageNum;
+ page.time = this.prePageTime;
+ }
+ this.endDownScroll();
+ }
+ // 结束上拉,回调失败重置回原来的页码
+ if (this.isUpScrolling) {
+ this.optUp.page.num--;
+ this.endUpScroll(false);
+ // 如果是mescroll-body,则需往回滚一定距离
+ if(this.isScrollBody && errDistance !== 0){ // 不处理0
+ if(!errDistance) errDistance = this.optUp.errDistance; // 不传,则取默认
+ this.scrollTo(this.getScrollTop() - errDistance, 0) // 往上回滚的距离
+ }
+ }
+}
+
+/* 显示空布局 */
+MeScroll.prototype.showEmpty = function() {
+ this.optUp.empty.use && this.optUp.empty.onShow && this.optUp.empty.onShow(true)
+}
+
+/* 移除空布局 */
+MeScroll.prototype.removeEmpty = function() {
+ this.optUp.empty.use && this.optUp.empty.onShow && this.optUp.empty.onShow(false)
+}
+
+/* 显示回到顶部的按钮 */
+MeScroll.prototype.showTopBtn = function() {
+ if (!this.topBtnShow) {
+ this.topBtnShow = true;
+ this.optUp.toTop.onShow && this.optUp.toTop.onShow(true);
+ }
+}
+
+/* 隐藏回到顶部的按钮 */
+MeScroll.prototype.hideTopBtn = function() {
+ if (this.topBtnShow) {
+ this.topBtnShow = false;
+ this.optUp.toTop.onShow && this.optUp.toTop.onShow(false);
+ }
+}
+
+/* 获取滚动条的位置 */
+MeScroll.prototype.getScrollTop = function() {
+ return this.scrollTop || 0
+}
+
+/* 记录滚动条的位置 */
+MeScroll.prototype.setScrollTop = function(y) {
+ this.scrollTop = y;
+}
+
+/* 滚动到指定位置 */
+MeScroll.prototype.scrollTo = function(y, t) {
+ this.myScrollTo && this.myScrollTo(y, t) // scrollview需自定义回到顶部方法
+}
+
+/* 自定义scrollTo */
+MeScroll.prototype.resetScrollTo = function(myScrollTo) {
+ this.myScrollTo = myScrollTo
+}
+
+/* 滚动条到底部的距离 */
+MeScroll.prototype.getScrollBottom = function() {
+ return this.getScrollHeight() - this.getClientHeight() - this.getScrollTop()
+}
+
+/* 计步器
+ star: 开始值
+ end: 结束值
+ callback(step,timer): 回调step值,计步器timer,可自行通过window.clearInterval(timer)结束计步器;
+ t: 计步时长,传0则直接回调end值;不传则默认300ms
+ rate: 周期;不传则默认30ms计步一次
+ * */
+MeScroll.prototype.getStep = function(star, end, callback, t, rate) {
+ let diff = end - star; // 差值
+ if (t === 0 || diff === 0) {
+ callback && callback(end);
+ return;
+ }
+ t = t || 300; // 时长 300ms
+ rate = rate || 30; // 周期 30ms
+ let count = t / rate; // 次数
+ let step = diff / count; // 步长
+ let i = 0; // 计数
+ let timer = setInterval(function() {
+ if (i < count - 1) {
+ star += step;
+ callback && callback(star, timer);
+ i++;
+ } else {
+ callback && callback(end, timer); // 最后一次直接设置end,避免计算误差
+ clearInterval(timer);
+ }
+ }, rate);
+}
+
+/* 滚动容器的高度 */
+MeScroll.prototype.getClientHeight = function(isReal) {
+ let h = this.clientHeight || 0
+ if (h === 0 && isReal !== true) { // 未获取到容器的高度,可临时取body的高度 (可能会有误差)
+ h = this.getBodyHeight()
+ }
+ return h
+}
+MeScroll.prototype.setClientHeight = function(h) {
+ this.clientHeight = h;
+}
+
+/* 滚动内容的高度 */
+MeScroll.prototype.getScrollHeight = function() {
+ return this.scrollHeight || 0;
+}
+MeScroll.prototype.setScrollHeight = function(h) {
+ this.scrollHeight = h;
+}
+
+/* body的高度 */
+MeScroll.prototype.getBodyHeight = function() {
+ return this.bodyHeight || 0;
+}
+MeScroll.prototype.setBodyHeight = function(h) {
+ this.bodyHeight = h;
+}
+
+/* 阻止浏览器默认滚动事件 */
+MeScroll.prototype.preventDefault = function(e) {
+ // 小程序不支持e.preventDefault, 已在wxs中禁止
+ // app的bounce只能通过配置pages.json的style.app-plus.bounce为"none"来禁止, 或使用renderjs禁止
+ // cancelable:是否可以被禁用; defaultPrevented:是否已经被禁用
+ if (e && e.cancelable && !e.defaultPrevented) e.preventDefault()
+}
\ No newline at end of file
diff --git a/src/components/mescroll/mescroll-uni/mescroll-uni.vue b/src/components/mescroll/mescroll-uni/mescroll-uni.vue
new file mode 100644
index 0000000..f72f099
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/mescroll-uni.vue
@@ -0,0 +1,477 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{downText}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ mescroll.optUp.textLoading }}
+
+
+ {{ mescroll.optUp.textNoMore }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/mescroll/mescroll-uni/mixins/mescroll-comp.js b/src/components/mescroll/mescroll-uni/mixins/mescroll-comp.js
new file mode 100644
index 0000000..abe7cd7
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/mixins/mescroll-comp.js
@@ -0,0 +1,47 @@
+/**
+ * mescroll-body写在子组件时,需通过mescroll的mixins补充子组件缺少的生命周期
+ */
+const MescrollCompMixin = {
+ // 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件 (一级)
+ onPageScroll(e) {
+ this.handlePageScroll(e)
+ },
+ onReachBottom() {
+ this.handleReachBottom()
+ },
+ // 当down的native: true时, 还需传递此方法进到子组件
+ onPullDownRefresh(){
+ this.handlePullDownRefresh()
+ },
+ data() {
+ return {
+ mescroll: { // mescroll-body写在子子子...组件的情况 (多级)
+ onPageScroll: e=>{
+ this.handlePageScroll(e)
+ },
+ onReachBottom: ()=>{
+ this.handleReachBottom()
+ },
+ onPullDownRefresh: ()=>{
+ this.handlePullDownRefresh()
+ }
+ }
+ }
+ },
+ methods:{
+ handlePageScroll(e){
+ let item = this.$refs["mescrollItem"];
+ if(item && item.mescroll) item.mescroll.onPageScroll(e);
+ },
+ handleReachBottom(){
+ let item = this.$refs["mescrollItem"];
+ if(item && item.mescroll) item.mescroll.onReachBottom();
+ },
+ handlePullDownRefresh(){
+ let item = this.$refs["mescrollItem"];
+ if(item && item.mescroll) item.mescroll.onPullDownRefresh();
+ }
+ }
+}
+
+export default MescrollCompMixin;
diff --git a/src/components/mescroll/mescroll-uni/mixins/mescroll-more-item.js b/src/components/mescroll/mescroll-uni/mixins/mescroll-more-item.js
new file mode 100644
index 0000000..102dd39
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/mixins/mescroll-more-item.js
@@ -0,0 +1,66 @@
+/**
+ * mescroll-more-item的mixins, 仅在多个 mescroll-body 写在子组件时使用 (参考 mescroll-more 案例)
+ */
+const MescrollMoreItemMixin = {
+ // 支付宝小程序不支持props的mixin,需写在具体的页面中
+ // #ifndef MP-ALIPAY || MP-DINGTALK
+ props:{
+ i: Number, // 每个tab页的专属下标
+ index: { // 当前tab的下标
+ type: Number,
+ default(){
+ return 0
+ }
+ }
+ },
+ // #endif
+ data() {
+ return {
+ downOption:{
+ auto:false // 不自动加载
+ },
+ upOption:{
+ auto:false // 不自动加载
+ },
+ isInit: false // 当前tab是否已初始化
+ }
+ },
+ watch:{
+ // 监听下标的变化
+ index(val){
+ if (this.i === val && !this.isInit) this.mescrollTrigger()
+ }
+ },
+ methods: {
+ // 以ref的方式初始化mescroll对象 (兼容字节跳动小程序)
+ mescrollInitByRef() {
+ if(!this.mescroll || !this.mescroll.resetUpScroll){
+ // 字节跳动小程序编辑器不支持一个页面存在相同的ref, 多mescroll的ref需动态生成, 格式为'mescrollRef下标'
+ let mescrollRef = this.$refs.mescrollRef || this.$refs['mescrollRef'+this.i];
+ if(mescrollRef) this.mescroll = mescrollRef.mescroll
+ }
+ },
+ // mescroll组件初始化的回调,可获取到mescroll对象 (覆盖mescroll-mixins.js的mescrollInit, 为了标记isInit)
+ mescrollInit(mescroll) {
+ this.mescroll = mescroll;
+ this.mescrollInitByRef && this.mescrollInitByRef(); // 兼容字节跳动小程序
+ // 自动加载当前tab的数据
+ if(this.i === this.index){
+ this.mescrollTrigger()
+ }
+ },
+ // 主动触发加载
+ mescrollTrigger(){
+ this.isInit = true; // 标记为true
+ if (this.mescroll) {
+ if (this.mescroll.optDown.use) {
+ this.mescroll.triggerDownScroll();
+ } else{
+ this.mescroll.triggerUpScroll();
+ }
+ }
+ }
+ }
+}
+
+export default MescrollMoreItemMixin;
diff --git a/src/components/mescroll/mescroll-uni/mixins/mescroll-more.js b/src/components/mescroll/mescroll-uni/mixins/mescroll-more.js
new file mode 100644
index 0000000..76c8e6c
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/mixins/mescroll-more.js
@@ -0,0 +1,74 @@
+/**
+ * mescroll-body写在子组件时, 需通过mescroll的mixins补充子组件缺少的生命周期
+ */
+const MescrollMoreMixin = {
+ data() {
+ return {
+ tabIndex: 0, // 当前tab下标
+ mescroll: { // mescroll-body写在子子子...组件的情况 (多级)
+ onPageScroll: e=>{
+ this.handlePageScroll(e)
+ },
+ onReachBottom: ()=>{
+ this.handleReachBottom()
+ },
+ onPullDownRefresh: ()=>{
+ this.handlePullDownRefresh()
+ }
+ }
+ }
+ },
+ // 因为子组件无onPageScroll和onReachBottom的页面生命周期,需在页面传递进到子组件
+ onPageScroll(e) {
+ this.handlePageScroll(e)
+ },
+ onReachBottom() {
+ this.handleReachBottom()
+ },
+ // 当down的native: true时, 还需传递此方法进到子组件
+ onPullDownRefresh(){
+ this.handlePullDownRefresh()
+ },
+ methods:{
+ handlePageScroll(e){
+ let mescroll = this.getMescroll(this.tabIndex);
+ mescroll && mescroll.onPageScroll(e);
+ },
+ handleReachBottom(){
+ let mescroll = this.getMescroll(this.tabIndex);
+ mescroll && mescroll.onReachBottom();
+ },
+ handlePullDownRefresh(){
+ let mescroll = this.getMescroll(this.tabIndex);
+ mescroll && mescroll.onPullDownRefresh();
+ },
+ // 根据下标获取对应子组件的mescroll
+ getMescroll(i){
+ if(!this.mescrollItems) this.mescrollItems = [];
+ if(!this.mescrollItems[i]) {
+ // v-for中的refs
+ let vForItem = this.$refs["mescrollItem"];
+ if(vForItem){
+ this.mescrollItems[i] = vForItem[i]
+ }else{
+ // 普通的refs,不可重复
+ this.mescrollItems[i] = this.$refs["mescrollItem"+i];
+ }
+ }
+ let item = this.mescrollItems[i]
+ return item ? item.mescroll : null
+ },
+ // 切换tab,恢复滚动条位置
+ tabChange(i){
+ let mescroll = this.getMescroll(i);
+ if(mescroll){
+ // 延时(比$nextTick靠谱一些),确保元素已渲染
+ setTimeout(()=>{
+ mescroll.scrollTo(mescroll.getScrollTop(),0)
+ },30)
+ }
+ }
+ }
+}
+
+export default MescrollMoreMixin;
diff --git a/src/components/mescroll/mescroll-uni/wxs/mixins.js b/src/components/mescroll/mescroll-uni/wxs/mixins.js
new file mode 100644
index 0000000..34ffa3c
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/wxs/mixins.js
@@ -0,0 +1,109 @@
+// 定义在wxs (含renderjs) 逻辑层的数据和方法, 与视图层相互通信
+const WxsMixin = {
+ data() {
+ return {
+ // 传入wxs视图层的数据 (响应式)
+ wxsProp: {
+ optDown:{}, // 下拉刷新的配置
+ scrollTop:0, // 滚动条的距离
+ bodyHeight:0, // body的高度
+ isDownScrolling:false, // 是否正在下拉刷新中
+ isUpScrolling:false, // 是否正在上拉加载中
+ isScrollBody:true, // 是否为mescroll-body滚动
+ isUpBoth:true, // 上拉加载时,是否同时可以下拉刷新
+ t: 0 // 数据更新的标记 (只有数据更新了,才会触发wxs的Observer)
+ },
+
+ // 标记调用wxs视图层的方法
+ callProp: {
+ callType: '', // 方法名
+ t: 0 // 数据更新的标记 (只有数据更新了,才会触发wxs的Observer)
+ },
+
+ // 不用wxs的平台使用此处的wxsBiz对象,抹平wxs的写法 (微信小程序和APP使用的wxsBiz对象是./wxs/wxs.wxs)
+ // #ifndef MP-WEIXIN || MP-QQ || APP-PLUS || H5
+ wxsBiz: {
+ //注册列表touchstart事件,用于下拉刷新
+ touchstartEvent: e=> {
+ this.mescroll.touchstartEvent(e);
+ },
+ //注册列表touchmove事件,用于下拉刷新
+ touchmoveEvent: e=> {
+ this.mescroll.touchmoveEvent(e);
+ },
+ //注册列表touchend事件,用于下拉刷新
+ touchendEvent: e=> {
+ this.mescroll.touchendEvent(e);
+ },
+ propObserver(){}, // 抹平wxs的写法
+ callObserver(){} // 抹平wxs的写法
+ },
+ // #endif
+
+ // 不用renderjs的平台使用此处的renderBiz对象,抹平renderjs的写法 (app 和 h5 使用的renderBiz对象是./wxs/renderjs.js)
+ // #ifndef APP-PLUS || H5
+ renderBiz: {
+ propObserver(){} // 抹平renderjs的写法
+ }
+ // #endif
+ }
+ },
+ methods: {
+ // wxs视图层调用逻辑层的回调
+ wxsCall(msg){
+ if(msg.type === 'setWxsProp'){
+ // 更新wxsProp数据 (值改变才触发更新)
+ this.wxsProp = {
+ optDown: this.mescroll.optDown,
+ scrollTop: this.mescroll.getScrollTop(),
+ bodyHeight: this.mescroll.getBodyHeight(),
+ isDownScrolling: this.mescroll.isDownScrolling,
+ isUpScrolling: this.mescroll.isUpScrolling,
+ isUpBoth: this.mescroll.optUp.isBoth,
+ isScrollBody:this.mescroll.isScrollBody,
+ t: Date.now()
+ }
+ }else if(msg.type === 'setLoadType'){
+ // 设置inOffset,outOffset的状态
+ this.downLoadType = msg.downLoadType
+ // 状态挂载到mescroll对象, 以便在其他组件中使用, 比如中
+ this.$set(this.mescroll, 'downLoadType', this.downLoadType)
+ // 重置是否加载成功的状态
+ this.$set(this.mescroll, 'isDownEndSuccess', null)
+ }else if(msg.type === 'triggerDownScroll'){
+ // 主动触发下拉刷新
+ this.mescroll.triggerDownScroll();
+ }else if(msg.type === 'endDownScroll'){
+ // 结束下拉刷新
+ this.mescroll.endDownScroll();
+ }else if(msg.type === 'triggerUpScroll'){
+ // 主动触发上拉加载
+ this.mescroll.triggerUpScroll(true);
+ }
+ }
+ },
+ mounted() {
+ // #ifdef MP-WEIXIN || MP-QQ || APP-PLUS || H5
+ // 配置主动触发wxs显示加载进度的回调
+ this.mescroll.optDown.afterLoading = ()=>{
+ this.callProp = {callType: "showLoading", t: Date.now()} // 触发wxs的方法 (值改变才触发更新)
+ }
+ // 配置主动触发wxs隐藏加载进度的回调
+ this.mescroll.optDown.afterEndDownScroll = ()=>{
+ this.callProp = {callType: "endDownScroll", t: Date.now()} // 触发wxs的方法 (值改变才触发更新)
+ let delay = 300 + (this.mescroll.optDown.beforeEndDelay || 0)
+ setTimeout(()=>{
+ if(this.downLoadType === 4 || this.downLoadType === 0){
+ this.callProp = {callType: "clearTransform", t: Date.now()} // 触发wxs的方法 (值改变才触发更新)
+ }
+ // 状态挂载到mescroll对象, 以便在其他组件中使用, 比如中
+ this.$set(this.mescroll, 'downLoadType', this.downLoadType)
+ }, delay)
+ }
+ // 初始化wxs的数据
+ this.wxsCall({type: 'setWxsProp'})
+ // #endif
+ }
+}
+
+export default WxsMixin;
diff --git a/src/components/mescroll/mescroll-uni/wxs/renderjs.js b/src/components/mescroll/mescroll-uni/wxs/renderjs.js
new file mode 100644
index 0000000..207f388
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/wxs/renderjs.js
@@ -0,0 +1,92 @@
+// 使用renderjs直接操作window对象,实现动态控制app和h5的bounce
+// bounce: iOS橡皮筋,Android半月弧,h5浏览器下拉背景等效果 (下拉刷新时禁止)
+// https://uniapp.dcloud.io/frame?id=renderjs
+
+// 与wxs的me实例一致
+var me = {}
+
+// 初始化window对象的touch事件 (仅初始化一次)
+if(window && !window.$mescrollRenderInit){
+ window.$mescrollRenderInit = true
+
+
+ window.addEventListener('touchstart', function(e){
+ if (me.disabled()) return;
+ me.startPoint = me.getPoint(e); // 记录起点
+ }, {passive: true})
+
+
+ window.addEventListener('touchmove', function(e){
+ if (me.disabled()) return;
+ if (me.getScrollTop() > 0) return; // 需在顶部下拉,才禁止bounce
+
+ var curPoint = me.getPoint(e); // 当前点
+ var moveY = curPoint.y - me.startPoint.y; // 和起点比,移动的距离,大于0向下拉,小于0向上拉
+ // 向下拉
+ if (moveY > 0) {
+ // 可下拉的条件
+ if (!me.isDownScrolling && !me.optDown.isLock && (!me.isUpScrolling || (me.isUpScrolling && me.isUpBoth))) {
+
+ // 只有touch在mescroll的view上面,才禁止bounce
+ var el = e.target;
+ var isMescrollTouch = false;
+ while (el && el.tagName && el.tagName !== 'UNI-PAGE-BODY' && el.tagName != "BODY") {
+ var cls = el.classList;
+ if (cls && cls.contains('mescroll-render-touch')) {
+ isMescrollTouch = true
+ break;
+ }
+ el = el.parentNode; // 继续检查其父元素
+ }
+ // 禁止bounce (不会对swiper和iOS侧滑返回造成影响)
+ if (isMescrollTouch && e.cancelable && !e.defaultPrevented) e.preventDefault();
+ }
+ }
+ }, {passive: false})
+}
+
+/* 获取滚动条的位置 */
+me.getScrollTop = function() {
+ return me.scrollTop || 0
+}
+
+/* 是否禁用下拉刷新 */
+me.disabled = function(){
+ return !me.optDown || !me.optDown.use || me.optDown.native
+}
+
+/* 根据点击滑动事件获取第一个手指的坐标 */
+me.getPoint = function(e) {
+ if (!e) {
+ return {x: 0,y: 0}
+ }
+ if (e.touches && e.touches[0]) {
+ return {x: e.touches[0].pageX,y: e.touches[0].pageY}
+ } else if (e.changedTouches && e.changedTouches[0]) {
+ return {x: e.changedTouches[0].pageX,y: e.changedTouches[0].pageY}
+ } else {
+ return {x: e.clientX,y: e.clientY}
+ }
+}
+
+/**
+ * 监听逻辑层数据的变化 (实时更新数据)
+ */
+function propObserver(wxsProp) {
+ me.optDown = wxsProp.optDown
+ me.scrollTop = wxsProp.scrollTop
+ me.isDownScrolling = wxsProp.isDownScrolling
+ me.isUpScrolling = wxsProp.isUpScrolling
+ me.isUpBoth = wxsProp.isUpBoth
+}
+
+/* 导出模块 */
+const renderBiz = {
+ data() {
+ return {
+ propObserver: propObserver,
+ }
+ }
+}
+
+export default renderBiz;
\ No newline at end of file
diff --git a/src/components/mescroll/mescroll-uni/wxs/wxs.wxs b/src/components/mescroll/mescroll-uni/wxs/wxs.wxs
new file mode 100644
index 0000000..3fb4ad9
--- /dev/null
+++ b/src/components/mescroll/mescroll-uni/wxs/wxs.wxs
@@ -0,0 +1,268 @@
+// 使用wxs处理交互动画, 提高性能, 同时避免小程序bounce对下拉刷新的影响
+// https://uniapp.dcloud.io/frame?id=wxs
+// https://developers.weixin.qq.com/miniprogram/dev/framework/view/interactive-animation.html
+
+// 模拟mescroll实例, 与mescroll.js的写法尽量保持一致
+var me = {}
+
+// ------ 自定义下拉刷新动画 start ------
+
+/* 下拉过程中的回调,滑动过程一直在执行 (rate<1为inOffset; rate>1为outOffset) */
+me.onMoving = function (ins, rate, downHight){
+ ins.requestAnimationFrame(function () {
+ ins.selectComponent('.mescroll-wxs-content').setStyle({
+ 'will-change': 'transform', // 可解决下拉过程中, image和swiper脱离文档流的问题
+ 'transform': 'translateY(' + downHight + 'px)',
+ 'transition': ''
+ })
+ // 环形进度条
+ var progress = ins.selectComponent('.mescroll-wxs-progress')
+ progress && progress.setStyle({transform: 'rotate(' + 360 * rate + 'deg)'})
+ })
+}
+
+/* 显示下拉刷新进度 */
+me.showLoading = function (ins){
+ me.downHight = me.optDown.offset
+ ins.requestAnimationFrame(function () {
+ ins.selectComponent('.mescroll-wxs-content').setStyle({
+ 'will-change': 'auto',
+ 'transform': 'translateY(' + me.downHight + 'px)',
+ 'transition': 'transform 300ms'
+ })
+ })
+}
+
+/* 结束下拉 */
+me.endDownScroll = function (ins){
+ me.downHight = 0;
+ me.isDownScrolling = false;
+ ins.requestAnimationFrame(function () {
+ ins.selectComponent('.mescroll-wxs-content').setStyle({
+ 'will-change': 'auto',
+ 'transform': 'translateY(0)', // 不可以写空串,否则scroll-view渲染不完整 (延时350ms会调clearTransform置空)
+ 'transition': 'transform 300ms'
+ })
+ })
+}
+
+/* 结束下拉动画执行完毕后, 清除transform和transition, 避免对列表内容样式造成影响, 如: h5的list-msg示例下拉进度条漏出来等 */
+me.clearTransform = function (ins){
+ ins.requestAnimationFrame(function () {
+ ins.selectComponent('.mescroll-wxs-content').setStyle({
+ 'will-change': '',
+ 'transform': '',
+ 'transition': ''
+ })
+ })
+}
+
+// ------ 自定义下拉刷新动画 end ------
+
+/**
+ * 监听逻辑层数据的变化 (实时更新数据)
+ */
+function propObserver(wxsProp) {
+ me.optDown = wxsProp.optDown
+ me.scrollTop = wxsProp.scrollTop
+ me.bodyHeight = wxsProp.bodyHeight
+ me.isDownScrolling = wxsProp.isDownScrolling
+ me.isUpScrolling = wxsProp.isUpScrolling
+ me.isUpBoth = wxsProp.isUpBoth
+ me.isScrollBody = wxsProp.isScrollBody
+ me.startTop = wxsProp.scrollTop // 及时更新touchstart触发的startTop, 避免scroll-view快速惯性滚动到顶部取值不准确
+}
+
+/**
+ * 监听逻辑层数据的变化 (调用wxs的方法)
+ */
+function callObserver(callProp, oldValue, ins) {
+ if (me.disabled()) return;
+ if(callProp.callType){
+ // 逻辑层(App Service)的style已失效,需在视图层(Webview)设置style
+ if(callProp.callType === 'showLoading'){
+ me.showLoading(ins)
+ }else if(callProp.callType === 'endDownScroll'){
+ me.endDownScroll(ins)
+ }else if(callProp.callType === 'clearTransform'){
+ me.clearTransform(ins)
+ }
+ }
+}
+
+/**
+ * touch事件
+ */
+function touchstartEvent(e, ins) {
+ me.downHight = 0; // 下拉的距离
+ me.startPoint = me.getPoint(e); // 记录起点
+ me.startTop = me.getScrollTop(); // 记录此时的滚动条位置
+ me.startAngle = 0; // 初始角度
+ me.lastPoint = me.startPoint; // 重置上次move的点
+ me.maxTouchmoveY = me.getBodyHeight() - me.optDown.bottomOffset; // 手指触摸的最大范围(写在touchstart避免body获取高度为0的情况)
+ me.inTouchend = false; // 标记不是touchend
+
+ me.callMethod(ins, {type: 'setWxsProp'}) // 同步更新wxsProp的数据 (小程序是异步的,可能touchmove先执行,才到propObserver; h5和app是同步)
+}
+
+function touchmoveEvent(e, ins) {
+ var isPrevent = true // false表示不往上冒泡,相当于调用了同时调用了stopPropagation和preventDefault (对小程序生效, h5和app无效)
+
+ if (me.disabled()) return isPrevent;
+
+ var scrollTop = me.getScrollTop(); // 当前滚动条的距离
+ var curPoint = me.getPoint(e); // 当前点
+
+ var moveY = curPoint.y - me.startPoint.y; // 和起点比,移动的距离,大于0向下拉,小于0向上拉
+
+ // 向下拉 && 在顶部
+ // mescroll-body,直接判定在顶部即可
+ // scroll-view在滚动时不会触发touchmove,当触顶/底/左/右时,才会触发touchmove
+ // scroll-view滚动到顶部时,scrollTop不一定为0,也有可能大于0; 在iOS的APP中scrollTop可能为负数,不一定和startTop相等
+ if (moveY > 0 && (
+ (me.isScrollBody && scrollTop <= 0)
+ ||
+ (!me.isScrollBody && (scrollTop <= 0 || (scrollTop <= me.optDown.startTop && scrollTop === me.startTop)) )
+ )) {
+ // 可下拉的条件
+ if (!me.inTouchend && !me.isDownScrolling && !me.optDown.isLock && (!me.isUpScrolling || (me.isUpScrolling &&
+ me.isUpBoth))) {
+
+ // 下拉的角度是否在配置的范围内
+ if(!me.startAngle) me.startAngle = me.getAngle(me.lastPoint, curPoint); // 两点之间的角度,区间 [0,90]
+ if (me.startAngle < me.optDown.minAngle) return isPrevent; // 如果小于配置的角度,则不往下执行下拉刷新
+
+ // 如果手指的位置超过配置的距离,则提前结束下拉,避免Webview嵌套导致touchend无法触发
+ if (me.maxTouchmoveY > 0 && curPoint.y >= me.maxTouchmoveY) {
+ me.inTouchend = true; // 标记执行touchend
+ touchendEvent(e, ins); // 提前触发touchend
+ return isPrevent;
+ }
+
+ isPrevent = false // 小程序是return false
+
+ var diff = curPoint.y - me.lastPoint.y; // 和上次比,移动的距离 (大于0向下,小于0向上)
+
+ // 下拉距离 < 指定距离
+ if (me.downHight < me.optDown.offset) {
+ if (me.movetype !== 1) {
+ me.movetype = 1; // 加入标记,保证只执行一次
+ // me.optDown.inOffset && me.optDown.inOffset(me); // 进入指定距离范围内那一刻的回调,只执行一次
+ me.callMethod(ins, {type: 'setLoadType', downLoadType: 1})
+ me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来
+ }
+ me.downHight += diff * me.optDown.inOffsetRate; // 越往下,高度变化越小
+
+ // 指定距离 <= 下拉距离
+ } else {
+ if (me.movetype !== 2) {
+ me.movetype = 2; // 加入标记,保证只执行一次
+ // me.optDown.outOffset && me.optDown.outOffset(me); // 下拉超过指定距离那一刻的回调,只执行一次
+ me.callMethod(ins, {type: 'setLoadType', downLoadType: 2})
+ me.isMoveDown = true; // 标记下拉区域高度改变,在touchend重置回来
+ }
+ if (diff > 0) { // 向下拉
+ me.downHight += diff * me.optDown.outOffsetRate; // 越往下,高度变化越小
+ } else { // 向上收
+ me.downHight += diff; // 向上收回高度,则向上滑多少收多少高度
+ }
+ }
+
+ me.downHight = Math.round(me.downHight) // 取整
+ var rate = me.downHight / me.optDown.offset; // 下拉区域当前高度与指定距离的比值
+ // me.optDown.onMoving && me.optDown.onMoving(me, rate, me.downHight); // 下拉过程中的回调,一直在执行
+ me.onMoving(ins, rate, me.downHight)
+ }
+ }
+
+ me.lastPoint = curPoint; // 记录本次移动的点
+
+ return isPrevent // false表示不往上冒泡,相当于调用了同时调用了stopPropagation和preventDefault (对小程序生效, h5和app无效)
+}
+
+function touchendEvent(e, ins) {
+ // 如果下拉区域高度已改变,则需重置回来
+ if (me.isMoveDown) {
+ if (me.downHight >= me.optDown.offset) {
+ // 符合触发刷新的条件
+ me.downHight = me.optDown.offset; // 更新下拉区域高度
+ // me.triggerDownScroll();
+ me.callMethod(ins, {type: 'triggerDownScroll'})
+ } else {
+ // 不符合的话 则重置
+ me.downHight = 0;
+ // me.optDown.endDownScroll && me.optDown.endDownScroll(me);
+ me.callMethod(ins, {type: 'endDownScroll'})
+ }
+ me.movetype = 0;
+ me.isMoveDown = false;
+ } else if (!me.isScrollBody && me.getScrollTop() === me.startTop) { // scroll-view到顶/左/右/底的滑动事件
+ var isScrollUp = me.getPoint(e).y - me.startPoint.y < 0; // 和起点比,移动的距离,大于0向下拉,小于0向上拉
+ // 上滑
+ if (isScrollUp) {
+ // 需检查滑动的角度
+ var angle = me.getAngle(me.getPoint(e), me.startPoint); // 两点之间的角度,区间 [0,90]
+ if (angle > 80) {
+ // 检查并触发上拉
+ // me.triggerUpScroll(true);
+ me.callMethod(ins, {type: 'triggerUpScroll'})
+ }
+ }
+ }
+ me.callMethod(ins, {type: 'setWxsProp'}) // 同步更新wxsProp的数据 (小程序是异步的,可能touchmove先执行,才到propObserver; h5和app是同步)
+}
+
+/* 是否禁用下拉刷新 */
+me.disabled = function(){
+ return !me.optDown || !me.optDown.use || me.optDown.native
+}
+
+/* 根据点击滑动事件获取第一个手指的坐标 */
+me.getPoint = function(e) {
+ if (!e) {
+ return {x: 0,y: 0}
+ }
+ if (e.touches && e.touches[0]) {
+ return {x: e.touches[0].pageX,y: e.touches[0].pageY}
+ } else if (e.changedTouches && e.changedTouches[0]) {
+ return {x: e.changedTouches[0].pageX,y: e.changedTouches[0].pageY}
+ } else {
+ return {x: e.clientX,y: e.clientY}
+ }
+}
+
+/* 计算两点之间的角度: 区间 [0,90]*/
+me.getAngle = function (p1, p2) {
+ var x = Math.abs(p1.x - p2.x);
+ var y = Math.abs(p1.y - p2.y);
+ var z = Math.sqrt(x * x + y * y);
+ var angle = 0;
+ if (z !== 0) {
+ angle = Math.asin(y / z) / Math.PI * 180;
+ }
+ return angle
+}
+
+/* 获取滚动条的位置 */
+me.getScrollTop = function() {
+ return me.scrollTop || 0
+}
+
+/* 获取body的高度 */
+me.getBodyHeight = function() {
+ return me.bodyHeight || 0;
+}
+
+/* 调用逻辑层的方法 */
+me.callMethod = function(ins, param) {
+ if(ins) ins.callMethod('wxsCall', param)
+}
+
+/* 导出模块 */
+module.exports = {
+ propObserver: propObserver,
+ callObserver: callObserver,
+ touchstartEvent: touchstartEvent,
+ touchmoveEvent: touchmoveEvent,
+ touchendEvent: touchendEvent
+}
\ No newline at end of file
diff --git a/src/components/pay/pay.vue b/src/components/pay/pay.vue
new file mode 100644
index 0000000..f50c774
--- /dev/null
+++ b/src/components/pay/pay.vue
@@ -0,0 +1,184 @@
+
+
+
+
+ {{ t('pay.payTitle') }}
+
+ {{ t('currency') }}
+ {{ moneyFormat(payInfo.money) }}
+
+
+
+
+ {{ t('pay.orderInfo') }}
+ {{ payInfo.body }}
+
+
+
+
+
+ {{ item.name }}
+
+
+
+ {{ t('pay.notHavePayType') }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/share-poster/share-poster.vue b/src/components/share-poster/share-poster.vue
new file mode 100644
index 0000000..79043c7
--- /dev/null
+++ b/src/components/share-poster/share-poster.vue
@@ -0,0 +1,344 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/sms-code/sms-code.vue b/src/components/sms-code/sms-code.vue
new file mode 100644
index 0000000..662d7dc
--- /dev/null
+++ b/src/components/sms-code/sms-code.vue
@@ -0,0 +1,75 @@
+
+ {{ sendSms.tips.value }}
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/tabbar/tabbar.vue b/src/components/tabbar/tabbar.vue
new file mode 100644
index 0000000..99eb5f4
--- /dev/null
+++ b/src/components/tabbar/tabbar.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/tag/tag.vue b/src/components/tag/tag.vue
new file mode 100644
index 0000000..bdb51f2
--- /dev/null
+++ b/src/components/tag/tag.vue
@@ -0,0 +1,37 @@
+
+
+ {{ text }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/top-tabbar/top-tabbar.vue b/src/components/top-tabbar/top-tabbar.vue
new file mode 100644
index 0000000..87db4bb
--- /dev/null
+++ b/src/components/top-tabbar/top-tabbar.vue
@@ -0,0 +1,526 @@
+
+
+
+
+
+
+
+
+ {{ data.title }}
+
+
+
+
+
+
+
+
+ {{ data.title }}
+
+
+
+
+
+
+
+
+
+
+ {{topStatusBarData.inputPlaceholder}}
+
+
+
+
+
+
+
+ {{ currentPosition }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/types/components.d.ts b/src/components/types/components.d.ts
new file mode 100644
index 0000000..3b9874e
--- /dev/null
+++ b/src/components/types/components.d.ts
@@ -0,0 +1,23 @@
+import lxHeader from '../components/lx-header/lx-header.vue'
+import lxHello from '../components/lx-hello/lx-hello.vue'
+import lxImage from '../components/lx-image/lx-image.vue'
+import lxList from '../components/lx-list/lx-list.vue'
+import lxListState from '../components/lx-list-state/lx-list-state.vue'
+import lxOperateBottom from '../components/lx-operate-bottom/lx-operate-bottom.vue'
+import lxSubmitBtn from '../components/lx-submit-btn/lx-submit-btn.vue'
+import lxUpload from '../components/lx-upload/lx-upload.vue'
+
+
+declare module '@vue/runtime-core' {
+ export interface GlobalComponents {
+ "lx-header": typeof lxHeader,
+ "lx-hello": typeof lxHello,
+ "lx-image": typeof lxImage,
+ "lx-list": typeof lxList,
+ "lx-list-state": typeof lxListState,
+ "lx-operate-bottom": typeof lxOperateBottom,
+ "lx-submit-btn": typeof lxSubmitBtn,
+ "lx-upload": typeof lxUpload,
+ }
+}
+
diff --git a/src/components/types/index.d.ts b/src/components/types/index.d.ts
new file mode 100644
index 0000000..9304c9f
--- /dev/null
+++ b/src/components/types/index.d.ts
@@ -0,0 +1,26 @@
+///
+declare module 'lxui-uni' {
+ export function install(): void //必要
+ type pageMode = 'navigateTo' | 'redirectTo' | 'reLaunch' | 'switchTab'
+ interface goToPageInt {
+ url: string
+ mode?: pageMode
+ params?: {
+ [key: string]: string | number | boolean
+ }
+ }
+
+ global {
+ interface Uni {
+ goToPage({ url, mode, params }: goToPageInt): void;
+ $util: {
+ formatTime: any,
+ debounce: any,
+ throttle: any,
+ saveImgData: any,
+ setClipboardData: any,
+ config: any
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/components/wx-privacy-popup/wx-privacy-popup.vue b/src/components/wx-privacy-popup/wx-privacy-popup.vue
new file mode 100644
index 0000000..5caf976
--- /dev/null
+++ b/src/components/wx-privacy-popup/wx-privacy-popup.vue
@@ -0,0 +1,234 @@
+
+
+
+
+ 用户隐私保护提示
+
+ 感谢您使用本小程序,在使用前您应当阅读并同意
+ {{privacyContractName}},
+ 当点击同意并继续时,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力;如您不同意,将无法继续使用小程序相关功能。
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/x-skeleton/config.js b/src/components/x-skeleton/config.js
new file mode 100644
index 0000000..fe359d6
--- /dev/null
+++ b/src/components/x-skeleton/config.js
@@ -0,0 +1,150 @@
+
+// banner 轮播图
+export function bannerConfig(config) {
+ return {
+ padding: '20rpx',
+ gridRows: 1,
+ gridColumns: 1,
+ gridRowsGap: '40rpx',
+ gridColumnsGap: '24rpx',
+ itemDirection: 'row',
+ itemGap: '30rpx',
+ itemAlign: 'center',
+ headShow: true,
+ headWidth: '100%',
+ headHeight: '300rpx',
+ headBorderRadius: '20rpx',
+ textShow: false,
+ textRows: 3,
+ textRowsGap: '20rpx',
+ textWidth: '100%',
+ textHeight: '30rpx',
+ textBorderRadius: '6rpx',
+ ...config
+ }
+}
+
+// info 个人信息
+export function infoConfig(config) {
+ return {
+ padding: '20rpx',
+ gridRows: 1,
+ gridColumns: 1,
+ gridRowsGap: '50rpx',
+ gridColumnsGap: '24rpx',
+ itemDirection: 'row',
+ itemGap: '30rpx',
+ itemAlign: 'flex-start',
+ headShow: true,
+ headWidth: '100rpx',
+ headHeight: '100rpx',
+ headBorderRadius: '50%',
+ textShow: true,
+ textRows: 4,
+ textRowsGap: '30rpx',
+ textWidth: ['50%', '100%', '100%', '80%'],
+ textHeight: ['40rpx', '24rpx', '24rpx', '24rpx'],
+ textBorderRadius: '6rpx',
+ ...config
+ }
+}
+
+// text 段落
+export function textConfig(config) {
+ return {
+ padding: '20rpx',
+ gridRows: 1,
+ gridColumns: 1,
+ gridRowsGap: '50rpx',
+ gridColumnsGap: '24rpx',
+ itemDirection: 'row',
+ itemGap: '30rpx',
+ itemAlign: 'flex-start',
+ headShow: false,
+ headWidth: '100rpx',
+ headHeight: '100rpx',
+ headBorderRadius: '50%',
+ textShow: true,
+ textRows: 4,
+ textRowsGap: '30rpx',
+ textWidth: ['50%', '100%', '100%', '80%'],
+ textHeight: '30rpx',
+ textBorderRadius: '6rpx',
+ ...config
+ }
+}
+
+// menu 菜单
+export function menuConfig(config) {
+ return {
+ padding: '20rpx',
+ gridRows: 2,
+ gridColumns: 5,
+ gridRowsGap: '40rpx',
+ gridColumnsGap: '40rpx',
+ itemDirection: 'column',
+ itemGap: '16rpx',
+ itemAlign: 'center',
+ headShow: true,
+ headWidth: '100rpx',
+ headHeight: '100rpx',
+ headBorderRadius: '50%',
+ textShow: true,
+ textRows: 1,
+ textRowsGap: '0rpx',
+ textWidth: '100%',
+ textHeight: '24rpx',
+ textBorderRadius: '6rpx',
+ ...config
+ }
+}
+
+// list 列表
+export function listConfig(config) {
+ return {
+ padding: '20rpx',
+ gridRows: 2,
+ gridColumns: 1,
+ gridRowsGap: '50rpx',
+ gridColumnsGap: '24rpx',
+ itemDirection: 'row',
+ itemGap: '30rpx',
+ itemAlign: 'flex-start',
+ headShow: true,
+ headWidth: '200rpx',
+ headHeight: '200rpx',
+ headBorderRadius: '16rpx',
+ textShow: true,
+ textRows: 4,
+ textRowsGap: '30rpx',
+ textWidth: ['50%', '100%', '100%', '80%'],
+ textHeight: ['38rpx', '24rpx', '24rpx', '24rpx'],
+ textBorderRadius: '6rpx',
+ ...config
+ }
+}
+
+// waterfall 瀑布流
+export function waterfallConfig(config) {
+ return {
+ padding: '20rpx',
+ gridRows: 2,
+ gridColumns: 2,
+ gridRowsGap: '40rpx',
+ gridColumnsGap: '24rpx',
+ itemDirection: 'column',
+ itemGap: '16rpx',
+ itemAlign: 'center',
+ headShow: true,
+ headWidth: '100%',
+ headHeight: '400rpx',
+ headBorderRadius: '12rpx',
+ textShow: true,
+ textRows: 3,
+ textRowsGap: '12rpx',
+ textWidth: ['40%', '85%', '60%'],
+ textHeight: ['30rpx', '20rpx', '20rpx'],
+ textBorderRadius: '6rpx',
+ ...config
+ }
+}
\ No newline at end of file
diff --git a/src/components/x-skeleton/x-skeleton.vue b/src/components/x-skeleton/x-skeleton.vue
new file mode 100644
index 0000000..7d8c26b
--- /dev/null
+++ b/src/components/x-skeleton/x-skeleton.vue
@@ -0,0 +1,319 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/hooks/useCaptcha.ts b/src/hooks/useCaptcha.ts
new file mode 100644
index 0000000..46e7812
--- /dev/null
+++ b/src/hooks/useCaptcha.ts
@@ -0,0 +1,26 @@
+import { getCaptcha } from '@/app/api/system'
+import { ref } from 'vue'
+
+interface formData {
+ captcha_code: string,
+ captcha_key: string
+}
+
+export function useCaptcha(formData: formData) {
+ const image = ref('')
+
+ const refresh = async ()=> {
+ try {
+ const res:AnyObject = await getCaptcha()
+ formData.captcha_key = res.data.captcha_key
+ formData.captcha_code = ''
+ image.value = res.data.img.replace(/\r\n/g, '')
+ } catch (e) {
+ }
+ }
+
+ return {
+ image,
+ refresh
+ }
+}
diff --git a/src/hooks/useDiy.ts b/src/hooks/useDiy.ts
new file mode 100644
index 0000000..ada7b78
--- /dev/null
+++ b/src/hooks/useDiy.ts
@@ -0,0 +1,172 @@
+import {ref, reactive, computed} from 'vue';
+import {onLoad, onShow, onPullDownRefresh, onPageScroll} from '@dcloudio/uni-app';
+import {img, handleOnloadParams} from '@/utils/common';
+import {getDiyInfo} from '@/app/api/diy';
+import useDiyStore from '@/app/stores/diy';
+
+export function useDiy(params: any = {}) {
+
+ const loading = ref(true);
+ const diyStore = useDiyStore();
+ const pullDownRefreshCount = ref(0)
+
+ const id = ref(0)
+ const name = ref(params.name || '')
+ const template = ref('')
+
+ // 自定义页面 数据
+ const diyData = reactive({
+ pageMode: 'diy',
+ title: '',
+ global: {},
+ value: []
+ })
+
+ const getLoading = () => {
+ return loading.value;
+ }
+
+ const data = computed(() => {
+ if (diyStore.mode == 'decorate') {
+ return diyStore;
+ } else {
+ return diyData;
+ }
+ })
+
+ const isShowTopTabbar = ref(false);
+
+ const pageStyle = () => {
+ var style = '';
+ if (data.value.global.pageStartBgColor) {
+ if (data.value.global.pageStartBgColor && data.value.global.pageEndBgColor) style += `background:linear-gradient(${data.value.global.pageGradientAngle},${data.value.global.pageStartBgColor},${data.value.global.pageEndBgColor});`;
+ else style += 'background-color:' + data.value.global.pageStartBgColor + ';';
+ }
+
+ style += 'min-height:calc(100vh - 50px);';
+ if (data.value.global.bgUrl) {
+ style += `background-image:url('${img(data.value.global.bgUrl)}');`;
+ }
+
+ if (data.value.global.bgHeightScale) {
+ style += `background-size: 100% ${data.value.global.bgHeightScale}%;`;
+ }
+
+ // #ifdef H5
+ // 导航栏风格五 - 兼容
+ if(data.value.global && data.value.global.topStatusBar && data.value.global.topStatusBar.style == "style-5"){
+ style += `background-position-y: -176rpx;`;
+ }
+ // #endif
+ return style;
+ };
+
+ // 监听页面加载
+ const onLoadLifeCycle = () => {
+ onLoad((option: any) => {
+ // #ifdef MP-WEIXIN
+ // 处理小程序场景值参数
+ option = handleOnloadParams(option);
+ // #endif
+
+ // #ifdef H5
+ // 装修模式
+ diyStore.mode = option.mode || '';
+ if (diyStore.mode == 'decorate') {
+ loading.value = false;
+ }
+ // #endif
+
+ id.value = option.id || '';
+ if (name.value == '') name.value = option.name || '';
+ template.value = option.template || '';
+ });
+ }
+
+ // 监听页面显示
+ const onShowLifeCycle = (callback: any = null) => {
+ onShow(() => {
+ // 装修模式
+ if (diyStore.mode == 'decorate') {
+ diyStore.init();
+ } else {
+ getDiyInfo({
+ id: id.value,
+ name: name.value,
+ template: template.value
+ }).then((res: any) => {
+ let requestData = res.data;
+ if (requestData.value) {
+ diyData.pageMode = requestData.mode;
+ diyData.title = requestData.title;
+
+ let sources = JSON.parse(requestData.value);
+ diyData.global = sources.global;
+ diyData.value = sources.value;
+ diyData.value.forEach((item: any, index) => {
+ item.pageStyle = '';
+ if (item.pageStartBgColor) {
+ if (item.pageStartBgColor && item.pageEndBgColor) item.pageStyle += `background:linear-gradient(${item.pageGradientAngle},${item.pageStartBgColor},${item.pageEndBgColor});`;
+ else item.pageStyle += 'background-color:' + item.pageStartBgColor + ';';
+ }
+
+ if (item.margin) {
+ if (item.margin.top > 0) {
+ item.pageStyle += 'padding-top:' + item.margin.top * 2 + 'rpx' + ';';
+ }
+ item.pageStyle += 'padding-bottom:' + item.margin.bottom * 2 + 'rpx' + ';';
+ item.pageStyle += 'padding-right:' + item.margin.both * 2 + 'rpx' + ';';
+ item.pageStyle += 'padding-left:' + item.margin.both * 2 + 'rpx' + ';';
+ }
+ });
+
+ // 控制自定义头部是否出现 | 微信小程序
+ isShowTopTabbar.value = diyData.value.some((item) => {
+ return item && item.position && item.position == 'top_fixed'
+ });
+
+ uni.setNavigationBarTitle({
+ title: diyData.title
+ });
+
+ }
+
+ loading.value = false;
+
+ if (callback) callback(requestData)
+
+ });
+ }
+
+ })
+ }
+
+ // 监听下拉刷新事件
+ const onPullDownRefreshLifeCycle = () => {
+ onPullDownRefresh(() => {
+ pullDownRefreshCount.value++;
+ uni.stopPullDownRefresh();
+ })
+ }
+
+ // 监听滚动事件
+ const onPageScrollLifeCycle = () => {
+ onPageScroll((e) => {
+ if (e.scrollTop > 0) {
+ diyStore.scrollTop = e.scrollTop;
+ }
+ })
+ }
+
+ return {
+ getLoading,
+ pullDownRefreshCount,
+ data: data.value,
+ isShowTopTabbar,
+ pageStyle,
+ onLoad: onLoadLifeCycle,
+ onShow: onShowLifeCycle,
+ onPullDownRefresh: onPullDownRefreshLifeCycle,
+ onPageScroll: onPageScrollLifeCycle,
+ }
+}
diff --git a/src/hooks/useLogin.ts b/src/hooks/useLogin.ts
new file mode 100644
index 0000000..661605f
--- /dev/null
+++ b/src/hooks/useLogin.ts
@@ -0,0 +1,130 @@
+import { redirect, isWeixinBrowser, urlDeconstruction } from '@/utils/common'
+import { weappLogin, wechatLogin, wechatUser, wechatUserLogin } from '@/app/api/auth'
+import { getWechatAuthCode } from '@/app/api/system'
+import useMemberStore from '@/stores/member'
+import useConfigStore from '@/stores/config'
+
+export function useLogin() {
+ /**
+ * 设置登录返回页
+ */
+ const setLoginBack = (data : redirectOptions) => {
+ uni.setStorage({ key: 'loginBack', data })
+ setTimeout(() => {
+ const config = useConfigStore()
+ // #ifdef MP-WEIXIN
+ if (!uni.getStorageSync('autoLoginLock') && uni.getStorageSync('openid') && config.login.is_bind_mobile) {
+ redirect({ url: '/app/pages/auth/bind', mode: 'redirectTo' })
+ return
+ }
+ // #endif
+
+ // #ifdef H5
+ if (!uni.getStorageSync('autoLoginLock') && isWeixinBrowser() && uni.getStorageSync('openid') && config.login.is_bind_mobile) {
+ redirect({ url: '/app/pages/auth/bind', mode: 'redirectTo' })
+ return
+ }
+ // #endif
+ redirect({ url: '/app/pages/auth/login', mode: 'redirectTo' })
+ })
+ }
+
+ /**
+ * 执行登录后跳转
+ */
+ const handleLoginBack = () => {
+ uni.removeStorageSync('autoLoginLock')
+ uni.getStorage({
+ key: 'loginBack',
+ success: (data : AnyObject) => {
+ data ? redirect(data.data) : redirect({ url: '/app/pages/home/index', mode: 'switchTab' })
+ },
+ fail: (res) => {
+ redirect({ url: '/app/pages/home/index', mode: 'switchTab' })
+ }
+ })
+ }
+
+ /**
+ * 授权登录
+ */
+ const authLogin = (code : string | null) => {
+ let obj = {};
+
+ // #ifdef MP-WEIXIN
+ obj.code = code;
+ uni.getStorageSync('pid') && (Object.assign(obj, { pid: uni.getStorageSync('pid') }))
+ weappLogin(obj).then((res : AnyObject) => {
+ if (res.data.token) {
+ useMemberStore().setToken(res.data.token)
+ setTimeout(() => {
+ const memberInfo = useMemberStore().info
+ memberInfo && memberInfo.weapp_openid && uni.setStorageSync('openid', memberInfo.weapp_openid)
+ }, 1000)
+ } else {
+ uni.setStorageSync('openid', res.data.openid)
+ uni.setStorageSync('unionid', res.data.unionid)
+ }
+ })
+ // #endif
+
+ // #ifdef H5
+ obj.code = code;
+ uni.getStorageSync('pid') && (Object.assign(obj, { pid: uni.getStorageSync('pid') }))
+ wechatUser(obj).then((user_res : AnyObject) => {
+ if(user_res.data){
+ wechatUserLogin(user_res.data).then((res : AnyObject) => {
+ if (res.data.token) {
+ useMemberStore().setToken(res.data.token)
+ setTimeout(() => {
+ const memberInfo = useMemberStore().info
+ memberInfo && memberInfo.wx_openid && uni.setStorageSync('openid', memberInfo.wx_openid)
+ }, 1000)
+ } else {
+ uni.setStorageSync('openid', res.data.openid)
+ uni.setStorageSync('unionid', res.data.unionid)
+ }
+ })
+ }
+ })
+ // #endif
+ }
+
+ /**
+ * 获取授权码
+ */
+ const getAuthCode = (scopes : 'snsapi_base' | 'snsapi_userinfo' = 'snsapi_base') => {
+ // #ifdef MP-WEIXIN
+ wx.login({
+ success(res) {
+ if (res.code) {
+ authLogin(res.code)
+ } else {
+ console.log('登录失败!' + res.errMsg)
+ }
+ }
+ })
+ // #endif
+
+ // #ifdef H5
+ let url = `${location.origin}${location.pathname}`
+ let query = urlDeconstruction(location.href).query
+ query.code && (delete query.code)
+ Object.keys(query).length && (url += uni.$u.queryParams(query))
+
+ getWechatAuthCode({
+ url,
+ scopes
+ }).then((res : AnyObject) => {
+ location.href = res.data.url
+ })
+ // #endif
+ }
+
+ return {
+ setLoginBack,
+ handleLoginBack,
+ authLogin,
+ getAuthCode
+ }
+}
diff --git a/src/hooks/useSendSms.ts b/src/hooks/useSendSms.ts
new file mode 100644
index 0000000..efd8beb
--- /dev/null
+++ b/src/hooks/useSendSms.ts
@@ -0,0 +1,49 @@
+import { ref, computed } from 'vue'
+import { t } from '@/locale'
+import { sendSms } from '@/app/api/system'
+
+export function useSendSms(smsRef: AnyObject | null) {
+ const tips = ref(t('getSmsCode'))
+ const seconds = 90
+ const changeText = 'X' + t('smsCodeChangeText')
+
+ const canGetCode = computed(() =>{
+ return smsRef.value ? smsRef.value.canGetCode : true
+ })
+
+ /**
+ * 发送短信
+ */
+ const send = async (param:requestMobileParam) => {
+ if (!canGetCode.value) return
+
+ smsRef.value.start()
+
+ let result: string | boolean = false
+ await sendSms(param).then(res=>{
+ if (res.code == 1) {
+ result = res.data.key
+ } else {
+ smsRef.value.reset()
+ result = false
+ }
+ }).catch(err=>{
+ result = false
+ smsRef.value.reset()
+ })
+ return result
+ }
+
+ const codeChange = (text: string)=>{
+ tips.value = text
+ }
+
+ return {
+ tips: tips,
+ seconds,
+ canGetCode: canGetCode,
+ send,
+ codeChange,
+ changeText
+ }
+}
diff --git a/src/hooks/useShare.ts b/src/hooks/useShare.ts
new file mode 100644
index 0000000..c9387fd
--- /dev/null
+++ b/src/hooks/useShare.ts
@@ -0,0 +1,144 @@
+import { img, isWeixinBrowser, currRoute, currShareRoute } from '@/utils/common'
+import { onShareAppMessage, onShareTimeline } from '@dcloudio/uni-app'
+import { getShareInfo } from '@/app/api/diy';
+
+// #ifdef H5
+import wechat from '@/utils/wechat'
+// #endif
+
+export const useShare = () => {
+ var wechatOptions: any = {};
+
+ var weappOptions:any = {};
+
+ const wechatInit = () => {
+ if (!isWeixinBrowser()) return;
+ // 初始化sdk
+ wechat.init();
+ }
+
+ // 微信公众号分享
+ const wechatShare = () => {
+ if (!isWeixinBrowser()) return;
+ wechat.share(wechatOptions);
+ }
+
+ const getQuery = ()=>{
+ let query:any = currShareRoute().params;
+ let wap_member_id = uni.getStorageSync('wap_member_id');
+ if (wap_member_id) {
+ query.mid = wap_member_id;
+ }
+
+ let queryStr = [];
+ for (let key in query) {
+ queryStr.push(key + '=' + query[key]);
+ }
+
+ return queryStr
+
+ }
+
+ const setShare = (options : any = {}) => {
+ if(currRoute() == '') return;
+
+ let queryStr = getQuery();
+
+ // #ifdef H5
+
+ let h5Link = location.origin + location.pathname + (queryStr.length > 0 ? '?' + queryStr.join('&') : '');
+
+ wechatOptions = {
+ link: h5Link
+ }
+
+ // #endif
+
+ // #ifdef MP-WEIXIN
+ weappOptions = {
+ path: '/' + currRoute() + (queryStr.length > 0 ? '?' + queryStr.join('&') : ''),
+ query: queryStr.join('&'),
+ }
+ // #endif
+
+ if (options && options.wechat && options.weapp) {
+
+ // #ifdef H5
+ wechatOptions.title = options.wechat.title || ''
+ wechatOptions.link = options.wechat.link || h5Link
+ wechatOptions.desc = options.wechat.desc || ''
+ wechatOptions.imgUrl = options.wechat.url ? img(options.wechat.url) : ''
+ wechatShare()
+ // #endif
+
+ // #ifdef MP-WEIXIN
+ weappOptions.title = options.weapp.title || ''
+ weappOptions.query = options.weapp.path || queryStr.join('&')
+ weappOptions.imageUrl = options.weapp.url ? img(options.weapp.url) : ''
+ // #endif
+
+ } else {
+ getShareInfo({
+ route: '/' + currRoute(),
+ params: JSON.stringify(currShareRoute().params)
+ }).then((res: any) => {
+ let data = res.data;
+
+ // #ifdef H5
+ let wechat = data.wechat;
+ if (wechat) {
+ wechatOptions.title = wechat.title
+ wechatOptions.desc = wechat.desc
+ wechatOptions.imgUrl = wechat.url ? img(wechat.url) : ''
+ }else{
+ wechatOptions.title = document.title;
+ wechatOptions.desc = ''
+ }
+ wechatShare()
+ // #endif
+
+ // #ifdef MP-WEIXIN
+ let weapp = data.weapp;
+ if (weapp) {
+ weappOptions.title = weapp.title
+ weappOptions.imageUrl = weapp.url ? img(weapp.url) : ''
+ }
+ // #endif
+
+ })
+ }
+ uni.setStorageSync('weappOptions', weappOptions)
+ }
+
+ // 小程序分享,分享给好友
+ const shareApp = (options = {}) => {
+ onShareAppMessage(() => {
+ let config:any= uni.getStorageSync('weappOptions')
+ if(!config) config = {}
+ return {
+ ...config,
+ ...options
+ }
+ })
+
+ }
+
+ // 小程序分享,分享到朋友圈
+ const shareTime = (options = {}) => {
+ onShareTimeline(() => {
+ let config:any= uni.getStorageSync('weappOptions')
+ if(!config) config = {}
+ return {
+ ...config,
+ ...options
+ }
+ })
+ }
+
+ return {
+ wechatInit:wechatInit,
+ setShare: setShare,
+ onShareAppMessage: shareApp,
+ onShareTimeline: shareTime,
+ }
+}
diff --git a/src/hooks/useSubscribeMessage.ts b/src/hooks/useSubscribeMessage.ts
new file mode 100644
index 0000000..a027313
--- /dev/null
+++ b/src/hooks/useSubscribeMessage.ts
@@ -0,0 +1,30 @@
+import { getWeappTemplateId } from '@/app/api/system'
+
+/**
+ * 小程序订阅消息
+ */
+export const useSubscribeMessage = () => {
+ const request = (keys: string)=> {
+ // #ifdef MP-WEIXIN
+ const method = getWeappTemplateId
+ // #endif
+
+ // #ifdef MP
+ method(keys).then(({ data }) => {
+ uni.requestSubscribeMessage({
+ tmplIds: data,
+ success: (res) => {
+ console.log("requestSubscribeMessage:success", res)
+ },
+ fail: (res) => {
+ console.log('requestSubscribeMessage:fail', res)
+ }
+ })
+ }).catch()
+ // #endif
+ }
+
+ return {
+ request
+ }
+}
diff --git a/src/locale/en.json b/src/locale/en.json
new file mode 100644
index 0000000..b71d7cf
--- /dev/null
+++ b/src/locale/en.json
@@ -0,0 +1,11 @@
+{
+ "pages.index.index": "Index",
+ "pages.article.list": "Information Center",
+ "pages.article.detail": "Information detail",
+ "pages.member.index": "My",
+ "pages.auth.login": "Login",
+ "pages.auth.register": "Register",
+ "pages.auth.resetpwd": "Retrieve password",
+ "pages.setting.index": "Settings",
+ "pages.auth.bind": "Bind Mobile"
+}
\ No newline at end of file
diff --git a/src/locale/en/common.json b/src/locale/en/common.json
new file mode 100644
index 0000000..a3ae7f9
--- /dev/null
+++ b/src/locale/en/common.json
@@ -0,0 +1,3 @@
+{
+ "index": "Index"
+}
diff --git a/src/locale/i18n.ts b/src/locale/i18n.ts
new file mode 100644
index 0000000..ce1a083
--- /dev/null
+++ b/src/locale/i18n.ts
@@ -0,0 +1,22 @@
+import { createI18n } from 'vue-i18n'
+
+import Language from './language'
+import zhHans from './zh-Hans/common.json'
+import en from './en/common.json'
+
+//创建实例
+let i18n = createI18n({
+ locale: uni.getLocale(),
+ globalInjection: true, //是否全局注入
+ silentFallbackWarn: true,
+ silentTranslationWarn: true,
+ messages: {
+ 'zh-Hans': zhHans,
+ en
+ }
+})
+
+const language = new Language(i18n)
+
+export { language }
+export default i18n
diff --git a/src/locale/index.ts b/src/locale/index.ts
new file mode 100644
index 0000000..02f557c
--- /dev/null
+++ b/src/locale/index.ts
@@ -0,0 +1,21 @@
+import i18n, { language } from "./i18n"
+import useSystemStore from '@/stores/system'
+
+const t = (message: string) => {
+ const route = useSystemStore().currRoute
+ const file = language.getFileKey(`/${ route }`)
+ const key = `${ file.fileKey }.${ message }`
+ if (i18n.global.t(message) != message) return i18n.global.t(message)
+ return i18n.global.t(key) != key ? i18n.global.t(key) : ''
+}
+
+export { language, t }
+
+export default {
+ install(app: any) {
+ //注册i18n
+ app.use(i18n);
+ }
+};
+
+
diff --git a/src/locale/language.ts b/src/locale/language.ts
new file mode 100644
index 0000000..92d6932
--- /dev/null
+++ b/src/locale/language.ts
@@ -0,0 +1,86 @@
+import { nextTick } from 'vue'
+import { getAppPages, getSubPackagesPages} from "@/utils/pages"
+
+class Language {
+ private i18n: any
+ private loadLocale: Array = [] //已加载的语言
+
+ public path = ''
+
+ constructor(i18n: any) {
+ this.i18n = i18n
+ }
+
+ /**
+ *
+ * @param locale 设置语言
+ */
+ public setI18nLanguage(locale: string, path: string = '') {
+ if (this.i18n.global.locale == locale) return
+ this.i18n.global.locale = locale
+ path && (this.path = path)
+ uni.setLocale(locale)
+ }
+
+ public loadAllLocaleMessages(app: string, locale: string) {
+ const pages = app == 'app' ? getAppPages() : getSubPackagesPages()
+ pages.forEach((path: string) => {
+ this.loadLocaleMessages(path, locale)
+ })
+ }
+
+ /**
+ * 加载语言包
+ * @param path
+ * @param locale
+ * @returns
+ */
+ public async loadLocaleMessages(path: string, locale: string) {
+ try {
+ const { route, file, fileKey } = this.getFileKey(path)
+
+ // 是否已加载
+ if (this.loadLocale.includes(`${fileKey}.${locale}`)) {
+ this.setI18nLanguage(locale, file)
+ return nextTick()
+ }
+ this.loadLocale.push(`${fileKey}.${locale}`)
+
+ // 引入语言包文件
+ const messages = await import(route == 'app' ? `../${route}/locale/${locale}/${file}.json` : `../addon/${route}/locale/${locale}/${file}.json`)
+ let data: Record = {}
+ Object.keys(messages.default).forEach(key => {
+ data[`${fileKey}.${key}`] = messages.default[key]
+ })
+
+ this.i18n.global.mergeLocaleMessage(locale, data)
+ this.setI18nLanguage(locale, file)
+
+ return nextTick()
+ } catch (e) {
+ // console.log(e)
+ this.setI18nLanguage(locale)
+ return nextTick()
+ }
+ }
+
+ public getFileKey = (path: string) => {
+ const pathArr = path.split('/')
+ let route = pathArr[1] == 'app' ? pathArr[1] : pathArr[2];
+
+ let file = path == '/' ? 'pages.index.index' : path.replace('/', '').replaceAll('/', '.')
+
+ // 如果是系统页面,则移除“app.”
+ let fileKey = ''
+ if (route == 'app') {
+ fileKey = file.replace('app.', '')
+ file = file.replace('app.', '')
+ } else {
+ fileKey = file.replace(`addon.`, '')
+ file = file.replace(`addon.${route}.`, '')
+ }
+ return { file, fileKey, route }
+ }
+}
+
+export default Language
diff --git a/src/locale/zh-Hans.json b/src/locale/zh-Hans.json
new file mode 100644
index 0000000..fc3ecd1
--- /dev/null
+++ b/src/locale/zh-Hans.json
@@ -0,0 +1,97 @@
+{
+ "pages.index.index": "",
+ "pages.index.close": "站点已关闭",
+ "pages.index.nosite": "站点不存在",
+ "pages.index.develop": "开发环境配置",
+ "pages.index.diy": "",
+ "pages.article.list": "资讯中心",
+ "pages.article.detail": "文章详情",
+ "pages.auth.agreement": "协议",
+ "pages.auth.bind": "绑定手机号",
+ "pages.auth.login": "登录",
+ "pages.auth.register": "注册",
+ "pages.auth.resetpwd": "找回密码",
+ "pages.member.account": "会员账户",
+ "pages.member.account_edit": "编辑会员账户",
+ "pages.member.address": "收货地址",
+ "pages.member.address_edit": "编辑收货地址",
+ "pages.member.apply_cash_out": "申请提现",
+ "pages.member.balance": "我的余额",
+ "pages.member.point": "我的积分",
+ "pages.member.point_detail": "积分明细",
+ "pages.member.level": "会员等级",
+ "pages.member.sign_in": "我的签到",
+ "pages.member.cash_out": "提现记录",
+ "pages.member.cash_out_detail": "提现详情",
+ "pages.member.commission": "我的佣金",
+ "pages.member.detailed_account": "流水明细",
+ "pages.member.index": "",
+ "pages.member.personal": "个人资料",
+ "pages.pay.browser": "支付",
+ "pages.pay.result": "支付结果",
+ "pages.setting.index": "设置",
+ "pages.verify.index": "核销台",
+ "pages.verify.verify": "核销",
+ "pages.verify.detail": "核销详情",
+ "pages.verify.record": "核销记录",
+ "pages.webview.index": "",
+ "tourism.pages.way.list": "线路列表",
+ "tourism.pages.way.detail": "线路详情",
+ "tourism.pages.way.order": "线路订单",
+ "tourism.pages.hotel.list": "酒店列表",
+ "tourism.pages.hotel.detail": "酒店详情",
+ "tourism.pages.hotel.order": "酒店订单",
+ "tourism.pages.scenic.list": "景点列表",
+ "tourism.pages.scenic.detail": "景点详情",
+ "tourism.pages.scenic.order": "景点订单",
+ "tourism.pages.order.list": "旅游订单",
+ "tourism.pages.order.detail": "订单详情",
+ "tourism.pages.verify.index": "核销",
+ "tourism.pages.verify.record": "核销记录",
+ "tourism.pages.verify.detail": "核销详情",
+ "vipcard.pages.verify.index": "核销",
+ "vipcard.pages.verify.record": "核销记录",
+ "vipcard.pages.verify.detail": "核销详情",
+ "vipcard.pages.order.payment": "订单结算",
+ "vipcard.pages.order.list": "订单列表",
+ "vipcard.pages.order.my_reserved": "我的预约",
+ "vipcard.pages.order.my_reserved_detail": "我的预约详情",
+ "vipcard.pages.order.my_card": "我的卡项",
+ "vipcard.pages.order.detail": "订单详情",
+ "vipcard.pages.service.list": "项目列表",
+ "vipcard.pages.card.list": "卡项列表",
+ "vipcard.pages.card.detail": "卡项详情",
+ "recharge.pages.recharge": "充值",
+ "recharge.pages.recharge_record": "充值记录",
+ "recharge.pages.recharge_record_detail": "充值记录详情",
+ "shop.pages.goods.search": "搜索",
+ "shop.pages.goods.cart": "购物车",
+ "shop.pages.goods.category": "商品分类",
+ "shop.pages.goods.detail": "商品详情",
+ "shop.pages.goods.list": "商品列表",
+ "shop.pages.member.index": "个人中心",
+ "shop.pages.member.my_coupon": "我的优惠券",
+ "shop.pages.order.list": "订单列表",
+ "shop.pages.order.detail": "订单详情",
+ "shop.pages.order.payment": "待付款订单",
+ "shop.pages.pay.index": "待支付",
+ "shop.pages.pay.result": "支付成功",
+ "shop.pages.evaluate.order_evaluate": "商品评价",
+ "shop.pages.evaluate.order_evaluate_view": "商品评价",
+ "shop.pages.evaluate.list": "评价列表",
+ "shop.pages.coupon.list": "优惠券列表",
+ "shop.pages.coupon.detail": "优惠券详情",
+ "shop.pages.discount.list": "限时折扣",
+ "shop.pages.refund.list": "退款列表",
+ "shop.pages.refund.detail": "退款详情",
+ "shop.pages.refund.apply": "申请退款",
+ "shop.pages.refund.edit_apply": "编辑退款信息",
+ "shop.pages.refund.log": "协商记录",
+ "shop.pages.point.index": "积分商城",
+ "shop.pages.point.list": "积分商品列表",
+ "shop.pages.point.detail": "积分商品详情",
+ "shop.pages.point.payment": "待付款订单",
+ "shop.pages.point.order_list": "积分兑换记录",
+ "cms.pages.list": "资讯中心",
+ "cms.pages.detail": "文章详情"
+}
\ No newline at end of file
diff --git a/src/locale/zh-Hans/common.json b/src/locale/zh-Hans/common.json
new file mode 100644
index 0000000..e1b145b
--- /dev/null
+++ b/src/locale/zh-Hans/common.json
@@ -0,0 +1,97 @@
+{
+ "requestFail": "请求失败",
+ "notInDomainList": "不在request 合法域名列表中",
+ "baseUrlError": " 接口请求错误,请检查VITE_APP_BASE_URL参数配置或者伪静态配置",
+ "currency": "¥",
+ "getSmsCode": "获取验证码",
+ "smsCodeChangeText": "秒后重新获取",
+ "captchaTitle": "请完成验证",
+ "confirm": "确认",
+ "cancel": "取消",
+ "save": "保存",
+ "delete": "删除",
+ "captchaPlaceholder": "请输入验证码",
+ "mobilePlaceholder": "请输入手机号码",
+ "mobileError": "请输入正确的手机号",
+ "codePlaceholder": "请输入手机验证码",
+ "memberCenter": "个人中心",
+ "userAgreement": "用户协议",
+ "privacyAgreement": "隐私协议",
+ "nickname": "昵称",
+ "nicknamePlaceholder": "请输入昵称",
+ "headimg": "头像",
+ "headimgPlaceholder": "请设置头像",
+ "getAvatarNickname": "获取您的昵称头像",
+ "getAvatarNicknameTips": "获取用户头像、昵称完善个人资料,主要用于向用户提供具有辨识度的用户中心界面",
+ "point": "积分",
+ "balance": "余额",
+ "login": "登录",
+ "register": "注册",
+ "complete": "完成",
+ "close": "关闭",
+ "pay": {
+ "orderInfo": "订单信息",
+ "confirmPay": "确认支付",
+ "payTitle": "确认付款",
+ "notHavePayType": "没有可用的支付方式",
+ "notObtainedInfo": "未获取到支付信息",
+ "paymentDocuments": "该支付单据",
+ "paySuccess": "支付成功",
+ "payFail": "支付失败",
+ "completePay": "已完成支付",
+ "incompletePay": "未完成支付",
+ "getting": "获取支付结果中"
+ },
+ "myBalance": "我的余额",
+ "myPoint": "我的积分",
+ "customerService": "联系客服",
+ "siteClose": "站点已关闭",
+ "noSite": "站点不存在",
+ "scenic": "景点",
+ "seeMore": "查看更多",
+ "way": "线路",
+ "hotel": "酒店",
+ "rise": "起",
+ "cardReserve": "项目预约",
+ "card": "办理次卡",
+ "memberName": "会员名称",
+ "memberCode": "会员码",
+ "reserve": "预约",
+ "reserveSuccess": "预约成功",
+ "cardLink": "次卡",
+ "myLink": "我的",
+ "siteStatus": "站点状态",
+ "reserveBtn": "去抢购",
+ "cardBtn": "办理",
+ "soldOut": "已售",
+ "unpaidOrder": "待支付",
+ "waitingOrder": "待使用",
+ "remainOrder": "已完成",
+ "allOrder": "全部订单",
+ "myOrder": "我的订单",
+ "orderNo": "订单号",
+ "actualPayment": "实付款",
+ "orderClose": "关闭订单",
+ "orderFinish": "确认收货",
+ "orderDetail": "详情",
+ "wxPrivacyPopup": {
+ "title": "用户隐私保护提示",
+ "descBefore": "感谢您使用本小程序,在使用前您应当阅读并同意",
+ "descAfter": "当点击同意并继续时,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力;如您不同意,将无法继续使用小程序相关功能。",
+ "disagree": "不同意",
+ "agree": "同意并继续",
+ "contractName": "用户隐私保护指引",
+ "disagreeDesc": "未同意隐私协议,无法使用相关功能"
+ },
+ "starLevel": "星级",
+ "star": "星",
+ "emptyAddress": "暂无收货地址,请先创建地址",
+ "addAddress": "新增收货地址",
+ "selectAddress": "选择地址",
+ "coupon": "优惠劵",
+ "shop.orderNo": "订单号",
+ "shop.actualPayment": "实付款",
+ "shop.orderClose": "关闭订单",
+ "shop.orderFinish": "确认收货",
+ "shop.coupon": "优惠劵"
+}
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..34bd604
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,22 @@
+import App from './App'
+import { createSSRApp } from 'vue'
+import * as Pinia from 'pinia'
+import locale from './locale'
+import uviewPlus from 'uview-plus'
+import '@/styles/index.scss'
+import 'virtual:windi.css'
+import { uniStorage } from './utils/storage'
+import mixin from './utils/mixin'
+
+export function createApp() {
+ const app = createSSRApp(App)
+ app.use(Pinia.createPinia())
+ app.use(locale)
+ app.use(uviewPlus)
+ app.use(mixin)
+ uniStorage()
+ return {
+ app,
+ Pinia
+ }
+}
diff --git a/src/manifest.json b/src/manifest.json
new file mode 100644
index 0000000..88f715e
--- /dev/null
+++ b/src/manifest.json
@@ -0,0 +1,95 @@
+{
+ "name" : "选举系统",
+ "appid" : "__UNI__19EBD7D",
+ "description" : "",
+ "versionName" : "1.0.0",
+ "versionCode" : "100",
+ "transformPx" : false,
+ /* 5+App特有相关 */
+ "app-plus" : {
+ "usingComponents" : true,
+ "nvueStyleCompiler" : "uni-app",
+ "compilerVersion" : 3,
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : true,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ /* 模块配置 */
+ "modules" : {},
+ /* 应用发布信息 */
+ "distribute" : {
+ /* android打包配置 */
+ "android" : {
+ "permissions" : [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ /* ios打包配置 */
+ "ios" : {},
+ /* SDK配置 */
+ "sdkConfigs" : {}
+ }
+ },
+ /* 快应用特有相关 */
+ "quickapp" : {},
+ /* 小程序特有相关 */
+ "mp-weixin" : {
+ "appid" : "wx0d3f0804eb935a8d",
+ "setting" : {
+ "urlCheck" : false,
+ "es6" : true,
+ "minified" : true
+ },
+ "usingComponents" : true,
+ "permission" : {
+ "scope.writePhotosAlbum" : {
+ "desc" : "为了更好地为您提供服务"
+ }
+ },
+ "requiredPrivateInfos" : [ "chooseLocation", "getLocation", "chooseAddress" ],
+ "__usePrivacyCheck__" : true
+ },
+ "mp-alipay" : {
+ "usingComponents" : true
+ },
+ "mp-baidu" : {
+ "usingComponents" : true
+ },
+ "mp-toutiao" : {
+ "usingComponents" : true
+ },
+ "uniStatistics" : {
+ "enable" : false
+ },
+ "vueVersion" : "3",
+ "h5" : {
+ "router" : {
+ "mode" : "history",
+ "base" : "/wap/"
+ },
+ "sdkConfigs" : {
+ "maps" : {
+ "qqmap" : {
+ "key" : ""
+ }
+ }
+ }
+ },
+ "fallbackLocale" : "zh-Hans"
+}
diff --git a/src/pages.json b/src/pages.json
new file mode 100644
index 0000000..27ac9df
--- /dev/null
+++ b/src/pages.json
@@ -0,0 +1,146 @@
+{
+ "pages": [{
+ "path": "app/pages/votingElection/index",
+ "style": {
+ "navigationBarTitleText": "投票选举"
+ }
+ },
+ {
+ "path": "app/pages/electionList/index",
+ "style": {
+ "navigationBarTitleText": "选举列表"
+ }
+ },
+ {
+ "path": "app/pages/electionResults/index",
+ "style": {
+ "navigationBarTitleText": "选举结果",
+ // "navigationStyle": "custom" ,// 隐藏系统导航栏
+ "navigationBarTextStyle": "white"
+ }
+ },
+ {
+ "path": "app/pages/myElection/index",
+ "style": {
+ "navigationBarTitleText": "我的选举",
+ // "navigationStyle": "custom" ,// 隐藏系统导航栏
+ "navigationBarTextStyle": "white"
+ }
+ },
+ {
+ "path": "app/pages/mine/index",
+ "style": {
+ "navigationBarTitleText": "个人信息",
+ "navigationStyle": "default"
+ }
+ },
+ {
+ "path": "app/pages/auth/agreement",
+ "style": {
+ "navigationBarTitleText": "%pages.auth.agreement%"
+ }
+ },
+ {
+ "path": "app/pages/auth/bind",
+ "style": {
+ "navigationBarTitleText": "%pages.auth.bind%"
+ }
+ },
+ {
+ "path": "app/pages/auth/login",
+ "style": {
+ "navigationBarTitleText": "%pages.auth.login%"
+ }
+ },
+ {
+ "path": "app/pages/auth/register",
+ "style": {
+ "navigationBarTitleText": "%pages.auth.register%"
+ }
+ },
+ {
+ "path": "app/pages/auth/resetpwd",
+ "style": {
+ "navigationBarTitleText": "%pages.auth.resetpwd%"
+ }
+ }
+ ],
+ "globalStyle": {
+ "navigationBarTextStyle": "white",
+ "navigationBarTitleText": "",
+ "navigationBarBackgroundColor": "#2563EB",
+ "backgroundColor": "#F8F8F8",
+ "backgroundColorTop": "#F8F8F8",
+ "backgroundColorBottom": "#F8F8F8"
+ },
+ "tabBar": {
+ // "list": [{
+ // "pagePath": "app/pages/index/index"
+ // },
+ // {
+ // "pagePath": "app/pages/member/index"
+ // }
+ // ],
+ "color": "#9CA3AF",
+ "selectedColor": "#2563EB",
+ "borderStyle": "white",
+ "backgroundColor": "#F9FAFB",
+ "list": [{
+ "pagePath": "app/pages/votingElection/index",
+ "iconPath": "static/img/tpxj.png",
+ "selectedIconPath": "static/img/tpxj-select.png",
+ "text": "投票选举"
+ },
+ {
+ "pagePath": "app/pages/electionList/index",
+ "iconPath": "static/img/xjlb.png",
+ "selectedIconPath": "static/img/xjlb-select.png",
+ "text": "选举列表"
+ },
+ {
+ "pagePath": "app/pages/electionResults/index",
+ "iconPath": "static/img/xjjg.png",
+ "selectedIconPath": "static/img/xjjg-select.png",
+ "text": "选举结果"
+ },
+ {
+ "pagePath": "app/pages/myElection/index",
+ "iconPath": "static/img/wdxj.png",
+ "selectedIconPath": "static/img/wdxj-select.png",
+ "text": "我的选举"
+ },
+ {
+ "pagePath": "app/pages/mine/index",
+ "iconPath": "static/img/grxx.png",
+ "selectedIconPath": "static/img/grxx-select.png",
+ "text": "个人信息"
+ }
+ ]
+ },
+ "uniIdRouter": {},
+ "easycom": {
+ "autoscan": true,
+ "custom": {
+ "diy-group": "@/addon/components/diy/group/index.vue",
+ "fixed-group": "@/addon/components/fixed/group/index.vue",
+ "^u-(.*)": "uview-plus/components/u-$1/u-$1.vue",
+ "^up-(.*)": "uview-plus/components/u-$1/u-$1.vue",
+ "^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue",
+ "diy-(\W.*)": "@/app/components/diy/$1/index.vue",
+ "fixed-(\W.*)": "@/app/components/fixed/$1/index.vue"
+ }
+ },
+ "condition": { //模式配置,仅开发期间生效
+ "current": 0, //当前激活的模式(list 的索引项)
+ "list": [{
+ "name": "", //模式名称
+ "path": "", //启动页面,必选
+ "query": "" //启动参数,在页面的onLoad函数里面得到
+ }]
+ },
+ "permission": {
+ "scope.userLocation": {
+ "desc": "获取你当前位置信息"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/static/img/grxx-select.png b/src/static/img/grxx-select.png
new file mode 100644
index 0000000..3879727
Binary files /dev/null and b/src/static/img/grxx-select.png differ
diff --git a/src/static/img/grxx.png b/src/static/img/grxx.png
new file mode 100644
index 0000000..ac64fc1
Binary files /dev/null and b/src/static/img/grxx.png differ
diff --git a/src/static/img/tpxj-select.png b/src/static/img/tpxj-select.png
new file mode 100644
index 0000000..ea14d8e
Binary files /dev/null and b/src/static/img/tpxj-select.png differ
diff --git a/src/static/img/tpxj.png b/src/static/img/tpxj.png
new file mode 100644
index 0000000..07e7f1f
Binary files /dev/null and b/src/static/img/tpxj.png differ
diff --git a/src/static/img/wdxj-select.png b/src/static/img/wdxj-select.png
new file mode 100644
index 0000000..8825367
Binary files /dev/null and b/src/static/img/wdxj-select.png differ
diff --git a/src/static/img/wdxj.png b/src/static/img/wdxj.png
new file mode 100644
index 0000000..1f938b2
Binary files /dev/null and b/src/static/img/wdxj.png differ
diff --git a/src/static/img/xjjg-select.png b/src/static/img/xjjg-select.png
new file mode 100644
index 0000000..e4a9dc4
Binary files /dev/null and b/src/static/img/xjjg-select.png differ
diff --git a/src/static/img/xjjg.png b/src/static/img/xjjg.png
new file mode 100644
index 0000000..e4a9dc4
Binary files /dev/null and b/src/static/img/xjjg.png differ
diff --git a/src/static/img/xjlb-select.png b/src/static/img/xjlb-select.png
new file mode 100644
index 0000000..a4863bb
Binary files /dev/null and b/src/static/img/xjlb-select.png differ
diff --git a/src/static/img/xjlb.png b/src/static/img/xjlb.png
new file mode 100644
index 0000000..caeac2f
Binary files /dev/null and b/src/static/img/xjlb.png differ
diff --git a/src/static/mantx.png b/src/static/mantx.png
new file mode 100644
index 0000000..337c98b
Binary files /dev/null and b/src/static/mantx.png differ
diff --git a/src/static/womantx.png b/src/static/womantx.png
new file mode 100644
index 0000000..de1a0b3
Binary files /dev/null and b/src/static/womantx.png differ
diff --git a/src/stores/config.ts b/src/stores/config.ts
new file mode 100644
index 0000000..4618983
--- /dev/null
+++ b/src/stores/config.ts
@@ -0,0 +1,80 @@
+import { defineStore } from 'pinia'
+import { getConfig } from '@/app/api/auth'
+import { getTabbarList } from '@/app/api/diy'
+import { cloneDeep } from 'lodash-es'
+
+interface loginConfig {
+ is_username: number | boolean,
+ is_mobile: number | boolean,
+ is_auth_register: number | boolean,
+ is_bind_mobile: number | boolean,
+ agreement_show: number | boolean
+}
+
+interface tabbarConfig {
+ backgroundColor: string,
+ textColor: string,
+ textHoverColor: string,
+ list: AnyObject[]
+}
+
+interface Config {
+ login: loginConfig,
+ tabbarList:any,
+ tabbar: tabbarConfig | null,
+ addon: String,
+ themeColor:String
+}
+
+const useConfigStore = defineStore('config', {
+ state: (): Config => {
+ return {
+ login: {
+ is_username: 0,
+ is_mobile: 0,
+ is_auth_register: 0,
+ is_bind_mobile: 0,
+ agreement_show: 0
+ },
+ tabbarList:{},
+ tabbar: null,
+ addon: '',
+ themeColor:''
+ }
+ },
+ actions: {
+ async getLoginConfig() {
+ await getConfig().then((res: responseResult) => {
+ this.login.is_username = parseInt(res.data.is_username)
+ this.login.is_mobile = parseInt(res.data.is_mobile)
+ this.login.is_auth_register = parseInt(res.data.is_auth_register)
+ this.login.is_bind_mobile = parseInt(res.data.is_bind_mobile)
+ this.login.agreement_show = parseInt(res.data.agreement_show)
+ }).catch(() => {
+ })
+ },
+ async getTabbarConfig() {
+ await getTabbarList({}).then((res:any)=>{
+ this.tabbarList = res.data;
+ }).catch(()=>{
+ })
+ },
+ // 获取主色调
+ getThemeColor() {
+ let themeColorStorage = uni.getStorageSync('current_theme_color');
+ if (!this.themeColor && themeColorStorage) {
+ this.themeColor = JSON.parse(themeColorStorage);
+ }
+ if (this.themeColor) {
+ let style = '';
+ for (let k in this.themeColor) {
+ style += `${k}:${this.themeColor[k]};`;
+ }
+ return style;
+ }
+ return '';
+ }
+ }
+})
+
+export default useConfigStore
diff --git a/src/stores/member.ts b/src/stores/member.ts
new file mode 100644
index 0000000..39a40a3
--- /dev/null
+++ b/src/stores/member.ts
@@ -0,0 +1,49 @@
+import { defineStore } from 'pinia'
+import { setToken, removeToken, redirect } from '@/utils/common'
+import { getMemberInfo } from '@/app/api/member'
+import { logout } from '@/app/api/auth'
+
+interface Member {
+ token : string | null
+ info : AnyObject | null
+}
+
+const useMemberStore = defineStore('member', {
+ state: () : Member => {
+ return {
+ token: uni.getStorageSync(import.meta.env.VITE_REQUEST_STORAGE_TOKEN_KEY),
+ info: null
+ }
+ },
+ actions: {
+ async setToken(token : string) {
+ this.token = token
+ setToken(token)
+ await this.getMemberInfo()
+ },
+ async getMemberInfo() {
+ if (!this.token) return
+ await getMemberInfo().then((res: any) => {
+ this.info = res.data
+ uni.setStorageSync('wap_member_id',res.data.member_id)
+ }).catch(async () => {
+ await this.logout()
+ })
+ },
+ async logout(isRedirect : boolean = false) {
+ if (!this.token) return
+ this.token = ''
+ this.info = null
+ uni.setStorageSync('autoLoginLock', true)
+ await logout().then(() => {
+ removeToken()
+ isRedirect && redirect({ url: '/app/pages/index/index', mode: 'switchTab' })
+ }).catch(() => {
+ removeToken()
+ isRedirect && redirect({ url: '/app/pages/index/index', mode: 'switchTab' })
+ })
+ }
+ }
+})
+
+export default useMemberStore
diff --git a/src/stores/system.ts b/src/stores/system.ts
new file mode 100644
index 0000000..d3138c5
--- /dev/null
+++ b/src/stores/system.ts
@@ -0,0 +1,57 @@
+import {defineStore} from 'pinia'
+import {getSiteInfo, getMap} from '@/app/api/system'
+import {redirect} from '@/utils/common'
+
+interface System {
+ site: AnyObject | null,
+ siteApps: string[],
+ siteAddons: string[],
+ currRoute: string,
+ location: Object | null, // 定位信息
+ mapConfig: Object
+}
+
+const useSystemStore = defineStore('system', {
+ state: (): System => {
+ return {
+ site: null,
+ siteApps: [],
+ siteAddons: [],
+ currRoute: '',
+ location: null,
+ mapConfig: {
+ is_open: 1,
+ valid_time: 0
+ }
+ }
+ },
+ actions: {
+ async getSiteInfoFn() {
+ await getSiteInfo().then((res: any) => {
+ this.site = res.data
+ this.siteApps = res.data.app
+ this.siteAddons = res.data.site_addons.map((item: AnyObject) => {
+ return item.key
+ })
+ }).catch((err) => {
+ })
+ },
+ async getMapFn() {
+ // 获取地图配置
+ await getMap().then((res: any) => {
+ this.mapConfig.is_open = res.data.is_open;
+ this.mapConfig.valid_time = res.data.valid_time;
+ uni.setStorageSync('mapConfig', this.mapConfig);
+ })
+ },
+ setLocation(value: Object) {
+ var date = new Date();
+ date.setSeconds(60 * this.mapConfig.valid_time);
+ value.valid_time = date.getTime() / 1000; // 定位信息 5分钟内有效,过期后将重新获取定位信息
+ this.location = value;
+ uni.setStorageSync('location', value); // 初始化数据调用
+ }
+ }
+})
+
+export default useSystemStore
diff --git a/src/styles/account_info.scss b/src/styles/account_info.scss
new file mode 100644
index 0000000..111ee03
--- /dev/null
+++ b/src/styles/account_info.scss
@@ -0,0 +1,41 @@
+.account-info-wrap{
+ @apply bg-[#F5F6FA] min-h-[100vh];
+ .account-info-head{
+ @apply relative h-40;
+ .name{
+ @apply ml-4 pt-7 text-white text-lg mb-3;
+ }
+ .content{
+ @apply absolute bg-white left-3 right-3 rounded-lg p-5;
+ .money{
+ @apply text-xl font-bold;
+ }
+ .text{
+ @apply text-xs text-slate-500 mt-2;
+ }
+ .money-wrap{
+ @apply mt-5 flex;
+ .money-item{
+ @apply flex-1;
+ }
+ .money{
+ @apply text-lg;
+ }
+ .text{
+ @apply mt-1;
+ }
+ }
+ }
+ }
+ .account-info-btn{
+ @apply flex mt-24 ml-3 mr-3;
+ .btn{
+ &:first-of-type{
+ @apply mr-1 rounded;
+ }
+ &:last-of-type{
+ @apply ml-1 rounded;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/styles/common.css b/src/styles/common.css
new file mode 100644
index 0000000..3bc2acc
--- /dev/null
+++ b/src/styles/common.css
@@ -0,0 +1 @@
+:root,page{--primary-color: #007aff;--primary-color-dark: #398ade;--primary-color-disabled: #9acafc;--primary-color-light: #ecf5ff;--page-bg-color: #f4f7f6}@font-face{font-family:"myFont";src:url("data:font/ttf;charset=utf-8;base64,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/+8ALP/LADH/7wAz/+8ANf/3ADYACgA3/8sAOAAKADkACgA6AAcAOwAKAED/3QBC/90AQ//dAET/3QBF//QARv/dAEz/6gBN/+oATv/dAE//6gBQ/90AUf/qAFL/3wBT//UAVP/sAFUACwBX//UAWP/1AFn/7wAPACMACAAl//IAKf/yADH/8gAz//IAQv/1AEP/9QBE//UARv/1AE7/9QBQ//UAVP/1AFX/8gBW//IAWP/yAAIAVf/3AFj/9wAEAFX/+gBX//gAWP/6AFn/+AACAFX/9QBY//kABQBC//MAQ//zAET/8wBG//MAUP/zAAYAQv/1AEP/9QBE//UARv/1AEj/9QBQ//UABABV//gAV//1AFj/+ABZ//cACgBA/+QAQv/kAEP/6gBE/+QARQALAEb/6gBO/+EAUP/qAFMAHABYAAoAAgBE//UATv/uAAgAQP/4AEL/+ABD//gARP/1AEUACABG//gATv/4AFD/+AAGAEL/9QBD//UARP/1AEb/9QBO/+oAUP/1AAgAQP/4AEL/+ABD//gARP/4AEUACABG//gATv/vAFD/+AAGAEL/9wBD//cARP/3AEb/9wBO//cAUP/3AAIACwAjACgAAAAqADQABgA2ADwAEQBAAEEAGABEAEUAGgBKAEoAHABOAE8AHQBRAFEAHwBTAFMAIABVAFUAIQBXAFkAIgAAAAAAAQAAAADVpCcIAAAAANbRI74AAAAA2D0KNg==") format("truetype");src:url("@/styles/custom.ttf") format("truetype")}.price-font{font-family:"myFont","-apple-system","BlinkMacSystemFont","Helvetica Neue","Helvetica","Segoe UI","Arial","Roboto","PingFang SC","Hiragino Sans GB","Microsoft Yahei","sans-serif"}uni-page-body{line-height:1.8;font-family:"PingFang SC","Roboto Medium","-apple-system","BlinkMacSystemFont","Helvetica Neue","Helvetica","Segoe UI","Arial","Roboto","PingFang SC","Hiragino Sans GB","Microsoft Yahei","sans-serif";font-size:28rpx;color:#303133}input,.uni-input{font-size:28rpx}button{font-size:28rpx;border-radius:10rpx;line-height:2.8}button:after,uni-button:after{border:none !important}button[type=primary],uni-button[type=primary]{background-color:var(--primary-color) !important}.using-hidden{word-break:break-all;text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;white-space:break-spaces}.multi-hidden{word-break:break-all;text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.mb-ios{margin-bottom:constant(safe-area-inset-bottom);margin-bottom:env(safe-area-inset-bottom)}.pb-ios{padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.u-popup .u-transition{touch-action:none}.u-button.u-button--active:before{opacity:0 !important}.u-popup[type=bottom] .u-popup__content,.u-popup .u-slide-up-enter-to .u-popup__content{border-top-left-radius:16rpx;border-top-right-radius:16rpx;overflow:hidden}.u-popup :deep(.u-transition){z-index:999 !important}.u-cell-group .u-cell__body__content{line-height:1}.u-cell-group .u-cell__right-icon-wrap .uicon-arrow-right{font-size:28rpx !important;color:#999}.flex{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:center;justify-content:center}.flex-center{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:center;justify-content:center}.flex-center-start{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:center;justify-content:flex-start}.flex-center-center{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:center;justify-content:center}.flex-center-end{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:center;justify-content:flex-end}.flex-center-between{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:center;justify-content:space-between}.flex-center-around{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:center;justify-content:space-around}.flex-center-evenly{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:center;justify-content:space-evenly}.flex-start{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-start;justify-content:center}.flex-start-start{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-start;justify-content:flex-start}.flex-start-center{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-start;justify-content:center}.flex-start-end{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-start;justify-content:flex-end}.flex-start-between{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-start;justify-content:space-between}.flex-start-around{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-start;justify-content:space-around}.flex-start-evenly{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-start;justify-content:space-evenly}.flex-end{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-end;justify-content:center}.flex-end-start{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-end;justify-content:flex-start}.flex-end-center{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-end;justify-content:center}.flex-end-end{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-end;justify-content:flex-end}.flex-end-between{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-end;justify-content:space-between}.flex-end-around{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-end;justify-content:space-around}.flex-end-evenly{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:flex-end;justify-content:space-evenly}.row{flex-direction:row}.row-reverse{flex-direction:row-reverse}.column{flex-direction:column}.column-reverse{flex-direction:column-reverse}.wrap{flex-wrap:wrap}.nowrap{flex-wrap:nowrap}[class*=flex-].row,[class^=flex].row{flex-direction:row}[class*=flex-].row-reverse,[class^=flex].row-reverse{flex-direction:row-reverse}[class*=flex-].column,[class^=flex].column{flex-direction:column}[class*=flex-].column-reverse,[class^=flex].column-reverse{flex-direction:column-reverse}[class*=flex-].wrap,[class^=flex].wrap{flex-wrap:wrap}[class*=flex-].nowrap,[class^=flex].nowrap{flex-wrap:nowrap}.flex1{flex:1}.flex2{flex:2}.flex3{flex:3}.flex4{flex:4}.flex5{flex:5}.text-ellipsis-3,.text-ellipsis-2,.text-ellipsis-1,.text-ellipsis{text-overflow:ellipsis;white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.text-ellipsis{--line: 1;-webkit-line-clamp:var(--line)}.text-ellipsis-1{-webkit-line-clamp:1}.text-ellipsis-2{-webkit-line-clamp:2}.text-ellipsis-3{-webkit-line-clamp:3}
\ No newline at end of file
diff --git a/src/styles/common.scss b/src/styles/common.scss
new file mode 100644
index 0000000..ce5d1c7
--- /dev/null
+++ b/src/styles/common.scss
@@ -0,0 +1,253 @@
+:root, page {
+ --primary-color: #007aff;
+ --primary-color-dark: #398ade;
+ --primary-color-disabled: #9acafc;
+ --primary-color-light: #ecf5ff;
+ --page-bg-color: #f4f7f6;
+}
+
+// 字体设置
+@font-face {
+ font-family: 'myFont';
+ /* #ifdef MP */
+ src: url('data:font/ttf;charset=utf-8;base64,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/+8ALP/LADH/7wAz/+8ANf/3ADYACgA3/8sAOAAKADkACgA6AAcAOwAKAED/3QBC/90AQ//dAET/3QBF//QARv/dAEz/6gBN/+oATv/dAE//6gBQ/90AUf/qAFL/3wBT//UAVP/sAFUACwBX//UAWP/1AFn/7wAPACMACAAl//IAKf/yADH/8gAz//IAQv/1AEP/9QBE//UARv/1AE7/9QBQ//UAVP/1AFX/8gBW//IAWP/yAAIAVf/3AFj/9wAEAFX/+gBX//gAWP/6AFn/+AACAFX/9QBY//kABQBC//MAQ//zAET/8wBG//MAUP/zAAYAQv/1AEP/9QBE//UARv/1AEj/9QBQ//UABABV//gAV//1AFj/+ABZ//cACgBA/+QAQv/kAEP/6gBE/+QARQALAEb/6gBO/+EAUP/qAFMAHABYAAoAAgBE//UATv/uAAgAQP/4AEL/+ABD//gARP/1AEUACABG//gATv/4AFD/+AAGAEL/9QBD//UARP/1AEb/9QBO/+oAUP/1AAgAQP/4AEL/+ABD//gARP/4AEUACABG//gATv/vAFD/+AAGAEL/9wBD//cARP/3AEb/9wBO//cAUP/3AAIACwAjACgAAAAqADQABgA2ADwAEQBAAEEAGABEAEUAGgBKAEoAHABOAE8AHQBRAFEAHwBTAFMAIABVAFUAIQBXAFkAIgAAAAAAAQAAAADVpCcIAAAAANbRI74AAAAA2D0KNg==') format('truetype');
+ /* #endif */
+ /* #ifndef MP */
+ src: url('@/styles/custom.ttf') format('truetype');
+ /* #endif */
+}
+
+.price-font{
+ font-family: 'myFont','-apple-system', 'BlinkMacSystemFont', 'Helvetica Neue', 'Helvetica', 'Segoe UI', 'Arial', 'Roboto', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft Yahei','sans-serif';
+}
+// 全局基础样式
+uni-page-body {
+ line-height: 1.8;
+ font-family: 'PingFang SC', 'Roboto Medium', '-apple-system', 'BlinkMacSystemFont', 'Helvetica Neue', 'Helvetica', 'Segoe UI', 'Arial', 'Roboto', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft Yahei','sans-serif';
+ font-size: 28rpx;
+ color: #303133;
+}
+input, .uni-input {
+ font-size: 28rpx;
+}
+button{
+ font-size: 28rpx;
+ border-radius: 10rpx;
+ line-height: 2.8;
+}
+button:after,uni-button:after {
+ border: none !important;
+}
+button[type='primary'],uni-button[type='primary']{
+ background-color: var(--primary-color) !important;
+}
+
+/* 单行超出隐藏 */
+.using-hidden {
+ word-break: break-all;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ display: -webkit-box;
+ -webkit-line-clamp: 1;
+ -webkit-box-orient: vertical;
+ white-space: break-spaces;
+}
+
+/* 多行超出隐藏 */
+.multi-hidden {
+ word-break: break-all;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+}
+
+.mb-ios{
+ margin-bottom:constant(safe-area-inset-bottom);
+ margin-bottom:env(safe-area-inset-bottom);
+}
+
+.pb-ios{
+ padding-bottom:constant(safe-area-inset-bottom);
+ padding-bottom:env(safe-area-inset-bottom);
+}
+
+// 防止穿透
+.u-popup .u-transition {
+ touch-action: none;
+}
+
+// 去掉uveiew 点击时变灰【针对于微信小程序处理,官方提供的方法,在小程序中不起作用】
+.u-button.u-button--active:before{
+ opacity: 0 !important;
+}
+
+/****************** 弹窗-start *********************/
+// 弹窗圆角[从下往上弹窗]
+.u-popup[type="bottom"] .u-popup__content, .u-popup .u-slide-up-enter-to .u-popup__content{
+ border-top-left-radius: 16rpx;
+ border-top-right-radius: 16rpx;
+ overflow: hidden;
+}
+// 防止覆盖住图片放大
+.u-popup :deep(.u-transition){
+ z-index: 999 !important;
+}
+/****************** 弹窗-end *********************/
+
+/****************** u-cell-start *********************/
+.u-cell-group .u-cell__body__content{
+ line-height: 1;
+}
+.u-cell-group .u-cell__right-icon-wrap .uicon-arrow-right{
+ font-size: 28rpx !important;
+ color: #999;
+}
+/****************** u-cell-end *********************/
+
+
+
+/*============================= 弹性盒子 =============================*/
+@mixin displayFlex($align: center, $justify: center) {
+ display: flex;
+ flex-wrap: nowrap;
+ flex-direction: row;
+ align-items: $align;
+ justify-content: $justify;
+}
+
+@mixin alignItems($align: center) {
+ @include displayFlex($align, center);
+
+ &-start {
+ @include displayFlex($align, flex-start);
+ }
+
+ &-center {
+ @include displayFlex($align, center);
+ }
+
+ &-end {
+ @include displayFlex($align, flex-end);
+ }
+
+ &-between {
+ @include displayFlex($align, space-between);
+ }
+
+ &-around {
+ @include displayFlex($align, space-around);
+ }
+
+ &-evenly {
+ @include displayFlex($align, space-evenly);
+ }
+}
+
+.flex {
+ @include displayFlex;
+
+ &-center {
+ @include alignItems(center);
+ }
+
+ &-start {
+ @include alignItems(flex-start);
+ }
+
+ &-end {
+ @include alignItems(flex-end);
+ }
+}
+
+/* #ifdef MP-TOUTIAO */
+.row {
+ flex-direction: row;
+}
+
+.row-reverse {
+ flex-direction: row-reverse;
+}
+
+.column {
+ flex-direction: column;
+}
+
+.column-reverse {
+ flex-direction: column-reverse;
+}
+
+.wrap {
+ flex-wrap: wrap;
+}
+
+.nowrap {
+ flex-wrap: nowrap;
+}
+/* #endif */
+
+[class*="flex-"],
+[class^="flex"] {
+ &.row {
+ flex-direction: row;
+ }
+
+ &.row-reverse {
+ flex-direction: row-reverse;
+ }
+
+ &.column {
+ flex-direction: column;
+ }
+
+ &.column-reverse {
+ flex-direction: column-reverse;
+ }
+
+ &.wrap {
+ flex-wrap: wrap;
+ }
+
+ &.nowrap {
+ flex-wrap: nowrap;
+ }
+}
+
+// 生成flex1等占位
+@for $i from 1 through 5 {
+ .flex#{$i} {
+ flex: #{$i};
+ }
+}
+
+/*============================= 文字溢出 =============================*/
+
+%text-ellipsis-lint {
+ text-overflow: ellipsis;
+ white-space: normal;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+}
+
+.text-ellipsis {
+ --line: 1;
+ @extend %text-ellipsis-lint;
+ -webkit-line-clamp: var(--line);
+
+ &-1 {
+ @extend %text-ellipsis-lint;
+ -webkit-line-clamp: 1;
+ }
+
+ &-2 {
+ @extend %text-ellipsis-lint;
+ -webkit-line-clamp: 2;
+ }
+
+ &-3 {
+ @extend %text-ellipsis-lint;
+ -webkit-line-clamp: 3;
+ }
+}
diff --git a/src/styles/custom.ttf b/src/styles/custom.ttf
new file mode 100644
index 0000000..6483758
Binary files /dev/null and b/src/styles/custom.ttf differ
diff --git a/src/styles/diy.scss b/src/styles/diy.scss
new file mode 100644
index 0000000..030ca35
--- /dev/null
+++ b/src/styles/diy.scss
@@ -0,0 +1,28 @@
+.bg-index {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ background-size: contain;
+ background-repeat: no-repeat !important;
+}
+
+:deep(.u-tabbar__placeholder) {
+ display: none !important;
+}
+
+.diy-template-wrap {
+ ::v-deep .diy-group {
+ > .draggable-element.top-fixed-diy {
+ display: none;
+ }
+ }
+
+ /* #ifdef H5 */
+ :deep(.child-diy-template-wrap) {
+ .diy-group .draggable-element.top-fixed-diy {
+ display: block;
+ }
+ }
+
+ /* #endif */
+}
\ No newline at end of file
diff --git a/src/styles/iconfont.css b/src/styles/iconfont.css
new file mode 100644
index 0000000..4d8c305
--- /dev/null
+++ b/src/styles/iconfont.css
@@ -0,0 +1,994 @@
+@font-face {
+ font-family: "iconfont"; /* Project id 3952239 */
+ src: url('//at.alicdn.com/t/c/font_3952239_d9jfnubjilt.woff2?t=1718190955432') format('woff2'),
+ url('//at.alicdn.com/t/c/font_3952239_d9jfnubjilt.woff?t=1718190955432') format('woff'),
+ url('//at.alicdn.com/t/c/font_3952239_d9jfnubjilt.ttf?t=1718190955432') format('truetype');
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.iconrenminbiV6xx:before {
+ content: "\e680";
+}
+
+.iconxiaolian-1:before {
+ content: "\e653";
+}
+
+.iconxiaolian-2:before {
+ content: "\e654";
+}
+
+.iconwodezixun:before {
+ content: "\e645";
+}
+
+.iconwode-xian:before {
+ content: "\e60f";
+}
+
+.iconbalance:before {
+ content: "\e73b";
+}
+
+.iconweixinzhifu2:before {
+ content: "\e640";
+}
+
+.iconalipay:before {
+ content: "\e618";
+}
+
+.icona-shejianchangguan:before {
+ content: "\e647";
+}
+
+.icondunpai:before {
+ content: "\e80b";
+}
+
+.iconxiazai:before {
+ content: "\e69c";
+}
+
+.iconhuiyuanjiage:before {
+ content: "\e611";
+}
+
+.iconshuaxin:before {
+ content: "\e63e";
+}
+
+.iconyinlian:before {
+ content: "\e68b";
+}
+
+.iconkefu:before {
+ content: "\e612";
+}
+
+.icondianzan:before {
+ content: "\ec7f";
+}
+
+.icondache:before {
+ content: "\e615";
+}
+
+.iconjiantouarrow492:before {
+ content: "\e6b0";
+}
+
+.iconxuanze:before {
+ content: "\e63d";
+}
+
+.iconlianjie-tianchong:before {
+ content: "\e658";
+}
+
+.iconmendian:before {
+ content: "\e60a";
+}
+
+.iconico_yuyueguanli_yuyuebiangeng:before {
+ content: "\e94a";
+}
+
+.iconxinyongqia:before {
+ content: "\e785";
+}
+
+.iconquanbudingdan:before {
+ content: "\e601";
+}
+
+.iconico:before {
+ content: "\e646";
+}
+
+.iconkefu1:before {
+ content: "\e88f";
+}
+
+.iconWechat-Moments:before {
+ content: "\e7a8";
+}
+
+.iconlink-filling:before {
+ content: "\e898";
+}
+
+.icondaohang:before {
+ content: "\e6bd";
+}
+
+.iconkaidian:before {
+ content: "\e6fb";
+}
+
+.iconxiajiantou:before {
+ content: "\e602";
+}
+
+.iconyongjin:before {
+ content: "\e6e3";
+}
+
+.iconshangjiantou:before {
+ content: "\e604";
+}
+
+.iconshimingrenzheng-xian:before {
+ content: "\e89c";
+}
+
+.icondasuozi:before {
+ content: "\e608";
+}
+
+.iconfenxiao:before {
+ content: "\e61b";
+}
+
+.iconfenxiang2:before {
+ content: "\e635";
+}
+
+.iconxiangqing:before {
+ content: "\e61f";
+}
+
+.iconjiantouloukong-you:before {
+ content: "\e631";
+}
+
+.iconpinglun:before {
+ content: "\e60b";
+}
+
+.icongouwuche2:before {
+ content: "\e73d";
+}
+
+.iconshangjiadingdan:before {
+ content: "\ee00";
+}
+
+.iconzhankai:before {
+ content: "\e62c";
+}
+
+.iconshouqi:before {
+ content: "\e62d";
+}
+
+.icongouwuche-shangpin:before {
+ content: "\e637";
+}
+
+.iconguanzhu-weidianji:before {
+ content: "\e638";
+}
+
+.icondianpu-xiayibu:before {
+ content: "\e639";
+}
+
+.iconguanzhu-dianji:before {
+ content: "\e63c";
+}
+
+.iconshoucang1:before {
+ content: "\e621";
+}
+
+.iconfenxiang:before {
+ content: "\e610";
+}
+
+.icongouwuche:before {
+ content: "\e699";
+}
+
+.iconfenxiang3:before {
+ content: "\e655";
+}
+
+.icongouwuche3:before {
+ content: "\e63f";
+}
+
+.iconfenxiang1:before {
+ content: "\e64d";
+}
+
+.iconshezhi:before {
+ content: "\e600";
+}
+
+.iconjiahao1:before {
+ content: "\e84f";
+}
+
+.iconjianhao:before {
+ content: "\e850";
+}
+
+.iconshezhi1:before {
+ content: "\e8b7";
+}
+
+.iconshijian:before {
+ content: "\e6c8";
+}
+
+.iconxiangxiajiantou:before {
+ content: "\e65e";
+}
+
+.iconxiangxia:before {
+ content: "\e62f";
+}
+
+.iconxiangshang:before {
+ content: "\e630";
+}
+
+.iconxialajiantouxiao:before {
+ content: "\e87e";
+}
+
+.iconanniu-jiantouxiangyou_o:before {
+ content: "\eb8c";
+}
+
+.iconxiazai19:before {
+ content: "\e614";
+}
+
+.iconjiantou3:before {
+ content: "\e605";
+}
+
+.iconxiangyoujiantou:before {
+ content: "\e620";
+}
+
+.iconjiantoushang:before {
+ content: "\e619";
+}
+
+.iconxiazai17:before {
+ content: "\e613";
+}
+
+.iconguanbi:before {
+ content: "\e609";
+}
+
+.iconsousuo:before {
+ content: "\e8b9";
+}
+
+.iconbianji:before {
+ content: "\e6ee";
+}
+
+.iconshurutianxiebi:before {
+ content: "\e69f";
+}
+
+.iconshaixuan:before {
+ content: "\e888";
+}
+
+.iconshangpinliebiao:before {
+ content: "\e61c";
+}
+
+.iconfuzhi:before {
+ content: "\e62b";
+}
+
+.iconshuru:before {
+ content: "\e625";
+}
+
+.iconicon7:before {
+ content: "\e667";
+}
+
+.iconguanbi1:before {
+ content: "\e634";
+}
+
+.iconarrow-right:before {
+ content: "\e622";
+}
+
+.iconfanhui1:before {
+ content: "\e629";
+}
+
+.iconVector-104:before {
+ content: "\e724";
+}
+
+.iconVector-105:before {
+ content: "\e725";
+}
+
+.iconVector-108:before {
+ content: "\e726";
+}
+
+.iconVector-107:before {
+ content: "\e727";
+}
+
+.iconVector-106:before {
+ content: "\e729";
+}
+
+.iconVector-97:before {
+ content: "\e72a";
+}
+
+.iconVector-102:before {
+ content: "\e72b";
+}
+
+.iconVector-103:before {
+ content: "\e72c";
+}
+
+.iconVector-101:before {
+ content: "\e72d";
+}
+
+.iconVector-92:before {
+ content: "\e72e";
+}
+
+.iconVector-90:before {
+ content: "\e730";
+}
+
+.iconVector-98:before {
+ content: "\e731";
+}
+
+.iconVector-99:before {
+ content: "\e732";
+}
+
+.iconVector-100:before {
+ content: "\e733";
+}
+
+.iconVector-95:before {
+ content: "\e734";
+}
+
+.iconVector-96:before {
+ content: "\e735";
+}
+
+.iconVector-91:before {
+ content: "\e737";
+}
+
+.iconVector-93:before {
+ content: "\e738";
+}
+
+.iconVector-89:before {
+ content: "\e739";
+}
+
+.iconVector-84:before {
+ content: "\e73a";
+}
+
+.iconVector-83:before {
+ content: "\e73c";
+}
+
+.iconVector-88:before {
+ content: "\e73e";
+}
+
+.iconVector-82:before {
+ content: "\e73f";
+}
+
+.iconVector-86:before {
+ content: "\e740";
+}
+
+.iconVector-74:before {
+ content: "\e741";
+}
+
+.iconVector-81:before {
+ content: "\e743";
+}
+
+.iconVector-85:before {
+ content: "\e744";
+}
+
+.iconVector-87:before {
+ content: "\e745";
+}
+
+.iconVector-77:before {
+ content: "\e746";
+}
+
+.iconVector-79:before {
+ content: "\e747";
+}
+
+.iconVector-80:before {
+ content: "\e748";
+}
+
+.iconVector-75:before {
+ content: "\e749";
+}
+
+.iconVector-72:before {
+ content: "\e74a";
+}
+
+.iconVector-71:before {
+ content: "\e74b";
+}
+
+.iconVector-76:before {
+ content: "\e74c";
+}
+
+.iconVector-73:before {
+ content: "\e74d";
+}
+
+.iconVector-78:before {
+ content: "\e74e";
+}
+
+.iconVector-67:before {
+ content: "\e74f";
+}
+
+.iconVector-59:before {
+ content: "\e750";
+}
+
+.iconVector-60:before {
+ content: "\e751";
+}
+
+.iconVector-69:before {
+ content: "\e752";
+}
+
+.iconVector-58:before {
+ content: "\e753";
+}
+
+.iconVector-70:before {
+ content: "\e754";
+}
+
+.iconVector-54:before {
+ content: "\e755";
+}
+
+.iconVector-68:before {
+ content: "\e756";
+}
+
+.iconVector-65:before {
+ content: "\e757";
+}
+
+.iconVector-57:before {
+ content: "\e758";
+}
+
+.iconVector-64:before {
+ content: "\e759";
+}
+
+.iconVector-61:before {
+ content: "\e75a";
+}
+
+.iconVector-63:before {
+ content: "\e75b";
+}
+
+.iconVector-38:before {
+ content: "\e75c";
+}
+
+.iconVector-49:before {
+ content: "\e75d";
+}
+
+.iconVector-66:before {
+ content: "\e75e";
+}
+
+.iconVector-53:before {
+ content: "\e75f";
+}
+
+.iconVector-62:before {
+ content: "\e760";
+}
+
+.iconVector-46:before {
+ content: "\e761";
+}
+
+.iconVector-55:before {
+ content: "\e762";
+}
+
+.iconVector-56:before {
+ content: "\e763";
+}
+
+.iconVector-37:before {
+ content: "\e764";
+}
+
+.iconVector-51:before {
+ content: "\e765";
+}
+
+.iconVector-52:before {
+ content: "\e766";
+}
+
+.iconVector-50:before {
+ content: "\e767";
+}
+
+.iconVector-29:before {
+ content: "\e769";
+}
+
+.iconVector-47:before {
+ content: "\e76a";
+}
+
+.iconVector-48:before {
+ content: "\e76b";
+}
+
+.iconVector-45:before {
+ content: "\e76c";
+}
+
+.iconVector-39:before {
+ content: "\e76d";
+}
+
+.iconVector-32:before {
+ content: "\e76e";
+}
+
+.iconVector-44:before {
+ content: "\e76f";
+}
+
+.iconVector-41:before {
+ content: "\e770";
+}
+
+.iconVector-40:before {
+ content: "\e771";
+}
+
+.iconVector-33:before {
+ content: "\e772";
+}
+
+.iconVector-43:before {
+ content: "\e773";
+}
+
+.iconVector-22:before {
+ content: "\e774";
+}
+
+.iconVector-30:before {
+ content: "\e775";
+}
+
+.iconVector-36:before {
+ content: "\e776";
+}
+
+.iconVector-42:before {
+ content: "\e777";
+}
+
+.iconVector-35:before {
+ content: "\e778";
+}
+
+.iconVector-20:before {
+ content: "\e779";
+}
+
+.iconVector-31:before {
+ content: "\e77b";
+}
+
+.iconVector-28:before {
+ content: "\e77c";
+}
+
+.iconVector-34:before {
+ content: "\e77d";
+}
+
+.iconVector-24:before {
+ content: "\e77e";
+}
+
+.iconVector-17:before {
+ content: "\e77f";
+}
+
+.iconVector-27:before {
+ content: "\e780";
+}
+
+.iconVector-6:before {
+ content: "\e781";
+}
+
+.iconVector-26:before {
+ content: "\e783";
+}
+
+.iconVector-15:before {
+ content: "\e784";
+}
+
+.iconVector-21:before {
+ content: "\e786";
+}
+
+.iconVector-11:before {
+ content: "\e787";
+}
+
+.iconVector-5:before {
+ content: "\e788";
+}
+
+.iconVector-19:before {
+ content: "\e789";
+}
+
+.iconVector-23:before {
+ content: "\e78a";
+}
+
+.iconVector-16:before {
+ content: "\e78b";
+}
+
+.iconVector-14:before {
+ content: "\e78c";
+}
+
+.iconVector-8:before {
+ content: "\e78d";
+}
+
+.iconVector-13:before {
+ content: "\e78e";
+}
+
+.iconVector-12:before {
+ content: "\e78f";
+}
+
+.iconVector-18:before {
+ content: "\e790";
+}
+
+.icona-9:before {
+ content: "\e791";
+}
+
+.iconVector-1:before {
+ content: "\e793";
+}
+
+.iconVector-7:before {
+ content: "\e794";
+}
+
+.iconVector-2:before {
+ content: "\e795";
+}
+
+.iconVector-9:before {
+ content: "\e796";
+}
+
+.iconVector1:before {
+ content: "\e797";
+}
+
+.iconVector-10:before {
+ content: "\e798";
+}
+
+.iconVector-3:before {
+ content: "\e799";
+}
+
+.iconVector-4:before {
+ content: "\e79c";
+}
+
+.icona-Vector1Stroke:before {
+ content: "\e79f";
+}
+
+.iconq96:before {
+ content: "\e7aa";
+}
+
+.icona-Vector3Stroke-copy-copy:before {
+ content: "\e7ab";
+}
+
+.iconVector-25:before {
+ content: "\e70b";
+}
+
+.iconVector-94:before {
+ content: "\e6d4";
+}
+
+.iconqiandao:before {
+ content: "\e636";
+}
+
+.iconshangyibu:before {
+ content: "\e62a";
+}
+
+.iconxiayibu1:before {
+ content: "\e628";
+}
+
+.iconhexiao:before {
+ content: "\e64f";
+}
+
+.iconjiang-copy:before {
+ content: "\e624";
+}
+
+.icontiaoxingmasaomiao:before {
+ content: "\e63a";
+}
+
+.iconsaoma:before {
+ content: "\e69a";
+}
+
+.iconjilu:before {
+ content: "\e627";
+}
+
+.iconzhekou:before {
+ content: "\e623";
+}
+
+.iconxiayibu:before {
+ content: "\e60e";
+}
+
+.iconweixin11:before {
+ content: "\e63b";
+}
+
+.iconpengyouquan:before {
+ content: "\e66e";
+}
+
+.iconfuzhilianjie:before {
+ content: "\e65c";
+}
+
+.iconshouye1:before {
+ content: "\e62e";
+}
+
+.iconshangxiajiantouheise:before {
+ content: "\e809";
+}
+
+.iconjia:before {
+ content: "\e633";
+}
+
+.iconjian:before {
+ content: "\e64e";
+}
+
+.iconjiantou-you-cuxiantiao-fill:before {
+ content: "\e6ae";
+}
+
+.iconxuanzhongduigou:before {
+ content: "\e652";
+}
+
+.iconshuaxin1:before {
+ content: "\e782";
+}
+
+.icon24gl-questionCircle:before {
+ content: "\e97f";
+}
+
+.icondianhua:before {
+ content: "\e6be";
+}
+
+.iconzanwuwuliuxinxi:before {
+ content: "\e674";
+}
+
+.iconzhaoxiangji:before {
+ content: "\e664";
+}
+
+.icongouwuche1:before {
+ content: "\e682";
+}
+
+.iconshoucang_shoucang:before {
+ content: "\e607";
+}
+
+.icona-shoucang-weishoucang:before {
+ content: "\e6f2";
+}
+
+.iconjiahao2fill:before {
+ content: "\e728";
+}
+
+.iconliebiaoxingshi:before {
+ content: "\e742";
+}
+
+.iconqiuzhirenyuan:before {
+ content: "\e66d";
+}
+
+.icondianhua-xianxingyuankuang:before {
+ content: "\e8bc";
+}
+
+.iconshuangxiang:before {
+ content: "\e669";
+}
+
+.iconchuang1:before {
+ content: "\e61a";
+}
+
+.iconfangzi:before {
+ content: "\e8ff";
+}
+
+.iconpeople:before {
+ content: "\e617";
+}
+
+.iconlouceng:before {
+ content: "\e642";
+}
+
+.iconshuliang:before {
+ content: "\e61e";
+}
+
+.iconxingxing:before {
+ content: "\e60d";
+}
+
+.iconrili:before {
+ content: "\e696";
+}
+
+.iconzhixiang:before {
+ content: "\e72f";
+}
+
+.iconzuobiaofill:before {
+ content: "\e768";
+}
+
+.iconxuanze1:before {
+ content: "\e616";
+}
+
+.iconyuandianfengefu:before {
+ content: "\e603";
+}
+
+.iconshouye:before {
+ content: "\e606";
+}
+
+.iconjiantouxia:before {
+ content: "\e67e";
+}
+
+.iconcheckbox_nol:before {
+ content: "\e626";
+}
+
+.iconweixin1:before {
+ content: "\e878";
+}
+
+.iconzhifubaoxuanzhong:before {
+ content: "\e802";
+}
+
+.iconduigou:before {
+ content: "\e632";
+}
+
+.iconzhifushibai:before {
+ content: "\e663";
+}
+
+.iconshouye-zhihui:before {
+ content: "\e61d";
+}
diff --git a/src/styles/index.scss b/src/styles/index.scss
new file mode 100644
index 0000000..302dd2a
--- /dev/null
+++ b/src/styles/index.scss
@@ -0,0 +1,5 @@
+@import 'uview-plus/index.scss';
+@import 'common.scss';
+@import 'iconfont.css';
+@import 'official-iconfont.css';
+
diff --git a/src/styles/member_record_detail.scss b/src/styles/member_record_detail.scss
new file mode 100644
index 0000000..56682a3
--- /dev/null
+++ b/src/styles/member_record_detail.scss
@@ -0,0 +1,25 @@
+page{
+ background-color: #f5f6fa;
+ @apply pt-4;
+}
+.member-record-detail{
+ @apply m-4 mt-0 bg-white rounded-md px-4 py-6;
+ .money-wrap{
+ @apply flex items-center flex-col mb-6;
+ text:first-of-type{
+ @apply text-3xl font-bold mt-1;
+ }
+ text:last-of-type{
+ @apply text-sm mt-3;
+ }
+ }
+ .line-wrap{
+ @apply flex justify-between text-sm mt-3;
+ .label{
+ @apply text-[#878787];
+ }
+ .value{
+ @apply text-[#222];
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/styles/member_record_list.scss b/src/styles/member_record_list.scss
new file mode 100644
index 0000000..79dcab1
--- /dev/null
+++ b/src/styles/member_record_list.scss
@@ -0,0 +1,21 @@
+.member-record-list{
+ @apply min-h-[100vh];
+ .member-record-item{
+ @apply relative mx-4 border-solid border-t-0 border-l-0 border-r-0 border-b-1 border-[#ECEBEC] py-3;
+ .name{
+ @apply text-sm;
+ }
+ .desc{
+ @apply text-xs text-[#8D8C8D] mt-1;
+ }
+ .text-active{
+ color: #FF0D3E;
+ }
+ .money{
+ @apply absolute right-3 top-4 text-base font-bold;
+ }
+ .state{
+ @apply absolute right-3 top-11 text-[#8D8C8D] text-xs;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/styles/official-iconfont.css b/src/styles/official-iconfont.css
new file mode 100644
index 0000000..4581b63
--- /dev/null
+++ b/src/styles/official-iconfont.css
@@ -0,0 +1,1294 @@
+@font-face {
+ font-family: "nc-iconfont"; /* Project id 4567203 */
+ src: url('//at.alicdn.com/t/c/font_4567203_jiym07jhp7i.woff2?t=1718104706175') format('woff2'),
+ url('//at.alicdn.com/t/c/font_4567203_jiym07jhp7i.woff?t=1718104706175') format('woff'),
+ url('//at.alicdn.com/t/c/font_4567203_jiym07jhp7i.ttf?t=1718104706175') format('truetype');
+}
+
+.nc-iconfont {
+ font-family: "nc-iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.nc-icon-kefuV6xx1:before {
+ content: "\e76a";
+}
+
+.nc-icon-huiyuandengjiV6xx1:before {
+ content: "\e761";
+}
+
+.nc-icon-gerenzhongxinV6xx:before {
+ content: "\e762";
+}
+
+.nc-icon-gerenzhongxinV6mm1:before {
+ content: "\e763";
+}
+
+.nc-icon-chuangV6xx:before {
+ content: "\e764";
+}
+
+.nc-icon-zujiV6xx:before {
+ content: "\e765";
+}
+
+.nc-icon-gouwucheV6xx2:before {
+ content: "\e766";
+}
+
+.nc-icon-dianzanV6mm:before {
+ content: "\e767";
+}
+
+.nc-icon-pintuanV6xx:before {
+ content: "\e768";
+}
+
+.nc-icon-pintuanV6mm:before {
+ content: "\e769";
+}
+
+.nc-icon-zujiV6mm1:before {
+ content: "\e76b";
+}
+
+.nc-icon-dingweiV6mm:before {
+ content: "\e76f";
+}
+
+.nc-icon-dingweiV6mm-2:before {
+ content: "\e76d";
+}
+
+.nc-icon-xiaolian-2:before {
+ content: "\e6e8";
+}
+
+.nc-icon-xiaolian-1:before {
+ content: "\e6e9";
+}
+
+.nc-icon-sousuo-duanV6xx1:before {
+ content: "\e6f1";
+}
+
+.nc-icon-shanchu-yuangaizhiV6xx:before {
+ content: "\e6e7";
+}
+
+.nc-icon-dingweiV6xx1:before {
+ content: "\e6f0";
+}
+
+.nc-icon-dingweiV6xx-1:before {
+ content: "\e6ef";
+}
+
+.nc-icon-sousuoV6xx1:before {
+ content: "\e6e5";
+}
+
+.nc-icon-sousuo-duanV6xx:before {
+ content: "\e6e4";
+}
+
+.nc-icon-gouwucheV6mm1:before {
+ content: "\e6e3";
+}
+
+.nc-icon-gouwucheV6xx1:before {
+ content: "\e6e2";
+}
+
+.nc-icon-dingweiV6xx:before {
+ content: "\e6e6";
+}
+
+.nc-icon-yueV6xx1:before {
+ content: "\e641";
+}
+
+.nc-icon-youhuiV6xx1:before {
+ content: "\e642";
+}
+
+.nc-icon-shezhi-1V6xx:before {
+ content: "\e643";
+}
+
+.nc-icon-youhuiquanV6xx1:before {
+ content: "\e644";
+}
+
+.nc-icon-youhuiquanV6xx-11:before {
+ content: "\e645";
+}
+
+.nc-icon-wodeshoucangV6xx1:before {
+ content: "\e646";
+}
+
+.nc-icon-shoucangV6xx-11:before {
+ content: "\e647";
+}
+
+.nc-icon-bianjiV6xx:before {
+ content: "\e648";
+}
+
+.nc-icon-tuikuanV6xx1:before {
+ content: "\e649";
+}
+
+.nc-icon-wendangV6xx1:before {
+ content: "\e64a";
+}
+
+.nc-icon-shaixuanV6xx1:before {
+ content: "\e64b";
+}
+
+.nc-icon-jifenduihuanV6xx1:before {
+ content: "\e64c";
+}
+
+.nc-icon-fenxiangV6xx1:before {
+ content: "\e64d";
+}
+
+.nc-icon-shoucangV6xx1:before {
+ content: "\e64e";
+}
+
+.nc-icon-lianjieV6xx1:before {
+ content: "\e64f";
+}
+
+.nc-icon-shezhiV6xx1:before {
+ content: "\e650";
+}
+
+.nc-icon-fenxiaoV6xx1:before {
+ content: "\e651";
+}
+
+.nc-icon-chakanV6xx:before {
+ content: "\e653";
+}
+
+.nc-icon-wodedengjiV6xx1:before {
+ content: "\e652";
+}
+
+.nc-icon-duanxinV6xx1:before {
+ content: "\e654";
+}
+
+.nc-icon-liebiaoV6xx:before {
+ content: "\e655";
+}
+
+.nc-icon-biaoqianV6xx1:before {
+ content: "\e656";
+}
+
+.nc-icon-ruzhurenV6xx:before {
+ content: "\e657";
+}
+
+.nc-icon-xiugaiV6xx:before {
+ content: "\e658";
+}
+
+.nc-icon-bianjiV6xx1:before {
+ content: "\e659";
+}
+
+.nc-icon-shouyeV6xx1:before {
+ content: "\e65a";
+}
+
+.nc-icon-bangzhuV6mm:before {
+ content: "\e65b";
+}
+
+.nc-icon-tanhaoV6mm-1:before {
+ content: "\e65c";
+}
+
+.nc-icon-bangzhuV6mm-1:before {
+ content: "\e65d";
+}
+
+.nc-icon-tanhaoV6mm:before {
+ content: "\e65e";
+}
+
+.nc-icon-zhuyiV6mm:before {
+ content: "\e65f";
+}
+
+.nc-icon-tianjiaV6mm:before {
+ content: "\e660";
+}
+
+.nc-icon-duihaoV6mm:before {
+ content: "\e661";
+}
+
+.nc-icon-jianshaoV6mm:before {
+ content: "\e662";
+}
+
+.nc-icon-cuohaoV6mm:before {
+ content: "\e663";
+}
+
+.nc-icon-gouwucheV6mm-1:before {
+ content: "\e664";
+}
+
+.nc-icon-lishijiluV6mm:before {
+ content: "\e665";
+}
+
+.nc-icon-jiamengV6mm:before {
+ content: "\e666";
+}
+
+.nc-icon-hexiaotaiV6mm:before {
+ content: "\e667";
+}
+
+.nc-icon-yingyongzhongxinV6mm:before {
+ content: "\e668";
+}
+
+.nc-icon-jiaohuanV6mm:before {
+ content: "\e669";
+}
+
+.nc-icon-gouwucheV6mm:before {
+ content: "\e66a";
+}
+
+.nc-icon-yingyongzhongxinV6mm-1:before {
+ content: "\e66b";
+}
+
+.nc-icon-fenleiV6mm:before {
+ content: "\e66c";
+}
+
+.nc-icon-liebiaoV6mm:before {
+ content: "\e66d";
+}
+
+.nc-icon-yingyongV6mm:before {
+ content: "\e66e";
+}
+
+.nc-icon-yingyongliebiaoV6mm:before {
+ content: "\e66f";
+}
+
+.nc-icon-xiangyouV6mm:before {
+ content: "\e670";
+}
+
+.nc-icon-xiangzuoV6mm:before {
+ content: "\e671";
+}
+
+.nc-icon-ruzhurenV6mm:before {
+ content: "\e672";
+}
+
+.nc-icon-xiangxiaV6mm:before {
+ content: "\e673";
+}
+
+.nc-icon-xiangshangV6mm:before {
+ content: "\e674";
+}
+
+.nc-icon-shouyeV6mm:before {
+ content: "\e675";
+}
+
+.nc-icon-shezhiV6mm-2:before {
+ content: "\e676";
+}
+
+.nc-icon-youjianV6mm:before {
+ content: "\e677";
+}
+
+.nc-icon-xiaoxiV6mm:before {
+ content: "\e678";
+}
+
+.nc-icon-xinxiV6mm:before {
+ content: "\e679";
+}
+
+.nc-icon-woV6mm:before {
+ content: "\e67a";
+}
+
+.nc-icon-shezhiV6mm:before {
+ content: "\e67b";
+}
+
+.nc-icon-wodeV6mm:before {
+ content: "\e67c";
+}
+
+.nc-icon-shezhiV6mm-1:before {
+ content: "\e67d";
+}
+
+.nc-icon-kefuV6mm-1:before {
+ content: "\e67e";
+}
+
+.nc-icon-kefu-huatongV6mm:before {
+ content: "\e67f";
+}
+
+.nc-icon-qiuzhirenyuanV6mm:before {
+ content: "\e680";
+}
+
+.nc-icon-piaoxinxiV6mm:before {
+ content: "\e681";
+}
+
+.nc-icon-lianxikefuV6mm:before {
+ content: "\e682";
+}
+
+.nc-icon-kefu-erjiV6mm:before {
+ content: "\e683";
+}
+
+.nc-icon-dianxinxiV6mm:before {
+ content: "\e684";
+}
+
+.nc-icon-kefuV6mm-2:before {
+ content: "\e685";
+}
+
+.nc-icon-duanxinV6mm-1:before {
+ content: "\e686";
+}
+
+.nc-icon-gerenzhongxinV6mm:before {
+ content: "\e687";
+}
+
+.nc-icon-kefuV6mm:before {
+ content: "\e688";
+}
+
+.nc-icon-fenxiangV6mm:before {
+ content: "\e689";
+}
+
+.nc-icon-duanxinV6mm:before {
+ content: "\e68a";
+}
+
+.nc-icon-xiangjiV6mm-1:before {
+ content: "\e68b";
+}
+
+.nc-icon-wodeV6mm1:before {
+ content: "\e68c";
+}
+
+.nc-icon-shuaxinV6mm:before {
+ content: "\e68d";
+}
+
+.nc-icon-xiangjiV6mm:before {
+ content: "\e68e";
+}
+
+.nc-icon-sousuoV6mm:before {
+ content: "\e68f";
+}
+
+.nc-icon-shoucangV6mm-1:before {
+ content: "\e690";
+}
+
+.nc-icon-xihuanV6mm:before {
+ content: "\e691";
+}
+
+.nc-icon-wodeshoucangV6mm:before {
+ content: "\e692";
+}
+
+.nc-icon-shizhongV6mm:before {
+ content: "\e693";
+}
+
+.nc-icon-shoucangV6mm:before {
+ content: "\e694";
+}
+
+.nc-icon-naolingV6mm:before {
+ content: "\e695";
+}
+
+.nc-icon-shijianV6mm:before {
+ content: "\e696";
+}
+
+.nc-icon-naozhongV6mm:before {
+ content: "\e697";
+}
+
+.nc-icon-biaoqianV6mm:before {
+ content: "\e698";
+}
+
+.nc-icon-lingdangV6mm:before {
+ content: "\e699";
+}
+
+.nc-icon-biaoqianV6mm-1:before {
+ content: "\e69a";
+}
+
+.nc-icon-lishijiluV6mm1:before {
+ content: "\e69b";
+}
+
+.nc-icon-daifahuoV6mm:before {
+ content: "\e69c";
+}
+
+.nc-icon-jishibenV6mm:before {
+ content: "\e69d";
+}
+
+.nc-icon-bianqianV6mm:before {
+ content: "\e69e";
+}
+
+.nc-icon-bianjiV6mm:before {
+ content: "\e69f";
+}
+
+.nc-icon-bijiV6mm:before {
+ content: "\e6a0";
+}
+
+.nc-icon-bijiV6mm-1:before {
+ content: "\e6a1";
+}
+
+.nc-icon-youhuiquanV6mm:before {
+ content: "\e6a2";
+}
+
+.nc-icon-youhuiV6mm:before {
+ content: "\e6a3";
+}
+
+.nc-icon-shangchengV6mm:before {
+ content: "\e6a4";
+}
+
+.nc-icon-zhekouquanV6mm:before {
+ content: "\e6a5";
+}
+
+.nc-icon-youhuiquanV6mm-1:before {
+ content: "\e6a6";
+}
+
+.nc-icon-yueV6mm:before {
+ content: "\e6a7";
+}
+
+.nc-icon-qianbaoyueV6mm:before {
+ content: "\e6a8";
+}
+
+.nc-icon-qianbaoV6mm:before {
+ content: "\e6a9";
+}
+
+.nc-icon-liwuV6mm:before {
+ content: "\e6aa";
+}
+
+.nc-icon-jifenduihuanV6mm:before {
+ content: "\e6ab";
+}
+
+.nc-icon-biaoqianV6mm1:before {
+ content: "\e6ac";
+}
+
+.nc-icon-libaoV6mm:before {
+ content: "\e6ad";
+}
+
+.nc-icon-jinrongV6mm:before {
+ content: "\e6ae";
+}
+
+.nc-icon-wodetuiguangV6mm:before {
+ content: "\e6af";
+}
+
+.nc-icon-wodedengjiV6mm:before {
+ content: "\e6b0";
+}
+
+.nc-icon-tuiguangV6mm:before {
+ content: "\e6b1";
+}
+
+.nc-icon-yinhangkaV6mm:before {
+ content: "\e6b2";
+}
+
+.nc-icon-huiyuandengjiV6mm:before {
+ content: "\e6b3";
+}
+
+.nc-icon-meiriqiandaoV6mm:before {
+ content: "\e6b4";
+}
+
+.nc-icon-daifahuoV6mm1:before {
+ content: "\e6b5";
+}
+
+.nc-icon-riliV6mm:before {
+ content: "\e6b6";
+}
+
+.nc-icon-daifahuoV6mm-1:before {
+ content: "\e6b7";
+}
+
+.nc-icon-fenxiaoV6mm:before {
+ content: "\e6b8";
+}
+
+.nc-icon-daishouhuoV6mm:before {
+ content: "\e6b9";
+}
+
+.nc-icon-dizhiV6mm:before {
+ content: "\e6ba";
+}
+
+.nc-icon-lianjieV6mm:before {
+ content: "\e6bb";
+}
+
+.nc-icon-dianhuaV6mm:before {
+ content: "\e6bc";
+}
+
+.nc-icon-jifenV6mm:before {
+ content: "\e6bd";
+}
+
+.nc-icon-hexiaotaiV6mm1:before {
+ content: "\e6be";
+}
+
+.nc-icon-saomaV6mm:before {
+ content: "\e6bf";
+}
+
+.nc-icon-jiaohuanV6mm1:before {
+ content: "\e6c0";
+}
+
+.nc-icon-kuozhanV6mm:before {
+ content: "\e6c1";
+}
+
+.nc-icon-loucengV6mm:before {
+ content: "\e6c2";
+}
+
+.nc-icon-erweimaV6mm-1:before {
+ content: "\e6c3";
+}
+
+.nc-icon-fuzhiV6mm:before {
+ content: "\e6c4";
+}
+
+.nc-icon-erweimaV6mm:before {
+ content: "\e6c5";
+}
+
+.nc-icon-changjiantouV6mm:before {
+ content: "\e6c6";
+}
+
+.nc-icon-zujiV6mm:before {
+ content: "\e6c7";
+}
+
+.nc-icon-chakanV6mm:before {
+ content: "\e6c8";
+}
+
+.nc-icon-meiriqiandaoV6mm1:before {
+ content: "\e6c9";
+}
+
+.nc-icon-bijiV6mm1:before {
+ content: "\e6ca";
+}
+
+.nc-icon-shangxiajiantouV6mm:before {
+ content: "\e6cb";
+}
+
+.nc-icon-tiaoxingmaV6mm:before {
+ content: "\e6cc";
+}
+
+.nc-icon-xiayibuV6xx:before {
+ content: "\e6cd";
+}
+
+.nc-icon-duiV6mm:before {
+ content: "\e6ce";
+}
+
+.nc-icon-shangyibuV6xx:before {
+ content: "\e6cf";
+}
+
+.nc-icon-lianxidianhuaV6mm:before {
+ content: "\e6d0";
+}
+
+.nc-icon-lianxidianhuaV6xx:before {
+ content: "\e6d1";
+}
+
+.nc-icon-duiV6xx:before {
+ content: "\e6d2";
+}
+
+.nc-icon-pengyouquanV6mm-1:before {
+ content: "\e6d3";
+}
+
+.nc-icon-zhifubao-yuanV6mm:before {
+ content: "\e6d4";
+}
+
+.nc-icon-weixinV6mm-1:before {
+ content: "\e6d5";
+}
+
+.nc-icon-weixinV6mm:before {
+ content: "\e6d6";
+}
+
+.nc-icon-zhifubaoV6mm:before {
+ content: "\e6d7";
+}
+
+.nc-icon-zhifubao-fangV6mm:before {
+ content: "\e6d8";
+}
+
+.nc-icon-pengyouquanV6mm:before {
+ content: "\e6d9";
+}
+
+.nc-icon-shouye-xiaolianV6xx:before {
+ content: "\e6da";
+}
+
+.nc-icon-hexiaoV6xx:before {
+ content: "\e6db";
+}
+
+.nc-icon-hexiaoV6mm:before {
+ content: "\e6dc";
+}
+
+.nc-icon-kaifazhelianmengV6xx:before {
+ content: "\e6dd";
+}
+
+.nc-icon-kaifazhelianmengV6xx-1:before {
+ content: "\e6de";
+}
+
+.nc-icon-gerenziliaoV6xx:before {
+ content: "\e6df";
+}
+
+.nc-icon-gerenziliaoV6mm:before {
+ content: "\e6e0";
+}
+
+.nc-icon-fangziV6xx:before {
+ content: "\e6e1";
+}
+
+.nc-icon-guanbiV6xx:before {
+ content: "\e621";
+}
+
+.nc-icon-duihaoV6xx-1:before {
+ content: "\e622";
+}
+
+.nc-icon-bangzhuV6xx:before {
+ content: "\e623";
+}
+
+.nc-icon-duihaoV6xx:before {
+ content: "\e624";
+}
+
+.nc-icon-cuohaoV6xx:before {
+ content: "\e625";
+}
+
+.nc-icon-jiahaoV6xx:before {
+ content: "\e626";
+}
+
+.nc-icon-zhuyiV6xx:before {
+ content: "\e627";
+}
+
+.nc-icon-jianshaoV6xx:before {
+ content: "\e628";
+}
+
+.nc-icon-jianV6xx:before {
+ content: "\e629";
+}
+
+.nc-icon-zhixiang-youjiantouV6xx:before {
+ content: "\e62a";
+}
+
+.nc-icon-zuoV6xx:before {
+ content: "\e62b";
+}
+
+.nc-icon-zuoV6xx-1:before {
+ content: "\e62c";
+}
+
+.nc-icon-changjiantouV6xx:before {
+ content: "\e62d";
+}
+
+.nc-icon-xiangxiaV6xx-1:before {
+ content: "\e62e";
+}
+
+.nc-icon-xiangzuoV6xx:before {
+ content: "\e62f";
+}
+
+.nc-icon-xiangzuoV6xx-1:before {
+ content: "\e630";
+}
+
+.nc-icon-youV6xx:before {
+ content: "\e631";
+}
+
+.nc-icon-xiangyouV6xx-1:before {
+ content: "\e632";
+}
+
+.nc-icon-xiangyouV6xx:before {
+ content: "\e633";
+}
+
+.nc-icon-xiangyouV6xx-2:before {
+ content: "\e634";
+}
+
+.nc-icon-xiaV6xx-1:before {
+ content: "\e635";
+}
+
+.nc-icon-xiangxiaV6xx:before {
+ content: "\e636";
+}
+
+.nc-icon-tianjiaV6xx:before {
+ content: "\e637";
+}
+
+.nc-icon-tanhaoV6xx:before {
+ content: "\e638";
+}
+
+.nc-icon-xiangshangV6xx:before {
+ content: "\e639";
+}
+
+.nc-icon-xiangshangV6xx-1:before {
+ content: "\e63a";
+}
+
+.nc-icon-xiaV6xx:before {
+ content: "\e63b";
+}
+
+.nc-icon-tanhaoV6xx-1:before {
+ content: "\e63c";
+}
+
+.nc-icon-shangV6xx:before {
+ content: "\e63d";
+}
+
+.nc-icon-shangxiaxuanzeV6xx:before {
+ content: "\e63e";
+}
+
+.nc-icon-shangV6xx-1:before {
+ content: "\e63f";
+}
+
+.nc-icon-shangxiajiantouV6xx:before {
+ content: "\e640";
+}
+
+.nc-icon-jiamengV6xx:before {
+ content: "\e6f9";
+}
+
+.nc-icon-yingyongzhongxinV6xx-1:before {
+ content: "\e6f5";
+}
+
+.nc-icon-yingyongzhongxinV6xx:before {
+ content: "\e6fd";
+}
+
+.nc-icon-yingyongV6xx:before {
+ content: "\e6f4";
+}
+
+.nc-icon-gouwucheV6xx-2:before {
+ content: "\e6fe";
+}
+
+.nc-icon-shouyeV6xx:before {
+ content: "\e6ff";
+}
+
+.nc-icon-yingyongliebiaoV6xx:before {
+ content: "\e700";
+}
+
+.nc-icon-gouwucheV6xx-1:before {
+ content: "\e701";
+}
+
+.nc-icon-gouwucheV6xx:before {
+ content: "\e702";
+}
+
+.nc-icon-fenleiV6xx:before {
+ content: "\e703";
+}
+
+.nc-icon-jiamengV6xx1:before {
+ content: "\e704";
+}
+
+.nc-icon-wodeV6xx1:before {
+ content: "\e705";
+}
+
+.nc-icon-wodeV6xx-11:before {
+ content: "\e706";
+}
+
+.nc-icon-qiuzhirenyuanV6xx1:before {
+ content: "\e707";
+}
+
+.nc-icon-gerenzhongxinV6xx2:before {
+ content: "\e708";
+}
+
+.nc-icon-woV6xx1:before {
+ content: "\e709";
+}
+
+.nc-icon-ruzhurenV6xx1:before {
+ content: "\e70a";
+}
+
+.nc-icon-xiangjiV6xx:before {
+ content: "\e70b";
+}
+
+.nc-icon-shezhiV6xx-1:before {
+ content: "\e70c";
+}
+
+.nc-icon-sousuoV6xx:before {
+ content: "\e70d";
+}
+
+.nc-icon-xiangjiV6xx-1:before {
+ content: "\e70e";
+}
+
+.nc-icon-shuaxinV6xx:before {
+ content: "\e70f";
+}
+
+.nc-icon-shezhiV6xx-2:before {
+ content: "\e710";
+}
+
+.nc-icon-shaixuanV6xx:before {
+ content: "\e711";
+}
+
+.nc-icon-shezhiV6xx:before {
+ content: "\e712";
+}
+
+.nc-icon-fenxiangV6xx-1:before {
+ content: "\e713";
+}
+
+.nc-icon-fenxiangV6xx-2:before {
+ content: "\e714";
+}
+
+.nc-icon-fenxiangV6xx:before {
+ content: "\e715";
+}
+
+.nc-icon-xiaoxiV6xx:before {
+ content: "\e716";
+}
+
+.nc-icon-duanxinV6xx-1:before {
+ content: "\e717";
+}
+
+.nc-icon-xinxiV6xx:before {
+ content: "\e718";
+}
+
+.nc-icon-kefuV6xx:before {
+ content: "\e719";
+}
+
+.nc-icon-lianxikefuV6xx:before {
+ content: "\e71a";
+}
+
+.nc-icon-piaoxinxiV6xx:before {
+ content: "\e71b";
+}
+
+.nc-icon-kefuV6xx-4:before {
+ content: "\e71c";
+}
+
+.nc-icon-kefuV6xx-2:before {
+ content: "\e71d";
+}
+
+.nc-icon-kefuV6xx-1:before {
+ content: "\e71e";
+}
+
+.nc-icon-dakaixinxiV6xx:before {
+ content: "\e71f";
+}
+
+.nc-icon-dianxinxiV6xx:before {
+ content: "\e720";
+}
+
+.nc-icon-kefuV6xx-3:before {
+ content: "\e721";
+}
+
+.nc-icon-duanxinV6xx:before {
+ content: "\e722";
+}
+
+.nc-icon-wodeshoucangV6xx:before {
+ content: "\e723";
+}
+
+.nc-icon-naolingV6xx:before {
+ content: "\e724";
+}
+
+.nc-icon-shoucangV6xx:before {
+ content: "\e725";
+}
+
+.nc-icon-shoucangV6xx-1:before {
+ content: "\e726";
+}
+
+.nc-icon-shijianV6xx:before {
+ content: "\e727";
+}
+
+.nc-icon-lingdangV6xx:before {
+ content: "\e728";
+}
+
+.nc-icon-shizhongV6xx:before {
+ content: "\e729";
+}
+
+.nc-icon-guanzhuV6xx:before {
+ content: "\e72a";
+}
+
+.nc-icon-naozhongV6xx:before {
+ content: "\e72b";
+}
+
+.nc-icon-daifahuoV6xx:before {
+ content: "\e72c";
+}
+
+.nc-icon-shangchengV6xx:before {
+ content: "\e72d";
+}
+
+.nc-icon-youhuiV6xx:before {
+ content: "\e72e";
+}
+
+.nc-icon-zongjifenV6xx:before {
+ content: "\e72f";
+}
+
+.nc-icon-zhekouquanV6xx:before {
+ content: "\e730";
+}
+
+.nc-icon-jifenV6xx:before {
+ content: "\e731";
+}
+
+.nc-icon-youhuiquanV6xx-2:before {
+ content: "\e732";
+}
+
+.nc-icon-youhuiquanV6xx-1:before {
+ content: "\e733";
+}
+
+.nc-icon-jifenduihuanV6xx:before {
+ content: "\e734";
+}
+
+.nc-icon-youhuiquanV6xx:before {
+ content: "\e735";
+}
+
+.nc-icon-libaoV6xx:before {
+ content: "\e736";
+}
+
+.nc-icon-liwuV6xx:before {
+ content: "\e737";
+}
+
+.nc-icon-biaoqianV6xx:before {
+ content: "\e738";
+}
+
+.nc-icon-qianbaoyueV6xx:before {
+ content: "\e739";
+}
+
+.nc-icon-tuikuanV6xx:before {
+ content: "\e73a";
+}
+
+.nc-icon-qianbaoV6xx:before {
+ content: "\e73b";
+}
+
+.nc-icon-yueV6xx:before {
+ content: "\e73c";
+}
+
+.nc-icon-jinrongV6xx:before {
+ content: "\e73d";
+}
+
+.nc-icon-riliV6xx:before {
+ content: "\e73e";
+}
+
+.nc-icon-wodedengjiV6xx:before {
+ content: "\e73f";
+}
+
+.nc-icon-tuiguangV6xx:before {
+ content: "\e740";
+}
+
+.nc-icon-huiyuandengjiV6xx:before {
+ content: "\e741";
+}
+
+.nc-icon-wodetuiguangV6xx:before {
+ content: "\e742";
+}
+
+.nc-icon-fenxiaoV6xx:before {
+ content: "\e743";
+}
+
+.nc-icon-meiriqiandaoV6xx:before {
+ content: "\e744";
+}
+
+.nc-icon-dizhiguanliV6xx:before {
+ content: "\e745";
+}
+
+.nc-icon-daishouhuoV6xx:before {
+ content: "\e746";
+}
+
+.nc-icon-daishouhuoV6xx-3:before {
+ content: "\e747";
+}
+
+.nc-icon-daifahuoV6xx-2:before {
+ content: "\e748";
+}
+
+.nc-icon-yinhangkaV6xx:before {
+ content: "\e749";
+}
+
+.nc-icon-daifahuoV6xx-1:before {
+ content: "\e74a";
+}
+
+.nc-icon-daifahuoV6xx-3:before {
+ content: "\e74b";
+}
+
+.nc-icon-zhankai-yousuojinV6xx:before {
+ content: "\e74c";
+}
+
+.nc-icon-shouqi-zuosuojinV6xx:before {
+ content: "\e74d";
+}
+
+.nc-icon-wendangV6xx:before {
+ content: "\e74e";
+}
+
+.nc-icon-xiaolianV6xx:before {
+ content: "\e74f";
+}
+
+.nc-icon-jiaohuanV6xx:before {
+ content: "\e750";
+}
+
+.nc-icon-yuanquanV6xx:before {
+ content: "\e751";
+}
+
+.nc-icon-a-Group840V6xx:before {
+ content: "\e752";
+}
+
+.nc-icon-loucengV6xx:before {
+ content: "\e753";
+}
+
+.nc-icon-kuozhanV6xx:before {
+ content: "\e754";
+}
+
+.nc-icon-saoyisaoV6xx:before {
+ content: "\e755";
+}
+
+.nc-icon-saotiaoxingmaV6xx:before {
+ content: "\e756";
+}
+
+.nc-icon-saotiaoxingmaV6xx-1:before {
+ content: "\e757";
+}
+
+.nc-icon-erweimaV6xx-1:before {
+ content: "\e758";
+}
+
+.nc-icon-fuzhiV6xx:before {
+ content: "\e759";
+}
+
+.nc-icon-lianjieV6xx:before {
+ content: "\e75a";
+}
+
+.nc-icon-dianhuaV6xx:before {
+ content: "\e75b";
+}
+
+.nc-icon-hexiaotaiV6xx:before {
+ content: "\e75c";
+}
+
+.nc-icon-fengefuV6xx:before {
+ content: "\e75d";
+}
+
+.nc-icon-fangdaV6xx:before {
+ content: "\e75e";
+}
+
+.nc-icon-erweimaV6xx:before {
+ content: "\e75f";
+}
+
+.nc-icon-daifahuoV6xx-4:before {
+ content: "\e760";
+}
diff --git a/src/styles/uview-theme.scss b/src/styles/uview-theme.scss
new file mode 100644
index 0000000..c657289
--- /dev/null
+++ b/src/styles/uview-theme.scss
@@ -0,0 +1,40 @@
+$u-main-color: #303133;
+$u-content-color: #606266;
+$u-tips-color: #909193;
+$u-light-color: #c0c4cc;
+$u-border-color: #dadbde;
+$u-bg-color: #f3f4f6;
+$u-disabled-color: #c8c9cc;
+
+$u-primary: var(--primary-color);
+$u-primary-dark: var(--primary-color-dark);
+$u-primary-disabled: var(--primary-color-disabled);
+$u-primary-light: var(--primary-color-light);
+
+$u-warning: #f9ae3d;
+$u-warning-dark: #f1a532;
+$u-warning-disabled: #f9d39b;
+$u-warning-light: #fdf6ec;
+
+$u-success: #5ac725;
+$u-success-dark: #53c21d;
+$u-success-disabled: #a9e08f;
+$u-success-light: #f5fff0;
+
+$u-error: #f56c6c;
+$u-error-dark: #e45656;
+$u-error-disabled: #f7b2b2;
+$u-error-light: #fef0f0;
+
+$u-info: #909399;
+$u-info-dark: #767a82;
+$u-info-disabled: #c4c6c9;
+$u-info-light: #f4f4f5;
+
+// scss混入,为了少写几行#ifndef
+@mixin flex($direction: row) {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: $direction;
+}
diff --git a/src/types/global.d.ts b/src/types/global.d.ts
new file mode 100644
index 0000000..ef73232
--- /dev/null
+++ b/src/types/global.d.ts
@@ -0,0 +1,21 @@
+declare interface redirectOptions {
+ url : string
+ mode ?: 'switchTab' | 'navigateTo' | 'reLaunch' | 'redirectTo'
+ param ?: AnyObject
+ success ?: () => {}
+ fail ?: () => {}
+ complete ?: () => {}
+}
+
+declare interface requestMobileParam {
+ mobile : string,
+ captcha_code : string,
+ captcha_key : string,
+ type : string
+}
+
+declare interface responseResult {
+ code : number,
+ data : any,
+ msg : string
+}
\ No newline at end of file
diff --git a/src/types/weixin-js-sdk.d.ts b/src/types/weixin-js-sdk.d.ts
new file mode 100644
index 0000000..b90ee8d
--- /dev/null
+++ b/src/types/weixin-js-sdk.d.ts
@@ -0,0 +1,769 @@
+declare namespace WeixinJsSdk {
+ /** **************************************************************************
+ * Type definations
+ ****************************************************************************/
+ type JSApis =
+ | 'onMenuShareTimeline'
+ | 'onMenuShareAppMessage'
+ | 'onMenuShareQQ'
+ | 'onMenuShareWeibo'
+ | 'onMenuShareQZone'
+ | 'startRecord'
+ | 'stopRecord'
+ | 'onVoiceRecordEnd'
+ | 'playVoice'
+ | 'pauseVoice'
+ | 'stopVoice'
+ | 'onVoicePlayEnd'
+ | 'uploadVoice'
+ | 'downloadVoice'
+ | 'chooseImage'
+ | 'previewImage'
+ | 'uploadImage'
+ | 'downloadImage'
+ | 'translateVoice'
+ | 'getNetworkType'
+ | 'openLocation'
+ | 'getLocation'
+ | 'hideOptionMenu'
+ | 'showOptionMenu'
+ | 'hideMenuItems'
+ | 'showMenuItems'
+ | 'hideAllNonBaseMenuItem'
+ | 'showAllNonBaseMenuItem'
+ | 'closeWindow'
+ | 'scanQRCode'
+ | 'chooseWXPay'
+ | 'openProductSpecificView'
+ | 'addCard'
+ | 'chooseCard'
+ | 'openCard'
+ | 'checkJsApi'
+ | 'onRecordEnd'
+ | 'openWXDeviceLib'
+ | 'closeWXDeviceLib'
+ | 'configWXDeviceWiFi'
+ | 'getWXDeviceInfos'
+ | 'sendDataToWXDevice'
+ | 'startScanWXDevice'
+ | 'stopScanWXDevice'
+ | 'connectWXDevice'
+ | 'disconnectWXDevice'
+ | 'getWXDeviceTicket'
+ | 'WeixinJSBridgeReady'
+ | 'onWXDeviceBindStateChange'
+ | 'onWXDeviceStateChange'
+ | 'onScanWXDeviceResult'
+ | 'onReceiveDataFromWXDevice'
+ | 'onWXDeviceBluetoothStateChange'
+ | 'updateAppMessageShareData'
+ | 'updateTimelineShareData'
+
+ type Menus =
+ | 'menuItem:exposeArticle' // 举报
+ | 'menuItem:setFont' // 调整字体
+ | 'menuItem:dayMode' // 日间模式
+ | 'menuItem:nightMode' // 夜间模式
+ | 'menuItem:refresh' // 刷新
+ | 'menuItem:profile' // 查看公众号(已添加)
+ | 'menuItem:addContact' // 查看公众号(未添加)
+ | 'menuItem:share:appMessage' // 发送给朋友
+ | 'menuItem:share:timeline' // 分享到朋友圈
+ | 'menuItem:share:qq' // 分享到 QQ
+ | 'menuItem:share:weiboApp' // 分享到 Weibo
+ | 'menuItem:favorite' // 收藏
+ | 'menuItem:share:facebook' // 分享到 Facebook
+ | 'menuItem:share:QZone' // 分享到 QQ 空间
+ | 'menuItem:editTag' // 编辑标签
+ | 'menuItem:delete' // 删除
+ | 'menuItem:copyUrl' // 复制链接
+ | 'menuItem:originPage' // 原网页
+ | 'menuItem:readMode' // 阅读模式
+ | 'menuItem:openWithQQBrowser' // 在QQ浏览器中打开
+ | 'menuItem:openWithSafari' // 在Safari中打开
+ | 'menuItem:share:email' // 邮件
+ | 'menuItem:share:brand' // 一些特殊公众号
+
+ type scanTypes =
+ | 'qrCode' // 二维码
+ | 'barCode' // 一维码
+
+ type ImageSize = 'original' | 'compressed'
+ type SourceType = 'album' | 'camera'
+
+ /** **************************************************************************
+ * Interface definations
+ ****************************************************************************/
+
+ interface ConfigOptions {
+ /**
+ * 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,
+ * 可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+ */
+ debug ?: boolean
+
+ /**
+ * 公众号的唯一标识
+ */
+ appId : string
+
+ /**
+ * 生成签名的时间戳
+ */
+ timestamp : string | number
+
+ /**
+ * 生成签名的随机串
+ */
+ nonceStr : string
+
+ /**
+ * 签名
+ */
+ signature : string
+
+ /**
+ * 需要使用的JS接口列表
+ */
+ jsApiList : JSApis[]
+ /* beta */
+ // beta: boolean
+ [x : string] : any
+ }
+
+ /**
+ * 所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,
+ * 除了每个接口本身需要传的参数之外,还有以下通用参数
+ */
+ interface Callbacks {
+ /**
+ * 接口调用成功时执行的回调函数。
+ */
+ success ?: (res : any) => void
+
+ /**
+ * 接口调用失败时执行的回调函数。
+ */
+ fail ?: (res : any) => void
+
+ /**
+ * 接口调用完成时执行的回调函数,无论成功或失败都会执行。
+ */
+ complete ?: (res : any) => void
+
+ /**
+ * 用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。
+ */
+ cancel ?: (res : any) => void
+ }
+
+ interface MenuCallbacks extends Callbacks {
+ /**
+ * 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。
+ */
+ trigger ?: (res : any) => void
+ }
+
+ interface CheckJsApiOptions extends Callbacks {
+ /**
+ * 需要检测的JS接口列表
+ */
+ jsApiList : JSApis[]
+ }
+
+ interface OnMenuShareTimelineOptions extends MenuCallbacks {
+ /**
+ * 分享标题
+ */
+ title : string
+
+ /**
+ * 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
+ */
+ link : string
+
+ /**
+ * 分享图标
+ */
+ imgUrl ?: string
+ }
+
+ interface OnMenuShareAppMessageOptions extends OnMenuShareTimelineOptions {
+ /**
+ * 分享描述
+ */
+ desc ?: string
+
+ /**
+ * 分享类型,music、video或link,不填默认为link
+ */
+ type ?: 'music' | 'video' | 'link'
+
+ /**
+ * 如果type是music或video,则要提供数据链接,默认为空
+ */
+ dataUrl ?: string
+ }
+
+ interface OnMenuShareQQ extends OnMenuShareTimelineOptions {
+ /**
+ * 分享描述
+ */
+ desc ?: string
+ }
+
+ interface OnMenuShareWeibo extends OnMenuShareTimelineOptions {
+ /**
+ * 分享描述
+ */
+ desc ?: string
+ }
+
+ interface OnMenuShareQZone extends OnMenuShareTimelineOptions {
+ /**
+ * 分享描述
+ */
+ desc ?: string
+ }
+
+ interface ChooseImageOptions extends Callbacks {
+ /**
+ * 一次可选择图片数量
+ *
+ * 默认为 9
+ */
+ count ?: number
+
+ /**
+ * 可以指定是原图还是压缩图,默认二者都有
+ */
+ sizeType ?: ImageSize[]
+
+ /**
+ * 可以指定来源是相册还是相机,默认二者都有
+ */
+ sourceType ?: SourceType[]
+ }
+
+ interface PreviewImageOptions extends Callbacks {
+ /**
+ * 当前显示图片的 http 链接
+ */
+ current : string
+
+ /**
+ * 需要预览的图片 http 链接列表
+ */
+ urls : string[]
+ }
+
+ interface UploadImageOptions extends Callbacks {
+ /**
+ * 需要上传的图片的本地ID,由chooseImage接口获得
+ */
+ localId : string
+
+ /**
+ * 显示进度提示
+ */
+ isShowProgressTips ?: boolean
+ }
+
+ interface DownloadImageOptions extends Callbacks {
+ /**
+ * 需要下载的图片的服务器端ID,由uploadImage接口获得
+ */
+ serverId : string
+
+ /**
+ * 显示进度提示
+ */
+ isShowProgressTips ?: boolean
+ }
+
+ interface GetLocalImgDataOptions extends Callbacks {
+ /**
+ * 图片的localID
+ */
+ localId : string
+ }
+
+ interface LocalVoiceOptions extends Callbacks {
+ /**
+ * 本地ID,由 stopRecord 接口获得
+ */
+ localId : string
+ }
+
+ interface UploadVoiceOptions extends LocalVoiceOptions {
+ /**
+ * 显示进度提示
+ */
+ isShowProgressTips ?: boolean
+ }
+
+ interface DownloadVoiceOptions extends Callbacks {
+ /**
+ * 需要下载的音频的服务器端ID,由uploadVoice接口获得
+ */
+ serverId : string
+
+ /**
+ * 显示进度提示
+ */
+ isShowProgressTips ?: boolean
+ }
+
+ interface OpenLocationOptions extends Callbacks {
+ /**
+ * 纬度,浮点数,范围为90 ~ -90
+ */
+ latitude : number
+
+ /**
+ * 经度,浮点数,范围为180 ~ -180。
+ */
+ longitude : number
+
+ /**
+ * 位置名
+ */
+ name : string
+
+ /**
+ * 地址详情说明
+ */
+ address : string
+
+ /**
+ * 地图缩放级别,整形值,范围从1~28。默认为最大
+ */
+ scale ?: number
+
+ /**
+ * 在查看位置界面底部显示的超链接,可点击跳转
+ */
+ infoUrl ?: string
+ }
+
+ interface GetLocationOptions extends Callbacks {
+ /**
+ * 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
+ */
+ type : 'wgs84' | 'gcj02'
+ }
+
+ interface StartSearchBeacons {
+ /**
+ * 摇周边的业务ticket, 系统自动添加在摇出来的页面链接后面
+ */
+ ticket : string
+ }
+
+ interface MenuOptions {
+ menuList : Menus[]
+ }
+
+ interface ScanQRCodeOptions extends Callbacks {
+ /**
+ * 默认为0,扫描结果由微信处理,1则直接返回扫描结果
+ */
+ needResult ?: 0 | 1
+
+ /**
+ * 可以指定扫二维码还是一维码,默认二者都有
+ */
+ scanType ?: scanTypes[]
+ }
+
+ interface OpenProductSpecificViewOptions {
+ /**
+ * 商品id
+ */
+ productId : string
+
+ /**
+ * 0.默认值,普通商品详情页
+ * 1.扫一扫商品详情页
+ * 2.小店商品详情页
+ */
+ viewType : 0 | 1 | 2
+ }
+
+ interface ChooseCardOptions extends Callbacks {
+ /**
+ * 门店Id
+ */
+ shopId ?: string
+
+ /**
+ * 卡券类型
+ */
+ cardType ?: string
+
+ /**
+ * 卡券Id
+ */
+ cardId ?: string
+
+ /**
+ * 卡券签名时间戳
+ */
+ timestamp : number
+
+ /**
+ * 卡券签名随机串
+ */
+ nonceStr : string
+
+ /**
+ * 签名方式,默认'SHA1'
+ */
+ signType : 'SHA1'
+
+ /**
+ * 卡券签名
+ */
+ cardSign : string
+ }
+
+ interface AddCard {
+ cardId : string
+ cardExt : string
+ }
+
+ interface AddCardOptions extends Callbacks {
+ cardList : AddCard[]
+ }
+
+ interface OpenCard {
+ cardId : string
+ code : string
+ }
+
+ interface OpenCardOptions extends Callbacks {
+ cardList : OpenCard[]
+ }
+
+ interface ChooseWXPayOptions extends Callbacks {
+ /**
+ * 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。
+ * 但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
+ */
+ timestamp : string
+
+ /**
+ * 支付签名随机串,不长于 32 位
+ */
+ nonceStr : string
+
+ /**
+ * 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
+ */
+ package : string
+
+ /**
+ * 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
+ */
+ signType : 'SHA1' | 'MD5'
+
+ /**
+ * 支付签名
+ */
+ paySign : string
+ }
+
+ /** **************************************************************************
+ * 配置方法
+ ****************************************************************************/
+
+ /**
+ * 注入权限验证配置
+ * 所有需要使用 JS-SDK 的页面必须先注入配置信息,否则将无法调用。
+ * (同一个 url 仅需调用一次,对于变化 url 的 SPA 的 web app 可在每次url变化时进行调用,
+ * 目前 Android 微信客户端不支持 pushState 的 H5 新特性,
+ * 所以使用 pushState 来实现 web app 的页面会导致签名失败,
+ * 此问题会在 Android6.2中修复。)
+ */
+ function config(options : ConfigOptions) : void
+
+ /**
+ * 处理成功验证
+ *
+ * config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,
+ * config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,
+ * 则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,
+ * 则可以直接调用,不需要放在ready函数中。
+ */
+ function ready(callback : () => void) : void
+
+ /**
+ * 处理失败验证
+ *
+ * config信息验证失败会执行error函数,如签名过期导致验证失败,
+ * 具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,
+ * 对于SPA可以在这里更新签名。
+ */
+ function error(callback : (res : any) => void) : void
+
+ /**
+ * 判断当前客户端版本是否支持指定JS接口
+ *
+ * 备注:checkJsApi接口是客户端6.0.2新引入的一个预留接口,
+ * 第一期开放的接口均可不使用checkJsApi来检测。
+ */
+ function checkJsApi(options : CheckJsApiOptions) : void
+
+ /** **************************************************************************
+ * 分享接口
+ ****************************************************************************/
+
+ /**
+ * 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口
+ */
+ function onMenuShareTimeline(options : OnMenuShareTimelineOptions) : void
+
+ /**
+ * 获取“分享给朋友”按钮点击状态及自定义分享内容接口
+ */
+ function onMenuShareAppMessage(options : OnMenuShareAppMessageOptions) : void
+
+ /**
+ * 获取“分享到QQ”按钮点击状态及自定义分享内容接口
+ */
+ function onMenuShareQQ(options : OnMenuShareQQ) : void
+
+ /**
+ * 获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口
+ */
+ function onMenuShareWeibo(options : OnMenuShareWeibo) : void
+
+ /**
+ * 获取“分享到QQ空间”按钮点击状态及自定义分享内容接口
+ */
+ function onMenuShareQZone(options : OnMenuShareQZone) : void
+
+ /** **************************************************************************
+ * 图像接口
+ ****************************************************************************/
+
+ /**
+ * 拍照或从手机相册中选图接口
+ */
+ function chooseImage(options : ChooseImageOptions) : void
+
+ /**
+ * 预览图片接口
+ */
+ function previewImage(options : PreviewImageOptions) : void
+
+ /**
+ * 上传图片接口
+ *
+ * 备注:上传图片有效期3天,可用微信多媒体接口下载图片到自己的服务器,此处获得的 serverId 即 media_id。
+ */
+ function uploadImage(options : UploadImageOptions) : void
+
+ /**
+ * 下载图片接口
+ */
+ function downloadImage(options : DownloadImageOptions) : void
+
+ /**
+ * 获取本地图片接口
+ */
+ function getLocalImgData(options : GetLocalImgDataOptions) : void
+
+ /** **************************************************************************
+ * 音频接口
+ ****************************************************************************/
+
+ /**
+ * 开始录音接口
+ */
+ function startRecord() : void
+
+ /**
+ * 停止录音接口
+ */
+ function stopRecord(options : Callbacks) : void
+
+ /**
+ * 监听录音自动停止接口
+ */
+ function onVoiceRecordEnd(options : Callbacks) : void
+
+ /**
+ * 播放语音接口
+ */
+ function playVoice(options : LocalVoiceOptions) : void
+
+ /**
+ * 暂停播放接口
+ */
+ function pauseVoice(options : LocalVoiceOptions) : void
+
+ /**
+ * 停止播放接口
+ */
+ function stopVoice(options : LocalVoiceOptions) : void
+
+ /**
+ * 监听语音播放完毕接口
+ */
+ function onVoicePlayEnd(options : Callbacks) : void
+
+ /**
+ * 上传语音接口
+ */
+ function uploadVoice(options : UploadVoiceOptions) : void
+
+ /**
+ * 下载语音接口
+ */
+ function downloadVoice(options : DownloadVoiceOptions) : void
+
+ /** **************************************************************************
+ * 智能接口
+ ****************************************************************************/
+
+ /**
+ * 识别音频并返回识别结果接口
+ */
+ function translateVoice(options : UploadVoiceOptions) : void
+
+ /** **************************************************************************
+ * 设备信息
+ ****************************************************************************/
+
+ /**
+ * 获取网络状态接口
+ */
+ function getNetworkType(options : Callbacks) : void
+
+ /** **************************************************************************
+ * 地理信息
+ ****************************************************************************/
+
+ /**
+ * 使用微信内置地图查看位置接口
+ */
+ function openLocation(options : OpenLocationOptions) : void
+
+ /**
+ * 获取地理位置接口
+ */
+ function getLocation(options : GetLocationOptions) : void
+
+ /** **************************************************************************
+ * 摇一摇周边
+ ****************************************************************************/
+
+ /**
+ * 开启查找周边ibeacon设备接口
+ */
+ function startSearchBeacons(options : StartSearchBeacons) : void
+
+ /**
+ * 关闭查找周边ibeacon设备接口
+ */
+ function stopSearchBeacons(options : Callbacks) : void
+
+ /**
+ * 监听周边ibeacon设备接口
+ *
+ * 备注:上述摇一摇周边接口使用注意事项及更多返回结果说明,请参考:摇一摇周边获取设备信息
+ */
+ function onSearchBeacons(options : Callbacks) : void
+
+ /** **************************************************************************
+ * 界面操作
+ ****************************************************************************/
+
+ /**
+ * 关闭当前网页窗口接口
+ */
+ function closeWindow() : void
+
+ /**
+ * 批量隐藏功能按钮接口
+ */
+ function hideMenuItems(options : MenuOptions) : void
+
+ /**
+ * 批量显示功能按钮接口
+ */
+ function showMenuItems(options : MenuOptions) : void
+
+ /**
+ * 隐藏所有非基础按钮接口
+ */
+ function hideAllNonBaseMenuItem() : void
+
+ /**
+ * 显示所有功能按钮接口
+ */
+ function showAllNonBaseMenuItem() : void
+
+ /** **************************************************************************
+ * 微信扫一扫
+ ****************************************************************************/
+
+ /**
+ * 调起微信扫一扫接口
+ */
+ function scanQRCode(options : ScanQRCodeOptions) : void
+
+ /** **************************************************************************
+ * 微信小店
+ ****************************************************************************/
+
+ /**
+ * 跳转微信商品页接口
+ */
+ function openProductSpecificView(
+ options : OpenProductSpecificViewOptions
+ ) : void
+
+ /** **************************************************************************
+ * 微信卡券
+ ****************************************************************************/
+
+ /**
+ * 拉取适用卡券列表并获取用户选择信息
+ */
+ function chooseCard(options : ChooseCardOptions) : void
+
+ /**
+ * 批量添加卡券接口
+ */
+ function addCard(options : AddCardOptions) : void
+
+ /**
+ * 查看微信卡包中的卡券接口
+ */
+ function openCard(options : OpenCardOptions) : void
+
+ /** **************************************************************************
+ * 微信支付
+ ****************************************************************************/
+
+ /**
+ * 发起一个微信支付请求
+ */
+ function chooseWXPay(options : ChooseWXPayOptions) : void
+
+ /**
+ * 分享给朋友
+ */
+ function updateAppMessageShareData(options : OnMenuShareAppMessageOptions) : void
+
+ /**
+ * 分享到朋友圈
+ */
+ function updateTimelineShareData(options : OnMenuShareAppMessageOptions) : void
+}
+
+declare module 'weixin-js-sdk' {
+ export = WeixinJsSdk
+}
\ No newline at end of file
diff --git a/src/uni.scss b/src/uni.scss
new file mode 100644
index 0000000..970ec93
--- /dev/null
+++ b/src/uni.scss
@@ -0,0 +1,79 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: var(--primary-color);
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color: #333; //基本色
+$uni-text-color-inverse: #fff; //反色
+$uni-text-color-grey: #999; //辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable: #c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color: #ffffff;
+$uni-bg-color-grey: #f8f8f8;
+$uni-bg-color-hover: #f1f1f1; //点击状态颜色
+$uni-bg-color-mask: rgba(0, 0, 0, 0.4); //遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color: #c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm: 12px;
+$uni-font-size-base: 14px;
+$uni-font-size-lg: 16;
+
+/* 图片尺寸 */
+$uni-img-size-sm: 20px;
+$uni-img-size-base: 26px;
+$uni-img-size-lg: 40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2c405a; // 文章标题颜色
+$uni-font-size-title: 20px;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle: 26px;
+$uni-color-paragraph: #3f536e; // 文章段落颜色
+$uni-font-size-paragraph: 15px;
+
+
+@import '@/styles/uview-theme.scss';
diff --git a/src/uni_modules/piaoyi-cityPicker/changelog.md b/src/uni_modules/piaoyi-cityPicker/changelog.md
new file mode 100644
index 0000000..7554b0a
--- /dev/null
+++ b/src/uni_modules/piaoyi-cityPicker/changelog.md
@@ -0,0 +1,22 @@
+## 1.1.7(2024-10-29)
+修复底部露出部分组件bug
+## 1.1.6(2024-08-20)
+更新本地数据源为最新数据源
+## 1.1.5(2024-06-12)
+使用说明文档优化
+## 1.1.4(2024-06-12)
+增加问题反馈描述
+## 1.1.3(2024-02-29)
+更新使用文档
+## 1.1.2(2024-01-16)
+解决Vue3项目导入导出报错问题
+## 1.1.1(2023-12-06)
+defaultValue可以传入defaultValue:['河北省','唐山市','丰南区']数组类型以及defaultValue: '420103'地区编码字符串类型
+## 1.1.0(2023-12-05)
+即默认值传入地区编码,也支持传入中文省市区数组
+## 1.0.9(2023-12-04)
+优化
+## 1.0.8(2023-10-24)
+修复东菀市和中山市下各镇的行政编码错误问题
+## 1.0.4(2023-09-15)
+改为uni_modules规范
\ No newline at end of file
diff --git a/src/uni_modules/piaoyi-cityPicker/components/piaoyi-cityPicker/cityData.js b/src/uni_modules/piaoyi-cityPicker/components/piaoyi-cityPicker/cityData.js
new file mode 100644
index 0000000..cc05c11
--- /dev/null
+++ b/src/uni_modules/piaoyi-cityPicker/components/piaoyi-cityPicker/cityData.js
@@ -0,0 +1,10661 @@
+export const addressList = [{
+ "code": "11",
+ "name": "北京市",
+ "children": [{
+ "code": "1101",
+ "name": "市辖区",
+ "children": [{
+ "code": "110101",
+ "name": "东城区"
+ }, {
+ "code": "110102",
+ "name": "西城区"
+ }, {
+ "code": "110105",
+ "name": "朝阳区"
+ }, {
+ "code": "110106",
+ "name": "丰台区"
+ }, {
+ "code": "110107",
+ "name": "石景山区"
+ }, {
+ "code": "110108",
+ "name": "海淀区"
+ }, {
+ "code": "110109",
+ "name": "门头沟区"
+ }, {
+ "code": "110111",
+ "name": "房山区"
+ }, {
+ "code": "110112",
+ "name": "通州区"
+ }, {
+ "code": "110113",
+ "name": "顺义区"
+ }, {
+ "code": "110114",
+ "name": "昌平区"
+ }, {
+ "code": "110115",
+ "name": "大兴区"
+ }, {
+ "code": "110116",
+ "name": "怀柔区"
+ }, {
+ "code": "110117",
+ "name": "平谷区"
+ }, {
+ "code": "110118",
+ "name": "密云区"
+ }, {
+ "code": "110119",
+ "name": "延庆区"
+ }]
+ }]
+}, {
+ "code": "12",
+ "name": "天津市",
+ "children": [{
+ "code": "1201",
+ "name": "市辖区",
+ "children": [{
+ "code": "120101",
+ "name": "和平区"
+ }, {
+ "code": "120102",
+ "name": "河东区"
+ }, {
+ "code": "120103",
+ "name": "河西区"
+ }, {
+ "code": "120104",
+ "name": "南开区"
+ }, {
+ "code": "120105",
+ "name": "河北区"
+ }, {
+ "code": "120106",
+ "name": "红桥区"
+ }, {
+ "code": "120110",
+ "name": "东丽区"
+ }, {
+ "code": "120111",
+ "name": "西青区"
+ }, {
+ "code": "120112",
+ "name": "津南区"
+ }, {
+ "code": "120113",
+ "name": "北辰区"
+ }, {
+ "code": "120114",
+ "name": "武清区"
+ }, {
+ "code": "120115",
+ "name": "宝坻区"
+ }, {
+ "code": "120116",
+ "name": "滨海新区"
+ }, {
+ "code": "120117",
+ "name": "宁河区"
+ }, {
+ "code": "120118",
+ "name": "静海区"
+ }, {
+ "code": "120119",
+ "name": "蓟州区"
+ }]
+ }]
+}, {
+ "code": "13",
+ "name": "河北省",
+ "children": [{
+ "code": "1301",
+ "name": "石家庄市",
+ "children": [{
+ "code": "130102",
+ "name": "长安区"
+ }, {
+ "code": "130104",
+ "name": "桥西区"
+ }, {
+ "code": "130105",
+ "name": "新华区"
+ }, {
+ "code": "130107",
+ "name": "井陉矿区"
+ }, {
+ "code": "130108",
+ "name": "裕华区"
+ }, {
+ "code": "130109",
+ "name": "藁城区"
+ }, {
+ "code": "130110",
+ "name": "鹿泉区"
+ }, {
+ "code": "130111",
+ "name": "栾城区"
+ }, {
+ "code": "130121",
+ "name": "井陉县"
+ }, {
+ "code": "130123",
+ "name": "正定县"
+ }, {
+ "code": "130125",
+ "name": "行唐县"
+ }, {
+ "code": "130126",
+ "name": "灵寿县"
+ }, {
+ "code": "130127",
+ "name": "高邑县"
+ }, {
+ "code": "130128",
+ "name": "深泽县"
+ }, {
+ "code": "130129",
+ "name": "赞皇县"
+ }, {
+ "code": "130130",
+ "name": "无极县"
+ }, {
+ "code": "130131",
+ "name": "平山县"
+ }, {
+ "code": "130132",
+ "name": "元氏县"
+ }, {
+ "code": "130133",
+ "name": "赵县"
+ }, {
+ "code": "130171",
+ "name": "石家庄高新技术产业开发区"
+ }, {
+ "code": "130172",
+ "name": "石家庄循环化工园区"
+ }, {
+ "code": "130181",
+ "name": "辛集市"
+ }, {
+ "code": "130183",
+ "name": "晋州市"
+ }, {
+ "code": "130184",
+ "name": "新乐市"
+ }]
+ }, {
+ "code": "1302",
+ "name": "唐山市",
+ "children": [{
+ "code": "130202",
+ "name": "路南区"
+ }, {
+ "code": "130203",
+ "name": "路北区"
+ }, {
+ "code": "130204",
+ "name": "古冶区"
+ }, {
+ "code": "130205",
+ "name": "开平区"
+ }, {
+ "code": "130207",
+ "name": "丰南区"
+ }, {
+ "code": "130208",
+ "name": "丰润区"
+ }, {
+ "code": "130209",
+ "name": "曹妃甸区"
+ }, {
+ "code": "130224",
+ "name": "滦南县"
+ }, {
+ "code": "130225",
+ "name": "乐亭县"
+ }, {
+ "code": "130227",
+ "name": "迁西县"
+ }, {
+ "code": "130229",
+ "name": "玉田县"
+ }, {
+ "code": "130271",
+ "name": "河北唐山芦台经济开发区"
+ }, {
+ "code": "130272",
+ "name": "唐山市汉沽管理区"
+ }, {
+ "code": "130273",
+ "name": "唐山高新技术产业开发区"
+ }, {
+ "code": "130274",
+ "name": "河北唐山海港经济开发区"
+ }, {
+ "code": "130281",
+ "name": "遵化市"
+ }, {
+ "code": "130283",
+ "name": "迁安市"
+ }, {
+ "code": "130284",
+ "name": "滦州市"
+ }]
+ }, {
+ "code": "1303",
+ "name": "秦皇岛市",
+ "children": [{
+ "code": "130302",
+ "name": "海港区"
+ }, {
+ "code": "130303",
+ "name": "山海关区"
+ }, {
+ "code": "130304",
+ "name": "北戴河区"
+ }, {
+ "code": "130306",
+ "name": "抚宁区"
+ }, {
+ "code": "130321",
+ "name": "青龙满族自治县"
+ }, {
+ "code": "130322",
+ "name": "昌黎县"
+ }, {
+ "code": "130324",
+ "name": "卢龙县"
+ }, {
+ "code": "130371",
+ "name": "秦皇岛市经济技术开发区"
+ }, {
+ "code": "130372",
+ "name": "北戴河新区"
+ }]
+ }, {
+ "code": "1304",
+ "name": "邯郸市",
+ "children": [{
+ "code": "130402",
+ "name": "邯山区"
+ }, {
+ "code": "130403",
+ "name": "丛台区"
+ }, {
+ "code": "130404",
+ "name": "复兴区"
+ }, {
+ "code": "130406",
+ "name": "峰峰矿区"
+ }, {
+ "code": "130407",
+ "name": "肥乡区"
+ }, {
+ "code": "130408",
+ "name": "永年区"
+ }, {
+ "code": "130423",
+ "name": "临漳县"
+ }, {
+ "code": "130424",
+ "name": "成安县"
+ }, {
+ "code": "130425",
+ "name": "大名县"
+ }, {
+ "code": "130426",
+ "name": "涉县"
+ }, {
+ "code": "130427",
+ "name": "磁县"
+ }, {
+ "code": "130430",
+ "name": "邱县"
+ }, {
+ "code": "130431",
+ "name": "鸡泽县"
+ }, {
+ "code": "130432",
+ "name": "广平县"
+ }, {
+ "code": "130433",
+ "name": "馆陶县"
+ }, {
+ "code": "130434",
+ "name": "魏县"
+ }, {
+ "code": "130435",
+ "name": "曲周县"
+ }, {
+ "code": "130471",
+ "name": "邯郸经济技术开发区"
+ }, {
+ "code": "130473",
+ "name": "邯郸冀南新区"
+ }, {
+ "code": "130481",
+ "name": "武安市"
+ }]
+ }, {
+ "code": "1305",
+ "name": "邢台市",
+ "children": [{
+ "code": "130502",
+ "name": "襄都区"
+ }, {
+ "code": "130503",
+ "name": "信都区"
+ }, {
+ "code": "130505",
+ "name": "任泽区"
+ }, {
+ "code": "130506",
+ "name": "南和区"
+ }, {
+ "code": "130522",
+ "name": "临城县"
+ }, {
+ "code": "130523",
+ "name": "内丘县"
+ }, {
+ "code": "130524",
+ "name": "柏乡县"
+ }, {
+ "code": "130525",
+ "name": "隆尧县"
+ }, {
+ "code": "130528",
+ "name": "宁晋县"
+ }, {
+ "code": "130529",
+ "name": "巨鹿县"
+ }, {
+ "code": "130530",
+ "name": "新河县"
+ }, {
+ "code": "130531",
+ "name": "广宗县"
+ }, {
+ "code": "130532",
+ "name": "平乡县"
+ }, {
+ "code": "130533",
+ "name": "威县"
+ }, {
+ "code": "130534",
+ "name": "清河县"
+ }, {
+ "code": "130535",
+ "name": "临西县"
+ }, {
+ "code": "130571",
+ "name": "河北邢台经济开发区"
+ }, {
+ "code": "130581",
+ "name": "南宫市"
+ }, {
+ "code": "130582",
+ "name": "沙河市"
+ }]
+ }, {
+ "code": "1306",
+ "name": "保定市",
+ "children": [{
+ "code": "130602",
+ "name": "竞秀区"
+ }, {
+ "code": "130606",
+ "name": "莲池区"
+ }, {
+ "code": "130607",
+ "name": "满城区"
+ }, {
+ "code": "130608",
+ "name": "清苑区"
+ }, {
+ "code": "130609",
+ "name": "徐水区"
+ }, {
+ "code": "130623",
+ "name": "涞水县"
+ }, {
+ "code": "130624",
+ "name": "阜平县"
+ }, {
+ "code": "130626",
+ "name": "定兴县"
+ }, {
+ "code": "130627",
+ "name": "唐县"
+ }, {
+ "code": "130628",
+ "name": "高阳县"
+ }, {
+ "code": "130629",
+ "name": "容城县"
+ }, {
+ "code": "130630",
+ "name": "涞源县"
+ }, {
+ "code": "130631",
+ "name": "望都县"
+ }, {
+ "code": "130632",
+ "name": "安新县"
+ }, {
+ "code": "130633",
+ "name": "易县"
+ }, {
+ "code": "130634",
+ "name": "曲阳县"
+ }, {
+ "code": "130635",
+ "name": "蠡县"
+ }, {
+ "code": "130636",
+ "name": "顺平县"
+ }, {
+ "code": "130637",
+ "name": "博野县"
+ }, {
+ "code": "130638",
+ "name": "雄县"
+ }, {
+ "code": "130671",
+ "name": "保定高新技术产业开发区"
+ }, {
+ "code": "130672",
+ "name": "保定白沟新城"
+ }, {
+ "code": "130681",
+ "name": "涿州市"
+ }, {
+ "code": "130682",
+ "name": "定州市"
+ }, {
+ "code": "130683",
+ "name": "安国市"
+ }, {
+ "code": "130684",
+ "name": "高碑店市"
+ }]
+ }, {
+ "code": "1307",
+ "name": "张家口市",
+ "children": [{
+ "code": "130702",
+ "name": "桥东区"
+ }, {
+ "code": "130703",
+ "name": "桥西区"
+ }, {
+ "code": "130705",
+ "name": "宣化区"
+ }, {
+ "code": "130706",
+ "name": "下花园区"
+ }, {
+ "code": "130708",
+ "name": "万全区"
+ }, {
+ "code": "130709",
+ "name": "崇礼区"
+ }, {
+ "code": "130722",
+ "name": "张北县"
+ }, {
+ "code": "130723",
+ "name": "康保县"
+ }, {
+ "code": "130724",
+ "name": "沽源县"
+ }, {
+ "code": "130725",
+ "name": "尚义县"
+ }, {
+ "code": "130726",
+ "name": "蔚县"
+ }, {
+ "code": "130727",
+ "name": "阳原县"
+ }, {
+ "code": "130728",
+ "name": "怀安县"
+ }, {
+ "code": "130730",
+ "name": "怀来县"
+ }, {
+ "code": "130731",
+ "name": "涿鹿县"
+ }, {
+ "code": "130732",
+ "name": "赤城县"
+ }, {
+ "code": "130771",
+ "name": "张家口经济开发区"
+ }, {
+ "code": "130772",
+ "name": "张家口市察北管理区"
+ }, {
+ "code": "130773",
+ "name": "张家口市塞北管理区"
+ }]
+ }, {
+ "code": "1308",
+ "name": "承德市",
+ "children": [{
+ "code": "130802",
+ "name": "双桥区"
+ }, {
+ "code": "130803",
+ "name": "双滦区"
+ }, {
+ "code": "130804",
+ "name": "鹰手营子矿区"
+ }, {
+ "code": "130821",
+ "name": "承德县"
+ }, {
+ "code": "130822",
+ "name": "兴隆县"
+ }, {
+ "code": "130824",
+ "name": "滦平县"
+ }, {
+ "code": "130825",
+ "name": "隆化县"
+ }, {
+ "code": "130826",
+ "name": "丰宁满族自治县"
+ }, {
+ "code": "130827",
+ "name": "宽城满族自治县"
+ }, {
+ "code": "130828",
+ "name": "围场满族蒙古族自治县"
+ }, {
+ "code": "130871",
+ "name": "承德高新技术产业开发区"
+ }, {
+ "code": "130881",
+ "name": "平泉市"
+ }]
+ }, {
+ "code": "1309",
+ "name": "沧州市",
+ "children": [{
+ "code": "130902",
+ "name": "新华区"
+ }, {
+ "code": "130903",
+ "name": "运河区"
+ }, {
+ "code": "130921",
+ "name": "沧县"
+ }, {
+ "code": "130922",
+ "name": "青县"
+ }, {
+ "code": "130923",
+ "name": "东光县"
+ }, {
+ "code": "130924",
+ "name": "海兴县"
+ }, {
+ "code": "130925",
+ "name": "盐山县"
+ }, {
+ "code": "130926",
+ "name": "肃宁县"
+ }, {
+ "code": "130927",
+ "name": "南皮县"
+ }, {
+ "code": "130928",
+ "name": "吴桥县"
+ }, {
+ "code": "130929",
+ "name": "献县"
+ }, {
+ "code": "130930",
+ "name": "孟村回族自治县"
+ }, {
+ "code": "130971",
+ "name": "河北沧州经济开发区"
+ }, {
+ "code": "130972",
+ "name": "沧州高新技术产业开发区"
+ }, {
+ "code": "130973",
+ "name": "沧州渤海新区"
+ }, {
+ "code": "130981",
+ "name": "泊头市"
+ }, {
+ "code": "130982",
+ "name": "任丘市"
+ }, {
+ "code": "130983",
+ "name": "黄骅市"
+ }, {
+ "code": "130984",
+ "name": "河间市"
+ }]
+ }, {
+ "code": "1310",
+ "name": "廊坊市",
+ "children": [{
+ "code": "131002",
+ "name": "安次区"
+ }, {
+ "code": "131003",
+ "name": "广阳区"
+ }, {
+ "code": "131022",
+ "name": "固安县"
+ }, {
+ "code": "131023",
+ "name": "永清县"
+ }, {
+ "code": "131024",
+ "name": "香河县"
+ }, {
+ "code": "131025",
+ "name": "大城县"
+ }, {
+ "code": "131026",
+ "name": "文安县"
+ }, {
+ "code": "131028",
+ "name": "大厂回族自治县"
+ }, {
+ "code": "131071",
+ "name": "廊坊经济技术开发区"
+ }, {
+ "code": "131081",
+ "name": "霸州市"
+ }, {
+ "code": "131082",
+ "name": "三河市"
+ }]
+ }, {
+ "code": "1311",
+ "name": "衡水市",
+ "children": [{
+ "code": "131102",
+ "name": "桃城区"
+ }, {
+ "code": "131103",
+ "name": "冀州区"
+ }, {
+ "code": "131121",
+ "name": "枣强县"
+ }, {
+ "code": "131122",
+ "name": "武邑县"
+ }, {
+ "code": "131123",
+ "name": "武强县"
+ }, {
+ "code": "131124",
+ "name": "饶阳县"
+ }, {
+ "code": "131125",
+ "name": "安平县"
+ }, {
+ "code": "131126",
+ "name": "故城县"
+ }, {
+ "code": "131127",
+ "name": "景县"
+ }, {
+ "code": "131128",
+ "name": "阜城县"
+ }, {
+ "code": "131171",
+ "name": "河北衡水高新技术产业开发区"
+ }, {
+ "code": "131172",
+ "name": "衡水滨湖新区"
+ }, {
+ "code": "131182",
+ "name": "深州市"
+ }]
+ }]
+}, {
+ "code": "14",
+ "name": "山西省",
+ "children": [{
+ "code": "1401",
+ "name": "太原市",
+ "children": [{
+ "code": "140105",
+ "name": "小店区"
+ }, {
+ "code": "140106",
+ "name": "迎泽区"
+ }, {
+ "code": "140107",
+ "name": "杏花岭区"
+ }, {
+ "code": "140108",
+ "name": "尖草坪区"
+ }, {
+ "code": "140109",
+ "name": "万柏林区"
+ }, {
+ "code": "140110",
+ "name": "晋源区"
+ }, {
+ "code": "140121",
+ "name": "清徐县"
+ }, {
+ "code": "140122",
+ "name": "阳曲县"
+ }, {
+ "code": "140123",
+ "name": "娄烦县"
+ }, {
+ "code": "140171",
+ "name": "山西转型综合改革示范区"
+ }, {
+ "code": "140181",
+ "name": "古交市"
+ }]
+ }, {
+ "code": "1402",
+ "name": "大同市",
+ "children": [{
+ "code": "140212",
+ "name": "新荣区"
+ }, {
+ "code": "140213",
+ "name": "平城区"
+ }, {
+ "code": "140214",
+ "name": "云冈区"
+ }, {
+ "code": "140215",
+ "name": "云州区"
+ }, {
+ "code": "140221",
+ "name": "阳高县"
+ }, {
+ "code": "140222",
+ "name": "天镇县"
+ }, {
+ "code": "140223",
+ "name": "广灵县"
+ }, {
+ "code": "140224",
+ "name": "灵丘县"
+ }, {
+ "code": "140225",
+ "name": "浑源县"
+ }, {
+ "code": "140226",
+ "name": "左云县"
+ }, {
+ "code": "140271",
+ "name": "山西大同经济开发区"
+ }]
+ }, {
+ "code": "1403",
+ "name": "阳泉市",
+ "children": [{
+ "code": "140302",
+ "name": "城区"
+ }, {
+ "code": "140303",
+ "name": "矿区"
+ }, {
+ "code": "140311",
+ "name": "郊区"
+ }, {
+ "code": "140321",
+ "name": "平定县"
+ }, {
+ "code": "140322",
+ "name": "盂县"
+ }]
+ }, {
+ "code": "1404",
+ "name": "长治市",
+ "children": [{
+ "code": "140403",
+ "name": "潞州区"
+ }, {
+ "code": "140404",
+ "name": "上党区"
+ }, {
+ "code": "140405",
+ "name": "屯留区"
+ }, {
+ "code": "140406",
+ "name": "潞城区"
+ }, {
+ "code": "140423",
+ "name": "襄垣县"
+ }, {
+ "code": "140425",
+ "name": "平顺县"
+ }, {
+ "code": "140426",
+ "name": "黎城县"
+ }, {
+ "code": "140427",
+ "name": "壶关县"
+ }, {
+ "code": "140428",
+ "name": "长子县"
+ }, {
+ "code": "140429",
+ "name": "武乡县"
+ }, {
+ "code": "140430",
+ "name": "沁县"
+ }, {
+ "code": "140431",
+ "name": "沁源县"
+ }]
+ }, {
+ "code": "1405",
+ "name": "晋城市",
+ "children": [{
+ "code": "140502",
+ "name": "城区"
+ }, {
+ "code": "140521",
+ "name": "沁水县"
+ }, {
+ "code": "140522",
+ "name": "阳城县"
+ }, {
+ "code": "140524",
+ "name": "陵川县"
+ }, {
+ "code": "140525",
+ "name": "泽州县"
+ }, {
+ "code": "140581",
+ "name": "高平市"
+ }]
+ }, {
+ "code": "1406",
+ "name": "朔州市",
+ "children": [{
+ "code": "140602",
+ "name": "朔城区"
+ }, {
+ "code": "140603",
+ "name": "平鲁区"
+ }, {
+ "code": "140621",
+ "name": "山阴县"
+ }, {
+ "code": "140622",
+ "name": "应县"
+ }, {
+ "code": "140623",
+ "name": "右玉县"
+ }, {
+ "code": "140671",
+ "name": "山西朔州经济开发区"
+ }, {
+ "code": "140681",
+ "name": "怀仁市"
+ }]
+ }, {
+ "code": "1407",
+ "name": "晋中市",
+ "children": [{
+ "code": "140702",
+ "name": "榆次区"
+ }, {
+ "code": "140703",
+ "name": "太谷区"
+ }, {
+ "code": "140721",
+ "name": "榆社县"
+ }, {
+ "code": "140722",
+ "name": "左权县"
+ }, {
+ "code": "140723",
+ "name": "和顺县"
+ }, {
+ "code": "140724",
+ "name": "昔阳县"
+ }, {
+ "code": "140725",
+ "name": "寿阳县"
+ }, {
+ "code": "140727",
+ "name": "祁县"
+ }, {
+ "code": "140728",
+ "name": "平遥县"
+ }, {
+ "code": "140729",
+ "name": "灵石县"
+ }, {
+ "code": "140781",
+ "name": "介休市"
+ }]
+ }, {
+ "code": "1408",
+ "name": "运城市",
+ "children": [{
+ "code": "140802",
+ "name": "盐湖区"
+ }, {
+ "code": "140821",
+ "name": "临猗县"
+ }, {
+ "code": "140822",
+ "name": "万荣县"
+ }, {
+ "code": "140823",
+ "name": "闻喜县"
+ }, {
+ "code": "140824",
+ "name": "稷山县"
+ }, {
+ "code": "140825",
+ "name": "新绛县"
+ }, {
+ "code": "140826",
+ "name": "绛县"
+ }, {
+ "code": "140827",
+ "name": "垣曲县"
+ }, {
+ "code": "140828",
+ "name": "夏县"
+ }, {
+ "code": "140829",
+ "name": "平陆县"
+ }, {
+ "code": "140830",
+ "name": "芮城县"
+ }, {
+ "code": "140881",
+ "name": "永济市"
+ }, {
+ "code": "140882",
+ "name": "河津市"
+ }]
+ }, {
+ "code": "1409",
+ "name": "忻州市",
+ "children": [{
+ "code": "140902",
+ "name": "忻府区"
+ }, {
+ "code": "140921",
+ "name": "定襄县"
+ }, {
+ "code": "140922",
+ "name": "五台县"
+ }, {
+ "code": "140923",
+ "name": "代县"
+ }, {
+ "code": "140924",
+ "name": "繁峙县"
+ }, {
+ "code": "140925",
+ "name": "宁武县"
+ }, {
+ "code": "140926",
+ "name": "静乐县"
+ }, {
+ "code": "140927",
+ "name": "神池县"
+ }, {
+ "code": "140928",
+ "name": "五寨县"
+ }, {
+ "code": "140929",
+ "name": "岢岚县"
+ }, {
+ "code": "140930",
+ "name": "河曲县"
+ }, {
+ "code": "140931",
+ "name": "保德县"
+ }, {
+ "code": "140932",
+ "name": "偏关县"
+ }, {
+ "code": "140971",
+ "name": "五台山风景名胜区"
+ }, {
+ "code": "140981",
+ "name": "原平市"
+ }]
+ }, {
+ "code": "1410",
+ "name": "临汾市",
+ "children": [{
+ "code": "141002",
+ "name": "尧都区"
+ }, {
+ "code": "141021",
+ "name": "曲沃县"
+ }, {
+ "code": "141022",
+ "name": "翼城县"
+ }, {
+ "code": "141023",
+ "name": "襄汾县"
+ }, {
+ "code": "141024",
+ "name": "洪洞县"
+ }, {
+ "code": "141025",
+ "name": "古县"
+ }, {
+ "code": "141026",
+ "name": "安泽县"
+ }, {
+ "code": "141027",
+ "name": "浮山县"
+ }, {
+ "code": "141028",
+ "name": "吉县"
+ }, {
+ "code": "141029",
+ "name": "乡宁县"
+ }, {
+ "code": "141030",
+ "name": "大宁县"
+ }, {
+ "code": "141031",
+ "name": "隰县"
+ }, {
+ "code": "141032",
+ "name": "永和县"
+ }, {
+ "code": "141033",
+ "name": "蒲县"
+ }, {
+ "code": "141034",
+ "name": "汾西县"
+ }, {
+ "code": "141081",
+ "name": "侯马市"
+ }, {
+ "code": "141082",
+ "name": "霍州市"
+ }]
+ }, {
+ "code": "1411",
+ "name": "吕梁市",
+ "children": [{
+ "code": "141102",
+ "name": "离石区"
+ }, {
+ "code": "141121",
+ "name": "文水县"
+ }, {
+ "code": "141122",
+ "name": "交城县"
+ }, {
+ "code": "141123",
+ "name": "兴县"
+ }, {
+ "code": "141124",
+ "name": "临县"
+ }, {
+ "code": "141125",
+ "name": "柳林县"
+ }, {
+ "code": "141126",
+ "name": "石楼县"
+ }, {
+ "code": "141127",
+ "name": "岚县"
+ }, {
+ "code": "141128",
+ "name": "方山县"
+ }, {
+ "code": "141129",
+ "name": "中阳县"
+ }, {
+ "code": "141130",
+ "name": "交口县"
+ }, {
+ "code": "141181",
+ "name": "孝义市"
+ }, {
+ "code": "141182",
+ "name": "汾阳市"
+ }]
+ }]
+}, {
+ "code": "15",
+ "name": "内蒙古自治区",
+ "children": [{
+ "code": "1501",
+ "name": "呼和浩特市",
+ "children": [{
+ "code": "150102",
+ "name": "新城区"
+ }, {
+ "code": "150103",
+ "name": "回民区"
+ }, {
+ "code": "150104",
+ "name": "玉泉区"
+ }, {
+ "code": "150105",
+ "name": "赛罕区"
+ }, {
+ "code": "150121",
+ "name": "土默特左旗"
+ }, {
+ "code": "150122",
+ "name": "托克托县"
+ }, {
+ "code": "150123",
+ "name": "和林格尔县"
+ }, {
+ "code": "150124",
+ "name": "清水河县"
+ }, {
+ "code": "150125",
+ "name": "武川县"
+ }, {
+ "code": "150172",
+ "name": "呼和浩特经济技术开发区"
+ }]
+ }, {
+ "code": "1502",
+ "name": "包头市",
+ "children": [{
+ "code": "150202",
+ "name": "东河区"
+ }, {
+ "code": "150203",
+ "name": "昆都仑区"
+ }, {
+ "code": "150204",
+ "name": "青山区"
+ }, {
+ "code": "150205",
+ "name": "石拐区"
+ }, {
+ "code": "150206",
+ "name": "白云鄂博矿区"
+ }, {
+ "code": "150207",
+ "name": "九原区"
+ }, {
+ "code": "150221",
+ "name": "土默特右旗"
+ }, {
+ "code": "150222",
+ "name": "固阳县"
+ }, {
+ "code": "150223",
+ "name": "达尔罕茂明安联合旗"
+ }, {
+ "code": "150271",
+ "name": "包头稀土高新技术产业开发区"
+ }]
+ }, {
+ "code": "1503",
+ "name": "乌海市",
+ "children": [{
+ "code": "150302",
+ "name": "海勃湾区"
+ }, {
+ "code": "150303",
+ "name": "海南区"
+ }, {
+ "code": "150304",
+ "name": "乌达区"
+ }]
+ }, {
+ "code": "1504",
+ "name": "赤峰市",
+ "children": [{
+ "code": "150402",
+ "name": "红山区"
+ }, {
+ "code": "150403",
+ "name": "元宝山区"
+ }, {
+ "code": "150404",
+ "name": "松山区"
+ }, {
+ "code": "150421",
+ "name": "阿鲁科尔沁旗"
+ }, {
+ "code": "150422",
+ "name": "巴林左旗"
+ }, {
+ "code": "150423",
+ "name": "巴林右旗"
+ }, {
+ "code": "150424",
+ "name": "林西县"
+ }, {
+ "code": "150425",
+ "name": "克什克腾旗"
+ }, {
+ "code": "150426",
+ "name": "翁牛特旗"
+ }, {
+ "code": "150428",
+ "name": "喀喇沁旗"
+ }, {
+ "code": "150429",
+ "name": "宁城县"
+ }, {
+ "code": "150430",
+ "name": "敖汉旗"
+ }]
+ }, {
+ "code": "1505",
+ "name": "通辽市",
+ "children": [{
+ "code": "150502",
+ "name": "科尔沁区"
+ }, {
+ "code": "150521",
+ "name": "科尔沁左翼中旗"
+ }, {
+ "code": "150522",
+ "name": "科尔沁左翼后旗"
+ }, {
+ "code": "150523",
+ "name": "开鲁县"
+ }, {
+ "code": "150524",
+ "name": "库伦旗"
+ }, {
+ "code": "150525",
+ "name": "奈曼旗"
+ }, {
+ "code": "150526",
+ "name": "扎鲁特旗"
+ }, {
+ "code": "150571",
+ "name": "通辽经济技术开发区"
+ }, {
+ "code": "150581",
+ "name": "霍林郭勒市"
+ }]
+ }, {
+ "code": "1506",
+ "name": "鄂尔多斯市",
+ "children": [{
+ "code": "150602",
+ "name": "东胜区"
+ }, {
+ "code": "150603",
+ "name": "康巴什区"
+ }, {
+ "code": "150621",
+ "name": "达拉特旗"
+ }, {
+ "code": "150622",
+ "name": "准格尔旗"
+ }, {
+ "code": "150623",
+ "name": "鄂托克前旗"
+ }, {
+ "code": "150624",
+ "name": "鄂托克旗"
+ }, {
+ "code": "150625",
+ "name": "杭锦旗"
+ }, {
+ "code": "150626",
+ "name": "乌审旗"
+ }, {
+ "code": "150627",
+ "name": "伊金霍洛旗"
+ }]
+ }, {
+ "code": "1507",
+ "name": "呼伦贝尔市",
+ "children": [{
+ "code": "150702",
+ "name": "海拉尔区"
+ }, {
+ "code": "150703",
+ "name": "扎赉诺尔区"
+ }, {
+ "code": "150721",
+ "name": "阿荣旗"
+ }, {
+ "code": "150722",
+ "name": "莫力达瓦达斡尔族自治旗"
+ }, {
+ "code": "150723",
+ "name": "鄂伦春自治旗"
+ }, {
+ "code": "150724",
+ "name": "鄂温克族自治旗"
+ }, {
+ "code": "150725",
+ "name": "陈巴尔虎旗"
+ }, {
+ "code": "150726",
+ "name": "新巴尔虎左旗"
+ }, {
+ "code": "150727",
+ "name": "新巴尔虎右旗"
+ }, {
+ "code": "150781",
+ "name": "满洲里市"
+ }, {
+ "code": "150782",
+ "name": "牙克石市"
+ }, {
+ "code": "150783",
+ "name": "扎兰屯市"
+ }, {
+ "code": "150784",
+ "name": "额尔古纳市"
+ }, {
+ "code": "150785",
+ "name": "根河市"
+ }]
+ }, {
+ "code": "1508",
+ "name": "巴彦淖尔市",
+ "children": [{
+ "code": "150802",
+ "name": "临河区"
+ }, {
+ "code": "150821",
+ "name": "五原县"
+ }, {
+ "code": "150822",
+ "name": "磴口县"
+ }, {
+ "code": "150823",
+ "name": "乌拉特前旗"
+ }, {
+ "code": "150824",
+ "name": "乌拉特中旗"
+ }, {
+ "code": "150825",
+ "name": "乌拉特后旗"
+ }, {
+ "code": "150826",
+ "name": "杭锦后旗"
+ }]
+ }, {
+ "code": "1509",
+ "name": "乌兰察布市",
+ "children": [{
+ "code": "150902",
+ "name": "集宁区"
+ }, {
+ "code": "150921",
+ "name": "卓资县"
+ }, {
+ "code": "150922",
+ "name": "化德县"
+ }, {
+ "code": "150923",
+ "name": "商都县"
+ }, {
+ "code": "150924",
+ "name": "兴和县"
+ }, {
+ "code": "150925",
+ "name": "凉城县"
+ }, {
+ "code": "150926",
+ "name": "察哈尔右翼前旗"
+ }, {
+ "code": "150927",
+ "name": "察哈尔右翼中旗"
+ }, {
+ "code": "150928",
+ "name": "察哈尔右翼后旗"
+ }, {
+ "code": "150929",
+ "name": "四子王旗"
+ }, {
+ "code": "150981",
+ "name": "丰镇市"
+ }]
+ }, {
+ "code": "1522",
+ "name": "兴安盟",
+ "children": [{
+ "code": "152201",
+ "name": "乌兰浩特市"
+ }, {
+ "code": "152202",
+ "name": "阿尔山市"
+ }, {
+ "code": "152221",
+ "name": "科尔沁右翼前旗"
+ }, {
+ "code": "152222",
+ "name": "科尔沁右翼中旗"
+ }, {
+ "code": "152223",
+ "name": "扎赉特旗"
+ }, {
+ "code": "152224",
+ "name": "突泉县"
+ }]
+ }, {
+ "code": "1525",
+ "name": "锡林郭勒盟",
+ "children": [{
+ "code": "152501",
+ "name": "二连浩特市"
+ }, {
+ "code": "152502",
+ "name": "锡林浩特市"
+ }, {
+ "code": "152522",
+ "name": "阿巴嘎旗"
+ }, {
+ "code": "152523",
+ "name": "苏尼特左旗"
+ }, {
+ "code": "152524",
+ "name": "苏尼特右旗"
+ }, {
+ "code": "152525",
+ "name": "东乌珠穆沁旗"
+ }, {
+ "code": "152526",
+ "name": "西乌珠穆沁旗"
+ }, {
+ "code": "152527",
+ "name": "太仆寺旗"
+ }, {
+ "code": "152528",
+ "name": "镶黄旗"
+ }, {
+ "code": "152529",
+ "name": "正镶白旗"
+ }, {
+ "code": "152530",
+ "name": "正蓝旗"
+ }, {
+ "code": "152531",
+ "name": "多伦县"
+ }, {
+ "code": "152571",
+ "name": "乌拉盖管理区管委会"
+ }]
+ }, {
+ "code": "1529",
+ "name": "阿拉善盟",
+ "children": [{
+ "code": "152921",
+ "name": "阿拉善左旗"
+ }, {
+ "code": "152922",
+ "name": "阿拉善右旗"
+ }, {
+ "code": "152923",
+ "name": "额济纳旗"
+ }, {
+ "code": "152971",
+ "name": "内蒙古阿拉善高新技术产业开发区"
+ }]
+ }]
+}, {
+ "code": "21",
+ "name": "辽宁省",
+ "children": [{
+ "code": "2101",
+ "name": "沈阳市",
+ "children": [{
+ "code": "210102",
+ "name": "和平区"
+ }, {
+ "code": "210103",
+ "name": "沈河区"
+ }, {
+ "code": "210104",
+ "name": "大东区"
+ }, {
+ "code": "210105",
+ "name": "皇姑区"
+ }, {
+ "code": "210106",
+ "name": "铁西区"
+ }, {
+ "code": "210111",
+ "name": "苏家屯区"
+ }, {
+ "code": "210112",
+ "name": "浑南区"
+ }, {
+ "code": "210113",
+ "name": "沈北新区"
+ }, {
+ "code": "210114",
+ "name": "于洪区"
+ }, {
+ "code": "210115",
+ "name": "辽中区"
+ }, {
+ "code": "210123",
+ "name": "康平县"
+ }, {
+ "code": "210124",
+ "name": "法库县"
+ }, {
+ "code": "210181",
+ "name": "新民市"
+ }]
+ }, {
+ "code": "2102",
+ "name": "大连市",
+ "children": [{
+ "code": "210202",
+ "name": "中山区"
+ }, {
+ "code": "210203",
+ "name": "西岗区"
+ }, {
+ "code": "210204",
+ "name": "沙河口区"
+ }, {
+ "code": "210211",
+ "name": "甘井子区"
+ }, {
+ "code": "210212",
+ "name": "旅顺口区"
+ }, {
+ "code": "210213",
+ "name": "金州区"
+ }, {
+ "code": "210214",
+ "name": "普兰店区"
+ }, {
+ "code": "210224",
+ "name": "长海县"
+ }, {
+ "code": "210281",
+ "name": "瓦房店市"
+ }, {
+ "code": "210283",
+ "name": "庄河市"
+ }]
+ }, {
+ "code": "2103",
+ "name": "鞍山市",
+ "children": [{
+ "code": "210302",
+ "name": "铁东区"
+ }, {
+ "code": "210303",
+ "name": "铁西区"
+ }, {
+ "code": "210304",
+ "name": "立山区"
+ }, {
+ "code": "210311",
+ "name": "千山区"
+ }, {
+ "code": "210321",
+ "name": "台安县"
+ }, {
+ "code": "210323",
+ "name": "岫岩满族自治县"
+ }, {
+ "code": "210381",
+ "name": "海城市"
+ }]
+ }, {
+ "code": "2104",
+ "name": "抚顺市",
+ "children": [{
+ "code": "210402",
+ "name": "新抚区"
+ }, {
+ "code": "210403",
+ "name": "东洲区"
+ }, {
+ "code": "210404",
+ "name": "望花区"
+ }, {
+ "code": "210411",
+ "name": "顺城区"
+ }, {
+ "code": "210421",
+ "name": "抚顺县"
+ }, {
+ "code": "210422",
+ "name": "新宾满族自治县"
+ }, {
+ "code": "210423",
+ "name": "清原满族自治县"
+ }]
+ }, {
+ "code": "2105",
+ "name": "本溪市",
+ "children": [{
+ "code": "210502",
+ "name": "平山区"
+ }, {
+ "code": "210503",
+ "name": "溪湖区"
+ }, {
+ "code": "210504",
+ "name": "明山区"
+ }, {
+ "code": "210505",
+ "name": "南芬区"
+ }, {
+ "code": "210521",
+ "name": "本溪满族自治县"
+ }, {
+ "code": "210522",
+ "name": "桓仁满族自治县"
+ }]
+ }, {
+ "code": "2106",
+ "name": "丹东市",
+ "children": [{
+ "code": "210602",
+ "name": "元宝区"
+ }, {
+ "code": "210603",
+ "name": "振兴区"
+ }, {
+ "code": "210604",
+ "name": "振安区"
+ }, {
+ "code": "210624",
+ "name": "宽甸满族自治县"
+ }, {
+ "code": "210681",
+ "name": "东港市"
+ }, {
+ "code": "210682",
+ "name": "凤城市"
+ }]
+ }, {
+ "code": "2107",
+ "name": "锦州市",
+ "children": [{
+ "code": "210702",
+ "name": "古塔区"
+ }, {
+ "code": "210703",
+ "name": "凌河区"
+ }, {
+ "code": "210711",
+ "name": "太和区"
+ }, {
+ "code": "210726",
+ "name": "黑山县"
+ }, {
+ "code": "210727",
+ "name": "义县"
+ }, {
+ "code": "210781",
+ "name": "凌海市"
+ }, {
+ "code": "210782",
+ "name": "北镇市"
+ }]
+ }, {
+ "code": "2108",
+ "name": "营口市",
+ "children": [{
+ "code": "210802",
+ "name": "站前区"
+ }, {
+ "code": "210803",
+ "name": "西市区"
+ }, {
+ "code": "210804",
+ "name": "鲅鱼圈区"
+ }, {
+ "code": "210811",
+ "name": "老边区"
+ }, {
+ "code": "210881",
+ "name": "盖州市"
+ }, {
+ "code": "210882",
+ "name": "大石桥市"
+ }]
+ }, {
+ "code": "2109",
+ "name": "阜新市",
+ "children": [{
+ "code": "210902",
+ "name": "海州区"
+ }, {
+ "code": "210903",
+ "name": "新邱区"
+ }, {
+ "code": "210904",
+ "name": "太平区"
+ }, {
+ "code": "210905",
+ "name": "清河门区"
+ }, {
+ "code": "210911",
+ "name": "细河区"
+ }, {
+ "code": "210921",
+ "name": "阜新蒙古族自治县"
+ }, {
+ "code": "210922",
+ "name": "彰武县"
+ }]
+ }, {
+ "code": "2110",
+ "name": "辽阳市",
+ "children": [{
+ "code": "211002",
+ "name": "白塔区"
+ }, {
+ "code": "211003",
+ "name": "文圣区"
+ }, {
+ "code": "211004",
+ "name": "宏伟区"
+ }, {
+ "code": "211005",
+ "name": "弓长岭区"
+ }, {
+ "code": "211011",
+ "name": "太子河区"
+ }, {
+ "code": "211021",
+ "name": "辽阳县"
+ }, {
+ "code": "211081",
+ "name": "灯塔市"
+ }]
+ }, {
+ "code": "2111",
+ "name": "盘锦市",
+ "children": [{
+ "code": "211102",
+ "name": "双台子区"
+ }, {
+ "code": "211103",
+ "name": "兴隆台区"
+ }, {
+ "code": "211104",
+ "name": "大洼区"
+ }, {
+ "code": "211122",
+ "name": "盘山县"
+ }]
+ }, {
+ "code": "2112",
+ "name": "铁岭市",
+ "children": [{
+ "code": "211202",
+ "name": "银州区"
+ }, {
+ "code": "211204",
+ "name": "清河区"
+ }, {
+ "code": "211221",
+ "name": "铁岭县"
+ }, {
+ "code": "211223",
+ "name": "西丰县"
+ }, {
+ "code": "211224",
+ "name": "昌图县"
+ }, {
+ "code": "211281",
+ "name": "调兵山市"
+ }, {
+ "code": "211282",
+ "name": "开原市"
+ }]
+ }, {
+ "code": "2113",
+ "name": "朝阳市",
+ "children": [{
+ "code": "211302",
+ "name": "双塔区"
+ }, {
+ "code": "211303",
+ "name": "龙城区"
+ }, {
+ "code": "211321",
+ "name": "朝阳县"
+ }, {
+ "code": "211322",
+ "name": "建平县"
+ }, {
+ "code": "211324",
+ "name": "喀喇沁左翼蒙古族自治县"
+ }, {
+ "code": "211381",
+ "name": "北票市"
+ }, {
+ "code": "211382",
+ "name": "凌源市"
+ }]
+ }, {
+ "code": "2114",
+ "name": "葫芦岛市",
+ "children": [{
+ "code": "211402",
+ "name": "连山区"
+ }, {
+ "code": "211403",
+ "name": "龙港区"
+ }, {
+ "code": "211404",
+ "name": "南票区"
+ }, {
+ "code": "211421",
+ "name": "绥中县"
+ }, {
+ "code": "211422",
+ "name": "建昌县"
+ }, {
+ "code": "211481",
+ "name": "兴城市"
+ }]
+ }]
+}, {
+ "code": "22",
+ "name": "吉林省",
+ "children": [{
+ "code": "2201",
+ "name": "长春市",
+ "children": [{
+ "code": "220102",
+ "name": "南关区"
+ }, {
+ "code": "220103",
+ "name": "宽城区"
+ }, {
+ "code": "220104",
+ "name": "朝阳区"
+ }, {
+ "code": "220105",
+ "name": "二道区"
+ }, {
+ "code": "220106",
+ "name": "绿园区"
+ }, {
+ "code": "220112",
+ "name": "双阳区"
+ }, {
+ "code": "220113",
+ "name": "九台区"
+ }, {
+ "code": "220122",
+ "name": "农安县"
+ }, {
+ "code": "220171",
+ "name": "长春经济技术开发区"
+ }, {
+ "code": "220172",
+ "name": "长春净月高新技术产业开发区"
+ }, {
+ "code": "220173",
+ "name": "长春高新技术产业开发区"
+ }, {
+ "code": "220174",
+ "name": "长春汽车经济技术开发区"
+ }, {
+ "code": "220182",
+ "name": "榆树市"
+ }, {
+ "code": "220183",
+ "name": "德惠市"
+ }, {
+ "code": "220184",
+ "name": "公主岭市"
+ }]
+ }, {
+ "code": "2202",
+ "name": "吉林市",
+ "children": [{
+ "code": "220202",
+ "name": "昌邑区"
+ }, {
+ "code": "220203",
+ "name": "龙潭区"
+ }, {
+ "code": "220204",
+ "name": "船营区"
+ }, {
+ "code": "220211",
+ "name": "丰满区"
+ }, {
+ "code": "220221",
+ "name": "永吉县"
+ }, {
+ "code": "220271",
+ "name": "吉林经济开发区"
+ }, {
+ "code": "220272",
+ "name": "吉林高新技术产业开发区"
+ }, {
+ "code": "220273",
+ "name": "吉林中国新加坡食品区"
+ }, {
+ "code": "220281",
+ "name": "蛟河市"
+ }, {
+ "code": "220282",
+ "name": "桦甸市"
+ }, {
+ "code": "220283",
+ "name": "舒兰市"
+ }, {
+ "code": "220284",
+ "name": "磐石市"
+ }]
+ }, {
+ "code": "2203",
+ "name": "四平市",
+ "children": [{
+ "code": "220302",
+ "name": "铁西区"
+ }, {
+ "code": "220303",
+ "name": "铁东区"
+ }, {
+ "code": "220322",
+ "name": "梨树县"
+ }, {
+ "code": "220323",
+ "name": "伊通满族自治县"
+ }, {
+ "code": "220382",
+ "name": "双辽市"
+ }]
+ }, {
+ "code": "2204",
+ "name": "辽源市",
+ "children": [{
+ "code": "220402",
+ "name": "龙山区"
+ }, {
+ "code": "220403",
+ "name": "西安区"
+ }, {
+ "code": "220421",
+ "name": "东丰县"
+ }, {
+ "code": "220422",
+ "name": "东辽县"
+ }]
+ }, {
+ "code": "2205",
+ "name": "通化市",
+ "children": [{
+ "code": "220502",
+ "name": "东昌区"
+ }, {
+ "code": "220503",
+ "name": "二道江区"
+ }, {
+ "code": "220521",
+ "name": "通化县"
+ }, {
+ "code": "220523",
+ "name": "辉南县"
+ }, {
+ "code": "220524",
+ "name": "柳河县"
+ }, {
+ "code": "220581",
+ "name": "梅河口市"
+ }, {
+ "code": "220582",
+ "name": "集安市"
+ }]
+ }, {
+ "code": "2206",
+ "name": "白山市",
+ "children": [{
+ "code": "220602",
+ "name": "浑江区"
+ }, {
+ "code": "220605",
+ "name": "江源区"
+ }, {
+ "code": "220621",
+ "name": "抚松县"
+ }, {
+ "code": "220622",
+ "name": "靖宇县"
+ }, {
+ "code": "220623",
+ "name": "长白朝鲜族自治县"
+ }, {
+ "code": "220681",
+ "name": "临江市"
+ }]
+ }, {
+ "code": "2207",
+ "name": "松原市",
+ "children": [{
+ "code": "220702",
+ "name": "宁江区"
+ }, {
+ "code": "220721",
+ "name": "前郭尔罗斯蒙古族自治县"
+ }, {
+ "code": "220722",
+ "name": "长岭县"
+ }, {
+ "code": "220723",
+ "name": "乾安县"
+ }, {
+ "code": "220771",
+ "name": "吉林松原经济开发区"
+ }, {
+ "code": "220781",
+ "name": "扶余市"
+ }]
+ }, {
+ "code": "2208",
+ "name": "白城市",
+ "children": [{
+ "code": "220802",
+ "name": "洮北区"
+ }, {
+ "code": "220821",
+ "name": "镇赉县"
+ }, {
+ "code": "220822",
+ "name": "通榆县"
+ }, {
+ "code": "220871",
+ "name": "吉林白城经济开发区"
+ }, {
+ "code": "220881",
+ "name": "洮南市"
+ }, {
+ "code": "220882",
+ "name": "大安市"
+ }]
+ }, {
+ "code": "2224",
+ "name": "延边朝鲜族自治州",
+ "children": [{
+ "code": "222401",
+ "name": "延吉市"
+ }, {
+ "code": "222402",
+ "name": "图们市"
+ }, {
+ "code": "222403",
+ "name": "敦化市"
+ }, {
+ "code": "222404",
+ "name": "珲春市"
+ }, {
+ "code": "222405",
+ "name": "龙井市"
+ }, {
+ "code": "222406",
+ "name": "和龙市"
+ }, {
+ "code": "222424",
+ "name": "汪清县"
+ }, {
+ "code": "222426",
+ "name": "安图县"
+ }]
+ }]
+}, {
+ "code": "23",
+ "name": "黑龙江省",
+ "children": [{
+ "code": "2301",
+ "name": "哈尔滨市",
+ "children": [{
+ "code": "230102",
+ "name": "道里区"
+ }, {
+ "code": "230103",
+ "name": "南岗区"
+ }, {
+ "code": "230104",
+ "name": "道外区"
+ }, {
+ "code": "230108",
+ "name": "平房区"
+ }, {
+ "code": "230109",
+ "name": "松北区"
+ }, {
+ "code": "230110",
+ "name": "香坊区"
+ }, {
+ "code": "230111",
+ "name": "呼兰区"
+ }, {
+ "code": "230112",
+ "name": "阿城区"
+ }, {
+ "code": "230113",
+ "name": "双城区"
+ }, {
+ "code": "230123",
+ "name": "依兰县"
+ }, {
+ "code": "230124",
+ "name": "方正县"
+ }, {
+ "code": "230125",
+ "name": "宾县"
+ }, {
+ "code": "230126",
+ "name": "巴彦县"
+ }, {
+ "code": "230127",
+ "name": "木兰县"
+ }, {
+ "code": "230128",
+ "name": "通河县"
+ }, {
+ "code": "230129",
+ "name": "延寿县"
+ }, {
+ "code": "230183",
+ "name": "尚志市"
+ }, {
+ "code": "230184",
+ "name": "五常市"
+ }]
+ }, {
+ "code": "2302",
+ "name": "齐齐哈尔市",
+ "children": [{
+ "code": "230202",
+ "name": "龙沙区"
+ }, {
+ "code": "230203",
+ "name": "建华区"
+ }, {
+ "code": "230204",
+ "name": "铁锋区"
+ }, {
+ "code": "230205",
+ "name": "昂昂溪区"
+ }, {
+ "code": "230206",
+ "name": "富拉尔基区"
+ }, {
+ "code": "230207",
+ "name": "碾子山区"
+ }, {
+ "code": "230208",
+ "name": "梅里斯达斡尔族区"
+ }, {
+ "code": "230221",
+ "name": "龙江县"
+ }, {
+ "code": "230223",
+ "name": "依安县"
+ }, {
+ "code": "230224",
+ "name": "泰来县"
+ }, {
+ "code": "230225",
+ "name": "甘南县"
+ }, {
+ "code": "230227",
+ "name": "富裕县"
+ }, {
+ "code": "230229",
+ "name": "克山县"
+ }, {
+ "code": "230230",
+ "name": "克东县"
+ }, {
+ "code": "230231",
+ "name": "拜泉县"
+ }, {
+ "code": "230281",
+ "name": "讷河市"
+ }]
+ }, {
+ "code": "2303",
+ "name": "鸡西市",
+ "children": [{
+ "code": "230302",
+ "name": "鸡冠区"
+ }, {
+ "code": "230303",
+ "name": "恒山区"
+ }, {
+ "code": "230304",
+ "name": "滴道区"
+ }, {
+ "code": "230305",
+ "name": "梨树区"
+ }, {
+ "code": "230306",
+ "name": "城子河区"
+ }, {
+ "code": "230307",
+ "name": "麻山区"
+ }, {
+ "code": "230321",
+ "name": "鸡东县"
+ }, {
+ "code": "230381",
+ "name": "虎林市"
+ }, {
+ "code": "230382",
+ "name": "密山市"
+ }]
+ }, {
+ "code": "2304",
+ "name": "鹤岗市",
+ "children": [{
+ "code": "230402",
+ "name": "向阳区"
+ }, {
+ "code": "230403",
+ "name": "工农区"
+ }, {
+ "code": "230404",
+ "name": "南山区"
+ }, {
+ "code": "230405",
+ "name": "兴安区"
+ }, {
+ "code": "230406",
+ "name": "东山区"
+ }, {
+ "code": "230407",
+ "name": "兴山区"
+ }, {
+ "code": "230421",
+ "name": "萝北县"
+ }, {
+ "code": "230422",
+ "name": "绥滨县"
+ }]
+ }, {
+ "code": "2305",
+ "name": "双鸭山市",
+ "children": [{
+ "code": "230502",
+ "name": "尖山区"
+ }, {
+ "code": "230503",
+ "name": "岭东区"
+ }, {
+ "code": "230505",
+ "name": "四方台区"
+ }, {
+ "code": "230506",
+ "name": "宝山区"
+ }, {
+ "code": "230521",
+ "name": "集贤县"
+ }, {
+ "code": "230522",
+ "name": "友谊县"
+ }, {
+ "code": "230523",
+ "name": "宝清县"
+ }, {
+ "code": "230524",
+ "name": "饶河县"
+ }]
+ }, {
+ "code": "2306",
+ "name": "大庆市",
+ "children": [{
+ "code": "230602",
+ "name": "萨尔图区"
+ }, {
+ "code": "230603",
+ "name": "龙凤区"
+ }, {
+ "code": "230604",
+ "name": "让胡路区"
+ }, {
+ "code": "230605",
+ "name": "红岗区"
+ }, {
+ "code": "230606",
+ "name": "大同区"
+ }, {
+ "code": "230621",
+ "name": "肇州县"
+ }, {
+ "code": "230622",
+ "name": "肇源县"
+ }, {
+ "code": "230623",
+ "name": "林甸县"
+ }, {
+ "code": "230624",
+ "name": "杜尔伯特蒙古族自治县"
+ }, {
+ "code": "230671",
+ "name": "大庆高新技术产业开发区"
+ }]
+ }, {
+ "code": "2307",
+ "name": "伊春市",
+ "children": [{
+ "code": "230717",
+ "name": "伊美区"
+ }, {
+ "code": "230718",
+ "name": "乌翠区"
+ }, {
+ "code": "230719",
+ "name": "友好区"
+ }, {
+ "code": "230722",
+ "name": "嘉荫县"
+ }, {
+ "code": "230723",
+ "name": "汤旺县"
+ }, {
+ "code": "230724",
+ "name": "丰林县"
+ }, {
+ "code": "230725",
+ "name": "大箐山县"
+ }, {
+ "code": "230726",
+ "name": "南岔县"
+ }, {
+ "code": "230751",
+ "name": "金林区"
+ }, {
+ "code": "230781",
+ "name": "铁力市"
+ }]
+ }, {
+ "code": "2308",
+ "name": "佳木斯市",
+ "children": [{
+ "code": "230803",
+ "name": "向阳区"
+ }, {
+ "code": "230804",
+ "name": "前进区"
+ }, {
+ "code": "230805",
+ "name": "东风区"
+ }, {
+ "code": "230811",
+ "name": "郊区"
+ }, {
+ "code": "230822",
+ "name": "桦南县"
+ }, {
+ "code": "230826",
+ "name": "桦川县"
+ }, {
+ "code": "230828",
+ "name": "汤原县"
+ }, {
+ "code": "230881",
+ "name": "同江市"
+ }, {
+ "code": "230882",
+ "name": "富锦市"
+ }, {
+ "code": "230883",
+ "name": "抚远市"
+ }]
+ }, {
+ "code": "2309",
+ "name": "七台河市",
+ "children": [{
+ "code": "230902",
+ "name": "新兴区"
+ }, {
+ "code": "230903",
+ "name": "桃山区"
+ }, {
+ "code": "230904",
+ "name": "茄子河区"
+ }, {
+ "code": "230921",
+ "name": "勃利县"
+ }]
+ }, {
+ "code": "2310",
+ "name": "牡丹江市",
+ "children": [{
+ "code": "231002",
+ "name": "东安区"
+ }, {
+ "code": "231003",
+ "name": "阳明区"
+ }, {
+ "code": "231004",
+ "name": "爱民区"
+ }, {
+ "code": "231005",
+ "name": "西安区"
+ }, {
+ "code": "231025",
+ "name": "林口县"
+ }, {
+ "code": "231081",
+ "name": "绥芬河市"
+ }, {
+ "code": "231083",
+ "name": "海林市"
+ }, {
+ "code": "231084",
+ "name": "宁安市"
+ }, {
+ "code": "231085",
+ "name": "穆棱市"
+ }, {
+ "code": "231086",
+ "name": "东宁市"
+ }]
+ }, {
+ "code": "2311",
+ "name": "黑河市",
+ "children": [{
+ "code": "231102",
+ "name": "爱辉区"
+ }, {
+ "code": "231123",
+ "name": "逊克县"
+ }, {
+ "code": "231124",
+ "name": "孙吴县"
+ }, {
+ "code": "231181",
+ "name": "北安市"
+ }, {
+ "code": "231182",
+ "name": "五大连池市"
+ }, {
+ "code": "231183",
+ "name": "嫩江市"
+ }]
+ }, {
+ "code": "2312",
+ "name": "绥化市",
+ "children": [{
+ "code": "231202",
+ "name": "北林区"
+ }, {
+ "code": "231221",
+ "name": "望奎县"
+ }, {
+ "code": "231222",
+ "name": "兰西县"
+ }, {
+ "code": "231223",
+ "name": "青冈县"
+ }, {
+ "code": "231224",
+ "name": "庆安县"
+ }, {
+ "code": "231225",
+ "name": "明水县"
+ }, {
+ "code": "231226",
+ "name": "绥棱县"
+ }, {
+ "code": "231281",
+ "name": "安达市"
+ }, {
+ "code": "231282",
+ "name": "肇东市"
+ }, {
+ "code": "231283",
+ "name": "海伦市"
+ }]
+ }, {
+ "code": "2327",
+ "name": "大兴安岭地区",
+ "children": [{
+ "code": "232701",
+ "name": "漠河市"
+ }, {
+ "code": "232721",
+ "name": "呼玛县"
+ }, {
+ "code": "232722",
+ "name": "塔河县"
+ }, {
+ "code": "232761",
+ "name": "加格达奇区"
+ }, {
+ "code": "232762",
+ "name": "松岭区"
+ }, {
+ "code": "232763",
+ "name": "新林区"
+ }, {
+ "code": "232764",
+ "name": "呼中区"
+ }]
+ }]
+}, {
+ "code": "31",
+ "name": "上海市",
+ "children": [{
+ "code": "3101",
+ "name": "市辖区",
+ "children": [{
+ "code": "310101",
+ "name": "黄浦区"
+ }, {
+ "code": "310104",
+ "name": "徐汇区"
+ }, {
+ "code": "310105",
+ "name": "长宁区"
+ }, {
+ "code": "310106",
+ "name": "静安区"
+ }, {
+ "code": "310107",
+ "name": "普陀区"
+ }, {
+ "code": "310109",
+ "name": "虹口区"
+ }, {
+ "code": "310110",
+ "name": "杨浦区"
+ }, {
+ "code": "310112",
+ "name": "闵行区"
+ }, {
+ "code": "310113",
+ "name": "宝山区"
+ }, {
+ "code": "310114",
+ "name": "嘉定区"
+ }, {
+ "code": "310115",
+ "name": "浦东新区"
+ }, {
+ "code": "310116",
+ "name": "金山区"
+ }, {
+ "code": "310117",
+ "name": "松江区"
+ }, {
+ "code": "310118",
+ "name": "青浦区"
+ }, {
+ "code": "310120",
+ "name": "奉贤区"
+ }, {
+ "code": "310151",
+ "name": "崇明区"
+ }]
+ }]
+}, {
+ "code": "32",
+ "name": "江苏省",
+ "children": [{
+ "code": "3201",
+ "name": "南京市",
+ "children": [{
+ "code": "320102",
+ "name": "玄武区"
+ }, {
+ "code": "320104",
+ "name": "秦淮区"
+ }, {
+ "code": "320105",
+ "name": "建邺区"
+ }, {
+ "code": "320106",
+ "name": "鼓楼区"
+ }, {
+ "code": "320111",
+ "name": "浦口区"
+ }, {
+ "code": "320113",
+ "name": "栖霞区"
+ }, {
+ "code": "320114",
+ "name": "雨花台区"
+ }, {
+ "code": "320115",
+ "name": "江宁区"
+ }, {
+ "code": "320116",
+ "name": "六合区"
+ }, {
+ "code": "320117",
+ "name": "溧水区"
+ }, {
+ "code": "320118",
+ "name": "高淳区"
+ }]
+ }, {
+ "code": "3202",
+ "name": "无锡市",
+ "children": [{
+ "code": "320205",
+ "name": "锡山区"
+ }, {
+ "code": "320206",
+ "name": "惠山区"
+ }, {
+ "code": "320211",
+ "name": "滨湖区"
+ }, {
+ "code": "320213",
+ "name": "梁溪区"
+ }, {
+ "code": "320214",
+ "name": "新吴区"
+ }, {
+ "code": "320281",
+ "name": "江阴市"
+ }, {
+ "code": "320282",
+ "name": "宜兴市"
+ }]
+ }, {
+ "code": "3203",
+ "name": "徐州市",
+ "children": [{
+ "code": "320302",
+ "name": "鼓楼区"
+ }, {
+ "code": "320303",
+ "name": "云龙区"
+ }, {
+ "code": "320305",
+ "name": "贾汪区"
+ }, {
+ "code": "320311",
+ "name": "泉山区"
+ }, {
+ "code": "320312",
+ "name": "铜山区"
+ }, {
+ "code": "320321",
+ "name": "丰县"
+ }, {
+ "code": "320322",
+ "name": "沛县"
+ }, {
+ "code": "320324",
+ "name": "睢宁县"
+ }, {
+ "code": "320371",
+ "name": "徐州经济技术开发区"
+ }, {
+ "code": "320381",
+ "name": "新沂市"
+ }, {
+ "code": "320382",
+ "name": "邳州市"
+ }]
+ }, {
+ "code": "3204",
+ "name": "常州市",
+ "children": [{
+ "code": "320402",
+ "name": "天宁区"
+ }, {
+ "code": "320404",
+ "name": "钟楼区"
+ }, {
+ "code": "320411",
+ "name": "新北区"
+ }, {
+ "code": "320412",
+ "name": "武进区"
+ }, {
+ "code": "320413",
+ "name": "金坛区"
+ }, {
+ "code": "320481",
+ "name": "溧阳市"
+ }]
+ }, {
+ "code": "3205",
+ "name": "苏州市",
+ "children": [{
+ "code": "320505",
+ "name": "虎丘区"
+ }, {
+ "code": "320506",
+ "name": "吴中区"
+ }, {
+ "code": "320507",
+ "name": "相城区"
+ }, {
+ "code": "320508",
+ "name": "姑苏区"
+ }, {
+ "code": "320509",
+ "name": "吴江区"
+ }, {
+ "code": "320576",
+ "name": "苏州工业园区"
+ }, {
+ "code": "320581",
+ "name": "常熟市"
+ }, {
+ "code": "320582",
+ "name": "张家港市"
+ }, {
+ "code": "320583",
+ "name": "昆山市"
+ }, {
+ "code": "320585",
+ "name": "太仓市"
+ }]
+ }, {
+ "code": "3206",
+ "name": "南通市",
+ "children": [{
+ "code": "320612",
+ "name": "通州区"
+ }, {
+ "code": "320613",
+ "name": "崇川区"
+ }, {
+ "code": "320614",
+ "name": "海门区"
+ }, {
+ "code": "320623",
+ "name": "如东县"
+ }, {
+ "code": "320671",
+ "name": "南通经济技术开发区"
+ }, {
+ "code": "320681",
+ "name": "启东市"
+ }, {
+ "code": "320682",
+ "name": "如皋市"
+ }, {
+ "code": "320685",
+ "name": "海安市"
+ }]
+ }, {
+ "code": "3207",
+ "name": "连云港市",
+ "children": [{
+ "code": "320703",
+ "name": "连云区"
+ }, {
+ "code": "320706",
+ "name": "海州区"
+ }, {
+ "code": "320707",
+ "name": "赣榆区"
+ }, {
+ "code": "320722",
+ "name": "东海县"
+ }, {
+ "code": "320723",
+ "name": "灌云县"
+ }, {
+ "code": "320724",
+ "name": "灌南县"
+ }, {
+ "code": "320771",
+ "name": "连云港经济技术开发区"
+ }]
+ }, {
+ "code": "3208",
+ "name": "淮安市",
+ "children": [{
+ "code": "320803",
+ "name": "淮安区"
+ }, {
+ "code": "320804",
+ "name": "淮阴区"
+ }, {
+ "code": "320812",
+ "name": "清江浦区"
+ }, {
+ "code": "320813",
+ "name": "洪泽区"
+ }, {
+ "code": "320826",
+ "name": "涟水县"
+ }, {
+ "code": "320830",
+ "name": "盱眙县"
+ }, {
+ "code": "320831",
+ "name": "金湖县"
+ }, {
+ "code": "320871",
+ "name": "淮安经济技术开发区"
+ }]
+ }, {
+ "code": "3209",
+ "name": "盐城市",
+ "children": [{
+ "code": "320902",
+ "name": "亭湖区"
+ }, {
+ "code": "320903",
+ "name": "盐都区"
+ }, {
+ "code": "320904",
+ "name": "大丰区"
+ }, {
+ "code": "320921",
+ "name": "响水县"
+ }, {
+ "code": "320922",
+ "name": "滨海县"
+ }, {
+ "code": "320923",
+ "name": "阜宁县"
+ }, {
+ "code": "320924",
+ "name": "射阳县"
+ }, {
+ "code": "320925",
+ "name": "建湖县"
+ }, {
+ "code": "320971",
+ "name": "盐城经济技术开发区"
+ }, {
+ "code": "320981",
+ "name": "东台市"
+ }]
+ }, {
+ "code": "3210",
+ "name": "扬州市",
+ "children": [{
+ "code": "321002",
+ "name": "广陵区"
+ }, {
+ "code": "321003",
+ "name": "邗江区"
+ }, {
+ "code": "321012",
+ "name": "江都区"
+ }, {
+ "code": "321023",
+ "name": "宝应县"
+ }, {
+ "code": "321071",
+ "name": "扬州经济技术开发区"
+ }, {
+ "code": "321081",
+ "name": "仪征市"
+ }, {
+ "code": "321084",
+ "name": "高邮市"
+ }]
+ }, {
+ "code": "3211",
+ "name": "镇江市",
+ "children": [{
+ "code": "321102",
+ "name": "京口区"
+ }, {
+ "code": "321111",
+ "name": "润州区"
+ }, {
+ "code": "321112",
+ "name": "丹徒区"
+ }, {
+ "code": "321171",
+ "name": "镇江新区"
+ }, {
+ "code": "321181",
+ "name": "丹阳市"
+ }, {
+ "code": "321182",
+ "name": "扬中市"
+ }, {
+ "code": "321183",
+ "name": "句容市"
+ }]
+ }, {
+ "code": "3212",
+ "name": "泰州市",
+ "children": [{
+ "code": "321202",
+ "name": "海陵区"
+ }, {
+ "code": "321203",
+ "name": "高港区"
+ }, {
+ "code": "321204",
+ "name": "姜堰区"
+ }, {
+ "code": "321281",
+ "name": "兴化市"
+ }, {
+ "code": "321282",
+ "name": "靖江市"
+ }, {
+ "code": "321283",
+ "name": "泰兴市"
+ }]
+ }, {
+ "code": "3213",
+ "name": "宿迁市",
+ "children": [{
+ "code": "321302",
+ "name": "宿城区"
+ }, {
+ "code": "321311",
+ "name": "宿豫区"
+ }, {
+ "code": "321322",
+ "name": "沭阳县"
+ }, {
+ "code": "321323",
+ "name": "泗阳县"
+ }, {
+ "code": "321324",
+ "name": "泗洪县"
+ }, {
+ "code": "321371",
+ "name": "宿迁经济技术开发区"
+ }]
+ }]
+}, {
+ "code": "33",
+ "name": "浙江省",
+ "children": [{
+ "code": "3301",
+ "name": "杭州市",
+ "children": [{
+ "code": "330102",
+ "name": "上城区"
+ }, {
+ "code": "330105",
+ "name": "拱墅区"
+ }, {
+ "code": "330106",
+ "name": "西湖区"
+ }, {
+ "code": "330108",
+ "name": "滨江区"
+ }, {
+ "code": "330109",
+ "name": "萧山区"
+ }, {
+ "code": "330110",
+ "name": "余杭区"
+ }, {
+ "code": "330111",
+ "name": "富阳区"
+ }, {
+ "code": "330112",
+ "name": "临安区"
+ }, {
+ "code": "330113",
+ "name": "临平区"
+ }, {
+ "code": "330114",
+ "name": "钱塘区"
+ }, {
+ "code": "330122",
+ "name": "桐庐县"
+ }, {
+ "code": "330127",
+ "name": "淳安县"
+ }, {
+ "code": "330182",
+ "name": "建德市"
+ }]
+ }, {
+ "code": "3302",
+ "name": "宁波市",
+ "children": [{
+ "code": "330203",
+ "name": "海曙区"
+ }, {
+ "code": "330205",
+ "name": "江北区"
+ }, {
+ "code": "330206",
+ "name": "北仑区"
+ }, {
+ "code": "330211",
+ "name": "镇海区"
+ }, {
+ "code": "330212",
+ "name": "鄞州区"
+ }, {
+ "code": "330213",
+ "name": "奉化区"
+ }, {
+ "code": "330225",
+ "name": "象山县"
+ }, {
+ "code": "330226",
+ "name": "宁海县"
+ }, {
+ "code": "330281",
+ "name": "余姚市"
+ }, {
+ "code": "330282",
+ "name": "慈溪市"
+ }]
+ }, {
+ "code": "3303",
+ "name": "温州市",
+ "children": [{
+ "code": "330302",
+ "name": "鹿城区"
+ }, {
+ "code": "330303",
+ "name": "龙湾区"
+ }, {
+ "code": "330304",
+ "name": "瓯海区"
+ }, {
+ "code": "330305",
+ "name": "洞头区"
+ }, {
+ "code": "330324",
+ "name": "永嘉县"
+ }, {
+ "code": "330326",
+ "name": "平阳县"
+ }, {
+ "code": "330327",
+ "name": "苍南县"
+ }, {
+ "code": "330328",
+ "name": "文成县"
+ }, {
+ "code": "330329",
+ "name": "泰顺县"
+ }, {
+ "code": "330381",
+ "name": "瑞安市"
+ }, {
+ "code": "330382",
+ "name": "乐清市"
+ }, {
+ "code": "330383",
+ "name": "龙港市"
+ }]
+ }, {
+ "code": "3304",
+ "name": "嘉兴市",
+ "children": [{
+ "code": "330402",
+ "name": "南湖区"
+ }, {
+ "code": "330411",
+ "name": "秀洲区"
+ }, {
+ "code": "330421",
+ "name": "嘉善县"
+ }, {
+ "code": "330424",
+ "name": "海盐县"
+ }, {
+ "code": "330481",
+ "name": "海宁市"
+ }, {
+ "code": "330482",
+ "name": "平湖市"
+ }, {
+ "code": "330483",
+ "name": "桐乡市"
+ }]
+ }, {
+ "code": "3305",
+ "name": "湖州市",
+ "children": [{
+ "code": "330502",
+ "name": "吴兴区"
+ }, {
+ "code": "330503",
+ "name": "南浔区"
+ }, {
+ "code": "330521",
+ "name": "德清县"
+ }, {
+ "code": "330522",
+ "name": "长兴县"
+ }, {
+ "code": "330523",
+ "name": "安吉县"
+ }]
+ }, {
+ "code": "3306",
+ "name": "绍兴市",
+ "children": [{
+ "code": "330602",
+ "name": "越城区"
+ }, {
+ "code": "330603",
+ "name": "柯桥区"
+ }, {
+ "code": "330604",
+ "name": "上虞区"
+ }, {
+ "code": "330624",
+ "name": "新昌县"
+ }, {
+ "code": "330681",
+ "name": "诸暨市"
+ }, {
+ "code": "330683",
+ "name": "嵊州市"
+ }]
+ }, {
+ "code": "3307",
+ "name": "金华市",
+ "children": [{
+ "code": "330702",
+ "name": "婺城区"
+ }, {
+ "code": "330703",
+ "name": "金东区"
+ }, {
+ "code": "330723",
+ "name": "武义县"
+ }, {
+ "code": "330726",
+ "name": "浦江县"
+ }, {
+ "code": "330727",
+ "name": "磐安县"
+ }, {
+ "code": "330781",
+ "name": "兰溪市"
+ }, {
+ "code": "330782",
+ "name": "义乌市"
+ }, {
+ "code": "330783",
+ "name": "东阳市"
+ }, {
+ "code": "330784",
+ "name": "永康市"
+ }]
+ }, {
+ "code": "3308",
+ "name": "衢州市",
+ "children": [{
+ "code": "330802",
+ "name": "柯城区"
+ }, {
+ "code": "330803",
+ "name": "衢江区"
+ }, {
+ "code": "330822",
+ "name": "常山县"
+ }, {
+ "code": "330824",
+ "name": "开化县"
+ }, {
+ "code": "330825",
+ "name": "龙游县"
+ }, {
+ "code": "330881",
+ "name": "江山市"
+ }]
+ }, {
+ "code": "3309",
+ "name": "舟山市",
+ "children": [{
+ "code": "330902",
+ "name": "定海区"
+ }, {
+ "code": "330903",
+ "name": "普陀区"
+ }, {
+ "code": "330921",
+ "name": "岱山县"
+ }, {
+ "code": "330922",
+ "name": "嵊泗县"
+ }]
+ }, {
+ "code": "3310",
+ "name": "台州市",
+ "children": [{
+ "code": "331002",
+ "name": "椒江区"
+ }, {
+ "code": "331003",
+ "name": "黄岩区"
+ }, {
+ "code": "331004",
+ "name": "路桥区"
+ }, {
+ "code": "331022",
+ "name": "三门县"
+ }, {
+ "code": "331023",
+ "name": "天台县"
+ }, {
+ "code": "331024",
+ "name": "仙居县"
+ }, {
+ "code": "331081",
+ "name": "温岭市"
+ }, {
+ "code": "331082",
+ "name": "临海市"
+ }, {
+ "code": "331083",
+ "name": "玉环市"
+ }]
+ }, {
+ "code": "3311",
+ "name": "丽水市",
+ "children": [{
+ "code": "331102",
+ "name": "莲都区"
+ }, {
+ "code": "331121",
+ "name": "青田县"
+ }, {
+ "code": "331122",
+ "name": "缙云县"
+ }, {
+ "code": "331123",
+ "name": "遂昌县"
+ }, {
+ "code": "331124",
+ "name": "松阳县"
+ }, {
+ "code": "331125",
+ "name": "云和县"
+ }, {
+ "code": "331126",
+ "name": "庆元县"
+ }, {
+ "code": "331127",
+ "name": "景宁畲族自治县"
+ }, {
+ "code": "331181",
+ "name": "龙泉市"
+ }]
+ }]
+}, {
+ "code": "34",
+ "name": "安徽省",
+ "children": [{
+ "code": "3401",
+ "name": "合肥市",
+ "children": [{
+ "code": "340102",
+ "name": "瑶海区"
+ }, {
+ "code": "340103",
+ "name": "庐阳区"
+ }, {
+ "code": "340104",
+ "name": "蜀山区"
+ }, {
+ "code": "340111",
+ "name": "包河区"
+ }, {
+ "code": "340121",
+ "name": "长丰县"
+ }, {
+ "code": "340122",
+ "name": "肥东县"
+ }, {
+ "code": "340123",
+ "name": "肥西县"
+ }, {
+ "code": "340124",
+ "name": "庐江县"
+ }, {
+ "code": "340176",
+ "name": "合肥高新技术产业开发区"
+ }, {
+ "code": "340177",
+ "name": "合肥经济技术开发区"
+ }, {
+ "code": "340178",
+ "name": "合肥新站高新技术产业开发区"
+ }, {
+ "code": "340181",
+ "name": "巢湖市"
+ }]
+ }, {
+ "code": "3402",
+ "name": "芜湖市",
+ "children": [{
+ "code": "340202",
+ "name": "镜湖区"
+ }, {
+ "code": "340207",
+ "name": "鸠江区"
+ }, {
+ "code": "340209",
+ "name": "弋江区"
+ }, {
+ "code": "340210",
+ "name": "湾沚区"
+ }, {
+ "code": "340212",
+ "name": "繁昌区"
+ }, {
+ "code": "340223",
+ "name": "南陵县"
+ }, {
+ "code": "340271",
+ "name": "芜湖经济技术开发区"
+ }, {
+ "code": "340272",
+ "name": "安徽芜湖三山经济开发区"
+ }, {
+ "code": "340281",
+ "name": "无为市"
+ }]
+ }, {
+ "code": "3403",
+ "name": "蚌埠市",
+ "children": [{
+ "code": "340302",
+ "name": "龙子湖区"
+ }, {
+ "code": "340303",
+ "name": "蚌山区"
+ }, {
+ "code": "340304",
+ "name": "禹会区"
+ }, {
+ "code": "340311",
+ "name": "淮上区"
+ }, {
+ "code": "340321",
+ "name": "怀远县"
+ }, {
+ "code": "340322",
+ "name": "五河县"
+ }, {
+ "code": "340323",
+ "name": "固镇县"
+ }, {
+ "code": "340371",
+ "name": "蚌埠市高新技术开发区"
+ }, {
+ "code": "340372",
+ "name": "蚌埠市经济开发区"
+ }]
+ }, {
+ "code": "3404",
+ "name": "淮南市",
+ "children": [{
+ "code": "340402",
+ "name": "大通区"
+ }, {
+ "code": "340403",
+ "name": "田家庵区"
+ }, {
+ "code": "340404",
+ "name": "谢家集区"
+ }, {
+ "code": "340405",
+ "name": "八公山区"
+ }, {
+ "code": "340406",
+ "name": "潘集区"
+ }, {
+ "code": "340421",
+ "name": "凤台县"
+ }, {
+ "code": "340422",
+ "name": "寿县"
+ }]
+ }, {
+ "code": "3405",
+ "name": "马鞍山市",
+ "children": [{
+ "code": "340503",
+ "name": "花山区"
+ }, {
+ "code": "340504",
+ "name": "雨山区"
+ }, {
+ "code": "340506",
+ "name": "博望区"
+ }, {
+ "code": "340521",
+ "name": "当涂县"
+ }, {
+ "code": "340522",
+ "name": "含山县"
+ }, {
+ "code": "340523",
+ "name": "和县"
+ }]
+ }, {
+ "code": "3406",
+ "name": "淮北市",
+ "children": [{
+ "code": "340602",
+ "name": "杜集区"
+ }, {
+ "code": "340603",
+ "name": "相山区"
+ }, {
+ "code": "340604",
+ "name": "烈山区"
+ }, {
+ "code": "340621",
+ "name": "濉溪县"
+ }]
+ }, {
+ "code": "3407",
+ "name": "铜陵市",
+ "children": [{
+ "code": "340705",
+ "name": "铜官区"
+ }, {
+ "code": "340706",
+ "name": "义安区"
+ }, {
+ "code": "340711",
+ "name": "郊区"
+ }, {
+ "code": "340722",
+ "name": "枞阳县"
+ }]
+ }, {
+ "code": "3408",
+ "name": "安庆市",
+ "children": [{
+ "code": "340802",
+ "name": "迎江区"
+ }, {
+ "code": "340803",
+ "name": "大观区"
+ }, {
+ "code": "340811",
+ "name": "宜秀区"
+ }, {
+ "code": "340822",
+ "name": "怀宁县"
+ }, {
+ "code": "340825",
+ "name": "太湖县"
+ }, {
+ "code": "340826",
+ "name": "宿松县"
+ }, {
+ "code": "340827",
+ "name": "望江县"
+ }, {
+ "code": "340828",
+ "name": "岳西县"
+ }, {
+ "code": "340871",
+ "name": "安徽安庆经济开发区"
+ }, {
+ "code": "340881",
+ "name": "桐城市"
+ }, {
+ "code": "340882",
+ "name": "潜山市"
+ }]
+ }, {
+ "code": "3410",
+ "name": "黄山市",
+ "children": [{
+ "code": "341002",
+ "name": "屯溪区"
+ }, {
+ "code": "341003",
+ "name": "黄山区"
+ }, {
+ "code": "341004",
+ "name": "徽州区"
+ }, {
+ "code": "341021",
+ "name": "歙县"
+ }, {
+ "code": "341022",
+ "name": "休宁县"
+ }, {
+ "code": "341023",
+ "name": "黟县"
+ }, {
+ "code": "341024",
+ "name": "祁门县"
+ }]
+ }, {
+ "code": "3411",
+ "name": "滁州市",
+ "children": [{
+ "code": "341102",
+ "name": "琅琊区"
+ }, {
+ "code": "341103",
+ "name": "南谯区"
+ }, {
+ "code": "341122",
+ "name": "来安县"
+ }, {
+ "code": "341124",
+ "name": "全椒县"
+ }, {
+ "code": "341125",
+ "name": "定远县"
+ }, {
+ "code": "341126",
+ "name": "凤阳县"
+ }, {
+ "code": "341171",
+ "name": "中新苏滁高新技术产业开发区"
+ }, {
+ "code": "341172",
+ "name": "滁州经济技术开发区"
+ }, {
+ "code": "341181",
+ "name": "天长市"
+ }, {
+ "code": "341182",
+ "name": "明光市"
+ }]
+ }, {
+ "code": "3412",
+ "name": "阜阳市",
+ "children": [{
+ "code": "341202",
+ "name": "颍州区"
+ }, {
+ "code": "341203",
+ "name": "颍东区"
+ }, {
+ "code": "341204",
+ "name": "颍泉区"
+ }, {
+ "code": "341221",
+ "name": "临泉县"
+ }, {
+ "code": "341222",
+ "name": "太和县"
+ }, {
+ "code": "341225",
+ "name": "阜南县"
+ }, {
+ "code": "341226",
+ "name": "颍上县"
+ }, {
+ "code": "341271",
+ "name": "阜阳合肥现代产业园区"
+ }, {
+ "code": "341272",
+ "name": "阜阳经济技术开发区"
+ }, {
+ "code": "341282",
+ "name": "界首市"
+ }]
+ }, {
+ "code": "3413",
+ "name": "宿州市",
+ "children": [{
+ "code": "341302",
+ "name": "埇桥区"
+ }, {
+ "code": "341321",
+ "name": "砀山县"
+ }, {
+ "code": "341322",
+ "name": "萧县"
+ }, {
+ "code": "341323",
+ "name": "灵璧县"
+ }, {
+ "code": "341324",
+ "name": "泗县"
+ }, {
+ "code": "341371",
+ "name": "宿州马鞍山现代产业园区"
+ }, {
+ "code": "341372",
+ "name": "宿州经济技术开发区"
+ }]
+ }, {
+ "code": "3415",
+ "name": "六安市",
+ "children": [{
+ "code": "341502",
+ "name": "金安区"
+ }, {
+ "code": "341503",
+ "name": "裕安区"
+ }, {
+ "code": "341504",
+ "name": "叶集区"
+ }, {
+ "code": "341522",
+ "name": "霍邱县"
+ }, {
+ "code": "341523",
+ "name": "舒城县"
+ }, {
+ "code": "341524",
+ "name": "金寨县"
+ }, {
+ "code": "341525",
+ "name": "霍山县"
+ }]
+ }, {
+ "code": "3416",
+ "name": "亳州市",
+ "children": [{
+ "code": "341602",
+ "name": "谯城区"
+ }, {
+ "code": "341621",
+ "name": "涡阳县"
+ }, {
+ "code": "341622",
+ "name": "蒙城县"
+ }, {
+ "code": "341623",
+ "name": "利辛县"
+ }]
+ }, {
+ "code": "3417",
+ "name": "池州市",
+ "children": [{
+ "code": "341702",
+ "name": "贵池区"
+ }, {
+ "code": "341721",
+ "name": "东至县"
+ }, {
+ "code": "341722",
+ "name": "石台县"
+ }, {
+ "code": "341723",
+ "name": "青阳县"
+ }]
+ }, {
+ "code": "3418",
+ "name": "宣城市",
+ "children": [{
+ "code": "341802",
+ "name": "宣州区"
+ }, {
+ "code": "341821",
+ "name": "郎溪县"
+ }, {
+ "code": "341823",
+ "name": "泾县"
+ }, {
+ "code": "341824",
+ "name": "绩溪县"
+ }, {
+ "code": "341825",
+ "name": "旌德县"
+ }, {
+ "code": "341871",
+ "name": "宣城市经济开发区"
+ }, {
+ "code": "341881",
+ "name": "宁国市"
+ }, {
+ "code": "341882",
+ "name": "广德市"
+ }]
+ }]
+}, {
+ "code": "35",
+ "name": "福建省",
+ "children": [{
+ "code": "3501",
+ "name": "福州市",
+ "children": [{
+ "code": "350102",
+ "name": "鼓楼区"
+ }, {
+ "code": "350103",
+ "name": "台江区"
+ }, {
+ "code": "350104",
+ "name": "仓山区"
+ }, {
+ "code": "350105",
+ "name": "马尾区"
+ }, {
+ "code": "350111",
+ "name": "晋安区"
+ }, {
+ "code": "350112",
+ "name": "长乐区"
+ }, {
+ "code": "350121",
+ "name": "闽侯县"
+ }, {
+ "code": "350122",
+ "name": "连江县"
+ }, {
+ "code": "350123",
+ "name": "罗源县"
+ }, {
+ "code": "350124",
+ "name": "闽清县"
+ }, {
+ "code": "350125",
+ "name": "永泰县"
+ }, {
+ "code": "350128",
+ "name": "平潭县"
+ }, {
+ "code": "350181",
+ "name": "福清市"
+ }]
+ }, {
+ "code": "3502",
+ "name": "厦门市",
+ "children": [{
+ "code": "350203",
+ "name": "思明区"
+ }, {
+ "code": "350205",
+ "name": "海沧区"
+ }, {
+ "code": "350206",
+ "name": "湖里区"
+ }, {
+ "code": "350211",
+ "name": "集美区"
+ }, {
+ "code": "350212",
+ "name": "同安区"
+ }, {
+ "code": "350213",
+ "name": "翔安区"
+ }]
+ }, {
+ "code": "3503",
+ "name": "莆田市",
+ "children": [{
+ "code": "350302",
+ "name": "城厢区"
+ }, {
+ "code": "350303",
+ "name": "涵江区"
+ }, {
+ "code": "350304",
+ "name": "荔城区"
+ }, {
+ "code": "350305",
+ "name": "秀屿区"
+ }, {
+ "code": "350322",
+ "name": "仙游县"
+ }]
+ }, {
+ "code": "3504",
+ "name": "三明市",
+ "children": [{
+ "code": "350404",
+ "name": "三元区"
+ }, {
+ "code": "350405",
+ "name": "沙县区"
+ }, {
+ "code": "350421",
+ "name": "明溪县"
+ }, {
+ "code": "350423",
+ "name": "清流县"
+ }, {
+ "code": "350424",
+ "name": "宁化县"
+ }, {
+ "code": "350425",
+ "name": "大田县"
+ }, {
+ "code": "350426",
+ "name": "尤溪县"
+ }, {
+ "code": "350428",
+ "name": "将乐县"
+ }, {
+ "code": "350429",
+ "name": "泰宁县"
+ }, {
+ "code": "350430",
+ "name": "建宁县"
+ }, {
+ "code": "350481",
+ "name": "永安市"
+ }]
+ }, {
+ "code": "3505",
+ "name": "泉州市",
+ "children": [{
+ "code": "350502",
+ "name": "鲤城区"
+ }, {
+ "code": "350503",
+ "name": "丰泽区"
+ }, {
+ "code": "350504",
+ "name": "洛江区"
+ }, {
+ "code": "350505",
+ "name": "泉港区"
+ }, {
+ "code": "350521",
+ "name": "惠安县"
+ }, {
+ "code": "350524",
+ "name": "安溪县"
+ }, {
+ "code": "350525",
+ "name": "永春县"
+ }, {
+ "code": "350526",
+ "name": "德化县"
+ }, {
+ "code": "350527",
+ "name": "金门县"
+ }, {
+ "code": "350581",
+ "name": "石狮市"
+ }, {
+ "code": "350582",
+ "name": "晋江市"
+ }, {
+ "code": "350583",
+ "name": "南安市"
+ }]
+ }, {
+ "code": "3506",
+ "name": "漳州市",
+ "children": [{
+ "code": "350602",
+ "name": "芗城区"
+ }, {
+ "code": "350603",
+ "name": "龙文区"
+ }, {
+ "code": "350604",
+ "name": "龙海区"
+ }, {
+ "code": "350605",
+ "name": "长泰区"
+ }, {
+ "code": "350622",
+ "name": "云霄县"
+ }, {
+ "code": "350623",
+ "name": "漳浦县"
+ }, {
+ "code": "350624",
+ "name": "诏安县"
+ }, {
+ "code": "350626",
+ "name": "东山县"
+ }, {
+ "code": "350627",
+ "name": "南靖县"
+ }, {
+ "code": "350628",
+ "name": "平和县"
+ }, {
+ "code": "350629",
+ "name": "华安县"
+ }]
+ }, {
+ "code": "3507",
+ "name": "南平市",
+ "children": [{
+ "code": "350702",
+ "name": "延平区"
+ }, {
+ "code": "350703",
+ "name": "建阳区"
+ }, {
+ "code": "350721",
+ "name": "顺昌县"
+ }, {
+ "code": "350722",
+ "name": "浦城县"
+ }, {
+ "code": "350723",
+ "name": "光泽县"
+ }, {
+ "code": "350724",
+ "name": "松溪县"
+ }, {
+ "code": "350725",
+ "name": "政和县"
+ }, {
+ "code": "350781",
+ "name": "邵武市"
+ }, {
+ "code": "350782",
+ "name": "武夷山市"
+ }, {
+ "code": "350783",
+ "name": "建瓯市"
+ }]
+ }, {
+ "code": "3508",
+ "name": "龙岩市",
+ "children": [{
+ "code": "350802",
+ "name": "新罗区"
+ }, {
+ "code": "350803",
+ "name": "永定区"
+ }, {
+ "code": "350821",
+ "name": "长汀县"
+ }, {
+ "code": "350823",
+ "name": "上杭县"
+ }, {
+ "code": "350824",
+ "name": "武平县"
+ }, {
+ "code": "350825",
+ "name": "连城县"
+ }, {
+ "code": "350881",
+ "name": "漳平市"
+ }]
+ }, {
+ "code": "3509",
+ "name": "宁德市",
+ "children": [{
+ "code": "350902",
+ "name": "蕉城区"
+ }, {
+ "code": "350921",
+ "name": "霞浦县"
+ }, {
+ "code": "350922",
+ "name": "古田县"
+ }, {
+ "code": "350923",
+ "name": "屏南县"
+ }, {
+ "code": "350924",
+ "name": "寿宁县"
+ }, {
+ "code": "350925",
+ "name": "周宁县"
+ }, {
+ "code": "350926",
+ "name": "柘荣县"
+ }, {
+ "code": "350981",
+ "name": "福安市"
+ }, {
+ "code": "350982",
+ "name": "福鼎市"
+ }]
+ }]
+}, {
+ "code": "36",
+ "name": "江西省",
+ "children": [{
+ "code": "3601",
+ "name": "南昌市",
+ "children": [{
+ "code": "360102",
+ "name": "东湖区"
+ }, {
+ "code": "360103",
+ "name": "西湖区"
+ }, {
+ "code": "360104",
+ "name": "青云谱区"
+ }, {
+ "code": "360111",
+ "name": "青山湖区"
+ }, {
+ "code": "360112",
+ "name": "新建区"
+ }, {
+ "code": "360113",
+ "name": "红谷滩区"
+ }, {
+ "code": "360121",
+ "name": "南昌县"
+ }, {
+ "code": "360123",
+ "name": "安义县"
+ }, {
+ "code": "360124",
+ "name": "进贤县"
+ }]
+ }, {
+ "code": "3602",
+ "name": "景德镇市",
+ "children": [{
+ "code": "360202",
+ "name": "昌江区"
+ }, {
+ "code": "360203",
+ "name": "珠山区"
+ }, {
+ "code": "360222",
+ "name": "浮梁县"
+ }, {
+ "code": "360281",
+ "name": "乐平市"
+ }]
+ }, {
+ "code": "3603",
+ "name": "萍乡市",
+ "children": [{
+ "code": "360302",
+ "name": "安源区"
+ }, {
+ "code": "360313",
+ "name": "湘东区"
+ }, {
+ "code": "360321",
+ "name": "莲花县"
+ }, {
+ "code": "360322",
+ "name": "上栗县"
+ }, {
+ "code": "360323",
+ "name": "芦溪县"
+ }]
+ }, {
+ "code": "3604",
+ "name": "九江市",
+ "children": [{
+ "code": "360402",
+ "name": "濂溪区"
+ }, {
+ "code": "360403",
+ "name": "浔阳区"
+ }, {
+ "code": "360404",
+ "name": "柴桑区"
+ }, {
+ "code": "360423",
+ "name": "武宁县"
+ }, {
+ "code": "360424",
+ "name": "修水县"
+ }, {
+ "code": "360425",
+ "name": "永修县"
+ }, {
+ "code": "360426",
+ "name": "德安县"
+ }, {
+ "code": "360428",
+ "name": "都昌县"
+ }, {
+ "code": "360429",
+ "name": "湖口县"
+ }, {
+ "code": "360430",
+ "name": "彭泽县"
+ }, {
+ "code": "360481",
+ "name": "瑞昌市"
+ }, {
+ "code": "360482",
+ "name": "共青城市"
+ }, {
+ "code": "360483",
+ "name": "庐山市"
+ }]
+ }, {
+ "code": "3605",
+ "name": "新余市",
+ "children": [{
+ "code": "360502",
+ "name": "渝水区"
+ }, {
+ "code": "360521",
+ "name": "分宜县"
+ }]
+ }, {
+ "code": "3606",
+ "name": "鹰潭市",
+ "children": [{
+ "code": "360602",
+ "name": "月湖区"
+ }, {
+ "code": "360603",
+ "name": "余江区"
+ }, {
+ "code": "360681",
+ "name": "贵溪市"
+ }]
+ }, {
+ "code": "3607",
+ "name": "赣州市",
+ "children": [{
+ "code": "360702",
+ "name": "章贡区"
+ }, {
+ "code": "360703",
+ "name": "南康区"
+ }, {
+ "code": "360704",
+ "name": "赣县区"
+ }, {
+ "code": "360722",
+ "name": "信丰县"
+ }, {
+ "code": "360723",
+ "name": "大余县"
+ }, {
+ "code": "360724",
+ "name": "上犹县"
+ }, {
+ "code": "360725",
+ "name": "崇义县"
+ }, {
+ "code": "360726",
+ "name": "安远县"
+ }, {
+ "code": "360728",
+ "name": "定南县"
+ }, {
+ "code": "360729",
+ "name": "全南县"
+ }, {
+ "code": "360730",
+ "name": "宁都县"
+ }, {
+ "code": "360731",
+ "name": "于都县"
+ }, {
+ "code": "360732",
+ "name": "兴国县"
+ }, {
+ "code": "360733",
+ "name": "会昌县"
+ }, {
+ "code": "360734",
+ "name": "寻乌县"
+ }, {
+ "code": "360735",
+ "name": "石城县"
+ }, {
+ "code": "360781",
+ "name": "瑞金市"
+ }, {
+ "code": "360783",
+ "name": "龙南市"
+ }]
+ }, {
+ "code": "3608",
+ "name": "吉安市",
+ "children": [{
+ "code": "360802",
+ "name": "吉州区"
+ }, {
+ "code": "360803",
+ "name": "青原区"
+ }, {
+ "code": "360821",
+ "name": "吉安县"
+ }, {
+ "code": "360822",
+ "name": "吉水县"
+ }, {
+ "code": "360823",
+ "name": "峡江县"
+ }, {
+ "code": "360824",
+ "name": "新干县"
+ }, {
+ "code": "360825",
+ "name": "永丰县"
+ }, {
+ "code": "360826",
+ "name": "泰和县"
+ }, {
+ "code": "360827",
+ "name": "遂川县"
+ }, {
+ "code": "360828",
+ "name": "万安县"
+ }, {
+ "code": "360829",
+ "name": "安福县"
+ }, {
+ "code": "360830",
+ "name": "永新县"
+ }, {
+ "code": "360881",
+ "name": "井冈山市"
+ }]
+ }, {
+ "code": "3609",
+ "name": "宜春市",
+ "children": [{
+ "code": "360902",
+ "name": "袁州区"
+ }, {
+ "code": "360921",
+ "name": "奉新县"
+ }, {
+ "code": "360922",
+ "name": "万载县"
+ }, {
+ "code": "360923",
+ "name": "上高县"
+ }, {
+ "code": "360924",
+ "name": "宜丰县"
+ }, {
+ "code": "360925",
+ "name": "靖安县"
+ }, {
+ "code": "360926",
+ "name": "铜鼓县"
+ }, {
+ "code": "360981",
+ "name": "丰城市"
+ }, {
+ "code": "360982",
+ "name": "樟树市"
+ }, {
+ "code": "360983",
+ "name": "高安市"
+ }]
+ }, {
+ "code": "3610",
+ "name": "抚州市",
+ "children": [{
+ "code": "361002",
+ "name": "临川区"
+ }, {
+ "code": "361003",
+ "name": "东乡区"
+ }, {
+ "code": "361021",
+ "name": "南城县"
+ }, {
+ "code": "361022",
+ "name": "黎川县"
+ }, {
+ "code": "361023",
+ "name": "南丰县"
+ }, {
+ "code": "361024",
+ "name": "崇仁县"
+ }, {
+ "code": "361025",
+ "name": "乐安县"
+ }, {
+ "code": "361026",
+ "name": "宜黄县"
+ }, {
+ "code": "361027",
+ "name": "金溪县"
+ }, {
+ "code": "361028",
+ "name": "资溪县"
+ }, {
+ "code": "361030",
+ "name": "广昌县"
+ }]
+ }, {
+ "code": "3611",
+ "name": "上饶市",
+ "children": [{
+ "code": "361102",
+ "name": "信州区"
+ }, {
+ "code": "361103",
+ "name": "广丰区"
+ }, {
+ "code": "361104",
+ "name": "广信区"
+ }, {
+ "code": "361123",
+ "name": "玉山县"
+ }, {
+ "code": "361124",
+ "name": "铅山县"
+ }, {
+ "code": "361125",
+ "name": "横峰县"
+ }, {
+ "code": "361126",
+ "name": "弋阳县"
+ }, {
+ "code": "361127",
+ "name": "余干县"
+ }, {
+ "code": "361128",
+ "name": "鄱阳县"
+ }, {
+ "code": "361129",
+ "name": "万年县"
+ }, {
+ "code": "361130",
+ "name": "婺源县"
+ }, {
+ "code": "361181",
+ "name": "德兴市"
+ }]
+ }]
+}, {
+ "code": "37",
+ "name": "山东省",
+ "children": [{
+ "code": "3701",
+ "name": "济南市",
+ "children": [{
+ "code": "370102",
+ "name": "历下区"
+ }, {
+ "code": "370103",
+ "name": "市中区"
+ }, {
+ "code": "370104",
+ "name": "槐荫区"
+ }, {
+ "code": "370105",
+ "name": "天桥区"
+ }, {
+ "code": "370112",
+ "name": "历城区"
+ }, {
+ "code": "370113",
+ "name": "长清区"
+ }, {
+ "code": "370114",
+ "name": "章丘区"
+ }, {
+ "code": "370115",
+ "name": "济阳区"
+ }, {
+ "code": "370116",
+ "name": "莱芜区"
+ }, {
+ "code": "370117",
+ "name": "钢城区"
+ }, {
+ "code": "370124",
+ "name": "平阴县"
+ }, {
+ "code": "370126",
+ "name": "商河县"
+ }, {
+ "code": "370176",
+ "name": "济南高新技术产业开发区"
+ }]
+ }, {
+ "code": "3702",
+ "name": "青岛市",
+ "children": [{
+ "code": "370202",
+ "name": "市南区"
+ }, {
+ "code": "370203",
+ "name": "市北区"
+ }, {
+ "code": "370211",
+ "name": "黄岛区"
+ }, {
+ "code": "370212",
+ "name": "崂山区"
+ }, {
+ "code": "370213",
+ "name": "李沧区"
+ }, {
+ "code": "370214",
+ "name": "城阳区"
+ }, {
+ "code": "370215",
+ "name": "即墨区"
+ }, {
+ "code": "370281",
+ "name": "胶州市"
+ }, {
+ "code": "370283",
+ "name": "平度市"
+ }, {
+ "code": "370285",
+ "name": "莱西市"
+ }]
+ }, {
+ "code": "3703",
+ "name": "淄博市",
+ "children": [{
+ "code": "370302",
+ "name": "淄川区"
+ }, {
+ "code": "370303",
+ "name": "张店区"
+ }, {
+ "code": "370304",
+ "name": "博山区"
+ }, {
+ "code": "370305",
+ "name": "临淄区"
+ }, {
+ "code": "370306",
+ "name": "周村区"
+ }, {
+ "code": "370321",
+ "name": "桓台县"
+ }, {
+ "code": "370322",
+ "name": "高青县"
+ }, {
+ "code": "370323",
+ "name": "沂源县"
+ }]
+ }, {
+ "code": "3704",
+ "name": "枣庄市",
+ "children": [{
+ "code": "370402",
+ "name": "市中区"
+ }, {
+ "code": "370403",
+ "name": "薛城区"
+ }, {
+ "code": "370404",
+ "name": "峄城区"
+ }, {
+ "code": "370405",
+ "name": "台儿庄区"
+ }, {
+ "code": "370406",
+ "name": "山亭区"
+ }, {
+ "code": "370481",
+ "name": "滕州市"
+ }]
+ }, {
+ "code": "3705",
+ "name": "东营市",
+ "children": [{
+ "code": "370502",
+ "name": "东营区"
+ }, {
+ "code": "370503",
+ "name": "河口区"
+ }, {
+ "code": "370505",
+ "name": "垦利区"
+ }, {
+ "code": "370522",
+ "name": "利津县"
+ }, {
+ "code": "370523",
+ "name": "广饶县"
+ }, {
+ "code": "370571",
+ "name": "东营经济技术开发区"
+ }, {
+ "code": "370572",
+ "name": "东营港经济开发区"
+ }]
+ }, {
+ "code": "3706",
+ "name": "烟台市",
+ "children": [{
+ "code": "370602",
+ "name": "芝罘区"
+ }, {
+ "code": "370611",
+ "name": "福山区"
+ }, {
+ "code": "370612",
+ "name": "牟平区"
+ }, {
+ "code": "370613",
+ "name": "莱山区"
+ }, {
+ "code": "370614",
+ "name": "蓬莱区"
+ }, {
+ "code": "370671",
+ "name": "烟台高新技术产业开发区"
+ }, {
+ "code": "370676",
+ "name": "烟台经济技术开发区"
+ }, {
+ "code": "370681",
+ "name": "龙口市"
+ }, {
+ "code": "370682",
+ "name": "莱阳市"
+ }, {
+ "code": "370683",
+ "name": "莱州市"
+ }, {
+ "code": "370685",
+ "name": "招远市"
+ }, {
+ "code": "370686",
+ "name": "栖霞市"
+ }, {
+ "code": "370687",
+ "name": "海阳市"
+ }]
+ }, {
+ "code": "3707",
+ "name": "潍坊市",
+ "children": [{
+ "code": "370702",
+ "name": "潍城区"
+ }, {
+ "code": "370703",
+ "name": "寒亭区"
+ }, {
+ "code": "370704",
+ "name": "坊子区"
+ }, {
+ "code": "370705",
+ "name": "奎文区"
+ }, {
+ "code": "370724",
+ "name": "临朐县"
+ }, {
+ "code": "370725",
+ "name": "昌乐县"
+ }, {
+ "code": "370772",
+ "name": "潍坊滨海经济技术开发区"
+ }, {
+ "code": "370781",
+ "name": "青州市"
+ }, {
+ "code": "370782",
+ "name": "诸城市"
+ }, {
+ "code": "370783",
+ "name": "寿光市"
+ }, {
+ "code": "370784",
+ "name": "安丘市"
+ }, {
+ "code": "370785",
+ "name": "高密市"
+ }, {
+ "code": "370786",
+ "name": "昌邑市"
+ }]
+ }, {
+ "code": "3708",
+ "name": "济宁市",
+ "children": [{
+ "code": "370811",
+ "name": "任城区"
+ }, {
+ "code": "370812",
+ "name": "兖州区"
+ }, {
+ "code": "370826",
+ "name": "微山县"
+ }, {
+ "code": "370827",
+ "name": "鱼台县"
+ }, {
+ "code": "370828",
+ "name": "金乡县"
+ }, {
+ "code": "370829",
+ "name": "嘉祥县"
+ }, {
+ "code": "370830",
+ "name": "汶上县"
+ }, {
+ "code": "370831",
+ "name": "泗水县"
+ }, {
+ "code": "370832",
+ "name": "梁山县"
+ }, {
+ "code": "370871",
+ "name": "济宁高新技术产业开发区"
+ }, {
+ "code": "370881",
+ "name": "曲阜市"
+ }, {
+ "code": "370883",
+ "name": "邹城市"
+ }]
+ }, {
+ "code": "3709",
+ "name": "泰安市",
+ "children": [{
+ "code": "370902",
+ "name": "泰山区"
+ }, {
+ "code": "370911",
+ "name": "岱岳区"
+ }, {
+ "code": "370921",
+ "name": "宁阳县"
+ }, {
+ "code": "370923",
+ "name": "东平县"
+ }, {
+ "code": "370982",
+ "name": "新泰市"
+ }, {
+ "code": "370983",
+ "name": "肥城市"
+ }]
+ }, {
+ "code": "3710",
+ "name": "威海市",
+ "children": [{
+ "code": "371002",
+ "name": "环翠区"
+ }, {
+ "code": "371003",
+ "name": "文登区"
+ }, {
+ "code": "371071",
+ "name": "威海火炬高技术产业开发区"
+ }, {
+ "code": "371072",
+ "name": "威海经济技术开发区"
+ }, {
+ "code": "371073",
+ "name": "威海临港经济技术开发区"
+ }, {
+ "code": "371082",
+ "name": "荣成市"
+ }, {
+ "code": "371083",
+ "name": "乳山市"
+ }]
+ }, {
+ "code": "3711",
+ "name": "日照市",
+ "children": [{
+ "code": "371102",
+ "name": "东港区"
+ }, {
+ "code": "371103",
+ "name": "岚山区"
+ }, {
+ "code": "371121",
+ "name": "五莲县"
+ }, {
+ "code": "371122",
+ "name": "莒县"
+ }, {
+ "code": "371171",
+ "name": "日照经济技术开发区"
+ }]
+ }, {
+ "code": "3713",
+ "name": "临沂市",
+ "children": [{
+ "code": "371302",
+ "name": "兰山区"
+ }, {
+ "code": "371311",
+ "name": "罗庄区"
+ }, {
+ "code": "371312",
+ "name": "河东区"
+ }, {
+ "code": "371321",
+ "name": "沂南县"
+ }, {
+ "code": "371322",
+ "name": "郯城县"
+ }, {
+ "code": "371323",
+ "name": "沂水县"
+ }, {
+ "code": "371324",
+ "name": "兰陵县"
+ }, {
+ "code": "371325",
+ "name": "费县"
+ }, {
+ "code": "371326",
+ "name": "平邑县"
+ }, {
+ "code": "371327",
+ "name": "莒南县"
+ }, {
+ "code": "371328",
+ "name": "蒙阴县"
+ }, {
+ "code": "371329",
+ "name": "临沭县"
+ }, {
+ "code": "371371",
+ "name": "临沂高新技术产业开发区"
+ }]
+ }, {
+ "code": "3714",
+ "name": "德州市",
+ "children": [{
+ "code": "371402",
+ "name": "德城区"
+ }, {
+ "code": "371403",
+ "name": "陵城区"
+ }, {
+ "code": "371422",
+ "name": "宁津县"
+ }, {
+ "code": "371423",
+ "name": "庆云县"
+ }, {
+ "code": "371424",
+ "name": "临邑县"
+ }, {
+ "code": "371425",
+ "name": "齐河县"
+ }, {
+ "code": "371426",
+ "name": "平原县"
+ }, {
+ "code": "371427",
+ "name": "夏津县"
+ }, {
+ "code": "371428",
+ "name": "武城县"
+ }, {
+ "code": "371471",
+ "name": "德州天衢新区"
+ }, {
+ "code": "371481",
+ "name": "乐陵市"
+ }, {
+ "code": "371482",
+ "name": "禹城市"
+ }]
+ }, {
+ "code": "3715",
+ "name": "聊城市",
+ "children": [{
+ "code": "371502",
+ "name": "东昌府区"
+ }, {
+ "code": "371503",
+ "name": "茌平区"
+ }, {
+ "code": "371521",
+ "name": "阳谷县"
+ }, {
+ "code": "371522",
+ "name": "莘县"
+ }, {
+ "code": "371524",
+ "name": "东阿县"
+ }, {
+ "code": "371525",
+ "name": "冠县"
+ }, {
+ "code": "371526",
+ "name": "高唐县"
+ }, {
+ "code": "371581",
+ "name": "临清市"
+ }]
+ }, {
+ "code": "3716",
+ "name": "滨州市",
+ "children": [{
+ "code": "371602",
+ "name": "滨城区"
+ }, {
+ "code": "371603",
+ "name": "沾化区"
+ }, {
+ "code": "371621",
+ "name": "惠民县"
+ }, {
+ "code": "371622",
+ "name": "阳信县"
+ }, {
+ "code": "371623",
+ "name": "无棣县"
+ }, {
+ "code": "371625",
+ "name": "博兴县"
+ }, {
+ "code": "371681",
+ "name": "邹平市"
+ }]
+ }, {
+ "code": "3717",
+ "name": "菏泽市",
+ "children": [{
+ "code": "371702",
+ "name": "牡丹区"
+ }, {
+ "code": "371703",
+ "name": "定陶区"
+ }, {
+ "code": "371721",
+ "name": "曹县"
+ }, {
+ "code": "371722",
+ "name": "单县"
+ }, {
+ "code": "371723",
+ "name": "成武县"
+ }, {
+ "code": "371724",
+ "name": "巨野县"
+ }, {
+ "code": "371725",
+ "name": "郓城县"
+ }, {
+ "code": "371726",
+ "name": "鄄城县"
+ }, {
+ "code": "371728",
+ "name": "东明县"
+ }, {
+ "code": "371771",
+ "name": "菏泽经济技术开发区"
+ }, {
+ "code": "371772",
+ "name": "菏泽高新技术开发区"
+ }]
+ }]
+}, {
+ "code": "41",
+ "name": "河南省",
+ "children": [{
+ "code": "4101",
+ "name": "郑州市",
+ "children": [{
+ "code": "410102",
+ "name": "中原区"
+ }, {
+ "code": "410103",
+ "name": "二七区"
+ }, {
+ "code": "410104",
+ "name": "管城回族区"
+ }, {
+ "code": "410105",
+ "name": "金水区"
+ }, {
+ "code": "410106",
+ "name": "上街区"
+ }, {
+ "code": "410108",
+ "name": "惠济区"
+ }, {
+ "code": "410122",
+ "name": "中牟县"
+ }, {
+ "code": "410171",
+ "name": "郑州经济技术开发区"
+ }, {
+ "code": "410172",
+ "name": "郑州高新技术产业开发区"
+ }, {
+ "code": "410173",
+ "name": "郑州航空港经济综合实验区"
+ }, {
+ "code": "410181",
+ "name": "巩义市"
+ }, {
+ "code": "410182",
+ "name": "荥阳市"
+ }, {
+ "code": "410183",
+ "name": "新密市"
+ }, {
+ "code": "410184",
+ "name": "新郑市"
+ }, {
+ "code": "410185",
+ "name": "登封市"
+ }]
+ }, {
+ "code": "4102",
+ "name": "开封市",
+ "children": [{
+ "code": "410202",
+ "name": "龙亭区"
+ }, {
+ "code": "410203",
+ "name": "顺河回族区"
+ }, {
+ "code": "410204",
+ "name": "鼓楼区"
+ }, {
+ "code": "410205",
+ "name": "禹王台区"
+ }, {
+ "code": "410212",
+ "name": "祥符区"
+ }, {
+ "code": "410221",
+ "name": "杞县"
+ }, {
+ "code": "410222",
+ "name": "通许县"
+ }, {
+ "code": "410223",
+ "name": "尉氏县"
+ }, {
+ "code": "410225",
+ "name": "兰考县"
+ }]
+ }, {
+ "code": "4103",
+ "name": "洛阳市",
+ "children": [{
+ "code": "410302",
+ "name": "老城区"
+ }, {
+ "code": "410303",
+ "name": "西工区"
+ }, {
+ "code": "410304",
+ "name": "瀍河回族区"
+ }, {
+ "code": "410305",
+ "name": "涧西区"
+ }, {
+ "code": "410307",
+ "name": "偃师区"
+ }, {
+ "code": "410308",
+ "name": "孟津区"
+ }, {
+ "code": "410311",
+ "name": "洛龙区"
+ }, {
+ "code": "410323",
+ "name": "新安县"
+ }, {
+ "code": "410324",
+ "name": "栾川县"
+ }, {
+ "code": "410325",
+ "name": "嵩县"
+ }, {
+ "code": "410326",
+ "name": "汝阳县"
+ }, {
+ "code": "410327",
+ "name": "宜阳县"
+ }, {
+ "code": "410328",
+ "name": "洛宁县"
+ }, {
+ "code": "410329",
+ "name": "伊川县"
+ }, {
+ "code": "410371",
+ "name": "洛阳高新技术产业开发区"
+ }]
+ }, {
+ "code": "4104",
+ "name": "平顶山市",
+ "children": [{
+ "code": "410402",
+ "name": "新华区"
+ }, {
+ "code": "410403",
+ "name": "卫东区"
+ }, {
+ "code": "410404",
+ "name": "石龙区"
+ }, {
+ "code": "410411",
+ "name": "湛河区"
+ }, {
+ "code": "410421",
+ "name": "宝丰县"
+ }, {
+ "code": "410422",
+ "name": "叶县"
+ }, {
+ "code": "410423",
+ "name": "鲁山县"
+ }, {
+ "code": "410425",
+ "name": "郏县"
+ }, {
+ "code": "410471",
+ "name": "平顶山高新技术产业开发区"
+ }, {
+ "code": "410472",
+ "name": "平顶山市城乡一体化示范区"
+ }, {
+ "code": "410481",
+ "name": "舞钢市"
+ }, {
+ "code": "410482",
+ "name": "汝州市"
+ }]
+ }, {
+ "code": "4105",
+ "name": "安阳市",
+ "children": [{
+ "code": "410502",
+ "name": "文峰区"
+ }, {
+ "code": "410503",
+ "name": "北关区"
+ }, {
+ "code": "410505",
+ "name": "殷都区"
+ }, {
+ "code": "410506",
+ "name": "龙安区"
+ }, {
+ "code": "410522",
+ "name": "安阳县"
+ }, {
+ "code": "410523",
+ "name": "汤阴县"
+ }, {
+ "code": "410526",
+ "name": "滑县"
+ }, {
+ "code": "410527",
+ "name": "内黄县"
+ }, {
+ "code": "410571",
+ "name": "安阳高新技术产业开发区"
+ }, {
+ "code": "410581",
+ "name": "林州市"
+ }]
+ }, {
+ "code": "4106",
+ "name": "鹤壁市",
+ "children": [{
+ "code": "410602",
+ "name": "鹤山区"
+ }, {
+ "code": "410603",
+ "name": "山城区"
+ }, {
+ "code": "410611",
+ "name": "淇滨区"
+ }, {
+ "code": "410621",
+ "name": "浚县"
+ }, {
+ "code": "410622",
+ "name": "淇县"
+ }, {
+ "code": "410671",
+ "name": "鹤壁经济技术开发区"
+ }]
+ }, {
+ "code": "4107",
+ "name": "新乡市",
+ "children": [{
+ "code": "410702",
+ "name": "红旗区"
+ }, {
+ "code": "410703",
+ "name": "卫滨区"
+ }, {
+ "code": "410704",
+ "name": "凤泉区"
+ }, {
+ "code": "410711",
+ "name": "牧野区"
+ }, {
+ "code": "410721",
+ "name": "新乡县"
+ }, {
+ "code": "410724",
+ "name": "获嘉县"
+ }, {
+ "code": "410725",
+ "name": "原阳县"
+ }, {
+ "code": "410726",
+ "name": "延津县"
+ }, {
+ "code": "410727",
+ "name": "封丘县"
+ }, {
+ "code": "410771",
+ "name": "新乡高新技术产业开发区"
+ }, {
+ "code": "410772",
+ "name": "新乡经济技术开发区"
+ }, {
+ "code": "410773",
+ "name": "新乡市平原城乡一体化示范区"
+ }, {
+ "code": "410781",
+ "name": "卫辉市"
+ }, {
+ "code": "410782",
+ "name": "辉县市"
+ }, {
+ "code": "410783",
+ "name": "长垣市"
+ }]
+ }, {
+ "code": "4108",
+ "name": "焦作市",
+ "children": [{
+ "code": "410802",
+ "name": "解放区"
+ }, {
+ "code": "410803",
+ "name": "中站区"
+ }, {
+ "code": "410804",
+ "name": "马村区"
+ }, {
+ "code": "410811",
+ "name": "山阳区"
+ }, {
+ "code": "410821",
+ "name": "修武县"
+ }, {
+ "code": "410822",
+ "name": "博爱县"
+ }, {
+ "code": "410823",
+ "name": "武陟县"
+ }, {
+ "code": "410825",
+ "name": "温县"
+ }, {
+ "code": "410871",
+ "name": "焦作城乡一体化示范区"
+ }, {
+ "code": "410882",
+ "name": "沁阳市"
+ }, {
+ "code": "410883",
+ "name": "孟州市"
+ }]
+ }, {
+ "code": "4109",
+ "name": "濮阳市",
+ "children": [{
+ "code": "410902",
+ "name": "华龙区"
+ }, {
+ "code": "410922",
+ "name": "清丰县"
+ }, {
+ "code": "410923",
+ "name": "南乐县"
+ }, {
+ "code": "410926",
+ "name": "范县"
+ }, {
+ "code": "410927",
+ "name": "台前县"
+ }, {
+ "code": "410928",
+ "name": "濮阳县"
+ }, {
+ "code": "410971",
+ "name": "河南濮阳工业园区"
+ }, {
+ "code": "410972",
+ "name": "濮阳经济技术开发区"
+ }]
+ }, {
+ "code": "4110",
+ "name": "许昌市",
+ "children": [{
+ "code": "411002",
+ "name": "魏都区"
+ }, {
+ "code": "411003",
+ "name": "建安区"
+ }, {
+ "code": "411024",
+ "name": "鄢陵县"
+ }, {
+ "code": "411025",
+ "name": "襄城县"
+ }, {
+ "code": "411071",
+ "name": "许昌经济技术开发区"
+ }, {
+ "code": "411081",
+ "name": "禹州市"
+ }, {
+ "code": "411082",
+ "name": "长葛市"
+ }]
+ }, {
+ "code": "4111",
+ "name": "漯河市",
+ "children": [{
+ "code": "411102",
+ "name": "源汇区"
+ }, {
+ "code": "411103",
+ "name": "郾城区"
+ }, {
+ "code": "411104",
+ "name": "召陵区"
+ }, {
+ "code": "411121",
+ "name": "舞阳县"
+ }, {
+ "code": "411122",
+ "name": "临颍县"
+ }, {
+ "code": "411171",
+ "name": "漯河经济技术开发区"
+ }]
+ }, {
+ "code": "4112",
+ "name": "三门峡市",
+ "children": [{
+ "code": "411202",
+ "name": "湖滨区"
+ }, {
+ "code": "411203",
+ "name": "陕州区"
+ }, {
+ "code": "411221",
+ "name": "渑池县"
+ }, {
+ "code": "411224",
+ "name": "卢氏县"
+ }, {
+ "code": "411271",
+ "name": "河南三门峡经济开发区"
+ }, {
+ "code": "411281",
+ "name": "义马市"
+ }, {
+ "code": "411282",
+ "name": "灵宝市"
+ }]
+ }, {
+ "code": "4113",
+ "name": "南阳市",
+ "children": [{
+ "code": "411302",
+ "name": "宛城区"
+ }, {
+ "code": "411303",
+ "name": "卧龙区"
+ }, {
+ "code": "411321",
+ "name": "南召县"
+ }, {
+ "code": "411322",
+ "name": "方城县"
+ }, {
+ "code": "411323",
+ "name": "西峡县"
+ }, {
+ "code": "411324",
+ "name": "镇平县"
+ }, {
+ "code": "411325",
+ "name": "内乡县"
+ }, {
+ "code": "411326",
+ "name": "淅川县"
+ }, {
+ "code": "411327",
+ "name": "社旗县"
+ }, {
+ "code": "411328",
+ "name": "唐河县"
+ }, {
+ "code": "411329",
+ "name": "新野县"
+ }, {
+ "code": "411330",
+ "name": "桐柏县"
+ }, {
+ "code": "411371",
+ "name": "南阳高新技术产业开发区"
+ }, {
+ "code": "411372",
+ "name": "南阳市城乡一体化示范区"
+ }, {
+ "code": "411381",
+ "name": "邓州市"
+ }]
+ }, {
+ "code": "4114",
+ "name": "商丘市",
+ "children": [{
+ "code": "411402",
+ "name": "梁园区"
+ }, {
+ "code": "411403",
+ "name": "睢阳区"
+ }, {
+ "code": "411421",
+ "name": "民权县"
+ }, {
+ "code": "411422",
+ "name": "睢县"
+ }, {
+ "code": "411423",
+ "name": "宁陵县"
+ }, {
+ "code": "411424",
+ "name": "柘城县"
+ }, {
+ "code": "411425",
+ "name": "虞城县"
+ }, {
+ "code": "411426",
+ "name": "夏邑县"
+ }, {
+ "code": "411471",
+ "name": "豫东综合物流产业聚集区"
+ }, {
+ "code": "411472",
+ "name": "河南商丘经济开发区"
+ }, {
+ "code": "411481",
+ "name": "永城市"
+ }]
+ }, {
+ "code": "4115",
+ "name": "信阳市",
+ "children": [{
+ "code": "411502",
+ "name": "浉河区"
+ }, {
+ "code": "411503",
+ "name": "平桥区"
+ }, {
+ "code": "411521",
+ "name": "罗山县"
+ }, {
+ "code": "411522",
+ "name": "光山县"
+ }, {
+ "code": "411523",
+ "name": "新县"
+ }, {
+ "code": "411524",
+ "name": "商城县"
+ }, {
+ "code": "411525",
+ "name": "固始县"
+ }, {
+ "code": "411526",
+ "name": "潢川县"
+ }, {
+ "code": "411527",
+ "name": "淮滨县"
+ }, {
+ "code": "411528",
+ "name": "息县"
+ }, {
+ "code": "411571",
+ "name": "信阳高新技术产业开发区"
+ }]
+ }, {
+ "code": "4116",
+ "name": "周口市",
+ "children": [{
+ "code": "411602",
+ "name": "川汇区"
+ }, {
+ "code": "411603",
+ "name": "淮阳区"
+ }, {
+ "code": "411621",
+ "name": "扶沟县"
+ }, {
+ "code": "411622",
+ "name": "西华县"
+ }, {
+ "code": "411623",
+ "name": "商水县"
+ }, {
+ "code": "411624",
+ "name": "沈丘县"
+ }, {
+ "code": "411625",
+ "name": "郸城县"
+ }, {
+ "code": "411627",
+ "name": "太康县"
+ }, {
+ "code": "411628",
+ "name": "鹿邑县"
+ }, {
+ "code": "411671",
+ "name": "周口临港开发区"
+ }, {
+ "code": "411681",
+ "name": "项城市"
+ }]
+ }, {
+ "code": "4117",
+ "name": "驻马店市",
+ "children": [{
+ "code": "411702",
+ "name": "驿城区"
+ }, {
+ "code": "411721",
+ "name": "西平县"
+ }, {
+ "code": "411722",
+ "name": "上蔡县"
+ }, {
+ "code": "411723",
+ "name": "平舆县"
+ }, {
+ "code": "411724",
+ "name": "正阳县"
+ }, {
+ "code": "411725",
+ "name": "确山县"
+ }, {
+ "code": "411726",
+ "name": "泌阳县"
+ }, {
+ "code": "411727",
+ "name": "汝南县"
+ }, {
+ "code": "411728",
+ "name": "遂平县"
+ }, {
+ "code": "411729",
+ "name": "新蔡县"
+ }, {
+ "code": "411771",
+ "name": "河南驻马店经济开发区"
+ }]
+ }, {
+ "code": "4190",
+ "name": "省直辖县级行政区划",
+ "children": [{
+ "code": "419001",
+ "name": "济源市"
+ }]
+ }]
+}, {
+ "code": "42",
+ "name": "湖北省",
+ "children": [{
+ "code": "4201",
+ "name": "武汉市",
+ "children": [{
+ "code": "420102",
+ "name": "江岸区"
+ }, {
+ "code": "420103",
+ "name": "江汉区"
+ }, {
+ "code": "420104",
+ "name": "硚口区"
+ }, {
+ "code": "420105",
+ "name": "汉阳区"
+ }, {
+ "code": "420106",
+ "name": "武昌区"
+ }, {
+ "code": "420107",
+ "name": "青山区"
+ }, {
+ "code": "420111",
+ "name": "洪山区"
+ }, {
+ "code": "420112",
+ "name": "东西湖区"
+ }, {
+ "code": "420113",
+ "name": "汉南区"
+ }, {
+ "code": "420114",
+ "name": "蔡甸区"
+ }, {
+ "code": "420115",
+ "name": "江夏区"
+ }, {
+ "code": "420116",
+ "name": "黄陂区"
+ }, {
+ "code": "420117",
+ "name": "新洲区"
+ }]
+ }, {
+ "code": "4202",
+ "name": "黄石市",
+ "children": [{
+ "code": "420202",
+ "name": "黄石港区"
+ }, {
+ "code": "420203",
+ "name": "西塞山区"
+ }, {
+ "code": "420204",
+ "name": "下陆区"
+ }, {
+ "code": "420205",
+ "name": "铁山区"
+ }, {
+ "code": "420222",
+ "name": "阳新县"
+ }, {
+ "code": "420281",
+ "name": "大冶市"
+ }]
+ }, {
+ "code": "4203",
+ "name": "十堰市",
+ "children": [{
+ "code": "420302",
+ "name": "茅箭区"
+ }, {
+ "code": "420303",
+ "name": "张湾区"
+ }, {
+ "code": "420304",
+ "name": "郧阳区"
+ }, {
+ "code": "420322",
+ "name": "郧西县"
+ }, {
+ "code": "420323",
+ "name": "竹山县"
+ }, {
+ "code": "420324",
+ "name": "竹溪县"
+ }, {
+ "code": "420325",
+ "name": "房县"
+ }, {
+ "code": "420381",
+ "name": "丹江口市"
+ }]
+ }, {
+ "code": "4205",
+ "name": "宜昌市",
+ "children": [{
+ "code": "420502",
+ "name": "西陵区"
+ }, {
+ "code": "420503",
+ "name": "伍家岗区"
+ }, {
+ "code": "420504",
+ "name": "点军区"
+ }, {
+ "code": "420505",
+ "name": "猇亭区"
+ }, {
+ "code": "420506",
+ "name": "夷陵区"
+ }, {
+ "code": "420525",
+ "name": "远安县"
+ }, {
+ "code": "420526",
+ "name": "兴山县"
+ }, {
+ "code": "420527",
+ "name": "秭归县"
+ }, {
+ "code": "420528",
+ "name": "长阳土家族自治县"
+ }, {
+ "code": "420529",
+ "name": "五峰土家族自治县"
+ }, {
+ "code": "420581",
+ "name": "宜都市"
+ }, {
+ "code": "420582",
+ "name": "当阳市"
+ }, {
+ "code": "420583",
+ "name": "枝江市"
+ }]
+ }, {
+ "code": "4206",
+ "name": "襄阳市",
+ "children": [{
+ "code": "420602",
+ "name": "襄城区"
+ }, {
+ "code": "420606",
+ "name": "樊城区"
+ }, {
+ "code": "420607",
+ "name": "襄州区"
+ }, {
+ "code": "420624",
+ "name": "南漳县"
+ }, {
+ "code": "420625",
+ "name": "谷城县"
+ }, {
+ "code": "420626",
+ "name": "保康县"
+ }, {
+ "code": "420682",
+ "name": "老河口市"
+ }, {
+ "code": "420683",
+ "name": "枣阳市"
+ }, {
+ "code": "420684",
+ "name": "宜城市"
+ }]
+ }, {
+ "code": "4207",
+ "name": "鄂州市",
+ "children": [{
+ "code": "420702",
+ "name": "梁子湖区"
+ }, {
+ "code": "420703",
+ "name": "华容区"
+ }, {
+ "code": "420704",
+ "name": "鄂城区"
+ }]
+ }, {
+ "code": "4208",
+ "name": "荆门市",
+ "children": [{
+ "code": "420802",
+ "name": "东宝区"
+ }, {
+ "code": "420804",
+ "name": "掇刀区"
+ }, {
+ "code": "420822",
+ "name": "沙洋县"
+ }, {
+ "code": "420881",
+ "name": "钟祥市"
+ }, {
+ "code": "420882",
+ "name": "京山市"
+ }]
+ }, {
+ "code": "4209",
+ "name": "孝感市",
+ "children": [{
+ "code": "420902",
+ "name": "孝南区"
+ }, {
+ "code": "420921",
+ "name": "孝昌县"
+ }, {
+ "code": "420922",
+ "name": "大悟县"
+ }, {
+ "code": "420923",
+ "name": "云梦县"
+ }, {
+ "code": "420981",
+ "name": "应城市"
+ }, {
+ "code": "420982",
+ "name": "安陆市"
+ }, {
+ "code": "420984",
+ "name": "汉川市"
+ }]
+ }, {
+ "code": "4210",
+ "name": "荆州市",
+ "children": [{
+ "code": "421002",
+ "name": "沙市区"
+ }, {
+ "code": "421003",
+ "name": "荆州区"
+ }, {
+ "code": "421022",
+ "name": "公安县"
+ }, {
+ "code": "421024",
+ "name": "江陵县"
+ }, {
+ "code": "421071",
+ "name": "荆州经济技术开发区"
+ }, {
+ "code": "421081",
+ "name": "石首市"
+ }, {
+ "code": "421083",
+ "name": "洪湖市"
+ }, {
+ "code": "421087",
+ "name": "松滋市"
+ }, {
+ "code": "421088",
+ "name": "监利市"
+ }]
+ }, {
+ "code": "4211",
+ "name": "黄冈市",
+ "children": [{
+ "code": "421102",
+ "name": "黄州区"
+ }, {
+ "code": "421121",
+ "name": "团风县"
+ }, {
+ "code": "421122",
+ "name": "红安县"
+ }, {
+ "code": "421123",
+ "name": "罗田县"
+ }, {
+ "code": "421124",
+ "name": "英山县"
+ }, {
+ "code": "421125",
+ "name": "浠水县"
+ }, {
+ "code": "421126",
+ "name": "蕲春县"
+ }, {
+ "code": "421127",
+ "name": "黄梅县"
+ }, {
+ "code": "421171",
+ "name": "龙感湖管理区"
+ }, {
+ "code": "421181",
+ "name": "麻城市"
+ }, {
+ "code": "421182",
+ "name": "武穴市"
+ }]
+ }, {
+ "code": "4212",
+ "name": "咸宁市",
+ "children": [{
+ "code": "421202",
+ "name": "咸安区"
+ }, {
+ "code": "421221",
+ "name": "嘉鱼县"
+ }, {
+ "code": "421222",
+ "name": "通城县"
+ }, {
+ "code": "421223",
+ "name": "崇阳县"
+ }, {
+ "code": "421224",
+ "name": "通山县"
+ }, {
+ "code": "421281",
+ "name": "赤壁市"
+ }]
+ }, {
+ "code": "4213",
+ "name": "随州市",
+ "children": [{
+ "code": "421303",
+ "name": "曾都区"
+ }, {
+ "code": "421321",
+ "name": "随县"
+ }, {
+ "code": "421381",
+ "name": "广水市"
+ }]
+ }, {
+ "code": "4228",
+ "name": "恩施土家族苗族自治州",
+ "children": [{
+ "code": "422801",
+ "name": "恩施市"
+ }, {
+ "code": "422802",
+ "name": "利川市"
+ }, {
+ "code": "422822",
+ "name": "建始县"
+ }, {
+ "code": "422823",
+ "name": "巴东县"
+ }, {
+ "code": "422825",
+ "name": "宣恩县"
+ }, {
+ "code": "422826",
+ "name": "咸丰县"
+ }, {
+ "code": "422827",
+ "name": "来凤县"
+ }, {
+ "code": "422828",
+ "name": "鹤峰县"
+ }]
+ }, {
+ "code": "4290",
+ "name": "省直辖县级行政区划",
+ "children": [{
+ "code": "429004",
+ "name": "仙桃市"
+ }, {
+ "code": "429005",
+ "name": "潜江市"
+ }, {
+ "code": "429006",
+ "name": "天门市"
+ }, {
+ "code": "429021",
+ "name": "神农架林区"
+ }]
+ }]
+}, {
+ "code": "43",
+ "name": "湖南省",
+ "children": [{
+ "code": "4301",
+ "name": "长沙市",
+ "children": [{
+ "code": "430102",
+ "name": "芙蓉区"
+ }, {
+ "code": "430103",
+ "name": "天心区"
+ }, {
+ "code": "430104",
+ "name": "岳麓区"
+ }, {
+ "code": "430105",
+ "name": "开福区"
+ }, {
+ "code": "430111",
+ "name": "雨花区"
+ }, {
+ "code": "430112",
+ "name": "望城区"
+ }, {
+ "code": "430121",
+ "name": "长沙县"
+ }, {
+ "code": "430181",
+ "name": "浏阳市"
+ }, {
+ "code": "430182",
+ "name": "宁乡市"
+ }]
+ }, {
+ "code": "4302",
+ "name": "株洲市",
+ "children": [{
+ "code": "430202",
+ "name": "荷塘区"
+ }, {
+ "code": "430203",
+ "name": "芦淞区"
+ }, {
+ "code": "430204",
+ "name": "石峰区"
+ }, {
+ "code": "430211",
+ "name": "天元区"
+ }, {
+ "code": "430212",
+ "name": "渌口区"
+ }, {
+ "code": "430223",
+ "name": "攸县"
+ }, {
+ "code": "430224",
+ "name": "茶陵县"
+ }, {
+ "code": "430225",
+ "name": "炎陵县"
+ }, {
+ "code": "430281",
+ "name": "醴陵市"
+ }]
+ }, {
+ "code": "4303",
+ "name": "湘潭市",
+ "children": [{
+ "code": "430302",
+ "name": "雨湖区"
+ }, {
+ "code": "430304",
+ "name": "岳塘区"
+ }, {
+ "code": "430321",
+ "name": "湘潭县"
+ }, {
+ "code": "430371",
+ "name": "湖南湘潭高新技术产业园区"
+ }, {
+ "code": "430372",
+ "name": "湘潭昭山示范区"
+ }, {
+ "code": "430373",
+ "name": "湘潭九华示范区"
+ }, {
+ "code": "430381",
+ "name": "湘乡市"
+ }, {
+ "code": "430382",
+ "name": "韶山市"
+ }]
+ }, {
+ "code": "4304",
+ "name": "衡阳市",
+ "children": [{
+ "code": "430405",
+ "name": "珠晖区"
+ }, {
+ "code": "430406",
+ "name": "雁峰区"
+ }, {
+ "code": "430407",
+ "name": "石鼓区"
+ }, {
+ "code": "430408",
+ "name": "蒸湘区"
+ }, {
+ "code": "430412",
+ "name": "南岳区"
+ }, {
+ "code": "430421",
+ "name": "衡阳县"
+ }, {
+ "code": "430422",
+ "name": "衡南县"
+ }, {
+ "code": "430423",
+ "name": "衡山县"
+ }, {
+ "code": "430424",
+ "name": "衡东县"
+ }, {
+ "code": "430426",
+ "name": "祁东县"
+ }, {
+ "code": "430473",
+ "name": "湖南衡阳松木经济开发区"
+ }, {
+ "code": "430476",
+ "name": "湖南衡阳高新技术产业园区"
+ }, {
+ "code": "430481",
+ "name": "耒阳市"
+ }, {
+ "code": "430482",
+ "name": "常宁市"
+ }]
+ }, {
+ "code": "4305",
+ "name": "邵阳市",
+ "children": [{
+ "code": "430502",
+ "name": "双清区"
+ }, {
+ "code": "430503",
+ "name": "大祥区"
+ }, {
+ "code": "430511",
+ "name": "北塔区"
+ }, {
+ "code": "430522",
+ "name": "新邵县"
+ }, {
+ "code": "430523",
+ "name": "邵阳县"
+ }, {
+ "code": "430524",
+ "name": "隆回县"
+ }, {
+ "code": "430525",
+ "name": "洞口县"
+ }, {
+ "code": "430527",
+ "name": "绥宁县"
+ }, {
+ "code": "430528",
+ "name": "新宁县"
+ }, {
+ "code": "430529",
+ "name": "城步苗族自治县"
+ }, {
+ "code": "430581",
+ "name": "武冈市"
+ }, {
+ "code": "430582",
+ "name": "邵东市"
+ }]
+ }, {
+ "code": "4306",
+ "name": "岳阳市",
+ "children": [{
+ "code": "430602",
+ "name": "岳阳楼区"
+ }, {
+ "code": "430603",
+ "name": "云溪区"
+ }, {
+ "code": "430611",
+ "name": "君山区"
+ }, {
+ "code": "430621",
+ "name": "岳阳县"
+ }, {
+ "code": "430623",
+ "name": "华容县"
+ }, {
+ "code": "430624",
+ "name": "湘阴县"
+ }, {
+ "code": "430626",
+ "name": "平江县"
+ }, {
+ "code": "430671",
+ "name": "岳阳市屈原管理区"
+ }, {
+ "code": "430681",
+ "name": "汨罗市"
+ }, {
+ "code": "430682",
+ "name": "临湘市"
+ }]
+ }, {
+ "code": "4307",
+ "name": "常德市",
+ "children": [{
+ "code": "430702",
+ "name": "武陵区"
+ }, {
+ "code": "430703",
+ "name": "鼎城区"
+ }, {
+ "code": "430721",
+ "name": "安乡县"
+ }, {
+ "code": "430722",
+ "name": "汉寿县"
+ }, {
+ "code": "430723",
+ "name": "澧县"
+ }, {
+ "code": "430724",
+ "name": "临澧县"
+ }, {
+ "code": "430725",
+ "name": "桃源县"
+ }, {
+ "code": "430726",
+ "name": "石门县"
+ }, {
+ "code": "430771",
+ "name": "常德市西洞庭管理区"
+ }, {
+ "code": "430781",
+ "name": "津市市"
+ }]
+ }, {
+ "code": "4308",
+ "name": "张家界市",
+ "children": [{
+ "code": "430802",
+ "name": "永定区"
+ }, {
+ "code": "430811",
+ "name": "武陵源区"
+ }, {
+ "code": "430821",
+ "name": "慈利县"
+ }, {
+ "code": "430822",
+ "name": "桑植县"
+ }]
+ }, {
+ "code": "4309",
+ "name": "益阳市",
+ "children": [{
+ "code": "430902",
+ "name": "资阳区"
+ }, {
+ "code": "430903",
+ "name": "赫山区"
+ }, {
+ "code": "430921",
+ "name": "南县"
+ }, {
+ "code": "430922",
+ "name": "桃江县"
+ }, {
+ "code": "430923",
+ "name": "安化县"
+ }, {
+ "code": "430971",
+ "name": "益阳市大通湖管理区"
+ }, {
+ "code": "430972",
+ "name": "湖南益阳高新技术产业园区"
+ }, {
+ "code": "430981",
+ "name": "沅江市"
+ }]
+ }, {
+ "code": "4310",
+ "name": "郴州市",
+ "children": [{
+ "code": "431002",
+ "name": "北湖区"
+ }, {
+ "code": "431003",
+ "name": "苏仙区"
+ }, {
+ "code": "431021",
+ "name": "桂阳县"
+ }, {
+ "code": "431022",
+ "name": "宜章县"
+ }, {
+ "code": "431023",
+ "name": "永兴县"
+ }, {
+ "code": "431024",
+ "name": "嘉禾县"
+ }, {
+ "code": "431025",
+ "name": "临武县"
+ }, {
+ "code": "431026",
+ "name": "汝城县"
+ }, {
+ "code": "431027",
+ "name": "桂东县"
+ }, {
+ "code": "431028",
+ "name": "安仁县"
+ }, {
+ "code": "431081",
+ "name": "资兴市"
+ }]
+ }, {
+ "code": "4311",
+ "name": "永州市",
+ "children": [{
+ "code": "431102",
+ "name": "零陵区"
+ }, {
+ "code": "431103",
+ "name": "冷水滩区"
+ }, {
+ "code": "431122",
+ "name": "东安县"
+ }, {
+ "code": "431123",
+ "name": "双牌县"
+ }, {
+ "code": "431124",
+ "name": "道县"
+ }, {
+ "code": "431125",
+ "name": "江永县"
+ }, {
+ "code": "431126",
+ "name": "宁远县"
+ }, {
+ "code": "431127",
+ "name": "蓝山县"
+ }, {
+ "code": "431128",
+ "name": "新田县"
+ }, {
+ "code": "431129",
+ "name": "江华瑶族自治县"
+ }, {
+ "code": "431171",
+ "name": "永州经济技术开发区"
+ }, {
+ "code": "431173",
+ "name": "永州市回龙圩管理区"
+ }, {
+ "code": "431181",
+ "name": "祁阳市"
+ }]
+ }, {
+ "code": "4312",
+ "name": "怀化市",
+ "children": [{
+ "code": "431202",
+ "name": "鹤城区"
+ }, {
+ "code": "431221",
+ "name": "中方县"
+ }, {
+ "code": "431222",
+ "name": "沅陵县"
+ }, {
+ "code": "431223",
+ "name": "辰溪县"
+ }, {
+ "code": "431224",
+ "name": "溆浦县"
+ }, {
+ "code": "431225",
+ "name": "会同县"
+ }, {
+ "code": "431226",
+ "name": "麻阳苗族自治县"
+ }, {
+ "code": "431227",
+ "name": "新晃侗族自治县"
+ }, {
+ "code": "431228",
+ "name": "芷江侗族自治县"
+ }, {
+ "code": "431229",
+ "name": "靖州苗族侗族自治县"
+ }, {
+ "code": "431230",
+ "name": "通道侗族自治县"
+ }, {
+ "code": "431271",
+ "name": "怀化市洪江管理区"
+ }, {
+ "code": "431281",
+ "name": "洪江市"
+ }]
+ }, {
+ "code": "4313",
+ "name": "娄底市",
+ "children": [{
+ "code": "431302",
+ "name": "娄星区"
+ }, {
+ "code": "431321",
+ "name": "双峰县"
+ }, {
+ "code": "431322",
+ "name": "新化县"
+ }, {
+ "code": "431381",
+ "name": "冷水江市"
+ }, {
+ "code": "431382",
+ "name": "涟源市"
+ }]
+ }, {
+ "code": "4331",
+ "name": "湘西土家族苗族自治州",
+ "children": [{
+ "code": "433101",
+ "name": "吉首市"
+ }, {
+ "code": "433122",
+ "name": "泸溪县"
+ }, {
+ "code": "433123",
+ "name": "凤凰县"
+ }, {
+ "code": "433124",
+ "name": "花垣县"
+ }, {
+ "code": "433125",
+ "name": "保靖县"
+ }, {
+ "code": "433126",
+ "name": "古丈县"
+ }, {
+ "code": "433127",
+ "name": "永顺县"
+ }, {
+ "code": "433130",
+ "name": "龙山县"
+ }]
+ }]
+}, {
+ "code": "44",
+ "name": "广东省",
+ "children": [{
+ "code": "4401",
+ "name": "广州市",
+ "children": [{
+ "code": "440103",
+ "name": "荔湾区"
+ }, {
+ "code": "440104",
+ "name": "越秀区"
+ }, {
+ "code": "440105",
+ "name": "海珠区"
+ }, {
+ "code": "440106",
+ "name": "天河区"
+ }, {
+ "code": "440111",
+ "name": "白云区"
+ }, {
+ "code": "440112",
+ "name": "黄埔区"
+ }, {
+ "code": "440113",
+ "name": "番禺区"
+ }, {
+ "code": "440114",
+ "name": "花都区"
+ }, {
+ "code": "440115",
+ "name": "南沙区"
+ }, {
+ "code": "440117",
+ "name": "从化区"
+ }, {
+ "code": "440118",
+ "name": "增城区"
+ }]
+ }, {
+ "code": "4402",
+ "name": "韶关市",
+ "children": [{
+ "code": "440203",
+ "name": "武江区"
+ }, {
+ "code": "440204",
+ "name": "浈江区"
+ }, {
+ "code": "440205",
+ "name": "曲江区"
+ }, {
+ "code": "440222",
+ "name": "始兴县"
+ }, {
+ "code": "440224",
+ "name": "仁化县"
+ }, {
+ "code": "440229",
+ "name": "翁源县"
+ }, {
+ "code": "440232",
+ "name": "乳源瑶族自治县"
+ }, {
+ "code": "440233",
+ "name": "新丰县"
+ }, {
+ "code": "440281",
+ "name": "乐昌市"
+ }, {
+ "code": "440282",
+ "name": "南雄市"
+ }]
+ }, {
+ "code": "4403",
+ "name": "深圳市",
+ "children": [{
+ "code": "440303",
+ "name": "罗湖区"
+ }, {
+ "code": "440304",
+ "name": "福田区"
+ }, {
+ "code": "440305",
+ "name": "南山区"
+ }, {
+ "code": "440306",
+ "name": "宝安区"
+ }, {
+ "code": "440307",
+ "name": "龙岗区"
+ }, {
+ "code": "440308",
+ "name": "盐田区"
+ }, {
+ "code": "440309",
+ "name": "龙华区"
+ }, {
+ "code": "440310",
+ "name": "坪山区"
+ }, {
+ "code": "440311",
+ "name": "光明区"
+ }]
+ }, {
+ "code": "4404",
+ "name": "珠海市",
+ "children": [{
+ "code": "440402",
+ "name": "香洲区"
+ }, {
+ "code": "440403",
+ "name": "斗门区"
+ }, {
+ "code": "440404",
+ "name": "金湾区"
+ }]
+ }, {
+ "code": "4405",
+ "name": "汕头市",
+ "children": [{
+ "code": "440507",
+ "name": "龙湖区"
+ }, {
+ "code": "440511",
+ "name": "金平区"
+ }, {
+ "code": "440512",
+ "name": "濠江区"
+ }, {
+ "code": "440513",
+ "name": "潮阳区"
+ }, {
+ "code": "440514",
+ "name": "潮南区"
+ }, {
+ "code": "440515",
+ "name": "澄海区"
+ }, {
+ "code": "440523",
+ "name": "南澳县"
+ }]
+ }, {
+ "code": "4406",
+ "name": "佛山市",
+ "children": [{
+ "code": "440604",
+ "name": "禅城区"
+ }, {
+ "code": "440605",
+ "name": "南海区"
+ }, {
+ "code": "440606",
+ "name": "顺德区"
+ }, {
+ "code": "440607",
+ "name": "三水区"
+ }, {
+ "code": "440608",
+ "name": "高明区"
+ }]
+ }, {
+ "code": "4407",
+ "name": "江门市",
+ "children": [{
+ "code": "440703",
+ "name": "蓬江区"
+ }, {
+ "code": "440704",
+ "name": "江海区"
+ }, {
+ "code": "440705",
+ "name": "新会区"
+ }, {
+ "code": "440781",
+ "name": "台山市"
+ }, {
+ "code": "440783",
+ "name": "开平市"
+ }, {
+ "code": "440784",
+ "name": "鹤山市"
+ }, {
+ "code": "440785",
+ "name": "恩平市"
+ }]
+ }, {
+ "code": "4408",
+ "name": "湛江市",
+ "children": [{
+ "code": "440802",
+ "name": "赤坎区"
+ }, {
+ "code": "440803",
+ "name": "霞山区"
+ }, {
+ "code": "440804",
+ "name": "坡头区"
+ }, {
+ "code": "440811",
+ "name": "麻章区"
+ }, {
+ "code": "440823",
+ "name": "遂溪县"
+ }, {
+ "code": "440825",
+ "name": "徐闻县"
+ }, {
+ "code": "440881",
+ "name": "廉江市"
+ }, {
+ "code": "440882",
+ "name": "雷州市"
+ }, {
+ "code": "440883",
+ "name": "吴川市"
+ }]
+ }, {
+ "code": "4409",
+ "name": "茂名市",
+ "children": [{
+ "code": "440902",
+ "name": "茂南区"
+ }, {
+ "code": "440904",
+ "name": "电白区"
+ }, {
+ "code": "440981",
+ "name": "高州市"
+ }, {
+ "code": "440982",
+ "name": "化州市"
+ }, {
+ "code": "440983",
+ "name": "信宜市"
+ }]
+ }, {
+ "code": "4412",
+ "name": "肇庆市",
+ "children": [{
+ "code": "441202",
+ "name": "端州区"
+ }, {
+ "code": "441203",
+ "name": "鼎湖区"
+ }, {
+ "code": "441204",
+ "name": "高要区"
+ }, {
+ "code": "441223",
+ "name": "广宁县"
+ }, {
+ "code": "441224",
+ "name": "怀集县"
+ }, {
+ "code": "441225",
+ "name": "封开县"
+ }, {
+ "code": "441226",
+ "name": "德庆县"
+ }, {
+ "code": "441284",
+ "name": "四会市"
+ }]
+ }, {
+ "code": "4413",
+ "name": "惠州市",
+ "children": [{
+ "code": "441302",
+ "name": "惠城区"
+ }, {
+ "code": "441303",
+ "name": "惠阳区"
+ }, {
+ "code": "441322",
+ "name": "博罗县"
+ }, {
+ "code": "441323",
+ "name": "惠东县"
+ }, {
+ "code": "441324",
+ "name": "龙门县"
+ }]
+ }, {
+ "code": "4414",
+ "name": "梅州市",
+ "children": [{
+ "code": "441402",
+ "name": "梅江区"
+ }, {
+ "code": "441403",
+ "name": "梅县区"
+ }, {
+ "code": "441422",
+ "name": "大埔县"
+ }, {
+ "code": "441423",
+ "name": "丰顺县"
+ }, {
+ "code": "441424",
+ "name": "五华县"
+ }, {
+ "code": "441426",
+ "name": "平远县"
+ }, {
+ "code": "441427",
+ "name": "蕉岭县"
+ }, {
+ "code": "441481",
+ "name": "兴宁市"
+ }]
+ }, {
+ "code": "4415",
+ "name": "汕尾市",
+ "children": [{
+ "code": "441502",
+ "name": "城区"
+ }, {
+ "code": "441521",
+ "name": "海丰县"
+ }, {
+ "code": "441523",
+ "name": "陆河县"
+ }, {
+ "code": "441581",
+ "name": "陆丰市"
+ }]
+ }, {
+ "code": "4416",
+ "name": "河源市",
+ "children": [{
+ "code": "441602",
+ "name": "源城区"
+ }, {
+ "code": "441621",
+ "name": "紫金县"
+ }, {
+ "code": "441622",
+ "name": "龙川县"
+ }, {
+ "code": "441623",
+ "name": "连平县"
+ }, {
+ "code": "441624",
+ "name": "和平县"
+ }, {
+ "code": "441625",
+ "name": "东源县"
+ }]
+ }, {
+ "code": "4417",
+ "name": "阳江市",
+ "children": [{
+ "code": "441702",
+ "name": "江城区"
+ }, {
+ "code": "441704",
+ "name": "阳东区"
+ }, {
+ "code": "441721",
+ "name": "阳西县"
+ }, {
+ "code": "441781",
+ "name": "阳春市"
+ }]
+ }, {
+ "code": "4418",
+ "name": "清远市",
+ "children": [{
+ "code": "441802",
+ "name": "清城区"
+ }, {
+ "code": "441803",
+ "name": "清新区"
+ }, {
+ "code": "441821",
+ "name": "佛冈县"
+ }, {
+ "code": "441823",
+ "name": "阳山县"
+ }, {
+ "code": "441825",
+ "name": "连山壮族瑶族自治县"
+ }, {
+ "code": "441826",
+ "name": "连南瑶族自治县"
+ }, {
+ "code": "441881",
+ "name": "英德市"
+ }, {
+ "code": "441882",
+ "name": "连州市"
+ }]
+ }, {
+ "code": "4419",
+ "name": "东莞市",
+ "children": [{
+ "code": "441900003",
+ "name": "东城街道"
+ }, {
+ "code": "441900004",
+ "name": "南城街道"
+ }, {
+ "code": "441900005",
+ "name": "万江街道"
+ }, {
+ "code": "441900006",
+ "name": "莞城街道"
+ }, {
+ "code": "441900101",
+ "name": "石碣镇"
+ }, {
+ "code": "441900102",
+ "name": "石龙镇"
+ }, {
+ "code": "441900103",
+ "name": "茶山镇"
+ }, {
+ "code": "441900104",
+ "name": "石排镇"
+ }, {
+ "code": "441900105",
+ "name": "企石镇"
+ }, {
+ "code": "441900106",
+ "name": "横沥镇"
+ }, {
+ "code": "441900107",
+ "name": "桥头镇"
+ }, {
+ "code": "441900108",
+ "name": "谢岗镇"
+ }, {
+ "code": "441900109",
+ "name": "东坑镇"
+ }, {
+ "code": "441900110",
+ "name": "常平镇"
+ }, {
+ "code": "441900111",
+ "name": "寮步镇"
+ }, {
+ "code": "441900112",
+ "name": "樟木头镇"
+ }, {
+ "code": "441900113",
+ "name": "大朗镇"
+ }, {
+ "code": "441900114",
+ "name": "黄江镇"
+ }, {
+ "code": "441900115",
+ "name": "清溪镇"
+ }, {
+ "code": "441900116",
+ "name": "塘厦镇"
+ }, {
+ "code": "441900117",
+ "name": "凤岗镇"
+ }, {
+ "code": "441900118",
+ "name": "大岭山镇"
+ }, {
+ "code": "441900119",
+ "name": "长安镇"
+ }, {
+ "code": "441900121",
+ "name": "虎门镇"
+ }, {
+ "code": "441900122",
+ "name": "厚街镇"
+ }, {
+ "code": "441900123",
+ "name": "沙田镇"
+ }, {
+ "code": "441900124",
+ "name": "道滘镇"
+ }, {
+ "code": "441900125",
+ "name": "洪梅镇"
+ }, {
+ "code": "441900126",
+ "name": "麻涌镇"
+ }, {
+ "code": "441900127",
+ "name": "望牛墩镇"
+ }, {
+ "code": "441900128",
+ "name": "中堂镇"
+ }, {
+ "code": "441900129",
+ "name": "高埗镇"
+ }, {
+ "code": "441900401",
+ "name": "松山湖"
+ }, {
+ "code": "441900402",
+ "name": "东莞港"
+ }, {
+ "code": "441900403",
+ "name": "东莞生态园"
+ }, {
+ "code": "441900404",
+ "name": "东莞滨海湾新区"
+ }]
+ }, {
+ "code": "4420",
+ "name": "中山市",
+ "children": [{
+ "code": "442000001",
+ "name": "石岐街道"
+ }, {
+ "code": "442000002",
+ "name": "东区街道"
+ }, {
+ "code": "442000003",
+ "name": "中山港街道"
+ }, {
+ "code": "442000004",
+ "name": "西区街道"
+ }, {
+ "code": "442000005",
+ "name": "南区街道"
+ }, {
+ "code": "442000006",
+ "name": "五桂山街道"
+ }, {
+ "code": "442000007",
+ "name": "民众街道"
+ }, {
+ "code": "442000008",
+ "name": "南朗街道"
+ }, {
+ "code": "442000101",
+ "name": "黄圃镇"
+ }, {
+ "code": "442000103",
+ "name": "东凤镇"
+ }, {
+ "code": "442000105",
+ "name": "古镇镇"
+ }, {
+ "code": "442000106",
+ "name": "沙溪镇"
+ }, {
+ "code": "442000107",
+ "name": "坦洲镇"
+ }, {
+ "code": "442000108",
+ "name": "港口镇"
+ }, {
+ "code": "442000109",
+ "name": "三角镇"
+ }, {
+ "code": "442000110",
+ "name": "横栏镇"
+ }, {
+ "code": "442000111",
+ "name": "南头镇"
+ }, {
+ "code": "442000112",
+ "name": "阜沙镇"
+ }, {
+ "code": "442000114",
+ "name": "三乡镇"
+ }, {
+ "code": "442000115",
+ "name": "板芙镇"
+ }, {
+ "code": "442000116",
+ "name": "大涌镇"
+ }, {
+ "code": "442000117",
+ "name": "神湾镇"
+ }, {
+ "code": "442000118",
+ "name": "小榄镇"
+ }]
+ }, {
+ "code": "4451",
+ "name": "潮州市",
+ "children": [{
+ "code": "445102",
+ "name": "湘桥区"
+ }, {
+ "code": "445103",
+ "name": "潮安区"
+ }, {
+ "code": "445122",
+ "name": "饶平县"
+ }]
+ }, {
+ "code": "4452",
+ "name": "揭阳市",
+ "children": [{
+ "code": "445202",
+ "name": "榕城区"
+ }, {
+ "code": "445203",
+ "name": "揭东区"
+ }, {
+ "code": "445222",
+ "name": "揭西县"
+ }, {
+ "code": "445224",
+ "name": "惠来县"
+ }, {
+ "code": "445281",
+ "name": "普宁市"
+ }]
+ }, {
+ "code": "4453",
+ "name": "云浮市",
+ "children": [{
+ "code": "445302",
+ "name": "云城区"
+ }, {
+ "code": "445303",
+ "name": "云安区"
+ }, {
+ "code": "445321",
+ "name": "新兴县"
+ }, {
+ "code": "445322",
+ "name": "郁南县"
+ }, {
+ "code": "445381",
+ "name": "罗定市"
+ }]
+ }]
+}, {
+ "code": "45",
+ "name": "广西壮族自治区",
+ "children": [{
+ "code": "4501",
+ "name": "南宁市",
+ "children": [{
+ "code": "450102",
+ "name": "兴宁区"
+ }, {
+ "code": "450103",
+ "name": "青秀区"
+ }, {
+ "code": "450105",
+ "name": "江南区"
+ }, {
+ "code": "450107",
+ "name": "西乡塘区"
+ }, {
+ "code": "450108",
+ "name": "良庆区"
+ }, {
+ "code": "450109",
+ "name": "邕宁区"
+ }, {
+ "code": "450110",
+ "name": "武鸣区"
+ }, {
+ "code": "450123",
+ "name": "隆安县"
+ }, {
+ "code": "450124",
+ "name": "马山县"
+ }, {
+ "code": "450125",
+ "name": "上林县"
+ }, {
+ "code": "450126",
+ "name": "宾阳县"
+ }, {
+ "code": "450181",
+ "name": "横州市"
+ }]
+ }, {
+ "code": "4502",
+ "name": "柳州市",
+ "children": [{
+ "code": "450202",
+ "name": "城中区"
+ }, {
+ "code": "450203",
+ "name": "鱼峰区"
+ }, {
+ "code": "450204",
+ "name": "柳南区"
+ }, {
+ "code": "450205",
+ "name": "柳北区"
+ }, {
+ "code": "450206",
+ "name": "柳江区"
+ }, {
+ "code": "450222",
+ "name": "柳城县"
+ }, {
+ "code": "450223",
+ "name": "鹿寨县"
+ }, {
+ "code": "450224",
+ "name": "融安县"
+ }, {
+ "code": "450225",
+ "name": "融水苗族自治县"
+ }, {
+ "code": "450226",
+ "name": "三江侗族自治县"
+ }]
+ }, {
+ "code": "4503",
+ "name": "桂林市",
+ "children": [{
+ "code": "450302",
+ "name": "秀峰区"
+ }, {
+ "code": "450303",
+ "name": "叠彩区"
+ }, {
+ "code": "450304",
+ "name": "象山区"
+ }, {
+ "code": "450305",
+ "name": "七星区"
+ }, {
+ "code": "450311",
+ "name": "雁山区"
+ }, {
+ "code": "450312",
+ "name": "临桂区"
+ }, {
+ "code": "450321",
+ "name": "阳朔县"
+ }, {
+ "code": "450323",
+ "name": "灵川县"
+ }, {
+ "code": "450324",
+ "name": "全州县"
+ }, {
+ "code": "450325",
+ "name": "兴安县"
+ }, {
+ "code": "450326",
+ "name": "永福县"
+ }, {
+ "code": "450327",
+ "name": "灌阳县"
+ }, {
+ "code": "450328",
+ "name": "龙胜各族自治县"
+ }, {
+ "code": "450329",
+ "name": "资源县"
+ }, {
+ "code": "450330",
+ "name": "平乐县"
+ }, {
+ "code": "450332",
+ "name": "恭城瑶族自治县"
+ }, {
+ "code": "450381",
+ "name": "荔浦市"
+ }]
+ }, {
+ "code": "4504",
+ "name": "梧州市",
+ "children": [{
+ "code": "450403",
+ "name": "万秀区"
+ }, {
+ "code": "450405",
+ "name": "长洲区"
+ }, {
+ "code": "450406",
+ "name": "龙圩区"
+ }, {
+ "code": "450421",
+ "name": "苍梧县"
+ }, {
+ "code": "450422",
+ "name": "藤县"
+ }, {
+ "code": "450423",
+ "name": "蒙山县"
+ }, {
+ "code": "450481",
+ "name": "岑溪市"
+ }]
+ }, {
+ "code": "4505",
+ "name": "北海市",
+ "children": [{
+ "code": "450502",
+ "name": "海城区"
+ }, {
+ "code": "450503",
+ "name": "银海区"
+ }, {
+ "code": "450512",
+ "name": "铁山港区"
+ }, {
+ "code": "450521",
+ "name": "合浦县"
+ }]
+ }, {
+ "code": "4506",
+ "name": "防城港市",
+ "children": [{
+ "code": "450602",
+ "name": "港口区"
+ }, {
+ "code": "450603",
+ "name": "防城区"
+ }, {
+ "code": "450621",
+ "name": "上思县"
+ }, {
+ "code": "450681",
+ "name": "东兴市"
+ }]
+ }, {
+ "code": "4507",
+ "name": "钦州市",
+ "children": [{
+ "code": "450702",
+ "name": "钦南区"
+ }, {
+ "code": "450703",
+ "name": "钦北区"
+ }, {
+ "code": "450721",
+ "name": "灵山县"
+ }, {
+ "code": "450722",
+ "name": "浦北县"
+ }]
+ }, {
+ "code": "4508",
+ "name": "贵港市",
+ "children": [{
+ "code": "450802",
+ "name": "港北区"
+ }, {
+ "code": "450803",
+ "name": "港南区"
+ }, {
+ "code": "450804",
+ "name": "覃塘区"
+ }, {
+ "code": "450821",
+ "name": "平南县"
+ }, {
+ "code": "450881",
+ "name": "桂平市"
+ }]
+ }, {
+ "code": "4509",
+ "name": "玉林市",
+ "children": [{
+ "code": "450902",
+ "name": "玉州区"
+ }, {
+ "code": "450903",
+ "name": "福绵区"
+ }, {
+ "code": "450921",
+ "name": "容县"
+ }, {
+ "code": "450922",
+ "name": "陆川县"
+ }, {
+ "code": "450923",
+ "name": "博白县"
+ }, {
+ "code": "450924",
+ "name": "兴业县"
+ }, {
+ "code": "450981",
+ "name": "北流市"
+ }]
+ }, {
+ "code": "4510",
+ "name": "百色市",
+ "children": [{
+ "code": "451002",
+ "name": "右江区"
+ }, {
+ "code": "451003",
+ "name": "田阳区"
+ }, {
+ "code": "451022",
+ "name": "田东县"
+ }, {
+ "code": "451024",
+ "name": "德保县"
+ }, {
+ "code": "451026",
+ "name": "那坡县"
+ }, {
+ "code": "451027",
+ "name": "凌云县"
+ }, {
+ "code": "451028",
+ "name": "乐业县"
+ }, {
+ "code": "451029",
+ "name": "田林县"
+ }, {
+ "code": "451030",
+ "name": "西林县"
+ }, {
+ "code": "451031",
+ "name": "隆林各族自治县"
+ }, {
+ "code": "451081",
+ "name": "靖西市"
+ }, {
+ "code": "451082",
+ "name": "平果市"
+ }]
+ }, {
+ "code": "4511",
+ "name": "贺州市",
+ "children": [{
+ "code": "451102",
+ "name": "八步区"
+ }, {
+ "code": "451103",
+ "name": "平桂区"
+ }, {
+ "code": "451121",
+ "name": "昭平县"
+ }, {
+ "code": "451122",
+ "name": "钟山县"
+ }, {
+ "code": "451123",
+ "name": "富川瑶族自治县"
+ }]
+ }, {
+ "code": "4512",
+ "name": "河池市",
+ "children": [{
+ "code": "451202",
+ "name": "金城江区"
+ }, {
+ "code": "451203",
+ "name": "宜州区"
+ }, {
+ "code": "451221",
+ "name": "南丹县"
+ }, {
+ "code": "451222",
+ "name": "天峨县"
+ }, {
+ "code": "451223",
+ "name": "凤山县"
+ }, {
+ "code": "451224",
+ "name": "东兰县"
+ }, {
+ "code": "451225",
+ "name": "罗城仫佬族自治县"
+ }, {
+ "code": "451226",
+ "name": "环江毛南族自治县"
+ }, {
+ "code": "451227",
+ "name": "巴马瑶族自治县"
+ }, {
+ "code": "451228",
+ "name": "都安瑶族自治县"
+ }, {
+ "code": "451229",
+ "name": "大化瑶族自治县"
+ }]
+ }, {
+ "code": "4513",
+ "name": "来宾市",
+ "children": [{
+ "code": "451302",
+ "name": "兴宾区"
+ }, {
+ "code": "451321",
+ "name": "忻城县"
+ }, {
+ "code": "451322",
+ "name": "象州县"
+ }, {
+ "code": "451323",
+ "name": "武宣县"
+ }, {
+ "code": "451324",
+ "name": "金秀瑶族自治县"
+ }, {
+ "code": "451381",
+ "name": "合山市"
+ }]
+ }, {
+ "code": "4514",
+ "name": "崇左市",
+ "children": [{
+ "code": "451402",
+ "name": "江州区"
+ }, {
+ "code": "451421",
+ "name": "扶绥县"
+ }, {
+ "code": "451422",
+ "name": "宁明县"
+ }, {
+ "code": "451423",
+ "name": "龙州县"
+ }, {
+ "code": "451424",
+ "name": "大新县"
+ }, {
+ "code": "451425",
+ "name": "天等县"
+ }, {
+ "code": "451481",
+ "name": "凭祥市"
+ }]
+ }]
+}, {
+ "code": "46",
+ "name": "海南省",
+ "children": [{
+ "code": "4601",
+ "name": "海口市",
+ "children": [{
+ "code": "460105",
+ "name": "秀英区"
+ }, {
+ "code": "460106",
+ "name": "龙华区"
+ }, {
+ "code": "460107",
+ "name": "琼山区"
+ }, {
+ "code": "460108",
+ "name": "美兰区"
+ }]
+ }, {
+ "code": "4602",
+ "name": "三亚市",
+ "children": [{
+ "code": "460202",
+ "name": "海棠区"
+ }, {
+ "code": "460203",
+ "name": "吉阳区"
+ }, {
+ "code": "460204",
+ "name": "天涯区"
+ }, {
+ "code": "460205",
+ "name": "崖州区"
+ }]
+ }, {
+ "code": "4603",
+ "name": "三沙市",
+ "children": [{
+ "code": "460321",
+ "name": "西沙群岛"
+ }, {
+ "code": "460322",
+ "name": "南沙群岛"
+ }, {
+ "code": "460323",
+ "name": "中沙群岛的岛礁及其海域"
+ }]
+ }, {
+ "code": "4604",
+ "name": "儋州市",
+ "children": [{
+ "code": "460400100",
+ "name": "那大镇"
+ }, {
+ "code": "460400101",
+ "name": "和庆镇"
+ }, {
+ "code": "460400102",
+ "name": "南丰镇"
+ }, {
+ "code": "460400103",
+ "name": "大成镇"
+ }, {
+ "code": "460400104",
+ "name": "雅星镇"
+ }, {
+ "code": "460400105",
+ "name": "兰洋镇"
+ }, {
+ "code": "460400106",
+ "name": "光村镇"
+ }, {
+ "code": "460400107",
+ "name": "木棠镇"
+ }, {
+ "code": "460400108",
+ "name": "海头镇"
+ }, {
+ "code": "460400109",
+ "name": "峨蔓镇"
+ }, {
+ "code": "460400111",
+ "name": "王五镇"
+ }, {
+ "code": "460400112",
+ "name": "白马井镇"
+ }, {
+ "code": "460400113",
+ "name": "中和镇"
+ }, {
+ "code": "460400114",
+ "name": "排浦镇"
+ }, {
+ "code": "460400115",
+ "name": "东成镇"
+ }, {
+ "code": "460400116",
+ "name": "新州镇"
+ }, {
+ "code": "460400499",
+ "name": "洋浦经济开发区"
+ }, {
+ "code": "460400500",
+ "name": "华南热作学院"
+ }]
+ }, {
+ "code": "4690",
+ "name": "省直辖县级行政区划",
+ "children": [{
+ "code": "469001",
+ "name": "五指山市"
+ }, {
+ "code": "469002",
+ "name": "琼海市"
+ }, {
+ "code": "469005",
+ "name": "文昌市"
+ }, {
+ "code": "469006",
+ "name": "万宁市"
+ }, {
+ "code": "469007",
+ "name": "东方市"
+ }, {
+ "code": "469021",
+ "name": "定安县"
+ }, {
+ "code": "469022",
+ "name": "屯昌县"
+ }, {
+ "code": "469023",
+ "name": "澄迈县"
+ }, {
+ "code": "469024",
+ "name": "临高县"
+ }, {
+ "code": "469025",
+ "name": "白沙黎族自治县"
+ }, {
+ "code": "469026",
+ "name": "昌江黎族自治县"
+ }, {
+ "code": "469027",
+ "name": "乐东黎族自治县"
+ }, {
+ "code": "469028",
+ "name": "陵水黎族自治县"
+ }, {
+ "code": "469029",
+ "name": "保亭黎族苗族自治县"
+ }, {
+ "code": "469030",
+ "name": "琼中黎族苗族自治县"
+ }]
+ }]
+}, {
+ "code": "50",
+ "name": "重庆市",
+ "children": [{
+ "code": "5001",
+ "name": "市辖区",
+ "children": [{
+ "code": "500101",
+ "name": "万州区"
+ }, {
+ "code": "500102",
+ "name": "涪陵区"
+ }, {
+ "code": "500103",
+ "name": "渝中区"
+ }, {
+ "code": "500104",
+ "name": "大渡口区"
+ }, {
+ "code": "500105",
+ "name": "江北区"
+ }, {
+ "code": "500106",
+ "name": "沙坪坝区"
+ }, {
+ "code": "500107",
+ "name": "九龙坡区"
+ }, {
+ "code": "500108",
+ "name": "南岸区"
+ }, {
+ "code": "500109",
+ "name": "北碚区"
+ }, {
+ "code": "500110",
+ "name": "綦江区"
+ }, {
+ "code": "500111",
+ "name": "大足区"
+ }, {
+ "code": "500112",
+ "name": "渝北区"
+ }, {
+ "code": "500113",
+ "name": "巴南区"
+ }, {
+ "code": "500114",
+ "name": "黔江区"
+ }, {
+ "code": "500115",
+ "name": "长寿区"
+ }, {
+ "code": "500116",
+ "name": "江津区"
+ }, {
+ "code": "500117",
+ "name": "合川区"
+ }, {
+ "code": "500118",
+ "name": "永川区"
+ }, {
+ "code": "500119",
+ "name": "南川区"
+ }, {
+ "code": "500120",
+ "name": "璧山区"
+ }, {
+ "code": "500151",
+ "name": "铜梁区"
+ }, {
+ "code": "500152",
+ "name": "潼南区"
+ }, {
+ "code": "500153",
+ "name": "荣昌区"
+ }, {
+ "code": "500154",
+ "name": "开州区"
+ }, {
+ "code": "500155",
+ "name": "梁平区"
+ }, {
+ "code": "500156",
+ "name": "武隆区"
+ }]
+ }, {
+ "code": "5002",
+ "name": "县",
+ "children": [{
+ "code": "500229",
+ "name": "城口县"
+ }, {
+ "code": "500230",
+ "name": "丰都县"
+ }, {
+ "code": "500231",
+ "name": "垫江县"
+ }, {
+ "code": "500233",
+ "name": "忠县"
+ }, {
+ "code": "500235",
+ "name": "云阳县"
+ }, {
+ "code": "500236",
+ "name": "奉节县"
+ }, {
+ "code": "500237",
+ "name": "巫山县"
+ }, {
+ "code": "500238",
+ "name": "巫溪县"
+ }, {
+ "code": "500240",
+ "name": "石柱土家族自治县"
+ }, {
+ "code": "500241",
+ "name": "秀山土家族苗族自治县"
+ }, {
+ "code": "500242",
+ "name": "酉阳土家族苗族自治县"
+ }, {
+ "code": "500243",
+ "name": "彭水苗族土家族自治县"
+ }]
+ }]
+}, {
+ "code": "51",
+ "name": "四川省",
+ "children": [{
+ "code": "5101",
+ "name": "成都市",
+ "children": [{
+ "code": "510104",
+ "name": "锦江区"
+ }, {
+ "code": "510105",
+ "name": "青羊区"
+ }, {
+ "code": "510106",
+ "name": "金牛区"
+ }, {
+ "code": "510107",
+ "name": "武侯区"
+ }, {
+ "code": "510108",
+ "name": "成华区"
+ }, {
+ "code": "510112",
+ "name": "龙泉驿区"
+ }, {
+ "code": "510113",
+ "name": "青白江区"
+ }, {
+ "code": "510114",
+ "name": "新都区"
+ }, {
+ "code": "510115",
+ "name": "温江区"
+ }, {
+ "code": "510116",
+ "name": "双流区"
+ }, {
+ "code": "510117",
+ "name": "郫都区"
+ }, {
+ "code": "510118",
+ "name": "新津区"
+ }, {
+ "code": "510121",
+ "name": "金堂县"
+ }, {
+ "code": "510129",
+ "name": "大邑县"
+ }, {
+ "code": "510131",
+ "name": "蒲江县"
+ }, {
+ "code": "510181",
+ "name": "都江堰市"
+ }, {
+ "code": "510182",
+ "name": "彭州市"
+ }, {
+ "code": "510183",
+ "name": "邛崃市"
+ }, {
+ "code": "510184",
+ "name": "崇州市"
+ }, {
+ "code": "510185",
+ "name": "简阳市"
+ }]
+ }, {
+ "code": "5103",
+ "name": "自贡市",
+ "children": [{
+ "code": "510302",
+ "name": "自流井区"
+ }, {
+ "code": "510303",
+ "name": "贡井区"
+ }, {
+ "code": "510304",
+ "name": "大安区"
+ }, {
+ "code": "510311",
+ "name": "沿滩区"
+ }, {
+ "code": "510321",
+ "name": "荣县"
+ }, {
+ "code": "510322",
+ "name": "富顺县"
+ }]
+ }, {
+ "code": "5104",
+ "name": "攀枝花市",
+ "children": [{
+ "code": "510402",
+ "name": "东区"
+ }, {
+ "code": "510403",
+ "name": "西区"
+ }, {
+ "code": "510411",
+ "name": "仁和区"
+ }, {
+ "code": "510421",
+ "name": "米易县"
+ }, {
+ "code": "510422",
+ "name": "盐边县"
+ }]
+ }, {
+ "code": "5105",
+ "name": "泸州市",
+ "children": [{
+ "code": "510502",
+ "name": "江阳区"
+ }, {
+ "code": "510503",
+ "name": "纳溪区"
+ }, {
+ "code": "510504",
+ "name": "龙马潭区"
+ }, {
+ "code": "510521",
+ "name": "泸县"
+ }, {
+ "code": "510522",
+ "name": "合江县"
+ }, {
+ "code": "510524",
+ "name": "叙永县"
+ }, {
+ "code": "510525",
+ "name": "古蔺县"
+ }]
+ }, {
+ "code": "5106",
+ "name": "德阳市",
+ "children": [{
+ "code": "510603",
+ "name": "旌阳区"
+ }, {
+ "code": "510604",
+ "name": "罗江区"
+ }, {
+ "code": "510623",
+ "name": "中江县"
+ }, {
+ "code": "510681",
+ "name": "广汉市"
+ }, {
+ "code": "510682",
+ "name": "什邡市"
+ }, {
+ "code": "510683",
+ "name": "绵竹市"
+ }]
+ }, {
+ "code": "5107",
+ "name": "绵阳市",
+ "children": [{
+ "code": "510703",
+ "name": "涪城区"
+ }, {
+ "code": "510704",
+ "name": "游仙区"
+ }, {
+ "code": "510705",
+ "name": "安州区"
+ }, {
+ "code": "510722",
+ "name": "三台县"
+ }, {
+ "code": "510723",
+ "name": "盐亭县"
+ }, {
+ "code": "510725",
+ "name": "梓潼县"
+ }, {
+ "code": "510726",
+ "name": "北川羌族自治县"
+ }, {
+ "code": "510727",
+ "name": "平武县"
+ }, {
+ "code": "510781",
+ "name": "江油市"
+ }]
+ }, {
+ "code": "5108",
+ "name": "广元市",
+ "children": [{
+ "code": "510802",
+ "name": "利州区"
+ }, {
+ "code": "510811",
+ "name": "昭化区"
+ }, {
+ "code": "510812",
+ "name": "朝天区"
+ }, {
+ "code": "510821",
+ "name": "旺苍县"
+ }, {
+ "code": "510822",
+ "name": "青川县"
+ }, {
+ "code": "510823",
+ "name": "剑阁县"
+ }, {
+ "code": "510824",
+ "name": "苍溪县"
+ }]
+ }, {
+ "code": "5109",
+ "name": "遂宁市",
+ "children": [{
+ "code": "510903",
+ "name": "船山区"
+ }, {
+ "code": "510904",
+ "name": "安居区"
+ }, {
+ "code": "510921",
+ "name": "蓬溪县"
+ }, {
+ "code": "510923",
+ "name": "大英县"
+ }, {
+ "code": "510981",
+ "name": "射洪市"
+ }]
+ }, {
+ "code": "5110",
+ "name": "内江市",
+ "children": [{
+ "code": "511002",
+ "name": "市中区"
+ }, {
+ "code": "511011",
+ "name": "东兴区"
+ }, {
+ "code": "511024",
+ "name": "威远县"
+ }, {
+ "code": "511025",
+ "name": "资中县"
+ }, {
+ "code": "511083",
+ "name": "隆昌市"
+ }]
+ }, {
+ "code": "5111",
+ "name": "乐山市",
+ "children": [{
+ "code": "511102",
+ "name": "市中区"
+ }, {
+ "code": "511111",
+ "name": "沙湾区"
+ }, {
+ "code": "511112",
+ "name": "五通桥区"
+ }, {
+ "code": "511113",
+ "name": "金口河区"
+ }, {
+ "code": "511123",
+ "name": "犍为县"
+ }, {
+ "code": "511124",
+ "name": "井研县"
+ }, {
+ "code": "511126",
+ "name": "夹江县"
+ }, {
+ "code": "511129",
+ "name": "沐川县"
+ }, {
+ "code": "511132",
+ "name": "峨边彝族自治县"
+ }, {
+ "code": "511133",
+ "name": "马边彝族自治县"
+ }, {
+ "code": "511181",
+ "name": "峨眉山市"
+ }]
+ }, {
+ "code": "5113",
+ "name": "南充市",
+ "children": [{
+ "code": "511302",
+ "name": "顺庆区"
+ }, {
+ "code": "511303",
+ "name": "高坪区"
+ }, {
+ "code": "511304",
+ "name": "嘉陵区"
+ }, {
+ "code": "511321",
+ "name": "南部县"
+ }, {
+ "code": "511322",
+ "name": "营山县"
+ }, {
+ "code": "511323",
+ "name": "蓬安县"
+ }, {
+ "code": "511324",
+ "name": "仪陇县"
+ }, {
+ "code": "511325",
+ "name": "西充县"
+ }, {
+ "code": "511381",
+ "name": "阆中市"
+ }]
+ }, {
+ "code": "5114",
+ "name": "眉山市",
+ "children": [{
+ "code": "511402",
+ "name": "东坡区"
+ }, {
+ "code": "511403",
+ "name": "彭山区"
+ }, {
+ "code": "511421",
+ "name": "仁寿县"
+ }, {
+ "code": "511423",
+ "name": "洪雅县"
+ }, {
+ "code": "511424",
+ "name": "丹棱县"
+ }, {
+ "code": "511425",
+ "name": "青神县"
+ }]
+ }, {
+ "code": "5115",
+ "name": "宜宾市",
+ "children": [{
+ "code": "511502",
+ "name": "翠屏区"
+ }, {
+ "code": "511503",
+ "name": "南溪区"
+ }, {
+ "code": "511504",
+ "name": "叙州区"
+ }, {
+ "code": "511523",
+ "name": "江安县"
+ }, {
+ "code": "511524",
+ "name": "长宁县"
+ }, {
+ "code": "511525",
+ "name": "高县"
+ }, {
+ "code": "511526",
+ "name": "珙县"
+ }, {
+ "code": "511527",
+ "name": "筠连县"
+ }, {
+ "code": "511528",
+ "name": "兴文县"
+ }, {
+ "code": "511529",
+ "name": "屏山县"
+ }]
+ }, {
+ "code": "5116",
+ "name": "广安市",
+ "children": [{
+ "code": "511602",
+ "name": "广安区"
+ }, {
+ "code": "511603",
+ "name": "前锋区"
+ }, {
+ "code": "511621",
+ "name": "岳池县"
+ }, {
+ "code": "511622",
+ "name": "武胜县"
+ }, {
+ "code": "511623",
+ "name": "邻水县"
+ }, {
+ "code": "511681",
+ "name": "华蓥市"
+ }]
+ }, {
+ "code": "5117",
+ "name": "达州市",
+ "children": [{
+ "code": "511702",
+ "name": "通川区"
+ }, {
+ "code": "511703",
+ "name": "达川区"
+ }, {
+ "code": "511722",
+ "name": "宣汉县"
+ }, {
+ "code": "511723",
+ "name": "开江县"
+ }, {
+ "code": "511724",
+ "name": "大竹县"
+ }, {
+ "code": "511725",
+ "name": "渠县"
+ }, {
+ "code": "511781",
+ "name": "万源市"
+ }]
+ }, {
+ "code": "5118",
+ "name": "雅安市",
+ "children": [{
+ "code": "511802",
+ "name": "雨城区"
+ }, {
+ "code": "511803",
+ "name": "名山区"
+ }, {
+ "code": "511822",
+ "name": "荥经县"
+ }, {
+ "code": "511823",
+ "name": "汉源县"
+ }, {
+ "code": "511824",
+ "name": "石棉县"
+ }, {
+ "code": "511825",
+ "name": "天全县"
+ }, {
+ "code": "511826",
+ "name": "芦山县"
+ }, {
+ "code": "511827",
+ "name": "宝兴县"
+ }]
+ }, {
+ "code": "5119",
+ "name": "巴中市",
+ "children": [{
+ "code": "511902",
+ "name": "巴州区"
+ }, {
+ "code": "511903",
+ "name": "恩阳区"
+ }, {
+ "code": "511921",
+ "name": "通江县"
+ }, {
+ "code": "511922",
+ "name": "南江县"
+ }, {
+ "code": "511923",
+ "name": "平昌县"
+ }]
+ }, {
+ "code": "5120",
+ "name": "资阳市",
+ "children": [{
+ "code": "512002",
+ "name": "雁江区"
+ }, {
+ "code": "512021",
+ "name": "安岳县"
+ }, {
+ "code": "512022",
+ "name": "乐至县"
+ }]
+ }, {
+ "code": "5132",
+ "name": "阿坝藏族羌族自治州",
+ "children": [{
+ "code": "513201",
+ "name": "马尔康市"
+ }, {
+ "code": "513221",
+ "name": "汶川县"
+ }, {
+ "code": "513222",
+ "name": "理县"
+ }, {
+ "code": "513223",
+ "name": "茂县"
+ }, {
+ "code": "513224",
+ "name": "松潘县"
+ }, {
+ "code": "513225",
+ "name": "九寨沟县"
+ }, {
+ "code": "513226",
+ "name": "金川县"
+ }, {
+ "code": "513227",
+ "name": "小金县"
+ }, {
+ "code": "513228",
+ "name": "黑水县"
+ }, {
+ "code": "513230",
+ "name": "壤塘县"
+ }, {
+ "code": "513231",
+ "name": "阿坝县"
+ }, {
+ "code": "513232",
+ "name": "若尔盖县"
+ }, {
+ "code": "513233",
+ "name": "红原县"
+ }]
+ }, {
+ "code": "5133",
+ "name": "甘孜藏族自治州",
+ "children": [{
+ "code": "513301",
+ "name": "康定市"
+ }, {
+ "code": "513322",
+ "name": "泸定县"
+ }, {
+ "code": "513323",
+ "name": "丹巴县"
+ }, {
+ "code": "513324",
+ "name": "九龙县"
+ }, {
+ "code": "513325",
+ "name": "雅江县"
+ }, {
+ "code": "513326",
+ "name": "道孚县"
+ }, {
+ "code": "513327",
+ "name": "炉霍县"
+ }, {
+ "code": "513328",
+ "name": "甘孜县"
+ }, {
+ "code": "513329",
+ "name": "新龙县"
+ }, {
+ "code": "513330",
+ "name": "德格县"
+ }, {
+ "code": "513331",
+ "name": "白玉县"
+ }, {
+ "code": "513332",
+ "name": "石渠县"
+ }, {
+ "code": "513333",
+ "name": "色达县"
+ }, {
+ "code": "513334",
+ "name": "理塘县"
+ }, {
+ "code": "513335",
+ "name": "巴塘县"
+ }, {
+ "code": "513336",
+ "name": "乡城县"
+ }, {
+ "code": "513337",
+ "name": "稻城县"
+ }, {
+ "code": "513338",
+ "name": "得荣县"
+ }]
+ }, {
+ "code": "5134",
+ "name": "凉山彝族自治州",
+ "children": [{
+ "code": "513401",
+ "name": "西昌市"
+ }, {
+ "code": "513402",
+ "name": "会理市"
+ }, {
+ "code": "513422",
+ "name": "木里藏族自治县"
+ }, {
+ "code": "513423",
+ "name": "盐源县"
+ }, {
+ "code": "513424",
+ "name": "德昌县"
+ }, {
+ "code": "513426",
+ "name": "会东县"
+ }, {
+ "code": "513427",
+ "name": "宁南县"
+ }, {
+ "code": "513428",
+ "name": "普格县"
+ }, {
+ "code": "513429",
+ "name": "布拖县"
+ }, {
+ "code": "513430",
+ "name": "金阳县"
+ }, {
+ "code": "513431",
+ "name": "昭觉县"
+ }, {
+ "code": "513432",
+ "name": "喜德县"
+ }, {
+ "code": "513433",
+ "name": "冕宁县"
+ }, {
+ "code": "513434",
+ "name": "越西县"
+ }, {
+ "code": "513435",
+ "name": "甘洛县"
+ }, {
+ "code": "513436",
+ "name": "美姑县"
+ }, {
+ "code": "513437",
+ "name": "雷波县"
+ }]
+ }]
+}, {
+ "code": "52",
+ "name": "贵州省",
+ "children": [{
+ "code": "5201",
+ "name": "贵阳市",
+ "children": [{
+ "code": "520102",
+ "name": "南明区"
+ }, {
+ "code": "520103",
+ "name": "云岩区"
+ }, {
+ "code": "520111",
+ "name": "花溪区"
+ }, {
+ "code": "520112",
+ "name": "乌当区"
+ }, {
+ "code": "520113",
+ "name": "白云区"
+ }, {
+ "code": "520115",
+ "name": "观山湖区"
+ }, {
+ "code": "520121",
+ "name": "开阳县"
+ }, {
+ "code": "520122",
+ "name": "息烽县"
+ }, {
+ "code": "520123",
+ "name": "修文县"
+ }, {
+ "code": "520181",
+ "name": "清镇市"
+ }]
+ }, {
+ "code": "5202",
+ "name": "六盘水市",
+ "children": [{
+ "code": "520201",
+ "name": "钟山区"
+ }, {
+ "code": "520203",
+ "name": "六枝特区"
+ }, {
+ "code": "520204",
+ "name": "水城区"
+ }, {
+ "code": "520281",
+ "name": "盘州市"
+ }]
+ }, {
+ "code": "5203",
+ "name": "遵义市",
+ "children": [{
+ "code": "520302",
+ "name": "红花岗区"
+ }, {
+ "code": "520303",
+ "name": "汇川区"
+ }, {
+ "code": "520304",
+ "name": "播州区"
+ }, {
+ "code": "520322",
+ "name": "桐梓县"
+ }, {
+ "code": "520323",
+ "name": "绥阳县"
+ }, {
+ "code": "520324",
+ "name": "正安县"
+ }, {
+ "code": "520325",
+ "name": "道真仡佬族苗族自治县"
+ }, {
+ "code": "520326",
+ "name": "务川仡佬族苗族自治县"
+ }, {
+ "code": "520327",
+ "name": "凤冈县"
+ }, {
+ "code": "520328",
+ "name": "湄潭县"
+ }, {
+ "code": "520329",
+ "name": "余庆县"
+ }, {
+ "code": "520330",
+ "name": "习水县"
+ }, {
+ "code": "520381",
+ "name": "赤水市"
+ }, {
+ "code": "520382",
+ "name": "仁怀市"
+ }]
+ }, {
+ "code": "5204",
+ "name": "安顺市",
+ "children": [{
+ "code": "520402",
+ "name": "西秀区"
+ }, {
+ "code": "520403",
+ "name": "平坝区"
+ }, {
+ "code": "520422",
+ "name": "普定县"
+ }, {
+ "code": "520423",
+ "name": "镇宁布依族苗族自治县"
+ }, {
+ "code": "520424",
+ "name": "关岭布依族苗族自治县"
+ }, {
+ "code": "520425",
+ "name": "紫云苗族布依族自治县"
+ }]
+ }, {
+ "code": "5205",
+ "name": "毕节市",
+ "children": [{
+ "code": "520502",
+ "name": "七星关区"
+ }, {
+ "code": "520521",
+ "name": "大方县"
+ }, {
+ "code": "520523",
+ "name": "金沙县"
+ }, {
+ "code": "520524",
+ "name": "织金县"
+ }, {
+ "code": "520525",
+ "name": "纳雍县"
+ }, {
+ "code": "520526",
+ "name": "威宁彝族回族苗族自治县"
+ }, {
+ "code": "520527",
+ "name": "赫章县"
+ }, {
+ "code": "520581",
+ "name": "黔西市"
+ }]
+ }, {
+ "code": "5206",
+ "name": "铜仁市",
+ "children": [{
+ "code": "520602",
+ "name": "碧江区"
+ }, {
+ "code": "520603",
+ "name": "万山区"
+ }, {
+ "code": "520621",
+ "name": "江口县"
+ }, {
+ "code": "520622",
+ "name": "玉屏侗族自治县"
+ }, {
+ "code": "520623",
+ "name": "石阡县"
+ }, {
+ "code": "520624",
+ "name": "思南县"
+ }, {
+ "code": "520625",
+ "name": "印江土家族苗族自治县"
+ }, {
+ "code": "520626",
+ "name": "德江县"
+ }, {
+ "code": "520627",
+ "name": "沿河土家族自治县"
+ }, {
+ "code": "520628",
+ "name": "松桃苗族自治县"
+ }]
+ }, {
+ "code": "5223",
+ "name": "黔西南布依族苗族自治州",
+ "children": [{
+ "code": "522301",
+ "name": "兴义市"
+ }, {
+ "code": "522302",
+ "name": "兴仁市"
+ }, {
+ "code": "522323",
+ "name": "普安县"
+ }, {
+ "code": "522324",
+ "name": "晴隆县"
+ }, {
+ "code": "522325",
+ "name": "贞丰县"
+ }, {
+ "code": "522326",
+ "name": "望谟县"
+ }, {
+ "code": "522327",
+ "name": "册亨县"
+ }, {
+ "code": "522328",
+ "name": "安龙县"
+ }]
+ }, {
+ "code": "5226",
+ "name": "黔东南苗族侗族自治州",
+ "children": [{
+ "code": "522601",
+ "name": "凯里市"
+ }, {
+ "code": "522622",
+ "name": "黄平县"
+ }, {
+ "code": "522623",
+ "name": "施秉县"
+ }, {
+ "code": "522624",
+ "name": "三穗县"
+ }, {
+ "code": "522625",
+ "name": "镇远县"
+ }, {
+ "code": "522626",
+ "name": "岑巩县"
+ }, {
+ "code": "522627",
+ "name": "天柱县"
+ }, {
+ "code": "522628",
+ "name": "锦屏县"
+ }, {
+ "code": "522629",
+ "name": "剑河县"
+ }, {
+ "code": "522630",
+ "name": "台江县"
+ }, {
+ "code": "522631",
+ "name": "黎平县"
+ }, {
+ "code": "522632",
+ "name": "榕江县"
+ }, {
+ "code": "522633",
+ "name": "从江县"
+ }, {
+ "code": "522634",
+ "name": "雷山县"
+ }, {
+ "code": "522635",
+ "name": "麻江县"
+ }, {
+ "code": "522636",
+ "name": "丹寨县"
+ }]
+ }, {
+ "code": "5227",
+ "name": "黔南布依族苗族自治州",
+ "children": [{
+ "code": "522701",
+ "name": "都匀市"
+ }, {
+ "code": "522702",
+ "name": "福泉市"
+ }, {
+ "code": "522722",
+ "name": "荔波县"
+ }, {
+ "code": "522723",
+ "name": "贵定县"
+ }, {
+ "code": "522725",
+ "name": "瓮安县"
+ }, {
+ "code": "522726",
+ "name": "独山县"
+ }, {
+ "code": "522727",
+ "name": "平塘县"
+ }, {
+ "code": "522728",
+ "name": "罗甸县"
+ }, {
+ "code": "522729",
+ "name": "长顺县"
+ }, {
+ "code": "522730",
+ "name": "龙里县"
+ }, {
+ "code": "522731",
+ "name": "惠水县"
+ }, {
+ "code": "522732",
+ "name": "三都水族自治县"
+ }]
+ }]
+}, {
+ "code": "53",
+ "name": "云南省",
+ "children": [{
+ "code": "5301",
+ "name": "昆明市",
+ "children": [{
+ "code": "530102",
+ "name": "五华区"
+ }, {
+ "code": "530103",
+ "name": "盘龙区"
+ }, {
+ "code": "530111",
+ "name": "官渡区"
+ }, {
+ "code": "530112",
+ "name": "西山区"
+ }, {
+ "code": "530113",
+ "name": "东川区"
+ }, {
+ "code": "530114",
+ "name": "呈贡区"
+ }, {
+ "code": "530115",
+ "name": "晋宁区"
+ }, {
+ "code": "530124",
+ "name": "富民县"
+ }, {
+ "code": "530125",
+ "name": "宜良县"
+ }, {
+ "code": "530126",
+ "name": "石林彝族自治县"
+ }, {
+ "code": "530127",
+ "name": "嵩明县"
+ }, {
+ "code": "530128",
+ "name": "禄劝彝族苗族自治县"
+ }, {
+ "code": "530129",
+ "name": "寻甸回族彝族自治县"
+ }, {
+ "code": "530181",
+ "name": "安宁市"
+ }]
+ }, {
+ "code": "5303",
+ "name": "曲靖市",
+ "children": [{
+ "code": "530302",
+ "name": "麒麟区"
+ }, {
+ "code": "530303",
+ "name": "沾益区"
+ }, {
+ "code": "530304",
+ "name": "马龙区"
+ }, {
+ "code": "530322",
+ "name": "陆良县"
+ }, {
+ "code": "530323",
+ "name": "师宗县"
+ }, {
+ "code": "530324",
+ "name": "罗平县"
+ }, {
+ "code": "530325",
+ "name": "富源县"
+ }, {
+ "code": "530326",
+ "name": "会泽县"
+ }, {
+ "code": "530381",
+ "name": "宣威市"
+ }]
+ }, {
+ "code": "5304",
+ "name": "玉溪市",
+ "children": [{
+ "code": "530402",
+ "name": "红塔区"
+ }, {
+ "code": "530403",
+ "name": "江川区"
+ }, {
+ "code": "530423",
+ "name": "通海县"
+ }, {
+ "code": "530424",
+ "name": "华宁县"
+ }, {
+ "code": "530425",
+ "name": "易门县"
+ }, {
+ "code": "530426",
+ "name": "峨山彝族自治县"
+ }, {
+ "code": "530427",
+ "name": "新平彝族傣族自治县"
+ }, {
+ "code": "530428",
+ "name": "元江哈尼族彝族傣族自治县"
+ }, {
+ "code": "530481",
+ "name": "澄江市"
+ }]
+ }, {
+ "code": "5305",
+ "name": "保山市",
+ "children": [{
+ "code": "530502",
+ "name": "隆阳区"
+ }, {
+ "code": "530521",
+ "name": "施甸县"
+ }, {
+ "code": "530523",
+ "name": "龙陵县"
+ }, {
+ "code": "530524",
+ "name": "昌宁县"
+ }, {
+ "code": "530581",
+ "name": "腾冲市"
+ }]
+ }, {
+ "code": "5306",
+ "name": "昭通市",
+ "children": [{
+ "code": "530602",
+ "name": "昭阳区"
+ }, {
+ "code": "530621",
+ "name": "鲁甸县"
+ }, {
+ "code": "530622",
+ "name": "巧家县"
+ }, {
+ "code": "530623",
+ "name": "盐津县"
+ }, {
+ "code": "530624",
+ "name": "大关县"
+ }, {
+ "code": "530625",
+ "name": "永善县"
+ }, {
+ "code": "530626",
+ "name": "绥江县"
+ }, {
+ "code": "530627",
+ "name": "镇雄县"
+ }, {
+ "code": "530628",
+ "name": "彝良县"
+ }, {
+ "code": "530629",
+ "name": "威信县"
+ }, {
+ "code": "530681",
+ "name": "水富市"
+ }]
+ }, {
+ "code": "5307",
+ "name": "丽江市",
+ "children": [{
+ "code": "530702",
+ "name": "古城区"
+ }, {
+ "code": "530721",
+ "name": "玉龙纳西族自治县"
+ }, {
+ "code": "530722",
+ "name": "永胜县"
+ }, {
+ "code": "530723",
+ "name": "华坪县"
+ }, {
+ "code": "530724",
+ "name": "宁蒗彝族自治县"
+ }]
+ }, {
+ "code": "5308",
+ "name": "普洱市",
+ "children": [{
+ "code": "530802",
+ "name": "思茅区"
+ }, {
+ "code": "530821",
+ "name": "宁洱哈尼族彝族自治县"
+ }, {
+ "code": "530822",
+ "name": "墨江哈尼族自治县"
+ }, {
+ "code": "530823",
+ "name": "景东彝族自治县"
+ }, {
+ "code": "530824",
+ "name": "景谷傣族彝族自治县"
+ }, {
+ "code": "530825",
+ "name": "镇沅彝族哈尼族拉祜族自治县"
+ }, {
+ "code": "530826",
+ "name": "江城哈尼族彝族自治县"
+ }, {
+ "code": "530827",
+ "name": "孟连傣族拉祜族佤族自治县"
+ }, {
+ "code": "530828",
+ "name": "澜沧拉祜族自治县"
+ }, {
+ "code": "530829",
+ "name": "西盟佤族自治县"
+ }]
+ }, {
+ "code": "5309",
+ "name": "临沧市",
+ "children": [{
+ "code": "530902",
+ "name": "临翔区"
+ }, {
+ "code": "530921",
+ "name": "凤庆县"
+ }, {
+ "code": "530922",
+ "name": "云县"
+ }, {
+ "code": "530923",
+ "name": "永德县"
+ }, {
+ "code": "530924",
+ "name": "镇康县"
+ }, {
+ "code": "530925",
+ "name": "双江拉祜族佤族布朗族傣族自治县"
+ }, {
+ "code": "530926",
+ "name": "耿马傣族佤族自治县"
+ }, {
+ "code": "530927",
+ "name": "沧源佤族自治县"
+ }]
+ }, {
+ "code": "5323",
+ "name": "楚雄彝族自治州",
+ "children": [{
+ "code": "532301",
+ "name": "楚雄市"
+ }, {
+ "code": "532302",
+ "name": "禄丰市"
+ }, {
+ "code": "532322",
+ "name": "双柏县"
+ }, {
+ "code": "532323",
+ "name": "牟定县"
+ }, {
+ "code": "532324",
+ "name": "南华县"
+ }, {
+ "code": "532325",
+ "name": "姚安县"
+ }, {
+ "code": "532326",
+ "name": "大姚县"
+ }, {
+ "code": "532327",
+ "name": "永仁县"
+ }, {
+ "code": "532328",
+ "name": "元谋县"
+ }, {
+ "code": "532329",
+ "name": "武定县"
+ }]
+ }, {
+ "code": "5325",
+ "name": "红河哈尼族彝族自治州",
+ "children": [{
+ "code": "532501",
+ "name": "个旧市"
+ }, {
+ "code": "532502",
+ "name": "开远市"
+ }, {
+ "code": "532503",
+ "name": "蒙自市"
+ }, {
+ "code": "532504",
+ "name": "弥勒市"
+ }, {
+ "code": "532523",
+ "name": "屏边苗族自治县"
+ }, {
+ "code": "532524",
+ "name": "建水县"
+ }, {
+ "code": "532525",
+ "name": "石屏县"
+ }, {
+ "code": "532527",
+ "name": "泸西县"
+ }, {
+ "code": "532528",
+ "name": "元阳县"
+ }, {
+ "code": "532529",
+ "name": "红河县"
+ }, {
+ "code": "532530",
+ "name": "金平苗族瑶族傣族自治县"
+ }, {
+ "code": "532531",
+ "name": "绿春县"
+ }, {
+ "code": "532532",
+ "name": "河口瑶族自治县"
+ }]
+ }, {
+ "code": "5326",
+ "name": "文山壮族苗族自治州",
+ "children": [{
+ "code": "532601",
+ "name": "文山市"
+ }, {
+ "code": "532622",
+ "name": "砚山县"
+ }, {
+ "code": "532623",
+ "name": "西畴县"
+ }, {
+ "code": "532624",
+ "name": "麻栗坡县"
+ }, {
+ "code": "532625",
+ "name": "马关县"
+ }, {
+ "code": "532626",
+ "name": "丘北县"
+ }, {
+ "code": "532627",
+ "name": "广南县"
+ }, {
+ "code": "532628",
+ "name": "富宁县"
+ }]
+ }, {
+ "code": "5328",
+ "name": "西双版纳傣族自治州",
+ "children": [{
+ "code": "532801",
+ "name": "景洪市"
+ }, {
+ "code": "532822",
+ "name": "勐海县"
+ }, {
+ "code": "532823",
+ "name": "勐腊县"
+ }]
+ }, {
+ "code": "5329",
+ "name": "大理白族自治州",
+ "children": [{
+ "code": "532901",
+ "name": "大理市"
+ }, {
+ "code": "532922",
+ "name": "漾濞彝族自治县"
+ }, {
+ "code": "532923",
+ "name": "祥云县"
+ }, {
+ "code": "532924",
+ "name": "宾川县"
+ }, {
+ "code": "532925",
+ "name": "弥渡县"
+ }, {
+ "code": "532926",
+ "name": "南涧彝族自治县"
+ }, {
+ "code": "532927",
+ "name": "巍山彝族回族自治县"
+ }, {
+ "code": "532928",
+ "name": "永平县"
+ }, {
+ "code": "532929",
+ "name": "云龙县"
+ }, {
+ "code": "532930",
+ "name": "洱源县"
+ }, {
+ "code": "532931",
+ "name": "剑川县"
+ }, {
+ "code": "532932",
+ "name": "鹤庆县"
+ }]
+ }, {
+ "code": "5331",
+ "name": "德宏傣族景颇族自治州",
+ "children": [{
+ "code": "533102",
+ "name": "瑞丽市"
+ }, {
+ "code": "533103",
+ "name": "芒市"
+ }, {
+ "code": "533122",
+ "name": "梁河县"
+ }, {
+ "code": "533123",
+ "name": "盈江县"
+ }, {
+ "code": "533124",
+ "name": "陇川县"
+ }]
+ }, {
+ "code": "5333",
+ "name": "怒江傈僳族自治州",
+ "children": [{
+ "code": "533301",
+ "name": "泸水市"
+ }, {
+ "code": "533323",
+ "name": "福贡县"
+ }, {
+ "code": "533324",
+ "name": "贡山独龙族怒族自治县"
+ }, {
+ "code": "533325",
+ "name": "兰坪白族普米族自治县"
+ }]
+ }, {
+ "code": "5334",
+ "name": "迪庆藏族自治州",
+ "children": [{
+ "code": "533401",
+ "name": "香格里拉市"
+ }, {
+ "code": "533422",
+ "name": "德钦县"
+ }, {
+ "code": "533423",
+ "name": "维西傈僳族自治县"
+ }]
+ }]
+}, {
+ "code": "54",
+ "name": "西藏自治区",
+ "children": [{
+ "code": "5401",
+ "name": "拉萨市",
+ "children": [{
+ "code": "540102",
+ "name": "城关区"
+ }, {
+ "code": "540103",
+ "name": "堆龙德庆区"
+ }, {
+ "code": "540104",
+ "name": "达孜区"
+ }, {
+ "code": "540121",
+ "name": "林周县"
+ }, {
+ "code": "540122",
+ "name": "当雄县"
+ }, {
+ "code": "540123",
+ "name": "尼木县"
+ }, {
+ "code": "540124",
+ "name": "曲水县"
+ }, {
+ "code": "540127",
+ "name": "墨竹工卡县"
+ }, {
+ "code": "540171",
+ "name": "格尔木藏青工业园区"
+ }, {
+ "code": "540172",
+ "name": "拉萨经济技术开发区"
+ }, {
+ "code": "540173",
+ "name": "西藏文化旅游创意园区"
+ }, {
+ "code": "540174",
+ "name": "达孜工业园区"
+ }]
+ }, {
+ "code": "5402",
+ "name": "日喀则市",
+ "children": [{
+ "code": "540202",
+ "name": "桑珠孜区"
+ }, {
+ "code": "540221",
+ "name": "南木林县"
+ }, {
+ "code": "540222",
+ "name": "江孜县"
+ }, {
+ "code": "540223",
+ "name": "定日县"
+ }, {
+ "code": "540224",
+ "name": "萨迦县"
+ }, {
+ "code": "540225",
+ "name": "拉孜县"
+ }, {
+ "code": "540226",
+ "name": "昂仁县"
+ }, {
+ "code": "540227",
+ "name": "谢通门县"
+ }, {
+ "code": "540228",
+ "name": "白朗县"
+ }, {
+ "code": "540229",
+ "name": "仁布县"
+ }, {
+ "code": "540230",
+ "name": "康马县"
+ }, {
+ "code": "540231",
+ "name": "定结县"
+ }, {
+ "code": "540232",
+ "name": "仲巴县"
+ }, {
+ "code": "540233",
+ "name": "亚东县"
+ }, {
+ "code": "540234",
+ "name": "吉隆县"
+ }, {
+ "code": "540235",
+ "name": "聂拉木县"
+ }, {
+ "code": "540236",
+ "name": "萨嘎县"
+ }, {
+ "code": "540237",
+ "name": "岗巴县"
+ }]
+ }, {
+ "code": "5403",
+ "name": "昌都市",
+ "children": [{
+ "code": "540302",
+ "name": "卡若区"
+ }, {
+ "code": "540321",
+ "name": "江达县"
+ }, {
+ "code": "540322",
+ "name": "贡觉县"
+ }, {
+ "code": "540323",
+ "name": "类乌齐县"
+ }, {
+ "code": "540324",
+ "name": "丁青县"
+ }, {
+ "code": "540325",
+ "name": "察雅县"
+ }, {
+ "code": "540326",
+ "name": "八宿县"
+ }, {
+ "code": "540327",
+ "name": "左贡县"
+ }, {
+ "code": "540328",
+ "name": "芒康县"
+ }, {
+ "code": "540329",
+ "name": "洛隆县"
+ }, {
+ "code": "540330",
+ "name": "边坝县"
+ }]
+ }, {
+ "code": "5404",
+ "name": "林芝市",
+ "children": [{
+ "code": "540402",
+ "name": "巴宜区"
+ }, {
+ "code": "540421",
+ "name": "工布江达县"
+ }, {
+ "code": "540423",
+ "name": "墨脱县"
+ }, {
+ "code": "540424",
+ "name": "波密县"
+ }, {
+ "code": "540425",
+ "name": "察隅县"
+ }, {
+ "code": "540426",
+ "name": "朗县"
+ }, {
+ "code": "540481",
+ "name": "米林市"
+ }]
+ }, {
+ "code": "5405",
+ "name": "山南市",
+ "children": [{
+ "code": "540502",
+ "name": "乃东区"
+ }, {
+ "code": "540521",
+ "name": "扎囊县"
+ }, {
+ "code": "540522",
+ "name": "贡嘎县"
+ }, {
+ "code": "540523",
+ "name": "桑日县"
+ }, {
+ "code": "540524",
+ "name": "琼结县"
+ }, {
+ "code": "540525",
+ "name": "曲松县"
+ }, {
+ "code": "540526",
+ "name": "措美县"
+ }, {
+ "code": "540527",
+ "name": "洛扎县"
+ }, {
+ "code": "540528",
+ "name": "加查县"
+ }, {
+ "code": "540529",
+ "name": "隆子县"
+ }, {
+ "code": "540531",
+ "name": "浪卡子县"
+ }, {
+ "code": "540581",
+ "name": "错那市"
+ }]
+ }, {
+ "code": "5406",
+ "name": "那曲市",
+ "children": [{
+ "code": "540602",
+ "name": "色尼区"
+ }, {
+ "code": "540621",
+ "name": "嘉黎县"
+ }, {
+ "code": "540622",
+ "name": "比如县"
+ }, {
+ "code": "540623",
+ "name": "聂荣县"
+ }, {
+ "code": "540624",
+ "name": "安多县"
+ }, {
+ "code": "540625",
+ "name": "申扎县"
+ }, {
+ "code": "540626",
+ "name": "索县"
+ }, {
+ "code": "540627",
+ "name": "班戈县"
+ }, {
+ "code": "540628",
+ "name": "巴青县"
+ }, {
+ "code": "540629",
+ "name": "尼玛县"
+ }, {
+ "code": "540630",
+ "name": "双湖县"
+ }]
+ }, {
+ "code": "5425",
+ "name": "阿里地区",
+ "children": [{
+ "code": "542521",
+ "name": "普兰县"
+ }, {
+ "code": "542522",
+ "name": "札达县"
+ }, {
+ "code": "542523",
+ "name": "噶尔县"
+ }, {
+ "code": "542524",
+ "name": "日土县"
+ }, {
+ "code": "542525",
+ "name": "革吉县"
+ }, {
+ "code": "542526",
+ "name": "改则县"
+ }, {
+ "code": "542527",
+ "name": "措勤县"
+ }]
+ }]
+}, {
+ "code": "61",
+ "name": "陕西省",
+ "children": [{
+ "code": "6101",
+ "name": "西安市",
+ "children": [{
+ "code": "610102",
+ "name": "新城区"
+ }, {
+ "code": "610103",
+ "name": "碑林区"
+ }, {
+ "code": "610104",
+ "name": "莲湖区"
+ }, {
+ "code": "610111",
+ "name": "灞桥区"
+ }, {
+ "code": "610112",
+ "name": "未央区"
+ }, {
+ "code": "610113",
+ "name": "雁塔区"
+ }, {
+ "code": "610114",
+ "name": "阎良区"
+ }, {
+ "code": "610115",
+ "name": "临潼区"
+ }, {
+ "code": "610116",
+ "name": "长安区"
+ }, {
+ "code": "610117",
+ "name": "高陵区"
+ }, {
+ "code": "610118",
+ "name": "鄠邑区"
+ }, {
+ "code": "610122",
+ "name": "蓝田县"
+ }, {
+ "code": "610124",
+ "name": "周至县"
+ }]
+ }, {
+ "code": "6102",
+ "name": "铜川市",
+ "children": [{
+ "code": "610202",
+ "name": "王益区"
+ }, {
+ "code": "610203",
+ "name": "印台区"
+ }, {
+ "code": "610204",
+ "name": "耀州区"
+ }, {
+ "code": "610222",
+ "name": "宜君县"
+ }]
+ }, {
+ "code": "6103",
+ "name": "宝鸡市",
+ "children": [{
+ "code": "610302",
+ "name": "渭滨区"
+ }, {
+ "code": "610303",
+ "name": "金台区"
+ }, {
+ "code": "610304",
+ "name": "陈仓区"
+ }, {
+ "code": "610305",
+ "name": "凤翔区"
+ }, {
+ "code": "610323",
+ "name": "岐山县"
+ }, {
+ "code": "610324",
+ "name": "扶风县"
+ }, {
+ "code": "610326",
+ "name": "眉县"
+ }, {
+ "code": "610327",
+ "name": "陇县"
+ }, {
+ "code": "610328",
+ "name": "千阳县"
+ }, {
+ "code": "610329",
+ "name": "麟游县"
+ }, {
+ "code": "610330",
+ "name": "凤县"
+ }, {
+ "code": "610331",
+ "name": "太白县"
+ }]
+ }, {
+ "code": "6104",
+ "name": "咸阳市",
+ "children": [{
+ "code": "610402",
+ "name": "秦都区"
+ }, {
+ "code": "610403",
+ "name": "杨陵区"
+ }, {
+ "code": "610404",
+ "name": "渭城区"
+ }, {
+ "code": "610422",
+ "name": "三原县"
+ }, {
+ "code": "610423",
+ "name": "泾阳县"
+ }, {
+ "code": "610424",
+ "name": "乾县"
+ }, {
+ "code": "610425",
+ "name": "礼泉县"
+ }, {
+ "code": "610426",
+ "name": "永寿县"
+ }, {
+ "code": "610428",
+ "name": "长武县"
+ }, {
+ "code": "610429",
+ "name": "旬邑县"
+ }, {
+ "code": "610430",
+ "name": "淳化县"
+ }, {
+ "code": "610431",
+ "name": "武功县"
+ }, {
+ "code": "610481",
+ "name": "兴平市"
+ }, {
+ "code": "610482",
+ "name": "彬州市"
+ }]
+ }, {
+ "code": "6105",
+ "name": "渭南市",
+ "children": [{
+ "code": "610502",
+ "name": "临渭区"
+ }, {
+ "code": "610503",
+ "name": "华州区"
+ }, {
+ "code": "610522",
+ "name": "潼关县"
+ }, {
+ "code": "610523",
+ "name": "大荔县"
+ }, {
+ "code": "610524",
+ "name": "合阳县"
+ }, {
+ "code": "610525",
+ "name": "澄城县"
+ }, {
+ "code": "610526",
+ "name": "蒲城县"
+ }, {
+ "code": "610527",
+ "name": "白水县"
+ }, {
+ "code": "610528",
+ "name": "富平县"
+ }, {
+ "code": "610581",
+ "name": "韩城市"
+ }, {
+ "code": "610582",
+ "name": "华阴市"
+ }]
+ }, {
+ "code": "6106",
+ "name": "延安市",
+ "children": [{
+ "code": "610602",
+ "name": "宝塔区"
+ }, {
+ "code": "610603",
+ "name": "安塞区"
+ }, {
+ "code": "610621",
+ "name": "延长县"
+ }, {
+ "code": "610622",
+ "name": "延川县"
+ }, {
+ "code": "610625",
+ "name": "志丹县"
+ }, {
+ "code": "610626",
+ "name": "吴起县"
+ }, {
+ "code": "610627",
+ "name": "甘泉县"
+ }, {
+ "code": "610628",
+ "name": "富县"
+ }, {
+ "code": "610629",
+ "name": "洛川县"
+ }, {
+ "code": "610630",
+ "name": "宜川县"
+ }, {
+ "code": "610631",
+ "name": "黄龙县"
+ }, {
+ "code": "610632",
+ "name": "黄陵县"
+ }, {
+ "code": "610681",
+ "name": "子长市"
+ }]
+ }, {
+ "code": "6107",
+ "name": "汉中市",
+ "children": [{
+ "code": "610702",
+ "name": "汉台区"
+ }, {
+ "code": "610703",
+ "name": "南郑区"
+ }, {
+ "code": "610722",
+ "name": "城固县"
+ }, {
+ "code": "610723",
+ "name": "洋县"
+ }, {
+ "code": "610724",
+ "name": "西乡县"
+ }, {
+ "code": "610725",
+ "name": "勉县"
+ }, {
+ "code": "610726",
+ "name": "宁强县"
+ }, {
+ "code": "610727",
+ "name": "略阳县"
+ }, {
+ "code": "610728",
+ "name": "镇巴县"
+ }, {
+ "code": "610729",
+ "name": "留坝县"
+ }, {
+ "code": "610730",
+ "name": "佛坪县"
+ }]
+ }, {
+ "code": "6108",
+ "name": "榆林市",
+ "children": [{
+ "code": "610802",
+ "name": "榆阳区"
+ }, {
+ "code": "610803",
+ "name": "横山区"
+ }, {
+ "code": "610822",
+ "name": "府谷县"
+ }, {
+ "code": "610824",
+ "name": "靖边县"
+ }, {
+ "code": "610825",
+ "name": "定边县"
+ }, {
+ "code": "610826",
+ "name": "绥德县"
+ }, {
+ "code": "610827",
+ "name": "米脂县"
+ }, {
+ "code": "610828",
+ "name": "佳县"
+ }, {
+ "code": "610829",
+ "name": "吴堡县"
+ }, {
+ "code": "610830",
+ "name": "清涧县"
+ }, {
+ "code": "610831",
+ "name": "子洲县"
+ }, {
+ "code": "610881",
+ "name": "神木市"
+ }]
+ }, {
+ "code": "6109",
+ "name": "安康市",
+ "children": [{
+ "code": "610902",
+ "name": "汉滨区"
+ }, {
+ "code": "610921",
+ "name": "汉阴县"
+ }, {
+ "code": "610922",
+ "name": "石泉县"
+ }, {
+ "code": "610923",
+ "name": "宁陕县"
+ }, {
+ "code": "610924",
+ "name": "紫阳县"
+ }, {
+ "code": "610925",
+ "name": "岚皋县"
+ }, {
+ "code": "610926",
+ "name": "平利县"
+ }, {
+ "code": "610927",
+ "name": "镇坪县"
+ }, {
+ "code": "610929",
+ "name": "白河县"
+ }, {
+ "code": "610981",
+ "name": "旬阳市"
+ }]
+ }, {
+ "code": "6110",
+ "name": "商洛市",
+ "children": [{
+ "code": "611002",
+ "name": "商州区"
+ }, {
+ "code": "611021",
+ "name": "洛南县"
+ }, {
+ "code": "611022",
+ "name": "丹凤县"
+ }, {
+ "code": "611023",
+ "name": "商南县"
+ }, {
+ "code": "611024",
+ "name": "山阳县"
+ }, {
+ "code": "611025",
+ "name": "镇安县"
+ }, {
+ "code": "611026",
+ "name": "柞水县"
+ }]
+ }]
+}, {
+ "code": "62",
+ "name": "甘肃省",
+ "children": [{
+ "code": "6201",
+ "name": "兰州市",
+ "children": [{
+ "code": "620102",
+ "name": "城关区"
+ }, {
+ "code": "620103",
+ "name": "七里河区"
+ }, {
+ "code": "620104",
+ "name": "西固区"
+ }, {
+ "code": "620105",
+ "name": "安宁区"
+ }, {
+ "code": "620111",
+ "name": "红古区"
+ }, {
+ "code": "620121",
+ "name": "永登县"
+ }, {
+ "code": "620122",
+ "name": "皋兰县"
+ }, {
+ "code": "620123",
+ "name": "榆中县"
+ }, {
+ "code": "620171",
+ "name": "兰州新区"
+ }]
+ }, {
+ "code": "6202",
+ "name": "嘉峪关市",
+ "children": [{
+ "code": "620201001",
+ "name": "雄关街道"
+ }, {
+ "code": "620201002",
+ "name": "钢城街道"
+ }, {
+ "code": "620201100",
+ "name": "新城镇"
+ }, {
+ "code": "620201101",
+ "name": "峪泉镇"
+ }, {
+ "code": "620201102",
+ "name": "文殊镇"
+ }]
+ }, {
+ "code": "6203",
+ "name": "金昌市",
+ "children": [{
+ "code": "620302",
+ "name": "金川区"
+ }, {
+ "code": "620321",
+ "name": "永昌县"
+ }]
+ }, {
+ "code": "6204",
+ "name": "白银市",
+ "children": [{
+ "code": "620402",
+ "name": "白银区"
+ }, {
+ "code": "620403",
+ "name": "平川区"
+ }, {
+ "code": "620421",
+ "name": "靖远县"
+ }, {
+ "code": "620422",
+ "name": "会宁县"
+ }, {
+ "code": "620423",
+ "name": "景泰县"
+ }]
+ }, {
+ "code": "6205",
+ "name": "天水市",
+ "children": [{
+ "code": "620502",
+ "name": "秦州区"
+ }, {
+ "code": "620503",
+ "name": "麦积区"
+ }, {
+ "code": "620521",
+ "name": "清水县"
+ }, {
+ "code": "620522",
+ "name": "秦安县"
+ }, {
+ "code": "620523",
+ "name": "甘谷县"
+ }, {
+ "code": "620524",
+ "name": "武山县"
+ }, {
+ "code": "620525",
+ "name": "张家川回族自治县"
+ }]
+ }, {
+ "code": "6206",
+ "name": "武威市",
+ "children": [{
+ "code": "620602",
+ "name": "凉州区"
+ }, {
+ "code": "620621",
+ "name": "民勤县"
+ }, {
+ "code": "620622",
+ "name": "古浪县"
+ }, {
+ "code": "620623",
+ "name": "天祝藏族自治县"
+ }]
+ }, {
+ "code": "6207",
+ "name": "张掖市",
+ "children": [{
+ "code": "620702",
+ "name": "甘州区"
+ }, {
+ "code": "620721",
+ "name": "肃南裕固族自治县"
+ }, {
+ "code": "620722",
+ "name": "民乐县"
+ }, {
+ "code": "620723",
+ "name": "临泽县"
+ }, {
+ "code": "620724",
+ "name": "高台县"
+ }, {
+ "code": "620725",
+ "name": "山丹县"
+ }]
+ }, {
+ "code": "6208",
+ "name": "平凉市",
+ "children": [{
+ "code": "620802",
+ "name": "崆峒区"
+ }, {
+ "code": "620821",
+ "name": "泾川县"
+ }, {
+ "code": "620822",
+ "name": "灵台县"
+ }, {
+ "code": "620823",
+ "name": "崇信县"
+ }, {
+ "code": "620825",
+ "name": "庄浪县"
+ }, {
+ "code": "620826",
+ "name": "静宁县"
+ }, {
+ "code": "620881",
+ "name": "华亭市"
+ }]
+ }, {
+ "code": "6209",
+ "name": "酒泉市",
+ "children": [{
+ "code": "620902",
+ "name": "肃州区"
+ }, {
+ "code": "620921",
+ "name": "金塔县"
+ }, {
+ "code": "620922",
+ "name": "瓜州县"
+ }, {
+ "code": "620923",
+ "name": "肃北蒙古族自治县"
+ }, {
+ "code": "620924",
+ "name": "阿克塞哈萨克族自治县"
+ }, {
+ "code": "620981",
+ "name": "玉门市"
+ }, {
+ "code": "620982",
+ "name": "敦煌市"
+ }]
+ }, {
+ "code": "6210",
+ "name": "庆阳市",
+ "children": [{
+ "code": "621002",
+ "name": "西峰区"
+ }, {
+ "code": "621021",
+ "name": "庆城县"
+ }, {
+ "code": "621022",
+ "name": "环县"
+ }, {
+ "code": "621023",
+ "name": "华池县"
+ }, {
+ "code": "621024",
+ "name": "合水县"
+ }, {
+ "code": "621025",
+ "name": "正宁县"
+ }, {
+ "code": "621026",
+ "name": "宁县"
+ }, {
+ "code": "621027",
+ "name": "镇原县"
+ }]
+ }, {
+ "code": "6211",
+ "name": "定西市",
+ "children": [{
+ "code": "621102",
+ "name": "安定区"
+ }, {
+ "code": "621121",
+ "name": "通渭县"
+ }, {
+ "code": "621122",
+ "name": "陇西县"
+ }, {
+ "code": "621123",
+ "name": "渭源县"
+ }, {
+ "code": "621124",
+ "name": "临洮县"
+ }, {
+ "code": "621125",
+ "name": "漳县"
+ }, {
+ "code": "621126",
+ "name": "岷县"
+ }]
+ }, {
+ "code": "6212",
+ "name": "陇南市",
+ "children": [{
+ "code": "621202",
+ "name": "武都区"
+ }, {
+ "code": "621221",
+ "name": "成县"
+ }, {
+ "code": "621222",
+ "name": "文县"
+ }, {
+ "code": "621223",
+ "name": "宕昌县"
+ }, {
+ "code": "621224",
+ "name": "康县"
+ }, {
+ "code": "621225",
+ "name": "西和县"
+ }, {
+ "code": "621226",
+ "name": "礼县"
+ }, {
+ "code": "621227",
+ "name": "徽县"
+ }, {
+ "code": "621228",
+ "name": "两当县"
+ }]
+ }, {
+ "code": "6229",
+ "name": "临夏回族自治州",
+ "children": [{
+ "code": "622901",
+ "name": "临夏市"
+ }, {
+ "code": "622921",
+ "name": "临夏县"
+ }, {
+ "code": "622922",
+ "name": "康乐县"
+ }, {
+ "code": "622923",
+ "name": "永靖县"
+ }, {
+ "code": "622924",
+ "name": "广河县"
+ }, {
+ "code": "622925",
+ "name": "和政县"
+ }, {
+ "code": "622926",
+ "name": "东乡族自治县"
+ }, {
+ "code": "622927",
+ "name": "积石山保安族东乡族撒拉族自治县"
+ }]
+ }, {
+ "code": "6230",
+ "name": "甘南藏族自治州",
+ "children": [{
+ "code": "623001",
+ "name": "合作市"
+ }, {
+ "code": "623021",
+ "name": "临潭县"
+ }, {
+ "code": "623022",
+ "name": "卓尼县"
+ }, {
+ "code": "623023",
+ "name": "舟曲县"
+ }, {
+ "code": "623024",
+ "name": "迭部县"
+ }, {
+ "code": "623025",
+ "name": "玛曲县"
+ }, {
+ "code": "623026",
+ "name": "碌曲县"
+ }, {
+ "code": "623027",
+ "name": "夏河县"
+ }]
+ }]
+}, {
+ "code": "63",
+ "name": "青海省",
+ "children": [{
+ "code": "6301",
+ "name": "西宁市",
+ "children": [{
+ "code": "630102",
+ "name": "城东区"
+ }, {
+ "code": "630103",
+ "name": "城中区"
+ }, {
+ "code": "630104",
+ "name": "城西区"
+ }, {
+ "code": "630105",
+ "name": "城北区"
+ }, {
+ "code": "630106",
+ "name": "湟中区"
+ }, {
+ "code": "630121",
+ "name": "大通回族土族自治县"
+ }, {
+ "code": "630123",
+ "name": "湟源县"
+ }]
+ }, {
+ "code": "6302",
+ "name": "海东市",
+ "children": [{
+ "code": "630202",
+ "name": "乐都区"
+ }, {
+ "code": "630203",
+ "name": "平安区"
+ }, {
+ "code": "630222",
+ "name": "民和回族土族自治县"
+ }, {
+ "code": "630223",
+ "name": "互助土族自治县"
+ }, {
+ "code": "630224",
+ "name": "化隆回族自治县"
+ }, {
+ "code": "630225",
+ "name": "循化撒拉族自治县"
+ }]
+ }, {
+ "code": "6322",
+ "name": "海北藏族自治州",
+ "children": [{
+ "code": "632221",
+ "name": "门源回族自治县"
+ }, {
+ "code": "632222",
+ "name": "祁连县"
+ }, {
+ "code": "632223",
+ "name": "海晏县"
+ }, {
+ "code": "632224",
+ "name": "刚察县"
+ }]
+ }, {
+ "code": "6323",
+ "name": "黄南藏族自治州",
+ "children": [{
+ "code": "632301",
+ "name": "同仁市"
+ }, {
+ "code": "632322",
+ "name": "尖扎县"
+ }, {
+ "code": "632323",
+ "name": "泽库县"
+ }, {
+ "code": "632324",
+ "name": "河南蒙古族自治县"
+ }]
+ }, {
+ "code": "6325",
+ "name": "海南藏族自治州",
+ "children": [{
+ "code": "632521",
+ "name": "共和县"
+ }, {
+ "code": "632522",
+ "name": "同德县"
+ }, {
+ "code": "632523",
+ "name": "贵德县"
+ }, {
+ "code": "632524",
+ "name": "兴海县"
+ }, {
+ "code": "632525",
+ "name": "贵南县"
+ }]
+ }, {
+ "code": "6326",
+ "name": "果洛藏族自治州",
+ "children": [{
+ "code": "632621",
+ "name": "玛沁县"
+ }, {
+ "code": "632622",
+ "name": "班玛县"
+ }, {
+ "code": "632623",
+ "name": "甘德县"
+ }, {
+ "code": "632624",
+ "name": "达日县"
+ }, {
+ "code": "632625",
+ "name": "久治县"
+ }, {
+ "code": "632626",
+ "name": "玛多县"
+ }]
+ }, {
+ "code": "6327",
+ "name": "玉树藏族自治州",
+ "children": [{
+ "code": "632701",
+ "name": "玉树市"
+ }, {
+ "code": "632722",
+ "name": "杂多县"
+ }, {
+ "code": "632723",
+ "name": "称多县"
+ }, {
+ "code": "632724",
+ "name": "治多县"
+ }, {
+ "code": "632725",
+ "name": "囊谦县"
+ }, {
+ "code": "632726",
+ "name": "曲麻莱县"
+ }]
+ }, {
+ "code": "6328",
+ "name": "海西蒙古族藏族自治州",
+ "children": [{
+ "code": "632801",
+ "name": "格尔木市"
+ }, {
+ "code": "632802",
+ "name": "德令哈市"
+ }, {
+ "code": "632803",
+ "name": "茫崖市"
+ }, {
+ "code": "632821",
+ "name": "乌兰县"
+ }, {
+ "code": "632822",
+ "name": "都兰县"
+ }, {
+ "code": "632823",
+ "name": "天峻县"
+ }, {
+ "code": "632857",
+ "name": "大柴旦行政委员会"
+ }]
+ }]
+}, {
+ "code": "64",
+ "name": "宁夏回族自治区",
+ "children": [{
+ "code": "6401",
+ "name": "银川市",
+ "children": [{
+ "code": "640104",
+ "name": "兴庆区"
+ }, {
+ "code": "640105",
+ "name": "西夏区"
+ }, {
+ "code": "640106",
+ "name": "金凤区"
+ }, {
+ "code": "640121",
+ "name": "永宁县"
+ }, {
+ "code": "640122",
+ "name": "贺兰县"
+ }, {
+ "code": "640181",
+ "name": "灵武市"
+ }]
+ }, {
+ "code": "6402",
+ "name": "石嘴山市",
+ "children": [{
+ "code": "640202",
+ "name": "大武口区"
+ }, {
+ "code": "640205",
+ "name": "惠农区"
+ }, {
+ "code": "640221",
+ "name": "平罗县"
+ }]
+ }, {
+ "code": "6403",
+ "name": "吴忠市",
+ "children": [{
+ "code": "640302",
+ "name": "利通区"
+ }, {
+ "code": "640303",
+ "name": "红寺堡区"
+ }, {
+ "code": "640323",
+ "name": "盐池县"
+ }, {
+ "code": "640324",
+ "name": "同心县"
+ }, {
+ "code": "640381",
+ "name": "青铜峡市"
+ }]
+ }, {
+ "code": "6404",
+ "name": "固原市",
+ "children": [{
+ "code": "640402",
+ "name": "原州区"
+ }, {
+ "code": "640422",
+ "name": "西吉县"
+ }, {
+ "code": "640423",
+ "name": "隆德县"
+ }, {
+ "code": "640424",
+ "name": "泾源县"
+ }, {
+ "code": "640425",
+ "name": "彭阳县"
+ }]
+ }, {
+ "code": "6405",
+ "name": "中卫市",
+ "children": [{
+ "code": "640502",
+ "name": "沙坡头区"
+ }, {
+ "code": "640521",
+ "name": "中宁县"
+ }, {
+ "code": "640522",
+ "name": "海原县"
+ }]
+ }]
+}, {
+ "code": "65",
+ "name": "新疆维吾尔自治区",
+ "children": [{
+ "code": "6501",
+ "name": "乌鲁木齐市",
+ "children": [{
+ "code": "650102",
+ "name": "天山区"
+ }, {
+ "code": "650103",
+ "name": "沙依巴克区"
+ }, {
+ "code": "650104",
+ "name": "新市区"
+ }, {
+ "code": "650105",
+ "name": "水磨沟区"
+ }, {
+ "code": "650106",
+ "name": "头屯河区"
+ }, {
+ "code": "650107",
+ "name": "达坂城区"
+ }, {
+ "code": "650109",
+ "name": "米东区"
+ }, {
+ "code": "650121",
+ "name": "乌鲁木齐县"
+ }]
+ }, {
+ "code": "6502",
+ "name": "克拉玛依市",
+ "children": [{
+ "code": "650202",
+ "name": "独山子区"
+ }, {
+ "code": "650203",
+ "name": "克拉玛依区"
+ }, {
+ "code": "650204",
+ "name": "白碱滩区"
+ }, {
+ "code": "650205",
+ "name": "乌尔禾区"
+ }]
+ }, {
+ "code": "6504",
+ "name": "吐鲁番市",
+ "children": [{
+ "code": "650402",
+ "name": "高昌区"
+ }, {
+ "code": "650421",
+ "name": "鄯善县"
+ }, {
+ "code": "650422",
+ "name": "托克逊县"
+ }]
+ }, {
+ "code": "6505",
+ "name": "哈密市",
+ "children": [{
+ "code": "650502",
+ "name": "伊州区"
+ }, {
+ "code": "650521",
+ "name": "巴里坤哈萨克自治县"
+ }, {
+ "code": "650522",
+ "name": "伊吾县"
+ }]
+ }, {
+ "code": "6523",
+ "name": "昌吉回族自治州",
+ "children": [{
+ "code": "652301",
+ "name": "昌吉市"
+ }, {
+ "code": "652302",
+ "name": "阜康市"
+ }, {
+ "code": "652323",
+ "name": "呼图壁县"
+ }, {
+ "code": "652324",
+ "name": "玛纳斯县"
+ }, {
+ "code": "652325",
+ "name": "奇台县"
+ }, {
+ "code": "652327",
+ "name": "吉木萨尔县"
+ }, {
+ "code": "652328",
+ "name": "木垒哈萨克自治县"
+ }]
+ }, {
+ "code": "6527",
+ "name": "博尔塔拉蒙古自治州",
+ "children": [{
+ "code": "652701",
+ "name": "博乐市"
+ }, {
+ "code": "652702",
+ "name": "阿拉山口市"
+ }, {
+ "code": "652722",
+ "name": "精河县"
+ }, {
+ "code": "652723",
+ "name": "温泉县"
+ }]
+ }, {
+ "code": "6528",
+ "name": "巴音郭楞蒙古自治州",
+ "children": [{
+ "code": "652801",
+ "name": "库尔勒市"
+ }, {
+ "code": "652822",
+ "name": "轮台县"
+ }, {
+ "code": "652823",
+ "name": "尉犁县"
+ }, {
+ "code": "652824",
+ "name": "若羌县"
+ }, {
+ "code": "652825",
+ "name": "且末县"
+ }, {
+ "code": "652826",
+ "name": "焉耆回族自治县"
+ }, {
+ "code": "652827",
+ "name": "和静县"
+ }, {
+ "code": "652828",
+ "name": "和硕县"
+ }, {
+ "code": "652829",
+ "name": "博湖县"
+ }]
+ }, {
+ "code": "6529",
+ "name": "阿克苏地区",
+ "children": [{
+ "code": "652901",
+ "name": "阿克苏市"
+ }, {
+ "code": "652902",
+ "name": "库车市"
+ }, {
+ "code": "652922",
+ "name": "温宿县"
+ }, {
+ "code": "652924",
+ "name": "沙雅县"
+ }, {
+ "code": "652925",
+ "name": "新和县"
+ }, {
+ "code": "652926",
+ "name": "拜城县"
+ }, {
+ "code": "652927",
+ "name": "乌什县"
+ }, {
+ "code": "652928",
+ "name": "阿瓦提县"
+ }, {
+ "code": "652929",
+ "name": "柯坪县"
+ }]
+ }, {
+ "code": "6530",
+ "name": "克孜勒苏柯尔克孜自治州",
+ "children": [{
+ "code": "653001",
+ "name": "阿图什市"
+ }, {
+ "code": "653022",
+ "name": "阿克陶县"
+ }, {
+ "code": "653023",
+ "name": "阿合奇县"
+ }, {
+ "code": "653024",
+ "name": "乌恰县"
+ }]
+ }, {
+ "code": "6531",
+ "name": "喀什地区",
+ "children": [{
+ "code": "653101",
+ "name": "喀什市"
+ }, {
+ "code": "653121",
+ "name": "疏附县"
+ }, {
+ "code": "653122",
+ "name": "疏勒县"
+ }, {
+ "code": "653123",
+ "name": "英吉沙县"
+ }, {
+ "code": "653124",
+ "name": "泽普县"
+ }, {
+ "code": "653125",
+ "name": "莎车县"
+ }, {
+ "code": "653126",
+ "name": "叶城县"
+ }, {
+ "code": "653127",
+ "name": "麦盖提县"
+ }, {
+ "code": "653128",
+ "name": "岳普湖县"
+ }, {
+ "code": "653129",
+ "name": "伽师县"
+ }, {
+ "code": "653130",
+ "name": "巴楚县"
+ }, {
+ "code": "653131",
+ "name": "塔什库尔干塔吉克自治县"
+ }]
+ }, {
+ "code": "6532",
+ "name": "和田地区",
+ "children": [{
+ "code": "653201",
+ "name": "和田市"
+ }, {
+ "code": "653221",
+ "name": "和田县"
+ }, {
+ "code": "653222",
+ "name": "墨玉县"
+ }, {
+ "code": "653223",
+ "name": "皮山县"
+ }, {
+ "code": "653224",
+ "name": "洛浦县"
+ }, {
+ "code": "653225",
+ "name": "策勒县"
+ }, {
+ "code": "653226",
+ "name": "于田县"
+ }, {
+ "code": "653227",
+ "name": "民丰县"
+ }]
+ }, {
+ "code": "6540",
+ "name": "伊犁哈萨克自治州",
+ "children": [{
+ "code": "654002",
+ "name": "伊宁市"
+ }, {
+ "code": "654003",
+ "name": "奎屯市"
+ }, {
+ "code": "654004",
+ "name": "霍尔果斯市"
+ }, {
+ "code": "654021",
+ "name": "伊宁县"
+ }, {
+ "code": "654022",
+ "name": "察布查尔锡伯自治县"
+ }, {
+ "code": "654023",
+ "name": "霍城县"
+ }, {
+ "code": "654024",
+ "name": "巩留县"
+ }, {
+ "code": "654025",
+ "name": "新源县"
+ }, {
+ "code": "654026",
+ "name": "昭苏县"
+ }, {
+ "code": "654027",
+ "name": "特克斯县"
+ }, {
+ "code": "654028",
+ "name": "尼勒克县"
+ }]
+ }, {
+ "code": "6542",
+ "name": "塔城地区",
+ "children": [{
+ "code": "654201",
+ "name": "塔城市"
+ }, {
+ "code": "654202",
+ "name": "乌苏市"
+ }, {
+ "code": "654203",
+ "name": "沙湾市"
+ }, {
+ "code": "654221",
+ "name": "额敏县"
+ }, {
+ "code": "654224",
+ "name": "托里县"
+ }, {
+ "code": "654225",
+ "name": "裕民县"
+ }, {
+ "code": "654226",
+ "name": "和布克赛尔蒙古自治县"
+ }]
+ }, {
+ "code": "6543",
+ "name": "阿勒泰地区",
+ "children": [{
+ "code": "654301",
+ "name": "阿勒泰市"
+ }, {
+ "code": "654321",
+ "name": "布尔津县"
+ }, {
+ "code": "654322",
+ "name": "富蕴县"
+ }, {
+ "code": "654323",
+ "name": "福海县"
+ }, {
+ "code": "654324",
+ "name": "哈巴河县"
+ }, {
+ "code": "654325",
+ "name": "青河县"
+ }, {
+ "code": "654326",
+ "name": "吉木乃县"
+ }]
+ }, {
+ "code": "6590",
+ "name": "自治区直辖县级行政区划",
+ "children": [{
+ "code": "659001",
+ "name": "石河子市"
+ }, {
+ "code": "659002",
+ "name": "阿拉尔市"
+ }, {
+ "code": "659003",
+ "name": "图木舒克市"
+ }, {
+ "code": "659004",
+ "name": "五家渠市"
+ }, {
+ "code": "659005",
+ "name": "北屯市"
+ }, {
+ "code": "659006",
+ "name": "铁门关市"
+ }, {
+ "code": "659007",
+ "name": "双河市"
+ }, {
+ "code": "659008",
+ "name": "可克达拉市"
+ }, {
+ "code": "659009",
+ "name": "昆玉市"
+ }, {
+ "code": "659010",
+ "name": "胡杨河市"
+ }, {
+ "code": "659011",
+ "name": "新星市"
+ }, {
+ "code": "659012",
+ "name": "白杨市"
+ }]
+ }]
+}]
\ No newline at end of file
diff --git a/src/uni_modules/piaoyi-cityPicker/components/piaoyi-cityPicker/piaoyi-cityPicker.vue b/src/uni_modules/piaoyi-cityPicker/components/piaoyi-cityPicker/piaoyi-cityPicker.vue
new file mode 100644
index 0000000..20faead
--- /dev/null
+++ b/src/uni_modules/piaoyi-cityPicker/components/piaoyi-cityPicker/piaoyi-cityPicker.vue
@@ -0,0 +1,281 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/uni_modules/piaoyi-cityPicker/package.json b/src/uni_modules/piaoyi-cityPicker/package.json
new file mode 100644
index 0000000..7165c44
--- /dev/null
+++ b/src/uni_modules/piaoyi-cityPicker/package.json
@@ -0,0 +1,17 @@
+{
+ "id": "piaoyi-cityPicker",
+ "name": " data-cityPicker省市区地址选择器",
+ "displayName": " data-cityPicker省市区地址选择器(兼容vue3)",
+ "version": "1.1.7",
+ "description": "常用省市区选择器,可反选,自定义模态框、兼容vue3",
+ "keywords": [
+ "省市区",
+ "选择器",
+ "可反选",
+ "自定义模态框和弹框",
+ "兼容vue3"
+ ],
+ "dcloudext": {
+ "type": "component-vue"
+ }
+}
\ No newline at end of file
diff --git a/src/uni_modules/piaoyi-cityPicker/readme.md b/src/uni_modules/piaoyi-cityPicker/readme.md
new file mode 100644
index 0000000..445a149
--- /dev/null
+++ b/src/uni_modules/piaoyi-cityPicker/readme.md
@@ -0,0 +1,106 @@
+## 1.0.7(2023-09-15)
+改为uni_modules规范
+### cityPicker 省市区选择器(兼容vue3)
+
+**使用方法:**
+
+```
+
+
+
+
+ {{str}}
+
+
+
+
+
+
+
+```
+
+### 注:近期收到使用用户反馈,存在以下一个问题(如有好的建议,期待私信,谢谢)
+
+1、之前只支持默认值传入地区编码,已更新可以支持传入中文省市区数组
+
+defaultValue可以传入defaultValue:['河北省','唐山市','丰南区']数组类型以及defaultValue: '420103'地区编码字符串类型
+
+可以使用const reg =/([\u4e00-\u9fa5]+省|自治区|[\u4e00-\u9fa5]+市|[\u4e00-\u9fa5]+区)/g;将自己的省市区数据进行处理为数组再传入
+
+2、有些用户反馈vue3下watch监听有问题
+
+我自己创建一个vue项目,导入插件后,按照示例原封不动进行测试,没有发现问题; 发现有问题的朋友可以提供一下可以复现的demo给我,我这边看看具体什么情况
+
+3、有些用户返回无法关闭弹框
+
+不要把插件放到scroll-view里面,请务必放到最外层进行使用
+
+#### 事件说明
+
+| 事件名 | 返回值 | 描述 |
+| :---------: | :----: | :------------: |
+| @confirm | 对象(code,完整地区名称) | 点击确定的回调 |
+| @cancel | 无 | 点击取消的回调 |
+
+#### Prop
+
+| 参数名称 | 描述 |
+| -------- | ------------------------------ |
+| visible | 控制选择器显示和隐藏 |
+| column | 可选值2和3,2是省市两列选择;3是省市区三列选择 |
+| maskCloseAble | 点击模态框是否关闭弹框 |
+| defaultValue | 初始地区编码(例:420102或者['河北省','唐山市','丰南区']) |
+
+### 数据来源:[点击查看省市区数据来源](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pca-code.json)
+### 可接定制化组件开发
+### 右侧有本人代表作小程序二维码,可以扫码体验
+### 如使用过程中有问题或有一些好的建议,欢迎加QQ群互相学习交流:120594820
\ No newline at end of file
diff --git a/src/utils/auth.ts b/src/utils/auth.ts
new file mode 100644
index 0000000..7118c40
--- /dev/null
+++ b/src/utils/auth.ts
@@ -0,0 +1,18 @@
+import { useLogin } from '@/hooks/useLogin'
+import { getToken } from '@/utils/common'
+import { getNeedLoginPages } from '@/utils/pages'
+
+const loginBack = useLogin()
+
+/**
+ * 检测是否需要登录
+ */
+export function checkNeedLogin(route: AnyObject){
+ const pages = getNeedLoginPages()
+
+ if (pages.includes(route.path) && !getToken()) {
+ setTimeout(() => {
+ loginBack.setLoginBack({ url: route.path, param: route.query || {} })
+ }, 100)
+ }
+}
diff --git a/src/utils/common.ts b/src/utils/common.ts
new file mode 100644
index 0000000..a72c79d
--- /dev/null
+++ b/src/utils/common.ts
@@ -0,0 +1,548 @@
+import { getTabbarPages } from './pages'
+import useDiyStore from '@/app/stores/diy'
+import useMemberStore from '@/stores/member'
+import useSystemStore from '@/stores/system'
+
+/**
+* 跳转页面
+*/
+export const redirect = (redirect: redirectOptions) => {
+ // 装修模式禁止跳转
+ if (useDiyStore().mode == 'decorate') return
+
+ let { url, mode, param, success, fail, complete } = redirect
+ mode = mode || 'navigateTo'
+ const tabBar = getTabbarPages()
+ tabBar.includes(url) && (mode = 'switchTab')
+
+ mode != 'switchTab' && param && Object.keys(param).length && (url += uni.$u.queryParams(param))
+
+ switch (mode) {
+ case 'switchTab':
+ uni.switchTab({
+ url,
+ success: () => { success && success() },
+ fail: () => { fail && fail() },
+ complete: () => { complete && complete() }
+ })
+ break;
+ case 'navigateTo':
+ uni.navigateTo({
+ url,
+ success: () => { success && success() },
+ fail: () => { fail && fail() },
+ complete: () => { complete && complete() }
+ })
+ break;
+ case 'reLaunch':
+ uni.reLaunch({
+ url,
+ success: () => { success && success() },
+ fail: () => { fail && fail() },
+ complete: () => { complete && complete() }
+ })
+ break;
+ case 'redirectTo':
+ uni.redirectTo({
+ url,
+ success: () => { success && success() },
+ fail: () => { fail && fail() },
+ complete: () => { complete && complete() }
+ })
+ break;
+ }
+}
+
+/**
+* 自定义跳转链接
+* @param {Object} link
+*/
+export const diyRedirect = (link: any) => {
+ const diyStore = useDiyStore();
+ // 装修模式禁止跳转
+ if (diyStore.mode == 'decorate') return;
+
+ if (link == null || Object.keys(link).length == 1) return;
+
+ // 外部链接
+ if (link.url && (link.url.indexOf('https') != -1 || link.url.indexOf('http') != -1)) {
+
+ // #ifdef H5
+ window.location.href = link.url;
+ // #endif
+
+ // #ifdef MP
+ redirect({
+ url: '/app/pages/webview/index',
+ param: { src: encodeURIComponent(link.url) }
+ });
+ // #endif
+ } else if (link.appid) {
+ // 跳转其他小程序
+
+ // #ifdef MP
+ uni.navigateToMiniProgram({
+ appId: link.appid,
+ path: link.page
+ })
+ // #endif
+ } else if (link.name == 'DIY_MAKE_PHONE_CALL' && link.mobile) {
+ // 拨打电话
+
+ uni.makePhoneCall({
+ phoneNumber: link.mobile,
+ success: (res) => { },
+ fail: (res) => { }
+ });
+
+ } else {
+ redirect({ url: link.url });
+ }
+}
+
+/**
+* 获取当前路由
+*/
+export const currRoute = () => {
+ const pages = getCurrentPages()
+ const route = pages[pages.length - 1]
+ return route ? route.route : ''
+}
+
+// 获取分享路由
+export const currShareRoute = () => {
+ const pages = getCurrentPages()
+ if (pages.length == 0) {
+ return {
+ path: '/',
+ params: {}
+ }
+ }
+ let currentRoute = pages[pages.length - 1].route //获取当前页面路由
+
+ // #ifdef H5
+ let currentParam = pages[pages.length - 1].$page.options; //获取路由参数
+ // #endif
+
+ // #ifdef MP
+ let currentParam = pages[pages.length - 1].options || {}; //获取路由参数
+ // #endif
+
+ // 拼接参数
+ let params = {};
+ for (let key in currentParam) {
+ params[key] = currentParam[key]
+ }
+ let currentPath = '/' + currentRoute;
+
+ return {
+ path: currentPath,
+ params: params
+ }
+}
+
+/**
+* 获取token
+* @returns
+*/
+export function getToken(): null | string {
+ return useMemberStore().token
+}
+
+/**
+* 设置token
+* @param token
+* @returns
+*/
+export function setToken(token: string): void {
+ uni.setStorageSync(import.meta.env.VITE_REQUEST_STORAGE_TOKEN_KEY, token)
+}
+
+/**
+* 移除token
+* @returns
+*/
+export function removeToken(): void {
+ uni.removeStorageSync(import.meta.env.VITE_REQUEST_STORAGE_TOKEN_KEY)
+}
+
+/**
+* 将url 解构为 { path: ***, query: {} }
+*/
+export function urlDeconstruction(url: string) {
+ const query = {}
+ const [path, param] = url.split('?')
+
+ param && param.split('&').forEach((str: string) => {
+ let [name, value] = str.split('=')
+ query[name] = value
+ })
+
+ return { path, query }
+}
+
+/**
+* 判断是否是url
+* @param str
+* @returns
+*/
+export function isUrl(str: string): boolean {
+ return str && (str.indexOf('http://') != -1 || str.indexOf('https://') != -1) || false
+}
+
+/**
+* 图片输出
+* @param path
+* @returns
+*/
+export function img(path: string): string {
+ // #ifdef H5
+ return isUrl(path) ? path : `${import.meta.env.VITE_IMG_DOMAIN || location.origin}/${path}`
+ // #endif
+
+ // #ifndef H5
+ return isUrl(path) ? path : `${import.meta.env.VITE_IMG_DOMAIN}/${path}`
+ // #endif
+}
+
+/**
+ * 手机号隐藏
+ */
+export function mobileHide(mobile: string) {
+ return mobile.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
+}
+
+/**
+* 判断是否是微信浏览器
+*/
+export function isWeixinBrowser(): boolean {
+ // #ifndef H5
+ return false
+ // #endif
+ let ua = navigator.userAgent.toLowerCase()
+ return /micromessenger/.test(ua) ? true : false
+}
+
+/**
+* 获取应用场景值
+*/
+export function getAppChannel(): string {
+ // #ifdef APP-PLUS
+ return 'app'
+ // #endif
+ // #ifdef MP-WEIXIN
+ return 'weapp'
+ // #endif
+ // #ifdef H5
+ return isWeixinBrowser() ? 'wechat' : 'h5'
+ // #endif
+}
+
+/**
+* 金额格式化
+*/
+export function moneyFormat(money: string): string {
+ return isNaN(parseFloat(money)) ? money : parseFloat(money).toFixed(2)
+}
+
+/**
+ * 手机号隐藏
+ */
+export function mobileConceal(mobile: string): string {
+ return mobile.substring(0, 3) + "****" + mobile.substr(mobile.length - 4);
+}
+
+export function hideIDCard(idCard: string | number) {
+ // 检查身份证号是否是有效的字符串,且长度为 18 个字符(或 15 个字符)
+ if (typeof idCard !== 'string' || (idCard.length !== 18 && idCard.length !== 15)) {
+ throw new Error('无效的身份证号');
+ }
+
+ // 对于 18 位身份证号,将前 3 位和后 4 位显示,其余用 * 替换
+ if (idCard.length === 18) {
+ return idCard.slice(0, 3) + '**********' + idCard.slice(-4);
+ }
+
+ // 对于 15 位身份证号,将前 3 位和后 3 位显示,其余用 * 替换
+ if (idCard.length === 15) {
+ return idCard.slice(0, 3) + '*********' + idCard.slice(-3);
+ }
+}
+
+
+/**
+ * 获取站点id
+ */
+export function getSiteId(siteId: number | string) {
+ // #ifdef H5
+ const match = location.href.match(/\/wap\/(\d*)\//);
+ match && (siteId = match[1])
+ // #endif
+
+ // #ifdef MP-WEIXIN
+ if (uni.getExtConfigSync) {
+ const extConfig = uni.getExtConfigSync()
+ extConfig.site_id && (siteId = extConfig.site_id)
+ }
+ // #endif
+
+ return siteId
+}
+
+/**
+ * 时间戳转日期格式
+ * @param {Object} timeStamp
+ */
+export function timeStampTurnTime(timeStamp, type = "") {
+ if (timeStamp != undefined && timeStamp != "" && timeStamp > 0) {
+ var date = new Date();
+ date.setTime(timeStamp * 1000);
+ var y = date.getFullYear();
+ var m = date.getMonth() + 1;
+ m = m < 10 ? ('0' + m) : m;
+ var d = date.getDate();
+ d = d < 10 ? ('0' + d) : d;
+ var h = date.getHours();
+ h = h < 10 ? ('0' + h) : h;
+ var minute = date.getMinutes();
+ var second = date.getSeconds();
+ minute = minute < 10 ? ('0' + minute) : minute;
+ second = second < 10 ? ('0' + second) : second;
+ if (type) {
+ if (type == 'yearMonthDay') {
+ return y + '年' + m + '月' + d + '日';
+ }
+ return y + '-' + m + '-' + d;
+ } else {
+ return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
+ }
+
+ } else {
+ return "";
+ }
+}
+
+/**
+ * 复制
+ * @param {Object} value
+ * @param {Object} callback
+ */
+export function copy(value, callback) {
+ // #ifdef H5
+ var oInput = document.createElement('input'); //创建一个隐藏input(重要!)
+ oInput.value = value; //赋值
+ oInput.setAttribute("readonly", "readonly");
+ document.body.appendChild(oInput);
+ oInput.select(); // 选择对象
+ document.execCommand("Copy"); // 执行浏览器复制命令
+ oInput.className = 'oInput';
+ oInput.style.display = 'none';
+ uni.hideKeyboard();
+ uni.showToast({
+ title: '复制成功',
+ icon: 'none'
+ });
+
+ typeof callback == 'function' && callback();
+ // #endif
+
+ // #ifdef MP || APP-PLUS
+ uni.setClipboardData({
+ data: value,
+ success: () => {
+ typeof callback == 'function' && callback();
+ },
+ fail: (res) => {
+ // 在隐私协议中没有声明chooseLocation:fail api作用域
+ if (res.errMsg && res.errno) {
+ if (res.errno == 104) {
+ let msg = '用户未授权隐私权限,设置剪贴板数据失败';
+ uni.showToast({ title: msg, icon: 'none' })
+ } else if (res.errno == 112) {
+ let msg = '隐私协议中未声明,设置剪贴板数据失败';
+ uni.showToast({ title: msg, icon: 'none' })
+ } else {
+ uni.showToast({ title: res.errMsg, icon: 'none' })
+ }
+ }
+ }
+ });
+ // #endif
+}
+
+/**
+ * 处理onLoad传递的参数
+ * @param option
+ */
+export function handleOnloadParams(option: any) {
+ let params: any = {};
+
+ // 处理小程序扫码进入的场景值参数
+ if (option.scene) {
+ var sceneParams = decodeURIComponent(option.scene).split('&');
+ if (sceneParams.length) {
+ sceneParams.forEach(item => {
+ let arr = item.split('-');
+ params[arr[0]] = arr[1];
+ if (arr[0] == 'mid') {
+ uni.setStorageSync('pid', arr[1])
+ }
+ });
+ }
+ } else {
+ params = option;
+ }
+ return params;
+}
+
+/**
+ * 获取定位信息
+ */
+export function getLocation(param = {}) {
+ uni.getLocation({
+ type: param.type ?? 'gcj02',
+ success: res => {
+ const systemStore = useSystemStore()
+ systemStore.setLocation(res);
+ typeof param.success == 'function' && param.success(res);
+ },
+ fail: res => {
+ typeof param.fail == 'function' && param.fail(res);
+ },
+ complete: res => {
+ typeof param.complete == 'function' && param.complete(res);
+ }
+ });
+}
+
+/**
+ * 定位信息(缓存)
+ */
+export function locationStorage() {
+ let data = uni.getStorageSync('location');
+ let mapConfig = uni.getStorageSync('mapConfig');
+ if (data) {
+ var date = new Date();
+ if (mapConfig.valid_time > 0) {
+ data.is_expired = (date.getTime() / 1000) > data.valid_time; // 是否过期
+ } else {
+ data.is_expired = false;
+ }
+ }
+ return data;
+}
+
+/**
+ * @description 深度克隆
+ * @param {object} obj 需要深度克隆的对象
+ * @returns {*} 克隆后的对象或者原值(不是对象)
+ */
+export function deepClone(obj: object) {
+ // 对常见的“非”值,直接返回原来值
+ if ([null, undefined, NaN, false].includes(obj)) return obj
+ if (typeof obj !== 'object' && typeof obj !== 'function') {
+ // 原始类型直接返回
+ return obj
+ }
+ const o = isArray(obj) ? [] : {}
+ for (const i in obj) {
+ if (obj.hasOwnProperty(i)) {
+ o[i] = typeof obj[i] === 'object' ? deepClone(obj[i]) : obj[i]
+ }
+ }
+ return o
+}
+
+/**
+ * 防抖函数
+ * @param fn
+ * @param delay
+ * @returns
+ */
+export function debounce(fn: (args?: any) => any, delay: number = 300) {
+ let timer: null | number = null
+ return function (...args) {
+ if (timer != null) {
+ clearTimeout(timer)
+ timer = null
+ }
+ timer = setTimeout(() => {
+ fn.call(this, ...args)
+ }, delay);
+ }
+}
+
+/**
+ * 节流函数
+ * @param fn
+ * @param delay
+ * @returns
+ */
+export function throttle(func: (...args: any[]) => void, wait: number) {
+ let lastTime = 0;
+
+ return function (this: any, ...args: any[]) {
+ const now = Date.now();
+ if (now - lastTime >= wait) {
+ lastTime = now;
+ func.apply(this, args);
+ }
+ };
+}
+
+const isArray = (value: any) => {
+ if (typeof Array.isArray === 'function') {
+ return Array.isArray(value)
+ }
+ return Object.prototype.toString.call(value) === '[object Array]'
+}
+
+
+/**
+ * 判断是否为空对象
+ */
+
+export function isEmptyObject(obj: object) {
+ return obj && typeof obj === 'object' && Object.keys(obj).length === 0;
+}
+
+export function haversine(lat1, lon1, lat2, lon2) {
+ // 将纬度和经度从度数转换为弧度
+ const toRad = angle => (Math.PI / 180) * angle;
+ lat1 = toRad(lat1);
+ lon1 = toRad(lon1);
+ lat2 = toRad(lat2);
+ lon2 = toRad(lon2);
+
+ // 差值计算
+ const dLat = lat2 - lat1;
+ const dLon = lon2 - lon1;
+
+ // Haversine 公式
+ const a = Math.sin(dLat / 2) ** 2 + Math.cos(lat1) * Math.cos(lat2) * Math.sin(dLon / 2) ** 2;
+ const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
+
+ // 地球半径(km)
+ const R = 6371.0;
+ const distance = R * c;
+
+ return distance.toFixed(2);
+}
+
+
+export function transformTreeToPickerData(treeData, level = 0, columns = []) {
+ // 如果没有此层的数据,则初始化为空数组
+ if (!columns[level]) columns[level] = [];
+
+ // 遍历当前层级的数据
+ treeData.forEach((node) => {
+ columns[level].push({ ...node });
+
+ // 如果有子节点,递归处理下一层级
+ if (node.children) {
+ transformTreeToPickerData(node.children, level + 1, columns);
+ }
+ });
+
+ return columns;
+}
\ No newline at end of file
diff --git a/src/utils/interceptor.ts b/src/utils/interceptor.ts
new file mode 100644
index 0000000..3f6308c
--- /dev/null
+++ b/src/utils/interceptor.ts
@@ -0,0 +1,127 @@
+import { language } from '@/locale'
+import { checkNeedLogin } from '@/utils/auth'
+import { redirect, getToken, getSiteId, isWeixinBrowser } from '@/utils/common'
+import { memberLog } from '@/app/api/auth'
+import useConfigStore from "@/stores/config";
+import { useShare } from '@/hooks/useShare'
+
+/**
+ * 页面跳转拦截器
+ */
+export const redirectInterceptor = (route: { path: string, query: object }) => {
+ route.path = `/${ route.path }`
+
+ // 检测当前访问的是系统(app)还是插件
+ setAddonName(route.path)
+
+ // 开发模式下,如果未配置站点ID,则跳转到开发环境配置页面
+ // #ifdef H5
+ if (process.env.NODE_ENV == 'development') {
+ if ((getSiteId(import.meta.env.VITE_SITE_ID || uni.getStorageSync('wap_site_id')) === '') && route.path != '/app/pages/index/develop') {
+ redirect({ url: '/app/pages/index/develop', mode: 'reLaunch' })
+ }
+ }
+
+ // #endif
+
+ // #ifdef MP
+ route.path.indexOf('addon') != -1 && language.loadAllLocaleMessages('addon', uni.getLocale())
+ // #endif
+
+ // 校验是否需要登录
+ checkNeedLogin(route)
+
+ loadShare()
+
+ // 添加会员访问日志
+ if (getToken()) memberLog({
+ route: route.path,
+ params: JSON.stringify(route.query),
+ pre_route: getCurrentPages()[0]?.route
+ })
+}
+
+/**
+ * 应用初始化拦截器
+ */
+export const launchInterceptor = () => {
+ const launch = uni.getLaunchOptionsSync()
+ launch.path = `/${ launch.path }`
+
+ // 开发模式下,如果未配置站点ID,则跳转到开发环境配置页面
+ // #ifdef H5
+ if (process.env.NODE_ENV == 'development') {
+ // 后台DIY装修页面时,获取站点ID
+
+ if (location.search.indexOf('site_id=') != -1) {
+ let site_id = location.search.substr(location.search.indexOf('site_id=') + 8);
+ uni.setStorageSync('wap_site_id', site_id);
+ }
+ if (getSiteId(import.meta.env.VITE_SITE_ID || uni.getStorageSync('wap_site_id')) === '') {
+ launch.path = '/app/pages/index/develop';
+ uni.setStorageSync('develop_before_path', launch.path);
+ redirect({ url: '/app/pages/index/develop', mode: 'reLaunch' })
+ }
+ }
+
+ // #endif
+
+ // 检测当前访问的是系统(app)还是插件
+ setAddonName(launch.path);
+
+ // 加载语言包
+ language.loadAllLocaleMessages('app', uni.getLocale())
+
+ // #ifdef H5
+ language.loadAllLocaleMessages('addon', uni.getLocale())
+ // #endif
+
+ // 校验是否需要登录
+ checkNeedLogin(launch)
+
+ // 存储分享会员id
+ if (launch.query && launch.query.mid) {
+ uni.setStorageSync('pid', launch.query.mid)
+ }
+
+ loadShare()
+
+ // 添加会员访问日志
+ if (getToken()) memberLog({ route: launch.path, params: JSON.stringify(launch.query || {}), pre_route: '' })
+}
+
+/**
+ * 检测当前访问的是系统(app)还是插件
+ * 设置插件的底部导航
+ * 设置插件应用的主色调
+ * @param path
+ */
+const setAddonName = async(path: string) => {
+ let pathArr = path.split('/')
+ let route = pathArr[1] == 'addon' ? pathArr[2] : 'app';
+
+ // 设置底部导航
+ const configStore = useConfigStore()
+ if (configStore.addon != route) {
+ configStore.addon = route;
+ }
+
+ // 设置插件应用的主色调,排除系统
+ if (route != 'app') {
+ try {
+ const theme = await import(`../addon/${ route }/utils/theme.json`)
+ configStore.themeColor = theme.default
+ uni.setStorageSync('current_theme_color', JSON.stringify(theme.default));
+ } catch (e) {
+ // 设置插件应用的主色调发生错误,若不存在则使用最后有效的主色调
+ }
+
+ }
+
+}
+
+// 加载分享
+const loadShare = () => {
+ const { setShare } = useShare()
+ setShare()
+}
\ No newline at end of file
diff --git a/src/utils/mixin.ts b/src/utils/mixin.ts
new file mode 100644
index 0000000..79c60fb
--- /dev/null
+++ b/src/utils/mixin.ts
@@ -0,0 +1,50 @@
+import { currRoute } from './common'
+import { redirectInterceptor } from './interceptor'
+import useConfigStore from "@/stores/config";
+import useSystemStore from '@/stores/system'
+import {useShare} from '@/hooks/useShare'
+
+export default {
+ install(vue) {
+ vue.mixin({
+ data() {
+ return {
+ query: {}
+ }
+ },
+ onLoad: (data: object) => {
+ const route = currRoute() ?? ''
+
+ this.query = data
+
+ useSystemStore().$patch((state) => {
+ state.currRoute = route
+ })
+ },
+ onShow: () => {
+ const route = currRoute() ?? ''
+
+ useSystemStore().$patch((state) => {
+ state.currRoute = route
+ })
+
+ redirectInterceptor({
+ path: route,
+ query: this.query
+ })
+ },
+ onShareAppMessage(){
+ useShare().onShareAppMessage()
+ },
+ onShareTimeline(){
+ useShare().onShareTimeline()
+ },
+ methods:{
+ themeColor(){
+ const configStore = useConfigStore()
+ return configStore.getThemeColor();
+ }
+ }
+ });
+ },
+};
diff --git a/src/utils/pages.ts b/src/utils/pages.ts
new file mode 100644
index 0000000..4b82706
--- /dev/null
+++ b/src/utils/pages.ts
@@ -0,0 +1,60 @@
+import pagesJson from '@/pages.json'
+
+/**
+ * 获取需要登录的页面
+ */
+export function getNeedLoginPages() {
+ const pages = []
+ // 获取主包中需要登录的页面
+ pagesJson.pages.forEach(item => {
+ if (item.needLogin) pages.push(`/${item.path}`)
+ })
+ // 获取分包中需要登录的页面
+ if (pagesJson.subPackages) {
+ pagesJson.subPackages.forEach(subPackages => {
+ subPackages.pages.forEach(item => {
+ if (item.needLogin) pages.push(`/${subPackages.root}/${item.path}`)
+ })
+ })
+ }
+ return pages
+}
+
+/**
+ * 获取所有页面
+ */
+export function getAppPages() {
+ const pages = []
+ // 获取主包中需要登录的页面
+ pagesJson.pages.forEach(item => {
+ pages.push(`/${item.path}`)
+ })
+ return pages
+}
+
+export function getSubPackagesPages() {
+ const pages = []
+ // 获取分包中需要登录的页面
+ if (pagesJson.subPackages) {
+ pagesJson.subPackages.forEach(subPackages => {
+ subPackages.pages.forEach(item => {
+ pages.push(`/${subPackages.root}/${item.path}`)
+ })
+ })
+ }
+ return pages
+}
+
+/**
+ * 获取tabbar
+ */
+export function getTabbarPages() {
+ return pagesJson.tabBar.list.map(item => { return `/${item.pagePath}` })
+}
+
+/**
+ * 获取首页路径
+ */
+export function getFirstPage() {
+ return '/' + pagesJson.pages[0].path
+}
diff --git a/src/utils/request.ts b/src/utils/request.ts
new file mode 100644
index 0000000..c29b624
--- /dev/null
+++ b/src/utils/request.ts
@@ -0,0 +1,196 @@
+import useMemberStore from '@/stores/member'
+import { t } from '@/locale'
+import {getToken, getAppChannel, getSiteId, redirect} from './common'
+import qs from 'qs'
+
+interface RequestConfig {
+ showErrorMessage ?: boolean
+ showSuccessMessage ?: boolean
+}
+
+interface RequestOptions extends UniNamespace.RequestOptions, RequestOptions { }
+
+class Request {
+ private baseUrl : string
+
+ private config : RequestOptions = {
+ url: '',
+ header: {}
+ }
+
+ constructor() {
+ // #ifdef H5
+ this.baseUrl = import.meta.env.VITE_APP_BASE_URL || `${location.origin}/api/`
+ // #endif
+ // #ifndef H5
+ this.baseUrl = import.meta.env.VITE_APP_BASE_URL
+ // #endif
+ this.baseUrl.substr(-1) != '/' && (this.baseUrl += '/')
+
+ try {
+ if (process.env.NODE_ENV == 'development') {
+ this.config.header[import.meta.env.VITE_REQUEST_HEADER_SITEID_KEY] = getSiteId(import.meta.env.VITE_SITE_ID || uni.getStorageSync('wap_site_id'))
+ } else {
+ this.config.header[import.meta.env.VITE_REQUEST_HEADER_SITEID_KEY] = getSiteId(import.meta.env.VITE_SITE_ID)
+ }
+ this.config.header[import.meta.env.VITE_REQUEST_HEADER_CHANNEL_KEY] = getAppChannel()
+ } catch (e) {
+ }
+
+ }
+
+ /**
+ * 请求拦截器
+ */
+ private requestInterceptors() {
+ // 携带token site-id
+ try {
+ getToken() && (this.config.header[import.meta.env.VITE_REQUEST_HEADER_TOKEN_KEY] = getToken())
+ this.config.header[import.meta.env.VITE_REQUEST_HEADER_CHANNEL_KEY] = getAppChannel()
+ if (process.env.NODE_ENV == 'development') {
+ this.config.header[import.meta.env.VITE_REQUEST_HEADER_SITEID_KEY] = getSiteId(import.meta.env.VITE_SITE_ID || uni.getStorageSync('wap_site_id'))
+ } else {
+ this.config.header[import.meta.env.VITE_REQUEST_HEADER_SITEID_KEY] = getSiteId(import.meta.env.VITE_SITE_ID)
+ }
+ } catch (e) {
+ }
+ }
+
+ public get(url : string, data : AnyObject = {}, config : RequestConfig = {}) {
+ return this.request('GET', url, data, config)
+ }
+
+ public post(url : string, data : AnyObject = {}, config : RequestConfig = {}) {
+ return this.request('POST', url, data, config)
+ }
+
+ public put(url : string, data : AnyObject = {}, config : RequestConfig = {}) {
+ return this.request('PUT', url, data, config)
+ }
+
+ public delete(url : string, config : RequestConfig = {}) {
+ return this.request('DELETE', url, {}, config)
+ }
+
+ /**
+ * 发送上传请求
+ */
+ public upload(url : string, data : AnyObject = {}, config : RequestConfig = {}) {
+ this.requestInterceptors()
+
+ const params = Object.assign(uni.$u.deepClone(this.config), config, {
+ url: this.baseUrl + url,
+ ...data
+ })
+
+ return new Promise((resolve, reject) => {
+ uni.uploadFile({
+ ...params,
+ success: res => {
+ const data = JSON.parse(res.data)
+ if (data.code == 1) {
+ this.config.showSuccessMessage && uni.showToast({ title: data.msg, icon: 'none' })
+ resolve(data)
+ } else {
+ if (data.code == 0 || data.code == 400) {
+ if (this.config.showErrorMessage !== false) uni.showToast({ title: data.msg, icon: 'none' })
+ } else {
+ this.handleAuthError(data.code)
+ }
+ reject(data)
+ }
+ },
+ fail: res => {
+ reject(res)
+ }
+ })
+ })
+ }
+
+ /**
+ * 发送请求
+ */
+ private request(method : string, url : string, data ?: AnyObject, config : RequestConfig = {}) {
+ this.requestInterceptors()
+
+ const params = Object.assign(uni.$u.deepClone(this.config), config,{
+ url: this.baseUrl + url,
+ method
+ })
+
+ if (params.method.toUpperCase() == 'GET') {
+ params.url += '?' + qs.stringify(data);
+ } else {
+ params.data = data;
+ }
+
+ return new Promise((resolve, reject) => {
+ uni.request({
+ ...params,
+ success: res => {
+ const data = res.data
+ if (data.code == 1) {
+ config.showSuccessMessage && uni.showToast({ title: data.msg, icon: 'none' })
+ resolve(data)
+ } else {
+ if (data.code == 0 || data.code == 400) {
+ if (config.showErrorMessage !== false) uni.showToast({ title: data.msg, icon: 'none' })
+ } else {
+ this.handleAuthError(data.code)
+ }
+ reject(data)
+ }
+ },
+ fail: res => {
+ reject(res)
+ },
+ complete: (res) => {
+ this.handleRequestFail(res)
+ }
+ })
+ })
+ }
+
+ private handleAuthError(code : number) {
+ switch (code) {
+ case 401:
+ // useMemberStore().logout()
+ uni.showToast({ title:'请登录~',icon:'none',mask:true })
+ setTimeout(() => {
+ uni.navigateTo({ url:'/app/pages/auth/login' })
+ }, 1500);
+ break;
+ case 402:
+ redirect({url: '/app/pages/index/close', mode: 'reLaunch'})
+ break;
+ case 403:
+ redirect({url: '/app/pages/index/nosite', mode: 'reLaunch'})
+ break;
+ }
+ }
+
+ private handleRequestFail(res) {
+ if (res.errMsg && res.errMsg == "request:ok") {
+ if (typeof res.data == 'string') {
+ // #ifdef H5
+ const err = (isUrl(this.baseUrl) ? this.baseUrl : location.origin + this.baseUrl) + t('baseUrlError')
+ // #endif
+ // #ifndef H5
+ const err = this.baseUrl + t('baseUrlError')
+ // #endif
+ uni.showToast({icon: 'none', title: err })
+ return
+ }
+ }
+ if (res.errMsg == 'request:fail') {
+ uni.showToast({ icon: 'none', title: this.baseUrl + t('requestFail') })
+ return
+ }
+ if (res.errMsg && res.errMsg == 'request:fail url not in domain list') {
+ uni.showToast({ icon: 'none', title: this.baseUrl + t('notInDomainList') });
+ return
+ }
+ }
+}
+
+export default new Request()
diff --git a/src/utils/storage.ts b/src/utils/storage.ts
new file mode 100644
index 0000000..5883789
--- /dev/null
+++ b/src/utils/storage.ts
@@ -0,0 +1,43 @@
+import { getSiteId } from './common'
+
+const handleKey = (key: string) : string => {
+ const siteid = getSiteId(0)
+ const storageKey = (siteid ? `site${siteid}.` : '') + key
+ return storageKey
+}
+
+export function uniStorage(){
+ const setStorageSync = uni.setStorageSync
+ const setStorage = uni.setStorage
+ const getStorage = uni.getStorage
+ const getStorageSync = uni.getStorageSync
+ const removeStorage = uni.removeStorage
+ const removeStorageSync = uni.removeStorageSync
+
+ uni.setStorage = (options: UniNamespace.SetStorageOptions)=> {
+ options.key = handleKey(options.key)
+ setStorage(options)
+ }
+
+ uni.setStorageSync = (key: string, data: any) => {
+ setStorageSync(handleKey(key), data)
+ }
+
+ uni.getStorage = (options: UniNamespace.GetStorageOptions) => {
+ options.key = handleKey(options.key)
+ getStorage(options)
+ }
+
+ uni.getStorageSync = (key: string) => {
+ return getStorageSync(handleKey(key))
+ }
+
+ uni.removeStorage = (options: UniNamespace.RemoveStorageOptions) => {
+ options.key = handleKey(options.key)
+ removeStorage(options)
+ }
+
+ uni.removeStorageSync = (key: string) => {
+ return removeStorageSync(handleKey(key))
+ }
+}
\ No newline at end of file
diff --git a/src/utils/wechat.ts b/src/utils/wechat.ts
new file mode 100644
index 0000000..c483737
--- /dev/null
+++ b/src/utils/wechat.ts
@@ -0,0 +1,68 @@
+// #ifdef H5
+import wx from 'weixin-js-sdk'
+// #endif
+import { getWechatSkdConfig } from '@/app/api/system'
+import { isWeixinBrowser } from '@/utils/common'
+
+class Wechat {
+ constructor() {
+ // #ifdef H5
+ // isWeixinBrowser() && this.init()
+ // #endif
+ }
+
+ public init() {
+ getWechatSkdConfig({
+ url: uni.getSystemInfoSync().platform == 'ios' ? uni.getStorageSync('initUrl') : location.href
+ }).then((res : responseResult) => {
+ const { data } = res
+ wx.config({
+ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+ appId: data.appId, // 必填,公众号的唯一标识
+ timestamp: data.timestamp, // 必填,生成签名的时间戳
+ nonceStr: data.nonceStr, // 必填,生成签名的随机串
+ signature: data.signature,// 必填,签名
+ jsApiList: ['chooseWXPay', 'updateAppMessageShareData', 'updateTimelineShareData', 'scanQRCode'] // 必填,需要使用的JS接口列表
+ });
+ })
+ }
+
+ /**
+ * 发起支付
+ */
+ public pay(options : WeixinJsSdk.ChooseWXPayOptions) {
+ wx.ready(() => {
+ wx.chooseWXPay(options)
+ })
+ }
+
+ /**
+ * 分享设置
+ */
+ public share(options : WeixinJsSdk.OnMenuShareAppMessageOptions) {
+ wx.ready(() => {
+ // 分享给朋友
+ wx.updateAppMessageShareData(options)
+ // 分享到朋友圈
+ wx.updateTimelineShareData(options)
+ })
+ }
+
+ /**
+ * 扫一扫
+ * @param {Object} callback
+ */
+ public scanQRCode(callback:AnyFunction){
+ wx.ready(()=> {
+ wx.scanQRCode({
+ needResult: 1,
+ scanType: ["qrCode"],
+ success: function (res) {
+ typeof callback == 'function' && callback(res);
+ }
+ });
+ })
+ }
+}
+
+export default new Wechat()
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..11fffd2
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "@vue/tsconfig/tsconfig.json",
+ "compilerOptions": {
+ "sourceMap": true,
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./src/*"]
+ },
+ "lib": ["esnext", "dom"],
+ "types": ["@dcloudio/types"]
+ },
+ "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
+}
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000..54912ee
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,28 @@
+import {defineConfig} from 'vite'
+import uni from '@dcloudio/vite-plugin-uni'
+import WindiCSS from 'vite-plugin-windicss'
+import MiniProgramTailwind from '@dcasia/mini-program-tailwind-webpack-plugin/rollup'
+
+const plugins = [
+ uni(),
+ WindiCSS({
+ scan: {
+ dirs: ['.'], // 当前目录下所有文件
+ fileExtensions: ['vue', 'js', 'ts'] // 同时启用扫描vue/js/ts
+ }
+ })
+]
+
+process.env.UNI_PLATFORM == 'mp-weixin' && plugins.push(MiniProgramTailwind())
+
+export default defineConfig({
+ server: {
+ host: '0.0.0.0',
+ // port: 6666,
+ // open:true // vite项目启动时自动打开浏览器
+ },
+ plugins,
+ optimizeDeps: {
+ include: ['dayjs']
+ }
+})
diff --git a/windi.config.ts b/windi.config.ts
new file mode 100644
index 0000000..497da31
--- /dev/null
+++ b/windi.config.ts
@@ -0,0 +1,77 @@
+import { defineConfig } from 'windicss/helpers'
+
+export default defineConfig({
+ prefixer: false,
+ preflight: false,
+ extract: {
+ exclude: ['node_modules', '.git', 'dist']
+ },
+ theme: {
+ extend: {
+ fontSize: {
+ xs: ['0.75rem', '1rem'], // 12px
+ sm: ['0.875rem', '1.25rem'], // 14px
+ base: ['1rem', '1.5rem'], // 16px
+ lg: ['1.125rem', '1.75rem'], // 18px
+ xl: ['1.66rem', '1.75rem'], // 20px
+ '2xl': ['1.75rem', '2.25rem'] // 28px
+ },
+ colors: {
+ primary: {
+ DEFAULT: 'var(--primary-color)',
+ dark: 'var(--primary-color-dark)',
+ light: 'var(--primary-color-light)'
+ },
+ red: {
+ DEFAULT: '#ED1B26',
+ dark: '#94171D'
+ },
+ blue: '#276EF1',
+ brown: '#99644C',
+ green: {
+ DEFAULT: '#219653',
+ dark: '#21531C'
+ },
+ orange: '#FB6939',
+ purple: '#7356BF',
+ yellow: '#EEAB27',
+ black: {
+ DEFAULT: '#161616',
+ light: '#363636',
+ pure: '#000000'
+ },
+ gray: {
+ DEFAULT: '#222222',
+ pressed: '#2b2b2b',
+ subtitle: '#757575',
+ description: '#AFAFAF',
+ skeleton: '#2c2c2c',
+ indicator: '#353535',
+ placeholder: '#c0c4cc'
+ },
+ white: '#FFFFFF',
+ background: '#282828',
+ border: 'rgba(117, 117, 117, 0.1)',
+ page: 'var(--page-bg-color)',
+ price: '#fc5227'
+ },
+ spacing: {
+ half: '50%',
+ '7.5': '1.875rem',
+ '22': '5.375rem'
+ },
+ borderRadius: {
+ none: '0',
+ sm: '0.125rem',
+ DEFAULT: '0.25rem',
+ md: '0.375rem',
+ lg: '0.5rem',
+ full: '9999px',
+ large: '12px'
+ }
+ }
+ },
+ corePlugins: {
+ container: false
+ }
+})