From 25dc9971c7ae3a0d0aa4726c8474f043303c55e3 Mon Sep 17 00:00:00 2001 From: JayJiaJun Date: Wed, 13 Nov 2024 11:26:59 +0800 Subject: [PATCH] 11.13 --- .browserslistrc | 4 + .eslintrc.js | 17 + .gitignore | 23 + README.md | 28 + babel.config.js | 5 + jsconfig.json | 19 + package-lock.json | 13538 ++++++++++++++++ package.json | 44 + public/favicon.ico | Bin 0 -> 4286 bytes public/index.html | 18 + public/web/cache.manifest | 13 + public/web/content_pattern1.html | 1961 +++ public/web/css/common.css | 52 + public/web/css/content.css | 517 + public/web/css/style.css | 1011 ++ public/web/css/voice_style.css | 180 + public/web/edit_pwd.html | 121 + public/web/favicon.ico | Bin 0 -> 15406 bytes public/web/img/bg.jpg | Bin 0 -> 63805 bytes public/web/img/coin.png | Bin 0 -> 16437 bytes public/web/img/compicon.png | Bin 0 -> 2682 bytes public/web/img/content.png | Bin 0 -> 33157 bytes public/web/img/del.png | Bin 0 -> 5802 bytes public/web/img/delete.png | Bin 0 -> 3603 bytes public/web/img/home.png | Bin 0 -> 12952 bytes public/web/img/insert.png | Bin 0 -> 15036 bytes public/web/img/ld.png | Bin 0 -> 20452 bytes public/web/img/logo.png | Bin 0 -> 12583 bytes public/web/img/refresh.png | Bin 0 -> 17554 bytes public/web/img/remove.png | Bin 0 -> 16484 bytes public/web/img/setting.png | Bin 0 -> 6127 bytes public/web/img/traffic_sign.bmp | Bin 0 -> 26686 bytes public/web/js/MQTT_port copy.js | 112 + public/web/js/MQTT_port.js | 111 + public/web/js/content.js | 930 ++ public/web/js/data.js | 282 + public/web/js/jquery-3.4.1.min.js | 2 + public/web/js/jsonid.js | 5 + public/web/js/mp3-engine.js | 11401 +++++++++++++ public/web/js/mp3.js | 528 + public/web/js/recorder.core.js | 1783 ++ public/web/js/voice.html | 402 + public/web/js/webView.js | 1 + public/web/login.html | 137 + public/web/screen_main.html | 502 + public/web/screen_par.html | 301 + public/web/screen_program.html | 460 + public/web/screen_virtual.html | 192 + public/web/traffic_sign.bmp | Bin 0 -> 26686 bytes public/web/voice_copy.html | 404 + src/App.vue | 4 + src/assets/icon/iconfont.js | 1 + src/assets/img/pictur.png | Bin 0 -> 25422 bytes src/assets/js/webView.js | 1 + src/assets/logo.png | Bin 0 -> 6849 bytes src/assets/style/iconfont.css | 7 + src/assets/style/reset.css | 4 + src/components/Footer.vue | 47 + src/components/Header.vue | 41 + src/components/MQTT/mqttclient.js | 35 + src/components/environment/check.js | 12 + src/main.js | 75 + src/router/index.js | 63 + src/store/index.js | 24 + src/views/event/event.vue | 548 + src/views/forewarning/forewarning.vue | 451 + src/views/home/home.vue | 137 + src/views/loggin/loggin.vue | 184 + src/views/loggin/reset.vue | 163 + .../recognize/License-plate-recognition.vue | 879 + src/views/system-info/info.vue | 366 + src/views/voice/voiceset.vue | 1404 ++ vue.config.js | 48 + web/css/193.0c29947b.css | 1 + web/css/239.fd5d7b06.css | 1 + web/css/419.832a40ea.css | 1 + web/css/619.93201e95.css | 1 + web/css/718.dc007c1e.css | 1 + web/css/769.522c5d34.css | 1 + web/css/772.fdf33262.css | 1 + web/css/928.e3bab1c5.css | 1 + web/css/960.56b57727.css | 1 + web/favicon.ico | Bin 0 -> 4286 bytes web/js/149.2f4f7417.js | 1 + web/js/193.256e1126.js | 1 + web/js/233.a1cddea4.js | 1 + web/js/239.1c6f4606.js | 1 + web/js/419.a70e3c85.js | 1 + web/js/506.70402c53.js | 1 + web/js/619.a1ca49f9.js | 1 + web/js/718.62d77b72.js | 1 + web/js/769.9bee6fb6.js | 1 + web/js/772.ea12d9e4.js | 1 + web/js/928.aebea282.js | 1 + web/js/960.29de40e4.js | 1 + web/js/app.f4ff13fe.js | 1 + web/js/chunk-vendors.5737b5d2.js | 31 + web/login.html | 1 + web/web/cache.manifest | 13 + web/web/content_pattern1.html | 1953 +++ web/web/css/common.css | 52 + web/web/css/content.css | 517 + web/web/css/style.css | 1011 ++ web/web/edit_pwd.html | 122 + web/web/favicon.ico | Bin 0 -> 15406 bytes web/web/img/bg.jpg | Bin 0 -> 63805 bytes web/web/img/coin.png | Bin 0 -> 16437 bytes web/web/img/compicon.png | Bin 0 -> 2682 bytes web/web/img/content.png | Bin 0 -> 33157 bytes web/web/img/del.png | Bin 0 -> 5802 bytes web/web/img/delete.png | Bin 0 -> 3603 bytes web/web/img/home.png | Bin 0 -> 12952 bytes web/web/img/insert.png | Bin 0 -> 15036 bytes web/web/img/ld.png | Bin 0 -> 20452 bytes web/web/img/logo.png | Bin 0 -> 12583 bytes web/web/img/refresh.png | Bin 0 -> 17554 bytes web/web/img/remove.png | Bin 0 -> 16484 bytes web/web/img/setting.png | Bin 0 -> 6127 bytes web/web/img/traffic_sign.bmp | Bin 0 -> 26686 bytes web/web/js/MQTT_port.js | 66 + web/web/js/content.js | 930 ++ web/web/js/data.js | 282 + web/web/js/jquery-3.4.1.min.js | 2 + web/web/js/jsonid.js | 5 + web/web/login.html | 138 + web/web/screen_main.html | 482 + web/web/screen_par.html | 303 + web/web/screen_program.html | 453 + web/web/screen_virtual.html | 184 + web/web/traffic_sign.bmp | Bin 0 -> 26686 bytes 130 files changed, 46165 insertions(+) create mode 100644 .browserslistrc create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 README.md create mode 100644 babel.config.js create mode 100644 jsconfig.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/web/cache.manifest create mode 100644 public/web/content_pattern1.html create mode 100644 public/web/css/common.css create mode 100644 public/web/css/content.css create mode 100644 public/web/css/style.css create mode 100644 public/web/css/voice_style.css create mode 100644 public/web/edit_pwd.html create mode 100644 public/web/favicon.ico create mode 100644 public/web/img/bg.jpg create mode 100644 public/web/img/coin.png create mode 100644 public/web/img/compicon.png create mode 100644 public/web/img/content.png create mode 100644 public/web/img/del.png create mode 100644 public/web/img/delete.png create mode 100644 public/web/img/home.png create mode 100644 public/web/img/insert.png create mode 100644 public/web/img/ld.png create mode 100644 public/web/img/logo.png create mode 100644 public/web/img/refresh.png create mode 100644 public/web/img/remove.png create mode 100644 public/web/img/setting.png create mode 100644 public/web/img/traffic_sign.bmp create mode 100644 public/web/js/MQTT_port copy.js create mode 100644 public/web/js/MQTT_port.js create mode 100644 public/web/js/content.js create mode 100644 public/web/js/data.js create mode 100644 public/web/js/jquery-3.4.1.min.js create mode 100644 public/web/js/jsonid.js create mode 100644 public/web/js/mp3-engine.js create mode 100644 public/web/js/mp3.js create mode 100644 public/web/js/recorder.core.js create mode 100644 public/web/js/voice.html create mode 100644 public/web/js/webView.js create mode 100644 public/web/login.html create mode 100644 public/web/screen_main.html create mode 100644 public/web/screen_par.html create mode 100644 public/web/screen_program.html create mode 100644 public/web/screen_virtual.html create mode 100644 public/web/traffic_sign.bmp create mode 100644 public/web/voice_copy.html create mode 100644 src/App.vue create mode 100644 src/assets/icon/iconfont.js create mode 100644 src/assets/img/pictur.png create mode 100644 src/assets/js/webView.js create mode 100644 src/assets/logo.png create mode 100644 src/assets/style/iconfont.css create mode 100644 src/assets/style/reset.css create mode 100644 src/components/Footer.vue create mode 100644 src/components/Header.vue create mode 100644 src/components/MQTT/mqttclient.js create mode 100644 src/components/environment/check.js create mode 100644 src/main.js create mode 100644 src/router/index.js create mode 100644 src/store/index.js create mode 100644 src/views/event/event.vue create mode 100644 src/views/forewarning/forewarning.vue create mode 100644 src/views/home/home.vue create mode 100644 src/views/loggin/loggin.vue create mode 100644 src/views/loggin/reset.vue create mode 100644 src/views/recognize/License-plate-recognition.vue create mode 100644 src/views/system-info/info.vue create mode 100644 src/views/voice/voiceset.vue create mode 100644 vue.config.js create mode 100644 web/css/193.0c29947b.css create mode 100644 web/css/239.fd5d7b06.css create mode 100644 web/css/419.832a40ea.css create mode 100644 web/css/619.93201e95.css create mode 100644 web/css/718.dc007c1e.css create mode 100644 web/css/769.522c5d34.css create mode 100644 web/css/772.fdf33262.css create mode 100644 web/css/928.e3bab1c5.css create mode 100644 web/css/960.56b57727.css create mode 100644 web/favicon.ico create mode 100644 web/js/149.2f4f7417.js create mode 100644 web/js/193.256e1126.js create mode 100644 web/js/233.a1cddea4.js create mode 100644 web/js/239.1c6f4606.js create mode 100644 web/js/419.a70e3c85.js create mode 100644 web/js/506.70402c53.js create mode 100644 web/js/619.a1ca49f9.js create mode 100644 web/js/718.62d77b72.js create mode 100644 web/js/769.9bee6fb6.js create mode 100644 web/js/772.ea12d9e4.js create mode 100644 web/js/928.aebea282.js create mode 100644 web/js/960.29de40e4.js create mode 100644 web/js/app.f4ff13fe.js create mode 100644 web/js/chunk-vendors.5737b5d2.js create mode 100644 web/login.html create mode 100644 web/web/cache.manifest create mode 100644 web/web/content_pattern1.html create mode 100644 web/web/css/common.css create mode 100644 web/web/css/content.css create mode 100644 web/web/css/style.css create mode 100644 web/web/edit_pwd.html create mode 100644 web/web/favicon.ico create mode 100644 web/web/img/bg.jpg create mode 100644 web/web/img/coin.png create mode 100644 web/web/img/compicon.png create mode 100644 web/web/img/content.png create mode 100644 web/web/img/del.png create mode 100644 web/web/img/delete.png create mode 100644 web/web/img/home.png create mode 100644 web/web/img/insert.png create mode 100644 web/web/img/ld.png create mode 100644 web/web/img/logo.png create mode 100644 web/web/img/refresh.png create mode 100644 web/web/img/remove.png create mode 100644 web/web/img/setting.png create mode 100644 web/web/img/traffic_sign.bmp create mode 100644 web/web/js/MQTT_port.js create mode 100644 web/web/js/content.js create mode 100644 web/web/js/data.js create mode 100644 web/web/js/jquery-3.4.1.min.js create mode 100644 web/web/js/jsonid.js create mode 100644 web/web/login.html create mode 100644 web/web/screen_main.html create mode 100644 web/web/screen_par.html create mode 100644 web/web/screen_program.html create mode 100644 web/web/screen_virtual.html create mode 100644 web/web/traffic_sign.bmp diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..dc3bc09 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,4 @@ +> 1% +last 2 versions +not dead +not ie 11 diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..7fdf1ba --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,17 @@ +module.exports = { + root: true, + env: { + node: true + }, + 'extends': [ + 'plugin:vue/vue3-essential', + 'eslint:recommended' + ], + parserOptions: { + parser: '@babel/eslint-parser' + }, + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..403adbc --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules +/dist + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md new file mode 100644 index 0000000..3f3349d --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# set-vue + +## Project setup +``` +npm install +``` + +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Lints and fixes files +``` +npm run lint +``` + + + + + + 我a +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..e955840 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..4aafc5f --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "esnext", + "baseUrl": "./", + "moduleResolution": "node", + "paths": { + "@/*": [ + "src/*" + ] + }, + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ] + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..27c58e6 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13538 @@ +{ + "name": "set-vue", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "set-vue", + "version": "0.1.0", + "dependencies": { + "@vant/touch-emulator": "^1.4.0", + "amfe-flexible": "^2.2.1", + "autoprefixer": "^10.4.19", + "axios": "^1.7.2", + "core-js": "^3.8.3", + "mqtt": "^2.18.8", + "vant": "^4.9.5", + "vconsole": "^3.15.1", + "vue": "^3.2.13", + "vue-router": "^4.0.3", + "vuex": "^4.0.0" + }, + "devDependencies": { + "@babel/core": "^7.12.16", + "@babel/eslint-parser": "^7.12.16", + "@locator/runtime": "^0.4.4", + "@vant/auto-import-resolver": "^1.2.1", + "@vue/cli-plugin-babel": "~5.0.0", + "@vue/cli-plugin-eslint": "~5.0.0", + "@vue/cli-plugin-router": "~5.0.0", + "@vue/cli-plugin-vuex": "~5.0.0", + "@vue/cli-service": "~5.0.0", + "code-inspector-plugin": "^0.17.3", + "compression-webpack-plugin": "^11.1.0", + "eslint": "^7.32.0", + "eslint-plugin-vue": "^8.0.3", + "file-loader": "^6.2.0", + "less": "^4.2.0", + "less-loader": "^12.2.0", + "postcss-pxtorem": "^5.1.1", + "unplugin-auto-import": "^0.17.8", + "unplugin-vue-components": "^0.27.4" + } + }, + "node_modules/@achrinza/node-ipc": { + "version": "9.2.8", + "resolved": "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.8.tgz", + "integrity": "sha512-DSzEEkbMYbAUVlhy7fg+BzccoRuSQzqHbIPGxGv19OJ2WKwS3/9ChAnQcII4g+GujcHhyJ8BUuOVAx/S5uAfQg==", + "dev": true, + "dependencies": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + }, + "engines": { + "node": "8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19 || 20 || 21" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "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.10", + "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.10.tgz", + "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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/eslint-parser": { + "version": "7.24.5", + "resolved": "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.24.5.tgz", + "integrity": "sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ==", + "dev": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.24.1", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz", + "integrity": "sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-decorators": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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-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-decorators": { + "version": "7.24.1", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz", + "integrity": "sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==", + "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-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-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-runtime": { + "version": "7.24.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz", + "integrity": "sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-plugin-utils": "^7.24.0", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "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-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/template": { + "version": "7.24.0", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.11", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.6.11.tgz", + "integrity": "sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", + "dev": true, + "license": "MIT" + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "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==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true + }, + "node_modules/@locator/runtime": { + "version": "0.4.4", + "resolved": "https://registry.npmmirror.com/@locator/runtime/-/runtime-0.4.4.tgz", + "integrity": "sha512-6uCkE12N5y0136wcBNEeyYn1iEOFKG+SDYsNeCJsC54/yyD4/6fKywOYJqManA64mg20f41utBFP+b262oZYXQ==", + "dev": true, + "dependencies": { + "@floating-ui/dom": "^1.0.1", + "@locator/shared": "^0.4.4", + "solid-js": "^1.7.8", + "tailwindcss": "^3.3.2" + } + }, + "node_modules/@locator/shared": { + "version": "0.4.4", + "resolved": "https://registry.npmmirror.com/@locator/shared/-/shared-0.4.4.tgz", + "integrity": "sha512-8fF395jPvrAAetsiQCj/8HcZXfDiY5mL1M/d4V2jDbjKkzM/BiZAukn4ndeuqSehnsck1Uu7ir8wDRTeg34Mog==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.4" + } + }, + "node_modules/@locator/shared/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmmirror.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", + "dev": true, + "dependencies": { + "easy-stack": "1.0.1" + }, + "engines": { + "node": ">=1.0.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", + "dev": true + }, + "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/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "node_modules/@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/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 + }, + "node_modules/@soda/friendly-errors-webpack-plugin/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", + "dev": true + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmmirror.com/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "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/express": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.0", + "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.12.12", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmmirror.com/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmmirror.com/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmmirror.com/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmmirror.com/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vant/auto-import-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@vant/auto-import-resolver/-/auto-import-resolver-1.2.1.tgz", + "integrity": "sha512-czGWW4UolNITkF3qQSQlpHDHAsI3/GHVKbRMmEEpry7NWdnU4p5a5jBi0VApbaLa5g80Hy10XVs3IB+UozoSUw==", + "dev": true + }, + "node_modules/@vant/popperjs": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz", + "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==" + }, + "node_modules/@vant/touch-emulator": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vant/touch-emulator/-/touch-emulator-1.4.0.tgz", + "integrity": "sha512-Zt+zISV0+wpOew2S1siOJ3G22y+hapHAKmXM+FhpvWzsRc4qahaYXatCAITuuXt0EcDp7WvEeTO4F7p9AtX/pw==" + }, + "node_modules/@vant/use": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.6.0.tgz", + "integrity": "sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", + "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==", + "dev": true + }, + "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-transform-vue-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz", + "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/babel-preset-app": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-5.0.8.tgz", + "integrity": "sha512-yl+5qhpjd8e1G4cMXfORkkBlvtPCIgmRf3IYCWYDKIQ7m+PPa5iTm4feiNmCMD6yGqQWMhhK/7M3oWGL9boKwg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.16", + "@babel/helper-compilation-targets": "^7.12.16", + "@babel/helper-module-imports": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-proposal-decorators": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/plugin-transform-runtime": "^7.12.15", + "@babel/preset-env": "^7.12.16", + "@babel/runtime": "^7.12.13", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.8.3", + "core-js-compat": "^3.8.3", + "semver": "^7.3.4" + }, + "peerDependencies": { + "@babel/core": "*", + "core-js": "^3", + "vue": "^2 || ^3.2.13" + }, + "peerDependenciesMeta": { + "core-js": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-preset-app/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/babel-preset-jsx": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz", + "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==", + "dev": true, + "dependencies": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "@vue/babel-sugar-composition-api-inject-h": "^1.4.0", + "@vue/babel-sugar-composition-api-render-instance": "^1.4.0", + "@vue/babel-sugar-functional-vue": "^1.4.0", + "@vue/babel-sugar-inject-h": "^1.4.0", + "@vue/babel-sugar-v-model": "^1.4.0", + "@vue/babel-sugar-v-on": "^1.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "vue": "*" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-sugar-composition-api-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz", + "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-render-instance": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz", + "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-functional-vue": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz", + "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-inject-h": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz", + "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz", + "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/babel-sugar-v-on": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz", + "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.4.0", + "camelcase": "^5.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-on/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/cli-overlay": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-5.0.8.tgz", + "integrity": "sha512-KmtievE/B4kcXp6SuM2gzsnSd8WebkQpg3XaB6GmFh1BJGRqa1UiW9up7L/Q67uOdTigHxr5Ar2lZms4RcDjwQ==", + "dev": true + }, + "node_modules/@vue/cli-plugin-babel": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.8.tgz", + "integrity": "sha512-a4qqkml3FAJ3auqB2kN2EMPocb/iu0ykeELwed+9B1c1nQ1HKgslKMHMPavYx3Cd/QAx2mBD4hwKBqZXEI/CsQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.16", + "@vue/babel-preset-app": "^5.0.8", + "@vue/cli-shared-utils": "^5.0.8", + "babel-loader": "^8.2.2", + "thread-loader": "^3.0.0", + "webpack": "^5.54.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-eslint": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.8.tgz", + "integrity": "sha512-d11+I5ONYaAPW1KyZj9GlrV/E6HZePq5L5eAF5GgoVdu6sxr6bDgEoxzhcS1Pk2eh8rn1MxG/FyyR+eCBj/CNg==", + "dev": true, + "dependencies": { + "@vue/cli-shared-utils": "^5.0.8", + "eslint-webpack-plugin": "^3.1.0", + "globby": "^11.0.2", + "webpack": "^5.54.0", + "yorkie": "^2.0.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0", + "eslint": ">=7.5.0" + } + }, + "node_modules/@vue/cli-plugin-router": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-router/-/cli-plugin-router-5.0.8.tgz", + "integrity": "sha512-Gmv4dsGdAsWPqVijz3Ux2OS2HkMrWi1ENj2cYL75nUeL+Xj5HEstSqdtfZ0b1q9NCce+BFB6QnHfTBXc/fCvMg==", + "dev": true, + "dependencies": { + "@vue/cli-shared-utils": "^5.0.8" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-vuex": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.8.tgz", + "integrity": "sha512-HSYWPqrunRE5ZZs8kVwiY6oWcn95qf/OQabwLfprhdpFWAGtLStShjsGED2aDpSSeGAskQETrtR/5h7VqgIlBA==", + "dev": true, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vue/cli-service": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-5.0.8.tgz", + "integrity": "sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.12.16", + "@soda/friendly-errors-webpack-plugin": "^1.8.0", + "@soda/get-current-script": "^1.0.2", + "@types/minimist": "^1.2.0", + "@vue/cli-overlay": "^5.0.8", + "@vue/cli-plugin-router": "^5.0.8", + "@vue/cli-plugin-vuex": "^5.0.8", + "@vue/cli-shared-utils": "^5.0.8", + "@vue/component-compiler-utils": "^3.3.0", + "@vue/vue-loader-v15": "npm:vue-loader@^15.9.7", + "@vue/web-component-wrapper": "^1.3.0", + "acorn": "^8.0.5", + "acorn-walk": "^8.0.2", + "address": "^1.1.2", + "autoprefixer": "^10.2.4", + "browserslist": "^4.16.3", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.10", + "clipboardy": "^2.3.0", + "cliui": "^7.0.4", + "copy-webpack-plugin": "^9.0.1", + "css-loader": "^6.5.0", + "css-minimizer-webpack-plugin": "^3.0.2", + "cssnano": "^5.0.0", + "debug": "^4.1.1", + "default-gateway": "^6.0.3", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "fs-extra": "^9.1.0", + "globby": "^11.0.2", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^5.1.0", + "is-file-esm": "^1.0.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "mini-css-extract-plugin": "^2.5.3", + "minimist": "^1.2.5", + "module-alias": "^2.2.2", + "portfinder": "^1.0.26", + "postcss": "^8.2.6", + "postcss-loader": "^6.1.1", + "progress-webpack-plugin": "^1.0.12", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^5.1.1", + "thread-loader": "^3.0.0", + "vue-loader": "^17.0.0", + "vue-style-loader": "^4.1.3", + "webpack": "^5.54.0", + "webpack-bundle-analyzer": "^4.4.0", + "webpack-chain": "^6.5.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.7.3", + "webpack-virtual-modules": "^0.4.2", + "whatwg-fetch": "^3.6.2" + }, + "bin": { + "vue-cli-service": "bin/vue-cli-service.js" + }, + "engines": { + "node": "^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "vue-template-compiler": "^2.0.0", + "webpack-sources": "*" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "less-loader": { + "optional": true + }, + "pug-plain-loader": { + "optional": true + }, + "raw-loader": { + "optional": true + }, + "sass-loader": { + "optional": true + }, + "stylus-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/@vue/cli-shared-utils": { + "version": "5.0.8", + "resolved": "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-5.0.8.tgz", + "integrity": "sha512-uK2YB7bBVuQhjOJF+O52P9yFMXeJVj7ozqJkwYE9PlMHL1LMHjtCYm4cSdOebuPzyP+/9p0BimM/OqxsevIopQ==", + "dev": true, + "dependencies": { + "@achrinza/node-ipc": "^9.2.5", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/@vue/cli-shared-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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-shared-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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@vue/cli-shared-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 + }, + "node_modules/@vue/cli-shared-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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-shared-utils/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/cli-shared-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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-shared-utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "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/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/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/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/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dev": true, + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/@vue/component-compiler-utils/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "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/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/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-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/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/shared": { + "version": "3.4.27", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.27.tgz", + "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==" + }, + "node_modules/@vue/vue-loader-v15": { + "name": "vue-loader", + "version": "15.11.1", + "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.11.1.tgz", + "integrity": "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==", + "dev": true, + "dependencies": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "prettier": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/@vue/vue-loader-v15/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": 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.12.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": 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/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/amfe-flexible": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/amfe-flexible/-/amfe-flexible-2.2.1.tgz", + "integrity": "sha512-L2VfvDzoETBjhRptg5u/IUuzHSuxm22JpSRb404p/TBGeRfwWmmNEbB+TFPIP/sS/+pbM18bCFH9QnMojLuPNw==" + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "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, + "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/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "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/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/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/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.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/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "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==", + "dev": true + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "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/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/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/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "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==" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.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/callback-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/callback-stream/-/callback-stream-1.1.0.tgz", + "integrity": "sha512-sAZ9kODla+mGACBZ1IpTCAisKoGnv6PykW7fPk1LrM+mMepE18Yz0515yoVcrZy7dQsTUp3uZLQ/9Sx1RnLoHw==", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "> 1.0.0 < 3.0.0" + } + }, + "node_modules/callback-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/callback-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/callback-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "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/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "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/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "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/chokidar/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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-highlight/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cli-highlight/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 + }, + "node_modules/cli-highlight/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/code-inspector-core": { + "version": "0.17.3", + "resolved": "https://registry.npmmirror.com/code-inspector-core/-/code-inspector-core-0.17.3.tgz", + "integrity": "sha512-i+AjNFLdN143Z6qEX0ClSwRaRCiTEXU9TM57PV3KkoHOjw4beLNZfvIlO+T8TKdBvxAYC3reBvqq5er45ti9Jg==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "^3.2.47", + "chalk": "^4.1.1", + "portfinder": "^1.0.28" + } + }, + "node_modules/code-inspector-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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/code-inspector-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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/code-inspector-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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/code-inspector-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 + }, + "node_modules/code-inspector-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, + "engines": { + "node": ">=8" + } + }, + "node_modules/code-inspector-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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/code-inspector-plugin": { + "version": "0.17.3", + "resolved": "https://registry.npmmirror.com/code-inspector-plugin/-/code-inspector-plugin-0.17.3.tgz", + "integrity": "sha512-34wfoIbPQFdu9iK8spkZfxF0VE1kkuGJp/CamBwoc9ZFf5aDVdQ8Rkwuu1QEkcRlKIFeeDZuf3VmyHHMUhXlZA==", + "dev": true, + "dependencies": { + "chalk": "4.1.1", + "code-inspector-core": "0.17.3", + "esbuild-code-inspector-plugin": "0.17.3", + "vite-code-inspector-plugin": "0.17.3", + "webpack-code-inspector-plugin": "0.17.3" + } + }, + "node_modules/code-inspector-plugin/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/code-inspector-plugin/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/code-inspector-plugin/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/code-inspector-plugin/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 + }, + "node_modules/code-inspector-plugin/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/code-inspector-plugin/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "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==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/commist": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/commist/-/commist-1.1.0.tgz", + "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", + "dependencies": { + "leven": "^2.1.0", + "minimist": "^1.1.0" + } + }, + "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/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression-webpack-plugin": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/compression-webpack-plugin/-/compression-webpack-plugin-11.1.0.tgz", + "integrity": "sha512-zDOQYp10+upzLxW+VRSjEpRRwBXJdsb5lBMlRxx1g8hckIFBpe3DTI0en2w7h+beuq89576RVzfiXrkdPGrHhA==", + "dev": true, + "dependencies": { + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/compression-webpack-plugin/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "node_modules/compression-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/compression-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/compression-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/compression/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/compression/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/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "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==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/confbox": { + "version": "0.1.7", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "deprecated": "Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog", + "dev": true, + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "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==", + "dev": true + }, + "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/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + } + }, + "node_modules/copy-text-to-clipboard": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", + "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "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/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-loader/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/css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmmirror.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dev": true, + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "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==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmmirror.com/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "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/d": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": 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/default-gateway/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/default-gateway/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/default-gateway/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/default-gateway/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/default-gateway/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/default-gateway/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/default-gateway/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/default-gateway/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/default-gateway/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/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "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/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.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==", + "engines": { + "node": ">=0.4.0" + } + }, + "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-node": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexify/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/duplexify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "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/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==", + "dev": true + }, + "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/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/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.16.1", + "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "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, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "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==", + "dev": true + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "node_modules/es6-set": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/es6-set/-/es6-set-0.1.6.tgz", + "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "es6-iterator": "~2.0.3", + "es6-symbol": "^3.1.3", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/esbuild-code-inspector-plugin": { + "version": "0.17.3", + "resolved": "https://registry.npmmirror.com/esbuild-code-inspector-plugin/-/esbuild-code-inspector-plugin-0.17.3.tgz", + "integrity": "sha512-4AYLmFT4iLEbYeSg8FONllrO8E10dPfeSrnkzr9/e8HV33iA56RkJd+i1auhLROt1wFDNsvxIJnv33Acg1rXxw==", + "dev": true, + "dependencies": { + "code-inspector-core": "0.17.3" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "8.7.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", + "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", + "dev": true, + "dependencies": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^8.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-plugin-vue/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/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", + "dev": true, + "dependencies": { + "@types/eslint": "^7.29.0 || ^8.4.1", + "jest-worker": "^28.0.2", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/eslint-webpack-plugin/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/eslint-webpack-plugin/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/eslint/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/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 + }, + "node_modules/eslint/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/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/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/eslint/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/eslint/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/eslint/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/eslint/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/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/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/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, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/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, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/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, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": 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/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "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==", + "dev": true, + "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-glob/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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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 + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/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/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "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==", + "dev": true, + "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-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/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, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/foreground-child/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child/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, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/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, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "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": "9.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", + "dev": true + }, + "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==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "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/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-stream/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-stream/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/glob-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/glob-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "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/help-me": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/help-me/-/help-me-1.1.0.tgz", + "integrity": "sha512-P/IZ8yOMne3SCTHbVY429NZ67B/2bVQlcYGZh2iPPbdLrEQ/qY5aGChn0YTDmt7Sb4IKRI51fypItav+lNl76w==", + "dependencies": { + "callback-stream": "^1.0.2", + "glob-stream": "^6.1.0", + "through2": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true + }, + "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 + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "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/html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "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-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "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-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": 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==", + "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==" + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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 + }, + "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==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "dependencies": { + "ci-info": "^1.5.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "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==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "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-file-esm": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-file-esm/-/is-file-esm-1.0.0.tgz", + "integrity": "sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA==", + "dev": true, + "dependencies": { + "read-pkg-up": "^7.0.1" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "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==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "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/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", + "dev": true + }, + "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, + "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, + "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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmmirror.com/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.13.1", + "resolved": "https://registry.npmmirror.com/joi/-/joi-17.13.1.tgz", + "integrity": "sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "dev": true, + "engines": { + "node": ">=0.6.0" + } + }, + "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==", + "dev": true + }, + "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, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "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 + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/launch-editor-middleware": { + "version": "2.6.1", + "resolved": "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.6.1.tgz", + "integrity": "sha512-Fg/xYhf7ARmRp40n18wIfJyuAMEjXo67Yull7uF7d0OJ3qA4EYJISt1XfPPn69IIJ5jKgQwzcg6DqHYo95LL/g==", + "dev": true, + "dependencies": { + "launch-editor": "^2.6.1" + } + }, + "node_modules/less": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "12.2.0", + "resolved": "https://registry.npmmirror.com/less-loader/-/less-loader-12.2.0.tgz", + "integrity": "sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==", + "dev": true, + "engines": { + "node": ">= 18.12.0" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/leven": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "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 + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dev": true, + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + } + }, + "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==", + "dev": true, + "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.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/lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-symbols/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-symbols/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/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 + }, + "node_modules/log-symbols/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "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==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "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/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "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-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "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==", + "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/mini-css-extract-plugin": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz", + "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mlly": { + "version": "1.7.1", + "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.7.1.tgz", + "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", + "dev": true, + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.1.1", + "ufo": "^1.5.3" + } + }, + "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==", + "dev": true + }, + "node_modules/mqtt": { + "version": "2.18.8", + "resolved": "https://registry.npmmirror.com/mqtt/-/mqtt-2.18.8.tgz", + "integrity": "sha512-3h6oHlPY/yWwtC2J3geraYRtVVoRM6wdI+uchF4nvSSafXPZnaKqF8xnX+S22SU/FcgEAgockVIlOaAX3fkMpA==", + "dependencies": { + "commist": "^1.0.0", + "concat-stream": "^1.6.2", + "end-of-stream": "^1.4.1", + "es6-map": "^0.1.5", + "help-me": "^1.0.1", + "inherits": "^2.0.3", + "minimist": "^1.2.0", + "mqtt-packet": "^5.6.0", + "pump": "^3.0.0", + "readable-stream": "^2.3.6", + "reinterval": "^1.1.0", + "split2": "^2.1.1", + "websocket-stream": "^5.1.2", + "xtend": "^4.0.1" + }, + "bin": { + "mqtt": "mqtt.js", + "mqtt_pub": "bin/pub.js", + "mqtt_sub": "bin/sub.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mqtt-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmmirror.com/mqtt-packet/-/mqtt-packet-5.6.1.tgz", + "integrity": "sha512-eaF9rO2uFrIYEHomJxziuKTDkbWW5psLBaIGCazQSKqYsTaB3n4SpvJ1PexKaDBiPnMLPIFWBIiTYT3IfEJfww==", + "dependencies": { + "bl": "^1.2.1", + "inherits": "^2.0.3", + "process-nextick-args": "^2.0.0", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/mqtt-packet/node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/mqtt-packet/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/mqtt-packet/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/mqtt-packet/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/mqtt/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/mqtt/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/mqtt/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mutation-observer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mutation-observer/-/mutation-observer-1.0.3.tgz", + "integrity": "sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "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 + }, + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "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-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "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==", + "dev": true, + "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/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "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/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "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/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "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==", + "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/open": { + "version": "8.4.2", + "resolved": "https://registry.npmmirror.com/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ora/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ora/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/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 + }, + "node_modules/ora/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/ordered-read-streams/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/ordered-read-streams/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/ordered-read-streams/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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, + "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/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": 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/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" + }, + "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==", + "dev": true, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/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==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "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, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-types": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.2.0.tgz", + "integrity": "sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==", + "dev": true, + "dependencies": { + "confbox": "^0.1.7", + "mlly": "^1.7.1", + "pathe": "^1.1.2" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "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-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmmirror.com/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/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/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-pxtorem": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-pxtorem/-/postcss-pxtorem-5.1.1.tgz", + "integrity": "sha512-uvgIujL/pn0GbZ+rczESD2orHsbXrrCqi+q9wJO8PCk3ZGCoVVtu5hZTbtk+tbZHZP5UkTfCvqOrTZs9Ncqfsg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.27" + } + }, + "node_modules/postcss-pxtorem/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/postcss-pxtorem/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/progress-webpack-plugin": { + "version": "1.0.16", + "resolved": "https://registry.npmmirror.com/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz", + "integrity": "sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA==", + "dev": true, + "dependencies": { + "chalk": "^2.1.0", + "figures": "^2.0.0", + "log-update": "^2.3.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "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/proxy-addr/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/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "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, + "engines": { + "node": ">=6" + } + }, + "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/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "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/raw-body/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/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "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.14.1", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "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/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/reinterval": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/reinterval/-/reinterval-1.1.0.tgz", + "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==" + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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 + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "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-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "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, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "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==", + "dev": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "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/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true, + "optional": true + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + } + }, + "node_modules/scule": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz", + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", + "dev": true + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "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/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/seroval": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/seroval/-/seroval-1.1.1.tgz", + "integrity": "sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/seroval-plugins": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/seroval-plugins/-/seroval-plugins-1.1.1.tgz", + "integrity": "sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "seroval": "^1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/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/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/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/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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-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/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true + }, + "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/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/slice-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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-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 + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/solid-js": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/solid-js/-/solid-js-1.9.3.tgz", + "integrity": "sha512-5ba3taPoZGt9GY3YlsCB24kCg0Lv/rie/HTD4kG6h4daZZz7+yK02xn8Vx8dLYBc9i6Ps5JwAbEiqjmKaLB3Ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.1.0", + "seroval": "^1.1.0", + "seroval-plugins": "^1.1.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/split2": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dependencies": { + "through2": "^2.0.2" + } + }, + "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 + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "dev": true + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "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/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", + "dev": true, + "dependencies": { + "js-tokens": "^9.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", + "dev": true + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmmirror.com/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/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, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "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/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/table": { + "version": "6.8.2", + "resolved": "https://registry.npmmirror.com/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/tailwindcss": { + "version": "3.4.14", + "resolved": "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.4.14.tgz", + "integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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==", + "dev": 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/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser/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==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-loader": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/thread-loader/-/thread-loader-3.0.4.tgz", + "integrity": "sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==", + "dev": true, + "dependencies": { + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.1.0", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" + } + }, + "node_modules/thread-loader/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/thread-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmmirror.com/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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": { + "version": "0.0.6", + "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/ufo": { + "version": "1.5.3", + "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", + "dev": true + }, + "node_modules/ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "engines": { + "node": ">=0.10.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==", + "dev": 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/unimport": { + "version": "3.12.0", + "resolved": "https://registry.npmmirror.com/unimport/-/unimport-3.12.0.tgz", + "integrity": "sha512-5y8dSvNvyevsnw4TBQkIQR1Rjdbb+XjVSwQwxltpnVZrStBvvPkMPcZrh1kg5kY77kpx6+D4Ztd3W6FOBH/y2Q==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.1.0", + "acorn": "^8.12.1", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "fast-glob": "^3.3.2", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.11", + "mlly": "^1.7.1", + "pathe": "^1.1.2", + "pkg-types": "^1.2.0", + "scule": "^1.3.0", + "strip-literal": "^2.1.0", + "unplugin": "^1.14.1" + } + }, + "node_modules/unimport/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unimport/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "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/unplugin": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.14.1.tgz", + "integrity": "sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==", + "dev": true, + "dependencies": { + "acorn": "^8.12.1", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "webpack-sources": "^3" + }, + "peerDependenciesMeta": { + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/unplugin-auto-import": { + "version": "0.17.8", + "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.17.8.tgz", + "integrity": "sha512-CHryj6HzJ+n4ASjzwHruD8arhbdl+UXvhuAIlHDs15Y/IMecG3wrf7FVg4pVH/DIysbq/n0phIjNHAjl7TG7Iw==", + "dev": true, + "dependencies": { + "@antfu/utils": "^0.7.10", + "@rollup/pluginutils": "^5.1.0", + "fast-glob": "^3.3.2", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.10", + "minimatch": "^9.0.4", + "unimport": "^3.7.2", + "unplugin": "^1.11.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@nuxt/kit": "^3.2.2", + "@vueuse/core": "*" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + }, + "@vueuse/core": { + "optional": true + } + } + }, + "node_modules/unplugin-auto-import/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/unplugin-auto-import/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/unplugin-vue-components": { + "version": "0.27.4", + "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.27.4.tgz", + "integrity": "sha512-1XVl5iXG7P1UrOMnaj2ogYa5YTq8aoh5jwDPQhemwO/OrXW+lPQKDXd1hMz15qxQPxgb/XXlbgo3HQ2rLEbmXQ==", + "dev": true, + "dependencies": { + "@antfu/utils": "^0.7.10", + "@rollup/pluginutils": "^5.1.0", + "chokidar": "^3.6.0", + "debug": "^4.3.6", + "fast-glob": "^3.3.2", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.11", + "minimatch": "^9.0.5", + "mlly": "^1.7.1", + "unplugin": "^1.12.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@babel/parser": "^7.15.8", + "@nuxt/kit": "^3.2.2", + "vue": "2 || 3" + }, + "peerDependenciesMeta": { + "@babel/parser": { + "optional": true + }, + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-components/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/unplugin-vue-components/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/unplugin/node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true + }, + "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/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "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/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "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/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vant": { + "version": "4.9.5", + "resolved": "https://registry.npmmirror.com/vant/-/vant-4.9.5.tgz", + "integrity": "sha512-9w9Ygv2jRPYPhqzi3Ci1V54JiO06TSMqZEVt41X2H+hO2cy1cgUJik5+/hhW2wdKMtjWqACFzyLs8NOGzBNpmw==", + "dependencies": { + "@vant/popperjs": "^1.3.0", + "@vant/use": "^1.6.0", + "@vue/shared": "^3.4.33" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vant/node_modules/@vue/shared": { + "version": "3.5.5", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.5.tgz", + "integrity": "sha512-0KyMXyEgnmFAs6rNUL+6eUHtUCqCaNrVd+AW3MX3LyA0Yry5SA0Km03CDKiOua1x1WWnIr+W9+S0GMFoSDWERQ==" + }, + "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/vconsole": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vconsole/-/vconsole-3.15.1.tgz", + "integrity": "sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "copy-text-to-clipboard": "^3.0.1", + "core-js": "^3.11.0", + "mutation-observer": "^1.0.3" + } + }, + "node_modules/vite-code-inspector-plugin": { + "version": "0.17.3", + "resolved": "https://registry.npmmirror.com/vite-code-inspector-plugin/-/vite-code-inspector-plugin-0.17.3.tgz", + "integrity": "sha512-braPMItQPFE9rDsf5g+JjgV14laKknde2UGRrbfTY7fw7ODlrMnt13KGYMY9V+Ttk7SeOFnTdozXHbD1WR5UDQ==", + "dev": true, + "dependencies": { + "code-inspector-core": "0.17.3" + } + }, + "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-eslint-parser": { + "version": "8.3.0", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", + "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/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, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-eslint-parser/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-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "node_modules/vue-loader": { + "version": "17.4.2", + "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-17.4.2.tgz", + "integrity": "sha512-yTKOA4R/VN4jqjw4y5HrynFL8AK0Z3/Jt7eOJXEitsm0GMRHDBjCfCiuTiLP7OESvsZYo2pATCWhDqxC5ZrM6w==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "watchpack": "^2.4.0" + }, + "peerDependencies": { + "webpack": "^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/vue-loader/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader/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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-loader/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/vue-loader/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 + }, + "node_modules/vue-loader/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-style-loader/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "node_modules/vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/webpack": { + "version": "5.91.0", + "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.16.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "dependencies": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-code-inspector-plugin": { + "version": "0.17.3", + "resolved": "https://registry.npmmirror.com/webpack-code-inspector-plugin/-/webpack-code-inspector-plugin-0.17.3.tgz", + "integrity": "sha512-MaXSAQe4oyzHvdz9jSIftdSUkwTaFr1hn8ke0p2v9FURIeAxe5Dadv2pCxiogm+T6y7d00VaDJSduLFvrZwq/A==", + "dev": true, + "dependencies": { + "code-inspector-core": "0.17.3" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "dev": true, + "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/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.4.6", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", + "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-stream": { + "version": "5.5.2", + "resolved": "https://registry.npmmirror.com/websocket-stream/-/websocket-stream-5.5.2.tgz", + "integrity": "sha512-8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==", + "dependencies": { + "duplexify": "^3.5.1", + "inherits": "^2.0.1", + "readable-stream": "^2.3.3", + "safe-buffer": "^5.1.2", + "ws": "^3.2.0", + "xtend": "^4.0.0" + } + }, + "node_modules/websocket-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/websocket-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/websocket-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/websocket-stream/node_modules/ws": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dependencies": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmmirror.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.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, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "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, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/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, + "license": "MIT" + }, + "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, + "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, + "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 + }, + "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==" + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": 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/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, + "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==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "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, + "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, + "engines": { + "node": ">=10" + } + }, + "node_modules/yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/yorkie/node_modules/execa": { + "version": "0.8.0", + "resolved": "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz", + "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/yorkie/node_modules/normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yorkie/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a6e7c58 --- /dev/null +++ b/package.json @@ -0,0 +1,44 @@ +{ + "name": "set-vue", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "@vant/touch-emulator": "^1.4.0", + "amfe-flexible": "^2.2.1", + "autoprefixer": "^10.4.19", + "axios": "^1.7.2", + "core-js": "^3.8.3", + "mqtt": "^2.18.8", + "vant": "^4.9.5", + "vconsole": "^3.15.1", + "vue": "^3.2.13", + "vue-router": "^4.0.3", + "vuex": "^4.0.0" + }, + "devDependencies": { + "@babel/core": "^7.12.16", + "@babel/eslint-parser": "^7.12.16", + "@locator/runtime": "^0.4.4", + "@vant/auto-import-resolver": "^1.2.1", + "@vue/cli-plugin-babel": "~5.0.0", + "@vue/cli-plugin-eslint": "~5.0.0", + "@vue/cli-plugin-router": "~5.0.0", + "@vue/cli-plugin-vuex": "~5.0.0", + "@vue/cli-service": "~5.0.0", + "code-inspector-plugin": "^0.17.3", + "compression-webpack-plugin": "^11.1.0", + "eslint": "^7.32.0", + "eslint-plugin-vue": "^8.0.3", + "file-loader": "^6.2.0", + "less": "^4.2.0", + "less-loader": "^12.2.0", + "postcss-pxtorem": "^5.1.1", + "unplugin-auto-import": "^0.17.8", + "unplugin-vue-components": "^0.27.4" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..6d3b2e5 --- /dev/null +++ b/public/index.html @@ -0,0 +1,18 @@ + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + + +
+ + + diff --git a/public/web/cache.manifest b/public/web/cache.manifest new file mode 100644 index 0000000..cd51b75 --- /dev/null +++ b/public/web/cache.manifest @@ -0,0 +1,13 @@ +CACHE MANIFEST +#v0.01 //߻ļİ汾Ϣ + +CACHE: //Ҫ߻Դ +./css/common.css +./css/content.css +./css/style.css + +NETWORK://ʾֻ״̬²ܷʵԴҪԴ +* + +FALLBACK://Դʧܵʱתҳ + diff --git a/public/web/content_pattern1.html b/public/web/content_pattern1.html new file mode 100644 index 0000000..31b020b --- /dev/null +++ b/public/web/content_pattern1.html @@ -0,0 +1,1961 @@ + + + + + + + + + + + + 模式1—节目内容编辑页面 + + + + + + + +
+ +
+
+

画面预览

+ + +
+ +
+
+
+
+
+

节目参数

+ 模式1 +
+
+
+
+
+
+

分区0

+
+ 项目选择 + +
+ +
+
+
+ 图片参数 + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ 文字参数 +
+ +
+ +
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ 显示参数 +
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+
+
+ 数据监测设置 + +
+ +

+ +
+ +

+ +
+ +

+ +
+ +
+
+ +
+ +

+
+ + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+
+ 高级参数 +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+ +
+ + +
+
+ +
+
+ 数据不能为空 +
+
+ 设置中... +
+
+ 设置节目成功 +
+
+ 设置节目失败 +
+
+ 结果内容 +
+ + + + + + \ No newline at end of file diff --git a/public/web/css/common.css b/public/web/css/common.css new file mode 100644 index 0000000..6ad6a1a --- /dev/null +++ b/public/web/css/common.css @@ -0,0 +1,52 @@ +/*底部导航*/ +footer ul { + background-color: #333; + position: fixed; + display: block; + bottom: 0; + width: 100%; + height: 35px; + line-height: 35px; + font-family: "microsoft yahei"; + font-size: 1.125rem; + border-radius: 6px; +} + +footer li { + width: 25%; + float: left; + text-align: center; +} + +/*导航选项链接*/ +footer li a { + padding: 12px 5px; + color: white; +} + +footer li a.active { + background-color: rgb(235, 84, 14); +} + +footer li a:active, +footer li a:link, +footer li a:visited { + color: white; +} + +footer { + width: 100%; + display: block; +} + +footer img { + width: 145px; + left: 32%; + position: relative; + box-sizing: border-box; +} + +footer p { + text-align: center; +} + diff --git a/public/web/css/content.css b/public/web/css/content.css new file mode 100644 index 0000000..18415f8 --- /dev/null +++ b/public/web/css/content.css @@ -0,0 +1,517 @@ +*{ + margin: 0 ; + padding: 0; +} +/* body{ + background: #E5EDE2; + /* background:#eee; +} +/**/ +/* .show{ + position: relative; + margin-left: 50%; + margin-right: 50%; + transform:translate(-50%,50%); + color: #5555; + cursor: pointer; + +} */ +/* 屏幕展示区域样式 */ +/* .e-screen { + width: 380px; + height: 135px; + background-color: black; + + margin-bottom: 30px; + margin: 0 auto; + +} */ + +textarea { + max-width: 335px; + min-width: 335px; + max-height: 58px; + min-height: 58px; + margin-top: 10px; + outline: none; + margin: 8px 8px; + font-size: 24px; +} + +.bd textarea:focus { + box-shadow: 0 0 0 .075rem #fff, 0 0 0 .2rem #0074d9; +} + +.bd textarea:active { + color: #fff; + background-color: #84c6ff; +} + +.font { + width: 70px; + /* margin: 2px 10px; */ + margin: 0; + padding: 8px; +} + +.fontsize { + width: 50px; + margin: 0; + padding: 8px; +} + +.tx, +.speed, +.stay, +.h-align, +.v-align { + left: 10px; + position: relative; + width: 70%; + margin: 0; + padding: 8px; +} + +.my_fieldset { + margin: 0 auto; + width: 95%; + border: solid 2px #84c6ff; +} + +.my_fieldset legend { + color: #84c6ff; +} + + + +.my_fieldset label { + position: relative; + left: 5%; + margin-right: 70px; + font-size: 13px; +} + +.select .img_type_css { + position: relative; + width: 200px; + font-size: 13px; +} + +.my_fieldset_div { + margin: 0 auto; + width: 95%; + border: solid 2px #84c6ff; +} +.my_fieldset_div2{ + position: relative; + width: 80%; + margin-left: 10%; +} +.my_fieldset_div legend { + color: #84c6ff; +} + +.my_fieldset_div2 label { + font-size: 16px; +} + +.my_fieldset_div2 input { + /* position: relative; */ + border: solid 2px #d4d4d4; + border-radius: 6px; + width: 40%; + margin-bottom: 10px; + line-height: 24px; + font-size: 16px; +} + +.my_fieldset_div2 div { + width: 50%; + float: left; +} + +.select { + margin: 0 auto; + margin-left: 10px; + margin-bottom: 6px; + position: relative; + padding: 0; + box-shadow: 0 0 10px #d4d4d4; + border-radius: 8px; +} +.select input{ + width: 148px; + border-radius: 6px; + color: #555; + background-color: #eee; + font-size: 14px; + padding: .5rem 2.25rem .5rem 1rem; + /* justify-content: space-around; + + line-height: 1; + + border: 0; + + cursor: pointer; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + outline: none; + */ +} + +.select, +.animation_style { + position: relative; + display: inline-flex; + /* background-color: #ededed; */ + color: #555; + font-size: 15px; +} + +.select select { + width: 105px; + justify-content: space-around; + padding: .5rem 2.25rem .5rem 1rem; + line-height: 1; + color: #555; + background-color: #eee; + border: 0; + border-radius: 6px; + cursor: pointer; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + outline: none; + font-size: 14px; + +} + +.select select:focus:-moz-focusring { + color: transparent; + text-shadow: 1.2 -1.2 1.8 #000; +} + +/* Dropdown arrow */ +.select:after { + position: absolute; + top: 50%; + right: 0.25rem; + content: ""; + width: 0; + height: 0; + margin-top: -.15rem; + pointer-events: none; + border-top: .35rem solid; + border-right: .35rem solid transparent; + border-bottom: .35rem solid transparent; + border-left: .35rem solid transparent; +} + +/* Focus */ +.select select:focus, +.animation_style select:focus { + box-shadow: 0 0 0 .075rem #fff, 0 0 0 .2rem #0074d9; +} + +/* Active/open */ +.select select:active, +.animation_style select:active { + color: #fff; + background-color: #84c6ff; +} + +.select select::-ms-expand, +.animation_style select::-ms-expand { + display: none; +} + +/* Media query to target Firefox only */ + + +/* IE9 hack to hide the arrow +@media screen and (min-width:0\0) { + .select select { + z-index: 1; + padding: .5rem 1.5rem .5rem 2rem; + } + .select:after { + z-index: 5; + } + .select:before { + position: absolute; + top: 0; + right: 1rem; + bottom: 0; + z-index: 2; + content: ""; + display: block; + width: 1.5rem; + background-color: #eee; + } + .select select:hover, + .select select:focus, + .select select:active { + color: #555; + background-color: #eee; + } +} */ +/* Hide the arrow in IE10 and up */ +.animation_style select { + display: inline-block; + width: 140px; + margin-right: 10px; + padding: .5rem 2.25rem .5rem 1rem; + line-height: 1; + color: #555; + background-color: #eee; + border: 0; + border-radius: 6px; + cursor: pointer; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + outline: none; + font-size: 14px; +} + +.animation_style select:active { + color: #fff; + background-color: #84c6ff; + outline: none; +} + +.animation_style table { + width: 340px; + left: 9px; + position: relative; + border: solid 1px #d4d4d4; + border-radius: 5px; + box-shadow: 0 1px 10px #e8e8e8; + font-size: 14px; +} + +td { + width: 160px; + /* background-color: #eee; */ + /* background: #fff; */ +} + +/* td:nth-child(2) { + width: 100px; + font-size: 15px; + /* color: #eee; */ +/* background: #eee url(../img/coin.png) 15px 2px no-repeat; */ +/* } */ + +.content_btn { + width: 375px; + display: flex; + margin: 0 auto; +} + +.content_btn button { + width: 80px; + height: 35px; + line-height: 35px; + border-radius: 8px; + border: none; + color: #fff; + background-color: #67a9eb; + margin: 35px 55px 55px; + justify-content: space-around; + cursor: pointer; + box-shadow: 0 0 10px #e8e8e8; + +} + +.txt_bold { + width: 60px; + height: 30px; + /* float: left; */ + /* background: url(../img/coin2.png) 10px -20px no-repeat; */ +} + +#txt_canvas { + background: rgba(0, 0, 0, 0); +} + +/************************************************节目管理弹出css****************************************************/ +.my_contain { + display: none; + background-color: #FFFFFF; + z-index: 11; + width: 80%; + height: 45%; + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + margin: auto; +} + +.my_contain2 { + height: 57%; +} + +.ground { + top: -20%; + display: none; + background-color: #B3B3B3; + position: absolute; + width: 100%; + height: 190%; + z-index: 10; + -moz-opacity: 0.8; + opacity: .80; + filter: alpha(opacity=80); + /* 只支持IE6、7、8、9 */ +} + +/*************************************************节目模式修改弹窗css************************************************/ +.pro_mode_shade { + top: 0%; + display: none; + background-color: #B3B3B3; + position: fixed; + width: 100%; + height: 100%; + z-index: 10; + -moz-opacity: 0.8; + opacity: .80; + filter: alpha(opacity=80); + /* 只支持IE6、7、8、9 */ +} + +.pro_mode_window { + display: none; + background-color: #FFFFFF; + z-index: 11; + width: 80%; + height: 700px; + position: fixed; + top: 0; + right: 0; + left: 0; + bottom: 0; + margin: auto; +} + +.pro_mode_window h2 { + margin-top: 15px; + text-align: center; + /* 位置居中 */ +} + +.pro_mode_btn { + float: left; + margin-top: 15px; + margin-bottom: 15px; + margin-right: 5%; + margin-left: 5%; + border: none; + outline: none; + width: 40%; + height: 130px; + border-radius: 18px; + color: #2b2828; + font-size: 24px; + background-color: #67a9eb; + cursor: pointer; +} + +.pro_mode_btn p { + font-size: 18px; + position: relative; + bottom: -10px; + text-align: center; + width: 100%; +} + +.pro_mode1_area { + width: 90%; + height: 90%; + margin-top: 6.5px; + margin-left: 5%; + border-radius: 10px; + background-color: #B3B3B3; + text-align: center; + font-size: 20px; +} + +.pro_mode2_area { + width: 90%; + height: 42.5%; + margin-top: 6.5px; + margin-left: 5%; + border-radius: 10px; + background-color: #B3B3B3; + text-align: center; + font-size: 20px; +} + +.pro_mode3_area { + float: right; + width: 42.5%; + height: 90%; + margin-top: 6.5px; + margin-right: 5%; + border-radius: 10px; + background-color: #B3B3B3; + text-align: center; + font-size: 20px; +} + +.pro_mode4_area { + width: 90%; + height: 26.66%; + margin-top: 6.5px; + margin-left: 5%; + border-radius: 10px; + background-color: #B3B3B3; + text-align: center; + font-size: 20px; +} + +.pro_mode5_area { + width: 90%; + height: 18.75%; + margin-top: 6.5px; + margin-left: 5%; + border-radius: 10px; + background-color: #B3B3B3; + text-align: center; + font-size: 20px; +} + +.pro_mode6_area { + float: right; + width: 42.5%; + height: 42.5%; + margin-top: 6.5px; + margin-right: 5%; + border-radius: 10px; + background-color: #B3B3B3; + text-align: center; + font-size: 20px; +} + +/*************************************************屏幕亮度弹窗css************************************************/ +.scroll { + margin: 100px; + width: 5px; + height: 320px; + background: #ccc; + position: relative; +} + +.bar { + width: 15px; + height: 5px; + background: #369; + position: absolute; + top: 0px; + left: -5; + cursor: pointer; +} diff --git a/public/web/css/style.css b/public/web/css/style.css new file mode 100644 index 0000000..c68b60c --- /dev/null +++ b/public/web/css/style.css @@ -0,0 +1,1011 @@ +* { + margin: 0; + padding: 0; + text-decoration: none; +} + +/* body { + min-width: 100%; + height: 600px; + font-family: "microsoft yahei"; + background-color: #f5f5f5; + background: url(../img/bg.jpg) no-repeat; +} */ + +.contain { + width: 100%; + height: 500px; + top: 10%; + position: relative; +} + +.contain_pattern { + width: 100%; + height: 650px; +} + +.contain p { + width: 100%; + font-family: 'Microsoft Yahei'; + font-size: 24px; + font-weight: bold; + text-align: center; +} + +.pattern1, +.pattern2, +.pattern3 { + width: 375px; + text-align: center; + border: none; + border-radius: 8px; + background-color: #67a9eb; + box-shadow: 0 0 10px #67a9eb; + font-family: 'Microsoft Yahei'; + font-size: 18px; + margin-top: 8px; +} + +.pattern1 p, +.pattern2 p, +.pattern3 p { + text-align: center; + font-size: 18px; + font-weight: normal; +} + +.pattern1 ul, +.pattern3 ul { + display: flex; +} + +.pattern2 ul { + width: 120px; + margin-top: 8px; + margin: 0 auto; +} + +.pattern1 ul li, +.pattern3 ul li { + width: 130px; + height: 150px; + line-height: 150px; + margin: 10px auto; + justify-content: space-around; + border: none; + border-radius: 8px; + color: #fff; + background-color: gray; + font-family: 'Microsoft Yahei'; + font-size: 18px; +} + +.pattern2 ul li { + width: 120px; + height: 130px; + line-height: 130px; + margin-top: 8px; + border: none; + border-radius: 8px; + color: #fff; + background-color: gray; + font-family: 'Microsoft Yahei'; + font-size: 18px; +} + +#pattern1:hover, +#pattern2:hover, +#pattern3:hover { + cursor: pointer; +} + +header { + /* background: url(../img/bg.jpg); */ + width: 100%; + height: 20px; +} + +header span { + margin-left: 8px; + width: 100%; + height: 50px; +} + +header a { + font-family: '微软雅黑'; + font-size: medium; + font-weight: bold; +} + +ul li { + list-style: none; +} + +.login { + width: 80%; + height: 350px; + padding: 0px 20px; + background-color: #ffffff; + overflow: hidden; + border: 1px solid #ddd; + box-shadow: 0 0 10px #bbb; + margin: 10% auto; +} + +.login_ul { + width: 100%; + padding-top: 34px; + font-size: 22px; + text-align: center; + color: #656565; +} + +.login_ul>li { + width: 100%; + line-height: 66px; + border-bottom: solid 1px #999999; + cursor: pointer; + /* float: left; */ + margin: 0 auto; +} + +/* 设置鼠标指针移动至登录表单模块列表项上时的文本颜色,下边框与字体加粗 */ +.login_ul>li:hover, +.login_ul>li.active { + color: #67a9eb; + border-bottom: solid 2px #67a9eb; + font-weight: bold; +} + +/* 去除表单模块表单控件的边框与边框线 +*并设置其宽度、高度、内外边距、行高、文本颜色、字号与下边距*/ +.login input { + border: none; + outline: none; + width: 80%; + height: 46px; + padding: 0px 14px; + margin-top: 30px; + line-height: 46px; + color: #cbcbcb; + font-size: 30px; + border-bottom: solid 1px #cbcbcb; +} + +.login span { + color: #cbcbcb; + font-size: 24px; + float: right; + margin-top: 12px; +} + +/* 去除登录表单模块中登录按钮的边框与轮廓线、 +* 并设置其宽度、高度、圆角、文本颜色、字号、背景颜色 +*/ +.login_btn { + border: none; + outline: none; + width: 80%; + height: 40px; + border-radius: 18px; + color: #ffffff; + font-size: 16px; + background-color: #67a9eb; + cursor: pointer; + margin-top: 40px; + margin-left: 10%; +} + +.login_checkbox { + float:left; +} +.login_checkbox input { + display: none; +} + +.login_checkbox label { + display: inline-block; + width: 24px; + height: 24px; + border: 1px solid #333; + position: relative; + margin-top: 17px; +} + +.login_checkbox label::after { + -webkit-transition: opacity .5s ease; + -moz-transition: opacity .5s ease; + -o-transition: opacity .5s ease; + -ms-transition: opacity .5s ease; + transition: opacity .5s ease; + cursor: pointer; + position: absolute; + content: ''; + opacity: 0; +} + +.login_checkbox input:checked+label::after { + border: 2px solid #d73d32; + border-top: none; + border-right: none; + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); + width: 20px; + height: 10px; + top: 50%; + margin-top: -8px; + left: 50%; + margin-left: -10px; + opacity: 1.0; +} + +.login_checkbox span { + color: #cbcbcb; + font-size: 24px; + float: left; + margin-top: 12px; +} + +.screen { + width: 100%; + height: 800px; + margin: 0px auto; +} + +.select_pattern { + margin-top: 8px; + width: 100%; + height: 140px; + border-radius: 8px; +} + +.select_pattern strong { + left: 5%; + font-size: 16px; + line-height: 40px; + position: relative; + clear: both; +} +.select_pattern input{ + border: solid 2px #d4d4d4; + border-radius: 6px; + width: 20%; + margin-top: 5px; + /* margin-bottom: 10px; */ + line-height: 24px; + font-size: 16px; + float: left; + left: 2%; + position: relative; +} + +.select_pattern label, +.select_pattern span { + float: left; + left: 5%; + position: relative; + width: 20%; + line-height: 35px; + font-size: 14px; +} + +.select_pattern button { + width: 80px; + height: 35px; + margin-right: 5%; + float: right; + position: relative; + outline: none; + border: none; + font-size: 16px; + font-family: 'Microsoft Yahei'; + color: #fff; + background-color: #67a9eb; + border-radius: 8px; + cursor: pointer; +} + +.tag, +.tag li { + height: 60px; + text-align: center; + margin-left: 30px; +} + +.tag li { + float: left; + font-family: "Microsoft Yahei"; + width: 185px; + font-size: 15px; + border-bottom: solid 1px #999999; + cursor: pointer; + margin: 0 auto; +} + +.tag li:hover { + border-bottom: 2px solid #67a9eb; +} + +.midart { + position: relative; + font-size: 15px; + width: 375px; + height: 450px; + margin: 0 auto; +} + +.midart_2 { + top: 226px; +} + +.version{ + position: fixed; + bottom: 10px; + width: 80%; + background-color: #1296db; + color: #FFF; + border-radius: 14px; + text-align: center; + left: 10%; +} +.version p{ + font-size: 24px; +} + +.keys_div{ + position: relative; + width: 100%; + height: 100%; + margin-top: 30px; + margin-bottom: 100px; +} + +.card_item { + position: relative; + width: calc(100%); + /* left: 8px; */ + height: 40px; + margin-top: 10px; + background-color: #7bc8f1; + border-radius: 20px; + box-shadow: 0px 7px 15px rgba(128, 128, 128, 0.25); +} + +/* 配置界面 - 配置内容框 - 基础设置卡片 - 卡片项目 - 标题*/ +.card_item p { + position: relative; + color: black; + font-size: 20px; + color: #ffffff; + width: calc(50% - 12px); + height: 26px; + top: 6px; + left: 6px; + float: left; + text-align: center; + overflow: hidden; +} + +/* 配置界面 - 配置内容框 - 基础设置卡片 - 卡片项目 - 数据 */ +.data_div { + position: relative; + width: calc(50% - 6px); + height: 28px; + font-size: 20px; + top: 6px; + left: 6px; + padding-left: 3px; + padding-right: 3px; + background-color: #ffffff; + border-radius: 14px; + overflow: hidden; + text-align: center; +} + +/* 配置界面 - 配置内容框 - 基础设置卡片 - 卡片项目 - 数据 - 选择项 */ +.card_item .data_div select { + position: relative; + margin-top: 0px; + width: 100%; + height: 28px; + font-size: 20px; + text-align: center; + border: none; + outline: none; + background-color: #ffffff; +} + +.play_item_css { + margin-top: 8px; + width: 375px; + border-radius: 8px; + box-shadow: 0 0 10px #1c7fc3; + padding-bottom: 8px; +} + +.pro_insert { + width: 375px; + height: 35px; + margin: 10px auto; +} + +.tag_control, +.pro_bottom { + width: 375px; +} + +a { + color: #444; + text-decoration: none; +} + +.control_li:after, +.pro_li:after { + content: ""; + clear: both; + display: flex; + visibility: hidden; +} + +.control_li { + width: 130px; + height: 120px; + line-height: 25px; + display: inline-block; + text-align: center; + margin-bottom: 10px; + margin-left: 35px; + margin-right: 8px; + border: solid 2px #67a9eb; + /* border-radius: 20px; */ + cursor: pointer; + background: linear-gradient(#1c7fc3 10%, #ddd 50%, #eee); +} + +.screen .item_list { + width: 375px; + height: 390px; + border: none; + border-radius: 8px; + box-shadow: 0 0 10px darkgray; + margin:0 auto; +} + +/*节目管理页面中列表项宽度*/ +.screen .pro { + width: 58%; + height: 340px; + float: left; + margin-left: 8px; + margin-top: 10px; + background-color: #fff; + border-radius: 8px; + box-shadow: 0 0 10px #1c7fc3; +} + +.screen p { + text-align: center; + font-size: 20px; +} + +.pro .list { + width: 100%; + border-radius: 8px; + margin-top: 3px; + line-height: 8px; + margin-bottom: 8px; +} + +.pro .list p { + font-family: 'Microsoft Yahei'; + font-size: 18px; + width: 100%; + height: 28px; + line-height: 30px; + font-weight: bold; + color: #fff; + margin-top: 2px; + margin-bottom: 6px; +} + +.pro .list p:hover { + background-color: #1c7fc3ba +} + +.list p.bordercolor { + border-radius: 8px; + background-color: orangered; +} + +.pro_right { + width: 35%; + float: right; + position: relative; + border: none; + margin: 10px 8px; + border-radius: 8px; + background-color: #eee; + box-shadow: 0 0 10px darkgray; +} + +.pro_right p { + width: 80px; + font-size: 16px; + text-align: center; +} + +.bs_switch { + margin-bottom: 3px; + width: 46px; + height: 25px; + box-sizing: border-box; + position: relative; + background: #cccccc; + border: 1px solid #dfdfdf; + border-radius: 16px; + line-height: 20.5px; + text-align: center; + cursor: pointer; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + outline: 0; +} + +.bs_switch:active, +.bs_switch:visited { + outline: none; +} + +.bs_switch:before { + content: attr(data-off); + position: absolute; + top: 2px; + left: 1px; + padding-left: 13px; + border-radius: 15px; + background-color: #cccccc; + color: #fff; + font-size: 12px; +} + +.bs_switch:after { + content: " "; + position: absolute; + top: 5px; + left: 2px; + width: 12px; + height: 12px; + border-radius: 15px; + background-color: #ffffff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); + transition: transform 0.3s; +} + +.bs_switch:checked { + border-color: #67a9eb; + background-color: #67a9eb; +} + +.bs_switch:checked:after { + transform: translateX(28px); +} + +.bs_switch:checked:before { + content: attr(data-on); + padding-left: 0px; + padding-left: 2px; + background-color: #67a9eb; + color: #fff; + width: 24px; +} + +.pro_icon img { + width: 30px; + height: 30px; + display: inline-block; + margin-left: 6px; + cursor: pointer; +} + +.pro_icon span { + width: 30px; + height: 50px; + +} + +.pro_li { + width: 100px; + height: 78px; + line-height: 20px; + display: inline-block; + text-align: center; + margin-left: 10px; + margin-right: 6px; + border: solid 2px #67a9eb; + border-radius: 8px; + cursor: pointer; + +} + +/* .control_li span{ + display: flex; + width: 180px; + justify-content: space-around; +} */ +.control_li img, +.tag li img { + display: flex; + width: 30px; + height: 30px; + margin-left: 50px; + margin-top: 30px; + justify-content: space-around; +} + +.pro_li img { + display: flex; + width: 30px; + margin-left: 34px; + margin-top: 30px; + justify-content: space-around; + clear: both; +} + +/* body, +h1, +h2, +h3, +h4, +h5, +h6, +p, +ul, +ol, +dl, +dd { + margin: 0; + padding: 0; +} */ + +ul { + list-style: none; +} + +input { + border: 0; + outline: none; +} + +.clear:after { + content: ""; + display: block; + clear: both; +} + +.box, +.nav { + width: 375px; + margin: 0 auto; + padding: 30px 30px; + border: 1px solid #ddd; + box-shadow: 0 0 10px #bbb; + box-sizing: border-box; + top: 25%; + position: relative; +} + +.screen_box { + width: 100%; + height: 100%; + margin: 0 auto; + padding: 30px 30px; + border: 1px solid #ddd; + box-shadow: 0 0 10px #bbb; + box-sizing: border-box; + top: 0%; + position: relative; +} + +.box select { + display: inline-block; + width: 96%; + height: 30px; + font-size: 24px; + position: relative; + vertical-align: middle; + padding: 0; + overflow: hidden; + background-color: #fff; + color: rgb(85, 85, 85); + border: 1px solid rgb(11, 184, 236); + text-shadow: none; + border-radius: 4px; + z-index: 2; + margin-bottom: 7px; + margin-top: 7px; + margin-left: 2%; + margin-right: 2%; + text-align: center; + text-align-last: center; + outline: none; +} + +.box h2 { + text-align: center; + color: #666; + font-size: 22px; + line-height: 40px; +} + +.box ul, +.screen_box ul { + padding: 10px 0; +} + +.box ul li, +.screen_box ul li { + display: flex; + height: 35px; + line-height: 35px; + margin-bottom: 18px; +} + +.box ul li input, +.screen_box input { + border: 1px solid #ddd; + height: 38px; + padding: 0 10px; + line-height: 38px; + flex: 1; + box-sizing: border-box; +} + +.box ul li label { + display: block; + width: 115px; +} + +.box ul li label span { + color: red; + padding-right: 10px; +} + +.box button, +.screen_box button { + width: 100%; + border: none; + font-family: 'Microsoft Yahei'; + font-size: 18px; + border-radius: 8px; + height: 40px; + background-color: #67a9eb; + color: #fff; + cursor: pointer; +} + +.screen_box h1 { + font-size: 24px; + text-align: center; + margin-bottom: 7px +} + +.screen_box select { + display: inline-block; + width: 96%; + height: 30px; + font-size: 24px; + position: relative; + vertical-align: middle; + padding: 0; + overflow: hidden; + background-color: #fff; + color: rgb(85, 85, 85); + border: 1px solid rgb(11, 184, 236); + text-shadow: none; + border-radius: 4px; + transition: box-shadow 0.25s ease; + z-index: 2; + margin-bottom: 7px; + margin-top: 7px; + margin-left: 2%; + margin-right: 2%; + text-align: center; + text-align-last: center; + outline: none; +} + +.my_luminance { + display: inline-block; + position: relative; + width: 100%; + margin-bottom: 7px; +} + +.my_luminance::before { + content: ''; + position: absolute; + bottom: 0; + left: 0; + width: 50%; + height: 100%; + background: linear-gradient(-90deg, #64d8f0 0%, #67a9eb 100%); + border-radius: 8px; + transition: .3s; +} + +#read, +#reset { + font-family: 'Microsoft Yahei'; + font-size: 18px; +} + +#set, +#reset, +#cancel, +#cancel2, +#confirm2 { + width: 100%; + margin-top: 5px; + /* top: 5px; */ + position: relative; + border: none; + border-radius: 8px; + height: 40px; + background-color: #67a9eb; + color: #fff; + cursor: pointer; + font-size: 18px; +} + +.main { + margin: 0 auto; + margin: 30px 30px; + width: 375px; + font-family: '微软雅黑'; + /* -webkit-user-select: none; */ +} + +.slider { + width: 375px; + height: 40px; + position: relative; + background-color: #E8E8E8; + margin-top: 20px; +} + +.track { + width: 16px; + height: 46px; + position: absolute; + margin: -3px 0 0 0px; + background-color: #2dacd1; + cursor: pointer; +} + +.valueC { + height: 40px; + position: absolute; + margin: 0; + background-color: #43BFE3; +} + +.value span { + position: absolute; + text-align: right; + height: 40px; + line-height: 40px; + color: #808080; + border-right: 1px solid #dddddd; +} + +.show { + width: 45px; + height: 30px; + background-color: #333; + color: #fff; + text-align: center; + line-height: 30px; + position: absolute; + opacity: 0.9; + margin-top: -38px; + margin-left: -15px; +} + +.clear { + clear: both; +} + +.toast { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + /* display: flex; */ + display: none; + align-items: center; + justify-content: center; + user-select: none; + z-index: 999 +} + +.toast span { + background-color: rgba(0, 0, 0, .4); + padding: 10px 20px; + color: #fff; +} + +.my_h1_style { + background: #4787bb; + border-radius: 6px 6px 6px 6px; + box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); + color: #FFFFFF; + font-family: "微软雅黑", "宋体", "黑体", Arial; + font-size: 18px; + font-weight: bold; + height: 25px; + line-height: 25px; + margin: 18px 0 !important; + padding: 8px 0 5px 5px; + text-shadow: 2px 2px 3px #222222; +} + +.canvas_item{ + margin-top: 8px; + width: 375px; + height: atuo; + border-radius: 8px; + box-shadow: 0 0 10px #1c7fc3; + padding-bottom: 8px; +} + +.roof_dis{ + position: fixed; + top: 0px; + z-index:10; + background-color: #fff; + top: 0px; + left: 0px; + right: 0px; + margin-left:auto; + margin-right:auto; + margin-top:-17px; + /* width: 100%; */ +} + +.canvas_item canvas{ + position: relative; + margin-right: auto; + margin-left: auto; + margin-bottom: 10px; + display: block; + /* border: 2px solid #84c6ff; */ + background-color: #000000; +} + +.canvas_bg{ + position: relative; + margin-right: auto; + margin-left: auto; + width: 320px; + height: 160px; + background-image: linear-gradient(45deg,#eee 25%,transparent 25%,transparent 75%,#eee 75%),linear-gradient(45deg,#eee 25%,transparent 25%,transparent 75%,#eee 75%); + background-size: 16px 16px; + background-position: 0 0,8px 8px; + border: 2px solid #84c6ff; +} + +/* .canvas_item .canvas_border{ + position: relative; + left: 25px; + width: 320px; + height: 320px; + border: 2px solid #84c6ff; + background-color: #c5c5c5cb; +} + +.canvas_item .canvas_border canvas{ + background-color: #000000; +} */ diff --git a/public/web/css/voice_style.css b/public/web/css/voice_style.css new file mode 100644 index 0000000..8648356 --- /dev/null +++ b/public/web/css/voice_style.css @@ -0,0 +1,180 @@ +html, +body { + height: 100%; + margin: 0; +} +*{ + user-select: none; +} +.record-container { + /* 容器样式 */ + text-align: center; + padding-top: 50px; +} + +.content { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.voice-btn-wrap { + width: 100%; + /* position: fixed; */ + /* bottom: 25px; */ + left: 0; + display: flex; + justify-content: center; +} +.break_btn { + position: fixed; + right: calc(50% - 120px); + background-color: #4CAF50; + color: white; + border: none; + border-radius: 5px; + width: 100px; + height: 60px; +} + +#record-btn { + /* 按钮样式 */ + width: 200px; + height: 200px; + position: fixed; + top: 400px; + background-color: #4CAF50; /* 淡蓝色背景 */ + color: black; /* 文字颜色 */ + border: none; + border-radius: 50%; /* 圆形按钮 */ + cursor: pointer; + left: calc(50% - 100px); /* 水平居中按钮 */ + display: flex; + align-items: center; + justify-content: center; + font-size: 32px; /* 调整字体大小 */ + text-align: center; +} + + +#record-btn:active { + /* 按钮按下时的样式 */ + background-color: #45a049; + width: 200px; + height: 200px; + left: calc(50% - 100px); + border-radius: 60%; /* 圆形按钮 */ + +} + +.record-popup { + /* 弹出窗样式 */ + margin-top: 120px; +} + +/* 其他样式调整 */ + + +.voice-line-wrap { + display: flex; + justify-content: center; + align-items: center; + height: 50px; + /* 可调整高度 */ +} + +.voice-line { + width: 5px; + height: 20px; + /* 初始高度 */ + margin: 0 2px; + background-color: #4CAF50; + animation: wave 1s infinite ease-in-out alternate; +} +#audio-playback{ + position: fixed; + top: 250px; + left: calc(50% - 150px); +} +/* 不同的.voice-line将有不同的动画延迟来创建波动效果 */ +.voice-line:nth-child(1) { + animation-delay: 0s; +} + +.voice-line:nth-child(2) { + animation-delay: 0.1s; +} + +.voice-line:nth-child(3) { + animation-delay: 0.2s; +} + +.voice-line:nth-child(4) { + animation-delay: 0.3s; +} + +.voice-line:nth-child(5) { + animation-delay: 0.4s; +} + +.voice-line:nth-child(6) { + animation-delay: 0.5s; +} + +.voice-line:nth-child(7) { + animation-delay: 0.6s; +} + +@keyframes wave { + 0% { + height: 20px; + } + + 100% { + height: 40px; + } + + /* 动画结束时的高度 */ +} + + + + +/* .record-popup { + position: absolute; + bottom: var(--popup-bottom); + left: calc(50vw - calc(var(--popup-width) / 2)); + z-index: 1; + width: var(--popup-width); + height: var(--popup-height); + display: flex; + align-items: center; + justify-content: center; + border-radius: 10rpx; + box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1); + background: var(--popup-bg-color); + color: #000; + transition: 0.2s height; + +} */ + + +.record-popup .inner-content { + height: var(--popup-height); + font-size: 24rpx; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + +} + +.title { + font-weight: bold; + padding: 20rpx 0; +} +.tips { + color: #999; + padding: 20rpx 0; +} diff --git a/public/web/edit_pwd.html b/public/web/edit_pwd.html new file mode 100644 index 0000000..454aaab --- /dev/null +++ b/public/web/edit_pwd.html @@ -0,0 +1,121 @@ + + + + + + + + + + + + 修改密码 + + + + + + + +
+
+ +
+
+

修改密码

+ +
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
+
+ + +
+ 密码不能为空 +
+
+
+ + + + + diff --git a/public/web/favicon.ico b/public/web/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..682f8ec042b52bd9236de5ee71dd73fe0cecc1ba GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/public/web/img/content.png b/public/web/img/content.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b531268b32e277f3ab991f3cfd4be896d485fb GIT binary patch literal 33157 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�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 literal 0 HcmV?d00001 diff --git a/public/web/img/del.png b/public/web/img/del.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a5f0587c054069ff3625d5e4747173c4dc3c2c GIT binary patch literal 5802 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 I9eB+D074x#MF0Q* literal 0 HcmV?d00001 diff --git a/public/web/img/delete.png b/public/web/img/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..3e9ecb16d36762d25585c6e13810897d2dc0c936 GIT binary patch literal 3603 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
`->t=< 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 literal 0 HcmV?d00001 diff --git a/public/web/img/refresh.png b/public/web/img/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..59353200566a264bb294e4da456adfbd7391754d GIT binary patch literal 17554 zcmW(+bwE^47hRTGdg+yJ0cnuVrMpu=8UdxdyIHy$q@|_18AbMCq4MX9OCVxg0u0{{Rlc{wQ!_-OIp144nn9d}Z--~*bYoW2VHfPw$tg8<0N zfdByLsy336YHFVxTpe6KIXF_uOG;8XIy+d|e6|DtJb&eCT5D+@5sBPxTtO8h15*?o zGzdXd8qkFwmsLp~JjlPV!M_mL9DUOUD zf86#dwp;AH{XO;4v?O})?J~D<2DKN2nI^}r{yq@10!o3q6*4k7yuHUJ9)wQk2mpf` zEvQ|dX%PT-{=&lVXnIk*0SKOR7$88ea&|8VS;Q;OA84i_LSQIDuWKT|A}EjmAnpx= zmIB0O5CU^E7&HL|NC1-wbF*E58Y{r$ZNTq2Kw$1&rVj$(Lkcw^LO~*c3g0qP3h+q? z@NGsXS{k6o0U)qa925X7vjRBeb*&2_0wDPSOh##GJprMa z00Nl{UEzQ4YQP7~@JMAg2)EG*NC$lYu{xpZ>atNVPRkR&Bj7a!nr4Z!^?PN$;R@ox z*}9wr016Tb;j6uT_MFD9nV#l_HDiBd{nLZ;N@HfW`?5b%M1P9($rz)+?KZ}$0Y|(EP;m51_tNpd*hm*9w5_b{@9ixs3_?Gcj_dlpSoeSI z)qVba?=Spxd%e}YLl?wl6eNpux79y+rBp&TlY|y(w)Q(-_NfKq^@)6rW>DU&O^=yi zR~^p@CY2R?$yGuV1x;caqMv=W*x6)xL=@e852&*hMes>vEjKbpyit4$)^qLMxdi|& zIvo1u89|7FpF*~0JYLVlo@EQ@0fAQXNlpNOu@oJf)_9}X2nYa>DhOh(lOVn7gRu0X zko6(2^8usN92}IoO5=p!NJLXvyXi^)%lwtAt+smSPfaDSokp&^E<_rIk{E?4}{(2jdQ2r=X0 zjL?%~pq5FL!TXk9&`FkNV;Rdajwc)7LxA9Y&3DTZK3K;C-Hb6w3@Q3GL!6jrHM-*`Z3Gn7i-%*DJJ(c<9aJkB`C#L0Bf)?;pF_9aXl zM^9BqWk@AuX4k5yEUnzA#L&Lfp3sV~FxK>|k1ldZa#iY8vd3M#H78}crCrh;`j0`_5+e$44d2RI$4?{Y9%!y;u9u;g5h;rZUe~Zy z+Le$Nc1U^j*q5DVi#v4HCME}soP&hS*>aQ((Gqy zZANU}GE_5gn%tG_*X|ehEP{#^v4UMiZb0tu^4*z0P)BehYdYst%x~x_?TFo4Zw5TG z%)Q%;KfyF;ldG9MCu>b?-R2T<85t9$7(Bt2F3OfoI=nvGwWr{E?PRp=J$s#--I(2f zQodSy%6n>a8nKo?$&=5Nr_b&3V_;NrOMU;R7)E|7hu!8ke^p7=losKU17crt_}TEFw%dTny$IsYmjYGyT2C&oxPxO{oW|G^vejYfe>xT2_Vk z%%YWSw!**o+IiZ=hS{w2Cl~Z`_2fS*k_oUe*YMhZ?%sSlxs2G!-ND%PAu#UWV*rTG%O4QOE2W6TTtqv!XXcOAoaS7?+q)8>}sLt$L=S#s$)<^4?9I zOg4_MCh+B)<-eZb_2X?PHJ5}d>avpS{qFi^E6^b9
vONjg~TnFWwaBFlk^OptH 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 BR3!ia literal 0 HcmV?d00001 diff --git a/public/web/img/traffic_sign.bmp b/public/web/img/traffic_sign.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d286702064d0fe40dc74703c174ca6b59ad449e0 GIT binary patch literal 26686 zcmeI4&#N3+mfs^QyE_U-C=15Wf>P6#ve%{Hu9`KYqvLCMTVvs_-VH9PB;`;MF_uk0Jc$t!W zW@=-6OBpBb{obGFoO{lR8}aI&{fmeHDzo&E>p#-nEX#g07vV+;e0w|mLP5BC?=yb? zKfQwkO<+}?=(K7oPxRNt+tB|a(P{g(P)WZ?bc%NYcZuG>ok}{_MXKC5_0E5B>DvNI z3Zoq03&YEP;TfVW$C%yc!kg0P!lBc&Hr)HQ;ZxN6mGD}W_RwkC3g3CZ6%L)Ijqr`< z-*P58O*`Q$Pt%JF(P^rMuRTM5@r~#-HRaPw7RS=Sq0`iqmzRDKap*L)#nmOu^X=KZ zdUyoyit9@Wr+b*!=g?{D9C#rSE*jBk>cJ(p-hJ`SP4P)}z)R7-JR&~t!A)%7N5toS zetl_T$-Cl+co5w6rHN(T6-UH_;I1!CEZf#yOee4W=K6ALv~@?sgW#?&t$f$I`LXu( z^`(ieZru^_AQ+aQc1?TlI4<25{^Z^f@n}!Py-|ieq`KqO6>)DxI>vO*-Ydpb_v6&N zxVIx6W4iAbK`e<*alc@NN{NQt{+dUzCAvq#-71PL(Hppl4?#yd#WzuGiB9pIi3dSO zI>qZKmPDs`6UCC~uZy=Xv`94M_SaON=pG4oY1bt>#rrapBs#_aU(YAGO=(MI&l&dLgeJVoGTZl4ns7N#-A`%68P+DyXNyJ?N%;tSbG(jiF5D>fp(&YTXM&Az zqu>i)b0x(aG`JRSl;V7kR|*|iKqcI0wy5WOd?|e9{ZhD5@R_)xhGcuM^(y@iO7NtLHQg?R~zZn6zffv5-5qbHMwY zoa}dAa|wlw#Rax!eJ3A`H1NR%cqK!?-f%Jt>{*X&3M4zH9%b6glod1pCl$!X)fucn zM%rP*yFz=gRj#ZZ2&Ii{;U9@!I;TBsxUVSZ&QTBk2Ry_B>J5<<-JH9kDmpS0(Q}9g zgww?KwaPo>A91bO%ppUXU7#FV)}lablL;A;*_{KL;sJw?;vpVbsscQk(i9I=!cmtg zMGBI4Q>b)4xf* z^ob<79-{_wVZc)NQ>rpcfe(ovdz$cXi>7f;^q=N?0@k`sfT!@pw^KOcMy*aJ%m{|% zBznwD0!ED_n@r*Gmmcl>m$pJ*NPUS`8DnWm-T z`9IcM^v1h7`sw}ie|i?^f=5Cp3{62K?l>N~-Y}Ea8uFyYy@k4CNeT{d^ zweBe#XdQn1VTL8@T{Ely0GsuZ@DGcoc-tH=?fktd-v)(%kJ=~_|*Re z_7E3Y{0BuNd7Zs@DVzD~dYRoX>wxFD*oP1F47R5IFQ5S@GEjRz$3;KDEolTW>eAAI&52U|Zceaq~+PrxH)b&9O~yzu#(&yf>&@4nMN0Y{LGp+2(mKZ1Xg z@Wrj{NeQkwh~CTmpOvursVBkk#aZ?#<#L8nuKu^9~KLTb(%6b32nU!{n z3jR^DIzt>J@mMsUiRJ^oE#LxaYht3FWajgJ5&I_tWT4S)UqV+t;dHhVp6I44$VZ&U zOaZa&>8_JF!8Jc{bdIU-Y2BCPk#EAK+rkeh`k}%LF;%P`(Ng)1f38AiGJXDM4;lVn z%s#a~aW%@;xhOm8C9LbxLQ# zm%60q{zGa|_71#c5bLCMsuh;Br?sQRCed=I)H*Jt)^YKB{}99{L90B`ma#LZd|&E1 zr5(}SyZn=daiQVyYZc>)<0uo%(C>Go_xb06ukYx?pvt&(vX?oz{Y*S^M7HuB8Vx@djarLE~EYd z@kzj4qF65QCg8Jx`xvuP)nT)R%X<5I?iD}Hz-`Yg#c19O=={L&-0*qAE8)Bs(D}he z?Ws+B-av%*wQ$}G=={KN=T}z7VMYzBtS;{bbUv_E`@(O*9qkQg4LJjYug7>+23)Mn zS=!TAEOHgvZ)h*(<@7IB3BSC;rwXqMzo{ssJ>RY zM@Yh%vT*T7?e!=H?!XJ-eZ<8d!>Oz1`)i#KtbKbc;`!TvKdTL2fS2ISogak$7j3{D z{6Q^!>uO8I_FKQl^t89_O0PxlI^PTYJCgNpP3(w~; z5PW;B^MRGmR#o7SUsl5BGZ+BAxz_o>O56soS$?+6a%ctva?g7KoeylqZIhq66%L;n z1gT!@d|)euG+fil@|sIg3lDL@hQ+eG&<|5#!(o7Miw8`w;G7Mrrk>JOQwF0@9Kf2j zE74zijW{ELhq$1Q%%Xjj@VT`Q@j!Dq zGHUddeIUHhBC{W{Vg$$vdF`Zo;g$j}j>Nd2yQ98XOTf!S!7U!>vPZ0iQ;&cT_D8t( zR-c)pERWzJ9+*){MsleR$RvsY*MctMr4o+V6NR<8AetVtuM~!Ope|S*H6;hJJ<)`p zw(qT@lXv)sfS>j+F&;SSpJH6Vf>@SKjOp#E?v;QL z4;^d1U$hWhf$M}TUx2rFU3XXOeG>5cfy0vE+sF%V&RqMDiPW77=c4C)rvR>e30{9j zo`q~8zU%_7yzolTG%#S*FY1!}rM`R$HpB)LKG zvi{*qY+}cp{8~6`2JiD4H+RwXWp)1iLb&oPaMrZhpalF@7hRdL(JwaO$_r;s!Y@|J zcf}H%e3vVa-z_e%kz3XUhqo(^V&>iR%~tlH^jqO@R=6}19K~o~2At>!T#^y4BWdug zUA*!E&kaALop6?E_(zU#$@-rg{(y38ANptdyfqR2S-|fXar`hpa2IgYT;u zhIz6++r3)f3|#BWmWAOf)(L;)9Q+0NoV~JwKeLMdcHU$Me?OobZ~O%pf9EV5+;n5T z>25I%`7HDYe2e>FyKa%EbTi*{4_HQ!FSz6@y9`c@>lmZ^)Pc{*tG)C??rPN#2cRd5 zszcwv$qSc$v0(6$BN*x9zpqL*BDzuM=&|$@yd)0?=E9dW7mhd$uhbr0Td^w5QOno< zSmp?t{jp?x;(~%@RpcLP`NF@$yoJ-8e!F`tt7bpm)$&`{-MfXHSQFB3(Dd$>Lj%~) zceH%)TX#{jrf89Vz35#3VL>tWAfq08rT_4ZX|v`#PH!CwvoH8SnHB~Ld4gl*m)Zdt z#n>OSu`+JTtK&r-!c0<*mL-I z%)Sr)fC-5QLtgdC^MbY3Tu=Fzy+1-A)Z6Eye|n#Pd!K(y=Ob*OLjB*!TOpU^k5A=O z`THme{H~PdJJgxfXT70=S{f^cq6(u_#dwJFLdA(csS0c~KDIF~O7-J83yRuW!#ehp zG3YrX#YLrl19-NzT4?o+O#83^Qf-Nxx{R9hA=fWhSho zE~sk@4!F&oi>$8cZOK^1iNGhir4yt`x#EMgAF!osO7K~vWyuyI0a{bbSUim_BEbM_ z$2j?G-rm+KjOTKk`}di%c3S)5uNhHK3L&1ibAN4a&h7h*eZP49x(;tObM<29{ul>7 z7ju2~0N?rgw_m>0lSp`;uygp$vB!{H@Nis$}~ zUuI9{e!cUr|ML>6nd_R){e^!T@L%?Z>;wuY{NZ^O{1I_a@>mL^J&)qS0_r*r?E|NPeXgtL9vDB$@=yfzum{dfKk zZ{HSP3&-90#iBqBIM){&>Hkk|-5cZmA}=@(0ROMWQ{ml*xSW0ez59m+0!-)n;1&lA z^XuGi7YJ~SqxM^tq_kpp77`$?QX*pg9rE3uEhE07KtP<^BLc(c!grxP#}s8z*m=q# z2j5tnXZ*Jc5!ZPPA375kfD^$tJYR~>z@-@Z?&wJ)ibWzS(z9J6A0pVSP>HeZC3!TS(X85ANO&lQH>;-<^_1?kc z=Il3VPw98=p%(jh9#RU;qrFprw+<5npDBrkACb%@!z~ z2_5|ZOK+Q`nozcYm0vuDUhr>1D~eUV`VzXiNr9N4_uu^rTHmC`8=j4CzW`^SPbmAk z=;xH@k4wX+RQ_M~<0Gum1@z-Tc7ZORiJJe9c+U&!?vpBUnm2#^vC-ziTy*gN z?I&Lmjx3tDfBuQl=3jo-DCP-Mm^a<+7q!n9%`(f3)-OIV8u7ZzA3ySWUN5tm(cR;@ zsQf$a*SmiH<&;qnqqEL=%o?&Njbf ze%;w8MmI~N3Ez4D)9NMb>&|W)-PHeD6py0*S%=^J_%V2Y_xnZ(m_*0;#g~SEY;@<} zh$jE8_SIL&$KU$IXzkyMCcNf>yMBRu{mDhm1i~o-@5sKyNmu|2#hxO7NQAn&$Ide%5J;1tew#(*+Nw3Xy*SP z>f55fhrTz?=vihI-28u6XumulwBp-9QQq~5%F_n_UzKk!{!IJL1-kU23GW@A<^^_O zLJ7q7{{Qi(rD9`0qPXV0|7QnS95ALAD7gIpigxUP8#MWUApe3&Q#$tle~qzH95ANI ze#$1d(MFG{?nnOr#(nbtr|kRG|Bw8FApA-2A2S_%%oOga4oU z#UY>kXKU5r!i4(2i-cqp+Uc8&*6|GLC+UKTmN=rPf!nVpup%|3*%vq=B=QaSt>Z#! z9hYUvg@EiC5{6xG$z+*|BCQJD>fl^|zom4@ui9A|U8i=3@qknyOs$`Vu@2(^sR>ha z8pFn#$k|4=!=*O2u_pQw;#Kvm@2lx*8VA^7bgA)pB1Mb`B2`oCq$+HziaHkeCR(KB zmsSmio8M1Vld_H(L&G32+f0e3J)p)KOLI^>kf_?K4-F0jY@aJ02z)D3dDvs_CZ76@ z;}8$b{S50C;{uzM=A|(htGmzXWOi0SXNm(fsknTb1K%Ico9wQ>L$tU+lM2!=jZee_ z;MmI;7pP;p4Qq!1`eL9y#~$;*p*SGP#l~PP!{zUV6BlSwY55vU_(nJnJT+94l3v&t zj79I@tGwnB37nCGUL`%-QHl`oS9+w(*P2;czIqvOWK2K8O|MP&7;BGT82&8oi=eyx zY>!ule*puS#5YSiA`xTQ_?#=$1^us{iUHogLS1a1a;{Cax#9w+IDiSXj(v@~*ghA| zyun)@#8=x?p6VHXE?n;^R@>BX8pm+X8;A=GPxJaB&QtTNvjy|hdymyBt?OA_r`A_z z4u7p@|J6G2#Ya9FUX{W(!fPfUrDJ?HoMV)PC%Gg!?Otnr0hfG|T$7yZYr}Km0?uf1 ze6act8lbV7hBrn!>mn`ykI$=GMcDsM^C;rQMg1B2lc~KfK~I}jI;!^0;#Av{aRX>9 z;sKuE&~M@b#kn?g+yJVkQ-((0=MopR>=U|8%eP^8O(eWfT+nHM#eHcuhH3I%51jXU zt|}F$n_{aEjlnV%2e1~42SihOs+a6SqN(3uoLueUaH3j!Sbmr%3Uy$gCi@?yCQ&I- zCKZ=25i-XTs<}oQ`D$b6QWva+!4r*gN&A18XW|PBOUpL~jN7UY7yw&r`E=@V%cc4M zL?`#YdC;SZgJwBC3 z$Paju zJNu@I28$6c!yIr?zzJUGHU3`h16|JPC$+EpVoS=Qy36ZowwyPMJmI^(xV*Z&!rz07 z3a|6^2w(5?pYT90d1@ZxPhUNK74Sf}o_BraLmsf*+5Jv|6;*~mgi{@9w zCHk_*;kT1sivObgA)xw8{ZI9}eZq@@=C&K~!jne(;~~AYcL#jBuTnm>pYF?)Px#c| zr~H5uJX$<3p$Q-S{KU=-`1|bBM*UN1LWlOr&rj%pPwZ;)`vac*{Dcnp`|SI~FC_mz zw7=o+C;sJzzpu?-?c2Z4zXg8?lMejkzP)c9AgOg+NUh^C!pYrCe_Q-!k0(o77ob!0 zU|m$5WuRm%&o?ec zIqx?;#K{GHJPY|c&^GD!qwu`XxmM8kPlJAk{c+dvo{aMV=mVASsm}ZLoZo>PWq(Cl z8cqB2BhKZ<`_qN}nf(1pI`R8#Gt%gM@ICfrutTTp6!Jah{}E~^pZNXZxj&V^&%RFl z{*CAVu`NE<*Zcg#3ID(MH>dnkDo=jw6!jSvRp}IMozRK@ALR}Fwl1iHarjjKs7I^c zXg;kAm5t7Iz`~EBqw7OUb?DLW{rw@I#GAmM#Lq*zERh7iy*v)%fvVuqn;*^ze^lO} zwZlH}I~4~c^&0&BBp$HE!+;c*PN^*(2Hf!b6=nDgTRaRn>HiZ0PVKM60L=kQhnqU2 zkpa_vo$|JL7?AQ)n)cJ+_Z?3dW@nf*G)SLw{|C|U6CsS_fFOPT+%5Ti@E8XeO$-?P zekq(dAlk_wea=Ly^WgVAUk+Ft5b{C#ockxgFFg2tiwlDEIrqPaexLXBX5WMTN4;4* zzj_tpfPfEiKve$)2WW~L)_Tux6r&~@)j!{nH@}p=1Bm&k{+#rJfCmi#4}NVs z#ZCRQO*oI|I{?EOEBMzkGGObYUk^C(K=98+WB|DQtG)w}ALYBi5I2l)O!62%x42-` ze`w#H$MzvE@KHegj}BC>?*IbjC4lm5xS4+XPM^HK0}#I6)iz)F7k0?7{{C*nt5Wqw z{0;mW@DLXa@=5WSzm?(u`F+~g&g2{YJ>LNcR~#TbAM_*YgT4cxoacDM(T}jfnkxEx zz5@t;A6)1EK|H>x&tn`=2mPeI^mNegmw(c~zRy3?@3)fPH?D&r`kflQh#T(|UdD}g3a5O}`lFQw%{z)FyK@4h zc+k8PRg$8efWz|LDKy!g0Z(c%D9T>*tj-O5vivDNUH%jwHXgmdY0d zq=u>o%h$I=?fpFAHGdN|UcSY4?E|)ANY&o#h5|i9v}am{rRAARW;YbbZt=o4!e0MB zpW1o*g)*A*Vz&$#{aM7p@=cZb!>=OX9e)-vEWghzm9(#1!1Y=9p!^Xp!0X5W{n?jT zZY+qn18*V&?9Vll-5KHfDq5*>w4dPWUtd%yEsLA|mz4LB0k+Puc*0iYs#>wyl6(C^ z3Oxq~gkh>8sEFa>FDWn}O!I)hk`E~`AT0A>cPeHl1tipJX`-Jc=?5wFTv_HoKcruz zFtaer1O2K>!vh1tDhB}xSsEM|khnBvKx8bOO@oBRiwR1rK#T!NO10Z7*k#03mKHT; zfcCc%pXKw}rQIGiZ+ck~0t4zr4G6WvRZnrg2=@mJ2t|k2Lk&2@lp8bPCVI$#WB8Z> z$M7)&j^PIyaHPU928^ry?HEu-28??g-xrYqz?0 zt>co?fZL66pmhm^4tTBhxscXzNh#t^e?}5NC~aK=p~L)^!fk<5d*?ye^ z9)-EgNWL&apPG}!}0yyJywr{WrDB#g2&=7o) zK8#)a)PG%YOFD%|pTNRs?{2n_%ZG8`g`S+0Wa(SS#r%ip34D;3{@=g2oN4 zHQVL}p7C;19@qkZaMwoa;_^aDqEh+no&s-N_W8>zxx zzgDf&Vv~O2NGtHjPe(A^>c~C>#iDSk9OKJYNB4UM1bn~$swem0=fF`JHgbEsesEV@ z@S3EhrMlb8qq%d(%v9LlK!)$_2QzinE?x9}nnqFLhLH*t3@PAC!EvN=z;q+=;mw4{ zo|NCG;5TaFRx`|JiW`G%;$gf!-a6eIgY7Pir?QaZr$_3)P|4I!^`%N}fp*h6Bh$+= lEDr`0Q^@jloW6aBccjJ*zE0~Hcc+D;{B+(U=x=`ee*n>Z<&gjY literal 0 HcmV?d00001 diff --git a/public/web/js/MQTT_port copy.js b/public/web/js/MQTT_port copy.js new file mode 100644 index 0000000..62dcd0c --- /dev/null +++ b/public/web/js/MQTT_port copy.js @@ -0,0 +1,112 @@ +/* + * @Descripttion: + * @version: + * @Author: Eugene + * @Date: 2023-10-12 09:55:52 + * @LastEditors: Andy + * @LastEditTime: 2024-03-11 11:03:24 + */ +var MQTT_MODE = 1; + +function pageName() { + var a = location.href; + var b = a.split("/"); + var c = b.slice(b.length - 1, b.length).toString(String).split("."); + return c[0]; +} + +var json_id = 0; + +//在发送数据后调用这个函数 +function MQTT_send(string) { + json_id = localStorage.getItem("json_id"); + json_id++; + if(json_id>255) + { + json_id = 0; + } + localStorage.setItem("json_id", json_id); + let send_string = "{\"JSON_id\":" + json_id + ",\"led_protocol\":" + string + "}" + console.log("MQTT 发送:" + send_string); + if (/xazn/.test(navigator.userAgent)||/uni-app/.test(navigator.userAgent)) { + uni.postMessage({ + data: { + str: send_string + } + }); + } else { + //这里需要将string发送出去 + window.parent.postMessage({ + str: send_string + }, "*"); // 替换为Vue应用的URL + } +} + +//在发送数据后调用这个函数(带协议发送) +function MQTT_json_send(string,protocol) { + json_id = localStorage.getItem("json_id"); + json_id++; + if(json_id>255) + { + json_id = 0; + } + localStorage.setItem("json_id", json_id); + let send_string = "{\"JSON_id\":" + json_id + ",\"" + protocol + "\":" + string + "}"; + console.log("MQTT 发送:" + send_string); + if (/xazn/.test(navigator.userAgent)||/uni-app/.test(navigator.userAgent)) { + uni.postMessage({ + data: { + str: send_string + } + }); + } else { + //这里需要将string发送出去 + window.parent.postMessage({ + str: send_string + }, "*"); // 替换为Vue应用的URL + } +} + +//在收到数据后需要调用这个函数 +function MQTT_recv(string) { + console.log("MQTT 接收:" + string); + let json = jQuery.parseJSON(string); + let href = pageName(); + if ("error_code" in json) { + console.log("MQTT接收到回复码" + json.error_code); + } + if(json.led_protocol) + { + var str = JSON.stringify(json.led_protocol); + string = str; + } + console.log("MQTT 处理后:" + string); + if (href == "screen_main") { + console.log("now -> screen_main"); + cmd_reply_parse_fun(string); + } + else if (href == "screen_par") { + console.log("now -> screen_par"); + screen_par_reply_parse_fun(string); + } + else if (href == "screen_program") { + console.log("now -> screen_program"); + program_list_reply_parse_fun(string); + } + else if (href == "screen_virtual") { + console.log("now -> screen_virtual"); + screen_virtual_reply_parse_fun(string); + } + else if (href == "content_pattern1") { + console.log("now -> content_pattern1"); + content_pattern_reply_parse_fun(string); + } + else if (href == "voice_set") { + console.log("now -> voice_set"); + device_list_update(string); + } + else if (href == "voice") { + console.log("now -> voice"); + voice_reply_parse_fun(string); + } +} diff --git a/public/web/js/MQTT_port.js b/public/web/js/MQTT_port.js new file mode 100644 index 0000000..2bd07c2 --- /dev/null +++ b/public/web/js/MQTT_port.js @@ -0,0 +1,111 @@ +/* + * @Descripttion: + * @version: + * @Author: Eugene + * @Date: 2023-10-12 09:55:52 + * @LastEditors: Andy + * @LastEditTime: 2024-03-11 11:07:00 + */ +var MQTT_MODE = 1; + +function pageName() { + var a = location.href; + var b = a.split("/"); + var c = b.slice(b.length - 1, b.length).toString(String).split("."); + return c[0]; +} + +var json_id = 0; + +//在发送数据后调用这个函数 +function MQTT_send(string) { + json_id = localStorage.getItem("json_id"); + json_id++; + if (json_id > 255) { + json_id = 0; + } + localStorage.setItem("json_id", json_id); + let send_string = "{\"JSON_id\":" + json_id + ",\"board_id\":102"+",\"led_protocol\":" + string + "}"; + console.log("MQTT 发送:" + send_string); + + if (/xazn/.test(navigator.userAgent)||/uni-app/.test(navigator.userAgent)) { + uni.postMessage({ + data: { + str: send_string + } + }); + } else { + //这里需要将string发送出去 + window.parent.postMessage({ + str: send_string + }, "*"); // 替换为Vue应用的URL + } + +} +//在发送数据后调用这个函数(带协议发送) +function MQTT_json_send(string, protocol) { + json_id = localStorage.getItem("json_id"); + json_id++; + if (json_id > 255) { + json_id = 0; + } + let send_string; + localStorage.setItem("json_id", json_id); + if(protocol=="sound_card"){ + send_string = "{\"JSON_id\":" + json_id + ",\"board_id\":103"+ ",\"" + protocol + "\":" + string + "}"; + + }else{ + send_string = "{\"JSON_id\":" + json_id + ",\"" + protocol + "\":" + string + "}"; + + } + console.log("MQTT 发送:" + send_string); + + if (/xazn/.test(navigator.userAgent)||/uni-app/.test(navigator.userAgent)) { + uni.postMessage({ + data: { + str: send_string + } + }); + } else { + //这里需要将string发送出去 + window.parent.postMessage({ + str: send_string + }, "*"); // 替换为Vue应用的URL + } +} +//在收到数据后需要调用这个函数 +function MQTT_recv(string) { + console.log("MQTT 接收:" + string); + let json = jQuery.parseJSON(string); + let href = pageName(); + if ("error_code" in json) { + console.log("MQTT接收到回复码" + json.error_code); + } + var str = JSON.stringify(json); + string = str; + console.log("MQTT 处理后:" + string); + if (href == "screen_main") { + console.log("now -> screen_main"); + cmd_reply_parse_fun(string); + } + else if (href == "screen_par") { + console.log("now -> screen_par"); + screen_par_reply_parse_fun(string); + } + else if (href == "screen_program") { + console.log("now -> screen_program"); + program_list_reply_parse_fun(string); + } + else if (href == "screen_virtual") { + console.log("now -> screen_virtual"); + screen_virtual_reply_parse_fun(string); + } + else if (href == "content_pattern1") { + console.log("now -> content_pattern1"); + content_pattern_reply_parse_fun(string); + } + else if (href == "voice") { + console.log("now -> voice"); + voice_reply_parse_fun(string); + } +} diff --git a/public/web/js/content.js b/public/web/js/content.js new file mode 100644 index 0000000..97f663d --- /dev/null +++ b/public/web/js/content.js @@ -0,0 +1,930 @@ +const width_screen = 64; +const height_screen = 64; +const txt_preview = document.getElementById("preview_canvas"); +const txt_draw = document.getElementById("txt_canvas"); +const input_ctl=document.getElementById('screen_info'); +const f_color = document.getElementById('fcolor0'); +const f_style = document.getElementById('txt_style0'); +const f_stretch=document.getElementById('stretch_act0') +const h_align_ctrl = document.getElementById("h-align0"); +const v_align_ctrl = document.getElementById("v-align0"); +const font_type_ctl = document.getElementById("font0"); +const font_size_ctl = document.getElementById("fontsize0"); +const animation_type_ctl = document.getElementById("tx0"); +const p_pausetime = document.getElementById('stay0'); +const button_ctl =document.getElementById('btn_set'); +const g_zoom_preview = 5; +var g_text_resrtcut_arry;//重组后的字符数组(字符串数组) +var g_text_line_width;//每一行的宽度,(数组) +var g_text_page_line;//每一页的行数,数组元素的个数,代表了总共有多少页,(数组),g_text_page_line[x]代表该页有多少行 +var back_ground_img;//预览文字背景 +var preview_img_data;//预览文字图片 +var img_rgb_data; + //对文字进行预处理,根据屏幕的宽度,将文字存放到二维数组,二维数组行数代表屏幕上有几行 + function restruct_input_text() + { + var row_txt_array = input_ctl.value; + var font_size = parseInt(font_size_ctl.value); + var animation_type = parseInt(animation_type_ctl.value); + var line = 0; + var cur_index = 0; + g_text_resrtcut_arry = null; + g_text_line_width = null; + g_text_page_lines = null; + if(row_txt_array.length != 0) + { + g_text_resrtcut_arry = new Array(); + g_text_line_width = new Array(); + g_text_page_lines = new Array(); + g_text_page_lines[0] = 0; + } + else + { + return; + } + var line_max_per_screen = parseInt(height_screen/font_size); + if(line_max_per_screen == 0) + { + line_max_per_screen = 1; + } + + if(animation_type == 6)//连续左移单独处理,因为不需要分页 + { + g_text_resrtcut_arry[0] = row_txt_array; + + var x_width = 0; + for(var i=0; i 255) //中文 + { + x_width += font_size; + } + else + { + x_width += font_size/2; + } + } + + g_text_line_width[0] = Math.ceil(x_width/8)*8; + g_text_page_lines[0] = 1; + } + else + { + var page = 0; + while(1) + { + var text_write_width = 0; + var row = 0; + while(1) + { + if(font_size > width_screen)//字体大于屏幕宽度 + { + if(g_text_resrtcut_arry[line] == null) + { + g_text_resrtcut_arry[line] = row_txt_array.substring(cur_index, cur_index + 1); + g_text_line_width[line] = width_screen; + } + else + { + g_text_resrtcut_arry[line] += row_txt_array.substring(cur_index, cur_index + 1); + g_text_line_width[line] += width_screen; + } + + cur_index++; + line++; + + if(line >= (page+1)*line_max_per_screen)//换一页 + { + g_text_page_lines[page] += 1; + page++; + g_text_page_lines[page] = 0; + } + else + { + g_text_page_lines[page] += 1; + } + + if(cur_index < row_txt_array.length)//文字未取完 + { + break;//写不下 换行 + } + } + else{ + if (row_txt_array.charCodeAt(cur_index) > 255) //中文 + { + if((text_write_width + font_size) <= width_screen) + { + if(g_text_resrtcut_arry[line] == null) + { + g_text_resrtcut_arry[line] = row_txt_array.substring(cur_index, cur_index + 1); + g_text_line_width[line] = font_size; + } + else + { + g_text_resrtcut_arry[line] += row_txt_array.substring(cur_index, cur_index + 1); + g_text_line_width[line] += font_size; + } + + text_write_width += font_size; + cur_index++; + } + else + { + line++; + if(line >= (page+1)*line_max_per_screen)//换一页 + { + g_text_page_lines[page] += 1; + page++; + g_text_page_lines[page] = 0; + } + else + { + g_text_page_lines[page] += 1; + } + break;//写不下 换行 + } + } + else + { + if((text_write_width + font_size/2) <= width_screen) + { + if(g_text_resrtcut_arry[line] == null) + { + g_text_resrtcut_arry[line] = row_txt_array.substring(cur_index, cur_index + 1); + g_text_line_width[line] = font_size/2; + } + else + { + g_text_resrtcut_arry[line] += row_txt_array.substring(cur_index, cur_index + 1); + g_text_line_width[line] += font_size/2; + } + + text_write_width += font_size/2; + cur_index++; + } + else + { + line++; + if(line >= (page+1)*line_max_per_screen)//换一页 + { + g_text_page_lines[page] += 1; + page++; + g_text_page_lines[page] = 0; + } + else + { + g_text_page_lines[page] += 1; + } + break; + } + } + } + + if(cur_index >= row_txt_array.length)//文字取完 + { + if(g_text_resrtcut_arry[line].length != 0)//如果最后一行不是空,但并没有完整的一行 + { + g_text_page_lines[page] += 1; + } + return;//结束 + } + } + } + } + } + function uint8arrayToBase64(u8Arr) { + let CHUNK_SIZE = 0x8000; //arbitrary number + let index = 0; + let length = u8Arr.length; + let result = ''; + let slice; + while (index < length) { + slice = u8Arr.subarray(index, Math.min(index + CHUNK_SIZE, length)); + result += String.fromCharCode.apply(null, slice); + index += CHUNK_SIZE; + } + return btoa(result); + } + // //将图片二值化 + function img_binarization(img_rgb_data) + { + var tmp = 0; + var j = 0,k = 0; + + var bin_arry = new Uint8Array(img_rgb_data.data.length/32); + for(var i=0; irebuild preview img data"); + } + else if(animation_int == 6)//连续左移 + { + var cxt = txt_draw.getContext("2d"); + draw_scroll_img(font_int,1); + img_rgb_data = cxt.getImageData(0,0,txt_draw.width,txt_draw.height); + draw_scroll_img(font_int,5); + preview_img_data = new Image(); + preview_img_data.src = txt_draw.toDataURL("../img/png"); + var font_style =parseInt(f_style.value) + var font_type = font_type_ctl.value + if(font_style==1){ + cxt.font="bold "+ font_size.toString() + "px "+font_type; + }else{ + cxt.font="lighter"+ font_size.toString() + "px "+font_type; + } + + } + else if(animation_int == 2 || animation_int == 3)//左移或者右移 + { + //TODO + var type = animation_int==2?0:1; + var cxt = txt_draw.getContext("2d"); + draw_horizontal_continue_img(font_int,H_align,V_align,total_line_nums,total_pages,type,1); + img_rgb_data = cxt.getImageData(0,0,txt_draw.width,txt_draw.height); + draw_horizontal_continue_img(font_int,H_align,V_align,total_line_nums,total_pages,type,g_zoom_preview); + preview_img_data = new Image(); + preview_img_data.src = txt_draw.toDataURL("../img/png"); + if(font_style==1){ + cxt.font="bold "+ font_size.toString() + "px "+font_type; + }else{ + cxt.font="lighter"+ font_size.toString() + "px "+font_type; + } + } + if(font_stretch==1){ + var width= cxt.measureText(input_ctl.value).width + if(width <= 64){ + cxt.scale(width,1.35,x_offset) + } + + }else if(font_stretch==2){ + var width= cxt.measureText(input_ctl.value).width/80 + if(width <= 64){ + cxt.scale(width,1.5,y_offset) + cxt.save() + } + } + + } + + function draw_backgroud(width, height, scale) { + txt_preview.setAttribute("width", width*scale); + txt_preview.setAttribute("height", height*scale); + var cxt = txt_preview.getContext("2d"); + cxt.fillStyle = "rgba(0,0,0,0.9)" //背景 + cxt.fillRect(0, 0, width * scale, height * scale); + cxt.beginPath(); + cxt.strokeStyle = 'rgba(255,255,255,0.3)'; //水平线条 + for (var i = 0; i < height * scale; i += 1 * scale) { + cxt.moveTo(0, i); + cxt.lineTo(width * scale, i); + } + for (var i = 0; i < width * scale; i += 1 * scale) { //竖直线条 + cxt.moveTo(i, 0); + cxt.lineTo(i, height * scale); + } + cxt.stroke(); + + var img = new Image(); + img.src = txt_preview.toDataURL("../img/png"); + return img; + } + + var cur_page_pre = 0; + var page_init = 0; + var cur_y_offset = 0; + var cur_x_offset = 0; + var cur_line_pre = 0; + var max_offset = 0; + var timer = 0; + var font_size = parseInt(font_size_ctl.value); + var font_type=font_type_ctl.value; + var font_style=parseInt(f_style.value); + function drawFrame() + { + var animation = parseInt(animation_type_ctl.value);//动画方式 + var cxt = txt_preview.getContext("2d"); + if(animation == 1)//立即显示 + { + // console.log("--->draw page,cur_page_pre=%d",cur_page_pre); + cxt.clearRect(0,0,width_screen*g_zoom_preview,height_screen*g_zoom_preview); + cxt.drawImage(back_ground_img,0,0); + cxt.drawImage(preview_img_data, 0,cur_page_pre*height_screen*g_zoom_preview, width_screen*g_zoom_preview, height_screen*g_zoom_preview, 0, 0, width_screen*g_zoom_preview, g_zoom_preview*height_screen); + } + else if(animation == 2)//左移 + { + if(cur_x_offset < cur_page_pre*width_screen*g_zoom_preview) + { + cur_x_offset += 1*g_zoom_preview; + timer = setTimeout("drawFrame()",30); + } + + cxt.clearRect(0,0,width_screen*g_zoom_preview,height_screen*g_zoom_preview); + cxt.drawImage(back_ground_img,0,0); + cxt.drawImage(preview_img_data, cur_x_offset, 0, width_screen*g_zoom_preview, height_screen*g_zoom_preview, 0, 0, width_screen*g_zoom_preview, g_zoom_preview*height_screen); + if(font_style==1){ + cxt.font="bold "+ font_size.toString() + "px "+font_type; + }else{ + cxt.font="lighter"+ font_size.toString() + "px "+font_type; + } + } + else if(animation == 3)//右移 + { + if(cur_x_offset > cur_page_pre*width_screen*g_zoom_preview) + { + cur_x_offset -= 1*g_zoom_preview; + timer = setTimeout("drawFrame()",20); + + } + cxt.clearRect(0,0,width_screen*g_zoom_preview,height_screen*g_zoom_preview); + cxt.drawImage(back_ground_img,0,0); + cxt.drawImage(preview_img_data, cur_x_offset, 0, width_screen*g_zoom_preview, height_screen*g_zoom_preview, 0, 0, width_screen*g_zoom_preview, g_zoom_preview*height_screen); + if(font_style==1){ + cxt.font="bold "+ font_size.toString() + "px "+font_type; + }else if(font_style==0){ + cxt.font="lighter"+ font_size.toString() + "px "+font_type; + } + } + else if(animation == 4)//上移 + { + if(cur_y_offset < cur_page_pre*height_screen*g_zoom_preview) + { + cur_y_offset += 1*g_zoom_preview; + timer = setTimeout("drawFrame()",20); + } + + cxt.clearRect(0,0,width_screen*g_zoom_preview,height_screen*g_zoom_preview); + cxt.drawImage(back_ground_img,0,0); + cxt.drawImage(preview_img_data, 0, cur_y_offset, width_screen*g_zoom_preview, height_screen*g_zoom_preview, 0, 0, width_screen*g_zoom_preview, g_zoom_preview*height_screen); + } + else if(animation == 5)//下移 + { + if(cur_y_offset > cur_page_pre*height_screen*g_zoom_preview) + { + cur_y_offset -= 1*g_zoom_preview; + timer = setTimeout("drawFrame()",20); + } + cxt.clearRect(0,0,width_screen*g_zoom_preview,height_screen*g_zoom_preview); + cxt.drawImage(back_ground_img,0,0); + cxt.drawImage(preview_img_data, 0, cur_y_offset, width_screen*g_zoom_preview, height_screen*g_zoom_preview, 0, 0, width_screen*g_zoom_preview, g_zoom_preview*height_screen); + cxt.font="lighter"+ font_size.toString() + "px "+font_type; + } + else if(animation == 6)//连续左移 + { + cxt.clearRect(0,0,width_screen*g_zoom_preview,height_screen*g_zoom_preview); + cxt.drawImage(back_ground_img,0,0); + cxt.drawImage(preview_img_data, cur_x_offset, 0, width_screen*g_zoom_preview, 32*g_zoom_preview, 0, 16*g_zoom_preview, width_screen*g_zoom_preview, 32*g_zoom_preview); + cur_x_offset += 2; + if(cur_x_offset > g_text_line_width[0]*g_zoom_preview) + { + cur_x_offset = 0; + } + timer = setTimeout("drawFrame()",30); + } + + } + var scroll_run = 0; + var timer_task; + function animation_display() + { + var animation = parseInt(animation_type_ctl.value);//动画方式 + if(typeof(g_text_page_lines) == undefined) + { + return; + } + var total_pages = g_text_page_lines.length; + + if(animation == 1 || animation==4 || animation==5)//上下切换方式的 + { + if(animation != 5) + { + cur_page_pre++; + if(cur_page_pre >= total_pages || page_init == 1) + { + cur_page_pre = 0; + cur_y_offset = 0; + } + } + else + { + cur_page_pre--; + if(cur_page_pre < 0 || page_init == 1) + { + cur_page_pre = total_pages-1; + cur_y_offset = (total_pages-1)*height_screen*g_zoom_preview; + } + } + clearTimeout(timer); + drawFrame(); + } + else if(animation == 6)//连续左移 + { + if(!scroll_run) + { + clearTimeout(timer); + drawFrame(); + scroll_run = 1; + } + + } + else if(animation == 2 || animation == 3)//左右切换方式的 + { + if(animation == 2) + { + cur_page_pre++; + if(cur_page_pre >= total_pages || page_init == 1) + { + cur_page_pre = 0; + cur_x_offset = 0; + } + } + else + { + cur_page_pre--; + if(cur_page_pre < 0 || page_init == 1) + { + cur_page_pre = total_pages-1; + cur_x_offset = (total_pages-1)*height_screen*g_zoom_preview; + } + } + clearTimeout(timer); + drawFrame(); + } + page_init = 0; + timer_task = setTimeout("animation_display()",3000); + } + function re_draw_screens() + { + restruct_input_text(); + dynamic_draw_txt(); + clearTimeout(timer_task); + page_init = 1; + + timer_task = setTimeout("animation_display()",200); + } + + window.onload = () => { + back_ground_img = draw_backgroud(width_screen, height_screen, 5); + re_draw_screens(); + } + + //将图片二值化 + function img_binarization(img_rgb_data) + { + var tmp = 0; + var j = 0,k = 0; + + var bin_arry = new Uint8Array(img_rgb_data.data.length/32); + for(var i=0; i { + // re_draw_screens(); + // var img_string = img_binarization(img_rgb_data); + + // // httpPost("img_data",img_string); + // } + + input_ctl.onchange = () => { + + re_draw_screens(); + + } + p_pausetime.onchange=()=>{ + + re_draw_screens(); + + } + f_color.onchange=()=>{ + + re_draw_screens(); + } + font_size_ctl.onchange = () => { + re_draw_screens(); + } + font_type_ctl.onchange = () => { + re_draw_screens(); + } + f_style.onchange=()=>{ + re_draw_screens(); + } + f_stretch.onclick=()=>{ + re_draw_screens(); + } + h_align_ctrl.onchange = () => { + re_draw_screens(); + } + v_align_ctrl.onchange = () => { + re_draw_screens(); + } + animation_type_ctl.onchange = () => { + re_draw_screens(); + } + // button_ctl.onclick= () => { + // var canvas_width = txt_draw.getAttribute("width")/g_zoom_preview; + // var canvas_height = txt_draw.getAttribute("height")/g_zoom_preview; + // var img_string = img_binarization(img_rgb_data); + // var post_string = + // `${img_string}${animation_type_ctl.value}${canvas_width}${canvas_height}`; + // httpPost("data.json", post_string); + // console.log(post_string) + // return false + // } + \ No newline at end of file diff --git a/public/web/js/data.js b/public/web/js/data.js new file mode 100644 index 0000000..c9da4f7 --- /dev/null +++ b/public/web/js/data.js @@ -0,0 +1,282 @@ +$(function () { + var baseHost = document.location.origin + /*********************************************************登录页面数据提交**************************************************/ + // $('#login').on('click', function () { + // var pwd = $('#pwd').val() + // var login = {} + // login.log_in = new Object() + // login.log_in.type = 1 + // login.log_in.pass = pwd + // console.log(JSON.stringify(login)) + // if (!pwd.trim().length) { + // $('.toast').css('display', 'flex') + // setTimeout(function () { + // $('.toast').css('display', 'none') + // }, 2000) + // return false + // } + // //1.创建ajax对象 + // var xhr = new XMLHttpRequest() + // //2.连接服务器 + // xhr.open('post', baseHost + '/log_in', true) + // //3.设置请求头信息 + // xhr.setRequestHeader('content-type', 'application/json') + // //4.发送请求 + // xhr.send(JSON.stringify(login)); + // xhr.onreadystatechange = function () { + // if (xhr.readyState == 4 && xhr.status == 200) { + // //1.服务器返回的json格式数据 + // var json = xhr.responseText + // console.log(JSON.stringify(json)) + // //alert(xhr.responseText) + // /*2. + // *通过eval方法将上面的数据转换成json格式, + // *上面数据的所有双引号全部转换成单引号 + // */ + // var result = eval("(" + json.replace(/"/g, "'") + ")") + // /* 3.转换成json格式后可以通过对象的方式进行访问,既通过“.”的方式 + // * 判断从服务器返回值中return是否等于0 + // * 0:密码正确 1:密码错误 + // */ + // if (result.log_in.return == 0) { + // alert("登录成功!") + // window.location.href = "/screen_main.html" + // return + // } + // else { + // alert("登录失败!") + // return + // } + // } + // } + // }) + /*********************************************************密码修改页面数据提交**************************************************/ + // $('#submit').on('click', function () { + // var rawPwd = $('#raw_pass').val() + // var newPwd = $('#new_pwd').val() + // var rePwd = $('#pwdOK').val() + // var submit = {} + // submit.log_in = new Object() + // submit.log_in.type = 2 + // submit.log_in.pass = rawPwd + // submit.log_in.new_pass = newPwd + // console.log(JSON.stringify(submit)) + // if (!newPwd.trim().length || !rePwd.trim().length) { + // $('.toast').css('display', 'flex') + // setTimeout(function () { + // $('.toast').css('display', 'none') + // }, 2000) + // return false + // } else if (newPwd != rePwd) { + // alert('新密码与确认密码不一致') + // return false + // } + // //1.创建ajax对象 + // var xhr = new XMLHttpRequest() + // xhr.open('post', baseHost + '/log_in', true) + // xhr.setRequestHeader('content-type', 'application/json') + // xhr.send(JSON.stringify(submit)) + // xhr.onreadystatechange = function () { + // if (xhr.readyState == 4 && xhr.status == 200) { + // //1.服务器返回的json格式数据 + // var json = xhr.responseText + // console.log(json) + // /*2. + // *通过eval方法将上面的数据转换成json格式, + // *上面数据的所有双引号全部转换成单引号 + // */ + // var result = eval("(" + json.replace(/"/g, "'") + ")") + // /* 3.转换成json格式后可以通过对象的方式进行访问,既通过“.”的方式 + // * 判断从服务器返回值中return是否等于0 + // * 0:密码正确 1:密码错误 + // */ + // if (result.log_in.return == 0) { + // alert("修改密码成功!") + // window.location.href = "/login.html" + // return + // } + // else { + // alert("修改密码失败!") + // return false + // } + // } + // } + // }) + // //单击取消按钮,跳转至登录页面 + // $("#reset").on('click', function () { + // window.location.href = '/login.html' + // }) + /*********************************************************屏幕参数页面数据提交->读取数据**************************************************/ + // function item_init(obj) { + // document.getElementById('sw').value = obj.screen_p.w + // document.getElementById('sh').value = obj.screen_p.h + // if (obj.screen_p.oe == 0 && obj.screen_p.data == 1) { + // document.getElementById('two-color').checked = "checked" + // } else { + // document.getElementById('mono').checked = "checked" + // } + // document.getElementById('srt').value = obj.screen_p.screen_angle + // } + // // read intial values + // fetch(`${baseHost}/p/get?`) + // //异步执行 避免数据没获取到等问题 + // .then(function (response) { + // return response.json() + // }) + // .then(function (state) { + // item_init(state) + // }).catch(function (arr) { + // console.log(arr) + // }) + // $('#read').on('click', function () { + // fetch(`${baseHost}/p/get?`) + // //异步执行 避免数据没获取到等问题 + // .then(function (response) { + // return response.json() + // }) + // .then(function (state) { + // item_init(state) + // }).catch(function (arr) { + // console.log(arr) + // }) + // }) + /*********************************************************屏幕参数页面数据提交->设置数据**************************************************/ + // $('#set').on('click', function () { + // var screen_width = parseInt($('#sw').val()) + // var screen_height = parseInt($('#sh').val()) + // var oecolor = $("input[type='radio']:checked").val() + // var screen_angle = parseInt($('#srt').val()) + // var screen = {} + // screen.screen_p = new Object() + // //获取屏幕宽度、高度 + // screen.screen_p.w = screen_width + // screen.screen_p.h = screen_height + // /*mono:单色 two-color:双色 + // *如果oecolor==momo 输出oe极性为1 另一个值则为0 + // */ + // if (oecolor === "mono") { + // screen.screen_p.oe = 1 + // screen.screen_p.data = 0 + // } else { + // screen.screen_p.oe = 0 + // screen.screen_p.data = 1 + // } + // screen.screen_p.screen_angle = screen_angle + // console.log(JSON.stringify(screen)) + // var xhr = new XMLHttpRequest() + // xhr.open('post', baseHost + '/p/set', true) + // xhr.setRequestHeader('content-type', 'application/json') + // xhr.send(JSON.stringify(screen)) + // xhr.onreadystatechange = function () { + // if (xhr.readyState == 4 && xhr.status == 200) { + // var info = xhr.responseText + // if (info == "OK") { + // alert("屏幕参数设置成功!") + // } + // } + // } + // }) + /*********************************************************屏幕操作指令**************************************************/ + /*1.开启屏幕 + *当type=1时,data1的值为1表示关闭屏幕、值为2表示开启屏幕、值为3时清除屏幕 + */ + $('#start').on('click', function () { + var screen_start = {} + screen_start.cmd = new Object() + screen_start.cmd.type = 1 + screen_start.cmd.data1 = 2 + screen_start.cmd.data2 = 0 + screen_start.cmd.data3 = 0 + console.log(JSON.stringify(screen_start)) + var xhr = new XMLHttpRequest() + xhr.open('POST', baseHost + '/cmd', true) + xhr.setRequestHeader('content-type', 'application/json') + xhr.send(JSON.stringify(screen_start)) + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + var info = xhr.responseText + if (info == "OK") { + alert("开启屏幕成功!") + } + } + } + // alert(JSON.stringify(screen_start)) + }) + //关闭屏幕 + $('#close').on('click', function () { + var screen_close = {} + screen_close.cmd = new Object() + screen_close.cmd.type = 1 + screen_close.cmd.data1 = 1 + screen_close.cmd.data2 = 0 + screen_close.cmd.data3 = 0 + console.log(JSON.stringify(screen_close)) + var xhr = new XMLHttpRequest() + xhr.open('POST', baseHost + '/cmd', true) + xhr.setRequestHeader('content-type', 'application/json') + xhr.send(JSON.stringify(screen_close)) + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + var info = xhr.responseText + if (info == "OK") { + alert("关闭屏幕成功!") + } + } + } + return false + }) + + //清除屏幕 + $('#clear').on('click', function () { + var screen_clear = {} + screen_clear.cmd = new Object() + screen_clear.cmd.type = 1 + screen_clear.cmd.data1 = 3 + screen_clear.cmd.data2 = 0 + screen_clear.cmd.data3 = 0 + console.log(JSON.stringify(screen_clear)) + var xhr = new XMLHttpRequest() + xhr.open('POST', baseHost + '/cmd', true) + xhr.send(JSON.stringify(screen_clear)) + xhr.setRequestHeader('content-type', 'application/json') + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + var info = xhr.responseText + if (info == "OK") { + alert("清除屏幕成功!") + } + } + } + return false + }) + /*********************************************************模式选择 pattern**************************************************/ + /*mode1:单色屏幕 播放项为纯文字 + mode2:双色屏幕 播放项为文字和图片 + mode3:彩色屏幕 + * + */ + $("#pattern1").on('click', function () { + var screen_pattern = {} + screen_pattern.cmd = new Object() + screen_pattern.cmd.mode = 1 + var screen_start = {} + screen_start.cmd = new Object() + screen_start.cmd.type = 1 + screen_start.cmd.data1 = 2 + var xhr = new XMLHttpRequest() + xhr.open('POST', baseHost + '/cmd', true) + xhr.send(JSON.stringify(screen_pattern)) + // xhr.setRequestHeader('content-type', 'application/json') + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + var info = xhr.responseText + if (info == "OK") { + alert("接入屏幕成功!") + window.location.href = "/content.html" + return + } + } + } + }) + +}) diff --git a/public/web/js/jquery-3.4.1.min.js b/public/web/js/jquery-3.4.1.min.js new file mode 100644 index 0000000..a1c07fd --- /dev/null +++ b/public/web/js/jquery-3.4.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0 255) { + json_id = 0; +} diff --git a/public/web/js/mp3-engine.js b/public/web/js/mp3-engine.js new file mode 100644 index 0000000..50c30fb --- /dev/null +++ b/public/web/js/mp3-engine.js @@ -0,0 +1,11401 @@ +/* +mp3编码器用到的lamejs编码引擎,一般都用MP3格式,浏览器支持广泛,此引擎测试的也比较多,稳定 +https://github.com/xiangyuecn/Recorder + +由此源码改动而来 (2023-09-25 大幅精简代码,移除了大量从未调用的函数、条件分支)(2019-11-03 精简代码) +https://github.com/zhuker/lamejs/blob/bfb7f6c6d7877e0fe1ad9e72697a871676119a0e/lame.all.js +*/ +(function(factory){ + var browser=typeof window=="object" && !!window.document; + var win=browser?window:Object; //非浏览器环境,Recorder挂载在Object下面 + var rec=win.Recorder; + factory(rec); +}(function(Recorder){ //需要在Worker中运行,不能使用Recorder里的方法,包括$T +"use strict"; + +function lamejs() { +var Math_log10=function(s){//坚决不能用也不要报语言问题的错误 + return Math.log(s)/Math.log(10); +}; +var abort=function(what){ + throw new Error("abort(" + what + ")") +}; + +function new_byte(count) { + return new Int8Array(count); +} + +function new_short(count) { + return new Int16Array(count); +} + +function new_int(count) { + return new Int32Array(count); +} + +function new_float(count) { + return new Float32Array(count); +} + +function new_double(count) { + return new Float64Array(count); +} + +function new_float_n(args) { + if (args.length == 1) { + return new_float(args[0]); + } + var sz = args[0]; + args = args.slice(1); + var A = []; + for (var i = 0; i < sz; i++) { + A.push(new_float_n(args)); + } + return A; +} +function new_int_n(args) { + if (args.length == 1) { + return new_int(args[0]); + } + var sz = args[0]; + args = args.slice(1); + var A = []; + for (var i = 0; i < sz; i++) { + A.push(new_int_n(args)); + } + return A; +} + +function new_short_n(args) { + if (args.length == 1) { + return new_short(args[0]); + } + var sz = args[0]; + args = args.slice(1); + var A = []; + for (var i = 0; i < sz; i++) { + A.push(new_short_n(args)); + } + return A; +} + +function new_array_n(args) { + if (args.length == 1) { + return new Array(args[0]); + } + var sz = args[0]; + args = args.slice(1); + var A = []; + for (var i = 0; i < sz; i++) { + A.push(new_array_n(args)); + } + return A; +} + + +var Arrays = {}; + +Arrays.fill = function (a, fromIndex, toIndex, val) { + if (arguments.length == 2) { + for (var i = 0; i < a.length; i++) { + a[i] = arguments[1]; + } + } else { + for (var i = fromIndex; i < toIndex; i++) { + a[i] = val; + } + } +}; + +var System = {}; + +System.arraycopy = function (src, srcPos, dest, destPos, length) { + var srcEnd = srcPos + length; + while (srcPos < srcEnd) + dest[destPos++] = src[srcPos++]; +}; + + +var Util = {}; +Util.SQRT2 = 1.41421356237309504880; +Util.FAST_LOG10 = function (x) { + return Math_log10(x); +}; + +Util.FAST_LOG10_X = function (x, y) { + return Math_log10(x) * y; +}; + +function ShortBlock(ordinal) { + this.ordinal = ordinal; +} +/** + * LAME may use them, even different block types for L/R. + */ +ShortBlock.short_block_allowed = new ShortBlock(0); +/** + * LAME may use them, but always same block types in L/R. + */ +ShortBlock.short_block_coupled = new ShortBlock(1); +/** + * LAME will not use short blocks, long blocks only. + */ +ShortBlock.short_block_dispensed = new ShortBlock(2); +/** + * LAME will not use long blocks, short blocks only. + */ +ShortBlock.short_block_forced = new ShortBlock(3); + +var Float = {}; +Float.MAX_VALUE = 3.4028235e+38; + +function VbrMode(ordinal) { + this.ordinal = ordinal; +} +VbrMode.vbr_off = new VbrMode(0); +VbrMode.vbr_mt = new VbrMode(1); +VbrMode.vbr_rh = new VbrMode(2); +VbrMode.vbr_abr = new VbrMode(3); +VbrMode.vbr_mtrh = new VbrMode(4); +VbrMode.vbr_default = VbrMode.vbr_mtrh; + +var assert = function (x) { + abort(x); +}; + +var module_exports = { + "System": System, + "VbrMode": VbrMode, + "Float": Float, + "ShortBlock": ShortBlock, + "Util": Util, + "Arrays": Arrays, + "new_array_n": new_array_n, + "new_byte": new_byte, + "new_double": new_double, + "new_float": new_float, + "new_float_n": new_float_n, + "new_int": new_int, + "new_int_n": new_int_n, + "new_short": new_short, + "new_short_n": new_short_n, + "assert": assert +}; +//package mp3; + +/* MPEG modes */ +function MPEGMode(ordinal) { + var _ordinal = ordinal; + this.ordinal = function () { + return _ordinal; + } +} + +MPEGMode.STEREO = new MPEGMode(0); +MPEGMode.JOINT_STEREO = new MPEGMode(1); +MPEGMode.DUAL_CHANNEL = new MPEGMode(2); +MPEGMode.MONO = new MPEGMode(3); +MPEGMode.NOT_SET = new MPEGMode(4); + +function Version() { + + /** + * URL for the LAME website. + */ + //var LAME_URL = "http://www.mp3dev.org/"; + + /** + * Major version number. + */ + var LAME_MAJOR_VERSION = 3; + /** + * Minor version number. + */ + var LAME_MINOR_VERSION = 98; + /** + * Patch level. + */ + var LAME_PATCH_VERSION = 4; + + //fix cc 精简 + + /** + * The short version of the LAME version string. + * + * @return short version of the LAME version string + */ + this.getLameShortVersion = function () { + // Adding date and time to version string makes it harder for output + // validation + return (LAME_MAJOR_VERSION + "." + LAME_MINOR_VERSION + "." + LAME_PATCH_VERSION); + } + + //fix cc 精简 + +} + +/* + * MP3 huffman table selecting and bit counting + * + * Copyright (c) 1999-2005 Takehiro TOMINAGA + * Copyright (c) 2002-2005 Gabriel Bouvigne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: Takehiro.java,v 1.26 2011/05/24 20:48:06 kenchis Exp $ */ + +//package mp3; + +//import java.util.Arrays; + + + +function Takehiro() { + + var qupvt = null; + this.qupvt = null; + + this.setModules = function (_qupvt) { + this.qupvt = _qupvt; + qupvt = _qupvt; + } + + function Bits(b) { + this.bits = 0 | b; + } + + var subdv_table = [[0, 0], /* 0 bands */ + [0, 0], /* 1 bands */ + [0, 0], /* 2 bands */ + [0, 0], /* 3 bands */ + [0, 0], /* 4 bands */ + [0, 1], /* 5 bands */ + [1, 1], /* 6 bands */ + [1, 1], /* 7 bands */ + [1, 2], /* 8 bands */ + [2, 2], /* 9 bands */ + [2, 3], /* 10 bands */ + [2, 3], /* 11 bands */ + [3, 4], /* 12 bands */ + [3, 4], /* 13 bands */ + [3, 4], /* 14 bands */ + [4, 5], /* 15 bands */ + [4, 5], /* 16 bands */ + [4, 6], /* 17 bands */ + [5, 6], /* 18 bands */ + [5, 6], /* 19 bands */ + [5, 7], /* 20 bands */ + [6, 7], /* 21 bands */ + [6, 7], /* 22 bands */ + ]; + + + /** + * nonlinear quantization of xr More accurate formula than the ISO formula. + * Takes into account the fact that we are quantizing xr . ix, but we want + * ix^4/3 to be as close as possible to x^4/3. (taking the nearest int would + * mean ix is as close as possible to xr, which is different.) + * + * From Segher Boessenkool 11/1999 + * + * 09/2000: ASM code removed in favor of IEEE754 hack by Takehiro Tominaga. + * If you need the ASM code, check CVS circa Aug 2000. + * + * 01/2004: Optimizations by Gabriel Bouvigne + */ + function quantize_lines_xrpow_01(l, istep, xr, xrPos, ix, ixPos) { + var compareval0 = (1.0 - 0.4054) / istep; + + l = l >> 1; + while ((l--) != 0) { + ix[ixPos++] = (compareval0 > xr[xrPos++]) ? 0 : 1; + ix[ixPos++] = (compareval0 > xr[xrPos++]) ? 0 : 1; + } + } + + /** + * XRPOW_FTOI is a macro to convert floats to ints.
+ * if XRPOW_FTOI(x) = nearest_int(x), then QUANTFAC(x)=adj43asm[x]
+ * ROUNDFAC= -0.0946
+ * + * if XRPOW_FTOI(x) = floor(x), then QUANTFAC(x)=asj43[x]
+ * ROUNDFAC=0.4054
+ * + * Note: using floor() or 0| is extremely slow. On machines where the + * TAKEHIRO_IEEE754_HACK code above does not work, it is worthwile to write + * some ASM for XRPOW_FTOI(). + */ + function quantize_lines_xrpow(l, istep, xr, xrPos, ix, ixPos) { + + l = l >> 1; + var remaining = l % 2; + l = l >> 1; + while (l-- != 0) { + var x0, x1, x2, x3; + var rx0, rx1, rx2, rx3; + + x0 = xr[xrPos++] * istep; + x1 = xr[xrPos++] * istep; + rx0 = 0 | x0; + x2 = xr[xrPos++] * istep; + rx1 = 0 | x1; + x3 = xr[xrPos++] * istep; + rx2 = 0 | x2; + x0 += qupvt.adj43[rx0]; + rx3 = 0 | x3; + x1 += qupvt.adj43[rx1]; + ix[ixPos++] = 0 | x0; + x2 += qupvt.adj43[rx2]; + ix[ixPos++] = 0 | x1; + x3 += qupvt.adj43[rx3]; + ix[ixPos++] = 0 | x2; + ix[ixPos++] = 0 | x3; + } + if (remaining != 0) { + var x0, x1; + var rx0, rx1; + + x0 = xr[xrPos++] * istep; + x1 = xr[xrPos++] * istep; + rx0 = 0 | x0; + rx1 = 0 | x1; + x0 += qupvt.adj43[rx0]; + x1 += qupvt.adj43[rx1]; + ix[ixPos++] = 0 | x0; + ix[ixPos++] = 0 | x1; + } + } + + /** + * Quantization function This function will select which lines to quantize + * and call the proper quantization function + */ + function quantize_xrpow(xp, pi, istep, codInfo, prevNoise) { + /* quantize on xr^(3/4) instead of xr */ + var sfb; + var sfbmax; + var j = 0; + var prev_data_use; + var accumulate = 0; + var accumulate01 = 0; + var xpPos = 0; + var iData = pi; + var iDataPos = 0; + var acc_iData = iData; + var acc_iDataPos = 0; + var acc_xp = xp; + var acc_xpPos = 0; + + /* + * Reusing previously computed data does not seems to work if global + * gain is changed. Finding why it behaves this way would allow to use a + * cache of previously computed values (let's 10 cached values per sfb) + * that would probably provide a noticeable speedup + */ + prev_data_use = (prevNoise != null && (codInfo.global_gain == prevNoise.global_gain)); + + if (codInfo.block_type == Encoder.SHORT_TYPE) + sfbmax = 38; + else + sfbmax = 21; + + for (sfb = 0; sfb <= sfbmax; sfb++) { + var step = -1; + + if (prev_data_use || codInfo.block_type == Encoder.NORM_TYPE) { + step = codInfo.global_gain + - ((codInfo.scalefac[sfb] + (codInfo.preflag != 0 ? qupvt.pretab[sfb] + : 0)) << (codInfo.scalefac_scale + 1)) + - codInfo.subblock_gain[codInfo.window[sfb]] * 8; + } + if (prev_data_use && (prevNoise.step[sfb] == step)) { + /* + * do not recompute this part, but compute accumulated lines + */ + if (accumulate != 0) { + quantize_lines_xrpow(accumulate, istep, acc_xp, acc_xpPos, + acc_iData, acc_iDataPos); + accumulate = 0; + } + if (accumulate01 != 0) { + abort();//fix cc 精简 + } + } else { /* should compute this part */ + var l = codInfo.width[sfb]; + + if ((j + codInfo.width[sfb]) > codInfo.max_nonzero_coeff) { + /* do not compute upper zero part */ + var usefullsize; + usefullsize = codInfo.max_nonzero_coeff - j + 1; + Arrays.fill(pi, codInfo.max_nonzero_coeff, 576, 0); + l = usefullsize; + + if (l < 0) { + l = 0; + } + + /* no need to compute higher sfb values */ + sfb = sfbmax + 1; + } + + /* accumulate lines to quantize */ + if (0 == accumulate && 0 == accumulate01) { + acc_iData = iData; + acc_iDataPos = iDataPos; + acc_xp = xp; + acc_xpPos = xpPos; + } + if (prevNoise != null && prevNoise.sfb_count1 > 0 + && sfb >= prevNoise.sfb_count1 + && prevNoise.step[sfb] > 0 + && step >= prevNoise.step[sfb]) { + + if (accumulate != 0) { + quantize_lines_xrpow(accumulate, istep, acc_xp, + acc_xpPos, acc_iData, acc_iDataPos); + accumulate = 0; + acc_iData = iData; + acc_iDataPos = iDataPos; + acc_xp = xp; + acc_xpPos = xpPos; + } + accumulate01 += l; + } else { + if (accumulate01 != 0) { + quantize_lines_xrpow_01(accumulate01, istep, acc_xp, + acc_xpPos, acc_iData, acc_iDataPos); + accumulate01 = 0; + acc_iData = iData; + acc_iDataPos = iDataPos; + acc_xp = xp; + acc_xpPos = xpPos; + } + accumulate += l; + } + + if (l <= 0) { + /* + * rh: 20040215 may happen due to "prev_data_use" + * optimization + */ + if (accumulate01 != 0) { + abort();//fix cc 精简 + } + if (accumulate != 0) { + abort();//fix cc 精简 + } + + break; + /* ends for-loop */ + } + } + if (sfb <= sfbmax) { + iDataPos += codInfo.width[sfb]; + xpPos += codInfo.width[sfb]; + j += codInfo.width[sfb]; + } + } + if (accumulate != 0) { /* last data part */ + quantize_lines_xrpow(accumulate, istep, acc_xp, acc_xpPos, + acc_iData, acc_iDataPos); + accumulate = 0; + } + if (accumulate01 != 0) { /* last data part */ + abort();//fix cc 精简 + } + + } + + /** + * ix_max + */ + function ix_max(ix, ixPos, endPos) { + var max1 = 0, max2 = 0; + + do { + var x1 = ix[ixPos++]; + var x2 = ix[ixPos++]; + if (max1 < x1) + max1 = x1; + + if (max2 < x2) + max2 = x2; + } while (ixPos < endPos); + if (max1 < max2) + max1 = max2; + return max1; + } + + function count_bit_ESC(ix, ixPos, end, t1, t2, s) { + /* ESC-table is used */ + var linbits = Tables.ht[t1].xlen * 65536 + Tables.ht[t2].xlen; + var sum = 0, sum2; + + do { + var x = ix[ixPos++]; + var y = ix[ixPos++]; + + if (x != 0) { + if (x > 14) { + x = 15; + sum += linbits; + } + x *= 16; + } + + if (y != 0) { + if (y > 14) { + y = 15; + sum += linbits; + } + x += y; + } + + sum += Tables.largetbl[x]; + } while (ixPos < end); + + sum2 = sum & 0xffff; + sum >>= 16; + + if (sum > sum2) { + sum = sum2; + t1 = t2; + } + + s.bits += sum; + return t1; + } + + function count_bit_noESC(ix, ixPos, end, s) { + /* No ESC-words */ + var sum1 = 0; + var hlen1 = Tables.ht[1].hlen; + + do { + var x = ix[ixPos + 0] * 2 + ix[ixPos + 1]; + ixPos += 2; + sum1 += hlen1[x]; + } while (ixPos < end); + + s.bits += sum1; + return 1; + } + + function count_bit_noESC_from2(ix, ixPos, end, t1, s) { + /* No ESC-words */ + var sum = 0, sum2; + var xlen = Tables.ht[t1].xlen; + var hlen; + if (t1 == 2) + hlen = Tables.table23; + else + hlen = Tables.table56; + + do { + var x = ix[ixPos + 0] * xlen + ix[ixPos + 1]; + ixPos += 2; + sum += hlen[x]; + } while (ixPos < end); + + sum2 = sum & 0xffff; + sum >>= 16; + + if (sum > sum2) { + sum = sum2; + t1++; + } + + s.bits += sum; + return t1; + } + + function count_bit_noESC_from3(ix, ixPos, end, t1, s) { + /* No ESC-words */ + var sum1 = 0; + var sum2 = 0; + var sum3 = 0; + var xlen = Tables.ht[t1].xlen; + var hlen1 = Tables.ht[t1].hlen; + var hlen2 = Tables.ht[t1 + 1].hlen; + var hlen3 = Tables.ht[t1 + 2].hlen; + + do { + var x = ix[ixPos + 0] * xlen + ix[ixPos + 1]; + ixPos += 2; + sum1 += hlen1[x]; + sum2 += hlen2[x]; + sum3 += hlen3[x]; + } while (ixPos < end); + var t = t1; + if (sum1 > sum2) { + sum1 = sum2; + t++; + } + if (sum1 > sum3) { + sum1 = sum3; + t = t1 + 2; + } + s.bits += sum1; + + return t; + } + + /*************************************************************************/ + /* choose table */ + /*************************************************************************/ + + var huf_tbl_noESC = [1, 2, 5, 7, 7, 10, 10, 13, 13, + 13, 13, 13, 13, 13, 13]; + + /** + * Choose the Huffman table that will encode ix[begin..end] with the fewest + * bits. + * + * Note: This code contains knowledge about the sizes and characteristics of + * the Huffman tables as defined in the IS (Table B.7), and will not work + * with any arbitrary tables. + */ + function choose_table(ix, ixPos, endPos, s) { + var max = ix_max(ix, ixPos, endPos); + + switch (max) { + case 0: + return max; + + case 1: + return count_bit_noESC(ix, ixPos, endPos, s); + + case 2: + case 3: + return count_bit_noESC_from2(ix, ixPos, endPos, + huf_tbl_noESC[max - 1], s); + + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + return count_bit_noESC_from3(ix, ixPos, endPos, + huf_tbl_noESC[max - 1], s); + + default: + /* try tables with linbits */ + if (max > QuantizePVT.IXMAX_VAL) { + abort();//fix cc 精简 + } + max -= 15; + var choice2; + for (choice2 = 24; choice2 < 32; choice2++) { + if (Tables.ht[choice2].linmax >= max) { + break; + } + } + var choice; + for (choice = choice2 - 8; choice < 24; choice++) { + if (Tables.ht[choice].linmax >= max) { + break; + } + } + return count_bit_ESC(ix, ixPos, endPos, choice, choice2, s); + } + } + + /** + * count_bit + */ + this.noquant_count_bits = function (gfc, gi, prev_noise) { + var ix = gi.l3_enc; + var i = Math.min(576, ((gi.max_nonzero_coeff + 2) >> 1) << 1); + + if (prev_noise != null) + prev_noise.sfb_count1 = 0; + + /* Determine count1 region */ + for (; i > 1; i -= 2) + if ((ix[i - 1] | ix[i - 2]) != 0) + break; + gi.count1 = i; + + /* Determines the number of bits to encode the quadruples. */ + var a1 = 0; + var a2 = 0; + for (; i > 3; i -= 4) { + var p; + /* hack to check if all values <= 1 */ + //throw "TODO: HACK if ((((long) ix[i - 1] | (long) ix[i - 2] | (long) ix[i - 3] | (long) ix[i - 4]) & 0xffffffffL) > 1L " + //if (true) { + if (((ix[i - 1] | ix[i - 2] | ix[i - 3] | ix[i - 4]) & 0x7fffffff) > 1) { + break; + } + p = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2 + ix[i - 1]; + a1 += Tables.t32l[p]; + a2 += Tables.t33l[p]; + } + var bits = a1; + gi.count1table_select = 0; + if (a1 > a2) { + bits = a2; + gi.count1table_select = 1; + } + + gi.count1bits = bits; + gi.big_values = i; + if (i == 0) + return bits; + + if (gi.block_type == Encoder.SHORT_TYPE) { + a1 = 3 * gfc.scalefac_band.s[3]; + if (a1 > gi.big_values) + a1 = gi.big_values; + a2 = gi.big_values; + + } else if (gi.block_type == Encoder.NORM_TYPE) { + /* bv_scf has 576 entries (0..575) */ + a1 = gi.region0_count = gfc.bv_scf[i - 2]; + a2 = gi.region1_count = gfc.bv_scf[i - 1]; + + a2 = gfc.scalefac_band.l[a1 + a2 + 2]; + a1 = gfc.scalefac_band.l[a1 + 1]; + if (a2 < i) { + var bi = new Bits(bits); + gi.table_select[2] = choose_table(ix, a2, i, bi); + bits = bi.bits; + } + } else { + gi.region0_count = 7; + /* gi.region1_count = SBPSY_l - 7 - 1; */ + gi.region1_count = Encoder.SBMAX_l - 1 - 7 - 1; + a1 = gfc.scalefac_band.l[7 + 1]; + a2 = i; + if (a1 > a2) { + a1 = a2; + } + } + + /* have to allow for the case when bigvalues < region0 < region1 */ + /* (and region0, region1 are ignored) */ + a1 = Math.min(a1, i); + a2 = Math.min(a2, i); + + + /* Count the number of bits necessary to code the bigvalues region. */ + if (0 < a1) { + var bi = new Bits(bits); + gi.table_select[0] = choose_table(ix, 0, a1, bi); + bits = bi.bits; + } + if (a1 < a2) { + var bi = new Bits(bits); + gi.table_select[1] = choose_table(ix, a1, a2, bi); + bits = bi.bits; + } + if (gfc.use_best_huffman == 2) { + abort();//fix cc 精简 + } + + if (prev_noise != null) { + if (gi.block_type == Encoder.NORM_TYPE) { + var sfb = 0; + while (gfc.scalefac_band.l[sfb] < gi.big_values) { + sfb++; + } + prev_noise.sfb_count1 = sfb; + } + } + + return bits; + } + + this.count_bits = function (gfc, xr, gi, prev_noise) { + var ix = gi.l3_enc; + + /* since quantize_xrpow uses table lookup, we need to check this first: */ + var w = (QuantizePVT.IXMAX_VAL) / qupvt.IPOW20(gi.global_gain); + + if (gi.xrpow_max > w) + return QuantizePVT.LARGE_BITS; + + quantize_xrpow(xr, ix, qupvt.IPOW20(gi.global_gain), gi, prev_noise); + + if ((gfc.substep_shaping & 2) != 0) { + abort();//fix cc 精简 + } + return this.noquant_count_bits(gfc, gi, prev_noise); + } + + /** + * re-calculate the best scalefac_compress using scfsi the saved bits are + * kept in the bit reservoir. + */ + function recalc_divide_init(gfc, cod_info, ix, r01_bits, r01_div, r0_tbl, r1_tbl) { + var bigv = cod_info.big_values; + + for (var r0 = 0; r0 <= 7 + 15; r0++) { + r01_bits[r0] = QuantizePVT.LARGE_BITS; + } + + for (var r0 = 0; r0 < 16; r0++) { + var a1 = gfc.scalefac_band.l[r0 + 1]; + if (a1 >= bigv) + break; + var r0bits = 0; + var bi = new Bits(r0bits); + var r0t = choose_table(ix, 0, a1, bi); + r0bits = bi.bits; + + for (var r1 = 0; r1 < 8; r1++) { + var a2 = gfc.scalefac_band.l[r0 + r1 + 2]; + if (a2 >= bigv) + break; + var bits = r0bits; + bi = new Bits(bits); + var r1t = choose_table(ix, a1, a2, bi); + bits = bi.bits; + if (r01_bits[r0 + r1] > bits) { + r01_bits[r0 + r1] = bits; + r01_div[r0 + r1] = r0; + r0_tbl[r0 + r1] = r0t; + r1_tbl[r0 + r1] = r1t; + } + } + } + } + + function recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl) { + var bigv = cod_info2.big_values; + + for (var r2 = 2; r2 < Encoder.SBMAX_l + 1; r2++) { + var a2 = gfc.scalefac_band.l[r2]; + if (a2 >= bigv) + break; + var bits = r01_bits[r2 - 2] + cod_info2.count1bits; + if (gi.part2_3_length <= bits) + break; + + var bi = new Bits(bits); + var r2t = choose_table(ix, a2, bigv, bi); + bits = bi.bits; + if (gi.part2_3_length <= bits) + continue; + + gi.assign(cod_info2); + gi.part2_3_length = bits; + gi.region0_count = r01_div[r2 - 2]; + gi.region1_count = r2 - 2 - r01_div[r2 - 2]; + gi.table_select[0] = r0_tbl[r2 - 2]; + gi.table_select[1] = r1_tbl[r2 - 2]; + gi.table_select[2] = r2t; + } + } + + this.best_huffman_divide = function (gfc, gi) { + var cod_info2 = new GrInfo(); + var ix = gi.l3_enc; + var r01_bits = new_int(7 + 15 + 1); + var r01_div = new_int(7 + 15 + 1); + var r0_tbl = new_int(7 + 15 + 1); + var r1_tbl = new_int(7 + 15 + 1); + + /* SHORT BLOCK stuff fails for MPEG2 */ + if (gi.block_type == Encoder.SHORT_TYPE && gfc.mode_gr == 1) + return; + + cod_info2.assign(gi); + if (gi.block_type == Encoder.NORM_TYPE) { + recalc_divide_init(gfc, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl); + recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div, + r0_tbl, r1_tbl); + } + var i = cod_info2.big_values; + if (i == 0 || (ix[i - 2] | ix[i - 1]) > 1) + return; + + i = gi.count1 + 2; + if (i > 576) + return; + + /* Determines the number of bits to encode the quadruples. */ + cod_info2.assign(gi); + cod_info2.count1 = i; + var a1 = 0; + var a2 = 0; + + + for (; i > cod_info2.big_values; i -= 4) { + var p = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2 + + ix[i - 1]; + a1 += Tables.t32l[p]; + a2 += Tables.t33l[p]; + } + cod_info2.big_values = i; + + cod_info2.count1table_select = 0; + if (a1 > a2) { + a1 = a2; + cod_info2.count1table_select = 1; + } + + cod_info2.count1bits = a1; + + if (cod_info2.block_type == Encoder.NORM_TYPE) + recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div, + r0_tbl, r1_tbl); + else { + /* Count the number of bits necessary to code the bigvalues region. */ + cod_info2.part2_3_length = a1; + a1 = gfc.scalefac_band.l[7 + 1]; + if (a1 > i) { + a1 = i; + } + if (a1 > 0) { + var bi = new Bits(cod_info2.part2_3_length); + cod_info2.table_select[0] = choose_table(ix, 0, a1, bi); + cod_info2.part2_3_length = bi.bits; + } + if (i > a1) { + var bi = new Bits(cod_info2.part2_3_length); + cod_info2.table_select[1] = choose_table(ix, a1, i, bi); + cod_info2.part2_3_length = bi.bits; + } + if (gi.part2_3_length > cod_info2.part2_3_length) + gi.assign(cod_info2); + } + } + + var slen1_n = [1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16]; + var slen2_n = [1, 2, 4, 8, 1, 2, 4, 8, 2, 4, 8, 2, 4, 8, 4, 8]; + var slen1_tab = [0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4]; + var slen2_tab = [0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3]; + Takehiro.slen1_tab = slen1_tab; + Takehiro.slen2_tab = slen2_tab; + + function scfsi_calc(ch, l3_side) { + var sfb; + var gi = l3_side.tt[1][ch]; + var g0 = l3_side.tt[0][ch]; + + for (var i = 0; i < Tables.scfsi_band.length - 1; i++) { + for (sfb = Tables.scfsi_band[i]; sfb < Tables.scfsi_band[i + 1]; sfb++) { + if (g0.scalefac[sfb] != gi.scalefac[sfb] + && gi.scalefac[sfb] >= 0) + break; + } + if (sfb == Tables.scfsi_band[i + 1]) { + for (sfb = Tables.scfsi_band[i]; sfb < Tables.scfsi_band[i + 1]; sfb++) { + gi.scalefac[sfb] = -1; + } + l3_side.scfsi[ch][i] = 1; + } + } + var s1 = 0; + var c1 = 0; + for (sfb = 0; sfb < 11; sfb++) { + if (gi.scalefac[sfb] == -1) + continue; + c1++; + if (s1 < gi.scalefac[sfb]) + s1 = gi.scalefac[sfb]; + } + var s2 = 0; + var c2 = 0; + for (; sfb < Encoder.SBPSY_l; sfb++) { + if (gi.scalefac[sfb] == -1) + continue; + c2++; + if (s2 < gi.scalefac[sfb]) + s2 = gi.scalefac[sfb]; + } + + for (var i = 0; i < 16; i++) { + if (s1 < slen1_n[i] && s2 < slen2_n[i]) { + var c = slen1_tab[i] * c1 + slen2_tab[i] * c2; + if (gi.part2_length > c) { + gi.part2_length = c; + gi.scalefac_compress = i; + } + } + } + } + + /** + * Find the optimal way to store the scalefactors. Only call this routine + * after final scalefactors have been chosen and the channel/granule will + * not be re-encoded. + */ + this.best_scalefac_store = function (gfc, gr, ch, l3_side) { + /* use scalefac_scale if we can */ + var gi = l3_side.tt[gr][ch]; + var sfb, i, j, l; + var recalc = 0; + + /* + * remove scalefacs from bands with ix=0. This idea comes from the AAC + * ISO docs. added mt 3/00 + */ + /* check if l3_enc=0 */ + j = 0; + for (sfb = 0; sfb < gi.sfbmax; sfb++) { + var width = gi.width[sfb]; + j += width; + for (l = -width; l < 0; l++) { + if (gi.l3_enc[l + j] != 0) + break; + } + if (l == 0) + gi.scalefac[sfb] = recalc = -2; + /* anything goes. */ + /* + * only best_scalefac_store and calc_scfsi know--and only they + * should know--about the magic number -2. + */ + } + + if (0 == gi.scalefac_scale && 0 == gi.preflag) { + var s = 0; + for (sfb = 0; sfb < gi.sfbmax; sfb++) + if (gi.scalefac[sfb] > 0) + s |= gi.scalefac[sfb]; + + if (0 == (s & 1) && s != 0) { + for (sfb = 0; sfb < gi.sfbmax; sfb++) + if (gi.scalefac[sfb] > 0) + gi.scalefac[sfb] >>= 1; + + gi.scalefac_scale = recalc = 1; + } + } + + if (0 == gi.preflag && gi.block_type != Encoder.SHORT_TYPE + && gfc.mode_gr == 2) { + for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) + if (gi.scalefac[sfb] < qupvt.pretab[sfb] + && gi.scalefac[sfb] != -2) + break; + if (sfb == Encoder.SBPSY_l) { + for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) + if (gi.scalefac[sfb] > 0) + gi.scalefac[sfb] -= qupvt.pretab[sfb]; + + gi.preflag = recalc = 1; + } + } + + for (i = 0; i < 4; i++) + l3_side.scfsi[ch][i] = 0; + + if (gfc.mode_gr == 2 && gr == 1 + && l3_side.tt[0][ch].block_type != Encoder.SHORT_TYPE + && l3_side.tt[1][ch].block_type != Encoder.SHORT_TYPE) { + scfsi_calc(ch, l3_side); + recalc = 0; + } + for (sfb = 0; sfb < gi.sfbmax; sfb++) { + if (gi.scalefac[sfb] == -2) { + gi.scalefac[sfb] = 0; + /* if anything goes, then 0 is a good choice */ + } + } + if (recalc != 0) { + if (gfc.mode_gr == 2) { + this.scale_bitcount(gi); + } else { + this.scale_bitcount_lsf(gfc, gi); + } + } + } + + //fix cc 精简 + + /** + * number of bits used to encode scalefacs. + * + * 18*slen1_tab[i] + 18*slen2_tab[i] + */ + var scale_short = [0, 18, 36, 54, 54, 36, 54, 72, + 54, 72, 90, 72, 90, 108, 108, 126]; + + /** + * number of bits used to encode scalefacs. + * + * 17*slen1_tab[i] + 18*slen2_tab[i] + */ + var scale_mixed = [0, 18, 36, 54, 51, 35, 53, 71, + 52, 70, 88, 69, 87, 105, 104, 122]; + + /** + * number of bits used to encode scalefacs. + * + * 11*slen1_tab[i] + 10*slen2_tab[i] + */ + var scale_long = [0, 10, 20, 30, 33, 21, 31, 41, 32, 42, + 52, 43, 53, 63, 64, 74]; + + /** + * Also calculates the number of bits necessary to code the scalefactors. + */ + this.scale_bitcount = function (cod_info) { + var k, sfb, max_slen1 = 0, max_slen2 = 0; + + /* maximum values */ + var tab; + var scalefac = cod_info.scalefac; + + + if (cod_info.block_type == Encoder.SHORT_TYPE) { + tab = scale_short; + if (cod_info.mixed_block_flag != 0) + tab = scale_mixed; + } else { /* block_type == 1,2,or 3 */ + tab = scale_long; + if (0 == cod_info.preflag) { + for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) + if (scalefac[sfb] < qupvt.pretab[sfb]) + break; + + if (sfb == Encoder.SBPSY_l) { + cod_info.preflag = 1; + for (sfb = 11; sfb < Encoder.SBPSY_l; sfb++) + scalefac[sfb] -= qupvt.pretab[sfb]; + } + } + } + + for (sfb = 0; sfb < cod_info.sfbdivide; sfb++) + if (max_slen1 < scalefac[sfb]) + max_slen1 = scalefac[sfb]; + + for (; sfb < cod_info.sfbmax; sfb++) + if (max_slen2 < scalefac[sfb]) + max_slen2 = scalefac[sfb]; + + /* + * from Takehiro TOMINAGA 10/99 loop over *all* + * posible values of scalefac_compress to find the one which uses the + * smallest number of bits. ISO would stop at first valid index + */ + cod_info.part2_length = QuantizePVT.LARGE_BITS; + for (k = 0; k < 16; k++) { + if (max_slen1 < slen1_n[k] && max_slen2 < slen2_n[k] + && cod_info.part2_length > tab[k]) { + cod_info.part2_length = tab[k]; + cod_info.scalefac_compress = k; + } + } + return cod_info.part2_length == QuantizePVT.LARGE_BITS; + } + + /** + * table of largest scalefactor values for MPEG2 + */ + var max_range_sfac_tab = [[15, 15, 7, 7], + [15, 15, 7, 0], [7, 3, 0, 0], [15, 31, 31, 0], + [7, 7, 7, 0], [3, 3, 0, 0]]; + + /** + * Also counts the number of bits to encode the scalefacs but for MPEG 2 + * Lower sampling frequencies (24, 22.05 and 16 kHz.) + * + * This is reverse-engineered from section 2.4.3.2 of the MPEG2 IS, + * "Audio Decoding Layer III" + */ + this.scale_bitcount_lsf = function (gfc, cod_info) { + var table_number, row_in_table, partition, nr_sfb, window; + var over; + var i, sfb; + var max_sfac = new_int(4); +//var partition_table; + var scalefac = cod_info.scalefac; + + /* + * Set partition table. Note that should try to use table one, but do + * not yet... + */ + if (cod_info.preflag != 0) + table_number = 2; + else + table_number = 0; + + for (i = 0; i < 4; i++) + max_sfac[i] = 0; + + if (cod_info.block_type == Encoder.SHORT_TYPE) { + row_in_table = 1; + var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table]; + for (sfb = 0, partition = 0; partition < 4; partition++) { + nr_sfb = partition_table[partition] / 3; + for (i = 0; i < nr_sfb; i++, sfb++) + for (window = 0; window < 3; window++) + if (scalefac[sfb * 3 + window] > max_sfac[partition]) + max_sfac[partition] = scalefac[sfb * 3 + window]; + } + } else { + row_in_table = 0; + var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table]; + for (sfb = 0, partition = 0; partition < 4; partition++) { + nr_sfb = partition_table[partition]; + for (i = 0; i < nr_sfb; i++, sfb++) + if (scalefac[sfb] > max_sfac[partition]) + max_sfac[partition] = scalefac[sfb]; + } + } + + for (over = false, partition = 0; partition < 4; partition++) { + if (max_sfac[partition] > max_range_sfac_tab[table_number][partition]) + over = true; + } + if (!over) { + var slen1, slen2, slen3, slen4; + + cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table]; + for (partition = 0; partition < 4; partition++) + cod_info.slen[partition] = log2tab[max_sfac[partition]]; + + /* set scalefac_compress */ + slen1 = cod_info.slen[0]; + slen2 = cod_info.slen[1]; + slen3 = cod_info.slen[2]; + slen4 = cod_info.slen[3]; + + switch (table_number) { + case 0: + cod_info.scalefac_compress = (((slen1 * 5) + slen2) << 4) + + (slen3 << 2) + slen4; + break; + + case 1: + cod_info.scalefac_compress = 400 + (((slen1 * 5) + slen2) << 2) + + slen3; + break; + + case 2: + cod_info.scalefac_compress = 500 + (slen1 * 3) + slen2; + break; + + default: + //fix cc 精简 print + break; + } + } + if (!over) { + cod_info.part2_length = 0; + for (partition = 0; partition < 4; partition++) + cod_info.part2_length += cod_info.slen[partition] + * cod_info.sfb_partition_table[partition]; + } + return over; + } + + /* + * Since no bands have been over-amplified, we can set scalefac_compress and + * slen[] for the formatter + */ + var log2tab = [0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, + 4, 4, 4, 4]; + + this.huffman_init = function (gfc) { + for (var i = 2; i <= 576; i += 2) { + var scfb_anz = 0, bv_index; + while (gfc.scalefac_band.l[++scfb_anz] < i) + ; + + bv_index = subdv_table[scfb_anz][0]; // .region0_count + while (gfc.scalefac_band.l[bv_index + 1] > i) + bv_index--; + + if (bv_index < 0) { + /* + * this is an indication that everything is going to be encoded + * as region0: bigvalues < region0 < region1 so lets set + * region0, region1 to some value larger than bigvalues + */ + bv_index = subdv_table[scfb_anz][0]; // .region0_count + } + + gfc.bv_scf[i - 2] = bv_index; + + bv_index = subdv_table[scfb_anz][1]; // .region1_count + while (gfc.scalefac_band.l[bv_index + gfc.bv_scf[i - 2] + 2] > i) + bv_index--; + + if (bv_index < 0) { + bv_index = subdv_table[scfb_anz][1]; // .region1_count + } + + gfc.bv_scf[i - 1] = bv_index; + } + } +} + +/* + * ReplayGainAnalysis - analyzes input samples and give the recommended dB change + * Copyright (C) 2001 David Robinson and Glen Sawyer + * Improvements and optimizations added by Frank Klemm, and by Marcel Muller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * concept and filter values by David Robinson (David@Robinson.org) + * -- blame him if you think the idea is flawed + * original coding by Glen Sawyer (mp3gain@hotmail.com) + * -- blame him if you think this runs too slowly, or the coding is otherwise flawed + * + * lots of code improvements by Frank Klemm ( http://www.uni-jena.de/~pfk/mpp/ ) + * -- credit him for all the _good_ programming ;) + * + * + * For an explanation of the concepts and the basic algorithms involved, go to: + * http://www.replaygain.org/ + */ + +/* + * Here's the deal. Call + * + * InitGainAnalysis ( long samplefreq ); + * + * to initialize everything. Call + * + * AnalyzeSamples ( var Float_t* left_samples, + * var Float_t* right_samples, + * size_t num_samples, + * int num_channels ); + * + * as many times as you want, with as many or as few samples as you want. + * If mono, pass the sample buffer in through left_samples, leave + * right_samples NULL, and make sure num_channels = 1. + * + * GetTitleGain() + * + * will return the recommended dB level change for all samples analyzed + * SINCE THE LAST TIME you called GetTitleGain() OR InitGainAnalysis(). + * + * GetAlbumGain() + * + * will return the recommended dB level change for all samples analyzed + * since InitGainAnalysis() was called and finalized with GetTitleGain(). + * + * Pseudo-code to process an album: + * + * Float_t l_samples [4096]; + * Float_t r_samples [4096]; + * size_t num_samples; + * unsigned int num_songs; + * unsigned int i; + * + * InitGainAnalysis ( 44100 ); + * for ( i = 1; i <= num_songs; i++ ) { + * while ( ( num_samples = getSongSamples ( song[i], left_samples, right_samples ) ) > 0 ) + * AnalyzeSamples ( left_samples, right_samples, num_samples, 2 ); + * fprintf ("Recommended dB change for song %2d: %+6.2 dB\n", i, GetTitleGain() ); + * } + * fprintf ("Recommended dB change for whole album: %+6.2 dB\n", GetAlbumGain() ); + */ + +/* + * So here's the main source of potential code confusion: + * + * The filters applied to the incoming samples are IIR filters, + * meaning they rely on up to number of previous samples + * AND up to number of previous filtered samples. + * + * I set up the AnalyzeSamples routine to minimize memory usage and interface + * complexity. The speed isn't compromised too much (I don't think), but the + * internal complexity is higher than it should be for such a relatively + * simple routine. + * + * Optimization/clarity suggestions are welcome. + */ + +/** + * Table entries per dB + */ +GainAnalysis.STEPS_per_dB = 100.; +/** + * Table entries for 0...MAX_dB (normal max. values are 70...80 dB) + */ +GainAnalysis.MAX_dB = 120.; +GainAnalysis.GAIN_NOT_ENOUGH_SAMPLES = -24601; +GainAnalysis.GAIN_ANALYSIS_ERROR = 0; +GainAnalysis.GAIN_ANALYSIS_OK = 1; +GainAnalysis.INIT_GAIN_ANALYSIS_ERROR = 0; +GainAnalysis.INIT_GAIN_ANALYSIS_OK = 1; + +GainAnalysis.YULE_ORDER = 10; +GainAnalysis.MAX_ORDER = GainAnalysis.YULE_ORDER; + +GainAnalysis.MAX_SAMP_FREQ = 48000; +GainAnalysis.RMS_WINDOW_TIME_NUMERATOR = 1; +GainAnalysis.RMS_WINDOW_TIME_DENOMINATOR = 20; +GainAnalysis.MAX_SAMPLES_PER_WINDOW = ((GainAnalysis.MAX_SAMP_FREQ * GainAnalysis.RMS_WINDOW_TIME_NUMERATOR) / GainAnalysis.RMS_WINDOW_TIME_DENOMINATOR + 1); + +function GainAnalysis() { + //fix 精简 +} + + +function Presets() { + //fix 精简 + + function ABRPresets(kbps, comp, compS, + joint, fix, shThreshold, + shThresholdS, bass, sc, + mask, lower, curve, + interCh, sfScale) { + this.quant_comp = comp; + this.quant_comp_s = compS; + this.safejoint = joint; + this.nsmsfix = fix; + this.st_lrm = shThreshold; + this.st_s = shThresholdS; + this.nsbass = bass; + this.scale = sc; + this.masking_adj = mask; + this.ath_lower = lower; + this.ath_curve = curve; + this.interch = interCh; + this.sfscale = sfScale; + } + + var lame; + + this.setModules = function (_lame) { + lame = _lame; + }; + + //fix cc 精简 + function apply_vbr_preset(gfp, a, enforce) { + abort();//fix cc 精简 + } + + /** + *
+     *  Switch mappings for ABR mode
+     *
+     *              kbps  quant q_s safejoint nsmsfix st_lrm  st_s  ns-bass scale   msk ath_lwr ath_curve  interch , sfscale
+     * 
+ */ + var abr_switch_map = [ + new ABRPresets(8, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -30.0, 11, 0.0012, 1), /* 8, impossible to use in stereo */ + new ABRPresets(16, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -25.0, 11, 0.0010, 1), /* 16 */ + new ABRPresets(24, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -20.0, 11, 0.0010, 1), /* 24 */ + new ABRPresets(32, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -15.0, 11, 0.0010, 1), /* 32 */ + new ABRPresets(40, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -10.0, 11, 0.0009, 1), /* 40 */ + new ABRPresets(48, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -10.0, 11, 0.0009, 1), /* 48 */ + new ABRPresets(56, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -6.0, 11, 0.0008, 1), /* 56 */ + new ABRPresets(64, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -2.0, 11, 0.0008, 1), /* 64 */ + new ABRPresets(80, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, .0, 8, 0.0007, 1), /* 80 */ + new ABRPresets(96, 9, 9, 0, 2.50, 6.60, 145, 0, 0.95, 0, 1.0, 5.5, 0.0006, 1), /* 96 */ + new ABRPresets(112, 9, 9, 0, 2.25, 6.60, 145, 0, 0.95, 0, 2.0, 4.5, 0.0005, 1), /* 112 */ + new ABRPresets(128, 9, 9, 0, 1.95, 6.40, 140, 0, 0.95, 0, 3.0, 4, 0.0002, 1), /* 128 */ + new ABRPresets(160, 9, 9, 1, 1.79, 6.00, 135, 0, 0.95, -2, 5.0, 3.5, 0, 1), /* 160 */ + new ABRPresets(192, 9, 9, 1, 1.49, 5.60, 125, 0, 0.97, -4, 7.0, 3, 0, 0), /* 192 */ + new ABRPresets(224, 9, 9, 1, 1.25, 5.20, 125, 0, 0.98, -6, 9.0, 2, 0, 0), /* 224 */ + new ABRPresets(256, 9, 9, 1, 0.97, 5.20, 125, 0, 1.00, -8, 10.0, 1, 0, 0), /* 256 */ + new ABRPresets(320, 9, 9, 1, 0.90, 5.20, 125, 0, 1.00, -10, 12.0, 0, 0, 0) /* 320 */ + ]; + + function apply_abr_preset(gfp, preset, enforce) { + /* Variables for the ABR stuff */ + var actual_bitrate = preset; + + var r = lame.nearestBitrateFullIndex(preset); + + gfp.VBR = VbrMode.vbr_abr; + gfp.VBR_mean_bitrate_kbps = actual_bitrate; + gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 320); + gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8); + gfp.brate = gfp.VBR_mean_bitrate_kbps; + if (gfp.VBR_mean_bitrate_kbps > 320) { + gfp.disable_reservoir = true; + } + + /* parameters for which there is no proper set/get interface */ + if (abr_switch_map[r].safejoint > 0) + gfp.exp_nspsytune = gfp.exp_nspsytune | 2; + /* safejoint */ + + if (abr_switch_map[r].sfscale > 0) { + gfp.internal_flags.noise_shaping = 2; + } + /* ns-bass tweaks */ + if (Math.abs(abr_switch_map[r].nsbass) > 0) { + var k = (int)(abr_switch_map[r].nsbass * 4); + if (k < 0) + k += 64; + gfp.exp_nspsytune = gfp.exp_nspsytune | (k << 2); + } + + if (enforce != 0) + gfp.quant_comp = abr_switch_map[r].quant_comp; + else if (!(Math.abs(gfp.quant_comp - -1) > 0)) + gfp.quant_comp = abr_switch_map[r].quant_comp; + // SET_OPTION(quant_comp, abr_switch_map[r].quant_comp, -1); + if (enforce != 0) + gfp.quant_comp_short = abr_switch_map[r].quant_comp_s; + else if (!(Math.abs(gfp.quant_comp_short - -1) > 0)) + gfp.quant_comp_short = abr_switch_map[r].quant_comp_s; + // SET_OPTION(quant_comp_short, abr_switch_map[r].quant_comp_s, -1); + + if (enforce != 0) + gfp.msfix = abr_switch_map[r].nsmsfix; + else if (!(Math.abs(gfp.msfix - -1) > 0)) + gfp.msfix = abr_switch_map[r].nsmsfix; + // SET_OPTION(msfix, abr_switch_map[r].nsmsfix, -1); + + if (enforce != 0) + gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm; + else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0)) + gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm; + // SET_OPTION(short_threshold_lrm, abr_switch_map[r].st_lrm, -1); + if (enforce != 0) + gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s; + else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0)) + gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s; + // SET_OPTION(short_threshold_s, abr_switch_map[r].st_s, -1); + + /* + * ABR seems to have big problems with clipping, especially at low + * bitrates + */ + /* + * so we compensate for that here by using a scale value depending on + * bitrate + */ + if (enforce != 0) + gfp.scale = abr_switch_map[r].scale; + else if (!(Math.abs(gfp.scale - -1) > 0)) + gfp.scale = abr_switch_map[r].scale; + // SET_OPTION(scale, abr_switch_map[r].scale, -1); + + if (enforce != 0) + gfp.maskingadjust = abr_switch_map[r].masking_adj; + else if (!(Math.abs(gfp.maskingadjust - 0) > 0)) + gfp.maskingadjust = abr_switch_map[r].masking_adj; + // SET_OPTION(maskingadjust, abr_switch_map[r].masking_adj, 0); + if (abr_switch_map[r].masking_adj > 0) { + if (enforce != 0) + gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * .9); + else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0)) + gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * .9); + // SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj * + // .9, 0); + } else { + if (enforce != 0) + gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * 1.1); + else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0)) + gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * 1.1); + // SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj * + // 1.1, 0); + } + + if (enforce != 0) + gfp.ATHlower = -abr_switch_map[r].ath_lower / 10.; + else if (!(Math.abs((-gfp.ATHlower * 10.) - 0) > 0)) + gfp.ATHlower = -abr_switch_map[r].ath_lower / 10.; + // SET_OPTION(ATHlower, abr_switch_map[r].ath_lower, 0); + if (enforce != 0) + gfp.ATHcurve = abr_switch_map[r].ath_curve; + else if (!(Math.abs(gfp.ATHcurve - -1) > 0)) + gfp.ATHcurve = abr_switch_map[r].ath_curve; + // SET_OPTION(ATHcurve, abr_switch_map[r].ath_curve, -1); + + if (enforce != 0) + gfp.interChRatio = abr_switch_map[r].interch; + else if (!(Math.abs(gfp.interChRatio - -1) > 0)) + gfp.interChRatio = abr_switch_map[r].interch; + // SET_OPTION(interChRatio, abr_switch_map[r].interch, -1); + + return preset; + } + + this.apply_preset = function(gfp, preset, enforce) { + /* translate legacy presets */ + switch (preset) { + case Lame.R3MIX: + { + preset = Lame.V3; + gfp.VBR = VbrMode.vbr_mtrh; + break; + } + case Lame.MEDIUM: + { + preset = Lame.V4; + gfp.VBR = VbrMode.vbr_rh; + break; + } + case Lame.MEDIUM_FAST: + { + preset = Lame.V4; + gfp.VBR = VbrMode.vbr_mtrh; + break; + } + case Lame.STANDARD: + { + preset = Lame.V2; + gfp.VBR = VbrMode.vbr_rh; + break; + } + case Lame.STANDARD_FAST: + { + preset = Lame.V2; + gfp.VBR = VbrMode.vbr_mtrh; + break; + } + case Lame.EXTREME: + { + preset = Lame.V0; + gfp.VBR = VbrMode.vbr_rh; + break; + } + case Lame.EXTREME_FAST: + { + preset = Lame.V0; + gfp.VBR = VbrMode.vbr_mtrh; + break; + } + case Lame.INSANE: + { + preset = 320; + gfp.preset = preset; + apply_abr_preset(gfp, preset, enforce); + gfp.VBR = VbrMode.vbr_off; + return preset; + } + } + + gfp.preset = preset; + { + switch (preset) { + case Lame.V9: + apply_vbr_preset(gfp, 9, enforce); + return preset; + case Lame.V8: + apply_vbr_preset(gfp, 8, enforce); + return preset; + case Lame.V7: + apply_vbr_preset(gfp, 7, enforce); + return preset; + case Lame.V6: + apply_vbr_preset(gfp, 6, enforce); + return preset; + case Lame.V5: + apply_vbr_preset(gfp, 5, enforce); + return preset; + case Lame.V4: + apply_vbr_preset(gfp, 4, enforce); + return preset; + case Lame.V3: + apply_vbr_preset(gfp, 3, enforce); + return preset; + case Lame.V2: + apply_vbr_preset(gfp, 2, enforce); + return preset; + case Lame.V1: + apply_vbr_preset(gfp, 1, enforce); + return preset; + case Lame.V0: + apply_vbr_preset(gfp, 0, enforce); + return preset; + default: + break; + } + } + if (8 <= preset && preset <= 320) { + return apply_abr_preset(gfp, preset, enforce); + } + + /* no corresponding preset found */ + gfp.preset = 0; + return preset; + } + + // Rest from getset.c: + + //fix cc 精简 + +} + +/* + * bit reservoir source file + * + * Copyright (c) 1999-2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: Reservoir.java,v 1.9 2011/05/24 20:48:06 kenchis Exp $ */ + +//package mp3; + +/** + * ResvFrameBegin:
+ * Called (repeatedly) at the beginning of a frame. Updates the maximum size of + * the reservoir, and checks to make sure main_data_begin was set properly by + * the formatter
+ * Background information: + * + * This is the original text from the ISO standard. Because of sooo many bugs + * and irritations correcting comments are added in brackets []. A '^W' means + * you should remove the last word. + * + *
+ *  1. The following rule can be used to calculate the maximum
+ *     number of bits used for one granule [^W frame]:
+ * At the highest possible bitrate of Layer III (320 kbps + * per stereo signal [^W^W^W], 48 kHz) the frames must be of + * [^W^W^W are designed to have] constant length, i.e. + * one buffer [^W^W the frame] length is:
+ * + * 320 kbps * 1152/48 kHz = 7680 bit = 960 byte + * + * This value is used as the maximum buffer per channel [^W^W] at + * lower bitrates [than 320 kbps]. At 64 kbps mono or 128 kbps + * stereo the main granule length is 64 kbps * 576/48 kHz = 768 bit + * [per granule and channel] at 48 kHz sampling frequency. + * This means that there is a maximum deviation (short time buffer + * [= reservoir]) of 7680 - 2*2*768 = 4608 bits is allowed at 64 kbps. + * The actual deviation is equal to the number of bytes [with the + * meaning of octets] denoted by the main_data_end offset pointer. + * The actual maximum deviation is (2^9-1)*8 bit = 4088 bits + * [for MPEG-1 and (2^8-1)*8 bit for MPEG-2, both are hard limits]. + * ... The xchange of buffer bits between the left and right channel + * is allowed without restrictions [exception: dual channel]. + * Because of the [constructed] constraint on the buffer size + * main_data_end is always set to 0 in the case of bit_rate_index==14, + * i.e. data rate 320 kbps per stereo signal [^W^W^W]. In this case + * all data are allocated between adjacent header [^W sync] words + * [, i.e. there is no buffering at all]. + *
+ */ + + +function Reservoir() { + var bs; + + this.setModules = function(_bs) { + bs = _bs; + } + + this.ResvFrameBegin = function(gfp, mean_bits) { + var gfc = gfp.internal_flags; + var maxmp3buf; + var l3_side = gfc.l3_side; + + var frameLength = bs.getframebits(gfp); + mean_bits.bits = (frameLength - gfc.sideinfo_len * 8) / gfc.mode_gr; + + /** + *
+		 *  Meaning of the variables:
+		 *      resvLimit: (0, 8, ..., 8*255 (MPEG-2), 8*511 (MPEG-1))
+		 *          Number of bits can be stored in previous frame(s) due to
+		 *          counter size constaints
+		 *      maxmp3buf: ( ??? ... 8*1951 (MPEG-1 and 2), 8*2047 (MPEG-2.5))
+		 *          Number of bits allowed to encode one frame (you can take 8*511 bit
+		 *          from the bit reservoir and at most 8*1440 bit from the current
+		 *          frame (320 kbps, 32 kHz), so 8*1951 bit is the largest possible
+		 *          value for MPEG-1 and -2)
+		 * 
+		 *          maximum allowed granule/channel size times 4 = 8*2047 bits.,
+		 *          so this is the absolute maximum supported by the format.
+		 * 
+		 * 
+		 *      fullFrameBits:  maximum number of bits available for encoding
+		 *                      the current frame.
+		 * 
+		 *      mean_bits:      target number of bits per granule.
+		 * 
+		 *      frameLength:
+		 * 
+		 *      gfc.ResvMax:   maximum allowed reservoir
+		 * 
+		 *      gfc.ResvSize:  current reservoir size
+		 * 
+		 *      l3_side.resvDrain_pre:
+		 *         ancillary data to be added to previous frame:
+		 *         (only usefull in VBR modes if it is possible to have
+		 *         maxmp3buf < fullFrameBits)).  Currently disabled,
+		 *         see #define NEW_DRAIN
+		 *         2010-02-13: RH now enabled, it seems to be needed for CBR too,
+		 *                     as there exists one example, where the FhG decoder
+		 *                     can't decode a -b320 CBR file anymore.
+		 * 
+		 *      l3_side.resvDrain_post:
+		 *         ancillary data to be added to this frame:
+		 * 
+		 * 
+ */ + + /* main_data_begin has 9 bits in MPEG-1, 8 bits MPEG-2 */ + var resvLimit = (8 * 256) * gfc.mode_gr - 8; + + /* + * maximum allowed frame size. dont use more than this number of bits, + * even if the frame has the space for them: + */ + if (gfp.brate > 320) { + abort();//fix cc 精简 + } else { + /* + * all mp3 decoders should have enough buffer to handle this value: + * size of a 320kbps 32kHz frame + */ + maxmp3buf = 8 * 1440; + + /* + * Bouvigne suggests this more lax interpretation of the ISO doc + * instead of using 8*960. + */ + + if (gfp.strict_ISO) { + abort();//fix cc 精简 + } + } + + gfc.ResvMax = maxmp3buf - frameLength; + if (gfc.ResvMax > resvLimit) + gfc.ResvMax = resvLimit; + if (gfc.ResvMax < 0 || gfp.disable_reservoir) + gfc.ResvMax = 0; + + var fullFrameBits = mean_bits.bits * gfc.mode_gr + + Math.min(gfc.ResvSize, gfc.ResvMax); + + if (fullFrameBits > maxmp3buf) + fullFrameBits = maxmp3buf; + + + l3_side.resvDrain_pre = 0; + + // frame analyzer code + if (gfc.pinfo != null) { + abort();//fix cc 精简 + } + + return fullFrameBits; + } + + /** + * returns targ_bits: target number of bits to use for 1 granule
+ * extra_bits: amount extra available from reservoir
+ * Mark Taylor 4/99 + */ + this.ResvMaxBits = function(gfp, mean_bits, targ_bits, cbr) { + var gfc = gfp.internal_flags; + var add_bits; + var ResvSize = gfc.ResvSize, ResvMax = gfc.ResvMax; + + /* compensate the saved bits used in the 1st granule */ + if (cbr != 0) + ResvSize += mean_bits; + + if ((gfc.substep_shaping & 1) != 0) + ResvMax *= 0.9; + + targ_bits.bits = mean_bits; + + /* extra bits if the reservoir is almost full */ + if (ResvSize * 10 > ResvMax * 9) { + add_bits = ResvSize - (ResvMax * 9) / 10; + targ_bits.bits += add_bits; + gfc.substep_shaping |= 0x80; + } else { + add_bits = 0; + gfc.substep_shaping &= 0x7f; + /* + * build up reservoir. this builds the reservoir a little slower + * than FhG. It could simple be mean_bits/15, but this was rigged to + * always produce 100 (the old value) at 128kbs + */ + if (!gfp.disable_reservoir && 0 == (gfc.substep_shaping & 1)) + targ_bits.bits -= .1 * mean_bits; + } + + /* amount from the reservoir we are allowed to use. ISO says 6/10 */ + var extra_bits = (ResvSize < (gfc.ResvMax * 6) / 10 ? ResvSize + : (gfc.ResvMax * 6) / 10); + extra_bits -= add_bits; + + if (extra_bits < 0) + extra_bits = 0; + return extra_bits; + } + + /** + * Called after a granule's bit allocation. Readjusts the size of the + * reservoir to reflect the granule's usage. + */ + this.ResvAdjust = function(gfc, gi) { + gfc.ResvSize -= gi.part2_3_length + gi.part2_length; + } + + /** + * Called after all granules in a frame have been allocated. Makes sure that + * the reservoir size is within limits, possibly by adding stuffing bits. + */ + this.ResvFrameEnd = function(gfc, mean_bits) { + var over_bits; + var l3_side = gfc.l3_side; + + gfc.ResvSize += mean_bits * gfc.mode_gr; + var stuffingBits = 0; + l3_side.resvDrain_post = 0; + l3_side.resvDrain_pre = 0; + + /* we must be byte aligned */ + if ((over_bits = gfc.ResvSize % 8) != 0) + stuffingBits += over_bits; + + over_bits = (gfc.ResvSize - stuffingBits) - gfc.ResvMax; + if (over_bits > 0) { + stuffingBits += over_bits; + } + + /* + * NOTE: enabling the NEW_DRAIN code fixes some problems with FhG + * decoder shipped with MS Windows operating systems. Using this, it is + * even possible to use Gabriel's lax buffer consideration again, which + * assumes, any decoder should have a buffer large enough for a 320 kbps + * frame at 32 kHz sample rate. + * + * old drain code: lame -b320 BlackBird.wav --. does not play with + * GraphEdit.exe using FhG decoder V1.5 Build 50 + * + * new drain code: lame -b320 BlackBird.wav --. plays fine with + * GraphEdit.exe using FhG decoder V1.5 Build 50 + * + * Robert Hegemann, 2010-02-13. + */ + /* + * drain as many bits as possible into previous frame ancillary data In + * particular, in VBR mode ResvMax may have changed, and we have to make + * sure main_data_begin does not create a reservoir bigger than ResvMax + * mt 4/00 + */ + { + var mdb_bytes = Math.min(l3_side.main_data_begin * 8, stuffingBits) / 8; + l3_side.resvDrain_pre += 8 * mdb_bytes; + stuffingBits -= 8 * mdb_bytes; + gfc.ResvSize -= 8 * mdb_bytes; + l3_side.main_data_begin -= mdb_bytes; + } + /* drain the rest into this frames ancillary data */ + l3_side.resvDrain_post += stuffingBits; + gfc.ResvSize -= stuffingBits; + } +} + + +/** + * A Vbr header may be present in the ancillary data field of the first frame of + * an mp3 bitstream
+ * The Vbr header (optionally) contains + *
    + *
  • frames total number of audio frames in the bitstream + *
  • bytes total number of bytes in the bitstream + *
  • toc table of contents + *
+ * + * toc (table of contents) gives seek points for random access.
+ * The ith entry determines the seek point for i-percent duration.
+ * seek point in bytes = (toc[i]/256.0) * total_bitstream_bytes
+ * e.g. half duration seek point = (toc[50]/256.0) * total_bitstream_bytes + */ +VBRTag.NUMTOCENTRIES = 100; +VBRTag.MAXFRAMESIZE = 2880; + +function VBRTag() { + + var lame; + var bs; + var v; + + this.setModules = function (_lame, _bs, _v) { + lame = _lame; + bs = _bs; + v = _v; + }; + + //fix 精简 + + /** + * Lookup table for fast CRC-16 computation. Uses the polynomial + * x^16+x^15+x^2+1 + */ + var crc16Lookup = [0x0000, 0xC0C1, 0xC181, 0x0140, + 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741, + 0x0500, 0xC5C1, 0xC481, 0x0440, 0xCC01, 0x0CC0, 0x0D80, 0xCD41, + 0x0F00, 0xCFC1, 0xCE81, 0x0E40, 0x0A00, 0xCAC1, 0xCB81, 0x0B40, + 0xC901, 0x09C0, 0x0880, 0xC841, 0xD801, 0x18C0, 0x1980, 0xD941, + 0x1B00, 0xDBC1, 0xDA81, 0x1A40, 0x1E00, 0xDEC1, 0xDF81, 0x1F40, + 0xDD01, 0x1DC0, 0x1C80, 0xDC41, 0x1400, 0xD4C1, 0xD581, 0x1540, + 0xD701, 0x17C0, 0x1680, 0xD641, 0xD201, 0x12C0, 0x1380, 0xD341, + 0x1100, 0xD1C1, 0xD081, 0x1040, 0xF001, 0x30C0, 0x3180, 0xF141, + 0x3300, 0xF3C1, 0xF281, 0x3240, 0x3600, 0xF6C1, 0xF781, 0x3740, + 0xF501, 0x35C0, 0x3480, 0xF441, 0x3C00, 0xFCC1, 0xFD81, 0x3D40, + 0xFF01, 0x3FC0, 0x3E80, 0xFE41, 0xFA01, 0x3AC0, 0x3B80, 0xFB41, + 0x3900, 0xF9C1, 0xF881, 0x3840, 0x2800, 0xE8C1, 0xE981, 0x2940, + 0xEB01, 0x2BC0, 0x2A80, 0xEA41, 0xEE01, 0x2EC0, 0x2F80, 0xEF41, + 0x2D00, 0xEDC1, 0xEC81, 0x2C40, 0xE401, 0x24C0, 0x2580, 0xE541, + 0x2700, 0xE7C1, 0xE681, 0x2640, 0x2200, 0xE2C1, 0xE381, 0x2340, + 0xE101, 0x21C0, 0x2080, 0xE041, 0xA001, 0x60C0, 0x6180, 0xA141, + 0x6300, 0xA3C1, 0xA281, 0x6240, 0x6600, 0xA6C1, 0xA781, 0x6740, + 0xA501, 0x65C0, 0x6480, 0xA441, 0x6C00, 0xACC1, 0xAD81, 0x6D40, + 0xAF01, 0x6FC0, 0x6E80, 0xAE41, 0xAA01, 0x6AC0, 0x6B80, 0xAB41, + 0x6900, 0xA9C1, 0xA881, 0x6840, 0x7800, 0xB8C1, 0xB981, 0x7940, + 0xBB01, 0x7BC0, 0x7A80, 0xBA41, 0xBE01, 0x7EC0, 0x7F80, 0xBF41, + 0x7D00, 0xBDC1, 0xBC81, 0x7C40, 0xB401, 0x74C0, 0x7580, 0xB541, + 0x7700, 0xB7C1, 0xB681, 0x7640, 0x7200, 0xB2C1, 0xB381, 0x7340, + 0xB101, 0x71C0, 0x7080, 0xB041, 0x5000, 0x90C1, 0x9181, 0x5140, + 0x9301, 0x53C0, 0x5280, 0x9241, 0x9601, 0x56C0, 0x5780, 0x9741, + 0x5500, 0x95C1, 0x9481, 0x5440, 0x9C01, 0x5CC0, 0x5D80, 0x9D41, + 0x5F00, 0x9FC1, 0x9E81, 0x5E40, 0x5A00, 0x9AC1, 0x9B81, 0x5B40, + 0x9901, 0x59C0, 0x5880, 0x9841, 0x8801, 0x48C0, 0x4980, 0x8941, + 0x4B00, 0x8BC1, 0x8A81, 0x4A40, 0x4E00, 0x8EC1, 0x8F81, 0x4F40, + 0x8D01, 0x4DC0, 0x4C80, 0x8C41, 0x4400, 0x84C1, 0x8581, 0x4540, + 0x8701, 0x47C0, 0x4680, 0x8641, 0x8201, 0x42C0, 0x4380, 0x8341, + 0x4100, 0x81C1, 0x8081, 0x4040]; + + //fix 精简 + + /** + * Fast CRC-16 computation (uses table crc16Lookup). + * + * @param value + * @param crc + * @return + */ + function crcUpdateLookup(value, crc) { + var tmp = crc ^ value; + crc = (crc >> 8) ^ crc16Lookup[tmp & 0xff]; + return crc; + } + + this.updateMusicCRC = function (crc, buffer, bufferPos, size) { + for (var i = 0; i < size; ++i) + crc[0] = crcUpdateLookup(buffer[bufferPos + i], crc[0]); + } + + //fix 精简 +} + + + +BitStream.EQ = function (a, b) { + return (Math.abs(a) > Math.abs(b)) ? (Math.abs((a) - (b)) <= (Math + .abs(a) * 1e-6)) + : (Math.abs((a) - (b)) <= (Math.abs(b) * 1e-6)); +}; + +BitStream.NEQ = function (a, b) { + return !BitStream.EQ(a, b); +}; + +function BitStream() { + var self = this; + var CRC16_POLYNOMIAL = 0x8005; + + /* + * we work with ints, so when doing bit manipulation, we limit ourselves to + * MAX_LENGTH-2 just to be on the safe side + */ + var MAX_LENGTH = 32; + + //GainAnalysis ga; + //MPGLib mpg; + //Version ver; + //VBRTag vbr; + var ga = null; + var mpg = null; + var ver = null; + var vbr = null; + + //public final void setModules(GainAnalysis ga, MPGLib mpg, Version ver, + // VBRTag vbr) { + + this.setModules = function (_ga, _mpg, _ver, _vbr) { + ga = _ga; + mpg = _mpg; + ver = _ver; + vbr = _vbr; + }; + + /** + * Bit stream buffer. + */ + //private byte[] buf; + var buf = null; + /** + * Bit counter of bit stream. + */ + var totbit = 0; + /** + * Pointer to top byte in buffer. + */ + var bufByteIdx = 0; + /** + * Pointer to top bit of top byte in buffer. + */ + var bufBitIdx = 0; + + /** + * compute bitsperframe and mean_bits for a layer III frame + */ + this.getframebits = function (gfp) { + var gfc = gfp.internal_flags; + var bit_rate; + + /* get bitrate in kbps [?] */ + if (gfc.bitrate_index != 0) + bit_rate = Tables.bitrate_table[gfp.version][gfc.bitrate_index]; + else + bit_rate = gfp.brate; + + /* main encoding routine toggles padding on and off */ + /* one Layer3 Slot consists of 8 bits */ + var bytes = 0 | (gfp.version + 1) * 72000 * bit_rate / gfp.out_samplerate + gfc.padding; + return 8 * bytes; + }; + + function putheader_bits(gfc) { + System.arraycopy(gfc.header[gfc.w_ptr].buf, 0, buf, bufByteIdx, gfc.sideinfo_len); + bufByteIdx += gfc.sideinfo_len; + totbit += gfc.sideinfo_len * 8; + gfc.w_ptr = (gfc.w_ptr + 1) & (LameInternalFlags.MAX_HEADER_BUF - 1); + } + + /** + * write j bits into the bit stream + */ + function putbits2(gfc, val, j) { + + + while (j > 0) { + var k; + if (bufBitIdx == 0) { + bufBitIdx = 8; + bufByteIdx++; + if (gfc.header[gfc.w_ptr].write_timing == totbit) { + putheader_bits(gfc); + } + buf[bufByteIdx] = 0; + } + + k = Math.min(j, bufBitIdx); + j -= k; + + bufBitIdx -= k; + + /* 32 too large on 32 bit machines */ + + buf[bufByteIdx] |= ((val >> j) << bufBitIdx); + totbit += k; + } + } + + //fix cc 精简 + + /** + * Some combinations of bitrate, Fs, and stereo make it impossible to stuff + * out a frame using just main_data, due to the limited number of bits to + * indicate main_data_length. In these situations, we put stuffing bits into + * the ancillary data... + */ + function drain_into_ancillary(gfp, remainingBits) { + var gfc = gfp.internal_flags; + var i; + + if (remainingBits >= 8) { + putbits2(gfc, 0x4c, 8); + remainingBits -= 8; + } + if (remainingBits >= 8) { + putbits2(gfc, 0x41, 8); + remainingBits -= 8; + } + if (remainingBits >= 8) { + putbits2(gfc, 0x4d, 8); + remainingBits -= 8; + } + if (remainingBits >= 8) { + putbits2(gfc, 0x45, 8); + remainingBits -= 8; + } + + if (remainingBits >= 32) { + var version = ver.getLameShortVersion(); + if (remainingBits >= 32) + for (i = 0; i < version.length && remainingBits >= 8; ++i) { + remainingBits -= 8; + putbits2(gfc, version.charCodeAt(i), 8); //fix 错误的使用charAt + } + } + + for (; remainingBits >= 1; remainingBits -= 1) { + putbits2(gfc, gfc.ancillary_flag, 1); + gfc.ancillary_flag ^= (!gfp.disable_reservoir ? 1 : 0); + } + + + } + + /** + * write N bits into the header + */ + function writeheader(gfc, val, j) { + var ptr = gfc.header[gfc.h_ptr].ptr; + + while (j > 0) { + var k = Math.min(j, 8 - (ptr & 7)); + j -= k; + /* >> 32 too large for 32 bit machines */ + + gfc.header[gfc.h_ptr].buf[ptr >> 3] |= ((val >> j)) << (8 - (ptr & 7) - k); + ptr += k; + } + gfc.header[gfc.h_ptr].ptr = ptr; + } + + //fix cc 精简 + + function encodeSideInfo2(gfp, bitsPerFrame) { + var gfc = gfp.internal_flags; + var l3_side; + var gr, ch; + + l3_side = gfc.l3_side; + gfc.header[gfc.h_ptr].ptr = 0; + Arrays.fill(gfc.header[gfc.h_ptr].buf, 0, gfc.sideinfo_len, 0); + if (gfp.out_samplerate < 16000) + writeheader(gfc, 0xffe, 12); + else + writeheader(gfc, 0xfff, 12); + writeheader(gfc, (gfp.version), 1); + writeheader(gfc, 4 - 3, 2); + writeheader(gfc, (!gfp.error_protection ? 1 : 0), 1); + writeheader(gfc, (gfc.bitrate_index), 4); + writeheader(gfc, (gfc.samplerate_index), 2); + writeheader(gfc, (gfc.padding), 1); + writeheader(gfc, (gfp.extension), 1); + writeheader(gfc, (gfp.mode.ordinal()), 2); + writeheader(gfc, (gfc.mode_ext), 2); + writeheader(gfc, (gfp.copyright), 1); + writeheader(gfc, (gfp.original), 1); + writeheader(gfc, (gfp.emphasis), 2); + if (gfp.error_protection) { + writeheader(gfc, 0, 16); + /* dummy */ + } + + if (gfp.version == 1) { + /* MPEG1 */ + writeheader(gfc, (l3_side.main_data_begin), 9); + + if (gfc.channels_out == 2) + writeheader(gfc, l3_side.private_bits, 3); + else + writeheader(gfc, l3_side.private_bits, 5); + + for (ch = 0; ch < gfc.channels_out; ch++) { + var band; + for (band = 0; band < 4; band++) { + writeheader(gfc, l3_side.scfsi[ch][band], 1); + } + } + + for (gr = 0; gr < 2; gr++) { + for (ch = 0; ch < gfc.channels_out; ch++) { + var gi = l3_side.tt[gr][ch]; + writeheader(gfc, gi.part2_3_length + gi.part2_length, 12); + writeheader(gfc, gi.big_values / 2, 9); + writeheader(gfc, gi.global_gain, 8); + writeheader(gfc, gi.scalefac_compress, 4); + + if (gi.block_type != Encoder.NORM_TYPE) { + writeheader(gfc, 1, 1); + /* window_switching_flag */ + writeheader(gfc, gi.block_type, 2); + writeheader(gfc, gi.mixed_block_flag, 1); + + if (gi.table_select[0] == 14) + gi.table_select[0] = 16; + writeheader(gfc, gi.table_select[0], 5); + if (gi.table_select[1] == 14) + gi.table_select[1] = 16; + writeheader(gfc, gi.table_select[1], 5); + + writeheader(gfc, gi.subblock_gain[0], 3); + writeheader(gfc, gi.subblock_gain[1], 3); + writeheader(gfc, gi.subblock_gain[2], 3); + } else { + writeheader(gfc, 0, 1); + /* window_switching_flag */ + if (gi.table_select[0] == 14) + gi.table_select[0] = 16; + writeheader(gfc, gi.table_select[0], 5); + if (gi.table_select[1] == 14) + gi.table_select[1] = 16; + writeheader(gfc, gi.table_select[1], 5); + if (gi.table_select[2] == 14) + gi.table_select[2] = 16; + writeheader(gfc, gi.table_select[2], 5); + + writeheader(gfc, gi.region0_count, 4); + writeheader(gfc, gi.region1_count, 3); + } + writeheader(gfc, gi.preflag, 1); + writeheader(gfc, gi.scalefac_scale, 1); + writeheader(gfc, gi.count1table_select, 1); + } + } + } else { + /* MPEG2 */ + writeheader(gfc, (l3_side.main_data_begin), 8); + writeheader(gfc, l3_side.private_bits, gfc.channels_out); + + gr = 0; + for (ch = 0; ch < gfc.channels_out; ch++) { + var gi = l3_side.tt[gr][ch]; + writeheader(gfc, gi.part2_3_length + gi.part2_length, 12); + writeheader(gfc, gi.big_values / 2, 9); + writeheader(gfc, gi.global_gain, 8); + writeheader(gfc, gi.scalefac_compress, 9); + + if (gi.block_type != Encoder.NORM_TYPE) { + writeheader(gfc, 1, 1); + /* window_switching_flag */ + writeheader(gfc, gi.block_type, 2); + writeheader(gfc, gi.mixed_block_flag, 1); + + if (gi.table_select[0] == 14) + gi.table_select[0] = 16; + writeheader(gfc, gi.table_select[0], 5); + if (gi.table_select[1] == 14) + gi.table_select[1] = 16; + writeheader(gfc, gi.table_select[1], 5); + + writeheader(gfc, gi.subblock_gain[0], 3); + writeheader(gfc, gi.subblock_gain[1], 3); + writeheader(gfc, gi.subblock_gain[2], 3); + } else { + writeheader(gfc, 0, 1); + /* window_switching_flag */ + if (gi.table_select[0] == 14) + gi.table_select[0] = 16; + writeheader(gfc, gi.table_select[0], 5); + if (gi.table_select[1] == 14) + gi.table_select[1] = 16; + writeheader(gfc, gi.table_select[1], 5); + if (gi.table_select[2] == 14) + gi.table_select[2] = 16; + writeheader(gfc, gi.table_select[2], 5); + + writeheader(gfc, gi.region0_count, 4); + writeheader(gfc, gi.region1_count, 3); + } + + writeheader(gfc, gi.scalefac_scale, 1); + writeheader(gfc, gi.count1table_select, 1); + } + } + + if (gfp.error_protection) { + abort();//fix cc 精简 + } + + { + var old = gfc.h_ptr; + + gfc.h_ptr = (old + 1) & (LameInternalFlags.MAX_HEADER_BUF - 1); + gfc.header[gfc.h_ptr].write_timing = gfc.header[old].write_timing + + bitsPerFrame; + + if (gfc.h_ptr == gfc.w_ptr) { + /* yikes! we are out of header buffer space */ + //fix cc 精简 print + } + + } + } + + function huffman_coder_count1(gfc, gi) { + /* Write count1 area */ + var h = Tables.ht[gi.count1table_select + 32]; + var i, bits = 0; + + var ix = gi.big_values; + var xr = gi.big_values; + + for (i = (gi.count1 - gi.big_values) / 4; i > 0; --i) { + var huffbits = 0; + var p = 0, v; + + v = gi.l3_enc[ix + 0]; + if (v != 0) { + p += 8; + if (gi.xr[xr + 0] < 0) + huffbits++; + } + + v = gi.l3_enc[ix + 1]; + if (v != 0) { + p += 4; + huffbits *= 2; + if (gi.xr[xr + 1] < 0) + huffbits++; + } + + v = gi.l3_enc[ix + 2]; + if (v != 0) { + p += 2; + huffbits *= 2; + if (gi.xr[xr + 2] < 0) + huffbits++; + } + + v = gi.l3_enc[ix + 3]; + if (v != 0) { + p++; + huffbits *= 2; + if (gi.xr[xr + 3] < 0) + huffbits++; + } + + ix += 4; + xr += 4; + putbits2(gfc, huffbits + h.table[p], h.hlen[p]); + bits += h.hlen[p]; + } + return bits; + } + + /** + * Implements the pseudocode of page 98 of the IS + */ + function Huffmancode(gfc, tableindex, start, end, gi) { + var h = Tables.ht[tableindex]; + var bits = 0; + + if (0 == tableindex) + return bits; + + for (var i = start; i < end; i += 2) { + var cbits = 0; + var xbits = 0; + var linbits = h.xlen; + var xlen = h.xlen; + var ext = 0; + var x1 = gi.l3_enc[i]; + var x2 = gi.l3_enc[i + 1]; + + if (x1 != 0) { + if (gi.xr[i] < 0) + ext++; + cbits--; + } + + if (tableindex > 15) { + /* use ESC-words */ + if (x1 > 14) { + var linbits_x1 = x1 - 15; + ext |= linbits_x1 << 1; + xbits = linbits; + x1 = 15; + } + + if (x2 > 14) { + var linbits_x2 = x2 - 15; + ext <<= linbits; + ext |= linbits_x2; + xbits += linbits; + x2 = 15; + } + xlen = 16; + } + + if (x2 != 0) { + ext <<= 1; + if (gi.xr[i + 1] < 0) + ext++; + cbits--; + } + + + x1 = x1 * xlen + x2; + xbits -= cbits; + cbits += h.hlen[x1]; + + + putbits2(gfc, h.table[x1], cbits); + putbits2(gfc, ext, xbits); + bits += cbits + xbits; + } + return bits; + } + + /** + * Note the discussion of huffmancodebits() on pages 28 and 29 of the IS, as + * well as the definitions of the side information on pages 26 and 27. + */ + function ShortHuffmancodebits(gfc, gi) { + var region1Start = 3 * gfc.scalefac_band.s[3]; + if (region1Start > gi.big_values) + region1Start = gi.big_values; + + /* short blocks do not have a region2 */ + var bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi); + bits += Huffmancode(gfc, gi.table_select[1], region1Start, + gi.big_values, gi); + return bits; + } + + function LongHuffmancodebits(gfc, gi) { + var bigvalues, bits; + var region1Start, region2Start; + + bigvalues = gi.big_values; + + var i = gi.region0_count + 1; + region1Start = gfc.scalefac_band.l[i]; + i += gi.region1_count + 1; + region2Start = gfc.scalefac_band.l[i]; + + if (region1Start > bigvalues) + region1Start = bigvalues; + + if (region2Start > bigvalues) + region2Start = bigvalues; + + bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi); + bits += Huffmancode(gfc, gi.table_select[1], region1Start, + region2Start, gi); + bits += Huffmancode(gfc, gi.table_select[2], region2Start, bigvalues, + gi); + return bits; + } + + function writeMainData(gfp) { + var gr, ch, sfb, data_bits, tot_bits = 0; + var gfc = gfp.internal_flags; + var l3_side = gfc.l3_side; + + if (gfp.version == 1) { + /* MPEG 1 */ + for (gr = 0; gr < 2; gr++) { + for (ch = 0; ch < gfc.channels_out; ch++) { + var gi = l3_side.tt[gr][ch]; + var slen1 = Takehiro.slen1_tab[gi.scalefac_compress]; + var slen2 = Takehiro.slen2_tab[gi.scalefac_compress]; + data_bits = 0; + for (sfb = 0; sfb < gi.sfbdivide; sfb++) { + if (gi.scalefac[sfb] == -1) + continue; + /* scfsi is used */ + putbits2(gfc, gi.scalefac[sfb], slen1); + data_bits += slen1; + } + for (; sfb < gi.sfbmax; sfb++) { + if (gi.scalefac[sfb] == -1) + continue; + /* scfsi is used */ + putbits2(gfc, gi.scalefac[sfb], slen2); + data_bits += slen2; + } + + if (gi.block_type == Encoder.SHORT_TYPE) { + data_bits += ShortHuffmancodebits(gfc, gi); + } else { + data_bits += LongHuffmancodebits(gfc, gi); + } + data_bits += huffman_coder_count1(gfc, gi); + /* does bitcount in quantize.c agree with actual bit count? */ + tot_bits += data_bits; + } + /* for ch */ + } + /* for gr */ + } else { + /* MPEG 2 */ + gr = 0; + for (ch = 0; ch < gfc.channels_out; ch++) { + var gi = l3_side.tt[gr][ch]; + var i, sfb_partition, scale_bits = 0; + data_bits = 0; + sfb = 0; + sfb_partition = 0; + + if (gi.block_type == Encoder.SHORT_TYPE) { + for (; sfb_partition < 4; sfb_partition++) { + var sfbs = gi.sfb_partition_table[sfb_partition] / 3; + var slen = gi.slen[sfb_partition]; + for (i = 0; i < sfbs; i++, sfb++) { + putbits2(gfc, + Math.max(gi.scalefac[sfb * 3 + 0], 0), slen); + putbits2(gfc, + Math.max(gi.scalefac[sfb * 3 + 1], 0), slen); + putbits2(gfc, + Math.max(gi.scalefac[sfb * 3 + 2], 0), slen); + scale_bits += 3 * slen; + } + } + data_bits += ShortHuffmancodebits(gfc, gi); + } else { + for (; sfb_partition < 4; sfb_partition++) { + var sfbs = gi.sfb_partition_table[sfb_partition]; + var slen = gi.slen[sfb_partition]; + for (i = 0; i < sfbs; i++, sfb++) { + putbits2(gfc, Math.max(gi.scalefac[sfb], 0), slen); + scale_bits += slen; + } + } + data_bits += LongHuffmancodebits(gfc, gi); + } + data_bits += huffman_coder_count1(gfc, gi); + /* does bitcount in quantize.c agree with actual bit count? */ + tot_bits += scale_bits + data_bits; + } + /* for ch */ + } + /* for gf */ + return tot_bits; + } + + /* main_data */ + + function TotalBytes() { + this.total = 0; + } + + /* + * compute the number of bits required to flush all mp3 frames currently in + * the buffer. This should be the same as the reservoir size. Only call this + * routine between frames - i.e. only after all headers and data have been + * added to the buffer by format_bitstream(). + * + * Also compute total_bits_output = size of mp3 buffer (including frame + * headers which may not have yet been send to the mp3 buffer) + number of + * bits needed to flush all mp3 frames. + * + * total_bytes_output is the size of the mp3 output buffer if + * lame_encode_flush_nogap() was called right now. + */ + function compute_flushbits(gfp, total_bytes_output) { + var gfc = gfp.internal_flags; + var flushbits, remaining_headers; + var bitsPerFrame; + var last_ptr, first_ptr; + first_ptr = gfc.w_ptr; + /* first header to add to bitstream */ + last_ptr = gfc.h_ptr - 1; + /* last header to add to bitstream */ + if (last_ptr == -1) + last_ptr = LameInternalFlags.MAX_HEADER_BUF - 1; + + /* add this many bits to bitstream so we can flush all headers */ + flushbits = gfc.header[last_ptr].write_timing - totbit; + total_bytes_output.total = flushbits; + + if (flushbits >= 0) { + abort();//fix cc 精简 + } + + /* + * finally, add some bits so that the last frame is complete these bits + * are not necessary to decode the last frame, but some decoders will + * ignore last frame if these bits are missing + */ + bitsPerFrame = self.getframebits(gfp); + flushbits += bitsPerFrame; + total_bytes_output.total += bitsPerFrame; + /* round up: */ + if ((total_bytes_output.total % 8) != 0) + total_bytes_output.total = 1 + (total_bytes_output.total / 8); + else + total_bytes_output.total = (total_bytes_output.total / 8); + total_bytes_output.total += bufByteIdx + 1; + + if (flushbits < 0) { + //fix cc 精简 print + } + return flushbits; + } + + this.flush_bitstream = function (gfp) { + var gfc = gfp.internal_flags; + var l3_side; + var flushbits; + var last_ptr = gfc.h_ptr - 1; + /* last header to add to bitstream */ + if (last_ptr == -1) + last_ptr = LameInternalFlags.MAX_HEADER_BUF - 1; + l3_side = gfc.l3_side; + + if ((flushbits = compute_flushbits(gfp, new TotalBytes())) < 0) + return; + drain_into_ancillary(gfp, flushbits); + + /* check that the 100% of the last frame has been written to bitstream */ + + /* + * we have padded out all frames with ancillary data, which is the same + * as filling the bitreservoir with ancillary data, so : + */ + gfc.ResvSize = 0; + l3_side.main_data_begin = 0; + + /* save the ReplayGain value */ + if (gfc.findReplayGain) { + abort();//fix cc 精简 + } + + /* find the gain and scale change required for no clipping */ + if (gfc.findPeakSample) { + abort();//fix cc 精简 + } + }; + + //fix cc 精简 + + /** + * This is called after a frame of audio has been quantized and coded. It + * will write the encoded audio to the bitstream. Note that from a layer3 + * encoder's perspective the bit stream is primarily a series of main_data() + * blocks, with header and side information inserted at the proper locations + * to maintain framing. (See Figure A.7 in the IS). + */ + this.format_bitstream = function (gfp) { + var gfc = gfp.internal_flags; + var l3_side; + l3_side = gfc.l3_side; + + var bitsPerFrame = this.getframebits(gfp); + drain_into_ancillary(gfp, l3_side.resvDrain_pre); + + encodeSideInfo2(gfp, bitsPerFrame); + var bits = 8 * gfc.sideinfo_len; + bits += writeMainData(gfp); + drain_into_ancillary(gfp, l3_side.resvDrain_post); + bits += l3_side.resvDrain_post; + + l3_side.main_data_begin += (bitsPerFrame - bits) / 8; + + /* + * compare number of bits needed to clear all buffered mp3 frames with + * what we think the resvsize is: + */ + if (compute_flushbits(gfp, new TotalBytes()) != gfc.ResvSize) { + //fix cc 精简 print + } + + /* + * compare main_data_begin for the next frame with what we think the + * resvsize is: + */ + if ((l3_side.main_data_begin * 8) != gfc.ResvSize) { + //fix cc 精简 print + gfc.ResvSize = l3_side.main_data_begin * 8; + } + //; + + if (totbit > 1000000000) { //不可精简 + /* + * to avoid totbit overflow, (at 8h encoding at 128kbs) lets reset + * bit counter + */ + var i; + for (i = 0; i < LameInternalFlags.MAX_HEADER_BUF; ++i) + gfc.header[i].write_timing -= totbit; + totbit = 0; + } + + return 0; + }; + + /** + *
+     * copy data out of the internal MP3 bit buffer into a user supplied
+     *       unsigned char buffer.
+     *
+     *       mp3data=0      indicates data in buffer is an id3tags and VBR tags
+     *       mp3data=1      data is real mp3 frame data.
+     * 
+ */ + this.copy_buffer = function (gfc, buffer, bufferPos, size, mp3data) { + var minimum = bufByteIdx + 1; + if (minimum <= 0) + return 0; + if (size != 0 && minimum > size) { + /* buffer is too small */ + return -1; + } + System.arraycopy(buf, 0, buffer, bufferPos, minimum); + bufByteIdx = -1; + bufBitIdx = 0; + + if (mp3data != 0) { + var crc = new_int(1); + crc[0] = gfc.nMusicCRC; + vbr.updateMusicCRC(crc, buffer, bufferPos, minimum); + gfc.nMusicCRC = crc[0]; + + /** + * sum number of bytes belonging to the mp3 stream this info will be + * written into the Xing/LAME header for seeking + */ + if (minimum > 0) { + gfc.VBR_seek_table.nBytesWritten += minimum; + } + + if (gfc.decode_on_the_fly) { /* decode the frame */ + abort();//fix cc 精简 + } + /* if (gfc.decode_on_the_fly) */ + + } + /* if (mp3data) */ + return minimum; + }; + + this.init_bit_stream_w = function (gfc) { + buf = new_byte(Lame.LAME_MAXMP3BUFFER); + + gfc.h_ptr = gfc.w_ptr = 0; + gfc.header[gfc.h_ptr].write_timing = 0; + bufByteIdx = -1; + bufBitIdx = 0; + totbit = 0; + }; + + // From machine.h + + +} + +function HuffCodeTab(len, max, tab, hl) { + this.xlen = len; + this.linmax = max; + this.table = tab; + this.hlen = hl; +} + +var Tables = {}; + + +Tables.t1HB = [ + 1, 1, + 1, 0 +]; + +Tables.t2HB = [ + 1, 2, 1, + 3, 1, 1, + 3, 2, 0 +]; + +Tables.t3HB = [ + 3, 2, 1, + 1, 1, 1, + 3, 2, 0 +]; + +Tables.t5HB = [ + 1, 2, 6, 5, + 3, 1, 4, 4, + 7, 5, 7, 1, + 6, 1, 1, 0 +]; + +Tables.t6HB = [ + 7, 3, 5, 1, + 6, 2, 3, 2, + 5, 4, 4, 1, + 3, 3, 2, 0 +]; + +Tables.t7HB = [ + 1, 2, 10, 19, 16, 10, + 3, 3, 7, 10, 5, 3, + 11, 4, 13, 17, 8, 4, + 12, 11, 18, 15, 11, 2, + 7, 6, 9, 14, 3, 1, + 6, 4, 5, 3, 2, 0 +]; + +Tables.t8HB = [ + 3, 4, 6, 18, 12, 5, + 5, 1, 2, 16, 9, 3, + 7, 3, 5, 14, 7, 3, + 19, 17, 15, 13, 10, 4, + 13, 5, 8, 11, 5, 1, + 12, 4, 4, 1, 1, 0 +]; + +Tables.t9HB = [ + 7, 5, 9, 14, 15, 7, + 6, 4, 5, 5, 6, 7, + 7, 6, 8, 8, 8, 5, + 15, 6, 9, 10, 5, 1, + 11, 7, 9, 6, 4, 1, + 14, 4, 6, 2, 6, 0 +]; + +Tables.t10HB = [ + 1, 2, 10, 23, 35, 30, 12, 17, + 3, 3, 8, 12, 18, 21, 12, 7, + 11, 9, 15, 21, 32, 40, 19, 6, + 14, 13, 22, 34, 46, 23, 18, 7, + 20, 19, 33, 47, 27, 22, 9, 3, + 31, 22, 41, 26, 21, 20, 5, 3, + 14, 13, 10, 11, 16, 6, 5, 1, + 9, 8, 7, 8, 4, 4, 2, 0 +]; + +Tables.t11HB = [ + 3, 4, 10, 24, 34, 33, 21, 15, + 5, 3, 4, 10, 32, 17, 11, 10, + 11, 7, 13, 18, 30, 31, 20, 5, + 25, 11, 19, 59, 27, 18, 12, 5, + 35, 33, 31, 58, 30, 16, 7, 5, + 28, 26, 32, 19, 17, 15, 8, 14, + 14, 12, 9, 13, 14, 9, 4, 1, + 11, 4, 6, 6, 6, 3, 2, 0 +]; + +Tables.t12HB = [ + 9, 6, 16, 33, 41, 39, 38, 26, + 7, 5, 6, 9, 23, 16, 26, 11, + 17, 7, 11, 14, 21, 30, 10, 7, + 17, 10, 15, 12, 18, 28, 14, 5, + 32, 13, 22, 19, 18, 16, 9, 5, + 40, 17, 31, 29, 17, 13, 4, 2, + 27, 12, 11, 15, 10, 7, 4, 1, + 27, 12, 8, 12, 6, 3, 1, 0 +]; + +Tables.t13HB = [ + 1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19, + 3, 4, 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14, + 15, 13, 23, 36, 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16, + 22, 20, 37, 61, 56, 79, 73, 64, 43, 76, 56, 37, 26, 31, 25, 14, + 35, 16, 60, 57, 97, 75, 114, 91, 54, 73, 55, 41, 48, 53, 23, 24, + 58, 27, 50, 96, 76, 70, 93, 84, 77, 58, 79, 29, 74, 49, 41, 17, + 47, 45, 78, 74, 115, 94, 90, 79, 69, 83, 71, 50, 59, 38, 36, 15, + 72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44, 43, 42, + 43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16, + 53, 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11, + 35, 33, 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22, + 53, 25, 23, 38, 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7, + 34, 32, 28, 39, 49, 75, 30, 52, 48, 40, 52, 28, 18, 17, 9, 5, + 45, 21, 34, 64, 56, 50, 49, 45, 31, 19, 12, 15, 10, 7, 6, 3, + 48, 23, 20, 39, 36, 35, 53, 21, 16, 23, 13, 10, 6, 1, 4, 2, + 16, 15, 17, 27, 25, 20, 29, 11, 17, 12, 16, 8, 1, 1, 0, 1 +]; + +Tables.t15HB = [ + 7, 12, 18, 53, 47, 76, 124, 108, 89, 123, 108, 119, 107, 81, 122, 63, + 13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36, + 19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56, 33, + 29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29, + 52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27, + 77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38, + 125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30, + 109, 53, 49, 94, 88, 75, 66, 122, 91, 73, 56, 42, 64, 44, 21, 25, + 90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20, + 71, 34, 67, 60, 58, 49, 88, 76, 67, 106, 71, 54, 38, 39, 23, 15, + 109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9, + 86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11, + 118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7, + 91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3, + 123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1, + 71, 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0 +]; + +Tables.t16HB = [ + 1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195, 376, 17, + 3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119, 201, 107, 207, 9, + 15, 13, 23, 38, 67, 58, 103, 90, 161, 72, 127, 117, 110, 209, 206, 16, + 45, 21, 39, 69, 64, 114, 99, 87, 158, 140, 252, 212, 199, 387, 365, 26, + 75, 36, 68, 65, 115, 101, 179, 164, 155, 264, 246, 226, 395, 382, 362, 9, + 66, 30, 59, 56, 102, 185, 173, 265, 142, 253, 232, 400, 388, 378, 445, 16, + 111, 54, 52, 100, 184, 178, 160, 133, 257, 244, 228, 217, 385, 366, 715, 10, + 98, 48, 91, 88, 165, 157, 148, 261, 248, 407, 397, 372, 380, 889, 884, 8, + 85, 84, 81, 159, 156, 143, 260, 249, 427, 401, 392, 383, 727, 713, 708, 7, + 154, 76, 73, 141, 131, 256, 245, 426, 406, 394, 384, 735, 359, 710, 352, 11, + 139, 129, 67, 125, 247, 233, 229, 219, 393, 743, 737, 720, 885, 882, 439, 4, + 243, 120, 118, 115, 227, 223, 396, 746, 742, 736, 721, 712, 706, 223, 436, 6, + 202, 224, 222, 218, 216, 389, 386, 381, 364, 888, 443, 707, 440, 437, 1728, 4, + 747, 211, 210, 208, 370, 379, 734, 723, 714, 1735, 883, 877, 876, 3459, 865, 2, + 377, 369, 102, 187, 726, 722, 358, 711, 709, 866, 1734, 871, 3458, 870, 434, 0, + 12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7, 5, 3, 1, 3 +]; + +Tables.t24HB = [ + 15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032, 88, + 14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297, 279, 42, + 47, 22, 41, 74, 68, 128, 120, 221, 207, 194, 182, 340, 315, 295, 541, 18, + 81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325, 311, 293, 271, 16, + 147, 72, 69, 135, 127, 118, 112, 210, 200, 188, 352, 323, 306, 285, 540, 14, + 263, 66, 129, 126, 119, 114, 214, 202, 192, 180, 341, 317, 301, 281, 262, 12, + 249, 123, 121, 117, 113, 215, 206, 195, 185, 347, 330, 308, 291, 272, 520, 10, + 435, 115, 111, 109, 211, 203, 196, 187, 353, 332, 313, 298, 283, 531, 381, 17, + 427, 212, 208, 205, 201, 193, 186, 177, 169, 320, 303, 286, 268, 514, 377, 16, + 335, 199, 197, 191, 189, 181, 174, 333, 321, 305, 289, 275, 521, 379, 371, 11, + 668, 184, 183, 179, 175, 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10, + 652, 346, 171, 168, 164, 318, 309, 299, 287, 276, 263, 513, 375, 368, 362, 6, + 648, 322, 316, 312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4, + 620, 300, 296, 294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2, + 1033, 280, 278, 274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0, + 43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1, 3 +]; + +Tables.t32HB = [ + 1 << 0, 5 << 1, 4 << 1, 5 << 2, 6 << 1, 5 << 2, 4 << 2, 4 << 3, + 7 << 1, 3 << 2, 6 << 2, 0 << 3, 7 << 2, 2 << 3, 3 << 3, 1 << 4 +]; + +Tables.t33HB = [ + 15 << 0, 14 << 1, 13 << 1, 12 << 2, 11 << 1, 10 << 2, 9 << 2, 8 << 3, + 7 << 1, 6 << 2, 5 << 2, 4 << 3, 3 << 2, 2 << 3, 1 << 3, 0 << 4 +]; + +Tables.t1l = [ + 1, 4, + 3, 5 +]; + +Tables.t2l = [ + 1, 4, 7, + 4, 5, 7, + 6, 7, 8 +]; + +Tables.t3l = [ + 2, 3, 7, + 4, 4, 7, + 6, 7, 8 +]; + +Tables.t5l = [ + 1, 4, 7, 8, + 4, 5, 8, 9, + 7, 8, 9, 10, + 8, 8, 9, 10 +]; + +Tables.t6l = [ + 3, 4, 6, 8, + 4, 4, 6, 7, + 5, 6, 7, 8, + 7, 7, 8, 9 +]; + +Tables.t7l = [ + 1, 4, 7, 9, 9, 10, + 4, 6, 8, 9, 9, 10, + 7, 7, 9, 10, 10, 11, + 8, 9, 10, 11, 11, 11, + 8, 9, 10, 11, 11, 12, + 9, 10, 11, 12, 12, 12 +]; + +Tables.t8l = [ + 2, 4, 7, 9, 9, 10, + 4, 4, 6, 10, 10, 10, + 7, 6, 8, 10, 10, 11, + 9, 10, 10, 11, 11, 12, + 9, 9, 10, 11, 12, 12, + 10, 10, 11, 11, 13, 13 +]; + +Tables.t9l = [ + 3, 4, 6, 7, 9, 10, + 4, 5, 6, 7, 8, 10, + 5, 6, 7, 8, 9, 10, + 7, 7, 8, 9, 9, 10, + 8, 8, 9, 9, 10, 11, + 9, 9, 10, 10, 11, 11 +]; + +Tables.t10l = [ + 1, 4, 7, 9, 10, 10, 10, 11, + 4, 6, 8, 9, 10, 11, 10, 10, + 7, 8, 9, 10, 11, 12, 11, 11, + 8, 9, 10, 11, 12, 12, 11, 12, + 9, 10, 11, 12, 12, 12, 12, 12, + 10, 11, 12, 12, 13, 13, 12, 13, + 9, 10, 11, 12, 12, 12, 13, 13, + 10, 10, 11, 12, 12, 13, 13, 13 +]; + +Tables.t11l = [ + 2, 4, 6, 8, 9, 10, 9, 10, + 4, 5, 6, 8, 10, 10, 9, 10, + 6, 7, 8, 9, 10, 11, 10, 10, + 8, 8, 9, 11, 10, 12, 10, 11, + 9, 10, 10, 11, 11, 12, 11, 12, + 9, 10, 11, 12, 12, 13, 12, 13, + 9, 9, 9, 10, 11, 12, 12, 12, + 9, 9, 10, 11, 12, 12, 12, 12 +]; + +Tables.t12l = [ + 4, 4, 6, 8, 9, 10, 10, 10, + 4, 5, 6, 7, 9, 9, 10, 10, + 6, 6, 7, 8, 9, 10, 9, 10, + 7, 7, 8, 8, 9, 10, 10, 10, + 8, 8, 9, 9, 10, 10, 10, 11, + 9, 9, 10, 10, 10, 11, 10, 11, + 9, 9, 9, 10, 10, 11, 11, 12, + 10, 10, 10, 11, 11, 11, 11, 12 +]; + +Tables.t13l = [ + 1, 5, 7, 8, 9, 10, 10, 11, 10, 11, 12, 12, 13, 13, 14, 14, + 4, 6, 8, 9, 10, 10, 11, 11, 11, 11, 12, 12, 13, 14, 14, 14, + 7, 8, 9, 10, 11, 11, 12, 12, 11, 12, 12, 13, 13, 14, 15, 15, + 8, 9, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 15, + 9, 9, 11, 11, 12, 12, 13, 13, 12, 13, 13, 14, 14, 15, 15, 16, + 10, 10, 11, 12, 12, 12, 13, 13, 13, 13, 14, 13, 15, 15, 16, 16, + 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 15, 15, 16, 16, + 11, 11, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 18, 18, + 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 16, 17, 17, + 11, 11, 12, 12, 13, 13, 13, 15, 14, 15, 15, 16, 16, 16, 18, 17, + 11, 12, 12, 13, 13, 14, 14, 15, 14, 15, 16, 15, 16, 17, 18, 19, + 12, 12, 12, 13, 14, 14, 14, 14, 15, 15, 15, 16, 17, 17, 17, 18, + 12, 13, 13, 14, 14, 15, 14, 15, 16, 16, 17, 17, 17, 18, 18, 18, + 13, 13, 14, 15, 15, 15, 16, 16, 16, 16, 16, 17, 18, 17, 18, 18, + 14, 14, 14, 15, 15, 15, 17, 16, 16, 19, 17, 17, 17, 19, 18, 18, + 13, 14, 15, 16, 16, 16, 17, 16, 17, 17, 18, 18, 21, 20, 21, 18 +]; + +Tables.t15l = [ + 3, 5, 6, 8, 8, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 14, + 5, 5, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, + 6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13, + 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, + 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, + 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14, + 10, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14, + 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 14, + 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 14, 14, + 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, + 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 14, + 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15, + 12, 12, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 15, 15, + 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, + 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 14, 15, + 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 15 +]; + +Tables.t16_5l = [ + 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 11, + 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 11, + 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 12, + 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 13, + 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 12, + 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 13, + 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 13, + 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 13, + 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 13, + 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 14, + 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 13, + 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 14, + 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 14, + 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 14, + 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 14, + 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 12 +]; + +Tables.t16l = [ + 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 10, + 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 10, + 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 11, + 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 12, + 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 11, + 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 12, + 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 12, + 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 12, + 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 12, + 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 13, + 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 12, + 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 13, + 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 13, + 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 13, + 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 13, + 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10 +]; + +Tables.t24l = [ + 4, 5, 7, 8, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 13, 10, + 5, 6, 7, 8, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 10, + 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 9, + 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 9, + 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13, 9, + 10, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 9, + 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 9, + 11, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 10, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 10, + 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 10, + 12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10, + 12, 12, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 10, + 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10, + 13, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 10, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 6 +]; + +Tables.t32l = [ + 1 + 0, 4 + 1, 4 + 1, 5 + 2, 4 + 1, 6 + 2, 5 + 2, 6 + 3, + 4 + 1, 5 + 2, 5 + 2, 6 + 3, 5 + 2, 6 + 3, 6 + 3, 6 + 4 +]; + +Tables.t33l = [ + 4 + 0, 4 + 1, 4 + 1, 4 + 2, 4 + 1, 4 + 2, 4 + 2, 4 + 3, + 4 + 1, 4 + 2, 4 + 2, 4 + 3, 4 + 2, 4 + 3, 4 + 3, 4 + 4 +]; + +Tables.ht = [ + /* xlen, linmax, table, hlen */ + new HuffCodeTab(0, 0, null, null), + new HuffCodeTab(2, 0, Tables.t1HB, Tables.t1l), + new HuffCodeTab(3, 0, Tables.t2HB, Tables.t2l), + new HuffCodeTab(3, 0, Tables.t3HB, Tables.t3l), + new HuffCodeTab(0, 0, null, null), /* Apparently not used */ + new HuffCodeTab(4, 0, Tables.t5HB, Tables.t5l), + new HuffCodeTab(4, 0, Tables.t6HB, Tables.t6l), + new HuffCodeTab(6, 0, Tables.t7HB, Tables.t7l), + new HuffCodeTab(6, 0, Tables.t8HB, Tables.t8l), + new HuffCodeTab(6, 0, Tables.t9HB, Tables.t9l), + new HuffCodeTab(8, 0, Tables.t10HB, Tables.t10l), + new HuffCodeTab(8, 0, Tables.t11HB, Tables.t11l), + new HuffCodeTab(8, 0, Tables.t12HB, Tables.t12l), + new HuffCodeTab(16, 0, Tables.t13HB, Tables.t13l), + new HuffCodeTab(0, 0, null, Tables.t16_5l), /* Apparently not used */ + new HuffCodeTab(16, 0, Tables.t15HB, Tables.t15l), + + new HuffCodeTab(1, 1, Tables.t16HB, Tables.t16l), + new HuffCodeTab(2, 3, Tables.t16HB, Tables.t16l), + new HuffCodeTab(3, 7, Tables.t16HB, Tables.t16l), + new HuffCodeTab(4, 15, Tables.t16HB, Tables.t16l), + new HuffCodeTab(6, 63, Tables.t16HB, Tables.t16l), + new HuffCodeTab(8, 255, Tables.t16HB, Tables.t16l), + new HuffCodeTab(10, 1023, Tables.t16HB, Tables.t16l), + new HuffCodeTab(13, 8191, Tables.t16HB, Tables.t16l), + + new HuffCodeTab(4, 15, Tables.t24HB, Tables.t24l), + new HuffCodeTab(5, 31, Tables.t24HB, Tables.t24l), + new HuffCodeTab(6, 63, Tables.t24HB, Tables.t24l), + new HuffCodeTab(7, 127, Tables.t24HB, Tables.t24l), + new HuffCodeTab(8, 255, Tables.t24HB, Tables.t24l), + new HuffCodeTab(9, 511, Tables.t24HB, Tables.t24l), + new HuffCodeTab(11, 2047, Tables.t24HB, Tables.t24l), + new HuffCodeTab(13, 8191, Tables.t24HB, Tables.t24l), + + new HuffCodeTab(0, 0, Tables.t32HB, Tables.t32l), + new HuffCodeTab(0, 0, Tables.t33HB, Tables.t33l), +]; + +/** + * + * for (i = 0; i < 16*16; i++) [ + * largetbl[i] = ((ht[16].hlen[i]) << 16) + ht[24].hlen[i]; + * ] + * + * + */ +Tables.largetbl = [ + 0x010004, 0x050005, 0x070007, 0x090008, 0x0a0009, 0x0a000a, 0x0b000a, 0x0b000b, + 0x0c000b, 0x0c000c, 0x0c000c, 0x0d000c, 0x0d000c, 0x0d000c, 0x0e000d, 0x0a000a, + 0x040005, 0x060006, 0x080007, 0x090008, 0x0a0009, 0x0b000a, 0x0b000a, 0x0b000b, + 0x0c000b, 0x0c000b, 0x0c000c, 0x0d000c, 0x0e000c, 0x0d000c, 0x0e000c, 0x0a000a, + 0x070007, 0x080007, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000b, + 0x0d000b, 0x0c000b, 0x0d000b, 0x0d000c, 0x0d000c, 0x0e000c, 0x0e000d, 0x0b0009, + 0x090008, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0c000b, + 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0c0009, + 0x0a0009, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000a, 0x0d000b, + 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000d, 0x0b0009, + 0x0a000a, 0x0a0009, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0e000b, + 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0c0009, + 0x0b000a, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0d000b, 0x0d000b, + 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000d, 0x0c0009, + 0x0b000b, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, + 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x11000d, 0x11000d, 0x0c000a, + 0x0b000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, + 0x0f000b, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000d, 0x10000d, 0x0c000a, + 0x0c000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, 0x0f000c, + 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0f000d, 0x10000d, 0x0f000d, 0x0d000a, + 0x0c000c, 0x0d000b, 0x0c000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, + 0x0f000c, 0x10000c, 0x10000c, 0x10000d, 0x11000d, 0x11000d, 0x10000d, 0x0c000a, + 0x0d000c, 0x0d000c, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x10000c, + 0x10000c, 0x10000c, 0x10000c, 0x10000d, 0x10000d, 0x0f000d, 0x10000d, 0x0d000a, + 0x0d000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, + 0x0f000c, 0x11000c, 0x10000d, 0x10000d, 0x10000d, 0x10000d, 0x12000d, 0x0d000a, + 0x0f000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000c, + 0x10000d, 0x12000d, 0x11000d, 0x11000d, 0x11000d, 0x13000d, 0x11000d, 0x0d000a, + 0x0e000d, 0x0f000c, 0x0d000c, 0x0e000c, 0x10000c, 0x10000c, 0x0f000c, 0x10000d, + 0x10000d, 0x11000d, 0x12000d, 0x11000d, 0x13000d, 0x11000d, 0x10000d, 0x0d000a, + 0x0a0009, 0x0a0009, 0x0a0009, 0x0b0009, 0x0b0009, 0x0c0009, 0x0c0009, 0x0c0009, + 0x0d0009, 0x0d0009, 0x0d0009, 0x0d000a, 0x0d000a, 0x0d000a, 0x0d000a, 0x0a0006 +]; +/** + * + * for (i = 0; i < 3*3; i++) [ + * table23[i] = ((ht[2].hlen[i]) << 16) + ht[3].hlen[i]; + * ] + * + * + */ +Tables.table23 = [ + 0x010002, 0x040003, 0x070007, + 0x040004, 0x050004, 0x070007, + 0x060006, 0x070007, 0x080008 +]; + +/** + * + * for (i = 0; i < 4*4; i++) [ + * table56[i] = ((ht[5].hlen[i]) << 16) + ht[6].hlen[i]; + * ] + * + * + */ +Tables.table56 = [ + 0x010003, 0x040004, 0x070006, 0x080008, 0x040004, 0x050004, 0x080006, 0x090007, + 0x070005, 0x080006, 0x090007, 0x0a0008, 0x080007, 0x080007, 0x090008, 0x0a0009 +]; + +Tables.bitrate_table = [ + [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1], /* MPEG 2 */ + [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1], /* MPEG 1 */ + [0, 8, 16, 24, 32, 40, 48, 56, 64, -1, -1, -1, -1, -1, -1, -1], /* MPEG 2.5 */ +]; + +/** + * MPEG 2, MPEG 1, MPEG 2.5. + */ +Tables.samplerate_table = [ + [22050, 24000, 16000, -1], + [44100, 48000, 32000, -1], + [11025, 12000, 8000, -1], +]; + +/** + * This is the scfsi_band table from 2.4.2.7 of the IS. + */ +Tables.scfsi_band = [0, 6, 11, 16, 21]; + +function MeanBits(meanBits) { + this.bits = meanBits; +} + +//package mp3; + +function CalcNoiseResult() { + /** + * sum of quantization noise > masking + */ + this.over_noise = 0.; + /** + * sum of all quantization noise + */ + this.tot_noise = 0.; + /** + * max quantization noise + */ + this.max_noise = 0.; + /** + * number of quantization noise > masking + */ + this.over_count = 0; + /** + * SSD-like cost of distorted bands + */ + this.over_SSD = 0; + this.bits = 0; +} + +function VBRQuantize() { + var qupvt; + var tak; + + this.setModules = function (_qupvt, _tk) { + qupvt = _qupvt; + tak = _tk; + } + //TODO + +} + + + +/** + * ATH related stuff, if something new ATH related has to be added, please plug + * it here into the ATH. + */ +function ATH() { + /** + * Method for the auto adjustment. + */ + this.useAdjust = 0; + /** + * factor for tuning the (sample power) point below which adaptive threshold + * of hearing adjustment occurs + */ + this.aaSensitivityP = 0.; + /** + * Lowering based on peak volume, 1 = no lowering. + */ + this.adjust = 0.; + /** + * Limit for dynamic ATH adjust. + */ + this.adjustLimit = 0.; + /** + * Determined to lower x dB each second. + */ + this.decay = 0.; + /** + * Lowest ATH value. + */ + this.floor = 0.; + /** + * ATH for sfbs in long blocks. + */ + this.l = new_float(Encoder.SBMAX_l); + /** + * ATH for sfbs in short blocks. + */ + this.s = new_float(Encoder.SBMAX_s); + /** + * ATH for partitioned sfb21 in long blocks. + */ + this.psfb21 = new_float(Encoder.PSFB21); + /** + * ATH for partitioned sfb12 in short blocks. + */ + this.psfb12 = new_float(Encoder.PSFB12); + /** + * ATH for long block convolution bands. + */ + this.cb_l = new_float(Encoder.CBANDS); + /** + * ATH for short block convolution bands. + */ + this.cb_s = new_float(Encoder.CBANDS); + /** + * Equal loudness weights (based on ATH). + */ + this.eql_w = new_float(Encoder.BLKSIZE / 2); +} + + +function LameGlobalFlags() { + + this.class_id = 0; + + /* input description */ + + /** + * number of samples. default=-1 + */ + this.num_samples = 0; + /** + * input number of channels. default=2 + */ + this.num_channels = 0; + /** + * input_samp_rate in Hz. default=44.1 kHz + */ + this.in_samplerate = 0; + /** + * output_samp_rate. default: LAME picks best value at least not used for + * MP3 decoding: Remember 44.1 kHz MP3s and AC97 + */ + this.out_samplerate = 0; + /** + * scale input by this amount before encoding at least not used for MP3 + * decoding + */ + this.scale = 0.; + /** + * scale input of channel 0 (left) by this amount before encoding + */ + this.scale_left = 0.; + /** + * scale input of channel 1 (right) by this amount before encoding + */ + this.scale_right = 0.; + + /* general control params */ + /** + * collect data for a MP3 frame analyzer? + */ + this.analysis = false; + /** + * add Xing VBR tag? + */ + this.bWriteVbrTag = false; + + /** + * use lame/mpglib to convert mp3 to wav + */ + this.decode_only = false; + /** + * quality setting 0=best, 9=worst default=5 + */ + this.quality = 0; + /** + * see enum default = LAME picks best value + */ + this.mode = MPEGMode.STEREO; + /** + * force M/S mode. requires mode=1 + */ + this.force_ms = false; + /** + * use free format? default=0 + */ + this.free_format = false; + /** + * find the RG value? default=0 + */ + this.findReplayGain = false; + /** + * decode on the fly? default=0 + */ + this.decode_on_the_fly = false; + /** + * 1 (default) writes ID3 tags, 0 not + */ + this.write_id3tag_automatic = false; + + /* + * set either brate>0 or compression_ratio>0, LAME will compute the value of + * the variable not set. Default is compression_ratio = 11.025 + */ + /** + * bitrate + */ + this.brate = 0; + /** + * sizeof(wav file)/sizeof(mp3 file) + */ + this.compression_ratio = 0.; + + /* frame params */ + /** + * mark as copyright. default=0 + */ + this.copyright = 0; + /** + * mark as original. default=1 + */ + this.original = 0; + /** + * the MP3 'private extension' bit. Meaningless + */ + this.extension = 0; + /** + * Input PCM is emphased PCM (for instance from one of the rarely emphased + * CDs), it is STRONGLY not recommended to use this, because psycho does not + * take it into account, and last but not least many decoders don't care + * about these bits + */ + this.emphasis = 0; + /** + * use 2 bytes per frame for a CRC checksum. default=0 + */ + this.error_protection = 0; + /** + * enforce ISO spec as much as possible + */ + this.strict_ISO = false; + + /** + * use bit reservoir? + */ + this.disable_reservoir = false; + + /* quantization/noise shaping */ + this.quant_comp = 0; + this.quant_comp_short = 0; + this.experimentalY = false; + this.experimentalZ = 0; + this.exp_nspsytune = 0; + + this.preset = 0; + + /* VBR control */ + this.VBR = null; + /** + * Range [0,...,1[ + */ + this.VBR_q_frac = 0.; + /** + * Range [0,...,9] + */ + this.VBR_q = 0; + this.VBR_mean_bitrate_kbps = 0; + this.VBR_min_bitrate_kbps = 0; + this.VBR_max_bitrate_kbps = 0; + /** + * strictly enforce VBR_min_bitrate normaly, it will be violated for analog + * silence + */ + this.VBR_hard_min = 0; + + /* resampling and filtering */ + + /** + * freq in Hz. 0=lame choses. -1=no filter + */ + this.lowpassfreq = 0; + /** + * freq in Hz. 0=lame choses. -1=no filter + */ + this.highpassfreq = 0; + /** + * freq width of filter, in Hz (default=15%) + */ + this.lowpasswidth = 0; + /** + * freq width of filter, in Hz (default=15%) + */ + this.highpasswidth = 0; + + /* + * psycho acoustics and other arguments which you should not change unless + * you know what you are doing + */ + + this.maskingadjust = 0.; + this.maskingadjust_short = 0.; + /** + * only use ATH + */ + this.ATHonly = false; + /** + * only use ATH for short blocks + */ + this.ATHshort = false; + /** + * disable ATH + */ + this.noATH = false; + /** + * select ATH formula + */ + this.ATHtype = 0; + /** + * change ATH formula 4 shape + */ + this.ATHcurve = 0.; + /** + * lower ATH by this many db + */ + this.ATHlower = 0.; + /** + * select ATH auto-adjust scheme + */ + this.athaa_type = 0; + /** + * select ATH auto-adjust loudness calc + */ + this.athaa_loudapprox = 0; + /** + * dB, tune active region of auto-level + */ + this.athaa_sensitivity = 0.; + this.short_blocks = null; + /** + * use temporal masking effect + */ + this.useTemporal = false; + this.interChRatio = 0.; + /** + * Naoki's adjustment of Mid/Side maskings + */ + this.msfix = 0.; + + /** + * 0 off, 1 on + */ + this.tune = false; + /** + * used to pass values for debugging and stuff + */ + this.tune_value_a = 0.; + + /************************************************************************/ + /* internal variables, do not set... */ + /* provided because they may be of use to calling application */ + /************************************************************************/ + + /** + * 0=MPEG-2/2.5 1=MPEG-1 + */ + this.version = 0; + this.encoder_delay = 0; + /** + * number of samples of padding appended to input + */ + this.encoder_padding = 0; + this.framesize = 0; + /** + * number of frames encoded + */ + this.frameNum = 0; + /** + * is this struct owned by calling program or lame? + */ + this.lame_allocated_gfp = 0; + /**************************************************************************/ + /* more internal variables are stored in this structure: */ + /**************************************************************************/ + this.internal_flags = null; +} + + + +function CBRNewIterationLoop(_quantize) { + var quantize = _quantize; + this.quantize = quantize; + this.iteration_loop = function(gfp, pe, ms_ener_ratio, ratio) { + var gfc = gfp.internal_flags; + var l3_xmin = new_float(L3Side.SFBMAX); + var xrpow = new_float(576); + var targ_bits = new_int(2); + var mean_bits = 0, max_bits; + var l3_side = gfc.l3_side; + + var mb = new MeanBits(mean_bits); + this.quantize.rv.ResvFrameBegin(gfp, mb); + mean_bits = mb.bits; + + /* quantize! */ + for (var gr = 0; gr < gfc.mode_gr; gr++) { + + /* + * calculate needed bits + */ + max_bits = this.quantize.qupvt.on_pe(gfp, pe, targ_bits, mean_bits, + gr, gr); + + if (gfc.mode_ext == Encoder.MPG_MD_MS_LR) { + abort();//fix cc 精简 + } + + for (var ch = 0; ch < gfc.channels_out; ch++) { + var adjust, masking_lower_db; + var cod_info = l3_side.tt[gr][ch]; + + if (cod_info.block_type != Encoder.SHORT_TYPE) { + // NORM, START or STOP type + adjust = 0; + masking_lower_db = gfc.PSY.mask_adjust - adjust; + } else { + adjust = 0; + masking_lower_db = gfc.PSY.mask_adjust_short - adjust; + } + gfc.masking_lower = Math.pow(10.0, + masking_lower_db * 0.1); + + /* + * init_outer_loop sets up cod_info, scalefac and xrpow + */ + this.quantize.init_outer_loop(gfc, cod_info); + if (this.quantize.init_xrpow(gfc, cod_info, xrpow)) { + /* + * xr contains energy we will have to encode calculate the + * masking abilities find some good quantization in + * outer_loop + */ + this.quantize.qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info, + l3_xmin); + this.quantize.outer_loop(gfp, cod_info, l3_xmin, xrpow, ch, + targ_bits[ch]); + } + + this.quantize.iteration_finish_one(gfc, gr, ch); + } /* for ch */ + } /* for gr */ + + this.quantize.rv.ResvFrameEnd(gfc, mean_bits); + } +} + + +function ReplayGain() { + //fix 精简 +} + +//package mp3; + +/** + * Layer III side information. + * + * @author Ken + * + */ + + + +function ScaleFac(arrL, arrS, arr21, arr12) { + + this.l = new_int(1 + Encoder.SBMAX_l); + this.s = new_int(1 + Encoder.SBMAX_s); + this.psfb21 = new_int(1 + Encoder.PSFB21); + this.psfb12 = new_int(1 + Encoder.PSFB12); + var l = this.l; + var s = this.s; + + if (arguments.length == 4) { + //public ScaleFac(final int[] arrL, final int[] arrS, final int[] arr21, + // final int[] arr12) { + this.arrL = arguments[0]; + this.arrS = arguments[1]; + this.arr21 = arguments[2]; + this.arr12 = arguments[3]; + + System.arraycopy(this.arrL, 0, l, 0, Math.min(this.arrL.length, this.l.length)); + System.arraycopy(this.arrS, 0, s, 0, Math.min(this.arrS.length, this.s.length)); + System.arraycopy(this.arr21, 0, this.psfb21, 0, Math.min(this.arr21.length, this.psfb21.length)); + System.arraycopy(this.arr12, 0, this.psfb12, 0, Math.min(this.arr12.length, this.psfb12.length)); + } +} + +/* + * quantize_pvt source file + * + * Copyright (c) 1999-2002 Takehiro Tominaga + * Copyright (c) 2000-2002 Robert Hegemann + * Copyright (c) 2001 Naoki Shibata + * Copyright (c) 2002-2005 Gabriel Bouvigne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: QuantizePVT.java,v 1.24 2011/05/24 20:48:06 kenchis Exp $ */ + + +QuantizePVT.Q_MAX = (256 + 1); +QuantizePVT.Q_MAX2 = 116; +QuantizePVT.LARGE_BITS = 100000; +QuantizePVT.IXMAX_VAL = 8206; + +function QuantizePVT() { + + var tak = null; + var rv = null; + var psy = null; + + this.setModules = function (_tk, _rv, _psy) { + tak = _tk; + rv = _rv; + psy = _psy; + }; + + function POW20(x) { + return pow20[x + QuantizePVT.Q_MAX2]; + } + + this.IPOW20 = function (x) { + return ipow20[x]; + } + + /** + * smallest such that 1.0+DBL_EPSILON != 1.0 + */ + var DBL_EPSILON = 2.2204460492503131e-016; + + /** + * ix always <= 8191+15. see count_bits() + */ + var IXMAX_VAL = QuantizePVT.IXMAX_VAL; + + var PRECALC_SIZE = (IXMAX_VAL + 2); + + var Q_MAX = QuantizePVT.Q_MAX; + + + /** + * + * minimum possible number of + * -cod_info.global_gain + ((scalefac[] + (cod_info.preflag ? pretab[sfb] : 0)) + * << (cod_info.scalefac_scale + 1)) + cod_info.subblock_gain[cod_info.window[sfb]] * 8; + * + * for long block, 0+((15+3)<<2) = 18*4 = 72 + * for short block, 0+(15<<2)+7*8 = 15*4+56 = 116 + * + */ + var Q_MAX2 = QuantizePVT.Q_MAX2; + + var LARGE_BITS = QuantizePVT.LARGE_BITS; + + + /** + * Assuming dynamic range=96dB, this value should be 92 + */ + var NSATHSCALE = 100; + + /** + * The following table is used to implement the scalefactor partitioning for + * MPEG2 as described in section 2.4.3.2 of the IS. The indexing corresponds + * to the way the tables are presented in the IS: + * + * [table_number][row_in_table][column of nr_of_sfb] + */ + this.nr_of_sfb_block = [ + [[6, 5, 5, 5], [9, 9, 9, 9], [6, 9, 9, 9]], + [[6, 5, 7, 3], [9, 9, 12, 6], [6, 9, 12, 6]], + [[11, 10, 0, 0], [18, 18, 0, 0], [15, 18, 0, 0]], + [[7, 7, 7, 0], [12, 12, 12, 0], [6, 15, 12, 0]], + [[6, 6, 6, 3], [12, 9, 9, 6], [6, 12, 9, 6]], + [[8, 8, 5, 0], [15, 12, 9, 0], [6, 18, 9, 0]]]; + + /** + * Table B.6: layer3 preemphasis + */ + var pretab = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 2, 2, 3, 3, 3, 2, 0]; + this.pretab = pretab; + + /** + * Here are MPEG1 Table B.8 and MPEG2 Table B.1 -- Layer III scalefactor + * bands.
+ * Index into this using a method such as:
+ * idx = fr_ps.header.sampling_frequency + (fr_ps.header.version * 3) + */ + this.sfBandIndex = [ + // Table B.2.b: 22.05 kHz + new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, + 522, 576], + [0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132, 174, 192] + , [0, 0, 0, 0, 0, 0, 0] // sfb21 pseudo sub bands + , [0, 0, 0, 0, 0, 0, 0] // sfb12 pseudo sub bands + ), + /* Table B.2.c: 24 kHz */ /* docs: 332. mpg123(broken): 330 */ + new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 114, 136, 162, 194, 232, 278, 332, 394, 464, + 540, 576], + [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136, 180, 192] + , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */ + , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */ + ), + /* Table B.2.a: 16 kHz */ + new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, + 522, 576], + [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192] + , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */ + , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */ + ), + /* Table B.8.b: 44.1 kHz */ + new ScaleFac([0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62, 74, 90, 110, 134, 162, 196, 238, 288, 342, 418, + 576], + [0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136, 192] + , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */ + , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */ + ), + /* Table B.8.c: 48 kHz */ + new ScaleFac([0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60, 72, 88, 106, 128, 156, 190, 230, 276, 330, 384, + 576], + [0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126, 192] + , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */ + , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */ + ), + /* Table B.8.a: 32 kHz */ + new ScaleFac([0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66, 82, 102, 126, 156, 194, 240, 296, 364, 448, 550, + 576], + [0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138, 180, 192] + , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */ + , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */ + ), + /* MPEG-2.5 11.025 kHz */ + new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, + 522, 576], + [0 / 3, 12 / 3, 24 / 3, 36 / 3, 54 / 3, 78 / 3, 108 / 3, 144 / 3, 186 / 3, 240 / 3, 312 / 3, + 402 / 3, 522 / 3, 576 / 3] + , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */ + , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */ + ), + /* MPEG-2.5 12 kHz */ + new ScaleFac([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, + 522, 576], + [0 / 3, 12 / 3, 24 / 3, 36 / 3, 54 / 3, 78 / 3, 108 / 3, 144 / 3, 186 / 3, 240 / 3, 312 / 3, + 402 / 3, 522 / 3, 576 / 3] + , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */ + , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */ + ), + /* MPEG-2.5 8 kHz */ + new ScaleFac([0, 12, 24, 36, 48, 60, 72, 88, 108, 132, 160, 192, 232, 280, 336, 400, 476, 566, 568, 570, + 572, 574, 576], + [0 / 3, 24 / 3, 48 / 3, 72 / 3, 108 / 3, 156 / 3, 216 / 3, 288 / 3, 372 / 3, 480 / 3, 486 / 3, + 492 / 3, 498 / 3, 576 / 3] + , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */ + , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */ + ) + ]; + + var pow20 = new_float(Q_MAX + Q_MAX2 + 1); + var ipow20 = new_float(Q_MAX); + var pow43 = new_float(PRECALC_SIZE); + + var adj43 = new_float(PRECALC_SIZE); + this.adj43 = adj43; + + /** + *
+     * compute the ATH for each scalefactor band cd range: 0..96db
+     *
+     * Input: 3.3kHz signal 32767 amplitude (3.3kHz is where ATH is smallest =
+     * -5db) longblocks: sfb=12 en0/bw=-11db max_en0 = 1.3db shortblocks: sfb=5
+     * -9db 0db
+     *
+     * Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) longblocks: amp=1
+     * sfb=12 en0/bw=-103 db max_en0 = -92db amp=32767 sfb=12 -12 db -1.4db
+     *
+     * Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) shortblocks: amp=1
+     * sfb=5 en0/bw= -99 -86 amp=32767 sfb=5 -9 db 4db
+     *
+     *
+     * MAX energy of largest wave at 3.3kHz = 1db AVE energy of largest wave at
+     * 3.3kHz = -11db Let's take AVE: -11db = maximum signal in sfb=12. Dynamic
+     * range of CD: 96db. Therefor energy of smallest audible wave in sfb=12 =
+     * -11 - 96 = -107db = ATH at 3.3kHz.
+     *
+     * ATH formula for this wave: -5db. To adjust to LAME scaling, we need ATH =
+     * ATH_formula - 103 (db) ATH = ATH * 2.5e-10 (ener)
+     * 
+ */ + function ATHmdct(gfp, f) { + var ath = psy.ATHformula(f, gfp); + + ath -= NSATHSCALE; + + /* modify the MDCT scaling for the ATH and convert to energy */ + ath = Math.pow(10.0, ath / 10.0 + gfp.ATHlower); + return ath; + } + + function compute_ath(gfp) { + var ATH_l = gfp.internal_flags.ATH.l; + var ATH_psfb21 = gfp.internal_flags.ATH.psfb21; + var ATH_s = gfp.internal_flags.ATH.s; + var ATH_psfb12 = gfp.internal_flags.ATH.psfb12; + var gfc = gfp.internal_flags; + var samp_freq = gfp.out_samplerate; + + for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) { + var start = gfc.scalefac_band.l[sfb]; + var end = gfc.scalefac_band.l[sfb + 1]; + ATH_l[sfb] = Float.MAX_VALUE; + for (var i = start; i < end; i++) { + var freq = i * samp_freq / (2 * 576); + var ATH_f = ATHmdct(gfp, freq); + /* freq in kHz */ + ATH_l[sfb] = Math.min(ATH_l[sfb], ATH_f); + } + } + + for (var sfb = 0; sfb < Encoder.PSFB21; sfb++) { + var start = gfc.scalefac_band.psfb21[sfb]; + var end = gfc.scalefac_band.psfb21[sfb + 1]; + ATH_psfb21[sfb] = Float.MAX_VALUE; + for (var i = start; i < end; i++) { + var freq = i * samp_freq / (2 * 576); + var ATH_f = ATHmdct(gfp, freq); + /* freq in kHz */ + ATH_psfb21[sfb] = Math.min(ATH_psfb21[sfb], ATH_f); + } + } + + for (var sfb = 0; sfb < Encoder.SBMAX_s; sfb++) { + var start = gfc.scalefac_band.s[sfb]; + var end = gfc.scalefac_band.s[sfb + 1]; + ATH_s[sfb] = Float.MAX_VALUE; + for (var i = start; i < end; i++) { + var freq = i * samp_freq / (2 * 192); + var ATH_f = ATHmdct(gfp, freq); + /* freq in kHz */ + ATH_s[sfb] = Math.min(ATH_s[sfb], ATH_f); + } + ATH_s[sfb] *= (gfc.scalefac_band.s[sfb + 1] - gfc.scalefac_band.s[sfb]); + } + + for (var sfb = 0; sfb < Encoder.PSFB12; sfb++) { + var start = gfc.scalefac_band.psfb12[sfb]; + var end = gfc.scalefac_band.psfb12[sfb + 1]; + ATH_psfb12[sfb] = Float.MAX_VALUE; + for (var i = start; i < end; i++) { + var freq = i * samp_freq / (2 * 192); + var ATH_f = ATHmdct(gfp, freq); + /* freq in kHz */ + ATH_psfb12[sfb] = Math.min(ATH_psfb12[sfb], ATH_f); + } + /* not sure about the following */ + ATH_psfb12[sfb] *= (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12]); + } + + /* + * no-ATH mode: reduce ATH to -200 dB + */ + if (gfp.noATH) { + abort();//fix cc 精简 + } + + /* + * work in progress, don't rely on it too much + */ + gfc.ATH.floor = 10. * Math_log10(ATHmdct(gfp, -1.)); + } + + /** + * initialization for iteration_loop + */ + this.iteration_init = function (gfp) { + var gfc = gfp.internal_flags; + var l3_side = gfc.l3_side; + var i; + + if (gfc.iteration_init_init == 0) { + gfc.iteration_init_init = 1; + + l3_side.main_data_begin = 0; + compute_ath(gfp); + + pow43[0] = 0.0; + for (i = 1; i < PRECALC_SIZE; i++) + pow43[i] = Math.pow(i, 4.0 / 3.0); + + for (i = 0; i < PRECALC_SIZE - 1; i++) + adj43[i] = ((i + 1) - Math.pow( + 0.5 * (pow43[i] + pow43[i + 1]), 0.75)); + adj43[i] = 0.5; + + for (i = 0; i < Q_MAX; i++) + ipow20[i] = Math.pow(2.0, (i - 210) * -0.1875); + for (i = 0; i <= Q_MAX + Q_MAX2; i++) + pow20[i] = Math.pow(2.0, (i - 210 - Q_MAX2) * 0.25); + + tak.huffman_init(gfc); + + { + var bass, alto, treble, sfb21; + + i = (gfp.exp_nspsytune >> 2) & 63; + if (i >= 32) + i -= 64; + bass = Math.pow(10, i / 4.0 / 10.0); + + i = (gfp.exp_nspsytune >> 8) & 63; + if (i >= 32) + i -= 64; + alto = Math.pow(10, i / 4.0 / 10.0); + + i = (gfp.exp_nspsytune >> 14) & 63; + if (i >= 32) + i -= 64; + treble = Math.pow(10, i / 4.0 / 10.0); + + /* + * to be compatible with Naoki's original code, the next 6 bits + * define only the amount of changing treble for sfb21 + */ + i = (gfp.exp_nspsytune >> 20) & 63; + if (i >= 32) + i -= 64; + sfb21 = treble * Math.pow(10, i / 4.0 / 10.0); + for (i = 0; i < Encoder.SBMAX_l; i++) { + var f; + if (i <= 6) + f = bass; + else if (i <= 13) + f = alto; + else if (i <= 20) + f = treble; + else + f = sfb21; + + gfc.nsPsy.longfact[i] = f; + } + for (i = 0; i < Encoder.SBMAX_s; i++) { + var f; + if (i <= 5) + f = bass; + else if (i <= 10) + f = alto; + else if (i <= 11) + f = treble; + else + f = sfb21; + + gfc.nsPsy.shortfact[i] = f; + } + } + } + } + + /** + * allocate bits among 2 channels based on PE
+ * mt 6/99
+ * bugfixes rh 8/01: often allocated more than the allowed 4095 bits + */ + this.on_pe = function (gfp, pe, + targ_bits, mean_bits, gr, cbr) { + var gfc = gfp.internal_flags; + var tbits = 0, bits; + var add_bits = new_int(2); + var ch; + + /* allocate targ_bits for granule */ + var mb = new MeanBits(tbits); + var extra_bits = rv.ResvMaxBits(gfp, mean_bits, mb, cbr); + tbits = mb.bits; + /* maximum allowed bits for this granule */ + var max_bits = tbits + extra_bits; + if (max_bits > LameInternalFlags.MAX_BITS_PER_GRANULE) { + // hard limit per granule + max_bits = LameInternalFlags.MAX_BITS_PER_GRANULE; + } + for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) { + /****************************************************************** + * allocate bits for each channel + ******************************************************************/ + targ_bits[ch] = Math.min(LameInternalFlags.MAX_BITS_PER_CHANNEL, + tbits / gfc.channels_out); + + add_bits[ch] = 0 | (targ_bits[ch] * pe[gr][ch] / 700.0 - targ_bits[ch]); + + /* at most increase bits by 1.5*average */ + if (add_bits[ch] > mean_bits * 3 / 4) + add_bits[ch] = mean_bits * 3 / 4; + + if (add_bits[ch] < 0) + add_bits[ch] = 0; + + if (add_bits[ch] + targ_bits[ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL) + add_bits[ch] = Math.max(0, + LameInternalFlags.MAX_BITS_PER_CHANNEL - targ_bits[ch]); + + bits += add_bits[ch]; + } + if (bits > extra_bits) { + for (ch = 0; ch < gfc.channels_out; ++ch) { + add_bits[ch] = extra_bits * add_bits[ch] / bits; + } + } + + for (ch = 0; ch < gfc.channels_out; ++ch) { + targ_bits[ch] += add_bits[ch]; + extra_bits -= add_bits[ch]; + } + + for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) { + bits += targ_bits[ch]; + } + if (bits > LameInternalFlags.MAX_BITS_PER_GRANULE) { + abort();//fix cc 精简 + } + + return max_bits; + } + + //fix cc 精简 + + /** + * Robert Hegemann 2001-04-27: + * this adjusts the ATH, keeping the original noise floor + * affects the higher frequencies more than the lower ones + */ + this.athAdjust = function (a, x, athFloor) { + /* + * work in progress + */ + var o = 90.30873362; + var p = 94.82444863; + var u = Util.FAST_LOG10_X(x, 10.0); + var v = a * a; + var w = 0.0; + u -= athFloor; + /* undo scaling */ + if (v > 1E-20) + w = 1. + Util.FAST_LOG10_X(v, 10.0 / o); + if (w < 0) + w = 0.; + u *= w; + u += athFloor + o - p; + /* redo scaling */ + + return Math.pow(10., 0.1 * u); + }; + + /** + * Calculate the allowed distortion for each scalefactor band, as determined + * by the psychoacoustic model. xmin(sb) = ratio(sb) * en(sb) / bw(sb) + * + * returns number of sfb's with energy > ATH + */ + this.calc_xmin = function (gfp, ratio, cod_info, pxmin) { + var pxminPos = 0; + var gfc = gfp.internal_flags; + var gsfb, j = 0, ath_over = 0; + var ATH = gfc.ATH; + var xr = cod_info.xr; + var enable_athaa_fix = (gfp.VBR == VbrMode.vbr_mtrh) ? 1 : 0; + var masking_lower = gfc.masking_lower; + + if (gfp.VBR == VbrMode.vbr_mtrh || gfp.VBR == VbrMode.vbr_mt) { + /* was already done in PSY-Model */ + masking_lower = 1.0; + } + + for (gsfb = 0; gsfb < cod_info.psy_lmax; gsfb++) { + var en0, xmin; + var rh1, rh2; + var width, l; + + if (gfp.VBR == VbrMode.vbr_rh || gfp.VBR == VbrMode.vbr_mtrh) + xmin = athAdjust(ATH.adjust, ATH.l[gsfb], ATH.floor); + else + xmin = ATH.adjust * ATH.l[gsfb]; + + width = cod_info.width[gsfb]; + rh1 = xmin / width; + rh2 = DBL_EPSILON; + l = width >> 1; + en0 = 0.0; + do { + var xa, xb; + xa = xr[j] * xr[j]; + en0 += xa; + rh2 += (xa < rh1) ? xa : rh1; + j++; + xb = xr[j] * xr[j]; + en0 += xb; + rh2 += (xb < rh1) ? xb : rh1; + j++; + } while (--l > 0); + if (en0 > xmin) + ath_over++; + + if (gsfb == Encoder.SBPSY_l) { + abort();//fix cc 精简 + } + if (enable_athaa_fix != 0) { + xmin = rh2; + } + if (!gfp.ATHonly) { + var e = ratio.en.l[gsfb]; + if (e > 0.0) { + var x; + x = en0 * ratio.thm.l[gsfb] * masking_lower / e; + if (enable_athaa_fix != 0) + x *= gfc.nsPsy.longfact[gsfb]; + if (xmin < x) + xmin = x; + } + } + if (enable_athaa_fix != 0) + pxmin[pxminPos++] = xmin; + else + pxmin[pxminPos++] = xmin * gfc.nsPsy.longfact[gsfb]; + } + /* end of long block loop */ + + /* use this function to determine the highest non-zero coeff */ + var max_nonzero = 575; + if (cod_info.block_type != Encoder.SHORT_TYPE) { + // NORM, START or STOP type, but not SHORT + var k = 576; + while (k-- != 0 && BitStream.EQ(xr[k], 0)) { + max_nonzero = k; + } + } + cod_info.max_nonzero_coeff = max_nonzero; + + for (var sfb = cod_info.sfb_smin; gsfb < cod_info.psymax; sfb++, gsfb += 3) { + var width, b; + var tmpATH; + if (gfp.VBR == VbrMode.vbr_rh || gfp.VBR == VbrMode.vbr_mtrh) + tmpATH = athAdjust(ATH.adjust, ATH.s[sfb], ATH.floor); + else + tmpATH = ATH.adjust * ATH.s[sfb]; + + width = cod_info.width[gsfb]; + for (b = 0; b < 3; b++) { + var en0 = 0.0, xmin; + var rh1, rh2; + var l = width >> 1; + + rh1 = tmpATH / width; + rh2 = DBL_EPSILON; + do { + var xa, xb; + xa = xr[j] * xr[j]; + en0 += xa; + rh2 += (xa < rh1) ? xa : rh1; + j++; + xb = xr[j] * xr[j]; + en0 += xb; + rh2 += (xb < rh1) ? xb : rh1; + j++; + } while (--l > 0); + if (en0 > tmpATH) + ath_over++; + if (sfb == Encoder.SBPSY_s) { + abort();//fix cc 精简 + } + if (enable_athaa_fix != 0) + xmin = rh2; + else + xmin = tmpATH; + + if (!gfp.ATHonly && !gfp.ATHshort) { + var e = ratio.en.s[sfb][b]; + if (e > 0.0) { + var x; + x = en0 * ratio.thm.s[sfb][b] * masking_lower / e; + if (enable_athaa_fix != 0) + x *= gfc.nsPsy.shortfact[sfb]; + if (xmin < x) + xmin = x; + } + } + if (enable_athaa_fix != 0) + pxmin[pxminPos++] = xmin; + else + pxmin[pxminPos++] = xmin * gfc.nsPsy.shortfact[sfb]; + } + /* b */ + if (gfp.useTemporal) { + if (pxmin[pxminPos - 3] > pxmin[pxminPos - 3 + 1]) + pxmin[pxminPos - 3 + 1] += (pxmin[pxminPos - 3] - pxmin[pxminPos - 3 + 1]) + * gfc.decay; + if (pxmin[pxminPos - 3 + 1] > pxmin[pxminPos - 3 + 2]) + pxmin[pxminPos - 3 + 2] += (pxmin[pxminPos - 3 + 1] - pxmin[pxminPos - 3 + 2]) + * gfc.decay; + } + } + /* end of short block sfb loop */ + + return ath_over; + }; + + function StartLine(j) { + this.s = j; + } + + this.calc_noise_core = function (cod_info, startline, l, step) { + var noise = 0; + var j = startline.s; + var ix = cod_info.l3_enc; + + if (j > cod_info.count1) { + while ((l--) != 0) { + var temp; + temp = cod_info.xr[j]; + j++; + noise += temp * temp; + temp = cod_info.xr[j]; + j++; + noise += temp * temp; + } + } else if (j > cod_info.big_values) { + var ix01 = new_float(2); + ix01[0] = 0; + ix01[1] = step; + while ((l--) != 0) { + var temp; + temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]]; + j++; + noise += temp * temp; + temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]]; + j++; + noise += temp * temp; + } + } else { + while ((l--) != 0) { + var temp; + temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step; + j++; + noise += temp * temp; + temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step; + j++; + noise += temp * temp; + } + } + + startline.s = j; + return noise; + } + + /** + *
+     * -oo dB  =>  -1.00
+     * - 6 dB  =>  -0.97
+     * - 3 dB  =>  -0.80
+     * - 2 dB  =>  -0.64
+     * - 1 dB  =>  -0.38
+     *   0 dB  =>   0.00
+     * + 1 dB  =>  +0.49
+     * + 2 dB  =>  +1.06
+     * + 3 dB  =>  +1.68
+     * + 6 dB  =>  +3.69
+     * +10 dB  =>  +6.45
+     * 
+ */ + this.calc_noise = function (cod_info, l3_xmin, distort, res, prev_noise) { + var distortPos = 0; + var l3_xminPos = 0; + var sfb, l, over = 0; + var over_noise_db = 0; + /* 0 dB relative to masking */ + var tot_noise_db = 0; + /* -200 dB relative to masking */ + var max_noise = -20.0; + var j = 0; + var scalefac = cod_info.scalefac; + var scalefacPos = 0; + + res.over_SSD = 0; + + for (sfb = 0; sfb < cod_info.psymax; sfb++) { + var s = cod_info.global_gain + - (((scalefac[scalefacPos++]) + (cod_info.preflag != 0 ? pretab[sfb] + : 0)) << (cod_info.scalefac_scale + 1)) + - cod_info.subblock_gain[cod_info.window[sfb]] * 8; + var noise = 0.0; + + if (prev_noise != null && (prev_noise.step[sfb] == s)) { + + /* use previously computed values */ + noise = prev_noise.noise[sfb]; + j += cod_info.width[sfb]; + distort[distortPos++] = noise / l3_xmin[l3_xminPos++]; + + noise = prev_noise.noise_log[sfb]; + + } else { + var step = POW20(s); + l = cod_info.width[sfb] >> 1; + + if ((j + cod_info.width[sfb]) > cod_info.max_nonzero_coeff) { + var usefullsize; + usefullsize = cod_info.max_nonzero_coeff - j + 1; + + if (usefullsize > 0) + l = usefullsize >> 1; + else + l = 0; + } + + var sl = new StartLine(j); + noise = this.calc_noise_core(cod_info, sl, l, step); + j = sl.s; + + if (prev_noise != null) { + /* save noise values */ + prev_noise.step[sfb] = s; + prev_noise.noise[sfb] = noise; + } + + noise = distort[distortPos++] = noise / l3_xmin[l3_xminPos++]; + + /* multiplying here is adding in dB, but can overflow */ + noise = Util.FAST_LOG10(Math.max(noise, 1E-20)); + + if (prev_noise != null) { + /* save noise values */ + prev_noise.noise_log[sfb] = noise; + } + } + + if (prev_noise != null) { + /* save noise values */ + prev_noise.global_gain = cod_info.global_gain; + } + + tot_noise_db += noise; + + if (noise > 0.0) { + var tmp; + + tmp = Math.max(0 | (noise * 10 + .5), 1); + res.over_SSD += tmp * tmp; + + over++; + /* multiplying here is adding in dB -but can overflow */ + /* over_noise *= noise; */ + over_noise_db += noise; + } + max_noise = Math.max(max_noise, noise); + + } + + res.over_count = over; + res.tot_noise = tot_noise_db; + res.over_noise = over_noise_db; + res.max_noise = max_noise; + + return over; + } + + //fix cc 精简 + +} + + +function CalcNoiseData() { + this.global_gain = 0; + this.sfb_count1 = 0; + this.step = new_int(39); + this.noise = new_float(39); + this.noise_log = new_float(39); +} + +//package mp3; + + +function GrInfo() { + //float xr[] = new float[576]; + this.xr = new_float(576); + //int l3_enc[] = new int[576]; + this.l3_enc = new_int(576); + //int scalefac[] = new int[L3Side.SFBMAX]; + this.scalefac = new_int(L3Side.SFBMAX); + this.xrpow_max = 0.; + + this.part2_3_length = 0; + this.big_values = 0; + this.count1 = 0; + this.global_gain = 0; + this.scalefac_compress = 0; + this.block_type = 0; + this.mixed_block_flag = 0; + this.table_select = new_int(3); + this.subblock_gain = new_int(3 + 1); + this.region0_count = 0; + this.region1_count = 0; + this.preflag = 0; + this.scalefac_scale = 0; + this.count1table_select = 0; + + this.part2_length = 0; + this.sfb_lmax = 0; + this.sfb_smin = 0; + this.psy_lmax = 0; + this.sfbmax = 0; + this.psymax = 0; + this.sfbdivide = 0; + this.width = new_int(L3Side.SFBMAX); + this.window = new_int(L3Side.SFBMAX); + this.count1bits = 0; + /** + * added for LSF + */ + this.sfb_partition_table = null; + this.slen = new_int(4); + + this.max_nonzero_coeff = 0; + + var self = this; + function clone_int(array) { + return new Int32Array(array); + } + function clone_float(array) { + return new Float32Array(array); + } + this.assign = function (other) { + self.xr = clone_float(other.xr); //.slice(0); //clone(); + self.l3_enc = clone_int(other.l3_enc); //.slice(0); //clone(); + self.scalefac = clone_int(other.scalefac);//.slice(0); //clone(); + self.xrpow_max = other.xrpow_max; + + self.part2_3_length = other.part2_3_length; + self.big_values = other.big_values; + self.count1 = other.count1; + self.global_gain = other.global_gain; + self.scalefac_compress = other.scalefac_compress; + self.block_type = other.block_type; + self.mixed_block_flag = other.mixed_block_flag; + self.table_select = clone_int(other.table_select);//.slice(0); //clone(); + self.subblock_gain = clone_int(other.subblock_gain); //.slice(0); //.clone(); + self.region0_count = other.region0_count; + self.region1_count = other.region1_count; + self.preflag = other.preflag; + self.scalefac_scale = other.scalefac_scale; + self.count1table_select = other.count1table_select; + + self.part2_length = other.part2_length; + self.sfb_lmax = other.sfb_lmax; + self.sfb_smin = other.sfb_smin; + self.psy_lmax = other.psy_lmax; + self.sfbmax = other.sfbmax; + self.psymax = other.psymax; + self.sfbdivide = other.sfbdivide; + self.width = clone_int(other.width); //.slice(0); //.clone(); + self.window = clone_int(other.window); //.slice(0); //.clone(); + self.count1bits = other.count1bits; + + self.sfb_partition_table = other.sfb_partition_table.slice(0); //.clone(); + self.slen = clone_int(other.slen); //.slice(0); //.clone(); + self.max_nonzero_coeff = other.max_nonzero_coeff; + } +} + + +var L3Side = {}; + + + /** + * max scalefactor band, max(SBMAX_l, SBMAX_s*3, (SBMAX_s-3)*3+8) + */ +L3Side.SFBMAX = (Encoder.SBMAX_s * 3); + +/* + * MP3 quantization + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 1999-2003 Takehiro Tominaga + * Copyright (c) 2000-2007 Robert Hegemann + * Copyright (c) 2001-2005 Gabriel Bouvigne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: Quantize.java,v 1.24 2011/05/24 20:48:06 kenchis Exp $ */ + +//package mp3; + +//import java.util.Arrays; + + +function Quantize() { + var bs; + this.rv = null; + var rv; + this.qupvt = null; + var qupvt; + + var vbr = new VBRQuantize(); + var tk; + + this.setModules = function (_bs, _rv, _qupvt, _tk) { + bs = _bs; + rv = _rv; + this.rv = _rv; + qupvt = _qupvt; + this.qupvt = _qupvt; + tk = _tk; + vbr.setModules(qupvt, tk); + } + + //fix cc 精简 + + /** + * mt 6/99 + * + * initializes cod_info, scalefac and xrpow + * + * returns 0 if all energies in xr are zero, else 1 + */ + function init_xrpow_core(cod_info, xrpow, upper, sum) { + sum = 0; + for (var i = 0; i <= upper; ++i) { + var tmp = Math.abs(cod_info.xr[i]); + sum += tmp; + xrpow[i] = Math.sqrt(tmp * Math.sqrt(tmp)); + + if (xrpow[i] > cod_info.xrpow_max) + cod_info.xrpow_max = xrpow[i]; + } + return sum; + } + + this.init_xrpow = function (gfc, cod_info, xrpow) { + var sum = 0; + var upper = 0 | cod_info.max_nonzero_coeff; + + cod_info.xrpow_max = 0; + + /* + * check if there is some energy we have to quantize and calculate xrpow + * matching our fresh scalefactors + */ + + Arrays.fill(xrpow, upper, 576, 0); + + sum = init_xrpow_core(cod_info, xrpow, upper, sum); + + /* + * return 1 if we have something to quantize, else 0 + */ + if (sum > 1E-20) { + var j = 0; + if ((gfc.substep_shaping & 2) != 0) + j = 1; + + for (var i = 0; i < cod_info.psymax; i++) + gfc.pseudohalf[i] = j; + + return true; + } + + Arrays.fill(cod_info.l3_enc, 0, 576, 0); + return false; + } + + /** + * Gabriel Bouvigne feb/apr 2003
+ * Analog silence detection in partitionned sfb21 or sfb12 for short blocks + * + * From top to bottom of sfb, changes to 0 coeffs which are below ath. It + * stops on the first coeff higher than ath. + */ + function psfb21_analogsilence(gfc, cod_info) { + var ath = gfc.ATH; + var xr = cod_info.xr; + + if (cod_info.block_type != Encoder.SHORT_TYPE) { + /* NORM, START or STOP type, but not SHORT blocks */ + var stop = false; + for (var gsfb = Encoder.PSFB21 - 1; gsfb >= 0 && !stop; gsfb--) { + var start = gfc.scalefac_band.psfb21[gsfb]; + var end = gfc.scalefac_band.psfb21[gsfb + 1]; + var ath21 = qupvt.athAdjust(ath.adjust, ath.psfb21[gsfb], + ath.floor); + + if (gfc.nsPsy.longfact[21] > 1e-12) + ath21 *= gfc.nsPsy.longfact[21]; + + for (var j = end - 1; j >= start; j--) { + if (Math.abs(xr[j]) < ath21) + xr[j] = 0; + else { + stop = true; + break; + } + } + } + } else { + /* note: short blocks coeffs are reordered */ + for (var block = 0; block < 3; block++) { + var stop = false; + for (var gsfb = Encoder.PSFB12 - 1; gsfb >= 0 && !stop; gsfb--) { + var start = gfc.scalefac_band.s[12] + * 3 + + (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12]) + * block + + (gfc.scalefac_band.psfb12[gsfb] - gfc.scalefac_band.psfb12[0]); + var end = start + + (gfc.scalefac_band.psfb12[gsfb + 1] - gfc.scalefac_band.psfb12[gsfb]); + var ath12 = qupvt.athAdjust(ath.adjust, ath.psfb12[gsfb], + ath.floor); + + if (gfc.nsPsy.shortfact[12] > 1e-12) + ath12 *= gfc.nsPsy.shortfact[12]; + + for (var j = end - 1; j >= start; j--) { + if (Math.abs(xr[j]) < ath12) + xr[j] = 0; + else { + stop = true; + break; + } + } + } + } + } + + } + + this.init_outer_loop = function (gfc, cod_info) { + /* + * initialize fresh cod_info + */ + cod_info.part2_3_length = 0; + cod_info.big_values = 0; + cod_info.count1 = 0; + cod_info.global_gain = 210; + cod_info.scalefac_compress = 0; + /* mixed_block_flag, block_type was set in psymodel.c */ + cod_info.table_select[0] = 0; + cod_info.table_select[1] = 0; + cod_info.table_select[2] = 0; + cod_info.subblock_gain[0] = 0; + cod_info.subblock_gain[1] = 0; + cod_info.subblock_gain[2] = 0; + cod_info.subblock_gain[3] = 0; + /* this one is always 0 */ + cod_info.region0_count = 0; + cod_info.region1_count = 0; + cod_info.preflag = 0; + cod_info.scalefac_scale = 0; + cod_info.count1table_select = 0; + cod_info.part2_length = 0; + cod_info.sfb_lmax = Encoder.SBPSY_l; + cod_info.sfb_smin = Encoder.SBPSY_s; + cod_info.psy_lmax = gfc.sfb21_extra ? Encoder.SBMAX_l : Encoder.SBPSY_l; + cod_info.psymax = cod_info.psy_lmax; + cod_info.sfbmax = cod_info.sfb_lmax; + cod_info.sfbdivide = 11; + for (var sfb = 0; sfb < Encoder.SBMAX_l; sfb++) { + cod_info.width[sfb] = gfc.scalefac_band.l[sfb + 1] + - gfc.scalefac_band.l[sfb]; + /* which is always 0. */ + cod_info.window[sfb] = 3; + } + if (cod_info.block_type == Encoder.SHORT_TYPE) { + var ixwork = new_float(576); + + cod_info.sfb_smin = 0; + cod_info.sfb_lmax = 0; + if (cod_info.mixed_block_flag != 0) { + abort();//fix cc 精简 + } + cod_info.psymax = cod_info.sfb_lmax + + 3 + * ((gfc.sfb21_extra ? Encoder.SBMAX_s : Encoder.SBPSY_s) - cod_info.sfb_smin); + cod_info.sfbmax = cod_info.sfb_lmax + 3 + * (Encoder.SBPSY_s - cod_info.sfb_smin); + cod_info.sfbdivide = cod_info.sfbmax - 18; + cod_info.psy_lmax = cod_info.sfb_lmax; + /* re-order the short blocks, for more efficient encoding below */ + /* By Takehiro TOMINAGA */ + /* + * Within each scalefactor band, data is given for successive time + * windows, beginning with window 0 and ending with window 2. Within + * each window, the quantized values are then arranged in order of + * increasing frequency... + */ + var ix = gfc.scalefac_band.l[cod_info.sfb_lmax]; + System.arraycopy(cod_info.xr, 0, ixwork, 0, 576); + for (var sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) { + var start = gfc.scalefac_band.s[sfb]; + var end = gfc.scalefac_band.s[sfb + 1]; + for (var window = 0; window < 3; window++) { + for (var l = start; l < end; l++) { + cod_info.xr[ix++] = ixwork[3 * l + window]; + } + } + } + + var j = cod_info.sfb_lmax; + for (var sfb = cod_info.sfb_smin; sfb < Encoder.SBMAX_s; sfb++) { + cod_info.width[j] = cod_info.width[j + 1] = cod_info.width[j + 2] = gfc.scalefac_band.s[sfb + 1] + - gfc.scalefac_band.s[sfb]; + cod_info.window[j] = 0; + cod_info.window[j + 1] = 1; + cod_info.window[j + 2] = 2; + j += 3; + } + } + + cod_info.count1bits = 0; + cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[0][0]; + cod_info.slen[0] = 0; + cod_info.slen[1] = 0; + cod_info.slen[2] = 0; + cod_info.slen[3] = 0; + + cod_info.max_nonzero_coeff = 575; + + /* + * fresh scalefactors are all zero + */ + Arrays.fill(cod_info.scalefac, 0); + + psfb21_analogsilence(gfc, cod_info); + }; + + function BinSearchDirection(ordinal) { + this.ordinal = ordinal; + } + + BinSearchDirection.BINSEARCH_NONE = new BinSearchDirection(0); + BinSearchDirection.BINSEARCH_UP = new BinSearchDirection(1); + BinSearchDirection.BINSEARCH_DOWN = new BinSearchDirection(2); + + /** + * author/date?? + * + * binary step size search used by outer_loop to get a quantizer step size + * to start with + */ + function bin_search_StepSize(gfc, cod_info, desired_rate, ch, xrpow) { + var nBits; + var CurrentStep = gfc.CurrentStep[ch]; + var flagGoneOver = false; + var start = gfc.OldValue[ch]; + var Direction = BinSearchDirection.BINSEARCH_NONE; + cod_info.global_gain = start; + desired_rate -= cod_info.part2_length; + + for (; ;) { + var step; + nBits = tk.count_bits(gfc, xrpow, cod_info, null); + + if (CurrentStep == 1 || nBits == desired_rate) + break; + /* nothing to adjust anymore */ + + if (nBits > desired_rate) { + /* increase Quantize_StepSize */ + if (Direction == BinSearchDirection.BINSEARCH_DOWN) + flagGoneOver = true; + + if (flagGoneOver) + CurrentStep /= 2; + Direction = BinSearchDirection.BINSEARCH_UP; + step = CurrentStep; + } else { + /* decrease Quantize_StepSize */ + if (Direction == BinSearchDirection.BINSEARCH_UP) + flagGoneOver = true; + + if (flagGoneOver) + CurrentStep /= 2; + Direction = BinSearchDirection.BINSEARCH_DOWN; + step = -CurrentStep; + } + cod_info.global_gain += step; + if (cod_info.global_gain < 0) { + abort();//fix cc 精简 + } + if (cod_info.global_gain > 255) { + abort();//fix cc 精简 + } + } + + + while (nBits > desired_rate && cod_info.global_gain < 255) { + cod_info.global_gain++; + nBits = tk.count_bits(gfc, xrpow, cod_info, null); + } + gfc.CurrentStep[ch] = (start - cod_info.global_gain >= 4) ? 4 : 2; + gfc.OldValue[ch] = cod_info.global_gain; + cod_info.part2_3_length = nBits; + return nBits; + } + + //fix cc 精简 + + /** + * author/date?? + * + * Function: Returns zero if there is a scalefac which has not been + * amplified. Otherwise it returns one. + */ + function loop_break(cod_info) { + for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) + if (cod_info.scalefac[sfb] + + cod_info.subblock_gain[cod_info.window[sfb]] == 0) + return false; + + return true; + } + + //fix cc 精简 + + function quant_compare(quant_comp, best, calc, gi, distort) { + /** + * noise is given in decibels (dB) relative to masking thesholds.
+ * + * over_noise: ??? (the previous comment is fully wrong)
+ * tot_noise: ??? (the previous comment is fully wrong)
+ * max_noise: max quantization noise + */ + var better; + + switch (quant_comp) { + default: + case 9: + { + if (best.over_count > 0) { + /* there are distorted sfb */ + better = calc.over_SSD <= best.over_SSD; + if (calc.over_SSD == best.over_SSD) + better = calc.bits < best.bits; + } else { + /* no distorted sfb */ + better = ((calc.max_noise < 0) && ((calc.max_noise * 10 + calc.bits) <= (best.max_noise * 10 + best.bits))); + } + break; + } + + case 0: + better = calc.over_count < best.over_count + || (calc.over_count == best.over_count && calc.over_noise < best.over_noise) + || (calc.over_count == best.over_count + && BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise); + break; + + case 8: + abort();//fix cc 精简 + //$FALL-THROUGH$ + case 1: + better = calc.max_noise < best.max_noise; + break; + case 2: + better = calc.tot_noise < best.tot_noise; + break; + case 3: + better = (calc.tot_noise < best.tot_noise) + && (calc.max_noise < best.max_noise); + break; + case 4: + better = (calc.max_noise <= 0.0 && best.max_noise > 0.2) + || (calc.max_noise <= 0.0 && best.max_noise < 0.0 + && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise) + || (calc.max_noise <= 0.0 && best.max_noise > 0.0 + && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise + + best.over_noise) + || (calc.max_noise > 0.0 && best.max_noise > -0.05 + && best.max_noise > calc.max_noise - 0.1 && calc.tot_noise + + calc.over_noise < best.tot_noise + + best.over_noise) + || (calc.max_noise > 0.0 && best.max_noise > -0.1 + && best.max_noise > calc.max_noise - 0.15 && calc.tot_noise + + calc.over_noise + calc.over_noise < best.tot_noise + + best.over_noise + best.over_noise); + break; + case 5: + better = calc.over_noise < best.over_noise + || (BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise); + break; + case 6: + better = calc.over_noise < best.over_noise + || (BitStream.EQ(calc.over_noise, best.over_noise) && (calc.max_noise < best.max_noise || (BitStream + .EQ(calc.max_noise, best.max_noise) && calc.tot_noise <= best.tot_noise))); + break; + case 7: + better = calc.over_count < best.over_count + || calc.over_noise < best.over_noise; + break; + } + + if (best.over_count == 0) { + /* + * If no distorted bands, only use this quantization if it is + * better, and if it uses less bits. Unfortunately, part2_3_length + * is sometimes a poor estimator of the final size at low bitrates. + */ + better = better && calc.bits < best.bits; + } + + return better; + } + + /** + * author/date?? + * + *
+     *  Amplify the scalefactor bands that violate the masking threshold.
+     *  See ISO 11172-3 Section C.1.5.4.3.5
+     *
+     *  distort[] = noise/masking
+     *  distort[] > 1   ==> noise is not masked
+     *  distort[] < 1   ==> noise is masked
+     *  max_dist = maximum value of distort[]
+     *
+     *  Three algorithms:
+     *  noise_shaping_amp
+     *        0             Amplify all bands with distort[]>1.
+     *
+     *        1             Amplify all bands with distort[] >= max_dist^(.5);
+     *                     ( 50% in the db scale)
+     *
+     *        2             Amplify first band with distort[] >= max_dist;
+     *
+     *
+     *  For algorithms 0 and 1, if max_dist < 1, then amplify all bands
+     *  with distort[] >= .95*max_dist.  This is to make sure we always
+     *  amplify at least one band.
+     * 
+ */ + function amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine) { + var gfc = gfp.internal_flags; + var ifqstep34; + + if (cod_info.scalefac_scale == 0) { + ifqstep34 = 1.29683955465100964055; + /* 2**(.75*.5) */ + } else { + ifqstep34 = 1.68179283050742922612; + /* 2**(.75*1) */ + } + + /* compute maximum value of distort[] */ + var trigger = 0; + for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) { + if (trigger < distort[sfb]) + trigger = distort[sfb]; + } + + var noise_shaping_amp = gfc.noise_shaping_amp; + if (noise_shaping_amp == 3) { + abort();//fix cc 精简 + } + switch (noise_shaping_amp) { + case 2: + /* amplify exactly 1 band */ + break; + + case 1: + /* amplify bands within 50% of max (on db scale) */ + if (trigger > 1.0) + trigger = Math.pow(trigger, .5); + else + trigger *= .95; + break; + + case 0: + default: + /* ISO algorithm. amplify all bands with distort>1 */ + if (trigger > 1.0) + trigger = 1.0; + else + trigger *= .95; + break; + } + + var j = 0; + for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) { + var width = cod_info.width[sfb]; + var l; + j += width; + if (distort[sfb] < trigger) + continue; + + if ((gfc.substep_shaping & 2) != 0) { + abort();//fix cc 精简 + } + cod_info.scalefac[sfb]++; + for (l = -width; l < 0; l++) { + xrpow[j + l] *= ifqstep34; + if (xrpow[j + l] > cod_info.xrpow_max) + cod_info.xrpow_max = xrpow[j + l]; + } + + if (gfc.noise_shaping_amp == 2) + return; + } + } + + /** + * Takehiro Tominaga 2000-xx-xx + * + * turns on scalefac scale and adjusts scalefactors + */ + function inc_scalefac_scale(cod_info, xrpow) { + var ifqstep34 = 1.29683955465100964055; + + var j = 0; + for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) { + var width = cod_info.width[sfb]; + var s = cod_info.scalefac[sfb]; + if (cod_info.preflag != 0) + s += qupvt.pretab[sfb]; + j += width; + if ((s & 1) != 0) { + s++; + for (var l = -width; l < 0; l++) { + xrpow[j + l] *= ifqstep34; + if (xrpow[j + l] > cod_info.xrpow_max) + cod_info.xrpow_max = xrpow[j + l]; + } + } + cod_info.scalefac[sfb] = s >> 1; + } + cod_info.preflag = 0; + cod_info.scalefac_scale = 1; + } + + /** + * Takehiro Tominaga 2000-xx-xx + * + * increases the subblock gain and adjusts scalefactors + */ + function inc_subblock_gain(gfc, cod_info, xrpow) { + var sfb; + var scalefac = cod_info.scalefac; + + /* subbloc_gain can't do anything in the long block region */ + for (sfb = 0; sfb < cod_info.sfb_lmax; sfb++) { + if (scalefac[sfb] >= 16) + return true; + } + + for (var window = 0; window < 3; window++) { + var s1 = 0; + var s2 = 0; + + for (sfb = cod_info.sfb_lmax + window; sfb < cod_info.sfbdivide; sfb += 3) { + if (s1 < scalefac[sfb]) + s1 = scalefac[sfb]; + } + for (; sfb < cod_info.sfbmax; sfb += 3) { + if (s2 < scalefac[sfb]) + s2 = scalefac[sfb]; + } + + if (s1 < 16 && s2 < 8) + continue; + + if (cod_info.subblock_gain[window] >= 7) + return true; + + /* + * even though there is no scalefactor for sfb12 subblock gain + * affects upper frequencies too, that's why we have to go up to + * SBMAX_s + */ + cod_info.subblock_gain[window]++; + var j = gfc.scalefac_band.l[cod_info.sfb_lmax]; + for (sfb = cod_info.sfb_lmax + window; sfb < cod_info.sfbmax; sfb += 3) { + var amp; + var width = cod_info.width[sfb]; + var s = scalefac[sfb]; + s = s - (4 >> cod_info.scalefac_scale); + if (s >= 0) { + scalefac[sfb] = s; + j += width * 3; + continue; + } + + scalefac[sfb] = 0; + { + var gain = 210 + (s << (cod_info.scalefac_scale + 1)); + amp = qupvt.IPOW20(gain); + } + j += width * (window + 1); + for (var l = -width; l < 0; l++) { + xrpow[j + l] *= amp; + if (xrpow[j + l] > cod_info.xrpow_max) + cod_info.xrpow_max = xrpow[j + l]; + } + j += width * (3 - window - 1); + } + + { + var amp = qupvt.IPOW20(202); + j += cod_info.width[sfb] * (window + 1); + for (var l = -cod_info.width[sfb]; l < 0; l++) { + xrpow[j + l] *= amp; + if (xrpow[j + l] > cod_info.xrpow_max) + cod_info.xrpow_max = xrpow[j + l]; + } + } + } + return false; + } + + /** + *
+     *  Takehiro Tominaga /date??
+     *  Robert Hegemann 2000-09-06: made a function of it
+     *
+     *  amplifies scalefactor bands,
+     *   - if all are already amplified returns 0
+     *   - if some bands are amplified too much:
+     *      * try to increase scalefac_scale
+     *      * if already scalefac_scale was set
+     *          try on short blocks to increase subblock gain
+     * 
+ */ + function balance_noise(gfp, cod_info, distort, xrpow, bRefine) { + var gfc = gfp.internal_flags; + + amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine); + + /* + * check to make sure we have not amplified too much loop_break returns + * 0 if there is an unamplified scalefac scale_bitcount returns 0 if no + * scalefactors are too large + */ + + var status = loop_break(cod_info); + + if (status) + return false; + /* all bands amplified */ + + /* + * not all scalefactors have been amplified. so these scalefacs are + * possibly valid. encode them: + */ + if (gfc.mode_gr == 2) + status = tk.scale_bitcount(cod_info); + else + status = tk.scale_bitcount_lsf(gfc, cod_info); + + if (!status) + return true; + /* amplified some bands not exceeding limits */ + + /* + * some scalefactors are too large. lets try setting scalefac_scale=1 + */ + if (gfc.noise_shaping > 1) { + Arrays.fill(gfc.pseudohalf, 0); + if (0 == cod_info.scalefac_scale) { + inc_scalefac_scale(cod_info, xrpow); + status = false; + } else { + if (cod_info.block_type == Encoder.SHORT_TYPE + && gfc.subblock_gain > 0) { + status = (inc_subblock_gain(gfc, cod_info, xrpow) || loop_break(cod_info)); + } + } + } + + if (!status) { + if (gfc.mode_gr == 2) + status = tk.scale_bitcount(cod_info); + else + status = tk.scale_bitcount_lsf(gfc, cod_info); + } + return !status; + } + + /** + *
+     *  Function: The outer iteration loop controls the masking conditions
+     *  of all scalefactorbands. It computes the best scalefac and
+     *  global gain. This module calls the inner iteration loop
+     *
+     *  mt 5/99 completely rewritten to allow for bit reservoir control,
+     *  mid/side channels with L/R or mid/side masking thresholds,
+     *  and chooses best quantization instead of last quantization when
+     *  no distortion free quantization can be found.
+     *
+     *  added VBR support mt 5/99
+
+     *
+     *  some code shuffle rh 9/00
+     * 
+ * + * @param l3_xmin + * allowed distortion + * @param xrpow + * coloured magnitudes of spectral + * @param targ_bits + * maximum allowed bits + */ + this.outer_loop = function (gfp, cod_info, l3_xmin, xrpow, ch, targ_bits) { + var gfc = gfp.internal_flags; + var cod_info_w = new GrInfo(); + var save_xrpow = new_float(576); + var distort = new_float(L3Side.SFBMAX); + var best_noise_info = new CalcNoiseResult(); + var better; + var prev_noise = new CalcNoiseData(); + var best_part2_3_length = 9999999; + var bEndOfSearch = false; + var bRefine = false; + var best_ggain_pass1 = 0; + + bin_search_StepSize(gfc, cod_info, targ_bits, ch, xrpow); + + if (0 == gfc.noise_shaping) + /* fast mode, no noise shaping, we are ready */ + return 100; + /* default noise_info.over_count */ + + /* compute the distortion in this quantization */ + /* coefficients and thresholds both l/r (or both mid/side) */ + qupvt.calc_noise(cod_info, l3_xmin, distort, best_noise_info, + prev_noise); + best_noise_info.bits = cod_info.part2_3_length; + + cod_info_w.assign(cod_info); + var age = 0; + System.arraycopy(xrpow, 0, save_xrpow, 0, 576); + + while (!bEndOfSearch) { + /* BEGIN MAIN LOOP */ + do { + var noise_info = new CalcNoiseResult(); + var search_limit; + var maxggain = 255; + + /* + * When quantization with no distorted bands is found, allow up + * to X new unsuccesful tries in serial. This gives us more + * possibilities for different quant_compare modes. Much more + * than 3 makes not a big difference, it is only slower. + */ + + if ((gfc.substep_shaping & 2) != 0) { + search_limit = 20; + } else { + search_limit = 3; + } + + /* + * Check if the last scalefactor band is distorted. in VBR mode + * we can't get rid of the distortion, so quit now and VBR mode + * will try again with more bits. (makes a 10% speed increase, + * the files I tested were binary identical, 2000/05/20 Robert + * Hegemann) distort[] > 1 means noise > allowed noise + */ + if (gfc.sfb21_extra) { + abort();//fix cc 精简 + } + + /* try a new scalefactor conbination on cod_info_w */ + if (!balance_noise(gfp, cod_info_w, distort, xrpow, bRefine)) + break; + if (cod_info_w.scalefac_scale != 0) + maxggain = 254; + + /* + * inner_loop starts with the initial quantization step computed + * above and slowly increases until the bits < huff_bits. Thus + * it is important not to start with too large of an inital + * quantization step. Too small is ok, but inner_loop will take + * longer + */ + var huff_bits = targ_bits - cod_info_w.part2_length; + if (huff_bits <= 0) + break; + + /* + * increase quantizer stepsize until needed bits are below + * maximum + */ + while ((cod_info_w.part2_3_length = tk.count_bits(gfc, xrpow, + cod_info_w, prev_noise)) > huff_bits + && cod_info_w.global_gain <= maxggain) + cod_info_w.global_gain++; + + if (cod_info_w.global_gain > maxggain) + break; + + if (best_noise_info.over_count == 0) { + + while ((cod_info_w.part2_3_length = tk.count_bits(gfc, + xrpow, cod_info_w, prev_noise)) > best_part2_3_length + && cod_info_w.global_gain <= maxggain) + cod_info_w.global_gain++; + + if (cod_info_w.global_gain > maxggain) + break; + } + + /* compute the distortion in this quantization */ + qupvt.calc_noise(cod_info_w, l3_xmin, distort, noise_info, + prev_noise); + noise_info.bits = cod_info_w.part2_3_length; + + /* + * check if this quantization is better than our saved + * quantization + */ + if (cod_info.block_type != Encoder.SHORT_TYPE) { + // NORM, START or STOP type + better = gfp.quant_comp; + } else + better = gfp.quant_comp_short; + + better = quant_compare(better, best_noise_info, noise_info, + cod_info_w, distort) ? 1 : 0; + + /* save data so we can restore this quantization later */ + if (better != 0) { + best_part2_3_length = cod_info.part2_3_length; + best_noise_info = noise_info; + cod_info.assign(cod_info_w); + age = 0; + /* save data so we can restore this quantization later */ + /* store for later reuse */ + System.arraycopy(xrpow, 0, save_xrpow, 0, 576); + } else { + /* early stop? */ + if (gfc.full_outer_loop == 0) { + if (++age > search_limit + && best_noise_info.over_count == 0) + break; + if ((gfc.noise_shaping_amp == 3) && bRefine && age > 30) + break; + if ((gfc.noise_shaping_amp == 3) + && bRefine + && (cod_info_w.global_gain - best_ggain_pass1) > 15) + break; + } + } + } while ((cod_info_w.global_gain + cod_info_w.scalefac_scale) < 255); + + if (gfc.noise_shaping_amp == 3) { + abort();//fix cc 精简 + } else { + bEndOfSearch = true; + } + } + + /* + * finish up + */ + if (gfp.VBR == VbrMode.vbr_rh || gfp.VBR == VbrMode.vbr_mtrh) + /* restore for reuse on next try */ + System.arraycopy(save_xrpow, 0, xrpow, 0, 576); + /* + * do the 'substep shaping' + */ + else if ((gfc.substep_shaping & 1) != 0) + abort();//fix cc 精简 + + return best_noise_info.over_count; + } + + /** + * Robert Hegemann 2000-09-06 + * + * update reservoir status after FINAL quantization/bitrate + */ + this.iteration_finish_one = function (gfc, gr, ch) { + var l3_side = gfc.l3_side; + var cod_info = l3_side.tt[gr][ch]; + + /* + * try some better scalefac storage + */ + tk.best_scalefac_store(gfc, gr, ch, l3_side); + + /* + * best huffman_divide may save some bits too + */ + if (gfc.use_best_huffman == 1) + tk.best_huffman_divide(gfc, cod_info); + + /* + * update reservoir status after FINAL quantization/bitrate + */ + rv.ResvAdjust(gfc, cod_info); + }; + + //fix cc 精简 + +} + +/* + * MP3 window subband -> subband filtering -> mdct routine + * + * Copyright (c) 1999-2000 Takehiro Tominaga + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ +/* + * Special Thanks to Patrick De Smet for your advices. + */ + +/* $Id: NewMDCT.java,v 1.11 2011/05/24 20:48:06 kenchis Exp $ */ + +//package mp3; + +//import java.util.Arrays; + + + +function NewMDCT() { + + var enwindow = [ + -4.77e-07 * 0.740951125354959 / 2.384e-06, + 1.03951e-04 * 0.740951125354959 / 2.384e-06, + 9.53674e-04 * 0.740951125354959 / 2.384e-06, + 2.841473e-03 * 0.740951125354959 / 2.384e-06, + 3.5758972e-02 * 0.740951125354959 / 2.384e-06, + 3.401756e-03 * 0.740951125354959 / 2.384e-06, + 9.83715e-04 * 0.740951125354959 / 2.384e-06, + 9.9182e-05 * 0.740951125354959 / 2.384e-06, /* 15 */ + 1.2398e-05 * 0.740951125354959 / 2.384e-06, + 1.91212e-04 * 0.740951125354959 / 2.384e-06, + 2.283096e-03 * 0.740951125354959 / 2.384e-06, + 1.6994476e-02 * 0.740951125354959 / 2.384e-06, + -1.8756866e-02 * 0.740951125354959 / 2.384e-06, + -2.630711e-03 * 0.740951125354959 / 2.384e-06, + -2.47478e-04 * 0.740951125354959 / 2.384e-06, + -1.4782e-05 * 0.740951125354959 / 2.384e-06, + 9.063471690191471e-01, 1.960342806591213e-01, + + -4.77e-07 * 0.773010453362737 / 2.384e-06, + 1.05858e-04 * 0.773010453362737 / 2.384e-06, + 9.30786e-04 * 0.773010453362737 / 2.384e-06, + 2.521515e-03 * 0.773010453362737 / 2.384e-06, + 3.5694122e-02 * 0.773010453362737 / 2.384e-06, + 3.643036e-03 * 0.773010453362737 / 2.384e-06, + 9.91821e-04 * 0.773010453362737 / 2.384e-06, + 9.6321e-05 * 0.773010453362737 / 2.384e-06, /* 14 */ + 1.1444e-05 * 0.773010453362737 / 2.384e-06, + 1.65462e-04 * 0.773010453362737 / 2.384e-06, + 2.110004e-03 * 0.773010453362737 / 2.384e-06, + 1.6112804e-02 * 0.773010453362737 / 2.384e-06, + -1.9634247e-02 * 0.773010453362737 / 2.384e-06, + -2.803326e-03 * 0.773010453362737 / 2.384e-06, + -2.77042e-04 * 0.773010453362737 / 2.384e-06, + -1.6689e-05 * 0.773010453362737 / 2.384e-06, + 8.206787908286602e-01, 3.901806440322567e-01, + + -4.77e-07 * 0.803207531480645 / 2.384e-06, + 1.07288e-04 * 0.803207531480645 / 2.384e-06, + 9.02653e-04 * 0.803207531480645 / 2.384e-06, + 2.174854e-03 * 0.803207531480645 / 2.384e-06, + 3.5586357e-02 * 0.803207531480645 / 2.384e-06, + 3.858566e-03 * 0.803207531480645 / 2.384e-06, + 9.95159e-04 * 0.803207531480645 / 2.384e-06, + 9.3460e-05 * 0.803207531480645 / 2.384e-06, /* 13 */ + 1.0014e-05 * 0.803207531480645 / 2.384e-06, + 1.40190e-04 * 0.803207531480645 / 2.384e-06, + 1.937389e-03 * 0.803207531480645 / 2.384e-06, + 1.5233517e-02 * 0.803207531480645 / 2.384e-06, + -2.0506859e-02 * 0.803207531480645 / 2.384e-06, + -2.974033e-03 * 0.803207531480645 / 2.384e-06, + -3.07560e-04 * 0.803207531480645 / 2.384e-06, + -1.8120e-05 * 0.803207531480645 / 2.384e-06, + 7.416505462720353e-01, 5.805693545089249e-01, + + -4.77e-07 * 0.831469612302545 / 2.384e-06, + 1.08242e-04 * 0.831469612302545 / 2.384e-06, + 8.68797e-04 * 0.831469612302545 / 2.384e-06, + 1.800537e-03 * 0.831469612302545 / 2.384e-06, + 3.5435200e-02 * 0.831469612302545 / 2.384e-06, + 4.049301e-03 * 0.831469612302545 / 2.384e-06, + 9.94205e-04 * 0.831469612302545 / 2.384e-06, + 9.0599e-05 * 0.831469612302545 / 2.384e-06, /* 12 */ + 9.060e-06 * 0.831469612302545 / 2.384e-06, + 1.16348e-04 * 0.831469612302545 / 2.384e-06, + 1.766682e-03 * 0.831469612302545 / 2.384e-06, + 1.4358521e-02 * 0.831469612302545 / 2.384e-06, + -2.1372318e-02 * 0.831469612302545 / 2.384e-06, + -3.14188e-03 * 0.831469612302545 / 2.384e-06, + -3.39031e-04 * 0.831469612302545 / 2.384e-06, + -1.9550e-05 * 0.831469612302545 / 2.384e-06, + 6.681786379192989e-01, 7.653668647301797e-01, + + -4.77e-07 * 0.857728610000272 / 2.384e-06, + 1.08719e-04 * 0.857728610000272 / 2.384e-06, + 8.29220e-04 * 0.857728610000272 / 2.384e-06, + 1.399517e-03 * 0.857728610000272 / 2.384e-06, + 3.5242081e-02 * 0.857728610000272 / 2.384e-06, + 4.215240e-03 * 0.857728610000272 / 2.384e-06, + 9.89437e-04 * 0.857728610000272 / 2.384e-06, + 8.7261e-05 * 0.857728610000272 / 2.384e-06, /* 11 */ + 8.106e-06 * 0.857728610000272 / 2.384e-06, + 9.3937e-05 * 0.857728610000272 / 2.384e-06, + 1.597881e-03 * 0.857728610000272 / 2.384e-06, + 1.3489246e-02 * 0.857728610000272 / 2.384e-06, + -2.2228718e-02 * 0.857728610000272 / 2.384e-06, + -3.306866e-03 * 0.857728610000272 / 2.384e-06, + -3.71456e-04 * 0.857728610000272 / 2.384e-06, + -2.1458e-05 * 0.857728610000272 / 2.384e-06, + 5.993769336819237e-01, 9.427934736519954e-01, + + -4.77e-07 * 0.881921264348355 / 2.384e-06, + 1.08719e-04 * 0.881921264348355 / 2.384e-06, + 7.8392e-04 * 0.881921264348355 / 2.384e-06, + 9.71317e-04 * 0.881921264348355 / 2.384e-06, + 3.5007000e-02 * 0.881921264348355 / 2.384e-06, + 4.357815e-03 * 0.881921264348355 / 2.384e-06, + 9.80854e-04 * 0.881921264348355 / 2.384e-06, + 8.3923e-05 * 0.881921264348355 / 2.384e-06, /* 10 */ + 7.629e-06 * 0.881921264348355 / 2.384e-06, + 7.2956e-05 * 0.881921264348355 / 2.384e-06, + 1.432419e-03 * 0.881921264348355 / 2.384e-06, + 1.2627602e-02 * 0.881921264348355 / 2.384e-06, + -2.3074150e-02 * 0.881921264348355 / 2.384e-06, + -3.467083e-03 * 0.881921264348355 / 2.384e-06, + -4.04358e-04 * 0.881921264348355 / 2.384e-06, + -2.3365e-05 * 0.881921264348355 / 2.384e-06, + 5.345111359507916e-01, 1.111140466039205e+00, + + -9.54e-07 * 0.903989293123443 / 2.384e-06, + 1.08242e-04 * 0.903989293123443 / 2.384e-06, + 7.31945e-04 * 0.903989293123443 / 2.384e-06, + 5.15938e-04 * 0.903989293123443 / 2.384e-06, + 3.4730434e-02 * 0.903989293123443 / 2.384e-06, + 4.477024e-03 * 0.903989293123443 / 2.384e-06, + 9.68933e-04 * 0.903989293123443 / 2.384e-06, + 8.0585e-05 * 0.903989293123443 / 2.384e-06, /* 9 */ + 6.676e-06 * 0.903989293123443 / 2.384e-06, + 5.2929e-05 * 0.903989293123443 / 2.384e-06, + 1.269817e-03 * 0.903989293123443 / 2.384e-06, + 1.1775017e-02 * 0.903989293123443 / 2.384e-06, + -2.3907185e-02 * 0.903989293123443 / 2.384e-06, + -3.622532e-03 * 0.903989293123443 / 2.384e-06, + -4.38213e-04 * 0.903989293123443 / 2.384e-06, + -2.5272e-05 * 0.903989293123443 / 2.384e-06, + 4.729647758913199e-01, 1.268786568327291e+00, + + -9.54e-07 * 0.92387953251128675613 / 2.384e-06, + 1.06812e-04 * 0.92387953251128675613 / 2.384e-06, + 6.74248e-04 * 0.92387953251128675613 / 2.384e-06, + 3.3379e-05 * 0.92387953251128675613 / 2.384e-06, + 3.4412861e-02 * 0.92387953251128675613 / 2.384e-06, + 4.573822e-03 * 0.92387953251128675613 / 2.384e-06, + 9.54151e-04 * 0.92387953251128675613 / 2.384e-06, + 7.6771e-05 * 0.92387953251128675613 / 2.384e-06, + 6.199e-06 * 0.92387953251128675613 / 2.384e-06, + 3.4332e-05 * 0.92387953251128675613 / 2.384e-06, + 1.111031e-03 * 0.92387953251128675613 / 2.384e-06, + 1.0933399e-02 * 0.92387953251128675613 / 2.384e-06, + -2.4725437e-02 * 0.92387953251128675613 / 2.384e-06, + -3.771782e-03 * 0.92387953251128675613 / 2.384e-06, + -4.72546e-04 * 0.92387953251128675613 / 2.384e-06, + -2.7657e-05 * 0.92387953251128675613 / 2.384e-06, + 4.1421356237309504879e-01, /* tan(PI/8) */ + 1.414213562373095e+00, + + -9.54e-07 * 0.941544065183021 / 2.384e-06, + 1.05381e-04 * 0.941544065183021 / 2.384e-06, + 6.10352e-04 * 0.941544065183021 / 2.384e-06, + -4.75883e-04 * 0.941544065183021 / 2.384e-06, + 3.4055710e-02 * 0.941544065183021 / 2.384e-06, + 4.649162e-03 * 0.941544065183021 / 2.384e-06, + 9.35555e-04 * 0.941544065183021 / 2.384e-06, + 7.3433e-05 * 0.941544065183021 / 2.384e-06, /* 7 */ + 5.245e-06 * 0.941544065183021 / 2.384e-06, + 1.7166e-05 * 0.941544065183021 / 2.384e-06, + 9.56535e-04 * 0.941544065183021 / 2.384e-06, + 1.0103703e-02 * 0.941544065183021 / 2.384e-06, + -2.5527000e-02 * 0.941544065183021 / 2.384e-06, + -3.914356e-03 * 0.941544065183021 / 2.384e-06, + -5.07355e-04 * 0.941544065183021 / 2.384e-06, + -3.0041e-05 * 0.941544065183021 / 2.384e-06, + 3.578057213145241e-01, 1.546020906725474e+00, + + -9.54e-07 * 0.956940335732209 / 2.384e-06, + 1.02520e-04 * 0.956940335732209 / 2.384e-06, + 5.39303e-04 * 0.956940335732209 / 2.384e-06, + -1.011848e-03 * 0.956940335732209 / 2.384e-06, + 3.3659935e-02 * 0.956940335732209 / 2.384e-06, + 4.703045e-03 * 0.956940335732209 / 2.384e-06, + 9.15051e-04 * 0.956940335732209 / 2.384e-06, + 7.0095e-05 * 0.956940335732209 / 2.384e-06, /* 6 */ + 4.768e-06 * 0.956940335732209 / 2.384e-06, + 9.54e-07 * 0.956940335732209 / 2.384e-06, + 8.06808e-04 * 0.956940335732209 / 2.384e-06, + 9.287834e-03 * 0.956940335732209 / 2.384e-06, + -2.6310921e-02 * 0.956940335732209 / 2.384e-06, + -4.048824e-03 * 0.956940335732209 / 2.384e-06, + -5.42164e-04 * 0.956940335732209 / 2.384e-06, + -3.2425e-05 * 0.956940335732209 / 2.384e-06, + 3.033466836073424e-01, 1.662939224605090e+00, + + -1.431e-06 * 0.970031253194544 / 2.384e-06, + 9.9182e-05 * 0.970031253194544 / 2.384e-06, + 4.62532e-04 * 0.970031253194544 / 2.384e-06, + -1.573563e-03 * 0.970031253194544 / 2.384e-06, + 3.3225536e-02 * 0.970031253194544 / 2.384e-06, + 4.737377e-03 * 0.970031253194544 / 2.384e-06, + 8.91685e-04 * 0.970031253194544 / 2.384e-06, + 6.6280e-05 * 0.970031253194544 / 2.384e-06, /* 5 */ + 4.292e-06 * 0.970031253194544 / 2.384e-06, + -1.3828e-05 * 0.970031253194544 / 2.384e-06, + 6.61850e-04 * 0.970031253194544 / 2.384e-06, + 8.487225e-03 * 0.970031253194544 / 2.384e-06, + -2.7073860e-02 * 0.970031253194544 / 2.384e-06, + -4.174709e-03 * 0.970031253194544 / 2.384e-06, + -5.76973e-04 * 0.970031253194544 / 2.384e-06, + -3.4809e-05 * 0.970031253194544 / 2.384e-06, + 2.504869601913055e-01, 1.763842528696710e+00, + + -1.431e-06 * 0.98078528040323 / 2.384e-06, + 9.5367e-05 * 0.98078528040323 / 2.384e-06, + 3.78609e-04 * 0.98078528040323 / 2.384e-06, + -2.161503e-03 * 0.98078528040323 / 2.384e-06, + 3.2754898e-02 * 0.98078528040323 / 2.384e-06, + 4.752159e-03 * 0.98078528040323 / 2.384e-06, + 8.66413e-04 * 0.98078528040323 / 2.384e-06, + 6.2943e-05 * 0.98078528040323 / 2.384e-06, /* 4 */ + 3.815e-06 * 0.98078528040323 / 2.384e-06, + -2.718e-05 * 0.98078528040323 / 2.384e-06, + 5.22137e-04 * 0.98078528040323 / 2.384e-06, + 7.703304e-03 * 0.98078528040323 / 2.384e-06, + -2.7815342e-02 * 0.98078528040323 / 2.384e-06, + -4.290581e-03 * 0.98078528040323 / 2.384e-06, + -6.11782e-04 * 0.98078528040323 / 2.384e-06, + -3.7670e-05 * 0.98078528040323 / 2.384e-06, + 1.989123673796580e-01, 1.847759065022573e+00, + + -1.907e-06 * 0.989176509964781 / 2.384e-06, + 9.0122e-05 * 0.989176509964781 / 2.384e-06, + 2.88486e-04 * 0.989176509964781 / 2.384e-06, + -2.774239e-03 * 0.989176509964781 / 2.384e-06, + 3.2248020e-02 * 0.989176509964781 / 2.384e-06, + 4.748821e-03 * 0.989176509964781 / 2.384e-06, + 8.38757e-04 * 0.989176509964781 / 2.384e-06, + 5.9605e-05 * 0.989176509964781 / 2.384e-06, /* 3 */ + 3.338e-06 * 0.989176509964781 / 2.384e-06, + -3.9577e-05 * 0.989176509964781 / 2.384e-06, + 3.88145e-04 * 0.989176509964781 / 2.384e-06, + 6.937027e-03 * 0.989176509964781 / 2.384e-06, + -2.8532982e-02 * 0.989176509964781 / 2.384e-06, + -4.395962e-03 * 0.989176509964781 / 2.384e-06, + -6.46591e-04 * 0.989176509964781 / 2.384e-06, + -4.0531e-05 * 0.989176509964781 / 2.384e-06, + 1.483359875383474e-01, 1.913880671464418e+00, + + -1.907e-06 * 0.995184726672197 / 2.384e-06, + 8.4400e-05 * 0.995184726672197 / 2.384e-06, + 1.91689e-04 * 0.995184726672197 / 2.384e-06, + -3.411293e-03 * 0.995184726672197 / 2.384e-06, + 3.1706810e-02 * 0.995184726672197 / 2.384e-06, + 4.728317e-03 * 0.995184726672197 / 2.384e-06, + 8.09669e-04 * 0.995184726672197 / 2.384e-06, + 5.579e-05 * 0.995184726672197 / 2.384e-06, + 3.338e-06 * 0.995184726672197 / 2.384e-06, + -5.0545e-05 * 0.995184726672197 / 2.384e-06, + 2.59876e-04 * 0.995184726672197 / 2.384e-06, + 6.189346e-03 * 0.995184726672197 / 2.384e-06, + -2.9224873e-02 * 0.995184726672197 / 2.384e-06, + -4.489899e-03 * 0.995184726672197 / 2.384e-06, + -6.80923e-04 * 0.995184726672197 / 2.384e-06, + -4.3392e-05 * 0.995184726672197 / 2.384e-06, + 9.849140335716425e-02, 1.961570560806461e+00, + + -2.384e-06 * 0.998795456205172 / 2.384e-06, + 7.7724e-05 * 0.998795456205172 / 2.384e-06, + 8.8215e-05 * 0.998795456205172 / 2.384e-06, + -4.072189e-03 * 0.998795456205172 / 2.384e-06, + 3.1132698e-02 * 0.998795456205172 / 2.384e-06, + 4.691124e-03 * 0.998795456205172 / 2.384e-06, + 7.79152e-04 * 0.998795456205172 / 2.384e-06, + 5.2929e-05 * 0.998795456205172 / 2.384e-06, + 2.861e-06 * 0.998795456205172 / 2.384e-06, + -6.0558e-05 * 0.998795456205172 / 2.384e-06, + 1.37329e-04 * 0.998795456205172 / 2.384e-06, + 5.462170e-03 * 0.998795456205172 / 2.384e-06, + -2.9890060e-02 * 0.998795456205172 / 2.384e-06, + -4.570484e-03 * 0.998795456205172 / 2.384e-06, + -7.14302e-04 * 0.998795456205172 / 2.384e-06, + -4.6253e-05 * 0.998795456205172 / 2.384e-06, + 4.912684976946725e-02, 1.990369453344394e+00, + + 3.5780907e-02 * Util.SQRT2 * 0.5 / 2.384e-06, + 1.7876148e-02 * Util.SQRT2 * 0.5 / 2.384e-06, + 3.134727e-03 * Util.SQRT2 * 0.5 / 2.384e-06, + 2.457142e-03 * Util.SQRT2 * 0.5 / 2.384e-06, + 9.71317e-04 * Util.SQRT2 * 0.5 / 2.384e-06, + 2.18868e-04 * Util.SQRT2 * 0.5 / 2.384e-06, + 1.01566e-04 * Util.SQRT2 * 0.5 / 2.384e-06, + 1.3828e-05 * Util.SQRT2 * 0.5 / 2.384e-06, + + 3.0526638e-02 / 2.384e-06, 4.638195e-03 / 2.384e-06, + 7.47204e-04 / 2.384e-06, 4.9591e-05 / 2.384e-06, + 4.756451e-03 / 2.384e-06, 2.1458e-05 / 2.384e-06, + -6.9618e-05 / 2.384e-06, /* 2.384e-06/2.384e-06 */ + ]; + + var NS = 12; + var NL = 36; + + var win = [ + [ + 2.382191739347913e-13, + 6.423305872147834e-13, + 9.400849094049688e-13, + 1.122435026096556e-12, + 1.183840321267481e-12, + 1.122435026096556e-12, + 9.400849094049690e-13, + 6.423305872147839e-13, + 2.382191739347918e-13, + + 5.456116108943412e-12, + 4.878985199565852e-12, + 4.240448995017367e-12, + 3.559909094758252e-12, + 2.858043359288075e-12, + 2.156177623817898e-12, + 1.475637723558783e-12, + 8.371015190102974e-13, + 2.599706096327376e-13, + + -5.456116108943412e-12, + -4.878985199565852e-12, + -4.240448995017367e-12, + -3.559909094758252e-12, + -2.858043359288076e-12, + -2.156177623817898e-12, + -1.475637723558783e-12, + -8.371015190102975e-13, + -2.599706096327376e-13, + + -2.382191739347923e-13, + -6.423305872147843e-13, + -9.400849094049696e-13, + -1.122435026096556e-12, + -1.183840321267481e-12, + -1.122435026096556e-12, + -9.400849094049694e-13, + -6.423305872147840e-13, + -2.382191739347918e-13, + ], + [ + 2.382191739347913e-13, + 6.423305872147834e-13, + 9.400849094049688e-13, + 1.122435026096556e-12, + 1.183840321267481e-12, + 1.122435026096556e-12, + 9.400849094049688e-13, + 6.423305872147841e-13, + 2.382191739347918e-13, + + 5.456116108943413e-12, + 4.878985199565852e-12, + 4.240448995017367e-12, + 3.559909094758253e-12, + 2.858043359288075e-12, + 2.156177623817898e-12, + 1.475637723558782e-12, + 8.371015190102975e-13, + 2.599706096327376e-13, + + -5.461314069809755e-12, + -4.921085770524055e-12, + -4.343405037091838e-12, + -3.732668368707687e-12, + -3.093523840190885e-12, + -2.430835727329465e-12, + -1.734679010007751e-12, + -9.748253656609281e-13, + -2.797435120168326e-13, + + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + -2.283748241799531e-13, + -4.037858874020686e-13, + -2.146547464825323e-13, + ], + [ + 1.316524975873958e-01, /* win[SHORT_TYPE] */ + 4.142135623730950e-01, + 7.673269879789602e-01, + + 1.091308501069271e+00, /* tantab_l */ + 1.303225372841206e+00, + 1.569685577117490e+00, + 1.920982126971166e+00, + 2.414213562373094e+00, + 3.171594802363212e+00, + 4.510708503662055e+00, + 7.595754112725146e+00, + 2.290376554843115e+01, + + 0.98480775301220802032, /* cx */ + 0.64278760968653936292, + 0.34202014332566882393, + 0.93969262078590842791, + -0.17364817766693030343, + -0.76604444311897790243, + 0.86602540378443870761, + 0.500000000000000e+00, + + -5.144957554275265e-01, /* ca */ + -4.717319685649723e-01, + -3.133774542039019e-01, + -1.819131996109812e-01, + -9.457419252642064e-02, + -4.096558288530405e-02, + -1.419856857247115e-02, + -3.699974673760037e-03, + + 8.574929257125442e-01, /* cs */ + 8.817419973177052e-01, + 9.496286491027329e-01, + 9.833145924917901e-01, + 9.955178160675857e-01, + 9.991605581781475e-01, + 9.998991952444470e-01, + 9.999931550702802e-01, + ], + [ + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 2.283748241799531e-13, + 4.037858874020686e-13, + 2.146547464825323e-13, + + 5.461314069809755e-12, + 4.921085770524055e-12, + 4.343405037091838e-12, + 3.732668368707687e-12, + 3.093523840190885e-12, + 2.430835727329466e-12, + 1.734679010007751e-12, + 9.748253656609281e-13, + 2.797435120168326e-13, + + -5.456116108943413e-12, + -4.878985199565852e-12, + -4.240448995017367e-12, + -3.559909094758253e-12, + -2.858043359288075e-12, + -2.156177623817898e-12, + -1.475637723558782e-12, + -8.371015190102975e-13, + -2.599706096327376e-13, + + -2.382191739347913e-13, + -6.423305872147834e-13, + -9.400849094049688e-13, + -1.122435026096556e-12, + -1.183840321267481e-12, + -1.122435026096556e-12, + -9.400849094049688e-13, + -6.423305872147841e-13, + -2.382191739347918e-13, + ] + ]; + + var tantab_l = win[Encoder.SHORT_TYPE]; + var cx = win[Encoder.SHORT_TYPE]; + var ca = win[Encoder.SHORT_TYPE]; + var cs = win[Encoder.SHORT_TYPE]; + + /** + * new IDCT routine written by Takehiro TOMINAGA + * + * PURPOSE: Overlapping window on PCM samples
+ * + * SEMANTICS:
+ * 32 16-bit pcm samples are scaled to fractional 2's complement and + * concatenated to the end of the window buffer #x#. The updated window + * buffer #x# is then windowed by the analysis window #c# to produce the + * windowed sample #z# + */ + var order = [ + 0, 1, 16, 17, 8, 9, 24, 25, 4, 5, 20, 21, 12, 13, 28, 29, + 2, 3, 18, 19, 10, 11, 26, 27, 6, 7, 22, 23, 14, 15, 30, 31 + ]; + + /** + * returns sum_j=0^31 a[j]*cos(PI*j*(k+1/2)/32), 0<=k<32 + */ + function window_subband(x1, x1Pos, a) { + var wp = 10; + + var x2 = x1Pos + 238 - 14 - 286; + + for (var i = -15; i < 0; i++) { + var w, s, t; + + w = enwindow[wp + -10]; + s = x1[x2 + -224] * w; + t = x1[x1Pos + 224] * w; + w = enwindow[wp + -9]; + s += x1[x2 + -160] * w; + t += x1[x1Pos + 160] * w; + w = enwindow[wp + -8]; + s += x1[x2 + -96] * w; + t += x1[x1Pos + 96] * w; + w = enwindow[wp + -7]; + s += x1[x2 + -32] * w; + t += x1[x1Pos + 32] * w; + w = enwindow[wp + -6]; + s += x1[x2 + 32] * w; + t += x1[x1Pos + -32] * w; + w = enwindow[wp + -5]; + s += x1[x2 + 96] * w; + t += x1[x1Pos + -96] * w; + w = enwindow[wp + -4]; + s += x1[x2 + 160] * w; + t += x1[x1Pos + -160] * w; + w = enwindow[wp + -3]; + s += x1[x2 + 224] * w; + t += x1[x1Pos + -224] * w; + + w = enwindow[wp + -2]; + s += x1[x1Pos + -256] * w; + t -= x1[x2 + 256] * w; + w = enwindow[wp + -1]; + s += x1[x1Pos + -192] * w; + t -= x1[x2 + 192] * w; + w = enwindow[wp + 0]; + s += x1[x1Pos + -128] * w; + t -= x1[x2 + 128] * w; + w = enwindow[wp + 1]; + s += x1[x1Pos + -64] * w; + t -= x1[x2 + 64] * w; + w = enwindow[wp + 2]; + s += x1[x1Pos + 0] * w; + t -= x1[x2 + 0] * w; + w = enwindow[wp + 3]; + s += x1[x1Pos + 64] * w; + t -= x1[x2 + -64] * w; + w = enwindow[wp + 4]; + s += x1[x1Pos + 128] * w; + t -= x1[x2 + -128] * w; + w = enwindow[wp + 5]; + s += x1[x1Pos + 192] * w; + t -= x1[x2 + -192] * w; + + /* + * this multiplyer could be removed, but it needs more 256 FLOAT + * data. thinking about the data cache performance, I think we + * should not use such a huge table. tt 2000/Oct/25 + */ + s *= enwindow[wp + 6]; + w = t - s; + a[30 + i * 2] = t + s; + a[31 + i * 2] = enwindow[wp + 7] * w; + wp += 18; + x1Pos--; + x2++; + } + { + var s, t, u, v; + t = x1[x1Pos + -16] * enwindow[wp + -10]; + s = x1[x1Pos + -32] * enwindow[wp + -2]; + t += (x1[x1Pos + -48] - x1[x1Pos + 16]) * enwindow[wp + -9]; + s += x1[x1Pos + -96] * enwindow[wp + -1]; + t += (x1[x1Pos + -80] + x1[x1Pos + 48]) * enwindow[wp + -8]; + s += x1[x1Pos + -160] * enwindow[wp + 0]; + t += (x1[x1Pos + -112] - x1[x1Pos + 80]) * enwindow[wp + -7]; + s += x1[x1Pos + -224] * enwindow[wp + 1]; + t += (x1[x1Pos + -144] + x1[x1Pos + 112]) * enwindow[wp + -6]; + s -= x1[x1Pos + 32] * enwindow[wp + 2]; + t += (x1[x1Pos + -176] - x1[x1Pos + 144]) * enwindow[wp + -5]; + s -= x1[x1Pos + 96] * enwindow[wp + 3]; + t += (x1[x1Pos + -208] + x1[x1Pos + 176]) * enwindow[wp + -4]; + s -= x1[x1Pos + 160] * enwindow[wp + 4]; + t += (x1[x1Pos + -240] - x1[x1Pos + 208]) * enwindow[wp + -3]; + s -= x1[x1Pos + 224]; + + u = s - t; + v = s + t; + + t = a[14]; + s = a[15] - t; + + a[31] = v + t; /* A0 */ + a[30] = u + s; /* A1 */ + a[15] = u - s; /* A2 */ + a[14] = v - t; /* A3 */ + } + { + var xr; + xr = a[28] - a[0]; + a[0] += a[28]; + a[28] = xr * enwindow[wp + -2 * 18 + 7]; + xr = a[29] - a[1]; + a[1] += a[29]; + a[29] = xr * enwindow[wp + -2 * 18 + 7]; + + xr = a[26] - a[2]; + a[2] += a[26]; + a[26] = xr * enwindow[wp + -4 * 18 + 7]; + xr = a[27] - a[3]; + a[3] += a[27]; + a[27] = xr * enwindow[wp + -4 * 18 + 7]; + + xr = a[24] - a[4]; + a[4] += a[24]; + a[24] = xr * enwindow[wp + -6 * 18 + 7]; + xr = a[25] - a[5]; + a[5] += a[25]; + a[25] = xr * enwindow[wp + -6 * 18 + 7]; + + xr = a[22] - a[6]; + a[6] += a[22]; + a[22] = xr * Util.SQRT2; + xr = a[23] - a[7]; + a[7] += a[23]; + a[23] = xr * Util.SQRT2 - a[7]; + a[7] -= a[6]; + a[22] -= a[7]; + a[23] -= a[22]; + + xr = a[6]; + a[6] = a[31] - xr; + a[31] = a[31] + xr; + xr = a[7]; + a[7] = a[30] - xr; + a[30] = a[30] + xr; + xr = a[22]; + a[22] = a[15] - xr; + a[15] = a[15] + xr; + xr = a[23]; + a[23] = a[14] - xr; + a[14] = a[14] + xr; + + xr = a[20] - a[8]; + a[8] += a[20]; + a[20] = xr * enwindow[wp + -10 * 18 + 7]; + xr = a[21] - a[9]; + a[9] += a[21]; + a[21] = xr * enwindow[wp + -10 * 18 + 7]; + + xr = a[18] - a[10]; + a[10] += a[18]; + a[18] = xr * enwindow[wp + -12 * 18 + 7]; + xr = a[19] - a[11]; + a[11] += a[19]; + a[19] = xr * enwindow[wp + -12 * 18 + 7]; + + xr = a[16] - a[12]; + a[12] += a[16]; + a[16] = xr * enwindow[wp + -14 * 18 + 7]; + xr = a[17] - a[13]; + a[13] += a[17]; + a[17] = xr * enwindow[wp + -14 * 18 + 7]; + + xr = -a[20] + a[24]; + a[20] += a[24]; + a[24] = xr * enwindow[wp + -12 * 18 + 7]; + xr = -a[21] + a[25]; + a[21] += a[25]; + a[25] = xr * enwindow[wp + -12 * 18 + 7]; + + xr = a[4] - a[8]; + a[4] += a[8]; + a[8] = xr * enwindow[wp + -12 * 18 + 7]; + xr = a[5] - a[9]; + a[5] += a[9]; + a[9] = xr * enwindow[wp + -12 * 18 + 7]; + + xr = a[0] - a[12]; + a[0] += a[12]; + a[12] = xr * enwindow[wp + -4 * 18 + 7]; + xr = a[1] - a[13]; + a[1] += a[13]; + a[13] = xr * enwindow[wp + -4 * 18 + 7]; + xr = a[16] - a[28]; + a[16] += a[28]; + a[28] = xr * enwindow[wp + -4 * 18 + 7]; + xr = -a[17] + a[29]; + a[17] += a[29]; + a[29] = xr * enwindow[wp + -4 * 18 + 7]; + + xr = Util.SQRT2 * (a[2] - a[10]); + a[2] += a[10]; + a[10] = xr; + xr = Util.SQRT2 * (a[3] - a[11]); + a[3] += a[11]; + a[11] = xr; + xr = Util.SQRT2 * (-a[18] + a[26]); + a[18] += a[26]; + a[26] = xr - a[18]; + xr = Util.SQRT2 * (-a[19] + a[27]); + a[19] += a[27]; + a[27] = xr - a[19]; + + xr = a[2]; + a[19] -= a[3]; + a[3] -= xr; + a[2] = a[31] - xr; + a[31] += xr; + xr = a[3]; + a[11] -= a[19]; + a[18] -= xr; + a[3] = a[30] - xr; + a[30] += xr; + xr = a[18]; + a[27] -= a[11]; + a[19] -= xr; + a[18] = a[15] - xr; + a[15] += xr; + + xr = a[19]; + a[10] -= xr; + a[19] = a[14] - xr; + a[14] += xr; + xr = a[10]; + a[11] -= xr; + a[10] = a[23] - xr; + a[23] += xr; + xr = a[11]; + a[26] -= xr; + a[11] = a[22] - xr; + a[22] += xr; + xr = a[26]; + a[27] -= xr; + a[26] = a[7] - xr; + a[7] += xr; + + xr = a[27]; + a[27] = a[6] - xr; + a[6] += xr; + + xr = Util.SQRT2 * (a[0] - a[4]); + a[0] += a[4]; + a[4] = xr; + xr = Util.SQRT2 * (a[1] - a[5]); + a[1] += a[5]; + a[5] = xr; + xr = Util.SQRT2 * (a[16] - a[20]); + a[16] += a[20]; + a[20] = xr; + xr = Util.SQRT2 * (a[17] - a[21]); + a[17] += a[21]; + a[21] = xr; + + xr = -Util.SQRT2 * (a[8] - a[12]); + a[8] += a[12]; + a[12] = xr - a[8]; + xr = -Util.SQRT2 * (a[9] - a[13]); + a[9] += a[13]; + a[13] = xr - a[9]; + xr = -Util.SQRT2 * (a[25] - a[29]); + a[25] += a[29]; + a[29] = xr - a[25]; + xr = -Util.SQRT2 * (a[24] + a[28]); + a[24] -= a[28]; + a[28] = xr - a[24]; + + xr = a[24] - a[16]; + a[24] = xr; + xr = a[20] - xr; + a[20] = xr; + xr = a[28] - xr; + a[28] = xr; + + xr = a[25] - a[17]; + a[25] = xr; + xr = a[21] - xr; + a[21] = xr; + xr = a[29] - xr; + a[29] = xr; + + xr = a[17] - a[1]; + a[17] = xr; + xr = a[9] - xr; + a[9] = xr; + xr = a[25] - xr; + a[25] = xr; + xr = a[5] - xr; + a[5] = xr; + xr = a[21] - xr; + a[21] = xr; + xr = a[13] - xr; + a[13] = xr; + xr = a[29] - xr; + a[29] = xr; + + xr = a[1] - a[0]; + a[1] = xr; + xr = a[16] - xr; + a[16] = xr; + xr = a[17] - xr; + a[17] = xr; + xr = a[8] - xr; + a[8] = xr; + xr = a[9] - xr; + a[9] = xr; + xr = a[24] - xr; + a[24] = xr; + xr = a[25] - xr; + a[25] = xr; + xr = a[4] - xr; + a[4] = xr; + xr = a[5] - xr; + a[5] = xr; + xr = a[20] - xr; + a[20] = xr; + xr = a[21] - xr; + a[21] = xr; + xr = a[12] - xr; + a[12] = xr; + xr = a[13] - xr; + a[13] = xr; + xr = a[28] - xr; + a[28] = xr; + xr = a[29] - xr; + a[29] = xr; + + xr = a[0]; + a[0] += a[31]; + a[31] -= xr; + xr = a[1]; + a[1] += a[30]; + a[30] -= xr; + xr = a[16]; + a[16] += a[15]; + a[15] -= xr; + xr = a[17]; + a[17] += a[14]; + a[14] -= xr; + xr = a[8]; + a[8] += a[23]; + a[23] -= xr; + xr = a[9]; + a[9] += a[22]; + a[22] -= xr; + xr = a[24]; + a[24] += a[7]; + a[7] -= xr; + xr = a[25]; + a[25] += a[6]; + a[6] -= xr; + xr = a[4]; + a[4] += a[27]; + a[27] -= xr; + xr = a[5]; + a[5] += a[26]; + a[26] -= xr; + xr = a[20]; + a[20] += a[11]; + a[11] -= xr; + xr = a[21]; + a[21] += a[10]; + a[10] -= xr; + xr = a[12]; + a[12] += a[19]; + a[19] -= xr; + xr = a[13]; + a[13] += a[18]; + a[18] -= xr; + xr = a[28]; + a[28] += a[3]; + a[3] -= xr; + xr = a[29]; + a[29] += a[2]; + a[2] -= xr; + } + } + + /** + * Function: Calculation of the MDCT In the case of long blocks (type 0,1,3) + * there are 36 coefficents in the time domain and 18 in the frequency + * domain.
+ * In the case of short blocks (type 2) there are 3 transformations with + * short length. This leads to 12 coefficents in the time and 6 in the + * frequency domain. In this case the results are stored side by side in the + * vector out[]. + * + * New layer3 + */ + function mdct_short(inout, inoutPos) { + for (var l = 0; l < 3; l++) { + var tc0, tc1, tc2, ts0, ts1, ts2; + + ts0 = inout[inoutPos + 2 * 3] * win[Encoder.SHORT_TYPE][0] + - inout[inoutPos + 5 * 3]; + tc0 = inout[inoutPos + 0 * 3] * win[Encoder.SHORT_TYPE][2] + - inout[inoutPos + 3 * 3]; + tc1 = ts0 + tc0; + tc2 = ts0 - tc0; + + ts0 = inout[inoutPos + 5 * 3] * win[Encoder.SHORT_TYPE][0] + + inout[inoutPos + 2 * 3]; + tc0 = inout[inoutPos + 3 * 3] * win[Encoder.SHORT_TYPE][2] + + inout[inoutPos + 0 * 3]; + ts1 = ts0 + tc0; + ts2 = -ts0 + tc0; + + tc0 = (inout[inoutPos + 1 * 3] * win[Encoder.SHORT_TYPE][1] - inout[inoutPos + 4 * 3]) * 2.069978111953089e-11; + /* + * tritab_s [ 1 ] + */ + ts0 = (inout[inoutPos + 4 * 3] * win[Encoder.SHORT_TYPE][1] + inout[inoutPos + 1 * 3]) * 2.069978111953089e-11; + /* + * tritab_s [ 1 ] + */ + inout[inoutPos + 3 * 0] = tc1 * 1.907525191737280e-11 + tc0; + /* + * tritab_s[ 2 ] + */ + inout[inoutPos + 3 * 5] = -ts1 * 1.907525191737280e-11 + ts0; + /* + * tritab_s[0 ] + */ + tc2 = tc2 * 0.86602540378443870761 * 1.907525191737281e-11; + /* + * tritab_s[ 2] + */ + ts1 = ts1 * 0.5 * 1.907525191737281e-11 + ts0; + inout[inoutPos + 3 * 1] = tc2 - ts1; + inout[inoutPos + 3 * 2] = tc2 + ts1; + + tc1 = tc1 * 0.5 * 1.907525191737281e-11 - tc0; + ts2 = ts2 * 0.86602540378443870761 * 1.907525191737281e-11; + /* + * tritab_s[ 0] + */ + inout[inoutPos + 3 * 3] = tc1 + ts2; + inout[inoutPos + 3 * 4] = tc1 - ts2; + + inoutPos++; + } + } + + function mdct_long(out, outPos, _in) { + var ct, st; + { + var tc1, tc2, tc3, tc4, ts5, ts6, ts7, ts8; + /* 1,2, 5,6, 9,10, 13,14, 17 */ + tc1 = _in[17] - _in[9]; + tc3 = _in[15] - _in[11]; + tc4 = _in[14] - _in[12]; + ts5 = _in[0] + _in[8]; + ts6 = _in[1] + _in[7]; + ts7 = _in[2] + _in[6]; + ts8 = _in[3] + _in[5]; + + out[outPos + 17] = (ts5 + ts7 - ts8) - (ts6 - _in[4]); + st = (ts5 + ts7 - ts8) * cx[12 + 7] + (ts6 - _in[4]); + ct = (tc1 - tc3 - tc4) * cx[12 + 6]; + out[outPos + 5] = ct + st; + out[outPos + 6] = ct - st; + + tc2 = (_in[16] - _in[10]) * cx[12 + 6]; + ts6 = ts6 * cx[12 + 7] + _in[4]; + ct = tc1 * cx[12 + 0] + tc2 + tc3 * cx[12 + 1] + tc4 * cx[12 + 2]; + st = -ts5 * cx[12 + 4] + ts6 - ts7 * cx[12 + 5] + ts8 * cx[12 + 3]; + out[outPos + 1] = ct + st; + out[outPos + 2] = ct - st; + + ct = tc1 * cx[12 + 1] - tc2 - tc3 * cx[12 + 2] + tc4 * cx[12 + 0]; + st = -ts5 * cx[12 + 5] + ts6 - ts7 * cx[12 + 3] + ts8 * cx[12 + 4]; + out[outPos + 9] = ct + st; + out[outPos + 10] = ct - st; + + ct = tc1 * cx[12 + 2] - tc2 + tc3 * cx[12 + 0] - tc4 * cx[12 + 1]; + st = ts5 * cx[12 + 3] - ts6 + ts7 * cx[12 + 4] - ts8 * cx[12 + 5]; + out[outPos + 13] = ct + st; + out[outPos + 14] = ct - st; + } + { + var ts1, ts2, ts3, ts4, tc5, tc6, tc7, tc8; + + ts1 = _in[8] - _in[0]; + ts3 = _in[6] - _in[2]; + ts4 = _in[5] - _in[3]; + tc5 = _in[17] + _in[9]; + tc6 = _in[16] + _in[10]; + tc7 = _in[15] + _in[11]; + tc8 = _in[14] + _in[12]; + + out[outPos + 0] = (tc5 + tc7 + tc8) + (tc6 + _in[13]); + ct = (tc5 + tc7 + tc8) * cx[12 + 7] - (tc6 + _in[13]); + st = (ts1 - ts3 + ts4) * cx[12 + 6]; + out[outPos + 11] = ct + st; + out[outPos + 12] = ct - st; + + ts2 = (_in[7] - _in[1]) * cx[12 + 6]; + tc6 = _in[13] - tc6 * cx[12 + 7]; + ct = tc5 * cx[12 + 3] - tc6 + tc7 * cx[12 + 4] + tc8 * cx[12 + 5]; + st = ts1 * cx[12 + 2] + ts2 + ts3 * cx[12 + 0] + ts4 * cx[12 + 1]; + out[outPos + 3] = ct + st; + out[outPos + 4] = ct - st; + + ct = -tc5 * cx[12 + 5] + tc6 - tc7 * cx[12 + 3] - tc8 * cx[12 + 4]; + st = ts1 * cx[12 + 1] + ts2 - ts3 * cx[12 + 2] - ts4 * cx[12 + 0]; + out[outPos + 7] = ct + st; + out[outPos + 8] = ct - st; + + ct = -tc5 * cx[12 + 4] + tc6 - tc7 * cx[12 + 5] - tc8 * cx[12 + 3]; + st = ts1 * cx[12 + 0] - ts2 + ts3 * cx[12 + 1] - ts4 * cx[12 + 2]; + out[outPos + 15] = ct + st; + out[outPos + 16] = ct - st; + } + } + + this.mdct_sub48 = function(gfc, w0, w1) { + var wk = w0; + var wkPos = 286; + /* thinking cache performance, ch->gr loop is better than gr->ch loop */ + for (var ch = 0; ch < gfc.channels_out; ch++) { + for (var gr = 0; gr < gfc.mode_gr; gr++) { + var band; + var gi = (gfc.l3_side.tt[gr][ch]); + var mdct_enc = gi.xr; + var mdct_encPos = 0; + var samp = gfc.sb_sample[ch][1 - gr]; + var sampPos = 0; + + for (var k = 0; k < 18 / 2; k++) { + window_subband(wk, wkPos, samp[sampPos]); + window_subband(wk, wkPos + 32, samp[sampPos + 1]); + sampPos += 2; + wkPos += 64; + /* + * Compensate for inversion in the analysis filter + */ + for (band = 1; band < 32; band += 2) { + samp[sampPos - 1][band] *= -1; + } + } + + /* + * Perform imdct of 18 previous subband samples + 18 current + * subband samples + */ + for (band = 0; band < 32; band++, mdct_encPos += 18) { + var type = gi.block_type; + var band0 = gfc.sb_sample[ch][gr]; + var band1 = gfc.sb_sample[ch][1 - gr]; + if (gi.mixed_block_flag != 0 && band < 2) + type = 0; + if (gfc.amp_filter[band] < 1e-12) { + Arrays.fill(mdct_enc, mdct_encPos + 0, + mdct_encPos + 18, 0); + } else { + if (gfc.amp_filter[band] < 1.0) { + abort();//fix cc 精简 + } + if (type == Encoder.SHORT_TYPE) { + for (var k = -NS / 4; k < 0; k++) { + var w = win[Encoder.SHORT_TYPE][k + 3]; + mdct_enc[mdct_encPos + k * 3 + 9] = band0[9 + k][order[band]] + * w - band0[8 - k][order[band]]; + mdct_enc[mdct_encPos + k * 3 + 18] = band0[14 - k][order[band]] + * w + band0[15 + k][order[band]]; + mdct_enc[mdct_encPos + k * 3 + 10] = band0[15 + k][order[band]] + * w - band0[14 - k][order[band]]; + mdct_enc[mdct_encPos + k * 3 + 19] = band1[2 - k][order[band]] + * w + band1[3 + k][order[band]]; + mdct_enc[mdct_encPos + k * 3 + 11] = band1[3 + k][order[band]] + * w - band1[2 - k][order[band]]; + mdct_enc[mdct_encPos + k * 3 + 20] = band1[8 - k][order[band]] + * w + band1[9 + k][order[band]]; + } + mdct_short(mdct_enc, mdct_encPos); + } else { + var work = new_float(18); + for (var k = -NL / 4; k < 0; k++) { + var a, b; + a = win[type][k + 27] + * band1[k + 9][order[band]] + + win[type][k + 36] + * band1[8 - k][order[band]]; + b = win[type][k + 9] + * band0[k + 9][order[band]] + - win[type][k + 18] + * band0[8 - k][order[band]]; + work[k + 9] = a - b * tantab_l[3 + k + 9]; + work[k + 18] = a * tantab_l[3 + k + 9] + b; + } + + mdct_long(mdct_enc, mdct_encPos, work); + } + } + /* + * Perform aliasing reduction butterfly + */ + if (type != Encoder.SHORT_TYPE && band != 0) { + for (var k = 7; k >= 0; --k) { + var bu, bd; + bu = mdct_enc[mdct_encPos + k] * ca[20 + k] + + mdct_enc[mdct_encPos + -1 - k] + * cs[28 + k]; + bd = mdct_enc[mdct_encPos + k] * cs[28 + k] + - mdct_enc[mdct_encPos + -1 - k] + * ca[20 + k]; + + mdct_enc[mdct_encPos + -1 - k] = bu; + mdct_enc[mdct_encPos + k] = bd; + } + } + } + } + wk = w1; + wkPos = 286; + if (gfc.mode_gr == 1) { + for (var i = 0; i < 18; i++) { + System.arraycopy(gfc.sb_sample[ch][1][i], 0, + gfc.sb_sample[ch][0][i], 0, 32); + } + } + } + } +} + +//package mp3; + + +function III_psy_ratio() { + this.thm = new III_psy_xmin(); + this.en = new III_psy_xmin(); +} + + +/** + * ENCDELAY The encoder delay. + * + * Minimum allowed is MDCTDELAY (see below) + * + * The first 96 samples will be attenuated, so using a value less than 96 + * will result in corrupt data for the first 96-ENCDELAY samples. + * + * suggested: 576 set to 1160 to sync with FhG. + */ +Encoder.ENCDELAY = 576; +/** + * make sure there is at least one complete frame after the last frame + * containing real data + * + * Using a value of 288 would be sufficient for a a very sophisticated + * decoder that can decode granule-by-granule instead of frame by frame. But + * lets not assume this, and assume the decoder will not decode frame N + * unless it also has data for frame N+1 + */ +Encoder.POSTDELAY = 1152; + +/** + * delay of the MDCT used in mdct.c original ISO routines had a delay of + * 528! Takehiro's routines: + */ +Encoder.MDCTDELAY = 48; +Encoder.FFTOFFSET = (224 + Encoder.MDCTDELAY); + +/** + * Most decoders, including the one we use, have a delay of 528 samples. + */ +Encoder.DECDELAY = 528; + +/** + * number of subbands + */ +Encoder.SBLIMIT = 32; + +/** + * parition bands bands + */ +Encoder.CBANDS = 64; + +/** + * number of critical bands/scale factor bands where masking is computed + */ +Encoder.SBPSY_l = 21; +Encoder.SBPSY_s = 12; + +/** + * total number of scalefactor bands encoded + */ +Encoder.SBMAX_l = 22; +Encoder.SBMAX_s = 13; +Encoder.PSFB21 = 6; +Encoder.PSFB12 = 6; + +/** + * FFT sizes + */ +Encoder.BLKSIZE = 1024; +Encoder.HBLKSIZE = (Encoder.BLKSIZE / 2 + 1); +Encoder.BLKSIZE_s = 256; +Encoder.HBLKSIZE_s = (Encoder.BLKSIZE_s / 2 + 1); + +Encoder.NORM_TYPE = 0; +Encoder.START_TYPE = 1; +Encoder.SHORT_TYPE = 2; +Encoder.STOP_TYPE = 3; + +/** + *
+ * Mode Extention:
+ * When we are in stereo mode, there are 4 possible methods to store these
+ * two channels. The stereo modes -m? are using a subset of them.
+ *
+ *  -ms: MPG_MD_LR_LR
+ *  -mj: MPG_MD_LR_LR and MPG_MD_MS_LR
+ *  -mf: MPG_MD_MS_LR
+ *  -mi: all
+ * 
+ */ +Encoder.MPG_MD_LR_LR = 0; +Encoder.MPG_MD_LR_I = 1; +Encoder.MPG_MD_MS_LR = 2; +Encoder.MPG_MD_MS_I = 3; + +Encoder.fircoef = [-0.0207887 * 5, -0.0378413 * 5, + -0.0432472 * 5, -0.031183 * 5, 7.79609e-18 * 5, 0.0467745 * 5, + 0.10091 * 5, 0.151365 * 5, 0.187098 * 5]; + +function Encoder() { + + var FFTOFFSET = Encoder.FFTOFFSET; + var MPG_MD_MS_LR = Encoder.MPG_MD_MS_LR; + //BitStream bs; + //PsyModel psy; + //VBRTag vbr; + //QuantizePVT qupvt; + var bs = null; + this.psy = null; + var psy = null; + var vbr = null; + var qupvt = null; + + //public final void setModules(BitStream bs, PsyModel psy, QuantizePVT qupvt, + // VBRTag vbr) { + this.setModules = function (_bs, _psy, _qupvt, _vbr) { + bs = _bs; + this.psy = _psy; + psy = _psy; + vbr = _vbr; + qupvt = _qupvt; + }; + + var newMDCT = new NewMDCT(); + + /*********************************************************************** + * + * encoder and decoder delays + * + ***********************************************************************/ + + /** + *
+     * layer III enc->dec delay:  1056 (1057?)   (observed)
+     * layer  II enc->dec delay:   480  (481?)   (observed)
+     *
+     * polyphase 256-16             (dec or enc)        = 240
+     * mdct      256+32  (9*32)     (dec or enc)        = 288
+     * total:    512+16
+     *
+     * My guess is that delay of polyphase filterbank is actualy 240.5
+     * (there are technical reasons for this, see postings in mp3encoder).
+     * So total Encode+Decode delay = ENCDELAY + 528 + 1
+     * 
+ */ + + + /** + * auto-adjust of ATH, useful for low volume Gabriel Bouvigne 3 feb 2001 + * + * modifies some values in gfp.internal_flags.ATH (gfc.ATH) + */ +//private void adjust_ATH(final LameInternalFlags gfc) { + function adjust_ATH(gfc) { + var gr2_max, max_pow; + + if (gfc.ATH.useAdjust == 0) { + gfc.ATH.adjust = 1.0; + /* no adjustment */ + return; + } + + /* jd - 2001 mar 12, 27, jun 30 */ + /* loudness based on equal loudness curve; */ + /* use granule with maximum combined loudness */ + max_pow = gfc.loudness_sq[0][0]; + gr2_max = gfc.loudness_sq[1][0]; + if (gfc.channels_out == 2) { + abort();//fix cc 精简 + } else { + max_pow += max_pow; + gr2_max += gr2_max; + } + if (gfc.mode_gr == 2) { + max_pow = Math.max(max_pow, gr2_max); + } + max_pow *= 0.5; + /* max_pow approaches 1.0 for full band noise */ + + /* jd - 2001 mar 31, jun 30 */ + /* user tuning of ATH adjustment region */ + max_pow *= gfc.ATH.aaSensitivityP; + + /* + * adjust ATH depending on range of maximum value + */ + + /* jd - 2001 feb27, mar12,20, jun30, jul22 */ + /* continuous curves based on approximation */ + /* to GB's original values. */ + /* For an increase in approximate loudness, */ + /* set ATH adjust to adjust_limit immediately */ + /* after a delay of one frame. */ + /* For a loudness decrease, reduce ATH adjust */ + /* towards adjust_limit gradually. */ + /* max_pow is a loudness squared or a power. */ + if (max_pow > 0.03125) { /* ((1 - 0.000625)/ 31.98) from curve below */ + if (gfc.ATH.adjust >= 1.0) { + gfc.ATH.adjust = 1.0; + } else { + /* preceding frame has lower ATH adjust; */ + /* ascend only to the preceding adjust_limit */ + /* in case there is leading low volume */ + if (gfc.ATH.adjust < gfc.ATH.adjustLimit) { + gfc.ATH.adjust = gfc.ATH.adjustLimit; + } + } + gfc.ATH.adjustLimit = 1.0; + } else { /* adjustment curve */ + /* about 32 dB maximum adjust (0.000625) */ + var adj_lim_new = 31.98 * max_pow + 0.000625; + if (gfc.ATH.adjust >= adj_lim_new) { /* descend gradually */ + gfc.ATH.adjust *= adj_lim_new * 0.075 + 0.925; + if (gfc.ATH.adjust < adj_lim_new) { /* stop descent */ + gfc.ATH.adjust = adj_lim_new; + } + } else { /* ascend */ + if (gfc.ATH.adjustLimit >= adj_lim_new) { + gfc.ATH.adjust = adj_lim_new; + } else { + /* preceding frame has lower ATH adjust; */ + /* ascend only to the preceding adjust_limit */ + if (gfc.ATH.adjust < gfc.ATH.adjustLimit) { + gfc.ATH.adjust = gfc.ATH.adjustLimit; + } + } + } + gfc.ATH.adjustLimit = adj_lim_new; + } + } + + /** + *
+     *  some simple statistics
+     *
+     *  bitrate index 0: free bitrate . not allowed in VBR mode
+     *  : bitrates, kbps depending on MPEG version
+     *  bitrate index 15: forbidden
+     *
+     *  mode_ext:
+     *  0:  LR
+     *  1:  LR-i
+     *  2:  MS
+     *  3:  MS-i
+     * 
+ */ + function updateStats(gfc) { + var gr, ch; + + /* count bitrate indices */ + gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][4]++; + gfc.bitrate_stereoMode_Hist[15][4]++; + + /* count 'em for every mode extension in case of 2 channel encoding */ + if (gfc.channels_out == 2) { + abort();//fix cc 精简 + } + for (gr = 0; gr < gfc.mode_gr; ++gr) { + for (ch = 0; ch < gfc.channels_out; ++ch) { + var bt = gfc.l3_side.tt[gr][ch].block_type | 0; + if (gfc.l3_side.tt[gr][ch].mixed_block_flag != 0) + bt = 4; + gfc.bitrate_blockType_Hist[gfc.bitrate_index][bt]++; + gfc.bitrate_blockType_Hist[gfc.bitrate_index][5]++; + gfc.bitrate_blockType_Hist[15][bt]++; + gfc.bitrate_blockType_Hist[15][5]++; + } + } + } + + function lame_encode_frame_init(gfp, inbuf) { + var gfc = gfp.internal_flags; + + var ch, gr; + + if (gfc.lame_encode_frame_init == 0) { + /* prime the MDCT/polyphase filterbank with a short block */ + var i, j; + var primebuff0 = new_float(286 + 1152 + 576); + var primebuff1 = new_float(286 + 1152 + 576); + gfc.lame_encode_frame_init = 1; + for (i = 0, j = 0; i < 286 + 576 * (1 + gfc.mode_gr); ++i) { + if (i < 576 * gfc.mode_gr) { + primebuff0[i] = 0; + if (gfc.channels_out == 2) + primebuff1[i] = 0; + } else { + primebuff0[i] = inbuf[0][j]; + if (gfc.channels_out == 2) + primebuff1[i] = inbuf[1][j]; + ++j; + } + } + /* polyphase filtering / mdct */ + for (gr = 0; gr < gfc.mode_gr; gr++) { + for (ch = 0; ch < gfc.channels_out; ch++) { + gfc.l3_side.tt[gr][ch].block_type = Encoder.SHORT_TYPE; + } + } + newMDCT.mdct_sub48(gfc, primebuff0, primebuff1); + + /* check FFT will not use a negative starting offset */ + /* check if we have enough data for FFT */ + /* check if we have enough data for polyphase filterbank */ + } + + } + + /** + *
+     * encodeframe()           Layer 3
+     *
+     * encode a single frame
+     *
+     *
+     *    lame_encode_frame()
+     *
+     *
+     *                           gr 0            gr 1
+     *    inbuf:           |--------------|--------------|--------------|
+     *
+     *
+     *    Polyphase (18 windows, each shifted 32)
+     *    gr 0:
+     *    window1          <----512---.
+     *    window18                 <----512---.
+     *
+     *    gr 1:
+     *    window1                         <----512---.
+     *    window18                                <----512---.
+     *
+     *
+     *
+     *    MDCT output:  |--------------|--------------|--------------|
+     *
+     *    FFT's                    <---------1024---------.
+     *                                             <---------1024-------.
+     *
+     *
+     *
+     *        inbuf = buffer of PCM data size=MP3 framesize
+     *        encoder acts on inbuf[ch][0], but output is delayed by MDCTDELAY
+     *        so the MDCT coefficints are from inbuf[ch][-MDCTDELAY]
+     *
+     *        psy-model FFT has a 1 granule delay, so we feed it data for the
+     *        next granule.
+     *        FFT is centered over granule:  224+576+224
+     *        So FFT starts at:   576-224-MDCTDELAY
+     *
+     *        MPEG2:  FFT ends at:  BLKSIZE+576-224-MDCTDELAY      (1328)
+     *        MPEG1:  FFT ends at:  BLKSIZE+2*576-224-MDCTDELAY    (1904)
+     *
+     *        MPEG2:  polyphase first window:  [0..511]
+     *                          18th window:   [544..1055]          (1056)
+     *        MPEG1:            36th window:   [1120..1631]         (1632)
+     *                data needed:  512+framesize-32
+     *
+     *        A close look newmdct.c shows that the polyphase filterbank
+     *        only uses data from [0..510] for each window.  Perhaps because the window
+     *        used by the filterbank is zero for the last point, so Takehiro's
+     *        code doesn't bother to compute with it.
+     *
+     *        FFT starts at 576-224-MDCTDELAY (304)  = 576-FFTOFFSET
+     *
+     * 
+ */ + + + this.lame_encode_mp3_frame = function (gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) { + var mp3count; + var masking_LR = new_array_n([2, 2]); + /* + * LR masking & + * energy + */ + masking_LR[0][0] = new III_psy_ratio(); + masking_LR[0][1] = new III_psy_ratio(); + masking_LR[1][0] = new III_psy_ratio(); + masking_LR[1][1] = new III_psy_ratio(); + var masking_MS = new_array_n([2, 2]); + /* MS masking & energy */ + masking_MS[0][0] = new III_psy_ratio(); + masking_MS[0][1] = new III_psy_ratio(); + masking_MS[1][0] = new III_psy_ratio(); + masking_MS[1][1] = new III_psy_ratio(); + //III_psy_ratio masking[][]; + var masking; + /* pointer to selected maskings */ + var inbuf = [null, null]; + var gfc = gfp.internal_flags; + + var tot_ener = new_float_n([2, 4]); + var ms_ener_ratio = [.5, .5]; + var pe = [[0., 0.], [0., 0.]]; + var pe_MS = [[0., 0.], [0., 0.]]; + +//float[][] pe_use; + var pe_use; + + var ch, gr; + + inbuf[0] = inbuf_l; + inbuf[1] = inbuf_r; + + if (gfc.lame_encode_frame_init == 0) { + /* first run? */ + lame_encode_frame_init(gfp, inbuf); + + } + + /********************** padding *****************************/ + /** + *
+         * padding method as described in
+         * "MPEG-Layer3 / Bitstream Syntax and Decoding"
+         * by Martin Sieler, Ralph Sperschneider
+         *
+         * note: there is no padding for the very first frame
+         *
+         * Robert Hegemann 2000-06-22
+         * 
+ */ + gfc.padding = 0; + if ((gfc.slot_lag -= gfc.frac_SpF) < 0) {//不可精简 + gfc.slot_lag += gfp.out_samplerate; + gfc.padding = 1; + } + + /**************************************** + * Stage 1: psychoacoustic model * + ****************************************/ + + if (gfc.psymodel != 0) { + /* + * psychoacoustic model psy model has a 1 granule (576) delay that + * we must compensate for (mt 6/99). + */ + var ret; + var bufp = [null, null]; + /* address of beginning of left & right granule */ + var bufpPos = 0; + /* address of beginning of left & right granule */ + var blocktype = new_int(2); + + for (gr = 0; gr < gfc.mode_gr; gr++) { + + for (ch = 0; ch < gfc.channels_out; ch++) { + bufp[ch] = inbuf[ch]; + bufpPos = 576 + gr * 576 - Encoder.FFTOFFSET; + } + if (gfp.VBR == VbrMode.vbr_mtrh || gfp.VBR == VbrMode.vbr_mt) { + abort();//fix cc 精简 + } else { + ret = psy.L3psycho_anal_ns(gfp, bufp, bufpPos, gr, + masking_LR, masking_MS, pe[gr], pe_MS[gr], + tot_ener[gr], blocktype); + } + if (ret != 0) + return -4; + + if (gfp.mode == MPEGMode.JOINT_STEREO) { + abort();//fix cc 精简 stereo + } + + /* block type flags */ + for (ch = 0; ch < gfc.channels_out; ch++) { + var cod_info = gfc.l3_side.tt[gr][ch]; + cod_info.block_type = blocktype[ch]; + cod_info.mixed_block_flag = 0; + } + } + } else { + abort();//fix cc 精简 + } + + /* auto-adjust of ATH, useful for low volume */ + adjust_ATH(gfc); + + /**************************************** + * Stage 2: MDCT * + ****************************************/ + + /* polyphase filtering / mdct */ + newMDCT.mdct_sub48(gfc, inbuf[0], inbuf[1]); + + /**************************************** + * Stage 3: MS/LR decision * + ****************************************/ + + /* Here will be selected MS or LR coding of the 2 stereo channels */ + gfc.mode_ext = Encoder.MPG_MD_LR_LR; + + if (gfp.force_ms) { + gfc.mode_ext = Encoder.MPG_MD_MS_LR; + } else if (gfp.mode == MPEGMode.JOINT_STEREO) { + abort();//fix cc 精简 stereo + } + + /* bit and noise allocation */ + if (gfc.mode_ext == MPG_MD_MS_LR) { + masking = masking_MS; + /* use MS masking */ + pe_use = pe_MS; + } else { + masking = masking_LR; + /* use LR masking */ + pe_use = pe; + } + + /* copy data for MP3 frame analyzer */ + if (gfp.analysis && gfc.pinfo != null) { + abort();//fix cc 精简 + } + + /**************************************** + * Stage 4: quantization loop * + ****************************************/ + + if (gfp.VBR == VbrMode.vbr_off || gfp.VBR == VbrMode.vbr_abr) { + + var i; + var f; + + for (i = 0; i < 18; i++) + gfc.nsPsy.pefirbuf[i] = gfc.nsPsy.pefirbuf[i + 1]; + + f = 0.0; + for (gr = 0; gr < gfc.mode_gr; gr++) + for (ch = 0; ch < gfc.channels_out; ch++) + f += pe_use[gr][ch]; + gfc.nsPsy.pefirbuf[18] = f; + + f = gfc.nsPsy.pefirbuf[9]; + for (i = 0; i < 9; i++) + f += (gfc.nsPsy.pefirbuf[i] + gfc.nsPsy.pefirbuf[18 - i]) + * Encoder.fircoef[i]; + + f = (670 * 5 * gfc.mode_gr * gfc.channels_out) / f; + for (gr = 0; gr < gfc.mode_gr; gr++) { + for (ch = 0; ch < gfc.channels_out; ch++) { + pe_use[gr][ch] *= f; + } + } + } + gfc.iteration_loop.iteration_loop(gfp, pe_use, ms_ener_ratio, masking); + + /**************************************** + * Stage 5: bitstream formatting * + ****************************************/ + + /* write the frame to the bitstream */ + bs.format_bitstream(gfp); + + /* copy mp3 bit buffer into array */ + mp3count = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 1); + + if (gfp.bWriteVbrTag) + vbr.addVbrFrame(gfp); + + if (gfp.analysis && gfc.pinfo != null) { + abort();//fix cc 精简 + } + + updateStats(gfc); + + return mp3count; + } +} + + +//package mp3; + +function VBRSeekInfo() { + /** + * What we have seen so far. + */ + this.sum = 0; + /** + * How many frames we have seen in this chunk. + */ + this.seen = 0; + /** + * How many frames we want to collect into one chunk. + */ + this.want = 0; + /** + * Actual position in our bag. + */ + this.pos = 0; + /** + * Size of our bag. + */ + this.size = 0; + /** + * Pointer to our bag. + */ + this.bag = null; + this.nVbrNumFrames = 0; + this.nBytesWritten = 0; + /* VBR tag data */ + this.TotalFrameSize = 0; +} + + + +function IIISideInfo() { + this.tt = [[null, null], [null, null]]; + this.main_data_begin = 0; + this.private_bits = 0; + this.resvDrain_pre = 0; + this.resvDrain_post = 0; + this.scfsi = [new_int(4), new_int(4)]; + + for (var gr = 0; gr < 2; gr++) { + for (var ch = 0; ch < 2; ch++) { + this.tt[gr][ch] = new GrInfo(); + } + } +} + + +function III_psy_xmin() { + this.l = new_float(Encoder.SBMAX_l); + this.s = new_float_n([Encoder.SBMAX_s, 3]); + + var self = this; + this.assign = function (iii_psy_xmin) { + System.arraycopy(iii_psy_xmin.l, 0, self.l, 0, Encoder.SBMAX_l); + for (var i = 0; i < Encoder.SBMAX_s; i++) { + for (var j = 0; j < 3; j++) { + self.s[i][j] = iii_psy_xmin.s[i][j]; + } + } + } +} + + + +//package mp3; + +/** + * Variables used for --nspsytune + * + * @author Ken + * + */ +function NsPsy() { + this.last_en_subshort = new_float_n([4, 9]); + this.lastAttacks = new_int(4); + this.pefirbuf = new_float(19); + this.longfact = new_float(Encoder.SBMAX_l); + this.shortfact = new_float(Encoder.SBMAX_s); + + /** + * short block tuning + */ + this.attackthre = 0.; + this.attackthre_s = 0.; +} + + + + +LameInternalFlags.MFSIZE = (3 * 1152 + Encoder.ENCDELAY - Encoder.MDCTDELAY); +LameInternalFlags.MAX_HEADER_BUF = 256; +LameInternalFlags.MAX_BITS_PER_CHANNEL = 4095; +LameInternalFlags.MAX_BITS_PER_GRANULE = 7680; +LameInternalFlags.BPC = 320; + +function LameInternalFlags() { + var MAX_HEADER_LEN = 40; + + + /******************************************************************** + * internal variables NOT set by calling program, and should not be * + * modified by the calling program * + ********************************************************************/ + + /** + * Some remarks to the Class_ID field: The Class ID is an Identifier for a + * pointer to this struct. It is very unlikely that a pointer to + * lame_global_flags has the same 32 bits in it's structure (large and other + * special properties, for instance prime). + * + * To test that the structure is right and initialized, use: if ( gfc . + * Class_ID == LAME_ID ) ... Other remark: If you set a flag to 0 for uninit + * data and 1 for init data, the right test should be "if (flag == 1)" and + * NOT "if (flag)". Unintended modification of this element will be + * otherwise misinterpreted as an init. + */ + this.Class_ID = 0; + + this.lame_encode_frame_init = 0; + this.iteration_init_init = 0; + this.fill_buffer_resample_init = 0; + + //public float mfbuf[][] = new float[2][MFSIZE]; + this.mfbuf = new_float_n([2, LameInternalFlags.MFSIZE]); + + /** + * granules per frame + */ + this.mode_gr = 0; + /** + * number of channels in the input data stream (PCM or decoded PCM) + */ + this.channels_in = 0; + /** + * number of channels in the output data stream (not used for decoding) + */ + this.channels_out = 0; + /** + * input_samp_rate/output_samp_rate + */ + //public double resample_ratio; + this.resample_ratio = 0.; + + this.mf_samples_to_encode = 0; + this.mf_size = 0; + /** + * min bitrate index + */ + this.VBR_min_bitrate = 0; + /** + * max bitrate index + */ + this.VBR_max_bitrate = 0; + this.bitrate_index = 0; + this.samplerate_index = 0; + this.mode_ext = 0; + + /* lowpass and highpass filter control */ + /** + * normalized frequency bounds of passband + */ + this.lowpass1 = 0.; + this.lowpass2 = 0.; + /** + * normalized frequency bounds of passband + */ + this.highpass1 = 0.; + this.highpass2 = 0.; + + /** + * 0 = none 1 = ISO AAC model 2 = allow scalefac_select=1 + */ + this.noise_shaping = 0; + + /** + * 0 = ISO model: amplify all distorted bands
+ * 1 = amplify within 50% of max (on db scale)
+ * 2 = amplify only most distorted band
+ * 3 = method 1 and refine with method 2
+ */ + this.noise_shaping_amp = 0; + /** + * 0 = no substep
+ * 1 = use substep shaping at last step(VBR only)
+ * (not implemented yet)
+ * 2 = use substep inside loop
+ * 3 = use substep inside loop and last step
+ */ + this.substep_shaping = 0; + + /** + * 1 = gpsycho. 0 = none + */ + this.psymodel = 0; + /** + * 0 = stop at over=0, all scalefacs amplified or
+ * a scalefac has reached max value
+ * 1 = stop when all scalefacs amplified or a scalefac has reached max value
+ * 2 = stop when all scalefacs amplified + */ + this.noise_shaping_stop = 0; + + /** + * 0 = no, 1 = yes + */ + this.subblock_gain = 0; + /** + * 0 = no. 1=outside loop 2=inside loop(slow) + */ + this.use_best_huffman = 0; + + /** + * 0 = stop early after 0 distortion found. 1 = full search + */ + this.full_outer_loop = 0; + + //public IIISideInfo l3_side = new IIISideInfo(); + this.l3_side = new IIISideInfo(); + this.ms_ratio = new_float(2); + + /* used for padding */ + /** + * padding for the current frame? + */ + this.padding = 0; + this.frac_SpF = 0; + this.slot_lag = 0; + + /** + * optional ID3 tags + */ + //public ID3TagSpec tag_spec; + this.tag_spec = null; + this.nMusicCRC = 0; + + /* variables used by Quantize */ + //public int OldValue[] = new int[2]; + this.OldValue = new_int(2); + //public int CurrentStep[] = new int[2]; + this.CurrentStep = new_int(2); + + this.masking_lower = 0.; + //public int bv_scf[] = new int[576]; + this.bv_scf = new_int(576); + //public int pseudohalf[] = new int[L3Side.SFBMAX]; + this.pseudohalf = new_int(L3Side.SFBMAX); + + /** + * will be set in lame_init_params + */ + this.sfb21_extra = false; + + /* BPC = maximum number of filter convolution windows to precompute */ + //public float[][] inbuf_old = new float[2][]; + this.inbuf_old = new Array(2); + //public float[][] blackfilt = new float[2 * BPC + 1][]; + this.blackfilt = new Array(2 * LameInternalFlags.BPC + 1); + //public double itime[] = new double[2]; + this.itime = new_double(2); + this.sideinfo_len = 0; + + /* variables for newmdct.c */ + //public float sb_sample[][][][] = new float[2][2][18][Encoder.SBLIMIT]; + this.sb_sample = new_float_n([2, 2, 18, Encoder.SBLIMIT]); + this.amp_filter = new_float(32); + + /* variables for BitStream */ + + /** + *
+     * mpeg1: buffer=511 bytes  smallest frame: 96-38(sideinfo)=58
+     * max number of frames in reservoir:  8
+     * mpeg2: buffer=255 bytes.  smallest frame: 24-23bytes=1
+     * with VBR, if you are encoding all silence, it is possible to
+     * have 8kbs/24khz frames with 1byte of data each, which means we need
+     * to buffer up to 255 headers!
+     * 
+ */ + /** + * also, max_header_buf has to be a power of two + */ + /** + * max size of header is 38 + */ + + function Header() { + this.write_timing = 0; + this.ptr = 0; + //public byte buf[] = new byte[MAX_HEADER_LEN]; + this.buf = new_byte(MAX_HEADER_LEN); + } + + this.header = new Array(LameInternalFlags.MAX_HEADER_BUF); + + this.h_ptr = 0; + this.w_ptr = 0; + this.ancillary_flag = 0; + + /* variables for Reservoir */ + /** + * in bits + */ + this.ResvSize = 0; + /** + * in bits + */ + this.ResvMax = 0; + + //public ScaleFac scalefac_band = new ScaleFac(); + this.scalefac_band = new ScaleFac(); + + /* daa from PsyModel */ + /* The static variables "r", "phi_sav", "new", "old" and "oldest" have */ + /* to be remembered for the unpredictability measure. For "r" and */ + /* "phi_sav", the first index from the left is the channel select and */ + /* the second index is the "age" of the data. */ + this.minval_l = new_float(Encoder.CBANDS); + this.minval_s = new_float(Encoder.CBANDS); + this.nb_1 = new_float_n([4, Encoder.CBANDS]); + this.nb_2 = new_float_n([4, Encoder.CBANDS]); + this.nb_s1 = new_float_n([4, Encoder.CBANDS]); + this.nb_s2 = new_float_n([4, Encoder.CBANDS]); + this.s3_ss = null; + this.s3_ll = null; + this.decay = 0.; + + //public III_psy_xmin[] thm = new III_psy_xmin[4]; + //public III_psy_xmin[] en = new III_psy_xmin[4]; + this.thm = new Array(4); + this.en = new Array(4); + + /** + * fft and energy calculation + */ + this.tot_ener = new_float(4); + + /* loudness calculation (for adaptive threshold of hearing) */ + /** + * loudness^2 approx. per granule and channel + */ + this.loudness_sq = new_float_n([2, 2]); + /** + * account for granule delay of L3psycho_anal + */ + this.loudness_sq_save = new_float(2); + + /** + * Scale Factor Bands + */ + this.mld_l = new_float(Encoder.SBMAX_l); + this.mld_s = new_float(Encoder.SBMAX_s); + this.bm_l = new_int(Encoder.SBMAX_l); + this.bo_l = new_int(Encoder.SBMAX_l); + this.bm_s = new_int(Encoder.SBMAX_s); + this.bo_s = new_int(Encoder.SBMAX_s); + this.npart_l = 0; + this.npart_s = 0; + + this.s3ind = new_int_n([Encoder.CBANDS, 2]); + this.s3ind_s = new_int_n([Encoder.CBANDS, 2]); + + this.numlines_s = new_int(Encoder.CBANDS); + this.numlines_l = new_int(Encoder.CBANDS); + this.rnumlines_l = new_float(Encoder.CBANDS); + this.mld_cb_l = new_float(Encoder.CBANDS); + this.mld_cb_s = new_float(Encoder.CBANDS); + this.numlines_s_num1 = 0; + this.numlines_l_num1 = 0; + + /* ratios */ + this.pe = new_float(4); + this.ms_ratio_s_old = 0.; + this.ms_ratio_l_old = 0.; + this.ms_ener_ratio_old = 0.; + + /** + * block type + */ + this.blocktype_old = new_int(2); + + /** + * variables used for --nspsytune + */ + this.nsPsy = new NsPsy(); + + /** + * used for Xing VBR header + */ + this.VBR_seek_table = new VBRSeekInfo(); + + /** + * all ATH related stuff + */ + //public ATH ATH; + this.ATH = null; + + this.PSY = null; + + this.nogap_total = 0; + this.nogap_current = 0; + + /* ReplayGain */ + this.decode_on_the_fly = true; + this.findReplayGain = true; + this.findPeakSample = true; + this.PeakSample = 0.; + this.RadioGain = 0; + this.AudiophileGain = 0; + //public ReplayGain rgdata; + this.rgdata = null; + + /** + * gain change required for preventing clipping + */ + this.noclipGainChange = 0; + /** + * user-specified scale factor required for preventing clipping + */ + this.noclipScale = 0.; + + /* simple statistics */ + this.bitrate_stereoMode_Hist = new_int_n([16, 4 + 1]); + /** + * norm/start/short/stop/mixed(short)/sum + */ + this.bitrate_blockType_Hist = new_int_n([16, 4 + 1 + 1]); + + //public PlottingData pinfo; + //public MPGLib.mpstr_tag hip; + this.pinfo = null; + this.hip = null; + + this.in_buffer_nsamples = 0; + //public float[] in_buffer_0; + //public float[] in_buffer_1; + this.in_buffer_0 = null; + this.in_buffer_1 = null; + + //public IIterationLoop iteration_loop; + this.iteration_loop = null; + + for (var i = 0; i < this.en.length; i++) { + this.en[i] = new III_psy_xmin(); + } + for (var i = 0; i < this.thm.length; i++) { + this.thm[i] = new III_psy_xmin(); + } + for (var i = 0; i < this.header.length; i++) { + this.header[i] = new Header(); + } + +} + + + +function FFT() { + + var window = new_float(Encoder.BLKSIZE); + var window_s = new_float(Encoder.BLKSIZE_s / 2); + + var costab = [ + 9.238795325112867e-01, 3.826834323650898e-01, + 9.951847266721969e-01, 9.801714032956060e-02, + 9.996988186962042e-01, 2.454122852291229e-02, + 9.999811752826011e-01, 6.135884649154475e-03 + ]; + + function fht(fz, fzPos, n) { + var tri = 0; + var k4; + var fi; + var gi; + + n <<= 1; + /* to get BLKSIZE, because of 3DNow! ASM routine */ + var fn = fzPos + n; + k4 = 4; + do { + var s1, c1; + var i, k1, k2, k3, kx; + kx = k4 >> 1; + k1 = k4; + k2 = k4 << 1; + k3 = k2 + k1; + k4 = k2 << 1; + fi = fzPos; + gi = fi + kx; + do { + var f0, f1, f2, f3; + f1 = fz[fi + 0] - fz[fi + k1]; + f0 = fz[fi + 0] + fz[fi + k1]; + f3 = fz[fi + k2] - fz[fi + k3]; + f2 = fz[fi + k2] + fz[fi + k3]; + fz[fi + k2] = f0 - f2; + fz[fi + 0] = f0 + f2; + fz[fi + k3] = f1 - f3; + fz[fi + k1] = f1 + f3; + f1 = fz[gi + 0] - fz[gi + k1]; + f0 = fz[gi + 0] + fz[gi + k1]; + f3 = (Util.SQRT2 * fz[gi + k3]); + f2 = (Util.SQRT2 * fz[gi + k2]); + fz[gi + k2] = f0 - f2; + fz[gi + 0] = f0 + f2; + fz[gi + k3] = f1 - f3; + fz[gi + k1] = f1 + f3; + gi += k4; + fi += k4; + } while (fi < fn); + c1 = costab[tri + 0]; + s1 = costab[tri + 1]; + for (i = 1; i < kx; i++) { + var c2, s2; + c2 = 1 - (2 * s1) * s1; + s2 = (2 * s1) * c1; + fi = fzPos + i; + gi = fzPos + k1 - i; + do { + var a, b, g0, f0, f1, g1, f2, g2, f3, g3; + b = s2 * fz[fi + k1] - c2 * fz[gi + k1]; + a = c2 * fz[fi + k1] + s2 * fz[gi + k1]; + f1 = fz[fi + 0] - a; + f0 = fz[fi + 0] + a; + g1 = fz[gi + 0] - b; + g0 = fz[gi + 0] + b; + b = s2 * fz[fi + k3] - c2 * fz[gi + k3]; + a = c2 * fz[fi + k3] + s2 * fz[gi + k3]; + f3 = fz[fi + k2] - a; + f2 = fz[fi + k2] + a; + g3 = fz[gi + k2] - b; + g2 = fz[gi + k2] + b; + b = s1 * f2 - c1 * g3; + a = c1 * f2 + s1 * g3; + fz[fi + k2] = f0 - a; + fz[fi + 0] = f0 + a; + fz[gi + k3] = g1 - b; + fz[gi + k1] = g1 + b; + b = c1 * g2 - s1 * f3; + a = s1 * g2 + c1 * f3; + fz[gi + k2] = g0 - a; + fz[gi + 0] = g0 + a; + fz[fi + k3] = f1 - b; + fz[fi + k1] = f1 + b; + gi += k4; + fi += k4; + } while (fi < fn); + c2 = c1; + c1 = c2 * costab[tri + 0] - s1 * costab[tri + 1]; + s1 = c2 * costab[tri + 1] + s1 * costab[tri + 0]; + } + tri += 2; + } while (k4 < n); + } + + var rv_tbl = [0x00, 0x80, 0x40, + 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10, + 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, + 0xf0, 0x08, 0x88, 0x48, 0xc8, 0x28, + 0xa8, 0x68, 0xe8, 0x18, 0x98, 0x58, + 0xd8, 0x38, 0xb8, 0x78, 0xf8, 0x04, + 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, + 0xe4, 0x14, 0x94, 0x54, 0xd4, 0x34, + 0xb4, 0x74, 0xf4, 0x0c, 0x8c, 0x4c, + 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c, + 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, + 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22, + 0xa2, 0x62, 0xe2, 0x12, 0x92, 0x52, + 0xd2, 0x32, 0xb2, 0x72, 0xf2, 0x0a, + 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, + 0xea, 0x1a, 0x9a, 0x5a, 0xda, 0x3a, + 0xba, 0x7a, 0xfa, 0x06, 0x86, 0x46, + 0xc6, 0x26, 0xa6, 0x66, 0xe6, 0x16, + 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, + 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e, + 0xae, 0x6e, 0xee, 0x1e, 0x9e, 0x5e, + 0xde, 0x3e, 0xbe, 0x7e, 0xfe]; + + this.fft_short = function (gfc, x_real, chn, buffer, bufPos) { + for (var b = 0; b < 3; b++) { + var x = Encoder.BLKSIZE_s / 2; + var k = 0xffff & ((576 / 3) * (b + 1)); + var j = Encoder.BLKSIZE_s / 8 - 1; + do { + var f0, f1, f2, f3, w; + var i = rv_tbl[j << 2] & 0xff; + + f0 = window_s[i] * buffer[chn][bufPos + i + k]; + w = window_s[0x7f - i] * buffer[chn][bufPos + i + k + 0x80]; + f1 = f0 - w; + f0 = f0 + w; + f2 = window_s[i + 0x40] * buffer[chn][bufPos + i + k + 0x40]; + w = window_s[0x3f - i] * buffer[chn][bufPos + i + k + 0xc0]; + f3 = f2 - w; + f2 = f2 + w; + + x -= 4; + x_real[b][x + 0] = f0 + f2; + x_real[b][x + 2] = f0 - f2; + x_real[b][x + 1] = f1 + f3; + x_real[b][x + 3] = f1 - f3; + + f0 = window_s[i + 0x01] * buffer[chn][bufPos + i + k + 0x01]; + w = window_s[0x7e - i] * buffer[chn][bufPos + i + k + 0x81]; + f1 = f0 - w; + f0 = f0 + w; + f2 = window_s[i + 0x41] * buffer[chn][bufPos + i + k + 0x41]; + w = window_s[0x3e - i] * buffer[chn][bufPos + i + k + 0xc1]; + f3 = f2 - w; + f2 = f2 + w; + + x_real[b][x + Encoder.BLKSIZE_s / 2 + 0] = f0 + f2; + x_real[b][x + Encoder.BLKSIZE_s / 2 + 2] = f0 - f2; + x_real[b][x + Encoder.BLKSIZE_s / 2 + 1] = f1 + f3; + x_real[b][x + Encoder.BLKSIZE_s / 2 + 3] = f1 - f3; + } while (--j >= 0); + + fht(x_real[b], x, Encoder.BLKSIZE_s / 2); + /* BLKSIZE_s/2 because of 3DNow! ASM routine */ + /* BLKSIZE/2 because of 3DNow! ASM routine */ + } + } + + this.fft_long = function (gfc, y, chn, buffer, bufPos) { + var jj = Encoder.BLKSIZE / 8 - 1; + var x = Encoder.BLKSIZE / 2; + + do { + var f0, f1, f2, f3, w; + var i = rv_tbl[jj] & 0xff; + f0 = window[i] * buffer[chn][bufPos + i]; + w = window[i + 0x200] * buffer[chn][bufPos + i + 0x200]; + f1 = f0 - w; + f0 = f0 + w; + f2 = window[i + 0x100] * buffer[chn][bufPos + i + 0x100]; + w = window[i + 0x300] * buffer[chn][bufPos + i + 0x300]; + f3 = f2 - w; + f2 = f2 + w; + + x -= 4; + y[x + 0] = f0 + f2; + y[x + 2] = f0 - f2; + y[x + 1] = f1 + f3; + y[x + 3] = f1 - f3; + + f0 = window[i + 0x001] * buffer[chn][bufPos + i + 0x001]; + w = window[i + 0x201] * buffer[chn][bufPos + i + 0x201]; + f1 = f0 - w; + f0 = f0 + w; + f2 = window[i + 0x101] * buffer[chn][bufPos + i + 0x101]; + w = window[i + 0x301] * buffer[chn][bufPos + i + 0x301]; + f3 = f2 - w; + f2 = f2 + w; + + y[x + Encoder.BLKSIZE / 2 + 0] = f0 + f2; + y[x + Encoder.BLKSIZE / 2 + 2] = f0 - f2; + y[x + Encoder.BLKSIZE / 2 + 1] = f1 + f3; + y[x + Encoder.BLKSIZE / 2 + 3] = f1 - f3; + } while (--jj >= 0); + + fht(y, x, Encoder.BLKSIZE / 2); + /* BLKSIZE/2 because of 3DNow! ASM routine */ + } + + this.init_fft = function (gfc) { + /* The type of window used here will make no real difference, but */ + /* + * in the interest of merging nspsytune stuff - switch to blackman + * window + */ + for (var i = 0; i < Encoder.BLKSIZE; i++) + /* blackman window */ + window[i] = (0.42 - 0.5 * Math.cos(2 * Math.PI * (i + .5) + / Encoder.BLKSIZE) + 0.08 * Math.cos(4 * Math.PI * (i + .5) + / Encoder.BLKSIZE)); + + for (var i = 0; i < Encoder.BLKSIZE_s / 2; i++) + window_s[i] = (0.5 * (1.0 - Math.cos(2.0 * Math.PI + * (i + 0.5) / Encoder.BLKSIZE_s))); + + } + +} + +/* + * psymodel.c + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 2001-2002 Naoki Shibata + * Copyright (c) 2000-2003 Takehiro Tominaga + * Copyright (c) 2000-2008 Robert Hegemann + * Copyright (c) 2000-2005 Gabriel Bouvigne + * Copyright (c) 2000-2005 Alexander Leidinger + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: PsyModel.java,v 1.27 2011/05/24 20:48:06 kenchis Exp $ */ + + +/* + PSYCHO ACOUSTICS + + + This routine computes the psycho acoustics, delayed by one granule. + + Input: buffer of PCM data (1024 samples). + + This window should be centered over the 576 sample granule window. + The routine will compute the psycho acoustics for + this granule, but return the psycho acoustics computed + for the *previous* granule. This is because the block + type of the previous granule can only be determined + after we have computed the psycho acoustics for the following + granule. + + Output: maskings and energies for each scalefactor band. + block type, PE, and some correlation measures. + The PE is used by CBR modes to determine if extra bits + from the bit reservoir should be used. The correlation + measures are used to determine mid/side or regular stereo. + */ +/* + Notation: + + barks: a non-linear frequency scale. Mapping from frequency to + barks is given by freq2bark() + + scalefactor bands: The spectrum (frequencies) are broken into + SBMAX "scalefactor bands". Thes bands + are determined by the MPEG ISO spec. In + the noise shaping/quantization code, we allocate + bits among the partition bands to achieve the + best possible quality + + partition bands: The spectrum is also broken into about + 64 "partition bands". Each partition + band is about .34 barks wide. There are about 2-5 + partition bands for each scalefactor band. + + LAME computes all psycho acoustic information for each partition + band. Then at the end of the computations, this information + is mapped to scalefactor bands. The energy in each scalefactor + band is taken as the sum of the energy in all partition bands + which overlap the scalefactor band. The maskings can be computed + in the same way (and thus represent the average masking in that band) + or by taking the minmum value multiplied by the number of + partition bands used (which represents a minimum masking in that band). + */ +/* + The general outline is as follows: + + 1. compute the energy in each partition band + 2. compute the tonality in each partition band + 3. compute the strength of each partion band "masker" + 4. compute the masking (via the spreading function applied to each masker) + 5. Modifications for mid/side masking. + + Each partition band is considiered a "masker". The strength + of the i'th masker in band j is given by: + + s3(bark(i)-bark(j))*strength(i) + + The strength of the masker is a function of the energy and tonality. + The more tonal, the less masking. LAME uses a simple linear formula + (controlled by NMT and TMN) which says the strength is given by the + energy divided by a linear function of the tonality. + */ +/* + s3() is the "spreading function". It is given by a formula + determined via listening tests. + + The total masking in the j'th partition band is the sum over + all maskings i. It is thus given by the convolution of + the strength with s3(), the "spreading function." + + masking(j) = sum_over_i s3(i-j)*strength(i) = s3 o strength + + where "o" = convolution operator. s3 is given by a formula determined + via listening tests. It is normalized so that s3 o 1 = 1. + + Note: instead of a simple convolution, LAME also has the + option of using "additive masking" + + The most critical part is step 2, computing the tonality of each + partition band. LAME has two tonality estimators. The first + is based on the ISO spec, and measures how predictiable the + signal is over time. The more predictable, the more tonal. + The second measure is based on looking at the spectrum of + a single granule. The more peaky the spectrum, the more + tonal. By most indications, the latter approach is better. + + Finally, in step 5, the maskings for the mid and side + channel are possibly increased. Under certain circumstances, + noise in the mid & side channels is assumed to also + be masked by strong maskers in the L or R channels. + + + Other data computed by the psy-model: + + ms_ratio side-channel / mid-channel masking ratio (for previous granule) + ms_ratio_next side-channel / mid-channel masking ratio for this granule + + percep_entropy[2] L and R values (prev granule) of PE - A measure of how + much pre-echo is in the previous granule + percep_entropy_MS[2] mid and side channel values (prev granule) of percep_entropy + energy[4] L,R,M,S energy in each channel, prev granule + blocktype_d[2] block type to use for previous granule + */ +//package mp3; + +//import java.util.Arrays; + + +function PsyModel() { + + var fft = new FFT(); + + var LOG10 = 2.30258509299404568402; + + var rpelev = 2; + var rpelev2 = 16; + var rpelev_s = 2; + var rpelev2_s = 16; + + /* size of each partition band, in barks: */ + var DELBARK = .34; + + /* tuned for output level (sensitive to energy scale) */ + var VO_SCALE = (1. / (14752 * 14752) / (Encoder.BLKSIZE / 2)); + + var temporalmask_sustain_sec = 0.01; + + var NS_PREECHO_ATT0 = 0.8; + var NS_PREECHO_ATT1 = 0.6; + var NS_PREECHO_ATT2 = 0.3; + + var NS_MSFIX = 3.5; + + var NSATTACKTHRE = 4.4; + var NSATTACKTHRE_S = 25; + + var NSFIRLEN = 21; + + /* size of each partition band, in barks: */ + var LN_TO_LOG10 = 0.2302585093; + + /*fix cc 精简 func NON_LINEAR_SCALE_ENERGY(x) { + return x; + }*/ + + /** + *
+     *       L3psycho_anal.  Compute psycho acoustics.
+     *
+     *       Data returned to the calling program must be delayed by one
+     *       granule.
+     *
+     *       This is done in two places.
+     *       If we do not need to know the blocktype, the copying
+     *       can be done here at the top of the program: we copy the data for
+     *       the last granule (computed during the last call) before it is
+     *       overwritten with the new data.  It looks like this:
+     *
+     *       0. static psymodel_data
+     *       1. calling_program_data = psymodel_data
+     *       2. compute psymodel_data
+     *
+     *       For data which needs to know the blocktype, the copying must be
+     *       done at the end of this loop, and the old values must be saved:
+     *
+     *       0. static psymodel_data_old
+     *       1. compute psymodel_data
+     *       2. compute possible block type of this granule
+     *       3. compute final block type of previous granule based on #2.
+     *       4. calling_program_data = psymodel_data_old
+     *       5. psymodel_data_old = psymodel_data
+     *     psycho_loudness_approx
+     *       jd - 2001 mar 12
+     *    in:  energy   - BLKSIZE/2 elements of frequency magnitudes ^ 2
+     *         gfp      - uses out_samplerate, ATHtype (also needed for ATHformula)
+     *    returns: loudness^2 approximation, a positive value roughly tuned for a value
+     *             of 1.0 for signals near clipping.
+     *    notes:   When calibrated, feeding this function binary white noise at sample
+     *             values +32767 or -32768 should return values that approach 3.
+     *             ATHformula is used to approximate an equal loudness curve.
+     *    future:  Data indicates that the shape of the equal loudness curve varies
+     *             with intensity.  This function might be improved by using an equal
+     *             loudness curve shaped for typical playback levels (instead of the
+     *             ATH, that is shaped for the threshold).  A flexible realization might
+     *             simply bend the existing ATH curve to achieve the desired shape.
+     *             However, the potential gain may not be enough to justify an effort.
+     * 
+ */ + function psycho_loudness_approx(energy, gfc) { + var loudness_power = 0.0; + /* apply weights to power in freq. bands */ + for (var i = 0; i < Encoder.BLKSIZE / 2; ++i) + loudness_power += energy[i] * gfc.ATH.eql_w[i]; + loudness_power *= VO_SCALE; + + return loudness_power; + } + + function compute_ffts(gfp, fftenergy, fftenergy_s, wsamp_l, wsamp_lPos, wsamp_s, wsamp_sPos, gr_out, chn, buffer, bufPos) { + var gfc = gfp.internal_flags; + if (chn < 2) { + fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos); + fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos); + } + /* FFT data for mid and side channel is derived from L & R */ + else if (chn == 2) { + abort();//fix cc 精简 + } + + /********************************************************************* + * compute energies + *********************************************************************/ + fftenergy[0] = /*fix NON_LINEAR_SCALE_ENERGY*/(wsamp_l[wsamp_lPos + 0][0]); + fftenergy[0] *= fftenergy[0]; + + for (var j = Encoder.BLKSIZE / 2 - 1; j >= 0; --j) { + var re = (wsamp_l[wsamp_lPos + 0])[Encoder.BLKSIZE / 2 - j]; + var im = (wsamp_l[wsamp_lPos + 0])[Encoder.BLKSIZE / 2 + j]; + fftenergy[Encoder.BLKSIZE / 2 - j] = /*fix NON_LINEAR_SCALE_ENERGY*/((re + * re + im * im) * 0.5); + } + for (var b = 2; b >= 0; --b) { + fftenergy_s[b][0] = (wsamp_s[wsamp_sPos + 0])[b][0]; + fftenergy_s[b][0] *= fftenergy_s[b][0]; + for (var j = Encoder.BLKSIZE_s / 2 - 1; j >= 0; --j) { + var re = (wsamp_s[wsamp_sPos + 0])[b][Encoder.BLKSIZE_s + / 2 - j]; + var im = (wsamp_s[wsamp_sPos + 0])[b][Encoder.BLKSIZE_s + / 2 + j]; + fftenergy_s[b][Encoder.BLKSIZE_s / 2 - j] = /*fix NON_LINEAR_SCALE_ENERGY*/((re + * re + im * im) * 0.5); + } + } + /* total energy */ + { + var totalenergy = 0.0; + for (var j = 11; j < Encoder.HBLKSIZE; j++) + totalenergy += fftenergy[j]; + + gfc.tot_ener[chn] = totalenergy; + } + + if (gfp.analysis) { + abort();//fix cc 精简 + } + + /********************************************************************* + * compute loudness approximation (used for ATH auto-level adjustment) + *********************************************************************/ + if (gfp.athaa_loudapprox == 2 && chn < 2) { + // no loudness for mid/side ch + gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn]; + gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc); + } + } + + /* mask_add optimization */ + /* init the limit values used to avoid computing log in mask_add when it is not necessary */ + + /** + *
+     *  For example, with i = 10*log10(m2/m1)/10*16         (= log10(m2/m1)*16)
+     *
+     * abs(i)>8 is equivalent (as i is an integer) to
+     * abs(i)>=9
+     * i>=9 || i<=-9
+     * equivalent to (as i is the biggest integer smaller than log10(m2/m1)*16
+     * or the smallest integer bigger than log10(m2/m1)*16 depending on the sign of log10(m2/m1)*16)
+     * log10(m2/m1)>=9/16 || log10(m2/m1)<=-9/16
+     * exp10 is strictly increasing thus this is equivalent to
+     * m2/m1 >= 10^(9/16) || m2/m1<=10^(-9/16) which are comparisons to constants
+     * 
+ */ + + /** + * as in if(i>8) + */ + var I1LIMIT = 8; + /** + * as in if(i>24) . changed 23 + */ + var I2LIMIT = 23; + /** + * as in if(m<15) + */ + var MLIMIT = 15; + + var ma_max_i1; + var ma_max_i2; + var ma_max_m; + + /** + * This is the masking table:
+ * According to tonality, values are going from 0dB (TMN) to 9.3dB (NMT).
+ * After additive masking computation, 8dB are added, so final values are + * going from 8dB to 17.3dB + * + * pow(10, -0.0..-0.6) + */ + var tab = [1.0, 0.79433, 0.63096, 0.63096, + 0.63096, 0.63096, 0.63096, 0.25119, 0.11749]; + + function init_mask_add_max_values() { + ma_max_i1 = Math.pow(10, (I1LIMIT + 1) / 16.0); + ma_max_i2 = Math.pow(10, (I2LIMIT + 1) / 16.0); + ma_max_m = Math.pow(10, (MLIMIT) / 10.0); + } + + var table1 = [3.3246 * 3.3246, + 3.23837 * 3.23837, 3.15437 * 3.15437, 3.00412 * 3.00412, + 2.86103 * 2.86103, 2.65407 * 2.65407, 2.46209 * 2.46209, + 2.284 * 2.284, 2.11879 * 2.11879, 1.96552 * 1.96552, + 1.82335 * 1.82335, 1.69146 * 1.69146, 1.56911 * 1.56911, + 1.46658 * 1.46658, 1.37074 * 1.37074, 1.31036 * 1.31036, + 1.25264 * 1.25264, 1.20648 * 1.20648, 1.16203 * 1.16203, + 1.12765 * 1.12765, 1.09428 * 1.09428, 1.0659 * 1.0659, + 1.03826 * 1.03826, 1.01895 * 1.01895, 1]; + + var table2 = [1.33352 * 1.33352, + 1.35879 * 1.35879, 1.38454 * 1.38454, 1.39497 * 1.39497, + 1.40548 * 1.40548, 1.3537 * 1.3537, 1.30382 * 1.30382, + 1.22321 * 1.22321, 1.14758 * 1.14758, 1]; + + var table3 = [2.35364 * 2.35364, + 2.29259 * 2.29259, 2.23313 * 2.23313, 2.12675 * 2.12675, + 2.02545 * 2.02545, 1.87894 * 1.87894, 1.74303 * 1.74303, + 1.61695 * 1.61695, 1.49999 * 1.49999, 1.39148 * 1.39148, + 1.29083 * 1.29083, 1.19746 * 1.19746, 1.11084 * 1.11084, + 1.03826 * 1.03826]; + + /** + * addition of simultaneous masking Naoki Shibata 2000/7 + */ + function mask_add(m1, m2, kk, b, gfc, shortblock) { + var ratio; + + if (m2 > m1) { + if (m2 < (m1 * ma_max_i2)) + ratio = m2 / m1; + else + return (m1 + m2); + } else { + if (m1 >= (m2 * ma_max_i2)) + return (m1 + m2); + ratio = m1 / m2; + } + + /* Should always be true, just checking */ + + m1 += m2; + //if (((long)(b + 3) & 0xffffffff) <= 3 + 3) { + if ((b + 3) <= 3 + 3) { + /* approximately, 1 bark = 3 partitions */ + /* 65% of the cases */ + /* originally 'if(i > 8)' */ + if (ratio >= ma_max_i1) { + /* 43% of the total */ + return m1; + } + + /* 22% of the total */ + var i = 0 | (Util.FAST_LOG10_X(ratio, 16.0)); + return m1 * table2[i]; + } + + /** + *
+         * m<15 equ log10((m1+m2)/gfc.ATH.cb[k])<1.5
+         * equ (m1+m2)/gfc.ATH.cb[k]<10^1.5
+         * equ (m1+m2)<10^1.5 * gfc.ATH.cb[k]
+         * 
+ */ + var i = 0 | Util.FAST_LOG10_X(ratio, 16.0); + if (shortblock != 0) { + m2 = gfc.ATH.cb_s[kk] * gfc.ATH.adjust; + } else { + m2 = gfc.ATH.cb_l[kk] * gfc.ATH.adjust; + } + if (m1 < ma_max_m * m2) { + /* 3% of the total */ + /* Originally if (m > 0) { */ + if (m1 > m2) { + var f, r; + + f = 1.0; + if (i <= 13) + f = table3[i]; + + r = Util.FAST_LOG10_X(m1 / m2, 10.0 / 15.0); + return m1 * ((table1[i] - f) * r + f); + } + + if (i > 13) + return m1; + + return m1 * table3[i]; + } + + /* 10% of total */ + return m1 * table1[i]; + } + + //fix cc 精简 + + /** + * short block threshold calculation (part 2) + * + * partition band bo_s[sfb] is at the transition from scalefactor band sfb + * to the next one sfb+1; enn and thmm have to be split between them + */ + function convert_partition2scalefac_s(gfc, eb, thr, chn, sblock) { + var sb, b; + var enn = 0.0; + var thmm = 0.0; + for (sb = b = 0; sb < Encoder.SBMAX_s; ++b, ++sb) { + var bo_s_sb = gfc.bo_s[sb]; + var npart_s = gfc.npart_s; + var b_lim = bo_s_sb < npart_s ? bo_s_sb : npart_s; + while (b < b_lim) { + // iff failed, it may indicate some index error elsewhere + enn += eb[b]; + thmm += thr[b]; + b++; + } + gfc.en[chn].s[sb][sblock] = enn; + gfc.thm[chn].s[sb][sblock] = thmm; + + if (b >= npart_s) { + ++sb; + break; + } + // iff failed, it may indicate some index error elsewhere + { + /* at transition sfb . sfb+1 */ + var w_curr = gfc.PSY.bo_s_weight[sb]; + var w_next = 1.0 - w_curr; + enn = w_curr * eb[b]; + thmm = w_curr * thr[b]; + gfc.en[chn].s[sb][sblock] += enn; + gfc.thm[chn].s[sb][sblock] += thmm; + enn = w_next * eb[b]; + thmm = w_next * thr[b]; + } + } + /* zero initialize the rest */ + for (; sb < Encoder.SBMAX_s; ++sb) { + gfc.en[chn].s[sb][sblock] = 0; + gfc.thm[chn].s[sb][sblock] = 0; + } + } + + /** + * longblock threshold calculation (part 2) + */ + function convert_partition2scalefac_l(gfc, eb, thr, chn) { + var sb, b; + var enn = 0.0; + var thmm = 0.0; + for (sb = b = 0; sb < Encoder.SBMAX_l; ++b, ++sb) { + var bo_l_sb = gfc.bo_l[sb]; + var npart_l = gfc.npart_l; + var b_lim = bo_l_sb < npart_l ? bo_l_sb : npart_l; + while (b < b_lim) { + // iff failed, it may indicate some index error elsewhere + enn += eb[b]; + thmm += thr[b]; + b++; + } + gfc.en[chn].l[sb] = enn; + gfc.thm[chn].l[sb] = thmm; + + if (b >= npart_l) { + ++sb; + break; + } + { + /* at transition sfb . sfb+1 */ + var w_curr = gfc.PSY.bo_l_weight[sb]; + var w_next = 1.0 - w_curr; + enn = w_curr * eb[b]; + thmm = w_curr * thr[b]; + gfc.en[chn].l[sb] += enn; + gfc.thm[chn].l[sb] += thmm; + enn = w_next * eb[b]; + thmm = w_next * thr[b]; + } + } + /* zero initialize the rest */ + for (; sb < Encoder.SBMAX_l; ++sb) { + gfc.en[chn].l[sb] = 0; + gfc.thm[chn].l[sb] = 0; + } + } + + function compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) { + var gfc = gfp.internal_flags; + var j, b; + + for (b = j = 0; b < gfc.npart_s; ++b) { + var ebb = 0, m = 0; + var n = gfc.numlines_s[b]; + for (var i = 0; i < n; ++i, ++j) { + var el = fftenergy_s[sblock][j]; + ebb += el; + if (m < el) + m = el; + } + eb[b] = ebb; + } + for (j = b = 0; b < gfc.npart_s; b++) { + var kk = gfc.s3ind_s[b][0]; + var ecb = gfc.s3_ss[j++] * eb[kk]; + ++kk; + while (kk <= gfc.s3ind_s[b][1]) { + ecb += gfc.s3_ss[j] * eb[kk]; + ++j; + ++kk; + } + + { /* limit calculated threshold by previous granule */ + var x = rpelev_s * gfc.nb_s1[chn][b]; + thr[b] = Math.min(ecb, x); + } + if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE) { + /* limit calculated threshold by even older granule */ + var x = rpelev2_s * gfc.nb_s2[chn][b]; + var y = thr[b]; + thr[b] = Math.min(x, y); + } + + gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b]; + gfc.nb_s1[chn][b] = ecb; + } + for (; b <= Encoder.CBANDS; ++b) { + eb[b] = 0; + thr[b] = 0; + } + } + + function block_type_set(gfp, uselongblock, blocktype_d, blocktype) { + var gfc = gfp.internal_flags; + + if (gfp.short_blocks == ShortBlock.short_block_coupled + /* force both channels to use the same block type */ + /* this is necessary if the frame is to be encoded in ms_stereo. */ + /* But even without ms_stereo, FhG does this */ + && !(uselongblock[0] != 0 && uselongblock[1] != 0)) + uselongblock[0] = uselongblock[1] = 0; + + /* + * update the blocktype of the previous granule, since it depends on + * what happend in this granule + */ + for (var chn = 0; chn < gfc.channels_out; chn++) { + blocktype[chn] = Encoder.NORM_TYPE; + /* disable short blocks */ + if (gfp.short_blocks == ShortBlock.short_block_dispensed) + uselongblock[chn] = 1; + if (gfp.short_blocks == ShortBlock.short_block_forced) + uselongblock[chn] = 0; + + if (uselongblock[chn] != 0) { + /* no attack : use long blocks */ + if (gfc.blocktype_old[chn] == Encoder.SHORT_TYPE) + blocktype[chn] = Encoder.STOP_TYPE; + } else { + /* attack : use short blocks */ + blocktype[chn] = Encoder.SHORT_TYPE; + if (gfc.blocktype_old[chn] == Encoder.NORM_TYPE) { + gfc.blocktype_old[chn] = Encoder.START_TYPE; + } + if (gfc.blocktype_old[chn] == Encoder.STOP_TYPE) + gfc.blocktype_old[chn] = Encoder.SHORT_TYPE; + } + + blocktype_d[chn] = gfc.blocktype_old[chn]; + // value returned to calling program + gfc.blocktype_old[chn] = blocktype[chn]; + // save for next call to l3psy_anal + } + } + + function NS_INTERP(x, y, r) { + /* was pow((x),(r))*pow((y),1-(r)) */ + if (r >= 1.0) { + /* 99.7% of the time */ + return x; + } + if (r <= 0.0) + return y; + if (y > 0.0) { + /* rest of the time */ + return (Math.pow(x / y, r) * y); + } + /* never happens */ + return 0.0; + } + + /** + * these values are tuned only for 44.1kHz... + */ + var regcoef_s = [11.8, 13.6, 17.2, 32, 46.5, + 51.3, 57.5, 67.1, 71.5, 84.6, 97.6, 130, + /* 255.8 */ + ]; + + function pecalc_s(mr, masking_lower) { + var pe_s = 1236.28 / 4; + for (var sb = 0; sb < Encoder.SBMAX_s - 1; sb++) { + for (var sblock = 0; sblock < 3; sblock++) { + var thm = mr.thm.s[sb][sblock]; + if (thm > 0.0) { + var x = thm * masking_lower; + var en = mr.en.s[sb][sblock]; + if (en > x) { + if (en > x * 1e10) { + pe_s += regcoef_s[sb] * (10.0 * LOG10); + } else { + pe_s += regcoef_s[sb] * Util.FAST_LOG10(en / x); + } + } + } + } + } + + return pe_s; + } + + /** + * these values are tuned only for 44.1kHz... + */ + var regcoef_l = [6.8, 5.8, 5.8, 6.4, 6.5, 9.9, + 12.1, 14.4, 15, 18.9, 21.6, 26.9, 34.2, 40.2, 46.8, 56.5, + 60.7, 73.9, 85.7, 93.4, 126.1, + /* 241.3 */ + ]; + + function pecalc_l(mr, masking_lower) { + var pe_l = 1124.23 / 4; + for (var sb = 0; sb < Encoder.SBMAX_l - 1; sb++) { + var thm = mr.thm.l[sb]; + if (thm > 0.0) { + var x = thm * masking_lower; + var en = mr.en.l[sb]; + if (en > x) { + if (en > x * 1e10) { + pe_l += regcoef_l[sb] * (10.0 * LOG10); + } else { + pe_l += regcoef_l[sb] * Util.FAST_LOG10(en / x); + } + } + } + } + return pe_l; + } + + function calc_energy(gfc, fftenergy, eb, max, avg) { + var b, j; + + for (b = j = 0; b < gfc.npart_l; ++b) { + var ebb = 0, m = 0; + var i; + for (i = 0; i < gfc.numlines_l[b]; ++i, ++j) { + var el = fftenergy[j]; + ebb += el; + if (m < el) + m = el; + } + eb[b] = ebb; + max[b] = m; + avg[b] = ebb * gfc.rnumlines_l[b]; + } + } + + function calc_mask_index_l(gfc, max, avg, mask_idx) { + var last_tab_entry = tab.length - 1; + var b = 0; + var a = avg[b] + avg[b + 1]; + if (a > 0.0) { + var m = max[b]; + if (m < max[b + 1]) + m = max[b + 1]; + a = 20.0 * (m * 2.0 - a) + / (a * (gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1)); + var k = 0 | a; + if (k > last_tab_entry) + k = last_tab_entry; + mask_idx[b] = k; + } else { + mask_idx[b] = 0; + } + + for (b = 1; b < gfc.npart_l - 1; b++) { + a = avg[b - 1] + avg[b] + avg[b + 1]; + if (a > 0.0) { + var m = max[b - 1]; + if (m < max[b]) + m = max[b]; + if (m < max[b + 1]) + m = max[b + 1]; + a = 20.0 + * (m * 3.0 - a) + / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b] + + gfc.numlines_l[b + 1] - 1)); + var k = 0 | a; + if (k > last_tab_entry) + k = last_tab_entry; + mask_idx[b] = k; + } else { + mask_idx[b] = 0; + } + } + + a = avg[b - 1] + avg[b]; + if (a > 0.0) { + var m = max[b - 1]; + if (m < max[b]) + m = max[b]; + a = 20.0 * (m * 2.0 - a) + / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1)); + var k = 0 | a; + if (k > last_tab_entry) + k = last_tab_entry; + mask_idx[b] = k; + } else { + mask_idx[b] = 0; + } + } + + var fircoef = [ + -8.65163e-18 * 2, -0.00851586 * 2, -6.74764e-18 * 2, 0.0209036 * 2, + -3.36639e-17 * 2, -0.0438162 * 2, -1.54175e-17 * 2, 0.0931738 * 2, + -5.52212e-17 * 2, -0.313819 * 2 + ]; + + this.L3psycho_anal_ns = function (gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) { + /* + * to get a good cache performance, one has to think about the sequence, + * in which the variables are used. + */ + var gfc = gfp.internal_flags; + + /* fft and energy calculation */ + var wsamp_L = new_float_n([2, Encoder.BLKSIZE]); + var wsamp_S = new_float_n([2, 3, Encoder.BLKSIZE_s]); + + /* convolution */ + var eb_l = new_float(Encoder.CBANDS + 1); + var eb_s = new_float(Encoder.CBANDS + 1); + var thr = new_float(Encoder.CBANDS + 2); + + /* block type */ + var blocktype = new_int(2), uselongblock = new_int(2); + + /* usual variables like loop indices, etc.. */ + var numchn, chn; + var b, i, j, k; + var sb, sblock; + + /* variables used for --nspsytune */ + var ns_hpfsmpl = new_float_n([2, 576]); + var pcfact; + var mask_idx_l = new_int(Encoder.CBANDS + 2), mask_idx_s = new_int(Encoder.CBANDS + 2); + + Arrays.fill(mask_idx_s, 0); + + numchn = gfc.channels_out; + /* chn=2 and 3 = Mid and Side channels */ + if (gfp.mode == MPEGMode.JOINT_STEREO) + numchn = 4; + + if (gfp.VBR == VbrMode.vbr_off) + pcfact = gfc.ResvMax == 0 ? 0 : ( gfc.ResvSize) + / gfc.ResvMax * 0.5; + else if (gfp.VBR == VbrMode.vbr_rh || gfp.VBR == VbrMode.vbr_mtrh + || gfp.VBR == VbrMode.vbr_mt) { + pcfact = 0.6; + } else + pcfact = 1.0; + + /********************************************************************** + * Apply HPF of fs/4 to the input signal. This is used for attack + * detection / handling. + **********************************************************************/ + /* Don't copy the input buffer into a temporary buffer */ + /* unroll the loop 2 times */ + for (chn = 0; chn < gfc.channels_out; chn++) { + /* apply high pass filter of fs/4 */ + var firbuf = buffer[chn]; + var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192; + for (i = 0; i < 576; i++) { + var sum1, sum2; + sum1 = firbuf[firbufPos + i + 10]; + sum2 = 0.0; + for (j = 0; j < ((NSFIRLEN - 1) / 2) - 1; j += 2) { + sum1 += fircoef[j] + * (firbuf[firbufPos + i + j] + firbuf[firbufPos + i + + NSFIRLEN - j]); + sum2 += fircoef[j + 1] + * (firbuf[firbufPos + i + j + 1] + firbuf[firbufPos + + i + NSFIRLEN - j - 1]); + } + ns_hpfsmpl[chn][i] = sum1 + sum2; + } + masking_ratio[gr_out][chn].en.assign(gfc.en[chn]); + masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]); + if (numchn > 2) { + abort();//fix cc 精简 + } + } + + for (chn = 0; chn < numchn; chn++) { + var wsamp_l; + var wsamp_s; + var en_subshort = new_float(12); + var en_short = [0, 0, 0, 0]; + var attack_intensity = new_float(12); + var ns_uselongblock = 1; + var attackThreshold; + var max = new_float(Encoder.CBANDS), avg = new_float(Encoder.CBANDS); + var ns_attacks = [0, 0, 0, 0]; + var fftenergy = new_float(Encoder.HBLKSIZE); + var fftenergy_s = new_float_n([3, Encoder.HBLKSIZE_s]); + + /* + * rh 20040301: the following loops do access one off the limits so + * I increase the array dimensions by one and initialize the + * accessed values to zero + */ + + /*************************************************************** + * determine the block type (window type) + ***************************************************************/ + /* calculate energies of each sub-shortblocks */ + for (i = 0; i < 3; i++) { + en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6]; + attack_intensity[i] = en_subshort[i] + / gfc.nsPsy.last_en_subshort[chn][i + 4]; + en_short[0] += en_subshort[i]; + } + + if (chn == 2) { + abort();//fix cc 精简 + } + { + var pf = ns_hpfsmpl[chn & 1]; + var pfPos = 0; + for (i = 0; i < 9; i++) { + var pfe = pfPos + 576 / 9; + var p = 1.; + for (; pfPos < pfe; pfPos++) + if (p < Math.abs(pf[pfPos])) + p = Math.abs(pf[pfPos]); + + gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p; + en_short[1 + i / 3] += p; + if (p > en_subshort[i + 3 - 2]) { + p = p / en_subshort[i + 3 - 2]; + } else if (en_subshort[i + 3 - 2] > p * 10.0) { + p = en_subshort[i + 3 - 2] / (p * 10.0); + } else + p = 0.0; + attack_intensity[i + 3] = p; + } + } + + if (gfp.analysis) { + abort();//fix cc 精简 + } + + /* compare energies between sub-shortblocks */ + attackThreshold = (chn == 3) ? gfc.nsPsy.attackthre_s + : gfc.nsPsy.attackthre; + for (i = 0; i < 12; i++) + if (0 == ns_attacks[i / 3] + && attack_intensity[i] > attackThreshold) + ns_attacks[i / 3] = (i % 3) + 1; + + /* + * should have energy change between short blocks, in order to avoid + * periodic signals + */ + for (i = 1; i < 4; i++) { + var ratio; + if (en_short[i - 1] > en_short[i]) { + ratio = en_short[i - 1] / en_short[i]; + } else { + ratio = en_short[i] / en_short[i - 1]; + } + if (ratio < 1.7) { + ns_attacks[i] = 0; + if (i == 1) + ns_attacks[0] = 0; + } + } + + if (ns_attacks[0] != 0 && gfc.nsPsy.lastAttacks[chn] != 0) + ns_attacks[0] = 0; + + if (gfc.nsPsy.lastAttacks[chn] == 3 + || (ns_attacks[0] + ns_attacks[1] + ns_attacks[2] + ns_attacks[3]) != 0) { + ns_uselongblock = 0; + + if (ns_attacks[1] != 0 && ns_attacks[0] != 0) + ns_attacks[1] = 0; + if (ns_attacks[2] != 0 && ns_attacks[1] != 0) + ns_attacks[2] = 0; + if (ns_attacks[3] != 0 && ns_attacks[2] != 0) + ns_attacks[3] = 0; + } + + if (chn < 2) { + uselongblock[chn] = ns_uselongblock; + } else { + abort();//fix cc 精简 + } + + /* + * there is a one granule delay. Copy maskings computed last call + * into masking_ratio to return to calling program. + */ + energy[chn] = gfc.tot_ener[chn]; + + /********************************************************************* + * compute FFTs + *********************************************************************/ + wsamp_s = wsamp_S; + wsamp_l = wsamp_L; + compute_ffts(gfp, fftenergy, fftenergy_s, wsamp_l, (chn & 1), + wsamp_s, (chn & 1), gr_out, chn, buffer, bufPos); + + /********************************************************************* + * Calculate the energy and the tonality of each partition. + *********************************************************************/ + calc_energy(gfc, fftenergy, eb_l, max, avg); + calc_mask_index_l(gfc, max, avg, mask_idx_l); + /* compute masking thresholds for short blocks */ + for (sblock = 0; sblock < 3; sblock++) { + var enn, thmm; + compute_masking_s(gfp, fftenergy_s, eb_s, thr, chn, sblock); + convert_partition2scalefac_s(gfc, eb_s, thr, chn, sblock); + /**** short block pre-echo control ****/ + for (sb = 0; sb < Encoder.SBMAX_s; sb++) { + thmm = gfc.thm[chn].s[sb][sblock]; + + thmm *= NS_PREECHO_ATT0; + if (ns_attacks[sblock] >= 2 || ns_attacks[sblock + 1] == 1) { + var idx = (sblock != 0) ? sblock - 1 : 2; + var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm, + NS_PREECHO_ATT1 * pcfact); + thmm = Math.min(thmm, p); + } + + if (ns_attacks[sblock] == 1) { + var idx = (sblock != 0) ? sblock - 1 : 2; + var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm, + NS_PREECHO_ATT2 * pcfact); + thmm = Math.min(thmm, p); + } else if ((sblock != 0 && ns_attacks[sblock - 1] == 3) + || (sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3)) { + var idx = (sblock != 2) ? sblock + 1 : 0; + var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm, + NS_PREECHO_ATT2 * pcfact); + thmm = Math.min(thmm, p); + } + + /* pulse like signal detection for fatboy.wav and so on */ + enn = en_subshort[sblock * 3 + 3] + + en_subshort[sblock * 3 + 4] + + en_subshort[sblock * 3 + 5]; + if (en_subshort[sblock * 3 + 5] * 6 < enn) { + thmm *= 0.5; + if (en_subshort[sblock * 3 + 4] * 6 < enn) + thmm *= 0.5; + } + + gfc.thm[chn].s[sb][sblock] = thmm; + } + } + gfc.nsPsy.lastAttacks[chn] = ns_attacks[2]; + + /********************************************************************* + * convolve the partitioned energy and unpredictability with the + * spreading function, s3_l[b][k] + ********************************************************************/ + k = 0; + { + for (b = 0; b < gfc.npart_l; b++) { + /* + * convolve the partitioned energy with the spreading + * function + */ + var kk = gfc.s3ind[b][0]; + var eb2 = eb_l[kk] * tab[mask_idx_l[kk]]; + var ecb = gfc.s3_ll[k++] * eb2; + while (++kk <= gfc.s3ind[b][1]) { + eb2 = eb_l[kk] * tab[mask_idx_l[kk]]; + ecb = mask_add(ecb, gfc.s3_ll[k++] * eb2, kk, kk - b, + gfc, 0); + } + ecb *= 0.158489319246111; + /* pow(10,-0.8) */ + + /**** long block pre-echo control ****/ + /** + *
+                     * dont use long block pre-echo control if previous granule was
+                     * a short block.  This is to avoid the situation:
+                     * frame0:  quiet (very low masking)
+                     * frame1:  surge  (triggers short blocks)
+                     * frame2:  regular frame.  looks like pre-echo when compared to
+                     *          frame0, but all pre-echo was in frame1.
+                     * 
+ */ + /* + * chn=0,1 L and R channels + * + * chn=2,3 S and M channels. + */ + + if (gfc.blocktype_old[chn & 1] == Encoder.SHORT_TYPE) + thr[b] = ecb; + else + thr[b] = NS_INTERP( + Math.min(ecb, Math.min(rpelev + * gfc.nb_1[chn][b], rpelev2 + * gfc.nb_2[chn][b])), ecb, pcfact); + + gfc.nb_2[chn][b] = gfc.nb_1[chn][b]; + gfc.nb_1[chn][b] = ecb; + } + } + for (; b <= Encoder.CBANDS; ++b) { + eb_l[b] = 0; + thr[b] = 0; + } + /* compute masking thresholds for long blocks */ + convert_partition2scalefac_l(gfc, eb_l, thr, chn); + } + /* end loop over chn */ + + if (gfp.mode == MPEGMode.STEREO || gfp.mode == MPEGMode.JOINT_STEREO) { + abort();//fix cc 精简 stereo + } + + if (gfp.mode == MPEGMode.JOINT_STEREO) { + abort();//fix cc 精简 stereo + } + + /*************************************************************** + * determine final block type + ***************************************************************/ + block_type_set(gfp, uselongblock, blocktype_d, blocktype); + + /********************************************************************* + * compute the value of PE to return ... no delay and advance + *********************************************************************/ + for (chn = 0; chn < numchn; chn++) { + var ppe; + var ppePos = 0; + var type; + var mr; + + if (chn > 1) { + abort();//fix cc 精简 + } else { + ppe = percep_entropy; + ppePos = 0; + type = blocktype_d[chn]; + mr = masking_ratio[gr_out][chn]; + } + + if (type == Encoder.SHORT_TYPE) + ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower); + else + ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower); + + if (gfp.analysis) + gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn]; + + } + return 0; + } + + //fix cc 精简 + + /** + * The spreading function. Values returned in units of energy + */ + function s3_func(bark) { + var tempx, x, tempy, temp; + tempx = bark; + if (tempx >= 0) + tempx *= 3; + else + tempx *= 1.5; + + if (tempx >= 0.5 && tempx <= 2.5) { + temp = tempx - 0.5; + x = 8.0 * (temp * temp - 2.0 * temp); + } else + x = 0.0; + tempx += 0.474; + tempy = 15.811389 + 7.5 * tempx - 17.5 + * Math.sqrt(1.0 + tempx * tempx); + + if (tempy <= -60.0) + return 0.0; + + tempx = Math.exp((x + tempy) * LN_TO_LOG10); + + /** + *
+         * Normalization.  The spreading function should be normalized so that:
+         * +inf
+         * /
+         * |  s3 [ bark ]  d(bark)   =  1
+         * /
+         * -inf
+         * 
+ */ + tempx /= .6609193; + return tempx; + } + + /** + * see for example "Zwicker: Psychoakustik, 1982; ISBN 3-540-11401-7 + */ + function freq2bark(freq) { + /* input: freq in hz output: barks */ + if (freq < 0) + freq = 0; + freq = freq * 0.001; + return 13.0 * Math.atan(.76 * freq) + 3.5 + * Math.atan(freq * freq / (7.5 * 7.5)); + } + + function init_numline(numlines, bo, bm, bval, bval_width, mld, bo_w, sfreq, blksize, scalepos, deltafreq, sbmax) { + var b_frq = new_float(Encoder.CBANDS + 1); + var sample_freq_frac = sfreq / (sbmax > 15 ? 2 * 576 : 2 * 192); + var partition = new_int(Encoder.HBLKSIZE); + var i; + sfreq /= blksize; + var j = 0; + var ni = 0; + /* compute numlines, the number of spectral lines in each partition band */ + /* each partition band should be about DELBARK wide. */ + for (i = 0; i < Encoder.CBANDS; i++) { + var bark1; + var j2; + bark1 = freq2bark(sfreq * j); + + b_frq[i] = sfreq * j; + + for (j2 = j; freq2bark(sfreq * j2) - bark1 < DELBARK + && j2 <= blksize / 2; j2++) + ; + + numlines[i] = j2 - j; + ni = i + 1; + + while (j < j2) { + partition[j++] = i; + } + if (j > blksize / 2) { + j = blksize / 2; + ++i; + break; + } + } + b_frq[i] = sfreq * j; + + for (var sfb = 0; sfb < sbmax; sfb++) { + var i1, i2, start, end; + var arg; + start = scalepos[sfb]; + end = scalepos[sfb + 1]; + + i1 = 0 | Math.floor(.5 + deltafreq * (start - .5)); + if (i1 < 0) + i1 = 0; + i2 = 0 | Math.floor(.5 + deltafreq * (end - .5)); + + if (i2 > blksize / 2) + i2 = blksize / 2; + + bm[sfb] = (partition[i1] + partition[i2]) / 2; + bo[sfb] = partition[i2]; + var f_tmp = sample_freq_frac * end; + /* + * calculate how much of this band belongs to current scalefactor + * band + */ + bo_w[sfb] = (f_tmp - b_frq[bo[sfb]]) + / (b_frq[bo[sfb] + 1] - b_frq[bo[sfb]]); + if (bo_w[sfb] < 0) { + bo_w[sfb] = 0; + } else { + if (bo_w[sfb] > 1) { + bo_w[sfb] = 1; + } + } + /* setup stereo demasking thresholds */ + /* formula reverse enginerred from plot in paper */ + arg = freq2bark(sfreq * scalepos[sfb] * deltafreq); + arg = ( Math.min(arg, 15.5) / 15.5); + + mld[sfb] = Math.pow(10.0, + 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5); + } + + /* compute bark values of each critical band */ + j = 0; + for (var k = 0; k < ni; k++) { + var w = numlines[k]; + var bark1, bark2; + + bark1 = freq2bark(sfreq * (j)); + bark2 = freq2bark(sfreq * (j + w - 1)); + bval[k] = .5 * (bark1 + bark2); + + bark1 = freq2bark(sfreq * (j - .5)); + bark2 = freq2bark(sfreq * (j + w - .5)); + bval_width[k] = bark2 - bark1; + j += w; + } + + return ni; + } + + function init_s3_values(s3ind, npart, bval, bval_width, norm, use_old_s3) { + var s3 = new_float_n([Encoder.CBANDS, Encoder.CBANDS]); + /* + * The s3 array is not linear in the bark scale. + * + * bval[x] should be used to get the bark value. + */ + var j; + var numberOfNoneZero = 0; + + /** + *
+         * s[i][j], the value of the spreading function,
+         * centered at band j (masker), for band i (maskee)
+         *
+         * i.e.: sum over j to spread into signal barkval=i
+         * NOTE: i and j are used opposite as in the ISO docs
+         * 
+ */ + if (use_old_s3) { + for (var i = 0; i < npart; i++) { + for (j = 0; j < npart; j++) { + var v = s3_func(bval[i] - bval[j]) * bval_width[j]; + s3[i][j] = v * norm[i]; + } + } + } else { + abort();//fix cc 精简 + } + for (var i = 0; i < npart; i++) { + for (j = 0; j < npart; j++) { + if (s3[i][j] > 0.0) + break; + } + s3ind[i][0] = j; + + for (j = npart - 1; j > 0; j--) { + if (s3[i][j] > 0.0) + break; + } + s3ind[i][1] = j; + numberOfNoneZero += (s3ind[i][1] - s3ind[i][0] + 1); + } + + var p = new_float(numberOfNoneZero); + var k = 0; + for (var i = 0; i < npart; i++) + for (j = s3ind[i][0]; j <= s3ind[i][1]; j++) + p[k++] = s3[i][j]; + + return p; + } + + function stereo_demask(f) { + /* setup stereo demasking thresholds */ + /* formula reverse enginerred from plot in paper */ + var arg = freq2bark(f); + arg = (Math.min(arg, 15.5) / 15.5); + + return Math.pow(10.0, + 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5); + } + + /** + * NOTE: the bitrate reduction from the inter-channel masking effect is low + * compared to the chance of getting annyoing artefacts. L3psycho_anal_vbr + * does not use this feature. (Robert 071216) + */ + this.psymodel_init = function (gfp) { + var gfc = gfp.internal_flags; + var i; + var useOldS3 = true; + var bvl_a = 13, bvl_b = 24; + var snr_l_a = 0, snr_l_b = 0; + var snr_s_a = -8.25, snr_s_b = -4.5; + var bval = new_float(Encoder.CBANDS); + var bval_width = new_float(Encoder.CBANDS); + var norm = new_float(Encoder.CBANDS); + var sfreq = gfp.out_samplerate; + + switch (gfp.experimentalZ) { + default: + case 0: + useOldS3 = true; + break; + case 1: + useOldS3 = (gfp.VBR == VbrMode.vbr_mtrh || gfp.VBR == VbrMode.vbr_mt) ? false + : true; + break; + case 2: + useOldS3 = false; + break; + case 3: + bvl_a = 8; + snr_l_a = -1.75; + snr_l_b = -0.0125; + snr_s_a = -8.25; + snr_s_b = -2.25; + break; + } + gfc.ms_ener_ratio_old = .25; + gfc.blocktype_old[0] = gfc.blocktype_old[1] = Encoder.NORM_TYPE; + // the vbr header is long blocks + + for (i = 0; i < 4; ++i) { + for (var j = 0; j < Encoder.CBANDS; ++j) { + gfc.nb_1[i][j] = 1e20; + gfc.nb_2[i][j] = 1e20; + gfc.nb_s1[i][j] = gfc.nb_s2[i][j] = 1.0; + } + for (var sb = 0; sb < Encoder.SBMAX_l; sb++) { + gfc.en[i].l[sb] = 1e20; + gfc.thm[i].l[sb] = 1e20; + } + for (var j = 0; j < 3; ++j) { + for (var sb = 0; sb < Encoder.SBMAX_s; sb++) { + gfc.en[i].s[sb][j] = 1e20; + gfc.thm[i].s[sb][j] = 1e20; + } + gfc.nsPsy.lastAttacks[i] = 0; + } + for (var j = 0; j < 9; j++) + gfc.nsPsy.last_en_subshort[i][j] = 10.; + } + + /* init. for loudness approx. -jd 2001 mar 27 */ + gfc.loudness_sq_save[0] = gfc.loudness_sq_save[1] = 0.0; + + /************************************************************************* + * now compute the psychoacoustic model specific constants + ************************************************************************/ + /* compute numlines, bo, bm, bval, bval_width, mld */ + + gfc.npart_l = init_numline(gfc.numlines_l, gfc.bo_l, gfc.bm_l, bval, + bval_width, gfc.mld_l, gfc.PSY.bo_l_weight, sfreq, + Encoder.BLKSIZE, gfc.scalefac_band.l, Encoder.BLKSIZE + / (2.0 * 576), Encoder.SBMAX_l); + /* compute the spreading function */ + for (i = 0; i < gfc.npart_l; i++) { + var snr = snr_l_a; + if (bval[i] >= bvl_a) { + snr = snr_l_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_l_a + * (bvl_b - bval[i]) / (bvl_b - bvl_a); + } + norm[i] = Math.pow(10.0, snr / 10.0); + if (gfc.numlines_l[i] > 0) { + gfc.rnumlines_l[i] = 1.0 / gfc.numlines_l[i]; + } else { + gfc.rnumlines_l[i] = 0; + } + } + gfc.s3_ll = init_s3_values(gfc.s3ind, gfc.npart_l, bval, bval_width, + norm, useOldS3); + + /* compute long block specific values, ATH and MINVAL */ + var j = 0; + for (i = 0; i < gfc.npart_l; i++) { + var x; + + /* ATH */ + x = Float.MAX_VALUE; + for (var k = 0; k < gfc.numlines_l[i]; k++, j++) { + var freq = sfreq * j / (1000.0 * Encoder.BLKSIZE); + var level; + /* + * ATH below 100 Hz constant, not further climbing + */ + level = this.ATHformula(freq * 1000, gfp) - 20; + // scale to FFT units; returned value is in dB + level = Math.pow(10., 0.1 * level); + // convert from dB . energy + level *= gfc.numlines_l[i]; + if (x > level) + x = level; + } + gfc.ATH.cb_l[i] = x; + + /* + * MINVAL. For low freq, the strength of the masking is limited by + * minval this is an ISO MPEG1 thing, dont know if it is really + * needed + */ + /* + * FIXME: it does work to reduce low-freq problems in S53-Wind-Sax + * and lead-voice samples, but introduces some 3 kbps bit bloat too. + * TODO: Further refinement of the shape of this hack. + */ + x = -20 + bval[i] * 20 / 10; + if (x > 6) { + x = 100; + } + if (x < -15) { + x = -15; + } + x -= 8.; + gfc.minval_l[i] = (Math.pow(10.0, x / 10.) * gfc.numlines_l[i]); + } + + /************************************************************************ + * do the same things for short blocks + ************************************************************************/ + gfc.npart_s = init_numline(gfc.numlines_s, gfc.bo_s, gfc.bm_s, bval, + bval_width, gfc.mld_s, gfc.PSY.bo_s_weight, sfreq, + Encoder.BLKSIZE_s, gfc.scalefac_band.s, Encoder.BLKSIZE_s + / (2.0 * 192), Encoder.SBMAX_s); + + /* SNR formula. short block is normalized by SNR. is it still right ? */ + j = 0; + for (i = 0; i < gfc.npart_s; i++) { + var x; + var snr = snr_s_a; + if (bval[i] >= bvl_a) { + snr = snr_s_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_s_a + * (bvl_b - bval[i]) / (bvl_b - bvl_a); + } + norm[i] = Math.pow(10.0, snr / 10.0); + + /* ATH */ + x = Float.MAX_VALUE; + for (var k = 0; k < gfc.numlines_s[i]; k++, j++) { + var freq = sfreq * j / (1000.0 * Encoder.BLKSIZE_s); + var level; + /* freq = Min(.1,freq); */ + /* + * ATH below 100 Hz constant, not + * further climbing + */ + level = this.ATHformula(freq * 1000, gfp) - 20; + // scale to FFT units; returned value is in dB + level = Math.pow(10., 0.1 * level); + // convert from dB . energy + level *= gfc.numlines_s[i]; + if (x > level) + x = level; + } + gfc.ATH.cb_s[i] = x; + + /* + * MINVAL. For low freq, the strength of the masking is limited by + * minval this is an ISO MPEG1 thing, dont know if it is really + * needed + */ + x = (-7.0 + bval[i] * 7.0 / 12.0); + if (bval[i] > 12) { + x *= 1 + Math.log(1 + x) * 3.1; + } + if (bval[i] < 12) { + x *= 1 + Math.log(1 - x) * 2.3; + } + if (x < -15) { + x = -15; + } + x -= 8; + gfc.minval_s[i] = Math.pow(10.0, x / 10) + * gfc.numlines_s[i]; + } + + gfc.s3_ss = init_s3_values(gfc.s3ind_s, gfc.npart_s, bval, bval_width, + norm, useOldS3); + + init_mask_add_max_values(); + fft.init_fft(gfc); + + /* setup temporal masking */ + gfc.decay = Math.exp(-1.0 * LOG10 + / (temporalmask_sustain_sec * sfreq / 192.0)); + + { + var msfix; + msfix = NS_MSFIX; + if ((gfp.exp_nspsytune & 2) != 0) + msfix = 1.0; + if (Math.abs(gfp.msfix) > 0.0) + msfix = gfp.msfix; + gfp.msfix = msfix; + + /* + * spread only from npart_l bands. Normally, we use the spreading + * function to convolve from npart_l down to npart_l bands + */ + for (var b = 0; b < gfc.npart_l; b++) + if (gfc.s3ind[b][1] > gfc.npart_l - 1) + gfc.s3ind[b][1] = gfc.npart_l - 1; + } + + /* + * prepare for ATH auto adjustment: we want to decrease the ATH by 12 dB + * per second + */ + var frame_duration = (576. * gfc.mode_gr / sfreq); + gfc.ATH.decay = Math.pow(10., -12. / 10. * frame_duration); + gfc.ATH.adjust = 0.01; + /* minimum, for leading low loudness */ + gfc.ATH.adjustLimit = 1.0; + /* on lead, allow adjust up to maximum */ + + + if (gfp.ATHtype != -1) { + /* compute equal loudness weights (eql_w) */ + var freq; + var freq_inc = gfp.out_samplerate + / (Encoder.BLKSIZE); + var eql_balance = 0.0; + freq = 0.0; + for (i = 0; i < Encoder.BLKSIZE / 2; ++i) { + /* convert ATH dB to relative power (not dB) */ + /* to determine eql_w */ + freq += freq_inc; + gfc.ATH.eql_w[i] = 1. / Math.pow(10, this.ATHformula(freq, gfp) / 10); + eql_balance += gfc.ATH.eql_w[i]; + } + eql_balance = 1.0 / eql_balance; + for (i = Encoder.BLKSIZE / 2; --i >= 0;) { /* scale weights */ + gfc.ATH.eql_w[i] *= eql_balance; + } + } + { + for (var b = j = 0; b < gfc.npart_s; ++b) { + for (i = 0; i < gfc.numlines_s[b]; ++i) { + ++j; + } + } + for (var b = j = 0; b < gfc.npart_l; ++b) { + for (i = 0; i < gfc.numlines_l[b]; ++i) { + ++j; + } + } + } + j = 0; + for (i = 0; i < gfc.npart_l; i++) { + var freq = sfreq * (j + gfc.numlines_l[i] / 2) / (1.0 * Encoder.BLKSIZE); + gfc.mld_cb_l[i] = stereo_demask(freq); + j += gfc.numlines_l[i]; + } + for (; i < Encoder.CBANDS; ++i) { + gfc.mld_cb_l[i] = 1; + } + j = 0; + for (i = 0; i < gfc.npart_s; i++) { + var freq = sfreq * (j + gfc.numlines_s[i] / 2) / (1.0 * Encoder.BLKSIZE_s); + gfc.mld_cb_s[i] = stereo_demask(freq); + j += gfc.numlines_s[i]; + } + for (; i < Encoder.CBANDS; ++i) { + gfc.mld_cb_s[i] = 1; + } + return 0; + } + + /** + * Those ATH formulas are returning their minimum value for input = -1 + */ + function ATHformula_GB(f, value) { + /** + *
+         *  from Painter & Spanias
+         *           modified by Gabriel Bouvigne to better fit the reality
+         *           ath =    3.640 * pow(f,-0.8)
+         *           - 6.800 * exp(-0.6*pow(f-3.4,2.0))
+         *           + 6.000 * exp(-0.15*pow(f-8.7,2.0))
+         *           + 0.6* 0.001 * pow(f,4.0);
+         *
+         *
+         *           In the past LAME was using the Painter &Spanias formula.
+         *           But we had some recurrent problems with HF content.
+         *           We measured real ATH values, and found the older formula
+         *           to be inaccurate in the higher part. So we made this new
+         *           formula and this solved most of HF problematic test cases.
+         *           The tradeoff is that in VBR mode it increases a lot the
+         *           bitrate.
+         * 
+ */ + + /* + * This curve can be adjusted according to the VBR scale: it adjusts + * from something close to Painter & Spanias on V9 up to Bouvigne's + * formula for V0. This way the VBR bitrate is more balanced according + * to the -V value. + */ + + // the following Hack allows to ask for the lowest value + if (f < -.3) + f = 3410; + + // convert to khz + f /= 1000; + f = Math.max(0.1, f); + var ath = 3.640 * Math.pow(f, -0.8) - 6.800 + * Math.exp(-0.6 * Math.pow(f - 3.4, 2.0)) + 6.000 + * Math.exp(-0.15 * Math.pow(f - 8.7, 2.0)) + + (0.6 + 0.04 * value) * 0.001 * Math.pow(f, 4.0); + return ath; + } + + this.ATHformula = function (f, gfp) { + var ath; + switch (gfp.ATHtype) { + case 0: + ath = ATHformula_GB(f, 9); + break; + case 1: + // over sensitive, should probably be removed + ath = ATHformula_GB(f, -1); + break; + case 2: + ath = ATHformula_GB(f, 0); + break; + case 3: + // modification of GB formula by Roel + ath = ATHformula_GB(f, 1) + 6; + break; + case 4: + ath = ATHformula_GB(f, gfp.ATHcurve); + break; + default: + ath = ATHformula_GB(f, 0); + break; + } + return ath; + } + +} + + + +function Lame() { + var self = this; + var LAME_MAXALBUMART = (128 * 1024); + + Lame.V9 = 410; + Lame.V8 = 420; + Lame.V7 = 430; + Lame.V6 = 440; + Lame.V5 = 450; + Lame.V4 = 460; + Lame.V3 = 470; + Lame.V2 = 480; + Lame.V1 = 490; + Lame.V0 = 500; + + /* still there for compatibility */ + + Lame.R3MIX = 1000; + Lame.STANDARD = 1001; + Lame.EXTREME = 1002; + Lame.INSANE = 1003; + Lame.STANDARD_FAST = 1004; + Lame.EXTREME_FAST = 1005; + Lame.MEDIUM = 1006; + Lame.MEDIUM_FAST = 1007; + + /** + * maximum size of mp3buffer needed if you encode at most 1152 samples for + * each call to lame_encode_buffer. see lame_encode_buffer() below + * (LAME_MAXMP3BUFFER is now obsolete) + */ + var LAME_MAXMP3BUFFER = (16384 + LAME_MAXALBUMART); + Lame.LAME_MAXMP3BUFFER = LAME_MAXMP3BUFFER; + + var ga; + var bs; + var p; + var qupvt; + var qu; + var psy = new PsyModel(); + var vbr; + var ver; + var id3; + var mpglib; + this.enc = new Encoder(); + + this.setModules = function (_ga, _bs, _p, _qupvt, _qu, _vbr, _ver, _id3, _mpglib) { + ga = _ga; + bs = _bs; + p = _p; + qupvt = _qupvt; + qu = _qu; + vbr = _vbr; + ver = _ver; + id3 = _id3; + mpglib = _mpglib; + this.enc.setModules(bs, psy, qupvt, vbr); + } + + /** + * PSY Model related stuff + */ + function PSY() { + /** + * The dbQ stuff. + */ + this.mask_adjust = 0.; + /** + * The dbQ stuff. + */ + this.mask_adjust_short = 0.; + /* at transition from one scalefactor band to next */ + /** + * Band weight long scalefactor bands. + */ + this.bo_l_weight = new_float(Encoder.SBMAX_l); + /** + * Band weight short scalefactor bands. + */ + this.bo_s_weight = new_float(Encoder.SBMAX_s); + } + + function LowPassHighPass() { + this.lowerlimit = 0.; + } + + function BandPass(bitrate, lPass) { + this.lowpass = lPass; + } + + var LAME_ID = 0xFFF88E3B; + + function lame_init_old(gfp) { + var gfc; + + gfp.class_id = LAME_ID; + + gfc = gfp.internal_flags = new LameInternalFlags(); + + /* Global flags. set defaults here for non-zero values */ + /* see lame.h for description */ + /* + * set integer values to -1 to mean that LAME will compute the best + * value, UNLESS the calling program as set it (and the value is no + * longer -1) + */ + + gfp.mode = MPEGMode.NOT_SET; + gfp.original = 1; + gfp.in_samplerate = 44100; + gfp.num_channels = 2; + gfp.num_samples = -1; + + gfp.bWriteVbrTag = true; + gfp.quality = -1; + gfp.short_blocks = null; + gfc.subblock_gain = -1; + + gfp.lowpassfreq = 0; + gfp.highpassfreq = 0; + gfp.lowpasswidth = -1; + gfp.highpasswidth = -1; + + gfp.VBR = VbrMode.vbr_off; + gfp.VBR_q = 4; + gfp.ATHcurve = -1; + gfp.VBR_mean_bitrate_kbps = 128; + gfp.VBR_min_bitrate_kbps = 0; + gfp.VBR_max_bitrate_kbps = 0; + gfp.VBR_hard_min = 0; + gfc.VBR_min_bitrate = 1; + /* not 0 ????? */ + gfc.VBR_max_bitrate = 13; + /* not 14 ????? */ + + gfp.quant_comp = -1; + gfp.quant_comp_short = -1; + + gfp.msfix = -1; + + gfc.resample_ratio = 1; + + gfc.OldValue[0] = 180; + gfc.OldValue[1] = 180; + gfc.CurrentStep[0] = 4; + gfc.CurrentStep[1] = 4; + gfc.masking_lower = 1; + gfc.nsPsy.attackthre = -1; + gfc.nsPsy.attackthre_s = -1; + + gfp.scale = -1; + + gfp.athaa_type = -1; + gfp.ATHtype = -1; + /* default = -1 = set in lame_init_params */ + gfp.athaa_loudapprox = -1; + /* 1 = flat loudness approx. (total energy) */ + /* 2 = equal loudness curve */ + gfp.athaa_sensitivity = 0.0; + /* no offset */ + gfp.useTemporal = null; + gfp.interChRatio = -1; + + /* + * The reason for int mf_samples_to_encode = ENCDELAY + POSTDELAY; + * ENCDELAY = internal encoder delay. And then we have to add + * POSTDELAY=288 because of the 50% MDCT overlap. A 576 MDCT granule + * decodes to 1152 samples. To synthesize the 576 samples centered under + * this granule we need the previous granule for the first 288 samples + * (no problem), and the next granule for the next 288 samples (not + * possible if this is last granule). So we need to pad with 288 samples + * to make sure we can encode the 576 samples we are interested in. + */ + gfc.mf_samples_to_encode = Encoder.ENCDELAY + Encoder.POSTDELAY; + gfp.encoder_padding = 0; + gfc.mf_size = Encoder.ENCDELAY - Encoder.MDCTDELAY; + /* + * we pad input with this many 0's + */ + + gfp.findReplayGain = false; + gfp.decode_on_the_fly = false; + + gfc.decode_on_the_fly = false; + gfc.findReplayGain = false; + gfc.findPeakSample = false; + + gfc.RadioGain = 0; + gfc.AudiophileGain = 0; + gfc.noclipGainChange = 0; + gfc.noclipScale = -1.0; + + gfp.preset = 0; + + gfp.write_id3tag_automatic = true; + return 0; + } + + this.lame_init = function () { + var gfp = new LameGlobalFlags(); + + var ret = lame_init_old(gfp); + if (ret != 0) { + return null; + } + + gfp.lame_allocated_gfp = 1; + return gfp; + } + + function filter_coef(x) { + if (x > 1.0) + return 0.0; + if (x <= 0.0) + return 1.0; + + return Math.cos(Math.PI / 2 * x); + } + + this.nearestBitrateFullIndex = function (bitrate) { + /* borrowed from DM abr presets */ + + var full_bitrate_table = [8, 16, 24, 32, 40, 48, 56, 64, 80, + 96, 112, 128, 160, 192, 224, 256, 320]; + + var lower_range = 0, lower_range_kbps = 0, upper_range = 0, upper_range_kbps = 0; + + /* We assume specified bitrate will be 320kbps */ + upper_range_kbps = full_bitrate_table[16]; + upper_range = 16; + lower_range_kbps = full_bitrate_table[16]; + lower_range = 16; + + /* + * Determine which significant bitrates the value specified falls + * between, if loop ends without breaking then we were correct above + * that the value was 320 + */ + for (var b = 0; b < 16; b++) { + if ((Math.max(bitrate, full_bitrate_table[b + 1])) != bitrate) { + upper_range_kbps = full_bitrate_table[b + 1]; + upper_range = b + 1; + lower_range_kbps = full_bitrate_table[b]; + lower_range = (b); + break; + /* We found upper range */ + } + } + + /* Determine which range the value specified is closer to */ + if ((upper_range_kbps - bitrate) > (bitrate - lower_range_kbps)) { + return lower_range; + } + return upper_range; + } + + //fix cc 精简 + + /** + * convert samp freq in Hz to index + */ + function SmpFrqIndex(sample_freq, gpf) { + switch (sample_freq) { + case 44100: + gpf.version = 1; + return 0; + case 48000: + gpf.version = 1; + return 1; + case 32000: + gpf.version = 1; + return 2; + case 22050: + gpf.version = 0; + return 0; + case 24000: + gpf.version = 0; + return 1; + case 16000: + gpf.version = 0; + return 2; + case 11025: + gpf.version = 0; + return 0; + case 12000: + gpf.version = 0; + return 1; + case 8000: + gpf.version = 0; + return 2; + default: + gpf.version = 0; + return -1; + } + } + + /** + * @param bRate + * legal rates from 8 to 320 + */ + function FindNearestBitrate(bRate, version, samplerate) { + /* MPEG-1 or MPEG-2 LSF */ + if (samplerate < 16000) + version = 2; + + var bitrate = Tables.bitrate_table[version][1]; + + for (var i = 2; i <= 14; i++) { + if (Tables.bitrate_table[version][i] > 0) { + if (Math.abs(Tables.bitrate_table[version][i] - bRate) < Math + .abs(bitrate - bRate)) + bitrate = Tables.bitrate_table[version][i]; + } + } + return bitrate; + } + + /** + * @param bRate + * legal rates from 32 to 448 kbps + * @param version + * MPEG-1 or MPEG-2/2.5 LSF + */ + function BitrateIndex(bRate, version, samplerate) { + /* convert bitrate in kbps to index */ + if (samplerate < 16000) + version = 2; + for (var i = 0; i <= 14; i++) { + if (Tables.bitrate_table[version][i] > 0) { + if (Tables.bitrate_table[version][i] == bRate) { + return i; + } + } + } + return -1; + } + + function optimum_bandwidth(lh, bitrate) { + /** + *
+         *  Input:
+         *      bitrate     total bitrate in kbps
+         *
+         *   Output:
+         *      lowerlimit: best lowpass frequency limit for input filter in Hz
+         *      upperlimit: best highpass frequency limit for input filter in Hz
+         * 
+ */ + var freq_map = [new BandPass(8, 2000), + new BandPass(16, 3700), new BandPass(24, 3900), + new BandPass(32, 5500), new BandPass(40, 7000), + new BandPass(48, 7500), new BandPass(56, 10000), + new BandPass(64, 11000), new BandPass(80, 13500), + new BandPass(96, 15100), new BandPass(112, 15600), + new BandPass(128, 17000), new BandPass(160, 17500), + new BandPass(192, 18600), new BandPass(224, 19400), + new BandPass(256, 19700), new BandPass(320, 20500)]; + + var table_index = self.nearestBitrateFullIndex(bitrate); + lh.lowerlimit = freq_map[table_index].lowpass; + } + + function lame_init_params_ppflt(gfp) { + var gfc = gfp.internal_flags; + /***************************************************************/ + /* compute info needed for polyphase filter (filter type==0, default) */ + /***************************************************************/ + + var lowpass_band = 32; + var highpass_band = -1; + + if (gfc.lowpass1 > 0) { + var minband = 999; + for (var band = 0; band <= 31; band++) { + var freq = (band / 31.0); + /* this band and above will be zeroed: */ + if (freq >= gfc.lowpass2) { + lowpass_band = Math.min(lowpass_band, band); + } + if (gfc.lowpass1 < freq && freq < gfc.lowpass2) { + minband = Math.min(minband, band); + } + } + + /* + * compute the *actual* transition band implemented by the polyphase + * filter + */ + if (minband == 999) { + gfc.lowpass1 = (lowpass_band - .75) / 31.0; + } else { + gfc.lowpass1 = (minband - .75) / 31.0; + } + gfc.lowpass2 = lowpass_band / 31.0; + } + + /* + * make sure highpass filter is within 90% of what the effective + * highpass frequency will be + */ + if (gfc.highpass2 > 0) { + abort();//fix cc 精简 + } + + if (gfc.highpass2 > 0) { + abort();//fix cc 精简 + } + + for (var band = 0; band < 32; band++) { + var fc1, fc2; + var freq = band / 31.0; + if (gfc.highpass2 > gfc.highpass1) { + abort();//fix cc 精简 + } else { + fc1 = 1.0; + } + if (gfc.lowpass2 > gfc.lowpass1) { + fc2 = filter_coef((freq - gfc.lowpass1) + / (gfc.lowpass2 - gfc.lowpass1 + 1e-20)); + } else { + fc2 = 1.0; + } + gfc.amp_filter[band] = (fc1 * fc2); + } + } + + function lame_init_qval(gfp) { + var gfc = gfp.internal_flags; + + switch (gfp.quality) { + default: + case 9: /* no psymodel, no noise shaping */ + gfc.psymodel = 0; + gfc.noise_shaping = 0; + gfc.noise_shaping_amp = 0; + gfc.noise_shaping_stop = 0; + gfc.use_best_huffman = 0; + gfc.full_outer_loop = 0; + break; + + case 8: + gfp.quality = 7; + //$FALL-THROUGH$ + case 7: + /* + * use psymodel (for short block and m/s switching), but no noise + * shapping + */ + gfc.psymodel = 1; + gfc.noise_shaping = 0; + gfc.noise_shaping_amp = 0; + gfc.noise_shaping_stop = 0; + gfc.use_best_huffman = 0; + gfc.full_outer_loop = 0; + break; + + case 6: + gfc.psymodel = 1; + if (gfc.noise_shaping == 0) + gfc.noise_shaping = 1; + gfc.noise_shaping_amp = 0; + gfc.noise_shaping_stop = 0; + if (gfc.subblock_gain == -1) + gfc.subblock_gain = 1; + gfc.use_best_huffman = 0; + gfc.full_outer_loop = 0; + break; + + case 5: + gfc.psymodel = 1; + if (gfc.noise_shaping == 0) + gfc.noise_shaping = 1; + gfc.noise_shaping_amp = 0; + gfc.noise_shaping_stop = 0; + if (gfc.subblock_gain == -1) + gfc.subblock_gain = 1; + gfc.use_best_huffman = 0; + gfc.full_outer_loop = 0; + break; + + case 4: + gfc.psymodel = 1; + if (gfc.noise_shaping == 0) + gfc.noise_shaping = 1; + gfc.noise_shaping_amp = 0; + gfc.noise_shaping_stop = 0; + if (gfc.subblock_gain == -1) + gfc.subblock_gain = 1; + gfc.use_best_huffman = 1; + gfc.full_outer_loop = 0; + break; + + case 3: + gfc.psymodel = 1; + if (gfc.noise_shaping == 0) + gfc.noise_shaping = 1; + gfc.noise_shaping_amp = 1; + gfc.noise_shaping_stop = 1; + if (gfc.subblock_gain == -1) + gfc.subblock_gain = 1; + gfc.use_best_huffman = 1; + gfc.full_outer_loop = 0; + break; + + case 2: + gfc.psymodel = 1; + if (gfc.noise_shaping == 0) + gfc.noise_shaping = 1; + if (gfc.substep_shaping == 0) + gfc.substep_shaping = 2; + gfc.noise_shaping_amp = 1; + gfc.noise_shaping_stop = 1; + if (gfc.subblock_gain == -1) + gfc.subblock_gain = 1; + gfc.use_best_huffman = 1; + /* inner loop */ + gfc.full_outer_loop = 0; + break; + + case 1: + gfc.psymodel = 1; + if (gfc.noise_shaping == 0) + gfc.noise_shaping = 1; + if (gfc.substep_shaping == 0) + gfc.substep_shaping = 2; + gfc.noise_shaping_amp = 2; + gfc.noise_shaping_stop = 1; + if (gfc.subblock_gain == -1) + gfc.subblock_gain = 1; + gfc.use_best_huffman = 1; + gfc.full_outer_loop = 0; + break; + + case 0: + gfc.psymodel = 1; + if (gfc.noise_shaping == 0) + gfc.noise_shaping = 1; + if (gfc.substep_shaping == 0) + gfc.substep_shaping = 2; + gfc.noise_shaping_amp = 2; + gfc.noise_shaping_stop = 1; + if (gfc.subblock_gain == -1) + gfc.subblock_gain = 1; + gfc.use_best_huffman = 1; + /* + * type 2 disabled because of it slowness, in favor of full outer + * loop search + */ + gfc.full_outer_loop = 0; + /* + * full outer loop search disabled because of audible distortions it + * may generate rh 060629 + */ + break; + } + + } + + function lame_init_bitstream(gfp) { + var gfc = gfp.internal_flags; + gfp.frameNum = 0; + + if (gfp.write_id3tag_automatic) { + id3.id3tag_write_v2(gfp); + } + /* initialize histogram data optionally used by frontend */ + + gfc.bitrate_stereoMode_Hist = new_int_n([16, 4 + 1]); + gfc.bitrate_blockType_Hist = new_int_n([16, 4 + 1 + 1]); + + gfc.PeakSample = 0.0; + + /* Write initial VBR Header to bitstream and init VBR data */ + if (gfp.bWriteVbrTag) + vbr.InitVbrTag(gfp); + } + + /******************************************************************** + * initialize internal params based on data in gf (globalflags struct filled + * in by calling program) + * + * OUTLINE: + * + * We first have some complex code to determine bitrate, output samplerate + * and mode. It is complicated by the fact that we allow the user to set + * some or all of these parameters, and need to determine best possible + * values for the rest of them: + * + * 1. set some CPU related flags 2. check if we are mono.mono, stereo.mono + * or stereo.stereo 3. compute bitrate and output samplerate: user may have + * set compression ratio user may have set a bitrate user may have set a + * output samplerate 4. set some options which depend on output samplerate + * 5. compute the actual compression ratio 6. set mode based on compression + * ratio + * + * The remaining code is much simpler - it just sets options based on the + * mode & compression ratio: + * + * set allow_diff_short based on mode select lowpass filter based on + * compression ratio & mode set the bitrate index, and min/max bitrates for + * VBR modes disable VBR tag if it is not appropriate initialize the + * bitstream initialize scalefac_band data set sideinfo_len (based on + * channels, CRC, out_samplerate) write an id3v2 tag into the bitstream + * write VBR tag into the bitstream set mpeg1/2 flag estimate the number of + * frames (based on a lot of data) + * + * now we set more flags: nspsytune: see code VBR modes see code CBR/ABR see + * code + * + * Finally, we set the algorithm flags based on the gfp.quality value + * lame_init_qval(gfp); + * + ********************************************************************/ + this.lame_init_params = function (gfp) { + var gfc = gfp.internal_flags; + + gfc.Class_ID = 0; + if (gfc.ATH == null) + gfc.ATH = new ATH(); + if (gfc.PSY == null) + gfc.PSY = new PSY(); + if (gfc.rgdata == null) + gfc.rgdata = new ReplayGain(); + + gfc.channels_in = gfp.num_channels; + if (gfc.channels_in == 1) + gfp.mode = MPEGMode.MONO; + gfc.channels_out = (gfp.mode == MPEGMode.MONO) ? 1 : 2; + gfc.mode_ext = Encoder.MPG_MD_MS_LR; + if (gfp.mode == MPEGMode.MONO) + gfp.force_ms = false; + /* + * don't allow forced mid/side stereo for mono output + */ + + if (gfp.VBR == VbrMode.vbr_off && gfp.VBR_mean_bitrate_kbps != 128 + && gfp.brate == 0) + gfp.brate = gfp.VBR_mean_bitrate_kbps; + + if (gfp.VBR == VbrMode.vbr_off || gfp.VBR == VbrMode.vbr_mtrh + || gfp.VBR == VbrMode.vbr_mt) { + /* these modes can handle free format condition */ + } else { + gfp.free_format = false; + /* mode can't be mixed with free format */ + } + + if (gfp.VBR == VbrMode.vbr_off && gfp.brate == 0) { + abort();//fix cc 精简 + } + + /* find bitrate if user specify a compression ratio */ + if (gfp.VBR == VbrMode.vbr_off && gfp.compression_ratio > 0) { + abort();//fix cc 精简 + } + + if (gfp.out_samplerate != 0) { + if (gfp.out_samplerate < 16000) { + gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, + 8); + gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, + 64); + } else if (gfp.out_samplerate < 32000) { + gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, + 8); + gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, + 160); + } else { + gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, + 32); + gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, + 320); + } + } + + /****************************************************************/ + /* if a filter has not been enabled, see if we should add one: */ + /****************************************************************/ + if (gfp.lowpassfreq == 0) { + var lowpass = 16000.; + + switch (gfp.VBR) { + case VbrMode.vbr_off: + { + var lh = new LowPassHighPass(); + optimum_bandwidth(lh, gfp.brate); + lowpass = lh.lowerlimit; + break; + } + case VbrMode.vbr_abr: + { + var lh = new LowPassHighPass(); + optimum_bandwidth(lh, gfp.VBR_mean_bitrate_kbps); + lowpass = lh.lowerlimit; + break; + } + case VbrMode.vbr_rh: + { + abort();//fix cc 精简 + } + default: + { + abort();//fix cc 精简 + } + } + if (gfp.mode == MPEGMode.MONO + && (gfp.VBR == VbrMode.vbr_off || gfp.VBR == VbrMode.vbr_abr)) + lowpass *= 1.5; + + gfp.lowpassfreq = lowpass | 0; + } + + if (gfp.out_samplerate == 0) { + abort();//fix cc 精简 + } + + gfp.lowpassfreq = Math.min(20500, gfp.lowpassfreq); + gfp.lowpassfreq = Math.min(gfp.out_samplerate / 2, gfp.lowpassfreq); + + if (gfp.VBR == VbrMode.vbr_off) { + gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out + / (1.e3 * gfp.brate); + } + if (gfp.VBR == VbrMode.vbr_abr) { + abort();//fix cc 精简 + } + + /* + * do not compute ReplayGain values and do not find the peak sample if + * we can't store them + */ + if (!gfp.bWriteVbrTag) { + gfp.findReplayGain = false; + gfp.decode_on_the_fly = false; + gfc.findPeakSample = false; + } + gfc.findReplayGain = gfp.findReplayGain; + gfc.decode_on_the_fly = gfp.decode_on_the_fly; + + if (gfc.decode_on_the_fly) + gfc.findPeakSample = true; + + if (gfc.findReplayGain) { + abort();//fix cc 精简 + } + + if (gfc.decode_on_the_fly && !gfp.decode_only) { + abort();//fix cc 精简 + } + + gfc.mode_gr = gfp.out_samplerate <= 24000 ? 1 : 2; + /* + * Number of granules per frame + */ + gfp.framesize = 576 * gfc.mode_gr; + gfp.encoder_delay = Encoder.ENCDELAY; + + gfc.resample_ratio = gfp.in_samplerate / gfp.out_samplerate; + + /** + *
+         *  sample freq       bitrate     compression ratio
+         *     [kHz]      [kbps/channel]   for 16 bit input
+         *     44.1            56               12.6
+         *     44.1            64               11.025
+         *     44.1            80                8.82
+         *     22.05           24               14.7
+         *     22.05           32               11.025
+         *     22.05           40                8.82
+         *     16              16               16.0
+         *     16              24               10.667
+         * 
+ */ + /** + *
+         *  For VBR, take a guess at the compression_ratio.
+         *  For example:
+         *
+         *    VBR_q    compression     like
+         *     -        4.4         320 kbps/44 kHz
+         *   0...1      5.5         256 kbps/44 kHz
+         *     2        7.3         192 kbps/44 kHz
+         *     4        8.8         160 kbps/44 kHz
+         *     6       11           128 kbps/44 kHz
+         *     9       14.7          96 kbps
+         *
+         *  for lower bitrates, downsample with --resample
+         * 
+ */ + switch (gfp.VBR) { + case VbrMode.vbr_mt: + case VbrMode.vbr_rh: + case VbrMode.vbr_mtrh: + { + /* numbers are a bit strange, but they determine the lowpass value */ + var cmp = [5.7, 6.5, 7.3, 8.2, 10, 11.9, 13, 14, + 15, 16.5]; + gfp.compression_ratio = cmp[gfp.VBR_q]; + } + break; + case VbrMode.vbr_abr: + gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out + / (1.e3 * gfp.VBR_mean_bitrate_kbps); + break; + default: + gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out + / (1.e3 * gfp.brate); + break; + } + + /* + * mode = -1 (not set by user) or mode = MONO (because of only 1 input + * channel). If mode has not been set, then select J-STEREO + */ + if (gfp.mode == MPEGMode.NOT_SET) { + gfp.mode = MPEGMode.JOINT_STEREO; + } + + /* apply user driven high pass filter */ + if (gfp.highpassfreq > 0) { + abort();//fix cc 精简 + } else { + gfc.highpass1 = 0; + gfc.highpass2 = 0; + } + /* apply user driven low pass filter */ + if (gfp.lowpassfreq > 0) { + gfc.lowpass2 = 2. * gfp.lowpassfreq; + if (gfp.lowpasswidth >= 0) { + abort();//fix cc 精简 + } else { /* 0% below on default */ + gfc.lowpass1 = (1 - 0.00) * 2. * gfp.lowpassfreq; + } + gfc.lowpass1 /= gfp.out_samplerate; + gfc.lowpass2 /= gfp.out_samplerate; + } else { + abort();//fix cc 精简 + } + + /**********************************************************************/ + /* compute info needed for polyphase filter (filter type==0, default) */ + /**********************************************************************/ + lame_init_params_ppflt(gfp); + /******************************************************* + * samplerate and bitrate index + *******************************************************/ + gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp); + if (gfc.samplerate_index < 0) { + abort();//fix cc 精简 + } + + if (gfp.VBR == VbrMode.vbr_off) { + if (gfp.free_format) { + gfc.bitrate_index = 0; + } else { + gfp.brate = FindNearestBitrate(gfp.brate, gfp.version, + gfp.out_samplerate); + gfc.bitrate_index = BitrateIndex(gfp.brate, gfp.version, + gfp.out_samplerate); + if (gfc.bitrate_index <= 0) { + abort();//fix cc 精简 + } + } + } else { + gfc.bitrate_index = 1; + } + + /* for CBR, we will write an "info" tag. */ + + if (gfp.analysis) + gfp.bWriteVbrTag = false; + + /* some file options not allowed if output is: not specified or stdout */ + if (gfc.pinfo != null) + gfp.bWriteVbrTag = false; + /* disable Xing VBR tag */ + + bs.init_bit_stream_w(gfc); + + var j = gfc.samplerate_index + (3 * gfp.version) + 6 + * (gfp.out_samplerate < 16000 ? 1 : 0); + for (var i = 0; i < Encoder.SBMAX_l + 1; i++) + gfc.scalefac_band.l[i] = qupvt.sfBandIndex[j].l[i]; + + for (var i = 0; i < Encoder.PSFB21 + 1; i++) { + var size = (gfc.scalefac_band.l[22] - gfc.scalefac_band.l[21]) + / Encoder.PSFB21; + var start = gfc.scalefac_band.l[21] + i * size; + gfc.scalefac_band.psfb21[i] = start; + } + gfc.scalefac_band.psfb21[Encoder.PSFB21] = 576; + + for (var i = 0; i < Encoder.SBMAX_s + 1; i++) + gfc.scalefac_band.s[i] = qupvt.sfBandIndex[j].s[i]; + + for (var i = 0; i < Encoder.PSFB12 + 1; i++) { + var size = (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12]) + / Encoder.PSFB12; + var start = gfc.scalefac_band.s[12] + i * size; + gfc.scalefac_band.psfb12[i] = start; + } + gfc.scalefac_band.psfb12[Encoder.PSFB12] = 192; + /* determine the mean bitrate for main data */ + if (gfp.version == 1) /* MPEG 1 */ + gfc.sideinfo_len = (gfc.channels_out == 1) ? 4 + 17 : 4 + 32; + else + /* MPEG 2 */ + gfc.sideinfo_len = (gfc.channels_out == 1) ? 4 + 9 : 4 + 17; + + if (gfp.error_protection) + gfc.sideinfo_len += 2; + + lame_init_bitstream(gfp); + + gfc.Class_ID = LAME_ID; + + { + var k; + + for (k = 0; k < 19; k++) + gfc.nsPsy.pefirbuf[k] = 700 * gfc.mode_gr * gfc.channels_out; + + if (gfp.ATHtype == -1) + gfp.ATHtype = 4; + } + + switch (gfp.VBR) { + + case VbrMode.vbr_mt: + gfp.VBR = VbrMode.vbr_mtrh; + //$FALL-THROUGH$ + case VbrMode.vbr_mtrh: + { + if (gfp.useTemporal == null) { + gfp.useTemporal = false; + /* off by default for this VBR mode */ + } + + p.apply_preset(gfp, 500 - (gfp.VBR_q * 10), 0); + /** + *
+                 *   The newer VBR code supports only a limited
+                 *     subset of quality levels:
+                 *     9-5=5 are the same, uses x^3/4 quantization
+                 *   4-0=0 are the same  5 plus best huffman divide code
+                 * 
+ */ + if (gfp.quality < 0) + gfp.quality = LAME_DEFAULT_QUALITY; + if (gfp.quality < 5) + gfp.quality = 0; + if (gfp.quality > 5) + gfp.quality = 5; + + gfc.PSY.mask_adjust = gfp.maskingadjust; + gfc.PSY.mask_adjust_short = gfp.maskingadjust_short; + + /* + * sfb21 extra only with MPEG-1 at higher sampling rates + */ + if (gfp.experimentalY) + gfc.sfb21_extra = false; + else + gfc.sfb21_extra = (gfp.out_samplerate > 44000); + + gfc.iteration_loop = new VBRNewIterationLoop(qu); + break; + + } + case VbrMode.vbr_rh: + { + + p.apply_preset(gfp, 500 - (gfp.VBR_q * 10), 0); + + gfc.PSY.mask_adjust = gfp.maskingadjust; + gfc.PSY.mask_adjust_short = gfp.maskingadjust_short; + + /* + * sfb21 extra only with MPEG-1 at higher sampling rates + */ + if (gfp.experimentalY) + gfc.sfb21_extra = false; + else + gfc.sfb21_extra = (gfp.out_samplerate > 44000); + + /* + * VBR needs at least the output of GPSYCHO, so we have to garantee + * that by setting a minimum quality level, actually level 6 does + * it. down to level 6 + */ + if (gfp.quality > 6) + gfp.quality = 6; + + if (gfp.quality < 0) + gfp.quality = LAME_DEFAULT_QUALITY; + + gfc.iteration_loop = new VBROldIterationLoop(qu); + break; + } + + default: /* cbr/abr */ + { + var vbrmode; + + /* + * no sfb21 extra with CBR code + */ + gfc.sfb21_extra = false; + + if (gfp.quality < 0) + gfp.quality = LAME_DEFAULT_QUALITY; + + vbrmode = gfp.VBR; + if (vbrmode == VbrMode.vbr_off) + gfp.VBR_mean_bitrate_kbps = gfp.brate; + /* second, set parameters depending on bitrate */ + p.apply_preset(gfp, gfp.VBR_mean_bitrate_kbps, 0); + gfp.VBR = vbrmode; + + gfc.PSY.mask_adjust = gfp.maskingadjust; + gfc.PSY.mask_adjust_short = gfp.maskingadjust_short; + + if (vbrmode == VbrMode.vbr_off) { + gfc.iteration_loop = new CBRNewIterationLoop(qu); + } else { + abort();//fix cc 精简 + } + break; + } + } + /* initialize default values common for all modes */ + + if (gfp.VBR != VbrMode.vbr_off) { /* choose a min/max bitrate for VBR */ + abort();//fix cc 精简 + } + + /* just another daily changing developer switch */ + if (gfp.tune) { + abort();//fix cc 精简 + } + + /* initialize internal qval settings */ + lame_init_qval(gfp); + /* + * automatic ATH adjustment on + */ + if (gfp.athaa_type < 0) + gfc.ATH.useAdjust = 3; + else + gfc.ATH.useAdjust = gfp.athaa_type; + + /* initialize internal adaptive ATH settings -jd */ + gfc.ATH.aaSensitivityP = Math.pow(10.0, gfp.athaa_sensitivity + / -10.0); + + if (gfp.short_blocks == null) { + gfp.short_blocks = ShortBlock.short_block_allowed; + } + + /* + * Note Jan/2003: Many hardware decoders cannot handle short blocks in + * regular stereo mode unless they are coupled (same type in both + * channels) it is a rare event (1 frame per min. or so) that LAME would + * use uncoupled short blocks, so lets turn them off until we decide how + * to handle this. No other encoders allow uncoupled short blocks, even + * though it is in the standard. + */ + /* + * rh 20040217: coupling makes no sense for mono and dual-mono streams + */ + if (gfp.short_blocks == ShortBlock.short_block_allowed + && (gfp.mode == MPEGMode.JOINT_STEREO || gfp.mode == MPEGMode.STEREO)) { + gfp.short_blocks = ShortBlock.short_block_coupled; + } + + if (gfp.quant_comp < 0) + gfp.quant_comp = 1; + if (gfp.quant_comp_short < 0) + gfp.quant_comp_short = 0; + + if (gfp.msfix < 0) + gfp.msfix = 0; + + /* select psychoacoustic model */ + gfp.exp_nspsytune = gfp.exp_nspsytune | 1; + + if (gfp.internal_flags.nsPsy.attackthre < 0) + gfp.internal_flags.nsPsy.attackthre = PsyModel.NSATTACKTHRE; + if (gfp.internal_flags.nsPsy.attackthre_s < 0) + gfp.internal_flags.nsPsy.attackthre_s = PsyModel.NSATTACKTHRE_S; + + + if (gfp.scale < 0) + gfp.scale = 1; + + if (gfp.ATHtype < 0) + gfp.ATHtype = 4; + + if (gfp.ATHcurve < 0) + gfp.ATHcurve = 4; + + if (gfp.athaa_loudapprox < 0) + gfp.athaa_loudapprox = 2; + + if (gfp.interChRatio < 0) + gfp.interChRatio = 0; + + if (gfp.useTemporal == null) + gfp.useTemporal = true; + /* on by default */ + + /* + * padding method as described in + * "MPEG-Layer3 / Bitstream Syntax and Decoding" by Martin Sieler, Ralph + * Sperschneider + * + * note: there is no padding for the very first frame + * + * Robert Hegemann 2000-06-22 + */ + gfc.slot_lag = gfc.frac_SpF = 0; + if (gfp.VBR == VbrMode.vbr_off) + gfc.slot_lag = gfc.frac_SpF = (((gfp.version + 1) * 72000 * gfp.brate) % gfp.out_samplerate) | 0; + + qupvt.iteration_init(gfp); + psy.psymodel_init(gfp); + return 0; + } + + function update_inbuffer_size(gfc, nsamples) { + if (gfc.in_buffer_0 == null || gfc.in_buffer_nsamples < nsamples) { + gfc.in_buffer_0 = new_float(nsamples); + gfc.in_buffer_1 = new_float(nsamples); + gfc.in_buffer_nsamples = nsamples; + } + } + + this.lame_encode_flush = function (gfp, mp3buffer, mp3bufferPos, mp3buffer_size) { + var gfc = gfp.internal_flags; + var buffer = new_short_n([2, 1152]); + var imp3 = 0, mp3count, mp3buffer_size_remaining; + + /* + * we always add POSTDELAY=288 padding to make sure granule with real + * data can be complety decoded (because of 50% overlap with next + * granule + */ + var end_padding; + var frames_left; + var samples_to_encode = gfc.mf_samples_to_encode - Encoder.POSTDELAY; + var mf_needed = calcNeeded(gfp); + + /* Was flush already called? */ + if (gfc.mf_samples_to_encode < 1) { + return 0; + } + mp3count = 0; + + if (gfp.in_samplerate != gfp.out_samplerate) { + abort();//fix cc 精简 + } + end_padding = gfp.framesize - (samples_to_encode % gfp.framesize); + if (end_padding < 576) + end_padding += gfp.framesize; + gfp.encoder_padding = end_padding; + + frames_left = (samples_to_encode + end_padding) / gfp.framesize; + + /* + * send in a frame of 0 padding until all internal sample buffers are + * flushed + */ + while (frames_left > 0 && imp3 >= 0) { + var bunch = mf_needed - gfc.mf_size; + var frame_num = gfp.frameNum; + + bunch *= gfp.in_samplerate; + bunch /= gfp.out_samplerate; + if (bunch > 1152) + bunch = 1152; + if (bunch < 1) + bunch = 1; + + mp3buffer_size_remaining = mp3buffer_size - mp3count; + + /* if user specifed buffer size = 0, dont check size */ + if (mp3buffer_size == 0) + mp3buffer_size_remaining = 0; + + imp3 = this.lame_encode_buffer(gfp, buffer[0], buffer[1], bunch, + mp3buffer, mp3bufferPos, mp3buffer_size_remaining); + + mp3bufferPos += imp3; + mp3count += imp3; + frames_left -= (frame_num != gfp.frameNum) ? 1 : 0; + } + /* + * Set gfc.mf_samples_to_encode to 0, so we may detect and break loops + * calling it more than once in a row. + */ + gfc.mf_samples_to_encode = 0; + + if (imp3 < 0) { + /* some type of fatal error */ + return imp3; + } + + mp3buffer_size_remaining = mp3buffer_size - mp3count; + /* if user specifed buffer size = 0, dont check size */ + if (mp3buffer_size == 0) + mp3buffer_size_remaining = 0; + + /* mp3 related stuff. bit buffer might still contain some mp3 data */ + bs.flush_bitstream(gfp); + imp3 = bs.copy_buffer(gfc, mp3buffer, mp3bufferPos, + mp3buffer_size_remaining, 1); + if (imp3 < 0) { + /* some type of fatal error */ + return imp3; + } + mp3bufferPos += imp3; + mp3count += imp3; + mp3buffer_size_remaining = mp3buffer_size - mp3count; + /* if user specifed buffer size = 0, dont check size */ + if (mp3buffer_size == 0) + mp3buffer_size_remaining = 0; + + if (gfp.write_id3tag_automatic) { + abort();//fix cc 精简 + } + return mp3count; + }; + + this.lame_encode_buffer = function (gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) { + var gfc = gfp.internal_flags; + var in_buffer = [null, null]; + + if (gfc.Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + update_inbuffer_size(gfc, nsamples); + + in_buffer[0] = gfc.in_buffer_0; + in_buffer[1] = gfc.in_buffer_1; + + /* make a copy of input buffer, changing type to sample_t */ + for (var i = 0; i < nsamples; i++) { + in_buffer[0][i] = buffer_l[i]; + if (gfc.channels_in > 1) + in_buffer[1][i] = buffer_r[i]; + } + + return lame_encode_buffer_sample(gfp, in_buffer[0], in_buffer[1], + nsamples, mp3buf, mp3bufPos, mp3buf_size); + } + + function calcNeeded(gfp) { + var mf_needed = Encoder.BLKSIZE + gfp.framesize - Encoder.FFTOFFSET; + /* + * amount needed for FFT + */ + mf_needed = Math.max(mf_needed, 512 + gfp.framesize - 32); + + return mf_needed; + } + + function lame_encode_buffer_sample(gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) { + var gfc = gfp.internal_flags; + var mp3size = 0, ret, i, ch, mf_needed; + var mp3out; + var mfbuf = [null, null]; + var in_buffer = [null, null]; + + if (gfc.Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + /* copy out any tags that may have been written into bitstream */ + mp3out = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 0); + if (mp3out < 0) + return mp3out; + /* not enough buffer space */ + mp3bufPos += mp3out; + mp3size += mp3out; + + in_buffer[0] = buffer_l; + in_buffer[1] = buffer_r; + + /* Apply user defined re-scaling */ + + /* user selected scaling of the samples */ + if (BitStream.NEQ(gfp.scale, 0) && BitStream.NEQ(gfp.scale, 1.0)) { + for (i = 0; i < nsamples; ++i) { + in_buffer[0][i] *= gfp.scale; + if (gfc.channels_out == 2) + in_buffer[1][i] *= gfp.scale; + } + } + + /* user selected scaling of the channel 0 (left) samples */ + if (BitStream.NEQ(gfp.scale_left, 0) + && BitStream.NEQ(gfp.scale_left, 1.0)) { + for (i = 0; i < nsamples; ++i) { + in_buffer[0][i] *= gfp.scale_left; + } + } + + /* user selected scaling of the channel 1 (right) samples */ + if (BitStream.NEQ(gfp.scale_right, 0) + && BitStream.NEQ(gfp.scale_right, 1.0)) { + for (i = 0; i < nsamples; ++i) { + in_buffer[1][i] *= gfp.scale_right; + } + } + + /* Downsample to Mono if 2 channels in and 1 channel out */ + if (gfp.num_channels == 2 && gfc.channels_out == 1) { + abort();//fix cc 精简 stereo + } + + mf_needed = calcNeeded(gfp); + + mfbuf[0] = gfc.mfbuf[0]; + mfbuf[1] = gfc.mfbuf[1]; + + var in_bufferPos = 0; + while (nsamples > 0) { + var in_buffer_ptr = [null, null]; + var n_in = 0; + /* number of input samples processed with fill_buffer */ + var n_out = 0; + /* number of samples output with fill_buffer */ + /* n_in <> n_out if we are resampling */ + + in_buffer_ptr[0] = in_buffer[0]; + in_buffer_ptr[1] = in_buffer[1]; + /* copy in new samples into mfbuf, with resampling */ + var inOut = new InOut(); + fill_buffer(gfp, mfbuf, in_buffer_ptr, in_bufferPos, nsamples, + inOut); + n_in = inOut.n_in; + n_out = inOut.n_out; + + /* compute ReplayGain of resampled input if requested */ + if (gfc.findReplayGain && !gfc.decode_on_the_fly) + if (ga.AnalyzeSamples(gfc.rgdata, mfbuf[0], gfc.mf_size, + mfbuf[1], gfc.mf_size, n_out, gfc.channels_out) == GainAnalysis.GAIN_ANALYSIS_ERROR) + return -6; + + /* update in_buffer counters */ + nsamples -= n_in; + in_bufferPos += n_in; + if (gfc.channels_out == 2) + ;// in_bufferPos += n_in; + + /* update mfbuf[] counters */ + gfc.mf_size += n_out; + + /* + * lame_encode_flush may have set gfc.mf_sample_to_encode to 0 so we + * have to reinitialize it here when that happened. + */ + if (gfc.mf_samples_to_encode < 1) { + abort();//fix cc 精简 + } + gfc.mf_samples_to_encode += n_out; + + if (gfc.mf_size >= mf_needed) { + /* encode the frame. */ + /* mp3buf = pointer to current location in buffer */ + /* mp3buf_size = size of original mp3 output buffer */ + /* = 0 if we should not worry about the */ + /* buffer size because calling program is */ + /* to lazy to compute it */ + /* mp3size = size of data written to buffer so far */ + /* mp3buf_size-mp3size = amount of space avalable */ + + var buf_size = mp3buf_size - mp3size; + if (mp3buf_size == 0) + buf_size = 0; + + ret = lame_encode_frame(gfp, mfbuf[0], mfbuf[1], mp3buf, + mp3bufPos, buf_size); + + if (ret < 0) + return ret; + mp3bufPos += ret; + mp3size += ret; + + /* shift out old samples */ + gfc.mf_size -= gfp.framesize; + gfc.mf_samples_to_encode -= gfp.framesize; + for (ch = 0; ch < gfc.channels_out; ch++) + for (i = 0; i < gfc.mf_size; i++) + mfbuf[ch][i] = mfbuf[ch][i + gfp.framesize]; + } + } + + return mp3size; + } + + function lame_encode_frame(gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) { + var ret = self.enc.lame_encode_mp3_frame(gfp, inbuf_l, inbuf_r, mp3buf, + mp3bufPos, mp3buf_size); + gfp.frameNum++; + return ret; + } + + function InOut() { + this.n_in = 0; + this.n_out = 0; + } + + //fix cc 精简 + + function fill_buffer(gfp, mfbuf, in_buffer, in_bufferPos, nsamples, io) { + var gfc = gfp.internal_flags; + + /* copy in new samples into mfbuf, with resampling if necessary */ + if ((gfc.resample_ratio < .9999) || (gfc.resample_ratio > 1.0001)) { + abort();//fix cc 精简 + } else { + io.n_out = Math.min(gfp.framesize, nsamples); + io.n_in = io.n_out; + for (var i = 0; i < io.n_out; ++i) { + mfbuf[0][gfc.mf_size + i] = in_buffer[0][in_bufferPos + i]; + if (gfc.channels_out == 2) + mfbuf[1][gfc.mf_size + i] = in_buffer[1][in_bufferPos + i]; + } + } + } + +} + + + +function GetAudio() { + var parse; + var mpg; + + this.setModules = function (parse2, mpg2) { + parse = parse2; + mpg = mpg2; + } +} + + +function Parse() { + var ver; + var id3; + var pre; + + this.setModules = function (ver2, id32, pre2) { + ver = ver2; + id3 = id32; + pre = pre2; + } +} + +function MPGLib() { +} + +function ID3Tag() { + var bits; + var ver; + + this.setModules = function (_bits, _ver) { + bits = _bits; + ver = _ver; + } +} + +function Mp3Encoder(channels, samplerate, kbps) { + if (channels!=1) { //精简后的代码不支持双声道 + abort("fix cc: only supports mono") + } + var lame = new Lame(); + var gaud = new GetAudio(); + var ga = new GainAnalysis(); + var bs = new BitStream(); + var p = new Presets(); + var qupvt = new QuantizePVT(); + var qu = new Quantize(); + var vbr = new VBRTag(); + var ver = new Version(); + var id3 = new ID3Tag(); + var rv = new Reservoir(); + var tak = new Takehiro(); + var parse = new Parse(); + var mpg = new MPGLib(); + + lame.setModules(ga, bs, p, qupvt, qu, vbr, ver, id3, mpg); + bs.setModules(ga, mpg, ver, vbr); + id3.setModules(bs, ver); + p.setModules(lame); + qu.setModules(bs, rv, qupvt, tak); + qupvt.setModules(tak, rv, lame.enc.psy); + rv.setModules(bs); + tak.setModules(qupvt); + vbr.setModules(lame, bs, ver); + gaud.setModules(parse, mpg); + parse.setModules(ver, id3, p); + + var gfp = lame.lame_init(); + + gfp.num_channels = channels; + gfp.in_samplerate = samplerate; + gfp.out_samplerate = samplerate;//fix by xiangyuecn 2018-12-6 01:48:12 64kbps以下可能无声音,手动控制输出码率 + gfp.brate = kbps; + gfp.mode = MPEGMode.STEREO; + gfp.quality = 3; + gfp.bWriteVbrTag = false; + gfp.disable_reservoir = true; + gfp.write_id3tag_automatic = false; + + var retcode = lame.lame_init_params(gfp); + var maxSamples = 1152; + var mp3buf_size = 0 | (1.25 * maxSamples + 7200); + var mp3buf = new_byte(mp3buf_size); + + this.encodeBuffer = function (left, right) { + if (channels == 1) { + right = left; + } + if (left.length > maxSamples) { + maxSamples = left.length; + mp3buf_size = 0 | (1.25 * maxSamples + 7200); + mp3buf = new_byte(mp3buf_size); + } + + var _sz = lame.lame_encode_buffer(gfp, left, right, left.length, mp3buf, 0, mp3buf_size); + return new Int8Array(mp3buf.subarray(0, _sz)); + }; + + this.flush = function () { + var _sz = lame.lame_encode_flush(gfp, mp3buf, 0, mp3buf_size); + return new Int8Array(mp3buf.subarray(0, _sz)); + }; +} + +//fix 精简 +L3Side.SFBMAX = (Encoder.SBMAX_s * 3); +//testFullLength(); +lamejs.Mp3Encoder = Mp3Encoder; +} +//fs=require('fs'); +lamejs(); + + +Recorder.lamejs=lamejs; + + +})); \ No newline at end of file diff --git a/public/web/js/mp3.js b/public/web/js/mp3.js new file mode 100644 index 0000000..d7b5f98 --- /dev/null +++ b/public/web/js/mp3.js @@ -0,0 +1,528 @@ +/* +mp3编码器,需带上src/engine/mp3-engine.js引擎使用 +https://github.com/xiangyuecn/Recorder + +当然最佳推荐使用mp3、wav格式,代码也是优先照顾这两种格式 +浏览器支持情况 +https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats +*/ +(function(factory){ + var browser=typeof window=="object" && !!window.document; + var win=browser?window:Object; //非浏览器环境,Recorder挂载在Object下面 + var rec=win.Recorder,ni=rec.i18n; + factory(rec,ni,ni.$T,browser); +}(function(Recorder,i18n,$T,isBrowser){ +"use strict"; + +var SampleS="48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000"; +var BitS="8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 192, 224, 256, 320"; +Recorder.prototype.enc_mp3={ + stable:true,takeEC:"full" + ,getTestMsg:function(){ + return $T("Zm7L::采样率范围:{1};比特率范围:{2}(不同比特率支持的采样率范围不同,小于32kbps时采样率需小于32000)",0,SampleS,BitS); + } +}; + +var NormalizeSet=function(set){ + var bS=set.bitRate, sS=set.sampleRate,s=sS; + if((" "+BitS+",").indexOf(" "+bS+",")==-1){ + Recorder.CLog($T("eGB9::{1}不在mp3支持的取值范围:{2}",0,"bitRate="+bS,BitS),3); + } + if((" "+SampleS+",").indexOf(" "+sS+",")==-1){//engine SmpFrqIndex函数会检测 + var arr=SampleS.split(", "),vs=[]; + for(var i=0;i0){ + if(mOffset+bufLen>memory.length){ + var tmp=new Int8Array(memory.length+Math.max(500000,bufLen)); + tmp.set(memory.subarray(0, mOffset)); + memory=tmp; + } + memory.set(buf,mOffset); + mOffset+=bufLen; + }; + + if(idxcur.memory.length){ + var tmp=new Int8Array(cur.memory.length+Math.max(500000,bufLen)); + tmp.set(cur.memory.subarray(0, cur.mOffset)); + cur.memory=tmp; + } + cur.memory.set(buf,cur.mOffset); + cur.mOffset+=bufLen; + }; + + switch(ed.action){ + case "stop": + cur.encObj=null; + delete wk_ctxs[ed.id]; + break; + case "encode": + cur.pcmSize+=ed.pcm.length; + try{ + var buf=cur.encObj.encodeBuffer(ed.pcm); + }catch(e){ //精简代码调用了abort + cur.err=e; + console.error(e); + }; + if(buf && buf.length>0){ + if(cur.takeoff){ + worker.onmessage({action:"takeoff",id:ed.id,chunk:buf}); + }else{ + addBytes(buf); + }; + }; + break; + case "complete": + try{ + var buf=cur.encObj.flush(); + }catch(e){ //精简代码调用了abort + cur.err=e; + console.error(e); + }; + if(buf && buf.length>0){ + if(cur.takeoff){ + worker.onmessage({action:"takeoff",id:ed.id,chunk:buf}); + }else{ + addBytes(buf); + }; + }; + if(cur.err){ + worker.onmessage({action:ed.action,id:ed.id + ,err:"MP3 Encoder: "+cur.err.message}); + break; + }; + + var data=[cur.memory.buffer.slice(0,cur.mOffset)]; + //去掉开头的标记信息帧 + var meta=wk_mp3TrimFix.fn(data,cur.mOffset,cur.pcmSize,cur.sampleRate); + + worker.onmessage({ + action:ed.action + ,id:ed.id + ,blob:data[0]||new ArrayBuffer(0) + ,meta:meta + }); + break; + }; + }; + + var initOnMsg=function(isW){ + worker.onmessage=function(e){ + var data=e; if(isW)data=e.data; + var ctx=openList[data.id]; + if(ctx){ + if(data.action=="takeoff"){ + //取走实时生成的mp3数据 + ctx.set.takeoffEncodeChunk(new Uint8Array(data.chunk.buffer)); + }else{ + //complete + ctx.call&&ctx.call(data); + ctx.call=null; + }; + }; + }; + }; + var initCtx=function(){ + var ctx={worker:worker,set:setOrNull}; + if(setOrNull){ + ctx.id=++openList.id; + openList[ctx.id]=ctx; + + NormalizeSet(setOrNull); + + worker.postMessage({ + action:"init" + ,id:ctx.id + ,sampleRate:setOrNull.sampleRate + ,bitRate:setOrNull.bitRate + ,takeoff:!!setOrNull.takeoffEncodeChunk + + ,x:new Int16Array(5)//低版本浏览器不支持序列化TypedArray + }); + }else{ + worker.postMessage({ + x:new Int16Array(5)//低版本浏览器不支持序列化TypedArray + }); + }; + return ctx; + }; + var scope,worker=mp3Worker; + + //非浏览器,不支持worker,或者开启失败,使用UI线程处理 + if(_badW || !HasWebWorker){ + Recorder.CLog($T("k9PT::当前环境不支持Web Worker,mp3实时编码器运行在主线程中"),3); + worker={ postMessage:function(ed){ run({data:ed}); } }; + scope={wkScope:{ + wk_ctxs:{}, wk_lame:Recorder.lamejs, wk_mp3TrimFix:mp3TrimFix + }}; + initOnMsg(); + return initCtx(); + }; + + try{ + if(!worker){ + //创建一个新Worker + var onmsg=(run+"").replace(/[\w\$]+\.onmessage/g,"self.postMessage"); + onmsg=onmsg.replace(/[\w\$]+\.wkScope/g,"wkScope"); + var jsCode=");wk_lame();self.onmessage="+onmsg; + jsCode+=";var wkScope={ wk_ctxs:{},wk_lame:wk_lame"; + jsCode+=",wk_mp3TrimFix:{rm:"+mp3TrimFix.rm+",fn:"+mp3TrimFix.fn+"} }"; + + var lamejsCode=Recorder.lamejs.toString(); + var url=(window.URL||webkitURL).createObjectURL(new Blob(["var wk_lame=(",lamejsCode,jsCode], {type:"text/javascript"})); + + worker=new Worker(url); + setTimeout(function(){ + (window.URL||webkitURL).revokeObjectURL(url);//必须要释放,不然每次调用内存都明显泄露内存 + },10000);//chrome 83 file协议下如果直接释放,将会使WebWorker无法启动 + initOnMsg(1); + }; + + var ctx=initCtx(); ctx.isW=1; + mp3Worker=worker; + return ctx; + }catch(e){//出错了就不要提供了 + worker&&worker.terminate(); + console.error(e); + return newContext(setOrNull, 1);//切换到UI线程处理 + }; +}; +Recorder.prototype.mp3_stop=function(startCtx){ + if(startCtx&&startCtx.worker){ + startCtx.worker.postMessage({ + action:"stop" + ,id:startCtx.id + }); + startCtx.worker=null; + delete openList[startCtx.id]; + + //疑似泄露检测 排除id + var opens=-1; + for(var k in openList){ + opens++; + }; + if(opens){ + Recorder.CLog($T("fT6M::mp3 worker剩{1}个未stop",0,opens),3); + }; + }; +}; +Recorder.prototype.mp3_encode=function(startCtx,pcm){ + if(startCtx&&startCtx.worker){ + startCtx.worker.postMessage({ + action:"encode" + ,id:startCtx.id + ,pcm:pcm + }); + }; +}; +Recorder.prototype.mp3_complete=function(startCtx,True,False,autoStop){ + var This=this; + if(startCtx&&startCtx.worker){ + startCtx.call=function(data){ + if(autoStop){ + This.mp3_stop(startCtx); + }; + if(data.err){ + False(data.err); + }else{ + mp3TrimFixSetMeta(data.meta,startCtx.set); + True(data.blob,"audio/mp3"); + }; + }; + startCtx.worker.postMessage({ + action:"complete" + ,id:startCtx.id + }); + }else{ + False($T("mPxH::mp3编码器未start")); + }; +}; + + + + + + + +//*******辅助函数************ + +/*读取lamejs编码出来的mp3信息,只能读特定格式,如果读取失败返回null +mp3Buffers=[ArrayBuffer,...] +length=mp3Buffers的数据二进制总长度 +*/ +Recorder.mp3ReadMeta=function(mp3Buffers,length){ + //kill babel-polyfill ES6 Number.parseInt 不然放到Worker里面找不到方法,也不能用typeof(x)==object 会被替换成 _typeof + var parseInt_ES3=typeof(window)!="undefined"&&window.parseInt||typeof(self)!="undefined"&&self.parseInt||parseInt; + + var u8arr0=new Uint8Array(mp3Buffers[0]||[]); + if(u8arr0.length<4){ + return null; + }; + var byteAt=function(idx,u8){ + return ("0000000"+((u8||u8arr0)[idx]||0).toString(2)).substr(-8); + }; + var b2=byteAt(0)+byteAt(1); + var b4=byteAt(2)+byteAt(3); + + if(!/^1{11}/.test(b2)){//未发现帧同步 + return null; + }; + var version=({"00":2.5,"10":2,"11":1})[b2.substr(11,2)]; + var layer=({"01":3})[b2.substr(13,2)];//仅支持Layer3 + var sampleRate=({ //lamejs -> Tables.samplerate_table + "1":[44100, 48000, 32000] + ,"2":[22050, 24000, 16000] + ,"2.5":[11025, 12000, 8000] + })[version]; + sampleRate&&(sampleRate=sampleRate[parseInt_ES3(b4.substr(4,2),2)]); + var bitRate=[ //lamejs -> Tables.bitrate_table + [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160] //MPEG 2 2.5 + ,[0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320]//MPEG 1 + ][version==1?1:0][parseInt_ES3(b4.substr(0,4),2)]; + + if(!version || !layer || !bitRate || !sampleRate){ + return null; + }; + + var duration=Math.round(length*8/bitRate); + var frame=layer==1?384:layer==2?1152:version==1?1152:576; + var frameDurationFloat=frame/sampleRate*1000; + var frameSize=Math.floor((frame*bitRate)/8/sampleRate*1000); + + //检测是否存在Layer3帧填充1字节。这里只获取第二帧的填充信息,首帧永远没有填充。其他帧可能隔一帧出现一个填充,或者隔很多帧出现一个填充;目测是取决于frameSize未舍入时的小数部分,因为有些采样率的frameSize会出现小数(11025、22050、44100 典型的除不尽),然后字节数无法表示这种小数,就通过一定步长来填充弥补小数部分丢失 + var hasPadding=0,seek=0; + for(var i=0;i=frameSize+3){ + var buf8=new Uint8Array(buf); + var idx=buf.byteLength-(seek-(frameSize+3)+1); + var ib4=byteAt(idx,buf8); + hasPadding=ib4.charAt(6)=="1"; + break; + }; + }; + if(hasPadding){ + frameSize++; + }; + + + return { + version:version //1 2 2.5 -> MPEG1 MPEG2 MPEG2.5 + ,layer:layer//3 -> Layer3 + ,sampleRate:sampleRate //采样率 hz + ,bitRate:bitRate //比特率 kbps + + ,duration:duration //音频时长 ms + ,size:length //总长度 byte + ,hasPadding:hasPadding //是否存在1字节填充,首帧永远没有,这个值其实代表的第二帧是否有填充,并不代表其他帧的 + ,frameSize:frameSize //每帧最大长度,含可能存在的1字节padding byte + ,frameDurationFloat:frameDurationFloat //每帧时长,含小数 ms + }; +}; + +//去掉lamejs开头的标记信息帧,免得mp3解码出来的时长比pcm的长太多 +var mp3TrimFix={//minfiy keep name +rm:Recorder.mp3ReadMeta +,fn:function(mp3Buffers,length,pcmLength,pcmSampleRate){ + var meta=this.rm(mp3Buffers,length); + if(!meta){ + return {err:"mp3 unknown format"}; + }; + var pcmDuration=Math.round(pcmLength/pcmSampleRate*1000); + + //开头多出这么多帧,移除掉;正常情况下最多为2帧 + var num=Math.floor((meta.duration-pcmDuration)/meta.frameDurationFloat); + if(num>0){ + var size=num*meta.frameSize-(meta.hasPadding?1:0);//首帧没有填充,第二帧可能有填充,这里假设最多为2帧(测试并未出现3帧以上情况),其他帧不管,就算出现了并且导致了错误后面自动容错 + length-=size; + var arr0=0,arrs=[]; + for(var i=0;i=arr.byteLength){ + size-=arr.byteLength; + arrs.push(arr); + mp3Buffers.splice(i,1); + i--; + }else{ + mp3Buffers[i]=arr.slice(size); + arr0=arr; + size=0; + }; + }; + var checkMeta=this.rm(mp3Buffers,length); + if(!checkMeta){ + //还原变更,应该不太可能会出现 + arr0&&(mp3Buffers[0]=arr0); + for(var i=0;i "+trimFix.duration+"ms"; + if(trimFix.remove>2){ + meta.err=(meta.err?meta.err+", ":"")+$T("b9zm::移除帧数过多"); + }; + }else{ + tag+=(meta.duration||"-")+"ms"; + }; + + if(meta.err){ + Recorder.CLog(tag,1,meta.err,meta); + }else{ + Recorder.CLog(tag,meta); + }; +}; + + + +})); \ No newline at end of file diff --git a/public/web/js/recorder.core.js b/public/web/js/recorder.core.js new file mode 100644 index 0000000..1dacecf --- /dev/null +++ b/public/web/js/recorder.core.js @@ -0,0 +1,1783 @@ +/* +录音 +https://github.com/xiangyuecn/Recorder +*/ +(function(factory){ + var browser=typeof window=="object" && !!window.document; + var win=browser?window:Object; //非浏览器环境,Recorder挂载在Object下面 + factory(win,browser); + //umd returnExports.js + if(typeof(define)=='function' && define.amd){ + define(function(){ + return win.Recorder; + }); + }; + if(typeof(module)=='object' && module.exports){ + module.exports=win.Recorder; + }; +}(function(Export,isBrowser){ +"use strict"; + +var NOOP=function(){}; +var IsNum=function(v){return typeof v=="number"}; + +var Recorder=function(set){ + return new initFn(set); +}; +var LM=Recorder.LM="2023-12-24 18:09"; +var GitUrl="https://github.com/xiangyuecn/Recorder"; +var RecTxt="Recorder"; +var getUserMediaTxt="getUserMedia"; +var srcSampleRateTxt="srcSampleRate"; +var sampleRateTxt="sampleRate"; +var bitRateTxt="bitRate"; +var CatchTxt="catch"; + +var WRec2=Export[RecTxt];//重复加载js +if(WRec2&&WRec2.LM==LM){ + WRec2.CLog(WRec2.i18n.$T("K8zP::重复导入{1}",0,RecTxt),3); + return; +}; + + +//是否已经打开了全局的麦克风录音,所有工作都已经准备好了,就等接收音频数据了 +Recorder.IsOpen=function(){ + var stream=Recorder.Stream; + if(stream){ + var tracks=stream.getTracks&&stream.getTracks()||stream.audioTracks||[]; + var track=tracks[0]; + if(track){ + var state=track.readyState; + return state=="live"||state==track.LIVE; + }; + }; + return false; +}; +/*H5录音时的AudioContext缓冲大小。会影响H5录音时的onProcess调用速率,相对于AudioContext.sampleRate=48000时,4096接近12帧/s,调节此参数可生成比较流畅的回调动画。 + 取值256, 512, 1024, 2048, 4096, 8192, or 16384 + 注意,取值不能过低,2048开始不同浏览器可能回调速率跟不上造成音质问题。 + 一般无需调整,调整后需要先close掉已打开的录音,再open时才会生效。 +*/ +Recorder.BufferSize=4096; +//销毁已持有的所有全局资源,当要彻底移除Recorder时需要显式的调用此方法 +Recorder.Destroy=function(){ + CLog(RecTxt+" Destroy"); + Disconnect();//断开可能存在的全局Stream、资源 + + for(var k in DestroyList){ + DestroyList[k](); + }; +}; +var DestroyList={}; +//登记一个需要销毁全局资源的处理方法 +Recorder.BindDestroy=function(key,call){ + DestroyList[key]=call; +}; +//判断浏览器是否支持录音,随时可以调用。注意:仅仅是检测浏览器支持情况,不会判断和调起用户授权,不会判断是否支持特定格式录音。 +Recorder.Support=function(){ + if(!isBrowser) return false; + var scope=navigator.mediaDevices||{}; + if(!scope[getUserMediaTxt]){ + scope=navigator; + scope[getUserMediaTxt]||(scope[getUserMediaTxt]=scope.webkitGetUserMedia||scope.mozGetUserMedia||scope.msGetUserMedia); + }; + if(!scope[getUserMediaTxt]){ + return false; + }; + Recorder.Scope=scope; + + if(!Recorder.GetContext()){ + return false; + }; + return true; +}; +//获取全局的AudioContext对象,如果浏览器不支持将返回null。tryNew时尝试创建新的非全局对象并返回,失败时依旧返回全局的;成功时返回新的,注意用完必须自己调用CloseNewCtx(ctx)关闭。注意:非用户操作(触摸、点击等)时调用返回的ctx.state可能是suspended状态,需要在用户操作时调用ctx.resume恢复成running状态,参考rec的runningContext配置 +Recorder.GetContext=function(tryNew){ + if(!isBrowser) return null; + var AC=window.AudioContext; + if(!AC){ + AC=window.webkitAudioContext; + }; + if(!AC){ + return null; + }; + + var ctx=Recorder.Ctx; + if(!ctx||ctx.state=="closed"){ + //不能反复构造,低版本number of hardware contexts reached maximum (6) + ctx=Recorder.Ctx=new AC(); + Recorder.NewCtxs=Recorder.NewCtxs||[]; + + Recorder.BindDestroy("Ctx",function(){ + var ctx=Recorder.Ctx; + if(ctx&&ctx.close){//能关掉就关掉,关不掉就保留着 + ctx.close(); + Recorder.Ctx=0; + }; + var arr=Recorder.NewCtxs; Recorder.NewCtxs=[]; + for(var i=0;i=pcmSampleRate时不会进行任何处理,小于时会进行重新采样 +prevChunkInfo:{} 可选,上次调用时的返回值,用于连续转换,本次调用将从上次结束位置开始进行处理。或可自行定义一个ChunkInfo从pcmDatas指定的位置开始进行转换 +option:{ 可选,配置项 + frameSize:123456 帧大小,每帧的PCM Int16的数量,采样率转换后的pcm长度为frameSize的整数倍,用于连续转换。目前仅在mp3格式时才有用,frameSize取值为1152,这样编码出来的mp3时长和pcm的时长完全一致,否则会因为mp3最后一帧录音不够填满时添加填充数据导致mp3的时长变长。 + frameType:"" 帧类型,一般为rec.set.type,提供此参数时无需提供frameSize,会自动使用最佳的值给frameSize赋值,目前仅支持mp3=1152(MPEG1 Layer3的每帧采采样数),其他类型=1。 + 以上两个参数用于连续转换时使用,最多使用一个,不提供时不进行帧的特殊处理,提供时必须同时提供prevChunkInfo才有作用。最后一段数据处理时无需提供帧大小以便输出最后一丁点残留数据。 + } + +返回ChunkInfo:{ + //可定义,从指定位置开始转换到结尾 + index:0 pcmDatas已处理到的索引 + offset:0.0 已处理到的index对应的pcm中的偏移的下一个位置 + + //可定义,指定的一个滤波配置:默认使用Recorder.IIRFilter低通滤波(可有效抑制混叠产生的杂音,新采样率大于pcm采样率的75%时不默认滤波),如果提供了配置但fn为null时将不滤波;sr为此滤波函数对应的初始化采样率,当采样率和pcmSampleRate参数不一致时将重新设为默认函数 + filter:null||{fn:fn(sample),sr:pcmSampleRate} + + //仅作为返回值 + frameNext:null||[Int16,...] 下一帧的部分数据,frameSize设置了的时候才可能会有 + sampleRate:16000 结果的采样率,<=newSampleRate + data:[Int16,...] 转换后的PCM结果;如果是连续转换,并且pcmDatas中并没有新数据时,data的长度可能为0 +} +*/ +Recorder.SampleData=function(pcmDatas,pcmSampleRate,newSampleRate,prevChunkInfo,option){ + var Txt="SampleData"; + prevChunkInfo||(prevChunkInfo={}); + var index=prevChunkInfo.index||0; + var offset=prevChunkInfo.offset||0; + + var filter=prevChunkInfo.filter; + if(filter&&filter.fn&&filter.sr!=pcmSampleRate){ + filter=null; CLog($T("d48C::{1}的filter采样率变了,重设滤波",0,Txt),3); + }; + if(!filter){//采样率差距比较大才开启低通滤波,最高频率用新采样率频率的3/4 + var freq=newSampleRate>pcmSampleRate*3/4?0: newSampleRate/2 *3/4; + filter={fn:freq?Recorder.IIRFilter(true,pcmSampleRate,freq):0}; + }; + filter.sr=pcmSampleRate; + var filterFn=filter.fn; + + var frameNext=prevChunkInfo.frameNext||[]; + option||(option={}); + var frameSize=option.frameSize||1; + if(option.frameType){ + frameSize=option.frameType=="mp3"?1152:1; + }; + + var nLen=pcmDatas.length; + if(index>nLen+1){ + CLog($T("tlbC::{1}似乎传入了未重置chunk {2}",0,Txt,index+">"+nLen),3); + }; + var size=0; + for(var i=index;i1){//新采样低于录音采样,进行抽样 + size=Math.floor(size/step); + }else{//新采样高于录音采样不处理,省去了插值处理 + step=1; + newSampleRate=pcmSampleRate; + }; + + size+=frameNext.length; + var res=new Int16Array(size); + var idx=0; + //添加上一次不够一帧的剩余数据 + for(var i=0;i0x7FFF) val=0x7FFF; else if(val<-0x8000) val=-0x8000; //Int16越界处理 + res[idx]=val; + + idx++; + i+=step;//抽样 + }; + offset=Math.max(0, i-il); //不太可能出现负数 + }; + //帧处理 + frameNext=null; + var frameNextSize=res.length%frameSize; + if(frameNextSize>0){ + var u8Pos=(res.length-frameNextSize)*2; + frameNext=new Int16Array(res.buffer.slice(u8Pos)); + res=new Int16Array(res.buffer.slice(0,u8Pos)); + }; + + return { + index:index + ,offset:offset + ,filter:filter + + ,frameNext:frameNext + ,sampleRate:newSampleRate + ,data:res + }; +}; + +/*IIR低通、高通滤波,移植自:https://gitee.com/52jian/digital-audio-filter AudioFilter.java + useLowPass: true或false,true为低通滤波,false为高通滤波 + sampleRate: 待处理pcm的采样率 + freq: 截止频率Hz,最大频率为sampleRate/2,低通时会切掉高于此频率的声音,高通时会切掉低于此频率的声音,注意滤波并非100%的切掉不需要的声音,而是减弱频率对应的声音,离截止频率越远对应声音减弱越厉害,离截止频率越近声音就几乎无衰减 + 返回的是一个函数,用此函数对pcm的每个采样值按顺序进行处理即可(不同pcm不可共用);注意此函数返回值可能会越界超过Int16范围,自行限制一下即可:Math.min(Math.max(val,-0x8000),0x7FFF) +可重新赋值一个函数,来改变Recorder的默认行为,比如SampleData中的低通滤波*/ +Recorder.IIRFilter=function(useLowPass, sampleRate, freq){ + var ov = 2 * Math.PI * freq / sampleRate; + var sn = Math.sin(ov); + var cs = Math.cos(ov); + var alpha = sn / 2; + + var a0 = 1 + alpha; + var a1 = (-2 * cs) / a0; + var a2 = (1 - alpha) / a0; + if(useLowPass){ + var b0 = (1 - cs) / 2 / a0; + var b1 = (1 - cs) / a0; + }else{ + var b0 = (1 + cs) / 2 / a0; + var b1 = -(1 + cs) / a0; + } + + var x1=0,x2=0,y=0,y1=0,y2=0; + var fn=function(x){ + y = b0 * x + b1 * x1 + b0 * x2 - a1 * y1 - a2 * y2; + x2 = x1; x1 = x; + y2 = y1; y1 = y; + return y; + }; + fn.Embed={x1:0,x2:0,y1:0,y2:0,b0:b0,b1:b1,a1:a1,a2:a2}; + return fn; +}; + + +/*计算音量百分比的一个方法 +pcmAbsSum: pcm Int16所有采样的绝对值的和 +pcmLength: pcm长度 +返回值:0-100,主要当做百分比用 +注意:这个不是分贝,因此没用volume当做名称*/ +Recorder.PowerLevel=function(pcmAbsSum,pcmLength){ + /*计算音量 https://blog.csdn.net/jody1989/article/details/73480259 + 更高灵敏度算法: + 限定最大感应值10000 + 线性曲线:低音量不友好 + power/10000*100 + 对数曲线:低音量友好,但需限定最低感应值 + (1+Math.log10(power/10000))*100 + */ + var power=(pcmAbsSum/pcmLength) || 0;//NaN + var level; + if(power<1251){//1250的结果10%,更小的音量采用线性取值 + level=Math.round(power/1250*10); + }else{ + level=Math.round(Math.min(100,Math.max(0,(1+Math.log(power/10000)/Math.log(10))*100))); + }; + return level; +}; + +/*计算音量,单位dBFS(满刻度相对电平) +maxSample: 为16位pcm采样的绝对值中最大的一个(计算峰值音量),或者为pcm中所有采样的绝对值的平局值 +返回值:-100~0 (最大值0dB,最小值-100代替-∞) +*/ +Recorder.PowerDBFS=function(maxSample){ + var val=Math.max(0.1, maxSample||0),Pref=0x7FFF; + val=Math.min(val,Pref); + //https://www.logiclocmusic.com/can-you-tell-the-decibel/ + //https://blog.csdn.net/qq_17256689/article/details/120442510 + val=20*Math.log(val/Pref)/Math.log(10); + return Math.max(-100,Math.round(val)); +}; + + + + +//带时间的日志输出,可设为一个空函数来屏蔽日志输出 +//CLog(msg,errOrLogMsg, logMsg...) err为数字时代表日志类型1:error 2:log默认 3:warn,否则当做内容输出,第一个参数不能是对象因为要拼接时间,后面可以接无数个输出参数 +Recorder.CLog=function(msg,err){ + if(typeof console!="object")return; + var now=new Date(); + var t=("0"+now.getMinutes()).substr(-2) + +":"+("0"+now.getSeconds()).substr(-2) + +"."+("00"+now.getMilliseconds()).substr(-3); + var recID=this&&this.envIn&&this.envCheck&&this.id; + var arr=["["+t+" "+RecTxt+(recID?":"+recID:"")+"]"+msg]; + var a=arguments,cwe=Recorder.CLog; + var i=2,fn=cwe.log||console.log; + if(IsNum(err)){ + fn=err==1?cwe.error||console.error:err==3?cwe.warn||console.warn:fn; + }else{ + i=1; + }; + for(;i1?arr:""); + }else{ + fn.apply(console,arr); + }; +}; +var CLog=function(){ Recorder.CLog.apply(this,arguments); }; +var IsLoser=true;try{IsLoser=!console.log.apply;}catch(e){}; + + + + +var ID=0; +function initFn(set){ + var This=this; This.id=++ID; + + //如果开启了流量统计,这里将发送一个图片请求 + Traffic(); + + + var o={ + type:"mp3" //输出类型:mp3,wav,wav输出文件尺寸超大不推荐使用,但mp3编码支持会导致js文件超大,如果不需支持mp3可以使js文件大幅减小 + //,bitRate:16 //比特率 wav:16或8位,MP3:8kbps 1k/s,8kbps 2k/s 录音文件很小 + + //,sampleRate:16000 //采样率,wav格式大小=sampleRate*时间;mp3此项对低比特率有影响,高比特率几乎无影响。 + //wav任意值,mp3取值范围:48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000 + //采样率参考https://www.cnblogs.com/devin87/p/mp3-recorder.html + + ,onProcess:NOOP //fn(buffers,powerLevel,bufferDuration,bufferSampleRate,newBufferIdx,asyncEnd) buffers=[[Int16,...],...]:缓冲的PCM数据,为从开始录音到现在的所有pcm片段;powerLevel:当前缓冲的音量级别0-100,bufferDuration:已缓冲时长,bufferSampleRate:缓冲使用的采样率(当type支持边录边转码(Worker)时,此采样率和设置的采样率相同,否则不一定相同);newBufferIdx:本次回调新增的buffer起始索引;asyncEnd:fn() 如果onProcess是异步的(返回值为true时),处理完成时需要调用此回调,如果不是异步的请忽略此参数,此方法回调时必须是真异步(不能真异步时需用setTimeout包裹)。onProcess返回值:如果返回true代表开启异步模式,在某些大量运算的场合异步是必须的,必须在异步处理完成时调用asyncEnd(不能真异步时需用setTimeout包裹),在onProcess执行后新增的buffer会全部替换成空数组,因此本回调开头应立即将newBufferIdx到本次回调结尾位置的buffer全部保存到另外一个数组内,处理完成后写回buffers中本次回调的结尾位置。 + + //*******高级设置****** + //,sourceStream:MediaStream Object + //可选直接提供一个媒体流,从这个流中录制、实时处理音频数据(当前Recorder实例独享此流);不提供时为普通的麦克风录音,由getUserMedia提供音频流(所有Recorder实例共享同一个流) + //比如:audio、video标签dom节点的captureStream方法(实验特性,不同浏览器支持程度不高)返回的流;WebRTC中的remote流;自己创建的流等 + //注意:流内必须至少存在一条音轨(Audio Track),比如audio标签必须等待到可以开始播放后才会有音轨,否则open会失败 + + //,runningContext:AudioContext + //可选提供一个state为running状态的AudioContext对象(ctx);默认会在rec.open时自动创建一个新的ctx,无用户操作(触摸、点击等)时调用rec.open的ctx.state可能为suspended,会在rec.start时尝试进行ctx.resume,如果也无用户操作ctx.resume可能不会恢复成running状态(目前仅iOS上有此兼容性问题),导致无法去读取媒体流,这时请提前在用户操作时调用Recorder.GetContext(true)来得到一个running状态AudioContext(用完需调用CloseNewCtx(ctx)关闭) + + //,audioTrackSet:{ deviceId:"",groupId:"", autoGainControl:true, echoCancellation:true, noiseSuppression:true } + //普通麦克风录音时getUserMedia方法的audio配置参数,比如指定设备id,回声消除、降噪开关;注意:提供的任何配置值都不一定会生效 + //由于麦克风是全局共享的,所以新配置后需要close掉以前的再重新open + //更多参考: https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints + + //,disableEnvInFix:false 内部参数,禁用设备卡顿时音频输入丢失补偿功能 + + //,takeoffEncodeChunk:NOOP //fn(chunkBytes) chunkBytes=[Uint8,...]:实时编码环境下接管编码器输出,当编码器实时编码出一块有效的二进制音频数据时实时回调此方法;参数为二进制的Uint8Array,就是编码出来的音频数据片段,所有的chunkBytes拼接在一起即为完整音频。本实现的想法最初由QQ2543775048提出 + //当提供此回调方法时,将接管编码器的数据输出,编码器内部将放弃存储生成的音频数据;如果当前编码器或环境不支持实时编码处理,将在open时直接走fail逻辑 + //因此提供此回调后调用stop方法将无法获得有效的音频数据,因为编码器内没有音频数据,因此stop时返回的blob将是一个字节长度为0的blob + //大部分录音格式编码器都支持实时编码(边录边转码),比如mp3格式:会实时的将编码出来的mp3片段通过此方法回调,所有的chunkBytes拼接到一起即为完整的mp3,此种拼接的结果比mock方法实时生成的音质更加,因为天然避免了首尾的静默 + //不支持实时编码的录音格式不可以提供此回调(wav格式不支持,因为wav文件头中需要提供文件最终长度),提供了将在open时直接走fail逻辑 + }; + + for(var k in set){ + o[k]=set[k]; + }; + This.set=o; + + var vB=o[bitRateTxt],vS=o[sampleRateTxt]; //校验配置参数 + if(vB&&!IsNum(vB) || vS&&!IsNum(vS)){ + This.CLog($T.G("IllegalArgs-1",[$T("VtS4::{1}和{2}必须是数值",0,sampleRateTxt,bitRateTxt)]),1,set); + }; + o[bitRateTxt]=+vB||16; + o[sampleRateTxt]=+vS||16000; + + This.state=0;//运行状态,0未录音 1录音中 2暂停 3等待ctx激活 + This._S=9;//stop同步锁,stop可以阻止open过程中还未运行的start + This.Sync={O:9,C:9};//和Recorder.Sync一致,只不过这个是非全局的,仅用来简化代码逻辑,无实际作用 +}; +//同步锁,控制对Stream的竞争;用于close时中断异步的open;一个对象open如果变化了都要阻止close,Stream的控制权交个新的对象 +Recorder.Sync={/*open*/O:9,/*close*/C:9}; + +Recorder.prototype=initFn.prototype={ + CLog:CLog + + //流相关的数据存储在哪个对象里面;如果提供了sourceStream,数据直接存储在当前对象中,否则存储在全局 + ,_streamStore:function(){ + if(this.set.sourceStream){ + return this; + }else{ + return Recorder; + } + } + //当前实例用到的AudioContext,可能是全局的,也可能是独享的 + ,_streamCtx:function(){ + var m=this._streamStore().Stream; + return m&&m._c; + } + + //打开录音资源True(),False(msg,isUserNotAllow),需要调用close。注意:此方法是异步的;一般使用时打开,用完立即关闭;可重复调用,可用来测试是否能录音;open和start至少有一个应当在用户操作(触摸、点击等)下进行调用,原因参考runningContext配置 + ,open:function(True,False){ + var This=this,set=This.set,streamStore=This._streamStore(),newCtx=0; + True=True||NOOP; + var failCall=function(errMsg,isUserNotAllow){ + isUserNotAllow=!!isUserNotAllow; + This.CLog($T("5tWi::录音open失败:")+errMsg+",isUserNotAllow:"+isUserNotAllow,1); + if(newCtx)Recorder.CloseNewCtx(newCtx); + False&&False(errMsg,isUserNotAllow); + }; + + This._streamTag=getUserMediaTxt; + var ok=function(){ + This.CLog("open ok, id:"+This.id+" stream:"+This._streamTag); + True(); + + This._SO=0;//解除stop对open中的start调用的阻止 + }; + + + //同步锁 + var Lock=streamStore.Sync; + var lockOpen=++Lock.O,lockClose=Lock.C; + This._O=This._O_=lockOpen;//记住当前的open,如果变化了要阻止close,这里假定了新对象已取代当前对象并且不再使用 + This._SO=This._S;//记住open过程中的stop,中途任何stop调用后都不能继续open中的start + var lockFail=function(){ + //允许多次open,但不允许任何一次close,或者自身已经调用了关闭 + if(lockClose!=Lock.C || !This._O){ + var err=$T("dFm8::open被取消"); + if(lockOpen==Lock.O){ + //无新的open,已经调用了close进行取消,此处应让上次的close明确生效 + This.close(); + }else{ + err=$T("VtJO::open被中断"); + }; + failCall(err); + return true; + }; + }; + + //环境配置检查 + if(!isBrowser){ + failCall($T.G("NonBrowser-1",["open"])+$T("EMJq::,可尝试使用RecordApp解决方案")+"("+GitUrl+"/tree/master/app-support-sample)"); + return; + }; + var checkMsg=This.envCheck({envName:"H5",canProcess:true}); + if(checkMsg){ + failCall($T("A5bm::不能录音:")+checkMsg); + return; + }; + + + //***********已直接提供了音频流************ + if(set.sourceStream){ + This._streamTag="set.sourceStream"; + if(!Recorder.GetContext()){ + failCall($T("1iU7::不支持此浏览器从流中获取录音")); + return; + }; + + Disconnect(streamStore);//可能已open过,直接先尝试断开 + var stream=This.Stream=set.sourceStream; + stream._RC=set.runningContext; + stream._call={}; + + try{ + Connect(streamStore); + }catch(e){ + Disconnect(streamStore); + failCall($T("BTW2::从流中打开录音失败:")+e.message); + return; + } + ok(); + return; + }; + + + //***********打开麦克风得到全局的音频流************ + var codeFail=function(code,msg){ + try{//跨域的优先检测一下 + window.top.a; + }catch(e){ + failCall($T("Nclz::无权录音(跨域,请尝试给iframe添加麦克风访问策略,如{1})",0,'allow="camera;microphone"')); + return; + }; + + if(/Permission|Allow/i.test(code)){ + failCall($T("gyO5::用户拒绝了录音权限"),true); + }else if(window.isSecureContext===false){ + failCall($T("oWNo::浏览器禁止不安全页面录音,可开启https解决")); + }else if(/Found/i.test(code)){//可能是非安全环境导致的没有设备 + failCall(msg+$T("jBa9::,无可用麦克风")); + }else{ + failCall(msg); + }; + }; + + + //如果已打开并且有效就不要再打开了 + if(Recorder.IsOpen()){ + ok(); + return; + }; + if(!Recorder.Support()){ + codeFail("",$T("COxc::此浏览器不支持录音")); + return; + }; + //尽量先创建好ctx,不然异步下创建可能不是running状态 + var ctx=set.runningContext; + if(!ctx)ctx=newCtx=Recorder.GetContext(true); + + //请求权限,如果从未授权,一般浏览器会弹出权限请求弹框 + var f1=function(stream){ + //https://github.com/xiangyuecn/Recorder/issues/14 获取到的track.readyState!="live",刚刚回调时可能是正常的,但过一下可能就被关掉了,原因不明。延迟一下保证真异步。对正常浏览器不影响 + setTimeout(function(){ + stream._call={}; + var oldStream=Recorder.Stream; + if(oldStream){ + Disconnect(); //直接断开已存在的,旧的Connect未完成会自动终止 + stream._call=oldStream._call; + }; + Recorder.Stream=stream; + stream._c=ctx; + stream._RC=set.runningContext; + if(lockFail())return; + + if(Recorder.IsOpen()){ + if(oldStream)This.CLog($T("upb8::发现同时多次调用open"),1); + + Connect(streamStore,1); + ok(); + }else{ + failCall($T("Q1GA::录音功能无效:无音频流")); + }; + },100); + }; + var f2=function(e){ + var code=e.name||e.message||e.code+":"+e; + This.CLog($T("xEQR::请求录音权限错误"),1,e); + + codeFail(code,$T("bDOG::无法录音:")+code); + }; + + var trackSet=set.audioTrackSet||{}; + trackSet[sampleRateTxt]=ctx[sampleRateTxt];//必须指明采样率,不然手机上MediaRecorder采样率16k + + var mSet={audio:trackSet}; + try{ + var pro=Recorder.Scope[getUserMediaTxt](mSet,f1,f2); + }catch(e){//不能设置trackSet就算了 + This.CLog(getUserMediaTxt,3,e); + mSet={audio:true}; + pro=Recorder.Scope[getUserMediaTxt](mSet,f1,f2); + }; + This.CLog(getUserMediaTxt+"("+JSON.stringify(mSet)+") "+CtxState(ctx) + +$T("RiWe::,未配置noiseSuppression和echoCancellation时浏览器可能会自动打开降噪和回声消除,移动端可能会降低系统播放音量(关闭录音后可恢复),请参阅文档中audioTrackSet配置") + +"("+GitUrl+") LM:"+LM+" UA:"+navigator.userAgent); + if(pro&&pro.then){ + pro.then(f1)[CatchTxt](f2); //fix 关键字,保证catch压缩时保持字符串形式 + }; + } + //关闭释放录音资源 + ,close:function(call){ + call=call||NOOP; + + var This=this,streamStore=This._streamStore(); + This._stop(); + var sTag=" stream:"+This._streamTag; + + var Lock=streamStore.Sync; + This._O=0; + if(This._O_!=Lock.O){ + //唯一资源Stream的控制权已交给新对象,这里不能关闭。此处在每次都弹权限的浏览器内可能存在泄漏,新对象被拒绝权限可能不会调用close,忽略这种不处理 + This.CLog($T("hWVz::close被忽略(因为同时open了多个rec,只有最后一个会真正close)")+sTag,3); + call(); + return; + }; + Lock.C++;//获得控制权 + + Disconnect(streamStore); + + This.CLog("close,"+sTag); + call(); + } + + + + + + /*模拟一段录音数据,后面可以调用stop进行编码,需提供pcm数据[1,2,3...],pcm的采样率*/ + ,mock:function(pcmData,pcmSampleRate){ + var This=this; + This._stop();//清理掉已有的资源 + + This.isMock=1; + This.mockEnvInfo=null; + This.buffers=[pcmData]; + This.recSize=pcmData.length; + This._setSrcSR(pcmSampleRate); + This._streamTag="mock"; + return This; + } + ,_setSrcSR:function(sampleRate){ + var This=this,set=This.set; + var setSr=set[sampleRateTxt]; + if(setSr>sampleRate){ + set[sampleRateTxt]=sampleRate; + }else{ setSr=0 } + This[srcSampleRateTxt]=sampleRate; + This.CLog(srcSampleRateTxt+": "+sampleRate+" set."+sampleRateTxt+": "+set[sampleRateTxt]+(setSr?" "+$T("UHvm::忽略")+": "+setSr:""), setSr?3:0); + } + ,envCheck:function(envInfo){//平台环境下的可用性检查,任何时候都可以调用检查,返回errMsg:""正常,"失败原因" + //envInfo={envName:"H5",canProcess:true} + var errMsg,This=this,set=This.set; + + //检测CPU的数字字节序,TypedArray字节序是个迷,直接拒绝罕见的大端模式,因为找不到这种CPU进行测试 + var tag="CPU_BE"; + if(!errMsg && !Recorder[tag] && typeof Int8Array=="function" && !new Int8Array(new Int32Array([1]).buffer)[0]){ + Traffic(tag); //如果开启了流量统计,这里将发送一个图片请求 + errMsg=$T("Essp::不支持{1}架构",0,tag); + }; + + //编码器检查环境下配置是否可用 + if(!errMsg){ + var type=set.type,hasFn=This[type+"_envCheck"]; + if(set.takeoffEncodeChunk){//需要实时编码返回数据,此时需要检查环境是否有实时特性、和是否可实时编码 + if(!hasFn){ + errMsg=$T("2XBl::{1}类型不支持设置takeoffEncodeChunk",0,type)+(This[type]?"":$T("LG7e::(未加载编码器)")); + }else if(!envInfo.canProcess){ + errMsg=$T("7uMV::{1}环境不支持实时处理",0,envInfo.envName); + }; + }; + + if(!errMsg && hasFn){//编码器已实现环境检查 + errMsg=This[type+"_envCheck"](envInfo,set); + }; + }; + + return errMsg||""; + } + ,envStart:function(mockEnvInfo,sampleRate){//平台环境相关的start调用 + var This=this,set=This.set; + This.isMock=mockEnvInfo?1:0;//非H5环境需要启用mock,并提供envCheck需要的环境信息 + This.mockEnvInfo=mockEnvInfo; + This.buffers=[];//数据缓冲 + This.recSize=0;//数据大小 + if(mockEnvInfo){ + This._streamTag="env$"+mockEnvInfo.envName; + }; + + This.state=1;//运行状态,0未录音 1录音中 2暂停 3等待ctx激活 + This.envInLast=0;//envIn接收到最后录音内容的时间 + This.envInFirst=0;//envIn接收到的首个录音内容的录制时间 + This.envInFix=0;//补偿的总时间 + This.envInFixTs=[];//补偿计数列表 + + //engineCtx需要提前确定最终的采样率 + This._setSrcSR(sampleRate); + + This.engineCtx=0; + //此类型有边录边转码(Worker)支持 + if(This[set.type+"_start"]){ + var engineCtx=This.engineCtx=This[set.type+"_start"](set); + if(engineCtx){ + engineCtx.pcmDatas=[]; + engineCtx.pcmSize=0; + }; + }; + } + ,envResume:function(){//和平台环境无关的恢复录音 + //重新开始计数 + this.envInFixTs=[]; + } + ,envIn:function(pcm,sum){//和平台环境无关的pcm[Int16]输入 + var This=this,set=This.set,engineCtx=This.engineCtx; + if(This.state!=1){ + if(!This.state)This.CLog("envIn at state=0",3); + return; + }; + var bufferSampleRate=This[srcSampleRateTxt]; + var size=pcm.length; + var powerLevel=Recorder.PowerLevel(sum,size); + + var buffers=This.buffers; + var bufferFirstIdx=buffers.length;//之前的buffer都是经过onProcess处理好的,不允许再修改 + buffers.push(pcm); + + //有engineCtx时会被覆盖,这里保存一份 + var buffersThis=buffers; + var bufferFirstIdxThis=bufferFirstIdx; + + //卡顿丢失补偿:因为设备很卡的时候导致H5接收到的数据量不够造成播放时候变速,结果比实际的时长要短,此处保证了不会变短,但不能修复丢失的音频数据造成音质变差。当前算法采用输入时间侦测下一帧是否需要添加补偿帧,需要(6次输入||超过1秒)以上才会开始侦测,如果滑动窗口内丢失超过1/3就会进行补偿 + var now=Date.now(); + var pcmTime=Math.round(size/bufferSampleRate*1000); + This.envInLast=now; + if(This.buffers.length==1){//记下首个录音数据的录制时间 + This.envInFirst=now-pcmTime; + }; + var envInFixTs=This.envInFixTs; + envInFixTs.splice(0,0,{t:now,d:pcmTime}); + //保留3秒的计数滑动窗口,另外超过3秒的停顿不补偿 + var tsInStart=now,tsPcm=0; + for(var i=0;i3000){ + envInFixTs.length=i; + break; + }; + tsInStart=o.t; + tsPcm+=o.d; + }; + //达到需要的数据量,开始侦测是否需要补偿 + var tsInPrev=envInFixTs[1]; + var tsIn=now-tsInStart; + var lost=tsIn-tsPcm; + if( lost>tsIn/3 && (tsInPrev&&tsIn>1000 || envInFixTs.length>=6) ){ + //丢失过多,开始执行补偿 + var addTime=now-tsInPrev.t-pcmTime;//距离上次输入丢失这么多ms + if(addTime>pcmTime/5){//丢失超过本帧的1/5 + var fixOpen=!set.disableEnvInFix; + This.CLog("["+now+"]"+i18n.get(fixOpen?$T("4Kfd::补偿{1}ms",1):$T("bM5i::未补偿{1}ms",1),[addTime]),3); + This.envInFix+=addTime; + + //用静默进行补偿 + if(fixOpen){ + var addPcm=new Int16Array(addTime*bufferSampleRate/1000); + size+=addPcm.length; + buffers.push(addPcm); + }; + }; + }; + + + var sizeOld=This.recSize,addSize=size; + var bufferSize=sizeOld+addSize; + This.recSize=bufferSize;//此值在onProcess后需要修正,可能新数据被修改 + + + //此类型有边录边转码(Worker)支持,开启实时转码 + if(engineCtx){ + //转换成set的采样率 + var chunkInfo=Recorder.SampleData(buffers,bufferSampleRate,set[sampleRateTxt],engineCtx.chunkInfo); + engineCtx.chunkInfo=chunkInfo; + + sizeOld=engineCtx.pcmSize; + addSize=chunkInfo.data.length; + bufferSize=sizeOld+addSize; + engineCtx.pcmSize=bufferSize;//此值在onProcess后需要修正,可能新数据被修改 + + buffers=engineCtx.pcmDatas; + bufferFirstIdx=buffers.length; + buffers.push(chunkInfo.data); + bufferSampleRate=chunkInfo[sampleRateTxt]; + }; + + var duration=Math.round(bufferSize/bufferSampleRate*1000); + var bufferNextIdx=buffers.length; + var bufferNextIdxThis=buffersThis.length; + + //允许异步处理buffer数据 + var asyncEnd=function(){ + //重新计算size,异步的早已减去添加的,同步的需去掉本次添加的然后重新计算 + var num=asyncBegin?0:-addSize; + var hasClear=buffers[0]==null; + for(var i=bufferFirstIdx;i10 && This.envInFirst-now>1000){ //1秒后开始onProcess性能监测 + This.CLog(procTxt+$T("2ghS::低性能,耗时{1}ms",0,slowT),3); + }; + + if(asyncBegin===true){ + //开启了异步模式,onProcess已接管buffers新数据,立即清空,避免出现未处理的数据 + var hasClear=0; + for(var i=bufferFirstIdx;i"+res.length,Date.now()-t1)); + + setTimeout(function(){ + t1=Date.now(); + This[set.type](res,function(blob,mime){ + ok(blob,mime,duration); + },function(msg){ + err(msg); + }); + }); + } + +}; + + + + + +//=======从WebM字节流中提取pcm数据,提取成功返回Float32Array,失败返回null||-1===== +var WebM_Extract=function(inBytes, scope){ + if(!scope.pos){ + scope.pos=[0]; scope.tracks={}; scope.bytes=[]; + }; + var tracks=scope.tracks, position=[scope.pos[0]]; + var endPos=function(){ scope.pos[0]=position[0] }; + + var sBL=scope.bytes.length; + var bytes=new Uint8Array(sBL+inBytes.length); + bytes.set(scope.bytes); bytes.set(inBytes,sBL); + scope.bytes=bytes; + + //先读取文件头和Track信息 + if(!scope._ht){ + readMatroskaVInt(bytes, position);//EBML Header + readMatroskaBlock(bytes, position);//跳过EBML Header内容 + if(!BytesEq(readMatroskaVInt(bytes, position), [0x18,0x53,0x80,0x67])){ + return;//未识别到Segment + } + readMatroskaVInt(bytes, position);//跳过Segment长度值 + while(position[0]32 bit",3); + } + if(track0[sampleRateTxt]!=scope[sampleRateTxt] || track0.bitDepth!=32 || track0.channels<1 || !/(\b|_)PCM\b/i.test(track0.codec)){ + scope.bytes=[];//格式非预期 无法处理,清空缓冲数据 + if(!scope.bad)CLog("WebM Track Unexpected",3,scope); + scope.bad=1; + return -1; + } + + //循环读取Cluster内的SimpleBlock + var datas=[],dataLen=0; + while(position[0]1){//多声道,提取一个声道 + var arr2=[]; + for(var i=0;i=arr.length)return; + var b0=arr[i],b2=("0000000"+b0.toString(2)).substr(-8); + var m=/^(0*1)(\d*)$/.exec(b2); + if(!m)return; + var len=m[1].length, val=[]; + if(i+len>arr.length)return; + for(var i2=0;i2arr.length)return; + for(var i2=0;i2args.length){ v="{?}"; CLog("i18n["+key+"] no {"+a+"}: "+val,3) } + return b?"":v; + }); + } + /**返回一个国际化文本,返回的文本取决于i18n.lang。 + 调用参数:T("key:[lang]:中文{1}","[lang]:英文{1}",...,0,"args1","args2"),除了key:,其他都是可选的,文本如果在语言实例中不存在会push进去,第一个文本无lang时默认zh,第二个无lang时默认en,文本中用{1-n}来插入args + 第一个args前面这个参数必须是0;也可以不提供args,这个参数填args的数量,此时不返回文本,只返回key,再用i18n.get提供参数获取文本 + 本函数调用,第一个文本需中文,调用尽量简单,不要换行,方便后续自动提取翻译列表 + args如果旧的参数位置发生了变更,应当使用新的key,让旧的翻译失效,增加args无需更换key + key的生成使用随机字符串,不同源码里面可以搞个不同前缀: + s="";L=4; for(var i=0,n;i0)return key; + return i18n.v_G(key,args); + } +}; +var $T=i18n.$T; $T.G=i18n.get; +//预定义文本 +$T("NonBrowser-1::非浏览器环境,不支持{1}",1); +$T("IllegalArgs-1::参数错误:{1}",1); +$T("NeedImport-2::调用{1}需要先导入{2}",2); +$T("NotSupport-1::不支持:{1}",1); +//=====End i18n===== + + + +//流量统计用1像素图片地址,设置为空将不参与统计 +Recorder.TrafficImgUrl="//ia.51.la/go1?id=20469973&pvFlag=1"; +var Traffic=Recorder.Traffic=function(report){ + if(!isBrowser)return; + report=report?"/"+RecTxt+"/Report/"+report:""; + var imgUrl=Recorder.TrafficImgUrl; + if(imgUrl){ + var data=Recorder.Traffic; + var m=/^(https?:..[^\/#]*\/?)[^#]*/i.exec(location.href)||[]; + var host=(m[1]||"http://file/"); + var idf=(m[0]||host)+report; + + if(imgUrl.indexOf("//")==0){ + //给url加上http前缀,如果是file协议下,不加前缀没法用 + if(/^https:/i.test(idf)){ + imgUrl="https:"+imgUrl; + }else{ + imgUrl="http:"+imgUrl; + }; + }; + if(report){ + imgUrl=imgUrl+"&cu="+encodeURIComponent(host+report); + }; + + if(!data[idf]){ + data[idf]=1; + + var img=new Image(); + img.src=imgUrl; + CLog("Traffic Analysis Image: "+(report||RecTxt+".TrafficImgUrl="+Recorder.TrafficImgUrl)); + }; + }; +}; + + + +if(WRec2){ + CLog($T("8HO5::覆盖导入{1}",0,RecTxt),1); + WRec2.Destroy(); +}; +Export[RecTxt]=Recorder; + +})); \ No newline at end of file diff --git a/public/web/js/voice.html b/public/web/js/voice.html new file mode 100644 index 0000000..f3d6f97 --- /dev/null +++ b/public/web/js/voice.html @@ -0,0 +1,402 @@ + + + + + + + + + + 远程喊话 + + + + + + + + + + + +
+
+ + + +
+ +
+ +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/public/web/js/webView.js b/public/web/js/webView.js new file mode 100644 index 0000000..6163874 --- /dev/null +++ b/public/web/js/webView.js @@ -0,0 +1 @@ +!function (e, n) { "object" == typeof exports && "undefined" != typeof module ? module.exports = n() : "function" == typeof define && define.amd ? define(n) : (e = e || self).uni = n() }(this, (function () { "use strict"; try { var e = {}; Object.defineProperty(e, "passive", { get: function () { !0 } }), window.addEventListener("test-passive", null, e) } catch (e) { } var n = Object.prototype.hasOwnProperty; function t(e, t) { return n.call(e, t) } var i = [], a = function (e, n) { var t = { options: { timestamp: +new Date }, name: e, arg: n }; if (window.__dcloud_weex_postMessage || window.__dcloud_weex_) { if ("postMessage" === e) { var a = { data: [n] }; return window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessage(a) : window.__dcloud_weex_.postMessage(JSON.stringify(a)) } var o = { type: "WEB_INVOKE_APPSERVICE", args: { data: t, webviewIds: i } }; window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessageToService(o) : window.__dcloud_weex_.postMessageToService(JSON.stringify(o)) } if (!window.plus) return window.parent.postMessage({ type: "WEB_INVOKE_APPSERVICE", data: t, pageId: "" }, "*"); if (0 === i.length) { var r = plus.webview.currentWebview(); if (!r) throw new Error("plus.webview.currentWebview() is undefined"); var d = r.parent(), s = ""; s = d ? d.id : r.id, i.push(s) } if (plus.webview.getWebviewById("__uniapp__service")) plus.webview.postMessageToUniNView({ type: "WEB_INVOKE_APPSERVICE", args: { data: t, webviewIds: i } }, "__uniapp__service"); else { var w = JSON.stringify(t); plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat("WEB_INVOKE_APPSERVICE", '",').concat(w, ",").concat(JSON.stringify(i), ");")) } }, o = { navigateTo: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; a("navigateTo", { url: encodeURI(n) }) }, navigateBack: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.delta; a("navigateBack", { delta: parseInt(n) || 1 }) }, switchTab: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; a("switchTab", { url: encodeURI(n) }) }, reLaunch: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; a("reLaunch", { url: encodeURI(n) }) }, redirectTo: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; a("redirectTo", { url: encodeURI(n) }) }, getEnv: function (e) { window.plus ? e({ plus: !0 }) : e({ h5: !0 }) }, postMessage: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; a("postMessage", e.data || {}) } }, r = /uni-app/i.test(navigator.userAgent), d = /Html5Plus/i.test(navigator.userAgent), s = /complete|loaded|interactive/; var w = window.my && navigator.userAgent.indexOf("AlipayClient") > -1; var u = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent); var c = window.qq && window.qq.miniProgram && /QQ/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); var g = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent); var v = window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); var p = window.qa && /quickapp/i.test(navigator.userAgent); for (var l, _ = function () { window.UniAppJSBridge = !0, document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady", { bubbles: !0, cancelable: !0 })) }, f = [function (e) { if (r || d) return window.__dcloud_weex_postMessage || window.__dcloud_weex_ ? document.addEventListener("DOMContentLoaded", e) : window.plus && s.test(document.readyState) ? setTimeout(e, 0) : document.addEventListener("plusready", e), o }, function (e) { if (v) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("WeixinJSBridgeReady", e), window.wx.miniProgram }, function (e) { if (c) return window.QQJSBridge && window.QQJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("QQJSBridgeReady", e), window.qq.miniProgram }, function (e) { if (w) { document.addEventListener("DOMContentLoaded", e); var n = window.my; return { navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv } } }, function (e) { if (u) return document.addEventListener("DOMContentLoaded", e), window.swan.webView }, function (e) { if (g) return document.addEventListener("DOMContentLoaded", e), window.tt.miniProgram }, function (e) { if (p) { window.QaJSBridge && window.QaJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("QaJSBridgeReady", e); var n = window.qa; return { navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv } } }, function (e) { return document.addEventListener("DOMContentLoaded", e), o }], m = 0; m < f.length && !(l = f[m](_)); m++); l || (l = {}); var E = "undefined" != typeof uni ? uni : {}; if (!E.navigateTo) for (var b in l) t(l, b) && (E[b] = l[b]); return E.webView = l, E })); \ No newline at end of file diff --git a/public/web/login.html b/public/web/login.html new file mode 100644 index 0000000..b0f0dff --- /dev/null +++ b/public/web/login.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + 登录页面 + + + + + + + + + + +
+ 密码不能为空 +
+
+ 登录中.... +
+
+ 登录失败 +
+
+ 登录成功 +
+ + + + + + + diff --git a/public/web/screen_main.html b/public/web/screen_main.html new file mode 100644 index 0000000..3c12411 --- /dev/null +++ b/public/web/screen_main.html @@ -0,0 +1,502 @@ + + + + + + + + + + + + 我的LED屏 + + + + + + + + + + + + + + + +
+ + + + +
+
+
    +
  • + 屏参 +
  • +
  • + 节目 +
  • +
  • + 屏幕亮度 +
  • +
  • + 虚拟遥控器 +
  • +
  • + 开启屏幕 +
  • +
  • + 关闭屏幕 +
  • +
  • + 清除屏幕 +
  • +
  • + 开机参数 +
  • +
  • + + 返回主页 + +
  • +
+
+
+ +
+

版本号 V1.0.0

+
+ + +
+ +
+
+

开机参数

+
+

开机界面

+
+ +
+
+
+

重置开关

+
+ +
+
+
+ +
+
+ + + + + +
+ 结果内容 +
+
+ + + + + \ No newline at end of file diff --git a/public/web/screen_par.html b/public/web/screen_par.html new file mode 100644 index 0000000..d44b65b --- /dev/null +++ b/public/web/screen_par.html @@ -0,0 +1,301 @@ + + + + + + + + + + + + + 屏幕参数 + + + + + + + + + +
+
+ <返回 +
+
+ +
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • + +
  • + + +
  • +
+
+ + +
+
+ + +
+ 结果内容 +
+ + + + diff --git a/public/web/screen_program.html b/public/web/screen_program.html new file mode 100644 index 0000000..814b84b --- /dev/null +++ b/public/web/screen_program.html @@ -0,0 +1,460 @@ + + + + + + + + + + + + + 我的节目页面 + + + + + + + + + + + + + +
+
+
+

节目列表

+
+

+ +

+
+
+
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
+
    +
  • + 返回 +
  • +
  • + 添加 +
  • +
  • + 刷新 +
  • +
+
+
+ +
+ + + +
+ 加载中.... +
+
+ 加载失败 +
+
+ 删除中.... +
+
+ 删除失败 +
+
+ 设置中.... +
+
+ 设置失败 +
+
+ 结果内容 +
+
+ + + + diff --git a/public/web/screen_virtual.html b/public/web/screen_virtual.html new file mode 100644 index 0000000..570a7f3 --- /dev/null +++ b/public/web/screen_virtual.html @@ -0,0 +1,192 @@ + + + + + + + + + + + + 虚拟遥控器 + + + + + + + + + + + + + +
+
+
    +
  • + 返回首页 +
  • +
  • + 加载中 +
  • +
+
+
+
+ 打开中... +
+
+ 打开节目成功 +
+
+ 打开节目失败 +
+
+ 结果内容 +
+ + + + + diff --git a/public/web/traffic_sign.bmp b/public/web/traffic_sign.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d286702064d0fe40dc74703c174ca6b59ad449e0 GIT binary patch literal 26686 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 literal 0 HcmV?d00001 diff --git a/public/web/voice_copy.html b/public/web/voice_copy.html new file mode 100644 index 0000000..7510fae --- /dev/null +++ b/public/web/voice_copy.html @@ -0,0 +1,404 @@ + + + + + + + + + + 远程喊话 + + + + + + + + + + + +
+
+ + + +
+ +
+ +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..36420c5 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,4 @@ + + diff --git a/src/assets/icon/iconfont.js b/src/assets/icon/iconfont.js new file mode 100644 index 0000000..4d127f4 --- /dev/null +++ b/src/assets/icon/iconfont.js @@ -0,0 +1 @@ +window._iconfont_svg_string_4573698='',function(a){var t=(t=document.getElementsByTagName("script"))[t.length-1],e=t.getAttribute("data-injectcss"),t=t.getAttribute("data-disable-injectsvg");if(!t){var i,l,n,c,o,s=function(t,e){e.parentNode.insertBefore(t,e)};if(e&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(t){console&&console.log(t)}}i=function(){var t,e=document.createElement("div");e.innerHTML=a._iconfont_svg_string_4573698,(e=e.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",e=e,(t=document.body).firstChild?s(e,t.firstChild):t.appendChild(e))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(i,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),i()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(n=i,c=a.document,o=!1,d(),c.onreadystatechange=function(){"complete"==c.readyState&&(c.onreadystatechange=null,h())})}function h(){o||(o=!0,n())}function d(){try{c.documentElement.doScroll("left")}catch(t){return void setTimeout(d,50)}h()}}(window); \ No newline at end of file diff --git a/src/assets/img/pictur.png b/src/assets/img/pictur.png new file mode 100644 index 0000000000000000000000000000000000000000..4672177a821c9f38cc23ea2103ed868784ce0012 GIT binary patch literal 25422 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 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; a("navigateTo", { url: encodeURI(n) }) }, navigateBack: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.delta; a("navigateBack", { delta: parseInt(n) || 1 }) }, switchTab: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; a("switchTab", { url: encodeURI(n) }) }, reLaunch: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; a("reLaunch", { url: encodeURI(n) }) }, redirectTo: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; a("redirectTo", { url: encodeURI(n) }) }, getEnv: function (e) { window.plus ? e({ plus: !0 }) : e({ h5: !0 }) }, postMessage: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; a("postMessage", e.data || {}) } }, r = /uni-app/i.test(navigator.userAgent), d = /Html5Plus/i.test(navigator.userAgent), s = /complete|loaded|interactive/; var w = window.my && navigator.userAgent.indexOf("AlipayClient") > -1; var u = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent); var c = window.qq && window.qq.miniProgram && /QQ/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); var g = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent); var v = window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); var p = window.qa && /quickapp/i.test(navigator.userAgent); for (var l, _ = function () { window.UniAppJSBridge = !0, document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady", { bubbles: !0, cancelable: !0 })) }, f = [function (e) { if (r || d) return window.__dcloud_weex_postMessage || window.__dcloud_weex_ ? document.addEventListener("DOMContentLoaded", e) : window.plus && s.test(document.readyState) ? setTimeout(e, 0) : document.addEventListener("plusready", e), o }, function (e) { if (v) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("WeixinJSBridgeReady", e), window.wx.miniProgram }, function (e) { if (c) return window.QQJSBridge && window.QQJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("QQJSBridgeReady", e), window.qq.miniProgram }, function (e) { if (w) { document.addEventListener("DOMContentLoaded", e); var n = window.my; return { navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv } } }, function (e) { if (u) return document.addEventListener("DOMContentLoaded", e), window.swan.webView }, function (e) { if (g) return document.addEventListener("DOMContentLoaded", e), window.tt.miniProgram }, function (e) { if (p) { window.QaJSBridge && window.QaJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("QaJSBridgeReady", e); var n = window.qa; return { navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv } } }, function (e) { return document.addEventListener("DOMContentLoaded", e), o }], m = 0; m < f.length && !(l = f[m](_)); m++); l || (l = {}); var E = "undefined" != typeof uni ? uni : {}; if (!E.navigateTo) for (var b in l) t(l, b) && (E[b] = l[b]); return E.webView = l, E })); \ No newline at end of file diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 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 + + + + + + + \ No newline at end of file diff --git a/src/components/Header.vue b/src/components/Header.vue new file mode 100644 index 0000000..958a64c --- /dev/null +++ b/src/components/Header.vue @@ -0,0 +1,41 @@ + + + + + + \ No newline at end of file diff --git a/src/components/MQTT/mqttclient.js b/src/components/MQTT/mqttclient.js new file mode 100644 index 0000000..5b2386e --- /dev/null +++ b/src/components/MQTT/mqttclient.js @@ -0,0 +1,35 @@ +// src/mqttClient.js +import mqtt from 'mqtt/dist/mqtt.min'; + +let client; + +const connectMQTT = (brokerUrl = 'ws://broker.emqx.io:8083/mqtt', options = {}) => { + if (!client || client.disconnected) { + client = mqtt.connect(brokerUrl, options); + + client.on('connect', () => { + console.log('Connected to MQTT broker'); + client.subscribe('/mytest/abc', (err) => { + if (err) { + console.error('Failed to subscribe to topic:', err); + } else { + console.log('Subscribed to topic: /mytest/abc'); + } + }); + }); + + client.on('error', (err) => { + console.error('MQTT connection error:', err); + client.end(); + }); + + client.on('close', () => { + console.log('MQTT connection closed'); + }); + } else { + console.log('MQTT client is already connected'); + } +}; + +// 导出客户端和连接函数 +export { client, connectMQTT }; diff --git a/src/components/environment/check.js b/src/components/environment/check.js new file mode 100644 index 0000000..f511f39 --- /dev/null +++ b/src/components/environment/check.js @@ -0,0 +1,12 @@ +const checkEnvironment = () => { + if (window.location.hostname === '192.168.4.1') { + console.log('in local'); + // 本地开发环境,设置 isLocal 为 true + isLocal.value = true; + } else { + // 生产环境,设置 isLocal 为 false + isLocal.value = false; + console.log('in online'); + + } +}; \ No newline at end of file diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..b87ab73 --- /dev/null +++ b/src/main.js @@ -0,0 +1,75 @@ +import 'amfe-flexible'; +import { createApp } from 'vue'; +import App from './App.vue'; +import router from './router'; +import store from './store'; +import '@vant/touch-emulator'; +import '../../set-vue/src/assets/icon/iconfont'; + +// const VConsole = require('vconsole'); +// new VConsole(); // 初始化vConsole +if (/xazn/.test(navigator.userAgent) || /uni-app/.test(navigator.userAgent)) { + // 在App中 + console.log("UniAppJSBridgeReady 事件已触发"); + document.addEventListener("UniAppJSBridgeReady", function () { + console.log("ok"); + + }); +} +window.MQTT_recv = MQTT_recv; + +//在收到数据后需要调用这个函数 +function MQTT_recv(string) { + console.log("MQTT 接收:" + string); +} + +function checkEnvironment() { + if (window.location.hostname === '192.168.4.1') { + console.log('in local'); + // 本地开发环境,需要登录 + requireLogin(); + } else { + // 生产环境,不需要登录 + bypassLogin(); + } +} + +function requireLogin() { + if (!store.state.isAuthenticated) { + router.push('/login'); + } +} +// 获取 URL 中的 token 参数 +function getQueryString(name) { + const urlParams = new URLSearchParams(window.location.search); + return urlParams.get(name); +} + +// 在页面加载时,获取 token 并存储到 localStorage +const token = getQueryString('token'); +if (token) { + localStorage.setItem('token', token); + console.log('Token stored:', token); +} else { + console.log('No token found in URL'); +} + + + +function bypassLogin() { + // 假设在服务器环境中已经有登录信息,可以直接跳过登录逻辑 + store.commit('setAuthenticated', true); +} + +const app = createApp(App); + +checkEnvironment(); // 检查环境并执行相应的逻辑 +const isAuthenticated = JSON.parse(localStorage.getItem('isAuthenticated')); +if (isAuthenticated) { + store.commit('setAuthenticated', true); +} +app.use(store).use(router).mount('#app'); + + +window.VueRouter = router; // 这里立即暴露 router +console.log("VueRouter 已暴露到全局"); \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..f57c4b5 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,63 @@ +import { createRouter, createWebHashHistory } from 'vue-router'; +import { useStore } from 'vuex'; +const routes = [ + { + path: '/login', + name: 'login', + component: () => import('../views/loggin/loggin.vue') + }, + { + path: '/reset', + name: 'reset', + component: () => import('../views/loggin/reset.vue'), + meta: { requiresAuth: false } // 不需要认证 + + }, + { + path: '/', + name: 'home', + component: () => import('../views/home/home.vue') + }, + { + path: '/recognition', + name: 'recognition', + component: () => import('../views/recognize/License-plate-recognition.vue') + }, + { + path: '/info', + name: 'info', + component: () => import('../views/system-info/info.vue') + }, + { + path: '/warning', + name: 'warning', + component: () => import('../views/forewarning/forewarning.vue') + }, + { + path: '/Footer', + name: 'Footer', + component: () => import('../components/Footer.vue') + }, + { + path: '/voiceset', + name: 'voiceset', + component: () => import('../views/voice/voiceset.vue') + }, +]; + +const router = createRouter({ + history: createWebHashHistory(), // 使用 hash 模式 + routes +}); +router.beforeEach((to, from, next) => { + const store = useStore(); // 获取 store 实例 + if (to.meta.requiresAuth === false) { + next(); // 允许访问所有不需要认证的页面 + } else if (to.path !== '/login' && !store.state.isAuthenticated) { + next('/login'); // 未认证,重定向到登录页面 + } else { + next(); // 已认证,继续导航 + } +}); + +export default router; diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..d217f30 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,24 @@ +import { createStore } from 'vuex'; + +export default createStore({ + state: { + isAuthenticated: JSON.parse(localStorage.getItem('isAuthenticated')) || false, + }, + mutations: { + setAuthenticated(state, value) { + state.isAuthenticated = value; + localStorage.setItem('isAuthenticated', JSON.stringify(value)); + }, + }, + actions: { + login({ commit }, credentials) { + // 在这里进行登录请求,并在成功后设置认证状态 + // 例如,假设登录成功: + commit('setAuthenticated', true); + }, + logout({ commit }) { + commit('setAuthenticated', false); + }, + }, + modules: {}, +}); diff --git a/src/views/event/event.vue b/src/views/event/event.vue new file mode 100644 index 0000000..1b0d861 --- /dev/null +++ b/src/views/event/event.vue @@ -0,0 +1,548 @@ + + + + + diff --git a/src/views/forewarning/forewarning.vue b/src/views/forewarning/forewarning.vue new file mode 100644 index 0000000..bedcfa7 --- /dev/null +++ b/src/views/forewarning/forewarning.vue @@ -0,0 +1,451 @@ + + + + + diff --git a/src/views/home/home.vue b/src/views/home/home.vue new file mode 100644 index 0000000..cb6c241 --- /dev/null +++ b/src/views/home/home.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/src/views/loggin/loggin.vue b/src/views/loggin/loggin.vue new file mode 100644 index 0000000..aa5e9e0 --- /dev/null +++ b/src/views/loggin/loggin.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/src/views/loggin/reset.vue b/src/views/loggin/reset.vue new file mode 100644 index 0000000..b7db477 --- /dev/null +++ b/src/views/loggin/reset.vue @@ -0,0 +1,163 @@ + + + + + + \ No newline at end of file diff --git a/src/views/recognize/License-plate-recognition.vue b/src/views/recognize/License-plate-recognition.vue new file mode 100644 index 0000000..2445fd6 --- /dev/null +++ b/src/views/recognize/License-plate-recognition.vue @@ -0,0 +1,879 @@ + + + + diff --git a/src/views/system-info/info.vue b/src/views/system-info/info.vue new file mode 100644 index 0000000..6e9543f --- /dev/null +++ b/src/views/system-info/info.vue @@ -0,0 +1,366 @@ + + + + diff --git a/src/views/voice/voiceset.vue b/src/views/voice/voiceset.vue new file mode 100644 index 0000000..e2a2349 --- /dev/null +++ b/src/views/voice/voiceset.vue @@ -0,0 +1,1404 @@ + + + + + + + \ No newline at end of file diff --git a/vue.config.js b/vue.config.js new file mode 100644 index 0000000..b6717f5 --- /dev/null +++ b/vue.config.js @@ -0,0 +1,48 @@ +const { defineConfig } = require('@vue/cli-service'); +const { VantResolver } = require('@vant/auto-import-resolver'); +const AutoImport = require('unplugin-auto-import/webpack'); +const Components = require('unplugin-vue-components/webpack'); +module.exports = defineConfig({ + lintOnSave: false, + productionSourceMap: false, + transpileDependencies: true, + publicPath: './', + css: { + loaderOptions: { + postcss: { + postcssOptions: { + plugins: [ + require('autoprefixer'), + // 其他插件 + ] + } + } + } + }, + devServer: { + open: true, + hot: true,//自动保存 + }, + + configureWebpack: { + plugins: [ + // 当 unplugin-vue-components 版本小于 0.26.0 时,使用以下写法 + // AutoImport({ resolvers: [VantResolver()] }), + // Components({ resolvers: [VantResolver()] }), + //当大于等于 0.26.0 时,使用以下写法 + AutoImport.default({ + resolvers: [VantResolver()], + }), + Components.default({ resolvers: [VantResolver()] }), + // new CompressionPlugin({ + // algorithm: 'gzip', // 使用gzip压缩 + // test: /\.js$|\.html$|\.css$/, // 匹配文件名 + // filename: '[path][base].gz[query]', // 压缩后的文件名(保持原文件名,后缀加.gz) + // minRatio: 1, // 压缩率小于1才会压缩 + // threshold: 0, // 对超过10k的数据压缩 + // deleteOriginalAssets: true, // 是否删除未压缩的源文件,谨慎设置,如果希望提供非gzip的资源,可不设置或者设置为false(比如删除打包后的gz后还可以加载到原始资源文件) + // }), + ], + }, + +}); diff --git a/web/css/193.0c29947b.css b/web/css/193.0c29947b.css new file mode 100644 index 0000000..6863924 --- /dev/null +++ b/web/css/193.0c29947b.css @@ -0,0 +1 @@ +.van-checkbox-group--horizontal{display:flex;flex-wrap:wrap}:host,:root{--van-checkbox-size:20px;--van-checkbox-border-color:var(--van-gray-5);--van-checkbox-duration:var(--van-duration-fast);--van-checkbox-label-margin:var(--van-padding-xs);--van-checkbox-label-color:var(--van-text-color);--van-checkbox-checked-icon-color:var(--van-primary-color);--van-checkbox-disabled-icon-color:var(--van-gray-5);--van-checkbox-disabled-label-color:var(--van-text-color-3);--van-checkbox-disabled-background:var(--van-border-color)}.van-checkbox{display:flex;align-items:center;overflow:hidden;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.van-checkbox--disabled{cursor:not-allowed}.van-checkbox--label-disabled{cursor:default}.van-checkbox--horizontal{margin-right:var(--van-padding-sm)}.van-checkbox__icon{flex:none;height:1em;font-size:var(--van-checkbox-size);line-height:1em;cursor:pointer}.van-checkbox__icon .van-icon{display:block;box-sizing:border-box;width:1.25em;height:1.25em;color:transparent;font-size:.8em;line-height:1.25;text-align:center;border:1px solid var(--van-checkbox-border-color);transition-duration:var(--van-checkbox-duration);transition-property:color,border-color,background-color}.van-checkbox__icon--round .van-icon{border-radius:100%}.van-checkbox__icon--indeterminate .van-icon{display:flex;align-items:center;justify-content:center}.van-checkbox__icon--checked .van-icon,.van-checkbox__icon--indeterminate .van-icon{color:var(--van-white);border-color:var(--van-checkbox-checked-icon-color);background-color:var(--van-checkbox-checked-icon-color)}.van-checkbox__icon--disabled{cursor:not-allowed}.van-checkbox__icon--disabled .van-icon{background-color:var(--van-checkbox-disabled-background);border-color:var(--van-checkbox-disabled-icon-color)}.van-checkbox__icon--disabled.van-checkbox__icon--checked .van-icon{color:var(--van-checkbox-disabled-icon-color)}.van-checkbox__label{margin-left:var(--van-checkbox-label-margin);color:var(--van-checkbox-label-color);line-height:var(--van-checkbox-size)}.van-checkbox__label--left{margin:0 var(--van-checkbox-label-margin) 0 0}.van-checkbox__label--disabled{color:var(--van-checkbox-disabled-label-color)}.container[data-v-cb07f33e]{height:100vh;background-image:linear-gradient(0deg,#78e6f5,#0668fc)}.welcome-wrapper[data-v-cb07f33e]{position:absolute;left:20px;top:10px;color:#fff}.custom-cell-group[data-v-cb07f33e]{width:100%;display:flex;justify-content:center}.custom-field[data-v-cb07f33e]{width:100%;max-width:300px;border:2px solid #146bec;border-radius:10px;box-sizing:border-box;padding:10px}[data-v-cb07f33e] .custom-field .van-field__control{text-align:center}.login-checkbox[data-v-cb07f33e]{font-size:14px;display:flex;flex-direction:column;align-items:center}.options-row[data-v-cb07f33e]{display:flex;justify-content:space-between;align-items:center;width:100%;max-width:300px;margin-top:30px}.forgot-password[data-v-cb07f33e]{color:#146bec;cursor:pointer;bottom:0}.container .login-wrapper[data-v-cb07f33e]{background-color:#fff;width:60%;height:400px;padding:0 10%;position:fixed;left:50%;border-radius:15px;top:50%;transform:translate(-50%,-50%);animation-name:fadeIn;margin-bottom:20px}h4[data-v-cb07f33e]{font-size:40px;color:#146bec}.login-button[data-v-cb07f33e]{margin-top:40px}.remember[data-v-cb07f33e]{margin-top:20px} \ No newline at end of file diff --git a/web/css/239.fd5d7b06.css b/web/css/239.fd5d7b06.css new file mode 100644 index 0000000..b6bb4d0 --- /dev/null +++ b/web/css/239.fd5d7b06.css @@ -0,0 +1 @@ +.container[data-v-4dd8be90]{height:100vh;background-image:linear-gradient(0deg,#78e6f5,#0668fc)}.flex-grow[data-v-4dd8be90]{flex-grow:1;margin-right:10px;margin-left:10px}.welcome-wrapper[data-v-4dd8be90]{position:absolute;left:20px;top:10px;color:#fff}.change_pass[data-v-4dd8be90]{font-size:14px;display:flex;flex-direction:column;align-items:center}.custom-cell-group[data-v-4dd8be90]{width:100%}.container .login-wrapper[data-v-4dd8be90]{background-color:#fff;width:60%;height:400px;padding:0 10%;position:fixed;left:50%;border-radius:15px;top:50%;transform:translate(-50%,-50%);animation-name:fadeIn;margin-bottom:10px}.reset-title[data-v-4dd8be90]{font-size:40px;color:#146bec}.button-group[data-v-4dd8be90]{display:flex;justify-content:space-between}.custom-field[data-v-4dd8be90]{width:100%;max-width:none;border:2px solid #146bec;border-radius:10px;box-sizing:border-box;padding:10px;margin-bottom:10px}.title[data-v-4dd8be90]{color:#fff} \ No newline at end of file diff --git a/web/css/419.832a40ea.css b/web/css/419.832a40ea.css new file mode 100644 index 0000000..46d6eaf --- /dev/null +++ b/web/css/419.832a40ea.css @@ -0,0 +1 @@ +:host,:root{--van-tabbar-height:50px;--van-tabbar-z-index:1;--van-tabbar-background:var(--van-background-2)}.van-tabbar{z-index:var(--van-tabbar-z-index);display:flex;box-sizing:content-box;width:100%;height:var(--van-tabbar-height);background:var(--van-tabbar-background)}.van-tabbar--fixed{position:fixed;bottom:0;left:0}:host,:root{--van-tabbar-item-font-size:var(--van-font-size-sm);--van-tabbar-item-text-color:var(--van-text-color);--van-tabbar-item-active-color:var(--van-primary-color);--van-tabbar-item-active-background:var(--van-background-2);--van-tabbar-item-line-height:1;--van-tabbar-item-icon-size:22px;--van-tabbar-item-icon-margin-bottom:var(--van-padding-base)}.van-tabbar-item{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;color:var(--van-tabbar-item-text-color);font-size:var(--van-tabbar-item-font-size);line-height:var(--van-tabbar-item-line-height);cursor:pointer}.van-tabbar-item__icon{margin-bottom:var(--van-tabbar-item-icon-margin-bottom);font-size:var(--van-tabbar-item-icon-size)}.van-tabbar-item__icon .van-icon{display:block}.van-tabbar-item__icon .van-badge{margin-top:var(--van-padding-base)}.van-tabbar-item__icon img{display:block;height:20px}.van-tabbar-item--active{color:var(--van-tabbar-item-active-color);background-color:var(--van-tabbar-item-active-background)}.footer{height:50px;position:fixed;bottom:0;left:0;width:100%;z-index:999}:host,:root{--van-loading-text-color:var(--van-text-color-2);--van-loading-text-font-size:var(--van-font-size-md);--van-loading-spinner-color:var(--van-gray-5);--van-loading-spinner-size:30px;--van-loading-spinner-duration:.8s}.van-loading{color:var(--van-loading-spinner-color);font-size:0}.van-loading,.van-loading__spinner{position:relative;vertical-align:middle}.van-loading__spinner{display:inline-block;width:var(--van-loading-spinner-size);max-width:100%;height:var(--van-loading-spinner-size);max-height:100%;animation:van-rotate var(--van-loading-spinner-duration) linear infinite}.van-loading__spinner--spinner{animation-timing-function:steps(12)}.van-loading__spinner--circular{animation-duration:2s}.van-loading__line{position:absolute;top:0;left:0;width:100%;height:100%}.van-loading__line:before{display:block;width:2px;height:25%;margin:0 auto;background-color:currentColor;border-radius:40%;content:" "}.van-loading__circular{display:block;width:100%;height:100%}.van-loading__circular circle{animation:van-circular 1.5s ease-in-out infinite;stroke:currentColor;stroke-width:3;stroke-linecap:round}.van-loading__text{display:inline-block;margin-left:var(--van-padding-xs);color:var(--van-loading-text-color);font-size:var(--van-loading-text-font-size);vertical-align:middle}.van-loading--vertical{display:flex;flex-direction:column;align-items:center}.van-loading--vertical .van-loading__text{margin:var(--van-padding-xs) 0 0}@keyframes van-circular{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40}to{stroke-dasharray:90,150;stroke-dashoffset:-120}}.van-loading__line--1{transform:rotate(30deg);opacity:1}.van-loading__line--2{transform:rotate(60deg);opacity:.9375}.van-loading__line--3{transform:rotate(90deg);opacity:.875}.van-loading__line--4{transform:rotate(120deg);opacity:.8125}.van-loading__line--5{transform:rotate(150deg);opacity:.75}.van-loading__line--6{transform:rotate(180deg);opacity:.6875}.van-loading__line--7{transform:rotate(210deg);opacity:.625}.van-loading__line--8{transform:rotate(240deg);opacity:.5625}.van-loading__line--9{transform:rotate(270deg);opacity:.5}.van-loading__line--10{transform:rotate(300deg);opacity:.4375}.van-loading__line--11{transform:rotate(330deg);opacity:.375}.van-loading__line--12{transform:rotate(1turn);opacity:.3125}:host,:root{--van-pull-refresh-head-height:50px;--van-pull-refresh-head-font-size:var(--van-font-size-md);--van-pull-refresh-head-text-color:var(--van-text-color-2);--van-pull-refresh-loading-icon-size:16px}.van-pull-refresh{overflow:hidden}.van-pull-refresh__track{position:relative;height:100%;transition-property:transform}.van-pull-refresh__head{position:absolute;left:0;width:100%;height:var(--van-pull-refresh-head-height);overflow:hidden;color:var(--van-pull-refresh-head-text-color);font-size:var(--van-pull-refresh-head-font-size);line-height:var(--van-pull-refresh-head-height);text-align:center;transform:translateY(-100%)}.van-pull-refresh__loading .van-loading__spinner{width:var(--van-pull-refresh-loading-icon-size);height:var(--van-pull-refresh-loading-icon-size)}:host,:root{--van-cell-group-background:var(--van-background-2);--van-cell-group-title-color:var(--van-text-color-2);--van-cell-group-title-padding:var(--van-padding-md) var(--van-padding-md);--van-cell-group-title-font-size:var(--van-font-size-md);--van-cell-group-title-line-height:16px;--van-cell-group-inset-padding:0 var(--van-padding-md);--van-cell-group-inset-radius:var(--van-radius-lg);--van-cell-group-inset-title-padding:var(--van-padding-md) var(--van-padding-md)}.van-cell-group{background:var(--van-cell-group-background)}.van-cell-group--inset{margin:var(--van-cell-group-inset-padding);border-radius:var(--van-cell-group-inset-radius);overflow:hidden}.van-cell-group__title{padding:var(--van-cell-group-title-padding);color:var(--van-cell-group-title-color);font-size:var(--van-cell-group-title-font-size);line-height:var(--van-cell-group-title-line-height)}.van-cell-group__title--inset{padding:var(--van-cell-group-inset-title-padding)}:host,:root{--van-cell-font-size:var(--van-font-size-md);--van-cell-line-height:24px;--van-cell-vertical-padding:10px;--van-cell-horizontal-padding:var(--van-padding-md);--van-cell-text-color:var(--van-text-color);--van-cell-background:var(--van-background-2);--van-cell-border-color:var(--van-border-color);--van-cell-active-color:var(--van-active-color);--van-cell-required-color:var(--van-danger-color);--van-cell-label-color:var(--van-text-color-2);--van-cell-label-font-size:var(--van-font-size-sm);--van-cell-label-line-height:var(--van-line-height-sm);--van-cell-label-margin-top:var(--van-padding-base);--van-cell-value-color:var(--van-text-color-2);--van-cell-value-font-size:inherit;--van-cell-icon-size:16px;--van-cell-right-icon-color:var(--van-gray-6);--van-cell-large-vertical-padding:var(--van-padding-sm);--van-cell-large-title-font-size:var(--van-font-size-lg);--van-cell-large-label-font-size:var(--van-font-size-md);--van-cell-large-value-font-size:inherit}.van-cell{position:relative;display:flex;box-sizing:border-box;width:100%;padding:var(--van-cell-vertical-padding) var(--van-cell-horizontal-padding);overflow:hidden;color:var(--van-cell-text-color);font-size:var(--van-cell-font-size);line-height:var(--van-cell-line-height);background:var(--van-cell-background)}.van-cell:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:var(--van-padding-md);bottom:0;left:var(--van-padding-md);border-bottom:1px solid var(--van-cell-border-color);transform:scaleY(.5)}.van-cell--borderless:after,.van-cell:last-child:after{display:none}.van-cell__label{margin-top:var(--van-cell-label-margin-top);color:var(--van-cell-label-color);font-size:var(--van-cell-label-font-size);line-height:var(--van-cell-label-line-height)}.van-cell__title,.van-cell__value{flex:1}.van-cell__value{position:relative;overflow:hidden;color:var(--van-cell-value-color);font-size:var(--van-cell-value-font-size);text-align:right;vertical-align:middle;word-wrap:break-word}.van-cell__left-icon,.van-cell__right-icon{height:var(--van-cell-line-height);font-size:var(--van-cell-icon-size);line-height:var(--van-cell-line-height)}.van-cell__left-icon{margin-right:var(--van-padding-base)}.van-cell__right-icon{margin-left:var(--van-padding-base);color:var(--van-cell-right-icon-color)}.van-cell--clickable{cursor:pointer}.van-cell--clickable:active{background-color:var(--van-cell-active-color)}.van-cell--required{overflow:visible}.van-cell--required:before{position:absolute;left:var(--van-padding-xs);color:var(--van-cell-required-color);font-size:var(--van-cell-font-size);content:"*"}.van-cell--center{align-items:center}.van-cell--large{padding-top:var(--van-cell-large-vertical-padding);padding-bottom:var(--van-cell-large-vertical-padding)}.van-cell--large .van-cell__title{font-size:var(--van-cell-large-title-font-size)}.van-cell--large .van-cell__label{font-size:var(--van-cell-large-label-font-size)}.van-cell--large .van-cell__value{font-size:var(--van-cell-large-value-font-size)}:host,:root{--van-swipe-indicator-size:6px;--van-swipe-indicator-margin:var(--van-padding-sm);--van-swipe-indicator-active-opacity:1;--van-swipe-indicator-inactive-opacity:.3;--van-swipe-indicator-active-background:var(--van-primary-color);--van-swipe-indicator-inactive-background:var(--van-border-color)}.van-swipe{position:relative;overflow:hidden;transform:translateZ(0);cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.van-swipe__track{display:flex;height:100%;transition-property:transform}.van-swipe__track--vertical{flex-direction:column}.van-swipe__indicators{position:absolute;bottom:var(--van-swipe-indicator-margin);left:50%;display:flex;transform:translate(-50%)}.van-swipe__indicators--vertical{top:50%;bottom:auto;left:var(--van-swipe-indicator-margin);flex-direction:column;transform:translateY(-50%)}.van-swipe__indicators--vertical .van-swipe__indicator:not(:last-child){margin-bottom:var(--van-swipe-indicator-size)}.van-swipe__indicator{width:var(--van-swipe-indicator-size);height:var(--van-swipe-indicator-size);background-color:var(--van-swipe-indicator-inactive-background);border-radius:100%;opacity:var(--van-swipe-indicator-inactive-opacity);transition:opacity var(--van-duration-fast),background-color var(--van-duration-fast)}.van-swipe__indicator:not(:last-child){margin-right:var(--van-swipe-indicator-size)}.van-swipe__indicator--active{background-color:var(--van-swipe-indicator-active-background);opacity:var(--van-swipe-indicator-active-opacity)}.van-swipe-item{position:relative;flex-shrink:0;width:100%;height:100%}:host,:root{--van-notice-bar-height:40px;--van-notice-bar-padding:0 var(--van-padding-md);--van-notice-bar-wrapable-padding:var(--van-padding-xs) var(--van-padding-md);--van-notice-bar-text-color:var(--van-orange-dark);--van-notice-bar-font-size:var(--van-font-size-md);--van-notice-bar-line-height:24px;--van-notice-bar-background:var(--van-orange-light);--van-notice-bar-icon-size:16px;--van-notice-bar-icon-min-width:24px}.van-notice-bar{position:relative;display:flex;align-items:center;height:var(--van-notice-bar-height);padding:var(--van-notice-bar-padding);color:var(--van-notice-bar-text-color);font-size:var(--van-notice-bar-font-size);line-height:var(--van-notice-bar-line-height);background:var(--van-notice-bar-background)}.van-notice-bar__left-icon,.van-notice-bar__right-icon{min-width:var(--van-notice-bar-icon-min-width);font-size:var(--van-notice-bar-icon-size)}.van-notice-bar__right-icon{text-align:right;cursor:pointer}.van-notice-bar__wrap{position:relative;display:flex;flex:1;align-items:center;height:100%;overflow:hidden}.van-notice-bar__content{position:absolute;white-space:nowrap;transition-timing-function:linear}.van-notice-bar__content.van-ellipsis{max-width:100%}.van-notice-bar--wrapable{height:auto;padding:var(--van-notice-bar-wrapable-padding)}.van-notice-bar--wrapable .van-notice-bar__wrap{height:auto}.van-notice-bar--wrapable .van-notice-bar__content{position:relative;white-space:normal;word-wrap:break-word}:host,:root{--van-nav-bar-height:46px;--van-nav-bar-background:var(--van-background-2);--van-nav-bar-arrow-size:16px;--van-nav-bar-icon-color:var(--van-primary-color);--van-nav-bar-text-color:var(--van-primary-color);--van-nav-bar-title-font-size:var(--van-font-size-lg);--van-nav-bar-title-text-color:var(--van-text-color);--van-nav-bar-z-index:1;--van-nav-bar-disabled-opacity:var(--van-disabled-opacity)}.van-nav-bar{position:relative;z-index:var(--van-nav-bar-z-index);line-height:var(--van-line-height-lg);text-align:center;background:var(--van-nav-bar-background);-webkit-user-select:none;-moz-user-select:none;user-select:none}.van-nav-bar--fixed{position:fixed;top:0;left:0;width:100%}.van-nav-bar--safe-area-inset-top{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.van-nav-bar .van-icon{color:var(--van-nav-bar-icon-color)}.van-nav-bar__content{position:relative;display:flex;align-items:center;height:var(--van-nav-bar-height)}.van-nav-bar__arrow{margin-right:var(--van-padding-base);font-size:var(--van-nav-bar-arrow-size)}.van-nav-bar__title{max-width:60%;margin:0 auto;color:var(--van-nav-bar-title-text-color);font-weight:var(--van-font-bold);font-size:var(--van-nav-bar-title-font-size)}.van-nav-bar__left,.van-nav-bar__right{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 var(--van-padding-md);font-size:var(--van-font-size-md)}.van-nav-bar__left--disabled,.van-nav-bar__right--disabled{cursor:not-allowed;opacity:var(--van-nav-bar-disabled-opacity)}.van-nav-bar__left{left:0}.van-nav-bar__right{right:0}.van-nav-bar__text{color:var(--van-nav-bar-text-color)}.custom-nav-bar[data-v-fc10581e]{height:80px;position:fixed;top:0;left:0;width:100%;z-index:999}[data-v-fc10581e] .van-nav-bar{height:100%;background-color:#0668fc}[data-v-fc10581e] .van-nav-bar__title{font-size:24px;font-weight:700;color:#fff;margin-top:40px}.page-container[data-v-7d98715e]{display:flex;flex-direction:column;min-height:100vh;position:relative}.content[data-v-7d98715e]{flex:1;overflow-y:auto;padding:20px;border-radius:20px!important;margin-top:80px;margin-bottom:40px;min-height:100vh}.item-content[data-v-7d98715e]{margin-top:20px}van-pull-refresh[data-v-7d98715e]{flex:1;display:flex;flex-direction:column}.my-swipe .van-swipe-item[data-v-7d98715e]{color:#fff;font-size:20px;line-height:150px;text-align:center;background-color:#39a9ed;border-radius:10px;margin-bottom:10px}.notice[data-v-7d98715e]{margin-bottom:10px;background-color:#fff}.custom-cell .van-cell__label[data-v-7d98715e],.custom-cell .van-cell__title[data-v-7d98715e],.custom-cell .van-cell__value[data-v-7d98715e],.custom-cell .van-icon[data-v-7d98715e]{font-size:20px}.custom-cell .van-cell__title[data-v-7d98715e]{font-weight:700}.custom-cell .van-cell__value[data-v-7d98715e]{color:#666} \ No newline at end of file diff --git a/web/css/619.93201e95.css b/web/css/619.93201e95.css new file mode 100644 index 0000000..64ff50c --- /dev/null +++ b/web/css/619.93201e95.css @@ -0,0 +1 @@ +:host,:root{--van-tabbar-height:50px;--van-tabbar-z-index:1;--van-tabbar-background:var(--van-background-2)}.van-tabbar{z-index:var(--van-tabbar-z-index);display:flex;box-sizing:content-box;width:100%;height:var(--van-tabbar-height);background:var(--van-tabbar-background)}.van-tabbar--fixed{position:fixed;bottom:0;left:0}:host,:root{--van-tabbar-item-font-size:var(--van-font-size-sm);--van-tabbar-item-text-color:var(--van-text-color);--van-tabbar-item-active-color:var(--van-primary-color);--van-tabbar-item-active-background:var(--van-background-2);--van-tabbar-item-line-height:1;--van-tabbar-item-icon-size:22px;--van-tabbar-item-icon-margin-bottom:var(--van-padding-base)}.van-tabbar-item{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;color:var(--van-tabbar-item-text-color);font-size:var(--van-tabbar-item-font-size);line-height:var(--van-tabbar-item-line-height);cursor:pointer}.van-tabbar-item__icon{margin-bottom:var(--van-tabbar-item-icon-margin-bottom);font-size:var(--van-tabbar-item-icon-size)}.van-tabbar-item__icon .van-icon{display:block}.van-tabbar-item__icon .van-badge{margin-top:var(--van-padding-base)}.van-tabbar-item__icon img{display:block;height:20px}.van-tabbar-item--active{color:var(--van-tabbar-item-active-color);background-color:var(--van-tabbar-item-active-background)}.footer{height:50px;position:fixed;bottom:0;left:0;width:100%;z-index:999}:host,:root{--van-pull-refresh-head-height:50px;--van-pull-refresh-head-font-size:var(--van-font-size-md);--van-pull-refresh-head-text-color:var(--van-text-color-2);--van-pull-refresh-loading-icon-size:16px}.van-pull-refresh{overflow:hidden}.van-pull-refresh__track{position:relative;height:100%;transition-property:transform}.van-pull-refresh__head{position:absolute;left:0;width:100%;height:var(--van-pull-refresh-head-height);overflow:hidden;color:var(--van-pull-refresh-head-text-color);font-size:var(--van-pull-refresh-head-font-size);line-height:var(--van-pull-refresh-head-height);text-align:center;transform:translateY(-100%)}.van-pull-refresh__loading .van-loading__spinner{width:var(--van-pull-refresh-loading-icon-size);height:var(--van-pull-refresh-loading-icon-size)}.van-swipe-cell{position:relative;overflow:hidden;cursor:grab}.van-swipe-cell__wrapper{transition-timing-function:cubic-bezier(.18,.89,.32,1);transition-property:transform}.van-swipe-cell__left,.van-swipe-cell__right{position:absolute;top:0;height:100%}.van-swipe-cell__left{left:0;transform:translate3d(-100%,0,0)}.van-swipe-cell__right{right:0;transform:translate3d(100%,0,0)}:host,:root{--van-sticky-z-index:99}.van-sticky--fixed{position:fixed;z-index:var(--van-sticky-z-index)}:host,:root{--van-swipe-indicator-size:6px;--van-swipe-indicator-margin:var(--van-padding-sm);--van-swipe-indicator-active-opacity:1;--van-swipe-indicator-inactive-opacity:.3;--van-swipe-indicator-active-background:var(--van-primary-color);--van-swipe-indicator-inactive-background:var(--van-border-color)}.van-swipe{position:relative;overflow:hidden;transform:translateZ(0);cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.van-swipe__track{display:flex;height:100%;transition-property:transform}.van-swipe__track--vertical{flex-direction:column}.van-swipe__indicators{position:absolute;bottom:var(--van-swipe-indicator-margin);left:50%;display:flex;transform:translate(-50%)}.van-swipe__indicators--vertical{top:50%;bottom:auto;left:var(--van-swipe-indicator-margin);flex-direction:column;transform:translateY(-50%)}.van-swipe__indicators--vertical .van-swipe__indicator:not(:last-child){margin-bottom:var(--van-swipe-indicator-size)}.van-swipe__indicator{width:var(--van-swipe-indicator-size);height:var(--van-swipe-indicator-size);background-color:var(--van-swipe-indicator-inactive-background);border-radius:100%;opacity:var(--van-swipe-indicator-inactive-opacity);transition:opacity var(--van-duration-fast),background-color var(--van-duration-fast)}.van-swipe__indicator:not(:last-child){margin-right:var(--van-swipe-indicator-size)}.van-swipe__indicator--active{background-color:var(--van-swipe-indicator-active-background);opacity:var(--van-swipe-indicator-active-opacity)}.van-swipe-item{position:relative;flex-shrink:0;width:100%;height:100%}:host,:root{--van-tab-text-color:var(--van-gray-7);--van-tab-active-text-color:var(--van-text-color);--van-tab-disabled-text-color:var(--van-text-color-3);--van-tab-font-size:var(--van-font-size-md);--van-tab-line-height:var(--van-line-height-md);--van-tabs-default-color:var(--van-primary-color);--van-tabs-line-height:44px;--van-tabs-card-height:30px;--van-tabs-nav-background:var(--van-background-2);--van-tabs-bottom-bar-width:40px;--van-tabs-bottom-bar-height:3px;--van-tabs-bottom-bar-color:var(--van-primary-color)}.van-tab{position:relative;display:flex;flex:1;align-items:center;justify-content:center;box-sizing:border-box;padding:0 var(--van-padding-base);color:var(--van-tab-text-color);font-size:var(--van-tab-font-size);line-height:var(--van-tab-line-height);cursor:pointer}.van-tab--active{color:var(--van-tab-active-text-color);font-weight:var(--van-font-bold)}.van-tab--disabled{color:var(--van-tab-disabled-text-color);cursor:not-allowed}.van-tab--grow{flex:1 0 auto;padding:0 var(--van-padding-sm)}.van-tab--shrink{flex:none;padding:0 var(--van-padding-xs)}.van-tab--card{color:var(--van-tabs-default-color);border-right:var(--van-border-width) solid var(--van-tabs-default-color)}.van-tab--card:last-child{border-right:none}.van-tab--card.van-tab--active{color:var(--van-white);background-color:var(--van-tabs-default-color)}.van-tab--card--disabled{color:var(--van-tab-disabled-text-color)}.van-tab__text--ellipsis{display:-webkit-box;overflow:hidden;-webkit-line-clamp:1;-webkit-box-orient:vertical}.van-tabs{position:relative}.van-tabs__wrap{overflow:hidden}.van-tabs__wrap--page-top{position:fixed}.van-tabs__wrap--content-bottom{top:auto;bottom:0}.van-tabs__nav{position:relative;display:flex;background:var(--van-tabs-nav-background);-webkit-user-select:none;-moz-user-select:none;user-select:none}.van-tabs__nav--complete{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.van-tabs__nav--complete::-webkit-scrollbar{display:none}.van-tabs__nav--line{box-sizing:content-box;height:100%;padding-bottom:15px}.van-tabs__nav--line.van-tabs__nav--complete,.van-tabs__nav--line.van-tabs__nav--shrink{padding-right:var(--van-padding-xs);padding-left:var(--van-padding-xs)}.van-tabs__nav--card{box-sizing:border-box;height:var(--van-tabs-card-height);margin:0 var(--van-padding-md);border:var(--van-border-width) solid var(--van-tabs-default-color);border-radius:var(--van-radius-sm)}.van-tabs__nav--card.van-tabs__nav--shrink{display:inline-flex}.van-tabs__line{position:absolute;bottom:15px;left:0;z-index:1;width:var(--van-tabs-bottom-bar-width);height:var(--van-tabs-bottom-bar-height);background:var(--van-tabs-bottom-bar-color);border-radius:var(--van-tabs-bottom-bar-height)}.van-tabs__track{position:relative;display:flex;width:100%;height:100%;will-change:left}.van-tabs__content--animated{overflow:hidden}.van-tabs--line .van-tabs__wrap{height:var(--van-tabs-line-height)}.van-tabs--card>.van-tabs__wrap{height:var(--van-tabs-card-height)}.van-tab__panel,.van-tab__panel-wrapper{flex-shrink:0;box-sizing:border-box;width:100%}.van-tab__panel-wrapper--inactive{height:0;overflow:visible}:host,:root{--van-picker-group-background:var(--van-background-2)}.van-picker-group{background:var(--van-picker-group-background)}.van-picker-group__tabs{margin-top:var(--van-padding-base)}.van-picker-group__tab-title{margin-right:16px}:host,:root{--van-picker-background:var(--van-background-2);--van-picker-toolbar-height:44px;--van-picker-title-font-size:var(--van-font-size-lg);--van-picker-title-line-height:var(--van-line-height-md);--van-picker-action-padding:0 var(--van-padding-md);--van-picker-action-font-size:var(--van-font-size-md);--van-picker-confirm-action-color:var(--van-primary-color);--van-picker-cancel-action-color:var(--van-text-color-2);--van-picker-option-font-size:var(--van-font-size-lg);--van-picker-option-padding:0 var(--van-padding-base);--van-picker-option-text-color:var(--van-text-color);--van-picker-option-disabled-opacity:.3;--van-picker-loading-icon-color:var(--van-primary-color);--van-picker-loading-mask-color:hsla(0,0%,100%,.9);--van-picker-mask-color:linear-gradient(180deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4)),linear-gradient(0deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4))}.van-theme-dark{--van-picker-loading-mask-color:rgba(0,0,0,.6);--van-picker-mask-color:linear-gradient(180deg,rgba(0,0,0,.6),rgba(0,0,0,.1)),linear-gradient(0deg,rgba(0,0,0,.6),rgba(0,0,0,.1))}.van-picker{position:relative;background:var(--van-picker-background);-webkit-user-select:none;-moz-user-select:none;user-select:none}.van-picker__toolbar{position:relative;display:flex;align-items:center;justify-content:space-between;height:var(--van-picker-toolbar-height)}.van-picker__cancel,.van-picker__confirm{height:100%;padding:var(--van-picker-action-padding);font-size:var(--van-picker-action-font-size);background-color:transparent;border:none}.van-picker__confirm{color:var(--van-picker-confirm-action-color)}.van-picker__cancel{color:var(--van-picker-cancel-action-color)}.van-picker__title{position:absolute;left:50%;color:var(--van-text-color);max-width:50%;font-weight:var(--van-font-bold);font-size:var(--van-picker-title-font-size);line-height:var(--van-picker-title-line-height);text-align:center;transform:translate(-50%)}.van-picker__columns{position:relative;display:flex;cursor:grab}.van-picker__loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;align-items:center;justify-content:center;color:var(--van-picker-loading-icon-color);background:var(--van-picker-loading-mask-color)}.van-picker__frame{top:50%;right:var(--van-padding-md);left:var(--van-padding-md);z-index:2;transform:translateY(-50%)}.van-picker__frame,.van-picker__mask{position:absolute;pointer-events:none}.van-picker__mask{top:0;left:0;z-index:1;width:100%;height:100%;background-image:var(--van-picker-mask-color);background-repeat:no-repeat;background-position:top,bottom;transform:translateZ(0)}.van-picker-column{flex:1;overflow:hidden;font-size:var(--van-picker-option-font-size)}.van-picker-column__wrapper{transition-timing-function:cubic-bezier(.23,1,.68,1)}.van-picker-column__item{display:flex;align-items:center;justify-content:center;padding:var(--van-picker-option-padding);color:var(--van-picker-option-text-color)}.van-picker-column__item--disabled{cursor:not-allowed;opacity:var(--van-picker-option-disabled-opacity)}:host,:root{--van-switch-size:26px;--van-switch-width:calc(1.8em + 4px);--van-switch-height:calc(1em + 4px);--van-switch-node-size:1em;--van-switch-node-background:var(--van-white);--van-switch-node-shadow:0 3px 1px 0 rgba(0,0,0,.05);--van-switch-background:hsla(240,3%,49%,.16);--van-switch-on-background:var(--van-primary-color);--van-switch-duration:var(--van-duration-base);--van-switch-disabled-opacity:var(--van-disabled-opacity)}.van-theme-dark{--van-switch-background:hsla(240,3%,49%,.32)}.van-switch{position:relative;display:inline-block;box-sizing:content-box;width:var(--van-switch-width);height:var(--van-switch-height);font-size:var(--van-switch-size);background:var(--van-switch-background);border-radius:var(--van-switch-node-size);cursor:pointer;transition:background-color var(--van-switch-duration)}.van-switch__node{position:absolute;top:2px;left:2px;width:var(--van-switch-node-size);height:var(--van-switch-node-size);font-size:inherit;background:var(--van-switch-node-background);border-radius:100%;box-shadow:var(--van-switch-node-shadow);transition:transform var(--van-switch-duration) cubic-bezier(.3,1.05,.4,1.05)}.van-switch__loading{top:25%;left:25%;width:50%;height:50%;line-height:1}.van-switch--on{background:var(--van-switch-on-background)}.van-switch--on .van-switch__node{transform:translate(calc(var(--van-switch-width) - var(--van-switch-node-size) - 4px))}.van-switch--on .van-switch__loading{color:var(--van-switch-on-background)}.van-switch--disabled{cursor:not-allowed;opacity:var(--van-switch-disabled-opacity)}.van-switch--loading{cursor:default}:host,:root{--van-action-sheet-max-height:80%;--van-action-sheet-header-height:48px;--van-action-sheet-header-font-size:var(--van-font-size-lg);--van-action-sheet-description-color:var(--van-text-color-2);--van-action-sheet-description-font-size:var(--van-font-size-md);--van-action-sheet-description-line-height:var(--van-line-height-md);--van-action-sheet-item-background:var(--van-background-2);--van-action-sheet-item-font-size:var(--van-font-size-lg);--van-action-sheet-item-line-height:var(--van-line-height-lg);--van-action-sheet-item-text-color:var(--van-text-color);--van-action-sheet-item-disabled-text-color:var(--van-text-color-3);--van-action-sheet-item-icon-size:18px;--van-action-sheet-item-icon-margin-right:var(--van-padding-xs);--van-action-sheet-subname-color:var(--van-text-color-2);--van-action-sheet-subname-font-size:var(--van-font-size-sm);--van-action-sheet-subname-line-height:var(--van-line-height-sm);--van-action-sheet-close-icon-size:22px;--van-action-sheet-close-icon-color:var(--van-gray-5);--van-action-sheet-close-icon-padding:0 var(--van-padding-md);--van-action-sheet-cancel-text-color:var(--van-gray-7);--van-action-sheet-cancel-padding-top:var(--van-padding-xs);--van-action-sheet-cancel-padding-color:var(--van-background);--van-action-sheet-loading-icon-size:22px}.van-action-sheet{display:flex;flex-direction:column;max-height:var(--van-action-sheet-max-height);overflow:hidden;color:var(--van-action-sheet-item-text-color)}.van-action-sheet__content{flex:1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.van-action-sheet__cancel,.van-action-sheet__item{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;padding:14px var(--van-padding-md);font-size:var(--van-action-sheet-item-font-size);background:var(--van-action-sheet-item-background);border:none;cursor:pointer}.van-action-sheet__cancel:active,.van-action-sheet__item:active{background-color:var(--van-active-color)}.van-action-sheet__item{line-height:var(--van-action-sheet-item-line-height)}.van-action-sheet__item--disabled,.van-action-sheet__item--loading{color:var(--van-action-sheet-item-disabled-text-color)}.van-action-sheet__item--disabled:active,.van-action-sheet__item--loading:active{background-color:var(--van-action-sheet-item-background)}.van-action-sheet__item--disabled{cursor:not-allowed}.van-action-sheet__item--loading{cursor:default}.van-action-sheet__item-icon{font-size:var(--van-action-sheet-item-icon-size);margin-right:var(--van-action-sheet-item-icon-margin-right)}.van-action-sheet__cancel{flex-shrink:0;box-sizing:border-box;color:var(--van-action-sheet-cancel-text-color)}.van-action-sheet__subname{width:100%;margin-top:var(--van-padding-xs);color:var(--van-action-sheet-subname-color);font-size:var(--van-action-sheet-subname-font-size);line-height:var(--van-action-sheet-subname-line-height);overflow-wrap:break-word}.van-action-sheet__gap{display:block;height:var(--van-action-sheet-cancel-padding-top);background:var(--van-action-sheet-cancel-padding-color)}.van-action-sheet__header{flex-shrink:0;font-weight:var(--van-font-bold);font-size:var(--van-action-sheet-header-font-size);line-height:var(--van-action-sheet-header-height);text-align:center}.van-action-sheet__description{position:relative;flex-shrink:0;padding:20px var(--van-padding-md);color:var(--van-action-sheet-description-color);font-size:var(--van-action-sheet-description-font-size);line-height:var(--van-action-sheet-description-line-height);text-align:center}.van-action-sheet__description:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:var(--van-padding-md);bottom:0;left:var(--van-padding-md);border-bottom:1px solid var(--van-border-color);transform:scaleY(.5)}.van-action-sheet__loading-icon .van-loading__spinner{width:var(--van-action-sheet-loading-icon-size);height:var(--van-action-sheet-loading-icon-size)}.van-action-sheet__close{position:absolute;top:0;right:0;z-index:1;padding:var(--van-action-sheet-close-icon-padding);color:var(--van-action-sheet-close-icon-color);font-size:var(--van-action-sheet-close-icon-size);line-height:inherit}:host,:root{--van-slider-active-background:var(--van-primary-color);--van-slider-inactive-background:var(--van-gray-3);--van-slider-disabled-opacity:var(--van-disabled-opacity);--van-slider-bar-height:2px;--van-slider-button-width:24px;--van-slider-button-height:24px;--van-slider-button-radius:50%;--van-slider-button-background:var(--van-white);--van-slider-button-shadow:0 1px 2px rgba(0,0,0,.5)}.van-theme-dark{--van-slider-inactive-background:var(--van-background-3)}.van-slider{position:relative;width:100%;height:var(--van-slider-bar-height);background:var(--van-slider-inactive-background);border-radius:var(--van-radius-max);cursor:pointer}.van-slider:before{position:absolute;top:calc(var(--van-padding-xs)*-1);right:0;bottom:calc(var(--van-padding-xs)*-1);left:0;content:""}.van-slider__bar{position:absolute;width:100%;height:100%;background:var(--van-slider-active-background);border-radius:inherit;transition:all var(--van-duration-fast)}.van-slider__button{width:var(--van-slider-button-width);height:var(--van-slider-button-height);background:var(--van-slider-button-background);border-radius:var(--van-slider-button-radius);box-shadow:var(--van-slider-button-shadow)}.van-slider__button-wrapper{position:absolute;cursor:grab;top:50%}.van-slider__button-wrapper--right{right:0;transform:translate3d(50%,-50%,0)}.van-slider__button-wrapper--left{left:0;transform:translate3d(-50%,-50%,0)}.van-slider--disabled{cursor:not-allowed;opacity:var(--van-slider-disabled-opacity)}.van-slider--disabled .van-slider__button-wrapper{cursor:not-allowed}.van-slider--vertical{display:inline-block;width:var(--van-slider-bar-height);height:100%}.van-slider--vertical .van-slider__button-wrapper--right{top:auto;right:50%;bottom:0;transform:translate3d(50%,50%,0)}.van-slider--vertical .van-slider__button-wrapper--left{top:0;right:50%;left:auto;transform:translate3d(50%,-50%,0)}.van-slider--vertical:before{top:0;right:calc(var(--van-padding-xs)*-1);bottom:0;left:calc(var(--van-padding-xs)*-1)}:host,:root{--van-nav-bar-height:46px;--van-nav-bar-background:var(--van-background-2);--van-nav-bar-arrow-size:16px;--van-nav-bar-icon-color:var(--van-primary-color);--van-nav-bar-text-color:var(--van-primary-color);--van-nav-bar-title-font-size:var(--van-font-size-lg);--van-nav-bar-title-text-color:var(--van-text-color);--van-nav-bar-z-index:1;--van-nav-bar-disabled-opacity:var(--van-disabled-opacity)}.van-nav-bar{position:relative;z-index:var(--van-nav-bar-z-index);line-height:var(--van-line-height-lg);text-align:center;background:var(--van-nav-bar-background);-webkit-user-select:none;-moz-user-select:none;user-select:none}.van-nav-bar--fixed{position:fixed;top:0;left:0;width:100%}.van-nav-bar--safe-area-inset-top{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.van-nav-bar .van-icon{color:var(--van-nav-bar-icon-color)}.van-nav-bar__content{position:relative;display:flex;align-items:center;height:var(--van-nav-bar-height)}.van-nav-bar__arrow{margin-right:var(--van-padding-base);font-size:var(--van-nav-bar-arrow-size)}.van-nav-bar__title{max-width:60%;margin:0 auto;color:var(--van-nav-bar-title-text-color);font-weight:var(--van-font-bold);font-size:var(--van-nav-bar-title-font-size)}.van-nav-bar__left,.van-nav-bar__right{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 var(--van-padding-md);font-size:var(--van-font-size-md)}.van-nav-bar__left--disabled,.van-nav-bar__right--disabled{cursor:not-allowed;opacity:var(--van-nav-bar-disabled-opacity)}.van-nav-bar__left{left:0}.van-nav-bar__right{right:0}.van-nav-bar__text{color:var(--van-nav-bar-text-color)}.custom-nav-bar[data-v-fc10581e]{height:80px;position:fixed;top:0;left:0;width:100%;z-index:999}[data-v-fc10581e] .van-nav-bar{height:100%;background-color:#0668fc}[data-v-fc10581e] .van-nav-bar__title{font-size:24px;font-weight:700;color:#fff;margin-top:40px}.home[data-v-a06cbe3a]{padding:20px;border-radius:10px;border:2px solid #0668fc;margin:100px 10px 20px;flex:1}.title[data-v-a06cbe3a]{text-align:center;font-size:30px}.title-control[data-v-a06cbe3a]{text-align:left;font-size:15px;margin:0;white-space:nowrap}.content[data-v-a06cbe3a]{min-height:100vh;margin-bottom:70px}.button-container[data-v-a06cbe3a]{display:flex;justify-content:center;margin-top:20px}.set-title[data-v-a06cbe3a]{font-size:15px;margin-right:10px;white-space:nowrap}.slider[data-v-a06cbe3a]{margin-top:20px;margin-bottom:15px}.control[data-v-a06cbe3a],.slider-container[data-v-a06cbe3a]{display:flex;align-items:center}.control[data-v-a06cbe3a]{justify-content:space-between;margin-top:10px}.delete-button[data-v-a06cbe3a]{align-items:right}.input-container[data-v-a06cbe3a]{display:flex;justify-content:space-between;margin-top:10px}.footer-container[data-v-a06cbe3a]{position:fixed;bottom:0;width:100%;background-color:#fff;box-shadow:0 -2px 10px rgba(0,0,0,.1);z-index:1000}.brightness[data-v-a06cbe3a]{padding-left:0!important}[data-v-a06cbe3a] .van-cell__title,[data-v-a06cbe3a] .van-field__label{text-align:left!important;margin-left:0!important;padding-left:10px!important}[data-v-a06cbe3a] .van-field__control{text-align:right!important}.event-item[data-v-a06cbe3a]{margin-top:20px;padding:10px;border:1px solid #e0e0e0;border-radius:10px}.delete-button[data-v-a06cbe3a]{position:absolute;top:50%;border-radius:10px}.control .van-field__label[data-v-a06cbe3a]{white-space:nowrap} \ No newline at end of file diff --git a/web/css/718.dc007c1e.css b/web/css/718.dc007c1e.css new file mode 100644 index 0000000..ac65fa1 --- /dev/null +++ b/web/css/718.dc007c1e.css @@ -0,0 +1 @@ +:host,:root{--van-loading-text-color:var(--van-text-color-2);--van-loading-text-font-size:var(--van-font-size-md);--van-loading-spinner-color:var(--van-gray-5);--van-loading-spinner-size:30px;--van-loading-spinner-duration:.8s}.van-loading{color:var(--van-loading-spinner-color);font-size:0}.van-loading,.van-loading__spinner{position:relative;vertical-align:middle}.van-loading__spinner{display:inline-block;width:var(--van-loading-spinner-size);max-width:100%;height:var(--van-loading-spinner-size);max-height:100%;animation:van-rotate var(--van-loading-spinner-duration) linear infinite}.van-loading__spinner--spinner{animation-timing-function:steps(12)}.van-loading__spinner--circular{animation-duration:2s}.van-loading__line{position:absolute;top:0;left:0;width:100%;height:100%}.van-loading__line:before{display:block;width:2px;height:25%;margin:0 auto;background-color:currentColor;border-radius:40%;content:" "}.van-loading__circular{display:block;width:100%;height:100%}.van-loading__circular circle{animation:van-circular 1.5s ease-in-out infinite;stroke:currentColor;stroke-width:3;stroke-linecap:round}.van-loading__text{display:inline-block;margin-left:var(--van-padding-xs);color:var(--van-loading-text-color);font-size:var(--van-loading-text-font-size);vertical-align:middle}.van-loading--vertical{display:flex;flex-direction:column;align-items:center}.van-loading--vertical .van-loading__text{margin:var(--van-padding-xs) 0 0}@keyframes van-circular{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40}to{stroke-dasharray:90,150;stroke-dashoffset:-120}}.van-loading__line--1{transform:rotate(30deg);opacity:1}.van-loading__line--2{transform:rotate(60deg);opacity:.9375}.van-loading__line--3{transform:rotate(90deg);opacity:.875}.van-loading__line--4{transform:rotate(120deg);opacity:.8125}.van-loading__line--5{transform:rotate(150deg);opacity:.75}.van-loading__line--6{transform:rotate(180deg);opacity:.6875}.van-loading__line--7{transform:rotate(210deg);opacity:.625}.van-loading__line--8{transform:rotate(240deg);opacity:.5625}.van-loading__line--9{transform:rotate(270deg);opacity:.5}.van-loading__line--10{transform:rotate(300deg);opacity:.4375}.van-loading__line--11{transform:rotate(330deg);opacity:.375}.van-loading__line--12{transform:rotate(1turn);opacity:.3125}:host,:root{--van-button-mini-height:24px;--van-button-mini-padding:0 var(--van-padding-base);--van-button-mini-font-size:var(--van-font-size-xs);--van-button-small-height:32px;--van-button-small-padding:0 var(--van-padding-xs);--van-button-small-font-size:var(--van-font-size-sm);--van-button-normal-padding:0 15px;--van-button-normal-font-size:var(--van-font-size-md);--van-button-large-height:50px;--van-button-default-height:44px;--van-button-default-line-height:1.2;--van-button-default-font-size:var(--van-font-size-lg);--van-button-default-color:var(--van-text-color);--van-button-default-background:var(--van-background-2);--van-button-default-border-color:var(--van-gray-4);--van-button-primary-color:var(--van-white);--van-button-primary-background:var(--van-primary-color);--van-button-primary-border-color:var(--van-primary-color);--van-button-success-color:var(--van-white);--van-button-success-background:var(--van-success-color);--van-button-success-border-color:var(--van-success-color);--van-button-danger-color:var(--van-white);--van-button-danger-background:var(--van-danger-color);--van-button-danger-border-color:var(--van-danger-color);--van-button-warning-color:var(--van-white);--van-button-warning-background:var(--van-warning-color);--van-button-warning-border-color:var(--van-warning-color);--van-button-border-width:var(--van-border-width);--van-button-radius:var(--van-radius-md);--van-button-round-radius:var(--van-radius-max);--van-button-plain-background:var(--van-white);--van-button-disabled-opacity:var(--van-disabled-opacity);--van-button-icon-size:1.2em;--van-button-loading-icon-size:20px}.van-theme-dark{--van-button-plain-background:transparent}.van-button{position:relative;display:inline-block;box-sizing:border-box;height:var(--van-button-default-height);margin:0;padding:0;font-size:var(--van-button-default-font-size);line-height:var(--van-button-default-line-height);text-align:center;border-radius:var(--van-button-radius);cursor:pointer;transition:opacity var(--van-duration-fast);-webkit-appearance:none;-webkit-font-smoothing:auto}.van-button:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background:var(--van-black);border:inherit;border-color:var(--van-black);border-radius:inherit;transform:translate(-50%,-50%);opacity:0;content:" "}.van-button:active:before{opacity:.1}.van-button--disabled:before,.van-button--loading:before{display:none}.van-button--default{color:var(--van-button-default-color);background:var(--van-button-default-background);border:var(--van-button-border-width) solid var(--van-button-default-border-color)}.van-button--primary{color:var(--van-button-primary-color);background:var(--van-button-primary-background);border:var(--van-button-border-width) solid var(--van-button-primary-border-color)}.van-button--success{color:var(--van-button-success-color);background:var(--van-button-success-background);border:var(--van-button-border-width) solid var(--van-button-success-border-color)}.van-button--danger{color:var(--van-button-danger-color);background:var(--van-button-danger-background);border:var(--van-button-border-width) solid var(--van-button-danger-border-color)}.van-button--warning{color:var(--van-button-warning-color);background:var(--van-button-warning-background);border:var(--van-button-border-width) solid var(--van-button-warning-border-color)}.van-button--plain{background:var(--van-button-plain-background)}.van-button--plain.van-button--primary{color:var(--van-button-primary-background)}.van-button--plain.van-button--success{color:var(--van-button-success-background)}.van-button--plain.van-button--danger{color:var(--van-button-danger-background)}.van-button--plain.van-button--warning{color:var(--van-button-warning-background)}.van-button--large{width:100%;height:var(--van-button-large-height)}.van-button--normal{padding:var(--van-button-normal-padding);font-size:var(--van-button-normal-font-size)}.van-button--small{height:var(--van-button-small-height);padding:var(--van-button-small-padding);font-size:var(--van-button-small-font-size)}.van-button__loading{color:inherit;font-size:inherit}.van-button__loading .van-loading__spinner{color:currentColor;width:var(--van-button-loading-icon-size);height:var(--van-button-loading-icon-size)}.van-button--mini{height:var(--van-button-mini-height);padding:var(--van-button-mini-padding);font-size:var(--van-button-mini-font-size)}.van-button--mini+.van-button--mini{margin-left:var(--van-padding-base)}.van-button--block{display:block;width:100%}.van-button--disabled{cursor:not-allowed;opacity:var(--van-button-disabled-opacity)}.van-button--loading{cursor:default}.van-button--round{border-radius:var(--van-button-round-radius)}.van-button--square{border-radius:0}.van-button__content{display:flex;align-items:center;justify-content:center;height:100%}.van-button__content:before{content:" "}.van-button__icon{font-size:var(--van-button-icon-size);line-height:inherit}.van-button__icon+.van-button__text,.van-button__loading+.van-button__text,.van-button__text+.van-button__icon,.van-button__text+.van-button__loading{margin-left:var(--van-padding-base)}.van-button--hairline{border-width:0}.van-button--hairline:after{border-color:inherit;border-radius:calc(var(--van-button-radius)*2)}.van-button--hairline.van-button--round:after{border-radius:var(--van-button-round-radius)}.van-button--hairline.van-button--square:after{border-radius:0}:host,:root{--van-overlay-z-index:1;--van-overlay-background:rgba(0,0,0,.7)}.van-overlay{position:fixed;top:0;left:0;z-index:var(--van-overlay-z-index);width:100%;height:100%;background:var(--van-overlay-background)}:host,:root{--van-popup-background:var(--van-background-2);--van-popup-transition:transform var(--van-duration-base);--van-popup-round-radius:16px;--van-popup-close-icon-size:22px;--van-popup-close-icon-color:var(--van-gray-5);--van-popup-close-icon-margin:16px;--van-popup-close-icon-z-index:1}.van-overflow-hidden{overflow:hidden!important}.van-popup{position:fixed;max-height:100%;overflow-y:auto;box-sizing:border-box;background:var(--van-popup-background);transition:var(--van-popup-transition);-webkit-overflow-scrolling:touch}.van-popup--center{top:50%;left:0;right:0;width:-moz-fit-content;width:fit-content;max-width:calc(100vw - var(--van-padding-md)*2);margin:0 auto;transform:translateY(-50%)}.van-popup--center.van-popup--round{border-radius:var(--van-popup-round-radius)}.van-popup--top{top:0;left:0;width:100%}.van-popup--top.van-popup--round{border-radius:0 0 var(--van-popup-round-radius) var(--van-popup-round-radius)}.van-popup--right{top:50%;right:0;transform:translate3d(0,-50%,0)}.van-popup--right.van-popup--round{border-radius:var(--van-popup-round-radius) 0 0 var(--van-popup-round-radius)}.van-popup--bottom{bottom:0;left:0;width:100%}.van-popup--bottom.van-popup--round{border-radius:var(--van-popup-round-radius) var(--van-popup-round-radius) 0 0}.van-popup--left{top:50%;left:0;transform:translate3d(0,-50%,0)}.van-popup--left.van-popup--round{border-radius:0 var(--van-popup-round-radius) var(--van-popup-round-radius) 0}.van-popup-slide-bottom-enter-active,.van-popup-slide-left-enter-active,.van-popup-slide-right-enter-active,.van-popup-slide-top-enter-active{transition-timing-function:var(--van-ease-out)}.van-popup-slide-bottom-leave-active,.van-popup-slide-left-leave-active,.van-popup-slide-right-leave-active,.van-popup-slide-top-leave-active{transition-timing-function:var(--van-ease-in)}.van-popup-slide-top-enter-from,.van-popup-slide-top-leave-active{transform:translate3d(0,-100%,0)}.van-popup-slide-right-enter-from,.van-popup-slide-right-leave-active{transform:translate3d(100%,-50%,0)}.van-popup-slide-bottom-enter-from,.van-popup-slide-bottom-leave-active{transform:translate3d(0,100%,0)}.van-popup-slide-left-enter-from,.van-popup-slide-left-leave-active{transform:translate3d(-100%,-50%,0)}.van-popup__close-icon{position:absolute;z-index:var(--van-popup-close-icon-z-index);color:var(--van-popup-close-icon-color);font-size:var(--van-popup-close-icon-size)}.van-popup__close-icon--top-left{top:var(--van-popup-close-icon-margin);left:var(--van-popup-close-icon-margin)}.van-popup__close-icon--top-right{top:var(--van-popup-close-icon-margin);right:var(--van-popup-close-icon-margin)}.van-popup__close-icon--bottom-left{bottom:var(--van-popup-close-icon-margin);left:var(--van-popup-close-icon-margin)}.van-popup__close-icon--bottom-right{right:var(--van-popup-close-icon-margin);bottom:var(--van-popup-close-icon-margin)}:host,:root{--van-cell-group-background:var(--van-background-2);--van-cell-group-title-color:var(--van-text-color-2);--van-cell-group-title-padding:var(--van-padding-md) var(--van-padding-md);--van-cell-group-title-font-size:var(--van-font-size-md);--van-cell-group-title-line-height:16px;--van-cell-group-inset-padding:0 var(--van-padding-md);--van-cell-group-inset-radius:var(--van-radius-lg);--van-cell-group-inset-title-padding:var(--van-padding-md) var(--van-padding-md)}.van-cell-group{background:var(--van-cell-group-background)}.van-cell-group--inset{margin:var(--van-cell-group-inset-padding);border-radius:var(--van-cell-group-inset-radius);overflow:hidden}.van-cell-group__title{padding:var(--van-cell-group-title-padding);color:var(--van-cell-group-title-color);font-size:var(--van-cell-group-title-font-size);line-height:var(--van-cell-group-title-line-height)}.van-cell-group__title--inset{padding:var(--van-cell-group-inset-title-padding)}:host,:root{--van-cell-font-size:var(--van-font-size-md);--van-cell-line-height:24px;--van-cell-vertical-padding:10px;--van-cell-horizontal-padding:var(--van-padding-md);--van-cell-text-color:var(--van-text-color);--van-cell-background:var(--van-background-2);--van-cell-border-color:var(--van-border-color);--van-cell-active-color:var(--van-active-color);--van-cell-required-color:var(--van-danger-color);--van-cell-label-color:var(--van-text-color-2);--van-cell-label-font-size:var(--van-font-size-sm);--van-cell-label-line-height:var(--van-line-height-sm);--van-cell-label-margin-top:var(--van-padding-base);--van-cell-value-color:var(--van-text-color-2);--van-cell-value-font-size:inherit;--van-cell-icon-size:16px;--van-cell-right-icon-color:var(--van-gray-6);--van-cell-large-vertical-padding:var(--van-padding-sm);--van-cell-large-title-font-size:var(--van-font-size-lg);--van-cell-large-label-font-size:var(--van-font-size-md);--van-cell-large-value-font-size:inherit}.van-cell{position:relative;display:flex;box-sizing:border-box;width:100%;padding:var(--van-cell-vertical-padding) var(--van-cell-horizontal-padding);overflow:hidden;color:var(--van-cell-text-color);font-size:var(--van-cell-font-size);line-height:var(--van-cell-line-height);background:var(--van-cell-background)}.van-cell:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:var(--van-padding-md);bottom:0;left:var(--van-padding-md);border-bottom:1px solid var(--van-cell-border-color);transform:scaleY(.5)}.van-cell--borderless:after,.van-cell:last-child:after{display:none}.van-cell__label{margin-top:var(--van-cell-label-margin-top);color:var(--van-cell-label-color);font-size:var(--van-cell-label-font-size);line-height:var(--van-cell-label-line-height)}.van-cell__title,.van-cell__value{flex:1}.van-cell__value{position:relative;overflow:hidden;color:var(--van-cell-value-color);font-size:var(--van-cell-value-font-size);text-align:right;vertical-align:middle;word-wrap:break-word}.van-cell__left-icon,.van-cell__right-icon{height:var(--van-cell-line-height);font-size:var(--van-cell-icon-size);line-height:var(--van-cell-line-height)}.van-cell__left-icon{margin-right:var(--van-padding-base)}.van-cell__right-icon{margin-left:var(--van-padding-base);color:var(--van-cell-right-icon-color)}.van-cell--clickable{cursor:pointer}.van-cell--clickable:active{background-color:var(--van-cell-active-color)}.van-cell--required{overflow:visible}.van-cell--required:before{position:absolute;left:var(--van-padding-xs);color:var(--van-cell-required-color);font-size:var(--van-cell-font-size);content:"*"}.van-cell--center{align-items:center}.van-cell--large{padding-top:var(--van-cell-large-vertical-padding);padding-bottom:var(--van-cell-large-vertical-padding)}.van-cell--large .van-cell__title{font-size:var(--van-cell-large-title-font-size)}.van-cell--large .van-cell__label{font-size:var(--van-cell-large-label-font-size)}.van-cell--large .van-cell__value{font-size:var(--van-cell-large-value-font-size)}:host,:root{--van-toast-max-width:70%;--van-toast-font-size:var(--van-font-size-md);--van-toast-text-color:var(--van-white);--van-toast-loading-icon-color:var(--van-white);--van-toast-line-height:var(--van-line-height-md);--van-toast-radius:var(--van-radius-lg);--van-toast-background:rgba(0,0,0,.7);--van-toast-icon-size:36px;--van-toast-text-min-width:96px;--van-toast-text-padding:var(--van-padding-xs) var(--van-padding-sm);--van-toast-default-padding:var(--van-padding-md);--van-toast-default-width:88px;--van-toast-default-min-height:88px;--van-toast-position-top-distance:20%;--van-toast-position-bottom-distance:20%}.van-toast{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:content-box;transition:all var(--van-duration-fast);width:var(--van-toast-default-width);max-width:var(--van-toast-max-width);min-height:var(--van-toast-default-min-height);padding:var(--van-toast-default-padding);color:var(--van-toast-text-color);font-size:var(--van-toast-font-size);line-height:var(--van-toast-line-height);white-space:pre-wrap;word-break:break-all;text-align:center;background:var(--van-toast-background);border-radius:var(--van-toast-radius)}.van-toast--break-normal{word-break:normal;word-wrap:normal}.van-toast--break-word{word-break:normal;word-wrap:break-word}.van-toast--unclickable{overflow:hidden;cursor:not-allowed}.van-toast--unclickable *{pointer-events:none}.van-toast--html,.van-toast--text{width:-moz-fit-content;width:fit-content;min-width:var(--van-toast-text-min-width);min-height:0;padding:var(--van-toast-text-padding)}.van-toast--html .van-toast__text,.van-toast--text .van-toast__text{margin-top:0}.van-toast--top{top:var(--van-toast-position-top-distance)}.van-toast--bottom{top:auto;bottom:var(--van-toast-position-bottom-distance)}.van-toast__icon{font-size:var(--van-toast-icon-size)}.van-toast__loading{padding:var(--van-padding-base);color:var(--van-toast-loading-icon-color)}.van-toast__text{margin-top:var(--van-padding-xs)}:host,:root{--van-field-label-width:6.2em;--van-field-label-color:var(--van-text-color);--van-field-label-margin-right:var(--van-padding-sm);--van-field-input-text-color:var(--van-text-color);--van-field-input-error-text-color:var(--van-danger-color);--van-field-input-disabled-text-color:var(--van-text-color-3);--van-field-placeholder-text-color:var(--van-text-color-3);--van-field-icon-size:18px;--van-field-clear-icon-size:18px;--van-field-clear-icon-color:var(--van-gray-5);--van-field-right-icon-color:var(--van-gray-6);--van-field-error-message-color:var(--van-danger-color);--van-field-error-message-font-size:12px;--van-field-text-area-min-height:60px;--van-field-word-limit-color:var(--van-gray-7);--van-field-word-limit-font-size:var(--van-font-size-sm);--van-field-word-limit-line-height:16px;--van-field-disabled-text-color:var(--van-text-color-3);--van-field-required-mark-color:var(--van-red)}.van-field{flex-wrap:wrap}.van-field__label{flex:none;box-sizing:border-box;width:var(--van-field-label-width);margin-right:var(--van-field-label-margin-right);color:var(--van-field-label-color);text-align:left;word-wrap:break-word}.van-field__label--center{text-align:center}.van-field__label--right{text-align:right}.van-field__label--top{display:flex;width:100%;text-align:left;margin-bottom:var(--van-padding-base);overflow-wrap:break-word}.van-field__label--required:before{margin-right:2px;color:var(--van-field-required-mark-color);content:"*"}.van-field--disabled .van-field__label{color:var(--van-field-disabled-text-color)}.van-field__value{overflow:visible}.van-field__body{display:flex;align-items:center}.van-field__control{display:block;box-sizing:border-box;width:100%;min-width:0;margin:0;padding:0;color:var(--van-field-input-text-color);line-height:inherit;text-align:left;background-color:transparent;border:0;resize:none;-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.van-field__control::-moz-placeholder{color:var(--van-field-placeholder-text-color)}.van-field__control::placeholder{color:var(--van-field-placeholder-text-color)}.van-field__control:-moz-read-only{cursor:default}.van-field__control:read-only{cursor:default}.van-field__control:disabled{color:var(--van-field-input-disabled-text-color);cursor:not-allowed;opacity:1;-webkit-text-fill-color:var(--van-field-input-disabled-text-color)}.van-field__control--center{justify-content:center;text-align:center}.van-field__control--right{justify-content:flex-end;text-align:right}.van-field__control--custom{display:flex;align-items:center;min-height:var(--van-cell-line-height)}.van-field__control--error::-moz-placeholder{color:var(--van-field-input-error-text-color);-webkit-text-fill-color:currentColor}.van-field__control--error,.van-field__control--error::placeholder{color:var(--van-field-input-error-text-color);-webkit-text-fill-color:currentColor}.van-field__control--min-height{min-height:var(--van-field-text-area-min-height)}.van-field__control[type=date],.van-field__control[type=datetime-local],.van-field__control[type=time]{min-height:var(--van-cell-line-height)}.van-field__control[type=search]{-webkit-appearance:none}.van-field__button,.van-field__clear,.van-field__icon,.van-field__right-icon{flex-shrink:0}.van-field__clear,.van-field__right-icon{margin-right:calc(var(--van-padding-xs)*-1);padding:0 var(--van-padding-xs);line-height:inherit}.van-field__clear{color:var(--van-field-clear-icon-color);font-size:var(--van-field-clear-icon-size);cursor:pointer}.van-field__left-icon .van-icon,.van-field__right-icon .van-icon{display:block;font-size:var(--van-field-icon-size);line-height:inherit}.van-field__left-icon{margin-right:var(--van-padding-base)}.van-field__right-icon{color:var(--van-field-right-icon-color)}.van-field__button{padding-left:var(--van-padding-xs)}.van-field__error-message{color:var(--van-field-error-message-color);font-size:var(--van-field-error-message-font-size);text-align:left}.van-field__error-message--center{text-align:center}.van-field__error-message--right{text-align:right}.van-field__word-limit{margin-top:var(--van-padding-base);color:var(--van-field-word-limit-color);font-size:var(--van-field-word-limit-font-size);line-height:var(--van-field-word-limit-line-height);text-align:right} \ No newline at end of file diff --git a/web/css/769.522c5d34.css b/web/css/769.522c5d34.css new file mode 100644 index 0000000..761a220 --- /dev/null +++ b/web/css/769.522c5d34.css @@ -0,0 +1 @@ +:host,:root{--van-tabbar-height:50px;--van-tabbar-z-index:1;--van-tabbar-background:var(--van-background-2)}.van-tabbar{z-index:var(--van-tabbar-z-index);display:flex;box-sizing:content-box;width:100%;height:var(--van-tabbar-height);background:var(--van-tabbar-background)}.van-tabbar--fixed{position:fixed;bottom:0;left:0}:host,:root{--van-tabbar-item-font-size:var(--van-font-size-sm);--van-tabbar-item-text-color:var(--van-text-color);--van-tabbar-item-active-color:var(--van-primary-color);--van-tabbar-item-active-background:var(--van-background-2);--van-tabbar-item-line-height:1;--van-tabbar-item-icon-size:22px;--van-tabbar-item-icon-margin-bottom:var(--van-padding-base)}.van-tabbar-item{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;color:var(--van-tabbar-item-text-color);font-size:var(--van-tabbar-item-font-size);line-height:var(--van-tabbar-item-line-height);cursor:pointer}.van-tabbar-item__icon{margin-bottom:var(--van-tabbar-item-icon-margin-bottom);font-size:var(--van-tabbar-item-icon-size)}.van-tabbar-item__icon .van-icon{display:block}.van-tabbar-item__icon .van-badge{margin-top:var(--van-padding-base)}.van-tabbar-item__icon img{display:block;height:20px}.van-tabbar-item--active{color:var(--van-tabbar-item-active-color);background-color:var(--van-tabbar-item-active-background)}.footer{height:50px;position:fixed;bottom:0;left:0;width:100%;z-index:999} \ No newline at end of file diff --git a/web/css/772.fdf33262.css b/web/css/772.fdf33262.css new file mode 100644 index 0000000..0bc0f96 --- /dev/null +++ b/web/css/772.fdf33262.css @@ -0,0 +1 @@ +:host,:root{--van-tabbar-height:50px;--van-tabbar-z-index:1;--van-tabbar-background:var(--van-background-2)}.van-tabbar{z-index:var(--van-tabbar-z-index);display:flex;box-sizing:content-box;width:100%;height:var(--van-tabbar-height);background:var(--van-tabbar-background)}.van-tabbar--fixed{position:fixed;bottom:0;left:0}:host,:root{--van-tabbar-item-font-size:var(--van-font-size-sm);--van-tabbar-item-text-color:var(--van-text-color);--van-tabbar-item-active-color:var(--van-primary-color);--van-tabbar-item-active-background:var(--van-background-2);--van-tabbar-item-line-height:1;--van-tabbar-item-icon-size:22px;--van-tabbar-item-icon-margin-bottom:var(--van-padding-base)}.van-tabbar-item{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;color:var(--van-tabbar-item-text-color);font-size:var(--van-tabbar-item-font-size);line-height:var(--van-tabbar-item-line-height);cursor:pointer}.van-tabbar-item__icon{margin-bottom:var(--van-tabbar-item-icon-margin-bottom);font-size:var(--van-tabbar-item-icon-size)}.van-tabbar-item__icon .van-icon{display:block}.van-tabbar-item__icon .van-badge{margin-top:var(--van-padding-base)}.van-tabbar-item__icon img{display:block;height:20px}.van-tabbar-item--active{color:var(--van-tabbar-item-active-color);background-color:var(--van-tabbar-item-active-background)}.footer{height:50px;position:fixed;bottom:0;left:0;width:100%;z-index:999}:host,:root{--van-loading-text-color:var(--van-text-color-2);--van-loading-text-font-size:var(--van-font-size-md);--van-loading-spinner-color:var(--van-gray-5);--van-loading-spinner-size:30px;--van-loading-spinner-duration:.8s}.van-loading{color:var(--van-loading-spinner-color);font-size:0}.van-loading,.van-loading__spinner{position:relative;vertical-align:middle}.van-loading__spinner{display:inline-block;width:var(--van-loading-spinner-size);max-width:100%;height:var(--van-loading-spinner-size);max-height:100%;animation:van-rotate var(--van-loading-spinner-duration) linear infinite}.van-loading__spinner--spinner{animation-timing-function:steps(12)}.van-loading__spinner--circular{animation-duration:2s}.van-loading__line{position:absolute;top:0;left:0;width:100%;height:100%}.van-loading__line:before{display:block;width:2px;height:25%;margin:0 auto;background-color:currentColor;border-radius:40%;content:" "}.van-loading__circular{display:block;width:100%;height:100%}.van-loading__circular circle{animation:van-circular 1.5s ease-in-out infinite;stroke:currentColor;stroke-width:3;stroke-linecap:round}.van-loading__text{display:inline-block;margin-left:var(--van-padding-xs);color:var(--van-loading-text-color);font-size:var(--van-loading-text-font-size);vertical-align:middle}.van-loading--vertical{display:flex;flex-direction:column;align-items:center}.van-loading--vertical .van-loading__text{margin:var(--van-padding-xs) 0 0}@keyframes van-circular{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40}to{stroke-dasharray:90,150;stroke-dashoffset:-120}}.van-loading__line--1{transform:rotate(30deg);opacity:1}.van-loading__line--2{transform:rotate(60deg);opacity:.9375}.van-loading__line--3{transform:rotate(90deg);opacity:.875}.van-loading__line--4{transform:rotate(120deg);opacity:.8125}.van-loading__line--5{transform:rotate(150deg);opacity:.75}.van-loading__line--6{transform:rotate(180deg);opacity:.6875}.van-loading__line--7{transform:rotate(210deg);opacity:.625}.van-loading__line--8{transform:rotate(240deg);opacity:.5625}.van-loading__line--9{transform:rotate(270deg);opacity:.5}.van-loading__line--10{transform:rotate(300deg);opacity:.4375}.van-loading__line--11{transform:rotate(330deg);opacity:.375}.van-loading__line--12{transform:rotate(1turn);opacity:.3125}:host,:root{--van-pull-refresh-head-height:50px;--van-pull-refresh-head-font-size:var(--van-font-size-md);--van-pull-refresh-head-text-color:var(--van-text-color-2);--van-pull-refresh-loading-icon-size:16px}.van-pull-refresh{overflow:hidden}.van-pull-refresh__track{position:relative;height:100%;transition-property:transform}.van-pull-refresh__head{position:absolute;left:0;width:100%;height:var(--van-pull-refresh-head-height);overflow:hidden;color:var(--van-pull-refresh-head-text-color);font-size:var(--van-pull-refresh-head-font-size);line-height:var(--van-pull-refresh-head-height);text-align:center;transform:translateY(-100%)}.van-pull-refresh__loading .van-loading__spinner{width:var(--van-pull-refresh-loading-icon-size);height:var(--van-pull-refresh-loading-icon-size)}:host,:root{--van-nav-bar-height:46px;--van-nav-bar-background:var(--van-background-2);--van-nav-bar-arrow-size:16px;--van-nav-bar-icon-color:var(--van-primary-color);--van-nav-bar-text-color:var(--van-primary-color);--van-nav-bar-title-font-size:var(--van-font-size-lg);--van-nav-bar-title-text-color:var(--van-text-color);--van-nav-bar-z-index:1;--van-nav-bar-disabled-opacity:var(--van-disabled-opacity)}.van-nav-bar{position:relative;z-index:var(--van-nav-bar-z-index);line-height:var(--van-line-height-lg);text-align:center;background:var(--van-nav-bar-background);-webkit-user-select:none;-moz-user-select:none;user-select:none}.van-nav-bar--fixed{position:fixed;top:0;left:0;width:100%}.van-nav-bar--safe-area-inset-top{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.van-nav-bar .van-icon{color:var(--van-nav-bar-icon-color)}.van-nav-bar__content{position:relative;display:flex;align-items:center;height:var(--van-nav-bar-height)}.van-nav-bar__arrow{margin-right:var(--van-padding-base);font-size:var(--van-nav-bar-arrow-size)}.van-nav-bar__title{max-width:60%;margin:0 auto;color:var(--van-nav-bar-title-text-color);font-weight:var(--van-font-bold);font-size:var(--van-nav-bar-title-font-size)}.van-nav-bar__left,.van-nav-bar__right{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 var(--van-padding-md);font-size:var(--van-font-size-md)}.van-nav-bar__left--disabled,.van-nav-bar__right--disabled{cursor:not-allowed;opacity:var(--van-nav-bar-disabled-opacity)}.van-nav-bar__left{left:0}.van-nav-bar__right{right:0}.van-nav-bar__text{color:var(--van-nav-bar-text-color)}.custom-nav-bar[data-v-fc10581e]{height:80px;position:fixed;top:0;left:0;width:100%;z-index:999}[data-v-fc10581e] .van-nav-bar{height:100%;background-color:#0668fc}[data-v-fc10581e] .van-nav-bar__title{font-size:24px;font-weight:700;color:#fff;margin-top:40px}.page-container[data-v-14c7b2a1]{display:flex;flex-direction:column;min-height:100vh;position:relative}.content[data-v-14c7b2a1]{flex:1;overflow-y:auto;padding:20px;border-radius:20px!important;margin-top:80px;margin-bottom:40px;min-height:100vh}.item[data-v-14c7b2a1]{border:2px solid #0668fc;border-radius:10px;margin-top:20px}.title[data-v-14c7b2a1]{text-align:center;font-size:30px} \ No newline at end of file diff --git a/web/css/928.e3bab1c5.css b/web/css/928.e3bab1c5.css new file mode 100644 index 0000000..b47bcf0 --- /dev/null +++ b/web/css/928.e3bab1c5.css @@ -0,0 +1 @@ +:host,:root{--van-tabbar-height:50px;--van-tabbar-z-index:1;--van-tabbar-background:var(--van-background-2)}.van-tabbar{z-index:var(--van-tabbar-z-index);display:flex;box-sizing:content-box;width:100%;height:var(--van-tabbar-height);background:var(--van-tabbar-background)}.van-tabbar--fixed{position:fixed;bottom:0;left:0}:host,:root{--van-tabbar-item-font-size:var(--van-font-size-sm);--van-tabbar-item-text-color:var(--van-text-color);--van-tabbar-item-active-color:var(--van-primary-color);--van-tabbar-item-active-background:var(--van-background-2);--van-tabbar-item-line-height:1;--van-tabbar-item-icon-size:22px;--van-tabbar-item-icon-margin-bottom:var(--van-padding-base)}.van-tabbar-item{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;color:var(--van-tabbar-item-text-color);font-size:var(--van-tabbar-item-font-size);line-height:var(--van-tabbar-item-line-height);cursor:pointer}.van-tabbar-item__icon{margin-bottom:var(--van-tabbar-item-icon-margin-bottom);font-size:var(--van-tabbar-item-icon-size)}.van-tabbar-item__icon .van-icon{display:block}.van-tabbar-item__icon .van-badge{margin-top:var(--van-padding-base)}.van-tabbar-item__icon img{display:block;height:20px}.van-tabbar-item--active{color:var(--van-tabbar-item-active-color);background-color:var(--van-tabbar-item-active-background)}.footer{height:50px;position:fixed;bottom:0;left:0;width:100%;z-index:999}:host,:root{--van-loading-text-color:var(--van-text-color-2);--van-loading-text-font-size:var(--van-font-size-md);--van-loading-spinner-color:var(--van-gray-5);--van-loading-spinner-size:30px;--van-loading-spinner-duration:.8s}.van-loading{color:var(--van-loading-spinner-color);font-size:0}.van-loading,.van-loading__spinner{position:relative;vertical-align:middle}.van-loading__spinner{display:inline-block;width:var(--van-loading-spinner-size);max-width:100%;height:var(--van-loading-spinner-size);max-height:100%;animation:van-rotate var(--van-loading-spinner-duration) linear infinite}.van-loading__spinner--spinner{animation-timing-function:steps(12)}.van-loading__spinner--circular{animation-duration:2s}.van-loading__line{position:absolute;top:0;left:0;width:100%;height:100%}.van-loading__line:before{display:block;width:2px;height:25%;margin:0 auto;background-color:currentColor;border-radius:40%;content:" "}.van-loading__circular{display:block;width:100%;height:100%}.van-loading__circular circle{animation:van-circular 1.5s ease-in-out infinite;stroke:currentColor;stroke-width:3;stroke-linecap:round}.van-loading__text{display:inline-block;margin-left:var(--van-padding-xs);color:var(--van-loading-text-color);font-size:var(--van-loading-text-font-size);vertical-align:middle}.van-loading--vertical{display:flex;flex-direction:column;align-items:center}.van-loading--vertical .van-loading__text{margin:var(--van-padding-xs) 0 0}@keyframes van-circular{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40}to{stroke-dasharray:90,150;stroke-dashoffset:-120}}.van-loading__line--1{transform:rotate(30deg);opacity:1}.van-loading__line--2{transform:rotate(60deg);opacity:.9375}.van-loading__line--3{transform:rotate(90deg);opacity:.875}.van-loading__line--4{transform:rotate(120deg);opacity:.8125}.van-loading__line--5{transform:rotate(150deg);opacity:.75}.van-loading__line--6{transform:rotate(180deg);opacity:.6875}.van-loading__line--7{transform:rotate(210deg);opacity:.625}.van-loading__line--8{transform:rotate(240deg);opacity:.5625}.van-loading__line--9{transform:rotate(270deg);opacity:.5}.van-loading__line--10{transform:rotate(300deg);opacity:.4375}.van-loading__line--11{transform:rotate(330deg);opacity:.375}.van-loading__line--12{transform:rotate(1turn);opacity:.3125}:host,:root{--van-pull-refresh-head-height:50px;--van-pull-refresh-head-font-size:var(--van-font-size-md);--van-pull-refresh-head-text-color:var(--van-text-color-2);--van-pull-refresh-loading-icon-size:16px}.van-pull-refresh{overflow:hidden}.van-pull-refresh__track{position:relative;height:100%;transition-property:transform}.van-pull-refresh__head{position:absolute;left:0;width:100%;height:var(--van-pull-refresh-head-height);overflow:hidden;color:var(--van-pull-refresh-head-text-color);font-size:var(--van-pull-refresh-head-font-size);line-height:var(--van-pull-refresh-head-height);text-align:center;transform:translateY(-100%)}.van-pull-refresh__loading .van-loading__spinner{width:var(--van-pull-refresh-loading-icon-size);height:var(--van-pull-refresh-loading-icon-size)}:host,:root{--van-cell-group-background:var(--van-background-2);--van-cell-group-title-color:var(--van-text-color-2);--van-cell-group-title-padding:var(--van-padding-md) var(--van-padding-md);--van-cell-group-title-font-size:var(--van-font-size-md);--van-cell-group-title-line-height:16px;--van-cell-group-inset-padding:0 var(--van-padding-md);--van-cell-group-inset-radius:var(--van-radius-lg);--van-cell-group-inset-title-padding:var(--van-padding-md) var(--van-padding-md)}.van-cell-group{background:var(--van-cell-group-background)}.van-cell-group--inset{margin:var(--van-cell-group-inset-padding);border-radius:var(--van-cell-group-inset-radius);overflow:hidden}.van-cell-group__title{padding:var(--van-cell-group-title-padding);color:var(--van-cell-group-title-color);font-size:var(--van-cell-group-title-font-size);line-height:var(--van-cell-group-title-line-height)}.van-cell-group__title--inset{padding:var(--van-cell-group-inset-title-padding)}:host,:root{--van-cell-font-size:var(--van-font-size-md);--van-cell-line-height:24px;--van-cell-vertical-padding:10px;--van-cell-horizontal-padding:var(--van-padding-md);--van-cell-text-color:var(--van-text-color);--van-cell-background:var(--van-background-2);--van-cell-border-color:var(--van-border-color);--van-cell-active-color:var(--van-active-color);--van-cell-required-color:var(--van-danger-color);--van-cell-label-color:var(--van-text-color-2);--van-cell-label-font-size:var(--van-font-size-sm);--van-cell-label-line-height:var(--van-line-height-sm);--van-cell-label-margin-top:var(--van-padding-base);--van-cell-value-color:var(--van-text-color-2);--van-cell-value-font-size:inherit;--van-cell-icon-size:16px;--van-cell-right-icon-color:var(--van-gray-6);--van-cell-large-vertical-padding:var(--van-padding-sm);--van-cell-large-title-font-size:var(--van-font-size-lg);--van-cell-large-label-font-size:var(--van-font-size-md);--van-cell-large-value-font-size:inherit}.van-cell{position:relative;display:flex;box-sizing:border-box;width:100%;padding:var(--van-cell-vertical-padding) var(--van-cell-horizontal-padding);overflow:hidden;color:var(--van-cell-text-color);font-size:var(--van-cell-font-size);line-height:var(--van-cell-line-height);background:var(--van-cell-background)}.van-cell:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:var(--van-padding-md);bottom:0;left:var(--van-padding-md);border-bottom:1px solid var(--van-cell-border-color);transform:scaleY(.5)}.van-cell--borderless:after,.van-cell:last-child:after{display:none}.van-cell__label{margin-top:var(--van-cell-label-margin-top);color:var(--van-cell-label-color);font-size:var(--van-cell-label-font-size);line-height:var(--van-cell-label-line-height)}.van-cell__title,.van-cell__value{flex:1}.van-cell__value{position:relative;overflow:hidden;color:var(--van-cell-value-color);font-size:var(--van-cell-value-font-size);text-align:right;vertical-align:middle;word-wrap:break-word}.van-cell__left-icon,.van-cell__right-icon{height:var(--van-cell-line-height);font-size:var(--van-cell-icon-size);line-height:var(--van-cell-line-height)}.van-cell__left-icon{margin-right:var(--van-padding-base)}.van-cell__right-icon{margin-left:var(--van-padding-base);color:var(--van-cell-right-icon-color)}.van-cell--clickable{cursor:pointer}.van-cell--clickable:active{background-color:var(--van-cell-active-color)}.van-cell--required{overflow:visible}.van-cell--required:before{position:absolute;left:var(--van-padding-xs);color:var(--van-cell-required-color);font-size:var(--van-cell-font-size);content:"*"}.van-cell--center{align-items:center}.van-cell--large{padding-top:var(--van-cell-large-vertical-padding);padding-bottom:var(--van-cell-large-vertical-padding)}.van-cell--large .van-cell__title{font-size:var(--van-cell-large-title-font-size)}.van-cell--large .van-cell__label{font-size:var(--van-cell-large-label-font-size)}.van-cell--large .van-cell__value{font-size:var(--van-cell-large-value-font-size)}:host,:root{--van-field-label-width:6.2em;--van-field-label-color:var(--van-text-color);--van-field-label-margin-right:var(--van-padding-sm);--van-field-input-text-color:var(--van-text-color);--van-field-input-error-text-color:var(--van-danger-color);--van-field-input-disabled-text-color:var(--van-text-color-3);--van-field-placeholder-text-color:var(--van-text-color-3);--van-field-icon-size:18px;--van-field-clear-icon-size:18px;--van-field-clear-icon-color:var(--van-gray-5);--van-field-right-icon-color:var(--van-gray-6);--van-field-error-message-color:var(--van-danger-color);--van-field-error-message-font-size:12px;--van-field-text-area-min-height:60px;--van-field-word-limit-color:var(--van-gray-7);--van-field-word-limit-font-size:var(--van-font-size-sm);--van-field-word-limit-line-height:16px;--van-field-disabled-text-color:var(--van-text-color-3);--van-field-required-mark-color:var(--van-red)}.van-field{flex-wrap:wrap}.van-field__label{flex:none;box-sizing:border-box;width:var(--van-field-label-width);margin-right:var(--van-field-label-margin-right);color:var(--van-field-label-color);text-align:left;word-wrap:break-word}.van-field__label--center{text-align:center}.van-field__label--right{text-align:right}.van-field__label--top{display:flex;width:100%;text-align:left;margin-bottom:var(--van-padding-base);overflow-wrap:break-word}.van-field__label--required:before{margin-right:2px;color:var(--van-field-required-mark-color);content:"*"}.van-field--disabled .van-field__label{color:var(--van-field-disabled-text-color)}.van-field__value{overflow:visible}.van-field__body{display:flex;align-items:center}.van-field__control{display:block;box-sizing:border-box;width:100%;min-width:0;margin:0;padding:0;color:var(--van-field-input-text-color);line-height:inherit;text-align:left;background-color:transparent;border:0;resize:none;-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.van-field__control::-moz-placeholder{color:var(--van-field-placeholder-text-color)}.van-field__control::placeholder{color:var(--van-field-placeholder-text-color)}.van-field__control:-moz-read-only{cursor:default}.van-field__control:read-only{cursor:default}.van-field__control:disabled{color:var(--van-field-input-disabled-text-color);cursor:not-allowed;opacity:1;-webkit-text-fill-color:var(--van-field-input-disabled-text-color)}.van-field__control--center{justify-content:center;text-align:center}.van-field__control--right{justify-content:flex-end;text-align:right}.van-field__control--custom{display:flex;align-items:center;min-height:var(--van-cell-line-height)}.van-field__control--error::-moz-placeholder{color:var(--van-field-input-error-text-color);-webkit-text-fill-color:currentColor}.van-field__control--error,.van-field__control--error::placeholder{color:var(--van-field-input-error-text-color);-webkit-text-fill-color:currentColor}.van-field__control--min-height{min-height:var(--van-field-text-area-min-height)}.van-field__control[type=date],.van-field__control[type=datetime-local],.van-field__control[type=time]{min-height:var(--van-cell-line-height)}.van-field__control[type=search]{-webkit-appearance:none}.van-field__button,.van-field__clear,.van-field__icon,.van-field__right-icon{flex-shrink:0}.van-field__clear,.van-field__right-icon{margin-right:calc(var(--van-padding-xs)*-1);padding:0 var(--van-padding-xs);line-height:inherit}.van-field__clear{color:var(--van-field-clear-icon-color);font-size:var(--van-field-clear-icon-size);cursor:pointer}.van-field__left-icon .van-icon,.van-field__right-icon .van-icon{display:block;font-size:var(--van-field-icon-size);line-height:inherit}.van-field__left-icon{margin-right:var(--van-padding-base)}.van-field__right-icon{color:var(--van-field-right-icon-color)}.van-field__button{padding-left:var(--van-padding-xs)}.van-field__error-message{color:var(--van-field-error-message-color);font-size:var(--van-field-error-message-font-size);text-align:left}.van-field__error-message--center{text-align:center}.van-field__error-message--right{text-align:right}.van-field__word-limit{margin-top:var(--van-padding-base);color:var(--van-field-word-limit-color);font-size:var(--van-field-word-limit-font-size);line-height:var(--van-field-word-limit-line-height);text-align:right}:host,:root{--van-divider-margin:var(--van-padding-md) 0;--van-divider-vertical-margin:0 var(--van-padding-xs);--van-divider-text-color:var(--van-text-color-2);--van-divider-font-size:var(--van-font-size-md);--van-divider-line-height:24px;--van-divider-border-color:var(--van-border-color);--van-divider-content-padding:var(--van-padding-md);--van-divider-content-left-width:10%;--van-divider-content-right-width:10%}.van-divider{display:flex;align-items:center;margin:var(--van-divider-margin);color:var(--van-divider-text-color);font-size:var(--van-divider-font-size);line-height:var(--van-divider-line-height);border-color:var(--van-divider-border-color);border-style:solid;border-width:0}.van-divider:after,.van-divider:before{display:block;flex:1;box-sizing:border-box;height:1px;border-color:inherit;border-style:inherit;border-width:var(--van-border-width) 0 0}.van-divider:before{content:""}.van-divider--hairline:after,.van-divider--hairline:before{transform:scaleY(.5)}.van-divider--dashed{border-style:dashed}.van-divider--content-center:before,.van-divider--content-left:before,.van-divider--content-right:before{margin-right:var(--van-divider-content-padding)}.van-divider--content-center:after,.van-divider--content-left:after,.van-divider--content-right:after{margin-left:var(--van-divider-content-padding);content:""}.van-divider--content-left:before{max-width:var(--van-divider-content-left-width)}.van-divider--content-right:after{max-width:var(--van-divider-content-right-width)}.van-divider--vertical{display:inline-block;width:var(--van-border-width);height:1em;margin:var(--van-divider-vertical-margin);vertical-align:middle}.van-divider--vertical:before{height:100%;border-width:0 0 0 var(--van-border-width)}.van-divider--vertical:after{display:none}.van-divider--vertical.van-divider--hairline:before{transform:scaleX(.5)}:host,:root{--van-nav-bar-height:46px;--van-nav-bar-background:var(--van-background-2);--van-nav-bar-arrow-size:16px;--van-nav-bar-icon-color:var(--van-primary-color);--van-nav-bar-text-color:var(--van-primary-color);--van-nav-bar-title-font-size:var(--van-font-size-lg);--van-nav-bar-title-text-color:var(--van-text-color);--van-nav-bar-z-index:1;--van-nav-bar-disabled-opacity:var(--van-disabled-opacity)}.van-nav-bar{position:relative;z-index:var(--van-nav-bar-z-index);line-height:var(--van-line-height-lg);text-align:center;background:var(--van-nav-bar-background);-webkit-user-select:none;-moz-user-select:none;user-select:none}.van-nav-bar--fixed{position:fixed;top:0;left:0;width:100%}.van-nav-bar--safe-area-inset-top{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.van-nav-bar .van-icon{color:var(--van-nav-bar-icon-color)}.van-nav-bar__content{position:relative;display:flex;align-items:center;height:var(--van-nav-bar-height)}.van-nav-bar__arrow{margin-right:var(--van-padding-base);font-size:var(--van-nav-bar-arrow-size)}.van-nav-bar__title{max-width:60%;margin:0 auto;color:var(--van-nav-bar-title-text-color);font-weight:var(--van-font-bold);font-size:var(--van-nav-bar-title-font-size)}.van-nav-bar__left,.van-nav-bar__right{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 var(--van-padding-md);font-size:var(--van-font-size-md)}.van-nav-bar__left--disabled,.van-nav-bar__right--disabled{cursor:not-allowed;opacity:var(--van-nav-bar-disabled-opacity)}.van-nav-bar__left{left:0}.van-nav-bar__right{right:0}.van-nav-bar__text{color:var(--van-nav-bar-text-color)}.custom-nav-bar[data-v-fc10581e]{height:80px;position:fixed;top:0;left:0;width:100%;z-index:999}[data-v-fc10581e] .van-nav-bar{height:100%;background-color:#0668fc}[data-v-fc10581e] .van-nav-bar__title{font-size:24px;font-weight:700;color:#fff;margin-top:40px}.page-container[data-v-96208070]{display:flex;flex-direction:column;min-height:100vh;position:relative}.content[data-v-96208070]{flex:1;overflow-y:auto;padding:20px;border-radius:20px!important;margin-top:80px;margin-bottom:40px;min-height:100vh}.item[data-v-96208070]{border:2px solid #0668fc;border-radius:10px;margin-top:20px}.title[data-v-96208070]{text-align:center;font-size:30px} \ No newline at end of file diff --git a/web/css/960.56b57727.css b/web/css/960.56b57727.css new file mode 100644 index 0000000..c496ed6 --- /dev/null +++ b/web/css/960.56b57727.css @@ -0,0 +1 @@ +:host,:root{--van-black:#000;--van-white:#fff;--van-gray-1:#f7f8fa;--van-gray-2:#f2f3f5;--van-gray-3:#ebedf0;--van-gray-4:#dcdee0;--van-gray-5:#c8c9cc;--van-gray-6:#969799;--van-gray-7:#646566;--van-gray-8:#323233;--van-red:#ee0a24;--van-blue:#1989fa;--van-orange:#ff976a;--van-orange-dark:#ed6a0c;--van-orange-light:#fffbe8;--van-green:#07c160;--van-gradient-red:linear-gradient(90deg,#ff6034,#ee0a24);--van-gradient-orange:linear-gradient(90deg,#ffd01e,#ff8917);--van-primary-color:var(--van-blue);--van-success-color:var(--van-green);--van-danger-color:var(--van-red);--van-warning-color:var(--van-orange);--van-text-color:var(--van-gray-8);--van-text-color-2:var(--van-gray-6);--van-text-color-3:var(--van-gray-5);--van-active-color:var(--van-gray-2);--van-active-opacity:.6;--van-disabled-opacity:.5;--van-background:var(--van-gray-1);--van-background-2:var(--van-white);--van-background-3:var(--van-white);--van-padding-base:4px;--van-padding-xs:8px;--van-padding-sm:12px;--van-padding-md:16px;--van-padding-lg:24px;--van-padding-xl:32px;--van-font-bold:600;--van-font-size-xs:10px;--van-font-size-sm:12px;--van-font-size-md:14px;--van-font-size-lg:16px;--van-line-height-xs:14px;--van-line-height-sm:18px;--van-line-height-md:20px;--van-line-height-lg:22px;--van-base-font:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Helvetica,Segoe UI,Arial,Roboto,"PingFang SC","miui","Hiragino Sans GB","Microsoft Yahei",sans-serif;--van-price-font:avenir-heavy,"PingFang SC",helvetica neue,arial,sans-serif;--van-duration-base:.3s;--van-duration-fast:.2s;--van-ease-out:ease-out;--van-ease-in:ease-in;--van-border-color:var(--van-gray-3);--van-border-width:1px;--van-radius-sm:2px;--van-radius-md:4px;--van-radius-lg:8px;--van-radius-max:999px}.van-theme-dark{--van-text-color:#f5f5f5;--van-text-color-2:#707070;--van-text-color-3:#4d4d4d;--van-border-color:#3a3a3c;--van-active-color:#3a3a3c;--van-background:#000;--van-background-2:#1c1c1e;--van-background-3:#37363b}html{-webkit-tap-highlight-color:transparent}body{margin:0;font-family:var(--van-base-font)}a{text-decoration:none}button,input,textarea{color:inherit;font:inherit}[class*=van-]:focus,a:focus,button:focus,input:focus,textarea:focus{outline:none}ol,ul{margin:0;padding:0;list-style:none}@keyframes van-slide-up-enter{0%{transform:translate3d(0,100%,0)}}@keyframes van-slide-up-leave{to{transform:translate3d(0,100%,0)}}@keyframes van-slide-down-enter{0%{transform:translate3d(0,-100%,0)}}@keyframes van-slide-down-leave{to{transform:translate3d(0,-100%,0)}}@keyframes van-slide-left-enter{0%{transform:translate3d(-100%,0,0)}}@keyframes van-slide-left-leave{to{transform:translate3d(-100%,0,0)}}@keyframes van-slide-right-enter{0%{transform:translate3d(100%,0,0)}}@keyframes van-slide-right-leave{to{transform:translate3d(100%,0,0)}}@keyframes van-fade-in{0%{opacity:0}to{opacity:1}}@keyframes van-fade-out{0%{opacity:1}to{opacity:0}}@keyframes van-rotate{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.van-fade-enter-active{animation:var(--van-duration-base) van-fade-in both var(--van-ease-out)}.van-fade-leave-active{animation:var(--van-duration-base) van-fade-out both var(--van-ease-in)}.van-slide-up-enter-active{animation:van-slide-up-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-up-leave-active{animation:van-slide-up-leave var(--van-duration-base) both var(--van-ease-in)}.van-slide-down-enter-active{animation:van-slide-down-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-down-leave-active{animation:van-slide-down-leave var(--van-duration-base) both var(--van-ease-in)}.van-slide-left-enter-active{animation:van-slide-left-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-left-leave-active{animation:van-slide-left-leave var(--van-duration-base) both var(--van-ease-in)}.van-slide-right-enter-active{animation:van-slide-right-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-right-leave-active{animation:van-slide-right-leave var(--van-duration-base) both var(--van-ease-in)}.van-clearfix:after{display:table;clear:both;content:""}.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;line-break:anywhere;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3}.van-safe-area-top{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.van-safe-area-bottom{padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.van-haptics-feedback{cursor:pointer}.van-haptics-feedback:active{opacity:var(--van-active-opacity)}[class*=van-hairline]:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--van-border-color);transform:scale(.5)}.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--top:after{border-top-width:var(--van-border-width)}.van-hairline--left:after{border-left-width:var(--van-border-width)}.van-hairline--right:after{border-right-width:var(--van-border-width)}.van-hairline--bottom:after{border-bottom-width:var(--van-border-width)}.van-hairline--top-bottom:after,.van-hairline-unset--top-bottom:after{border-width:var(--van-border-width) 0}.van-hairline--surround:after{border-width:var(--van-border-width)}:host,:root{--van-badge-size:16px;--van-badge-color:var(--van-white);--van-badge-padding:0 3px;--van-badge-font-size:var(--van-font-size-sm);--van-badge-font-weight:var(--van-font-bold);--van-badge-border-width:var(--van-border-width);--van-badge-background:var(--van-danger-color);--van-badge-dot-color:var(--van-danger-color);--van-badge-dot-size:8px;--van-badge-font:-apple-system-font,helvetica neue,arial,sans-serif}.van-badge{display:inline-block;box-sizing:border-box;min-width:var(--van-badge-size);padding:var(--van-badge-padding);color:var(--van-badge-color);font-weight:var(--van-badge-font-weight);font-size:var(--van-badge-font-size);font-family:var(--van-badge-font);line-height:1.2;text-align:center;background:var(--van-badge-background);border:var(--van-badge-border-width) solid var(--van-background-2);border-radius:var(--van-radius-max)}.van-badge--fixed{position:absolute;transform-origin:100%}.van-badge--top-left{top:0;left:0;transform:translate(-50%,-50%)}.van-badge--top-right{top:0;right:0;transform:translate(50%,-50%)}.van-badge--bottom-left{bottom:0;left:0;transform:translate(-50%,50%)}.van-badge--bottom-right{bottom:0;right:0;transform:translate(50%,50%)}.van-badge--dot{width:var(--van-badge-dot-size);min-width:0;height:var(--van-badge-dot-size);background:var(--van-badge-dot-color);border-radius:100%;border:none;padding:0}.van-badge__wrapper,.van-icon{position:relative;display:inline-block}.van-icon{font:14px/1 vant-icon;font:normal normal normal 14px/1 var(--van-icon-font-family,"vant-icon");font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased}.van-icon:before{display:inline-block}.van-icon-arrow-double-left:before{content:"\e653"}.van-icon-arrow-double-right:before{content:"\e654"}.van-icon-contact:before{content:"\e753"}.van-icon-notes:before{content:"\e63c"}.van-icon-records:before{content:"\e63d"}.van-icon-cash-back-record:before{content:"\e63e"}.van-icon-newspaper:before{content:"\e63f"}.van-icon-discount:before{content:"\e640"}.van-icon-completed:before{content:"\e641"}.van-icon-user:before{content:"\e642"}.van-icon-description:before{content:"\e643"}.van-icon-list-switch:before{content:"\e6ad"}.van-icon-list-switching:before{content:"\e65a"}.van-icon-link-o:before{content:"\e751"}.van-icon-miniprogram-o:before{content:"\e752"}.van-icon-qq:before{content:"\e74e"}.van-icon-wechat-moments:before{content:"\e74f"}.van-icon-weibo:before{content:"\e750"}.van-icon-cash-o:before{content:"\e74d"}.van-icon-guide-o:before{content:"\e74c"}.van-icon-invitation:before{content:"\e6d6"}.van-icon-shield-o:before{content:"\e74b"}.van-icon-exchange:before{content:"\e6af"}.van-icon-eye:before{content:"\e6b0"}.van-icon-enlarge:before{content:"\e6b1"}.van-icon-expand-o:before{content:"\e6b2"}.van-icon-eye-o:before{content:"\e6b3"}.van-icon-expand:before{content:"\e6b4"}.van-icon-filter-o:before{content:"\e6b5"}.van-icon-fire:before{content:"\e6b6"}.van-icon-fail:before{content:"\e6b7"}.van-icon-failure:before{content:"\e6b8"}.van-icon-fire-o:before{content:"\e6b9"}.van-icon-flag-o:before{content:"\e6ba"}.van-icon-font:before{content:"\e6bb"}.van-icon-font-o:before{content:"\e6bc"}.van-icon-gem-o:before{content:"\e6bd"}.van-icon-flower-o:before{content:"\e6be"}.van-icon-gem:before{content:"\e6bf"}.van-icon-gift-card:before{content:"\e6c0"}.van-icon-friends:before{content:"\e6c1"}.van-icon-friends-o:before{content:"\e6c2"}.van-icon-gold-coin:before{content:"\e6c3"}.van-icon-gold-coin-o:before{content:"\e6c4"}.van-icon-good-job-o:before{content:"\e6c5"}.van-icon-gift:before{content:"\e6c6"}.van-icon-gift-o:before{content:"\e6c7"}.van-icon-gift-card-o:before{content:"\e6c8"}.van-icon-good-job:before{content:"\e6c9"}.van-icon-home-o:before{content:"\e6ca"}.van-icon-goods-collect:before{content:"\e6cb"}.van-icon-graphic:before{content:"\e6cc"}.van-icon-goods-collect-o:before{content:"\e6cd"}.van-icon-hot-o:before{content:"\e6ce"}.van-icon-info:before{content:"\e6cf"}.van-icon-hotel-o:before{content:"\e6d0"}.van-icon-info-o:before{content:"\e6d1"}.van-icon-hot-sale-o:before{content:"\e6d2"}.van-icon-hot:before{content:"\e6d3"}.van-icon-like:before{content:"\e6d4"}.van-icon-idcard:before{content:"\e6d5"}.van-icon-like-o:before{content:"\e6d7"}.van-icon-hot-sale:before{content:"\e6d8"}.van-icon-location-o:before{content:"\e6d9"}.van-icon-location:before{content:"\e6da"}.van-icon-label:before{content:"\e6db"}.van-icon-lock:before{content:"\e6dc"}.van-icon-label-o:before{content:"\e6dd"}.van-icon-map-marked:before{content:"\e6de"}.van-icon-logistics:before{content:"\e6df"}.van-icon-manager:before{content:"\e6e0"}.van-icon-more:before{content:"\e6e1"}.van-icon-live:before{content:"\e6e2"}.van-icon-manager-o:before{content:"\e6e3"}.van-icon-medal:before{content:"\e6e4"}.van-icon-more-o:before{content:"\e6e5"}.van-icon-music-o:before{content:"\e6e6"}.van-icon-music:before{content:"\e6e7"}.van-icon-new-arrival-o:before{content:"\e6e8"}.van-icon-medal-o:before{content:"\e6e9"}.van-icon-new-o:before{content:"\e6ea"}.van-icon-free-postage:before{content:"\e6eb"}.van-icon-newspaper-o:before{content:"\e6ec"}.van-icon-new-arrival:before{content:"\e6ed"}.van-icon-minus:before{content:"\e6ee"}.van-icon-orders-o:before{content:"\e6ef"}.van-icon-new:before{content:"\e6f0"}.van-icon-paid:before{content:"\e6f1"}.van-icon-notes-o:before{content:"\e6f2"}.van-icon-other-pay:before{content:"\e6f3"}.van-icon-pause-circle:before{content:"\e6f4"}.van-icon-pause:before{content:"\e6f5"}.van-icon-pause-circle-o:before{content:"\e6f6"}.van-icon-peer-pay:before{content:"\e6f7"}.van-icon-pending-payment:before{content:"\e6f8"}.van-icon-passed:before{content:"\e6f9"}.van-icon-plus:before{content:"\e6fa"}.van-icon-phone-circle-o:before{content:"\e6fb"}.van-icon-phone-o:before{content:"\e6fc"}.van-icon-printer:before{content:"\e6fd"}.van-icon-photo-fail:before{content:"\e6fe"}.van-icon-phone:before{content:"\e6ff"}.van-icon-photo-o:before{content:"\e700"}.van-icon-play-circle:before{content:"\e701"}.van-icon-play:before{content:"\e702"}.van-icon-phone-circle:before{content:"\e703"}.van-icon-point-gift-o:before{content:"\e704"}.van-icon-point-gift:before{content:"\e705"}.van-icon-play-circle-o:before{content:"\e706"}.van-icon-shrink:before{content:"\e707"}.van-icon-photo:before{content:"\e708"}.van-icon-qr:before{content:"\e709"}.van-icon-qr-invalid:before{content:"\e70a"}.van-icon-question-o:before{content:"\e70b"}.van-icon-revoke:before{content:"\e70c"}.van-icon-replay:before{content:"\e70d"}.van-icon-service:before{content:"\e70e"}.van-icon-question:before{content:"\e70f"}.van-icon-search:before{content:"\e710"}.van-icon-refund-o:before{content:"\e711"}.van-icon-service-o:before{content:"\e712"}.van-icon-scan:before{content:"\e713"}.van-icon-share:before{content:"\e714"}.van-icon-send-gift-o:before{content:"\e715"}.van-icon-share-o:before{content:"\e716"}.van-icon-setting:before{content:"\e717"}.van-icon-points:before{content:"\e718"}.van-icon-photograph:before{content:"\e719"}.van-icon-shop:before{content:"\e71a"}.van-icon-shop-o:before{content:"\e71b"}.van-icon-shop-collect-o:before{content:"\e71c"}.van-icon-shop-collect:before{content:"\e71d"}.van-icon-smile:before{content:"\e71e"}.van-icon-shopping-cart-o:before{content:"\e71f"}.van-icon-sign:before{content:"\e720"}.van-icon-sort:before{content:"\e721"}.van-icon-star-o:before{content:"\e722"}.van-icon-smile-comment-o:before{content:"\e723"}.van-icon-stop:before{content:"\e724"}.van-icon-stop-circle-o:before{content:"\e725"}.van-icon-smile-o:before{content:"\e726"}.van-icon-star:before{content:"\e727"}.van-icon-success:before{content:"\e728"}.van-icon-stop-circle:before{content:"\e729"}.van-icon-records-o:before{content:"\e72a"}.van-icon-shopping-cart:before{content:"\e72b"}.van-icon-tosend:before{content:"\e72c"}.van-icon-todo-list:before{content:"\e72d"}.van-icon-thumb-circle-o:before{content:"\e72e"}.van-icon-thumb-circle:before{content:"\e72f"}.van-icon-umbrella-circle:before{content:"\e730"}.van-icon-underway:before{content:"\e731"}.van-icon-upgrade:before{content:"\e732"}.van-icon-todo-list-o:before{content:"\e733"}.van-icon-tv-o:before{content:"\e734"}.van-icon-underway-o:before{content:"\e735"}.van-icon-user-o:before{content:"\e736"}.van-icon-vip-card-o:before{content:"\e737"}.van-icon-vip-card:before{content:"\e738"}.van-icon-send-gift:before{content:"\e739"}.van-icon-wap-home:before{content:"\e73a"}.van-icon-wap-nav:before{content:"\e73b"}.van-icon-volume-o:before{content:"\e73c"}.van-icon-video:before{content:"\e73d"}.van-icon-wap-home-o:before{content:"\e73e"}.van-icon-volume:before{content:"\e73f"}.van-icon-warning:before{content:"\e740"}.van-icon-weapp-nav:before{content:"\e741"}.van-icon-wechat-pay:before{content:"\e742"}.van-icon-warning-o:before{content:"\e743"}.van-icon-wechat:before{content:"\e744"}.van-icon-setting-o:before{content:"\e745"}.van-icon-youzan-shield:before{content:"\e746"}.van-icon-warn-o:before{content:"\e747"}.van-icon-smile-comment:before{content:"\e748"}.van-icon-user-circle-o:before{content:"\e749"}.van-icon-video-o:before{content:"\e74a"}.van-icon-add-square:before{content:"\e65c"}.van-icon-add:before{content:"\e65d"}.van-icon-arrow-down:before{content:"\e65e"}.van-icon-arrow-up:before{content:"\e65f"}.van-icon-arrow:before{content:"\e660"}.van-icon-after-sale:before{content:"\e661"}.van-icon-add-o:before{content:"\e662"}.van-icon-alipay:before{content:"\e663"}.van-icon-ascending:before{content:"\e664"}.van-icon-apps-o:before{content:"\e665"}.van-icon-aim:before{content:"\e666"}.van-icon-award:before{content:"\e667"}.van-icon-arrow-left:before{content:"\e668"}.van-icon-award-o:before{content:"\e669"}.van-icon-audio:before{content:"\e66a"}.van-icon-bag-o:before{content:"\e66b"}.van-icon-balance-list:before{content:"\e66c"}.van-icon-back-top:before{content:"\e66d"}.van-icon-bag:before{content:"\e66e"}.van-icon-balance-pay:before{content:"\e66f"}.van-icon-balance-o:before{content:"\e670"}.van-icon-bar-chart-o:before{content:"\e671"}.van-icon-bars:before{content:"\e672"}.van-icon-balance-list-o:before{content:"\e673"}.van-icon-birthday-cake-o:before{content:"\e674"}.van-icon-bookmark:before{content:"\e675"}.van-icon-bill:before{content:"\e676"}.van-icon-bell:before{content:"\e677"}.van-icon-browsing-history-o:before{content:"\e678"}.van-icon-browsing-history:before{content:"\e679"}.van-icon-bookmark-o:before{content:"\e67a"}.van-icon-bulb-o:before{content:"\e67b"}.van-icon-bullhorn-o:before{content:"\e67c"}.van-icon-bill-o:before{content:"\e67d"}.van-icon-calendar-o:before{content:"\e67e"}.van-icon-brush-o:before{content:"\e67f"}.van-icon-card:before{content:"\e680"}.van-icon-cart-o:before{content:"\e681"}.van-icon-cart-circle:before{content:"\e682"}.van-icon-cart-circle-o:before{content:"\e683"}.van-icon-cart:before{content:"\e684"}.van-icon-cash-on-deliver:before{content:"\e685"}.van-icon-cash-back-record-o:before{content:"\e686"}.van-icon-cashier-o:before{content:"\e687"}.van-icon-chart-trending-o:before{content:"\e688"}.van-icon-certificate:before{content:"\e689"}.van-icon-chat:before{content:"\e68a"}.van-icon-clear:before{content:"\e68b"}.van-icon-chat-o:before{content:"\e68c"}.van-icon-checked:before{content:"\e68d"}.van-icon-clock:before{content:"\e68e"}.van-icon-clock-o:before{content:"\e68f"}.van-icon-close:before{content:"\e690"}.van-icon-closed-eye:before{content:"\e691"}.van-icon-circle:before{content:"\e692"}.van-icon-cluster-o:before{content:"\e693"}.van-icon-column:before{content:"\e694"}.van-icon-comment-circle-o:before{content:"\e695"}.van-icon-cluster:before{content:"\e696"}.van-icon-comment:before{content:"\e697"}.van-icon-comment-o:before{content:"\e698"}.van-icon-comment-circle:before{content:"\e699"}.van-icon-completed-o:before{content:"\e69a"}.van-icon-credit-pay:before{content:"\e69b"}.van-icon-coupon:before{content:"\e69c"}.van-icon-debit-pay:before{content:"\e69d"}.van-icon-coupon-o:before{content:"\e69e"}.van-icon-contact-o:before{content:"\e69f"}.van-icon-descending:before{content:"\e6a0"}.van-icon-desktop-o:before{content:"\e6a1"}.van-icon-diamond-o:before{content:"\e6a2"}.van-icon-description-o:before{content:"\e6a3"}.van-icon-delete:before{content:"\e6a4"}.van-icon-diamond:before{content:"\e6a5"}.van-icon-delete-o:before{content:"\e6a6"}.van-icon-cross:before{content:"\e6a7"}.van-icon-edit:before{content:"\e6a8"}.van-icon-ellipsis:before{content:"\e6a9"}.van-icon-down:before{content:"\e6aa"}.van-icon-discount-o:before{content:"\e6ab"}.van-icon-ecard-pay:before{content:"\e6ac"}.van-icon-envelop-o:before{content:"\e6ae"}@font-face{font-weight:400;font-family:vant-icon;font-style:normal;font-display:auto;src:url(data:font/woff2;charset=utf-8;base64,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) format("woff2"),url(//at.alicdn.com/t/c/font_2553510_ciljc7axaw7.woff?t=1705587463221) format("woff")}.van-icon__image{display:block;width:1em;height:1em;-o-object-fit:contain;object-fit:contain} \ No newline at end of file diff --git a/web/favicon.ico b/web/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/web/js/149.2f4f7417.js b/web/js/149.2f4f7417.js new file mode 100644 index 0000000..bddb338 --- /dev/null +++ b/web/js/149.2f4f7417.js @@ -0,0 +1 @@ +(self["webpackChunkset_vue"]=self["webpackChunkset_vue"]||[]).push([[149],{5149:function(t,e,r){r(4114),r(6573),r(8100),r(7936),r(7467),r(4732),r(9577),r(9848),function(e){t.exports=e()}((function(){var t;return function(){function t(e,r,n){function i(s,a){if(!r[s]){if(!e[s]){var u=void 0;if(!a&&u)return require(s,!0);if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[s]={exports:{}};e[s][0].call(l.exports,(function(t){var r=e[s][1][t];return i(r||t)}),l,l.exports,t,e,r,n)}return r[s].exports}for(var o=void 0,s=0;s0&&(this.options.resubscribe?(this._resubscribeTopics.resubscribe=!0,this.subscribe(this._resubscribeTopics)):this._resubscribeTopics={}),s=!1})),this.on("close",(function(){null!==n.pingTimer&&(n.pingTimer.clear(),n.pingTimer=null)})),this.on("close",this._setupReconnect),i.EventEmitter.call(this),this._setupStream()}c(v,i.EventEmitter),v.prototype._setupStream=function(){var t,e=this,n=new u,i=a.parser(this.options),o=null,c=[];function l(){r.nextTick(f)}function f(){var t=c.shift(),r=o;t?e._handlePacket(t,l):(o=null,r())}this._clearReconnect(),this.stream=this.streamBuilder(this),i.on("packet",(function(t){c.push(t)})),n._write=function(t,e,r){o=r,i.parse(t),f()},this.stream.pipe(n),this.stream.on("error",m),s(this.stream,this.emit.bind(this,"close")),t=Object.create(this.options),t.cmd="connect",y(this,t),i.on("error",this.emit.bind(this,"error")),this.stream.setMaxListeners(1e3),clearTimeout(this.connackTimer),this.connackTimer=setTimeout((function(){e._cleanUp(!0)}),this.options.connectTimeout)},v.prototype._handlePacket=function(t,e){switch(this.emit("packetreceive",t),t.cmd){case"publish":this._handlePublish(t,e);break;case"puback":case"pubrec":case"pubcomp":case"suback":case"unsuback":this._handleAck(t),e();break;case"pubrel":this._handlePubrel(t,e);break;case"connack":this._handleConnack(t),e();break;case"pingresp":this._handlePingresp(t),e();break;default:break}},v.prototype._checkDisconnecting=function(t){return this.disconnecting&&(t?t(new Error("client disconnecting")):this.emit("error",new Error("client disconnecting"))),this.disconnecting},v.prototype.publish=function(t,e,r,n){var i;"function"===typeof r&&(n=r,r=null);var o={qos:0,retain:!1,dup:!1};if(r=h(o,r),this._checkDisconnecting(n))return this;switch(i={cmd:"publish",topic:t,payload:e,qos:r.qos,retain:r.retain,messageId:this._nextId(),dup:r.dup},r.qos){case 1:case 2:this.outgoing[i.messageId]=n||m,this._sendPacket(i);break;default:this._sendPacket(i,n);break}return this},v.prototype.subscribe=function(){var t,e,r=Array.prototype.slice.call(arguments),n=[],i=r.shift(),o=i.resubscribe,s=r.pop()||m,a=r.pop(),u=this;if(delete i.resubscribe,"string"===typeof i&&(i=[i]),"function"!==typeof s&&(a=s,s=m),e=f.validateTopics(i),null!==e)return p(s,new Error("Invalid topic "+e)),this;if(this._checkDisconnecting(s))return this;var c={qos:0};if(a=h(c,a),Array.isArray(i)?i.forEach((function(t){(u._resubscribeTopics[t]0&&(u._resubscribeTopics[t.topic]=t.qos,l.push(t.topic))})),u.messageIdToTopic[t.messageId]=l}return this.outgoing[t.messageId]=function(t,e){if(!t)for(var r=e.granted,i=0;i0?this.once("outgoingEmpty",setTimeout.bind(null,i,10)):i()),this},v.prototype.removeOutgoingMessage=function(t){var e=this.outgoing[t];return delete this.outgoing[t],this.outgoingStore.del({messageId:t},(function(){e(new Error("Message removed"))})),this},v.prototype.reconnect=function(t){var e=this,r=function(){t?(e.options.incomingStore=t.incomingStore,e.options.outgoingStore=t.outgoingStore):(e.options.incomingStore=null,e.options.outgoingStore=null),e.incomingStore=e.options.incomingStore||new o,e.outgoingStore=e.options.outgoingStore||new o,e.disconnecting=!1,e.disconnected=!1,e._deferredReconnect=null,e._reconnect()};return this.disconnecting&&!this.disconnected?this._deferredReconnect=r:r(),this},v.prototype._reconnect=function(){this.emit("reconnect"),this._setupStream()},v.prototype._setupReconnect=function(){var t=this;!t.disconnecting&&!t.reconnectTimer&&t.options.reconnectPeriod>0&&(this.reconnecting||(this.emit("offline"),this.reconnecting=!0),t.reconnectTimer=setInterval((function(){t._reconnect()}),t.options.reconnectPeriod))},v.prototype._clearReconnect=function(){this.reconnectTimer&&(clearInterval(this.reconnectTimer),this.reconnectTimer=null)},v.prototype._cleanUp=function(t,e){e&&this.stream.on("close",e),t?(0===this.options.reconnectPeriod&&this.options.clean&&b(this.outgoing),this.stream.destroy()):this._sendPacket({cmd:"disconnect"},p.bind(null,this.stream.end.bind(this.stream))),this.disconnecting||(this._clearReconnect(),this._setupReconnect()),null!==this.pingTimer&&(this.pingTimer.clear(),this.pingTimer=null),e&&!this.connected&&(this.stream.removeListener("close",e),e())},v.prototype._sendPacket=function(t,e){if(this.connected){switch(this._shiftPingInterval(),t.cmd){case"publish":break;case"pubrel":return void _(this,t,e);default:return void y(this,t,e)}switch(t.qos){case 2:case 1:_(this,t,e);break;case 0:default:y(this,t,e);break}}else 0===(t.qos||0)&&this.queueQoSZero||"publish"!==t.cmd?this.queue.push({packet:t,cb:e}):t.qos>0?(e=this.outgoing[t.messageId],this.outgoingStore.put(t,(function(t){if(t)return e&&e(t)}))):e&&e(new Error("No connection to broker"))},v.prototype._setupPingTimer=function(){var t=this;!this.pingTimer&&this.options.keepalive&&(this.pingResp=!0,this.pingTimer=l((function(){t._checkPing()}),1e3*this.options.keepalive))},v.prototype._shiftPingInterval=function(){this.pingTimer&&this.options.keepalive&&this.options.reschedulePings&&this.pingTimer.reschedule(1e3*this.options.keepalive)},v.prototype._checkPing=function(){this.pingResp?(this.pingResp=!1,this._sendPacket({cmd:"pingreq"})):this._cleanUp(!0)},v.prototype._handlePingresp=function(){this.pingResp=!0},v.prototype._handleConnack=function(t){var e=t.returnCode,r=["","Unacceptable protocol version","Identifier rejected","Server unavailable","Bad username or password","Not authorized"];if(clearTimeout(this.connackTimer),0===e)this.reconnecting=!1,this.emit("connect",t);else if(e>0){var n=new Error("Connection refused: "+r[e]);n.code=e,this.emit("error",n)}},v.prototype._handlePublish=function(t,e){e="undefined"!==typeof e?e:m;var r=t.topic.toString(),n=t.payload,i=t.qos,o=t.messageId,s=this;switch(i){case 2:this.incomingStore.put(t,(function(t){if(t)return e(t);s._sendPacket({cmd:"pubrec",messageId:o},e)}));break;case 1:this.emit("message",r,n,t),this.handleMessage(t,(function(t){if(t)return e(t);s._sendPacket({cmd:"puback",messageId:o},e)}));break;case 0:this.emit("message",r,n,t),this.handleMessage(t,e);break;default:break}},v.prototype.handleMessage=function(t,e){e()},v.prototype._handleAck=function(t){var e=t.messageId,r=t.cmd,n=null,i=this.outgoing[e],o=this;if(i){switch(r){case"pubcomp":case"puback":delete this.outgoing[e],this.outgoingStore.del(t,i);break;case"pubrec":n={cmd:"pubrel",qos:2,messageId:e},this._sendPacket(n);break;case"suback":if(delete this.outgoing[e],1===t.granted.length&&0!==(128&t.granted[0])){var s=this.messageIdToTopic[e];s&&s.forEach((function(t){delete o._resubscribeTopics[t]}))}i(null,t);break;case"unsuback":delete this.outgoing[e],i(null);break;default:o.emit("error",new Error("unrecognized packet type"))}this.disconnecting&&0===Object.keys(this.outgoing).length&&this.emit("outgoingEmpty")}},v.prototype._handlePubrel=function(t,e){e="undefined"!==typeof e?e:m;var r=t.messageId,n=this,i={cmd:"pubcomp",messageId:r};n.incomingStore.get(t,(function(r,o){r||"pubrel"===o.cmd?n._sendPacket(i,e):(n.emit("message",o.topic,o.payload,o),n.incomingStore.put(t,(function(t){if(t)return e(t);n.handleMessage(o,(function(t){if(t)return e(t);n._sendPacket(i,e)}))})))}))},v.prototype._nextId=function(){var t=this.nextId++;return 65536===this.nextId&&(this.nextId=1),t},v.prototype.getLastMessageId=function(){return 1===this.nextId?65535:this.nextId-1},e.exports=v}).call(this,t("_process"),"undefined"!==typeof r.g?r.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{"./store":6,"./validations":7,_process:92,"end-of-stream":17,events:78,inherits:80,"mqtt-packet":85,"readable-stream":106,reinterval:107,xtend:120}],2:[function(t,e,r){"use strict";var n=t("net");function i(t,e){var r,i;return e.port=e.port||1883,e.hostname=e.hostname||e.host||"localhost",r=e.port,i=e.hostname,n.createConnection(r,i)}e.exports=i},{net:11}],3:[function(t,e,r){"use strict";var n=t("tls");function i(t,e){var r;function i(n){e.rejectUnauthorized&&t.emit("error",n),r.end()}return e.port=e.port||8883,e.host=e.hostname||e.host||"localhost",e.rejectUnauthorized=!1!==e.rejectUnauthorized,delete e.path,r=n.connect(e),r.on("secureConnect",(function(){e.rejectUnauthorized&&!r.authorized?r.emit("error",new Error("TLS not authorized")):r.removeListener("error",i)})),r.on("error",i),r}e.exports=i},{tls:11}],4:[function(t,e,r){(function(r){"use strict";var n=t("websocket-stream"),i=t("url"),o=["rejectUnauthorized","ca","cert","key","pfx","passphrase"],s="browser"===r.title;function a(t,e){var r=t.protocol+"://"+t.hostname+":"+t.port+t.path;return"function"===typeof t.transformWsUrl&&(r=t.transformWsUrl(r,t,e)),r}function u(t){t.hostname||(t.hostname="localhost"),t.port||("wss"===t.protocol?t.port=443:t.port=80),t.path||(t.path="/"),t.wsOptions||(t.wsOptions={}),s||"wss"!==t.protocol||o.forEach((function(e){t.hasOwnProperty(e)&&!t.wsOptions.hasOwnProperty(e)&&(t.wsOptions[e]=t[e])}))}function c(t,e){var r="MQIsdp"===e.protocolId&&3===e.protocolVersion?"mqttv3.1":"mqtt";u(e);var i=a(e,t);return n(i,[r],e.wsOptions)}function l(t,e){return c(t,e)}function f(t,e){if(e.hostname||(e.hostname=e.host),!e.hostname){if("undefined"===typeof document)throw new Error("Could not determine host. Specify host manually.");var r=i.parse(document.URL);e.hostname=r.hostname,e.port||(e.port=r.port)}return c(t,e)}e.exports=s?f:l}).call(this,t("_process"))},{_process:92,url:112,"websocket-stream":117}],5:[function(t,e,r){"use strict";var n=!1,i=[];function o(t){n?wx.sendSocketMessage({data:t.buffer||t}):i.push(t)}function s(t,e){var r={OPEN:1,CLOSING:2,CLOSED:3,readyState:n?1:0,send:o,close:wx.closeSocket,onopen:null,onmessage:null,onclose:null,onerror:null};return wx.connectSocket({url:t,protocols:e}),wx.onSocketOpen((function(t){r.readyState=r.OPEN,n=!0;for(var e=0;e0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");-1===r&&(r=e);var n=r===e?0:4-r%4;return[r,n]}function l(t){var e=c(t),r=e[0],n=e[1];return 3*(r+n)/4-n}function f(t,e,r){return 3*(e+r)/4-r}function h(t){for(var e,r=c(t),n=r[0],s=r[1],a=new o(f(t,n,s)),u=0,l=s>0?n-4:n,h=0;h>16&255,a[u++]=e>>8&255,a[u++]=255&e;return 2===s&&(e=i[t.charCodeAt(h)]<<2|i[t.charCodeAt(h+1)]>>4,a[u++]=255&e),1===s&&(e=i[t.charCodeAt(h)]<<10|i[t.charCodeAt(h+1)]<<4|i[t.charCodeAt(h+2)]>>2,a[u++]=e>>8&255,a[u++]=255&e),a}function p(t){return n[t>>18&63]+n[t>>12&63]+n[t>>6&63]+n[63&t]}function d(t,e,r){for(var n,i=[],o=e;ou?u:a+s));return 1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+"==")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+"=")),o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},{}],10:[function(t,e,r){var n=t("readable-stream/duplex"),i=t("util"),o=t("safe-buffer").Buffer;function s(t){if(!(this instanceof s))return new s(t);if(this._bufs=[],this.length=0,"function"==typeof t){this._callback=t;var e=function(t){this._callback&&(this._callback(t),this._callback=null)}.bind(this);this.on("pipe",(function(t){t.on("error",e)})),this.on("unpipe",(function(t){t.removeListener("error",e)}))}else this.append(t);n.call(this)}i.inherits(s,n),s.prototype._offset=function(t){var e,r=0,n=0;if(0===t)return[0,0];for(;nthis.length)&&(n=this.length),r>=this.length)return t||o.alloc(0);if(n<=0)return t||o.alloc(0);var i,s,a=!!t,u=this._offset(r),c=n-r,l=c,f=a&&e||0,h=u[1];if(0===r&&n==this.length){if(!a)return 1===this._bufs.length?this._bufs[0]:o.concat(this._bufs,this.length);for(s=0;si)){this._bufs[s].copy(t,f,h,h+l);break}this._bufs[s].copy(t,f,h),f+=i,l-=i,h&&(h=0)}return t},s.prototype.shallowSlice=function(t,e){t=t||0,e=e||this.length,t<0&&(t+=this.length),e<0&&(e+=this.length);var r=this._offset(t),n=this._offset(e),i=this._bufs.slice(r[0],n[0]+1);return 0==n[1]?i.pop():i[i.length-1]=i[i.length-1].slice(0,n[1]),0!=r[1]&&(i[0]=i[0].slice(r[1])),new s(i)},s.prototype.toString=function(t,e,r){return this.slice(e,r).toString(t)},s.prototype.consume=function(t){while(this._bufs.length){if(!(t>=this._bufs[0].length)){this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift()}return this},s.prototype.duplicate=function(){for(var t=0,e=new s;to)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return e.__proto__=u.prototype,e}function u(t,e,r){if("number"===typeof t){if("string"===typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return h(t)}return c(t,e,r)}function c(t,e,r){if("string"===typeof t)return p(t,e);if(ArrayBuffer.isView(t))return d(t);if(null==t)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(Y(t,ArrayBuffer)||t&&Y(t.buffer,ArrayBuffer))return g(t,e,r);if("number"===typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return u.from(n,e,r);var i=y(t);if(i)return i;if("undefined"!==typeof Symbol&&null!=Symbol.toPrimitive&&"function"===typeof t[Symbol.toPrimitive])return u.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function l(t){if("number"!==typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function f(t,e,r){return l(t),t<=0?a(t):void 0!==e?"string"===typeof r?a(t).fill(e,r):a(t).fill(e):a(t)}function h(t){return l(t),a(t<0?0:0|b(t))}function p(t,e){if("string"===typeof e&&""!==e||(e="utf8"),!u.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var r=0|m(t,e),n=a(r),i=n.write(t,e);return i!==r&&(n=n.slice(0,i)),n}function d(t){for(var e=t.length<0?0:0|b(t.length),r=a(e),n=0;n=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|t}function _(t){return+t!=t&&(t=0),u.alloc(+t)}function m(t,e){if(u.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||Y(t,ArrayBuffer))return t.byteLength;if("string"!==typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Q(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return $(t).length;default:if(i)return n?-1:Q(t).length;e=(""+e).toLowerCase(),i=!0}}function v(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,e>>>=0,r<=e)return"";t||(t="utf8");while(1)switch(t){case"hex":return B(this,e,r);case"utf8":case"utf-8":return M(this,e,r);case"ascii":return P(this,e,r);case"latin1":case"binary":return R(this,e,r);case"base64":return A(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function w(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function x(t,e,r,n,i){if(0===t.length)return-1;if("string"===typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,J(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"===typeof e&&(e=u.from(e,n)),u.isBuffer(e))return 0===e.length?-1:S(t,e,r,n,i);if("number"===typeof e)return e&=255,"function"===typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):S(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function S(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&(n=String(n).toLowerCase(),"ucs2"===n||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var l=-1;for(o=r;oa&&(r=a-u),o=r;o>=0;o--){for(var f=!0,h=0;hi&&(n=i)):n=i;var o=e.length;n>o/2&&(n=o/2);for(var s=0;s239?4:c>223?3:c>191?2:1;if(i+f<=r)switch(f){case 1:c<128&&(l=c);break;case 2:o=t[i+1],128===(192&o)&&(u=(31&c)<<6|63&o,u>127&&(l=u));break;case 3:o=t[i+1],s=t[i+2],128===(192&o)&&128===(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s,u>2047&&(u<55296||u>57343)&&(l=u));break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128===(192&o)&&128===(192&s)&&128===(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a,u>65535&&u<1114112&&(l=u))}null===l?(l=65533,f=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=f}return L(n)}r.kMaxLength=o,u.TYPED_ARRAY_SUPPORT=s(),u.TYPED_ARRAY_SUPPORT||"undefined"===typeof console||"function"!==typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(u.prototype,"parent",{enumerable:!0,get:function(){if(u.isBuffer(this))return this.buffer}}),Object.defineProperty(u.prototype,"offset",{enumerable:!0,get:function(){if(u.isBuffer(this))return this.byteOffset}}),"undefined"!==typeof Symbol&&null!=Symbol.species&&u[Symbol.species]===u&&Object.defineProperty(u,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),u.poolSize=8192,u.from=function(t,e,r){return c(t,e,r)},u.prototype.__proto__=Uint8Array.prototype,u.__proto__=Uint8Array,u.alloc=function(t,e,r){return f(t,e,r)},u.allocUnsafe=function(t){return h(t)},u.allocUnsafeSlow=function(t){return h(t)},u.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==u.prototype},u.compare=function(t,e){if(Y(t,Uint8Array)&&(t=u.from(t,t.offset,t.byteLength)),Y(e,Uint8Array)&&(e=u.from(e,e.offset,e.byteLength)),!u.isBuffer(t)||!u.isBuffer(e))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);ie&&(t+=" ... "),""},u.prototype.compare=function(t,e,r,n,i){if(Y(t,Uint8Array)&&(t=u.from(t,t.offset,t.byteLength)),!u.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(e>>>=0,r>>>=0,n>>>=0,i>>>=0,this===t)return 0;for(var o=i-n,s=r-e,a=Math.min(o,s),c=this.slice(n,i),l=t.slice(e,r),f=0;f>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return E(this,t,e,r);case"utf8":case"utf-8":return k(this,t,e,r);case"ascii":return j(this,t,e,r);case"latin1":case"binary":return I(this,t,e,r);case"base64":return O(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function L(t){var e=t.length;if(e<=C)return String.fromCharCode.apply(String,t);var r="",n=0;while(nn)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function q(t,e,r,n,i,o){if(!u.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function D(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function F(t,e,r,n,o){return e=+e,r>>>=0,o||D(t,e,r,4,34028234663852886e22,-34028234663852886e22),i.write(t,e,r,n,23,4),r+4}function W(t,e,r,n,o){return e=+e,r>>>=0,o||D(t,e,r,8,17976931348623157e292,-17976931348623157e292),i.write(t,e,r,n,52,8),r+8}u.prototype.slice=function(t,e){var r=this.length;t=~~t,e=void 0===e?r:~~e,t<0?(t+=r,t<0&&(t=0)):t>r&&(t=r),e<0?(e+=r,e<0&&(e=0)):e>r&&(e=r),e>>=0,e>>>=0,r||N(t,e,this.length);var n=this[t],i=1,o=0;while(++o>>=0,e>>>=0,r||N(t,e,this.length);var n=this[t+--e],i=1;while(e>0&&(i*=256))n+=this[t+--e]*i;return n},u.prototype.readUInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),this[t]},u.prototype.readUInt16LE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]|this[t+1]<<8},u.prototype.readUInt16BE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]<<8|this[t+1]},u.prototype.readUInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u.prototype.readUInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||N(t,e,this.length);var n=this[t],i=1,o=0;while(++o=i&&(n-=Math.pow(2,8*e)),n},u.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||N(t,e,this.length);var n=e,i=1,o=this[t+--n];while(n>0&&(i*=256))o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},u.prototype.readInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u.prototype.readInt16LE=function(t,e){t>>>=0,e||N(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt16BE=function(t,e){t>>>=0,e||N(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u.prototype.readInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u.prototype.readFloatLE=function(t,e){return t>>>=0,e||N(t,4,this.length),i.read(this,t,!0,23,4)},u.prototype.readFloatBE=function(t,e){return t>>>=0,e||N(t,4,this.length),i.read(this,t,!1,23,4)},u.prototype.readDoubleLE=function(t,e){return t>>>=0,e||N(t,8,this.length),i.read(this,t,!0,52,8)},u.prototype.readDoubleBE=function(t,e){return t>>>=0,e||N(t,8,this.length),i.read(this,t,!1,52,8)},u.prototype.writeUIntLE=function(t,e,r,n){if(t=+t,e>>>=0,r>>>=0,!n){var i=Math.pow(2,8*r)-1;q(this,t,e,r,i,0)}var o=1,s=0;this[e]=255&t;while(++s>>=0,r>>>=0,!n){var i=Math.pow(2,8*r)-1;q(this,t,e,r,i,0)}var o=r-1,s=1;this[e+o]=255&t;while(--o>=0&&(s*=256))this[e+o]=t/s&255;return e+r},u.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||q(this,t,e,1,255,0),this[e]=255&t,e+1},u.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||q(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},u.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||q(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},u.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||q(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},u.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||q(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},u.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);q(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;this[e]=255&t;while(++o>>=0,!n){var i=Math.pow(2,8*r-1);q(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;this[e+o]=255&t;while(--o>=0&&(s*=256))t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s|0)-a&255;return e+r},u.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||q(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},u.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||q(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},u.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||q(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},u.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||q(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},u.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||q(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},u.prototype.writeFloatLE=function(t,e,r){return F(this,t,e,!0,r)},u.prototype.writeFloatBE=function(t,e,r){return F(this,t,e,!1,r)},u.prototype.writeDoubleLE=function(t,e,r){return W(this,t,e,!0,r)},u.prototype.writeDoubleBE=function(t,e,r){return W(this,t,e,!1,r)},u.prototype.copy=function(t,e,r,n){if(!u.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--o)t[o+e]=this[o+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return i},u.prototype.fill=function(t,e,r,n){if("string"===typeof t){if("string"===typeof e?(n=e,e=0,r=this.length):"string"===typeof r&&(n=r,r=this.length),void 0!==n&&"string"!==typeof n)throw new TypeError("encoding must be a string");if("string"===typeof n&&!u.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===t.length){var i=t.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(t=i)}}else"number"===typeof t&&(t&=255);if(e<0||this.length>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"===typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function V(t){for(var e=[],r=0;r>8,i=r%256,o.push(i),o.push(n)}return o}function $(t){return n.toByteArray(K(t))}function Z(t,e,r,n){for(var i=0;i=e.length||i>=t.length)break;e[i+r]=t[i]}return i}function Y(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function J(t){return t!==t}},{"base64-js":9,ieee754:79}],13:[function(t,e,r){(function(t){function e(t){return Array.isArray?Array.isArray(t):"[object Array]"===y(t)}function n(t){return"boolean"===typeof t}function i(t){return null===t}function o(t){return null==t}function s(t){return"number"===typeof t}function a(t){return"string"===typeof t}function u(t){return"symbol"===typeof t}function c(t){return void 0===t}function l(t){return"[object RegExp]"===y(t)}function f(t){return"object"===typeof t&&null!==t}function h(t){return"[object Date]"===y(t)}function p(t){return"[object Error]"===y(t)||t instanceof Error}function d(t){return"function"===typeof t}function g(t){return null===t||"boolean"===typeof t||"number"===typeof t||"string"===typeof t||"symbol"===typeof t||"undefined"===typeof t}function y(t){return Object.prototype.toString.call(t)}r.isArray=e,r.isBoolean=n,r.isNull=i,r.isNullOrUndefined=o,r.isNumber=s,r.isString=a,r.isSymbol=u,r.isUndefined=c,r.isRegExp=l,r.isObject=f,r.isDate=h,r.isError=p,r.isFunction=d,r.isPrimitive=g,r.isBuffer=t.isBuffer}).call(this,{isBuffer:t("../../is-buffer/index.js")})},{"../../is-buffer/index.js":81}],14:[function(t,e,r){"use strict";var n,i=t("es5-ext/object/copy"),o=t("es5-ext/object/normalize-options"),s=t("es5-ext/object/valid-callable"),a=t("es5-ext/object/map"),u=t("es5-ext/object/valid-callable"),c=t("es5-ext/object/valid-value"),l=Function.prototype.bind,f=Object.defineProperty,h=Object.prototype.hasOwnProperty;n=function(t,e,r){var n,o=c(e)&&u(e.value);return n=i(e),delete n.writable,delete n.value,n.get=function(){return!r.overwriteDefinition&&h.call(this,t)?o:(e.value=l.call(o,r.resolveContext?r.resolveContext(this):this),f(this,t,e),this[t])},n},e.exports=function(t){var e=o(arguments[1]);return null!=e.resolveContext&&s(e.resolveContext),a(t,(function(t,r){return n(r,t,e)}))}},{"es5-ext/object/copy":38,"es5-ext/object/map":47,"es5-ext/object/normalize-options":48,"es5-ext/object/valid-callable":53,"es5-ext/object/valid-value":54}],15:[function(t,e,r){"use strict";var n,i=t("es5-ext/object/assign"),o=t("es5-ext/object/normalize-options"),s=t("es5-ext/object/is-callable"),a=t("es5-ext/string/#/contains");n=e.exports=function(t,e){var r,n,s,u,c;return arguments.length<2||"string"!==typeof t?(u=e,e=t,t=null):u=arguments[2],null==t?(r=s=!0,n=!1):(r=a.call(t,"c"),n=a.call(t,"e"),s=a.call(t,"w")),c={value:e,configurable:r,enumerable:n,writable:s},u?i(o(u),c):c},n.gs=function(t,e,r){var n,u,c,l;return"string"!==typeof t?(c=r,r=e,e=t,t=null):c=arguments[3],null==e?e=void 0:s(e)?null==r?r=void 0:s(r)||(c=r,r=void 0):(c=e,e=r=void 0),null==t?(n=!0,u=!1):(n=a.call(t,"c"),u=a.call(t,"e")),l={get:e,set:r,configurable:n,enumerable:u},c?i(o(c),l):l}},{"es5-ext/object/assign":35,"es5-ext/object/is-callable":41,"es5-ext/object/normalize-options":48,"es5-ext/string/#/contains":55}],16:[function(t,e,r){(function(r,n){var i=t("readable-stream"),o=t("end-of-stream"),s=t("inherits"),a=t("stream-shift"),u=n.from&&n.from!==Uint8Array.from?n.from([0]):new n([0]),c=function(t,e){t._corked?t.once("uncork",e):e()},l=function(t,e){t._autoDestroy&&t.destroy(e)},f=function(t,e){return function(r){r?l(t,"premature close"===r.message?null:r):e&&!t._ended&&t.end()}},h=function(t,e){return t?t._writableState&&t._writableState.finished?e():t._writableState?t.end(e):(t.end(),void e()):e()},p=function(t){return new i.Readable({objectMode:!0,highWaterMark:16}).wrap(t)},d=function(t,e,r){if(!(this instanceof d))return new d(t,e,r);i.Duplex.call(this,r),this._writable=null,this._readable=null,this._readable2=null,this._autoDestroy=!r||!1!==r.autoDestroy,this._forwardDestroy=!r||!1!==r.destroy,this._forwardEnd=!r||!1!==r.end,this._corked=1,this._ondrain=null,this._drained=!1,this._forwarding=!1,this._unwrite=null,this._unread=null,this._ended=!1,this.destroyed=!1,t&&this.setWritable(t),e&&this.setReadable(e)};s(d,i.Duplex),d.obj=function(t,e,r){return r||(r={}),r.objectMode=!0,r.highWaterMark=16,new d(t,e,r)},d.prototype.cork=function(){1===++this._corked&&this.emit("cork")},d.prototype.uncork=function(){this._corked&&0===--this._corked&&this.emit("uncork")},d.prototype.setWritable=function(t){if(this._unwrite&&this._unwrite(),this.destroyed)t&&t.destroy&&t.destroy();else if(null!==t&&!1!==t){var e=this,n=o(t,{writable:!0,readable:!1},f(this,this._forwardEnd)),i=function(){var t=e._ondrain;e._ondrain=null,t&&t()},s=function(){e._writable.removeListener("drain",i),n()};this._unwrite&&r.nextTick(i),this._writable=t,this._writable.on("drain",i),this._unwrite=s,this.uncork()}else this.end()},d.prototype.setReadable=function(t){if(this._unread&&this._unread(),this.destroyed)t&&t.destroy&&t.destroy();else{if(null===t||!1===t)return this.push(null),void this.resume();var e=this,r=o(t,{writable:!1,readable:!0},f(this)),n=function(){e._forward()},i=function(){e.push(null)},s=function(){e._readable2.removeListener("readable",n),e._readable2.removeListener("end",i),r()};this._drained=!0,this._readable=t,this._readable2=t._readableState?t:p(t),this._readable2.on("readable",n),this._readable2.on("end",i),this._unread=s,this._forward()}},d.prototype._read=function(){this._drained=!0,this._forward()},d.prototype._forward=function(){if(!this._forwarding&&this._readable2&&this._drained){var t;this._forwarding=!0;while(this._drained&&null!==(t=a(this._readable2)))this.destroyed||(this._drained=this.push(t));this._forwarding=!1}},d.prototype.destroy=function(t){if(!this.destroyed){this.destroyed=!0;var e=this;r.nextTick((function(){e._destroy(t)}))}},d.prototype._destroy=function(t){if(t){var e=this._ondrain;this._ondrain=null,e?e(t):this.emit("error",t)}this._forwardDestroy&&(this._readable&&this._readable.destroy&&this._readable.destroy(),this._writable&&this._writable.destroy&&this._writable.destroy()),this.emit("close")},d.prototype._write=function(t,e,r){return this.destroyed?r():this._corked?c(this,this._write.bind(this,t,e,r)):t===u?this._finish(r):this._writable?void(!1===this._writable.write(t)?this._ondrain=r:r()):r()},d.prototype._finish=function(t){var e=this;this.emit("preend"),c(this,(function(){h(e._forwardEnd&&e._writable,(function(){!1===e._writableState.prefinished&&(e._writableState.prefinished=!0),e.emit("prefinish"),c(e,t)}))}))},d.prototype.end=function(t,e,r){return"function"===typeof t?this.end(null,null,t):"function"===typeof e?this.end(t,null,e):(this._ended=!0,t&&this.write(t),this._writableState.ending||this.write(u),i.Writable.prototype.end.call(this,r))},e.exports=d}).call(this,t("_process"),t("buffer").Buffer)},{_process:92,buffer:12,"end-of-stream":17,inherits:80,"readable-stream":106,"stream-shift":109}],17:[function(t,e,r){var n=t("once"),i=function(){},o=function(t){return t.setHeader&&"function"===typeof t.abort},s=function(t){return t.stdio&&Array.isArray(t.stdio)&&3===t.stdio.length},a=function(t,e,r){if("function"===typeof e)return a(t,null,e);e||(e={}),r=n(r||i);var u=t._writableState,c=t._readableState,l=e.readable||!1!==e.readable&&t.readable,f=e.writable||!1!==e.writable&&t.writable,h=function(){t.writable||p()},p=function(){f=!1,l||r.call(t)},d=function(){l=!1,f||r.call(t)},g=function(e){r.call(t,e?new Error("exited with error code: "+e):null)},y=function(e){r.call(t,e)},b=function(){return(!l||c&&c.ended)&&(!f||u&&u.ended)?void 0:r.call(t,new Error("premature close"))},_=function(){t.req.on("finish",p)};return o(t)?(t.on("complete",p),t.on("abort",b),t.req?_():t.on("request",_)):f&&!u&&(t.on("end",h),t.on("close",h)),s(t)&&t.on("exit",g),t.on("end",d),t.on("finish",p),!1!==e.error&&t.on("error",y),t.on("close",b),function(){t.removeListener("complete",p),t.removeListener("abort",b),t.removeListener("request",_),t.req&&t.req.removeListener("finish",p),t.removeListener("end",h),t.removeListener("close",h),t.removeListener("finish",p),t.removeListener("exit",g),t.removeListener("end",d),t.removeListener("error",y),t.removeListener("close",b)}};e.exports=a},{once:90}],18:[function(t,e,r){"use strict";var n=t("../../object/valid-value");e.exports=function(){return n(this).length=0,this}},{"../../object/valid-value":54}],19:[function(t,e,r){"use strict";var n=t("../../number/is-nan"),i=t("../../number/to-pos-integer"),o=t("../../object/valid-value"),s=Array.prototype.indexOf,a=Object.prototype.hasOwnProperty,u=Math.abs,c=Math.floor;e.exports=function(t){var e,r,l,f;if(!n(t))return s.apply(this,arguments);for(r=i(o(this).length),l=arguments[1],l=isNaN(l)?0:l>=0?c(l):i(this.length)-c(u(l)),e=l;e=55296&&_<=56319&&(x+=t[++r])),x=S?h.call(S,E,x,g):x,e?(p.value=x,d(y,g,p)):y[g]=x,++g;b=g}if(void 0===b)for(b=s(t.length),e&&(y=new e(b)),r=0;r0?1:-1}},{}],29:[function(t,e,r){"use strict";e.exports=t("./is-implemented")()?Number.isNaN:t("./shim")},{"./is-implemented":30,"./shim":31}],30:[function(t,e,r){"use strict";e.exports=function(){var t=Number.isNaN;return"function"===typeof t&&(!t({})&&t(NaN)&&!t(34))}},{}],31:[function(t,e,r){"use strict";e.exports=function(t){return t!==t}},{}],32:[function(t,e,r){"use strict";var n=t("../math/sign"),i=Math.abs,o=Math.floor;e.exports=function(t){return isNaN(t)?0:(t=Number(t),0!==t&&isFinite(t)?n(t)*o(i(t)):t)}},{"../math/sign":26}],33:[function(t,e,r){"use strict";var n=t("./to-integer"),i=Math.max;e.exports=function(t){return i(0,n(t))}},{"./to-integer":32}],34:[function(t,e,r){"use strict";var n=t("./valid-callable"),i=t("./valid-value"),o=Function.prototype.bind,s=Function.prototype.call,a=Object.keys,u=Object.prototype.propertyIsEnumerable;e.exports=function(t,e){return function(r,c){var l,f=arguments[2],h=arguments[3];return r=Object(i(r)),n(c),l=a(r),h&&l.sort("function"===typeof h?o.call(h,r):void 0),"function"!==typeof t&&(t=l[t]),s.call(t,l,(function(t,n){return u.call(r,t)?s.call(c,f,r[t],t,r,n):e}))}}},{"./valid-callable":53,"./valid-value":54}],35:[function(t,e,r){"use strict";e.exports=t("./is-implemented")()?Object.assign:t("./shim")},{"./is-implemented":36,"./shim":37}],36:[function(t,e,r){"use strict";e.exports=function(){var t,e=Object.assign;return"function"===typeof e&&(t={foo:"raz"},e(t,{bar:"dwa"},{trzy:"trzy"}),t.foo+t.bar+t.trzy==="razdwatrzy")}},{}],37:[function(t,e,r){"use strict";var n=t("../keys"),i=t("../valid-value"),o=Math.max;e.exports=function(t,e){var r,s,a,u=o(arguments.length,2);for(t=Object(i(t)),a=function(n){try{t[n]=e[n]}catch(i){r||(r=i)}},s=1;s-1}},{}],58:[function(t,e,r){"use strict";var n=Object.prototype.toString,i=n.call("");e.exports=function(t){return"string"===typeof t||t&&"object"===typeof t&&(t instanceof String||n.call(t)===i)||!1}},{}],59:[function(t,e,r){"use strict";var n,i=t("es5-ext/object/set-prototype-of"),o=t("es5-ext/string/#/contains"),s=t("d"),a=t("es6-symbol"),u=t("./"),c=Object.defineProperty;n=e.exports=function(t,e){if(!(this instanceof n))throw new TypeError("Constructor requires 'new'");u.call(this,t),e=e?o.call(e,"key+value")?"key+value":o.call(e,"key")?"key":"value":"value",c(this,"__kind__",s("",e))},i&&i(n,u),delete n.prototype.constructor,n.prototype=Object.create(u.prototype,{_resolve:s((function(t){return"value"===this.__kind__?this.__list__[t]:"key+value"===this.__kind__?[t,this.__list__[t]]:t}))}),c(n.prototype,a.toStringTag,s("c","Array Iterator"))},{"./":62,d:15,"es5-ext/object/set-prototype-of":50,"es5-ext/string/#/contains":55,"es6-symbol":72}],60:[function(t,e,r){"use strict";var n=t("es5-ext/function/is-arguments"),i=t("es5-ext/object/valid-callable"),o=t("es5-ext/string/is-string"),s=t("./get"),a=Array.isArray,u=Function.prototype.call,c=Array.prototype.some;e.exports=function(t,e){var r,l,f,h,p,d,g,y,b=arguments[2];if(a(t)||n(t)?r="array":o(t)?r="string":t=s(t),i(e),f=function(){h=!0},"array"!==r){if("string"!==r){l=t.next();while(!l.done){if(u.call(e,b,l.value,f),h)return;l=t.next()}}else for(d=t.length,p=0;p=55296&&y<=56319&&(g+=t[++p])),u.call(e,b,g,f),h)break}else c.call(t,(function(t){return u.call(e,b,t,f),h}))}},{"./get":61,"es5-ext/function/is-arguments":23,"es5-ext/object/valid-callable":53,"es5-ext/string/is-string":58}],61:[function(t,e,r){"use strict";var n=t("es5-ext/function/is-arguments"),i=t("es5-ext/string/is-string"),o=t("./array"),s=t("./string"),a=t("./valid-iterable"),u=t("es6-symbol").iterator;e.exports=function(t){return"function"===typeof a(t)[u]?t[u]():n(t)?new o(t):i(t)?new s(t):new o(t)}},{"./array":59,"./string":64,"./valid-iterable":65,"es5-ext/function/is-arguments":23,"es5-ext/string/is-string":58,"es6-symbol":72}],62:[function(t,e,r){"use strict";var n,i=t("es5-ext/array/#/clear"),o=t("es5-ext/object/assign"),s=t("es5-ext/object/valid-callable"),a=t("es5-ext/object/valid-value"),u=t("d"),c=t("d/auto-bind"),l=t("es6-symbol"),f=Object.defineProperty,h=Object.defineProperties;e.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError("Constructor requires 'new'");h(this,{__list__:u("w",a(t)),__context__:u("w",e),__nextIndex__:u("w",0)}),e&&(s(e.on),e.on("_add",this._onAdd),e.on("_delete",this._onDelete),e.on("_clear",this._onClear))},delete n.prototype.constructor,h(n.prototype,o({_next:u((function(){var t;if(this.__list__)return this.__redo__&&(t=this.__redo__.shift(),void 0!==t)?t:this.__nextIndex__=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach((function(e,r){e>=t&&(this.__redo__[r]=++e)}),this),this.__redo__.push(t)):f(this,"__redo__",u("c",[t])))})),_onDelete:u((function(t){var e;t>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(e=this.__redo__.indexOf(t),-1!==e&&this.__redo__.splice(e,1),this.__redo__.forEach((function(e,r){e>t&&(this.__redo__[r]=--e)}),this)))})),_onClear:u((function(){this.__redo__&&i.call(this.__redo__),this.__nextIndex__=0}))}))),f(n.prototype,l.iterator,u((function(){return this})))},{d:15,"d/auto-bind":14,"es5-ext/array/#/clear":18,"es5-ext/object/assign":35,"es5-ext/object/valid-callable":53,"es5-ext/object/valid-value":54,"es6-symbol":72}],63:[function(t,e,r){"use strict";var n=t("es5-ext/function/is-arguments"),i=t("es5-ext/object/is-value"),o=t("es5-ext/string/is-string"),s=t("es6-symbol").iterator,a=Array.isArray;e.exports=function(t){return!!i(t)&&(!!a(t)||(!!o(t)||(!!n(t)||"function"===typeof t[s])))}},{"es5-ext/function/is-arguments":23,"es5-ext/object/is-value":43,"es5-ext/string/is-string":58,"es6-symbol":72}],64:[function(t,e,r){"use strict";var n,i=t("es5-ext/object/set-prototype-of"),o=t("d"),s=t("es6-symbol"),a=t("./"),u=Object.defineProperty;n=e.exports=function(t){if(!(this instanceof n))throw new TypeError("Constructor requires 'new'");t=String(t),a.call(this,t),u(this,"__length__",o("",t.length))},i&&i(n,a),delete n.prototype.constructor,n.prototype=Object.create(a.prototype,{_next:o((function(){if(this.__list__)return this.__nextIndex__=55296&&e<=56319?r+this.__list__[this.__nextIndex__++]:r)}))}),u(n.prototype,s.toStringTag,o("c","String Iterator"))},{"./":62,d:15,"es5-ext/object/set-prototype-of":50,"es6-symbol":72}],65:[function(t,e,r){"use strict";var n=t("./is-iterable");e.exports=function(t){if(!n(t))throw new TypeError(t+" is not iterable");return t}},{"./is-iterable":63}],66:[function(t,e,r){"use strict";e.exports=t("./is-implemented")()?Map:t("./polyfill")},{"./is-implemented":67,"./polyfill":71}],67:[function(t,e,r){"use strict";e.exports=function(){var t,e,r;if("function"!==typeof Map)return!1;try{t=new Map([["raz","one"],["dwa","two"],["trzy","three"]])}catch(n){return!1}return"[object Map]"===String(t)&&(3===t.size&&("function"===typeof t.clear&&("function"===typeof t.delete&&("function"===typeof t.entries&&("function"===typeof t.forEach&&("function"===typeof t.get&&("function"===typeof t.has&&("function"===typeof t.keys&&("function"===typeof t.set&&("function"===typeof t.values&&(e=t.entries(),r=e.next(),!1===r.done&&(!!r.value&&("raz"===r.value[0]&&"one"===r.value[1])))))))))))))}},{}],68:[function(t,e,r){"use strict";e.exports=function(){return"undefined"!==typeof Map&&"[object Map]"===Object.prototype.toString.call(new Map)}()},{}],69:[function(t,e,r){"use strict";e.exports=t("es5-ext/object/primitive-set")("key","value","key+value")},{"es5-ext/object/primitive-set":49}],70:[function(t,e,r){"use strict";var n,i=t("es5-ext/object/set-prototype-of"),o=t("d"),s=t("es6-iterator"),a=t("es6-symbol").toStringTag,u=t("./iterator-kinds"),c=Object.defineProperties,l=s.prototype._unBind;n=e.exports=function(t,e){if(!(this instanceof n))return new n(t,e);s.call(this,t.__mapKeysData__,t),e&&u[e]||(e="key+value"),c(this,{__kind__:o("",e),__values__:o("w",t.__mapValuesData__)})},i&&i(n,s),n.prototype=Object.create(s.prototype,{constructor:o(n),_resolve:o((function(t){return"value"===this.__kind__?this.__values__[t]:"key"===this.__kind__?this.__list__[t]:[this.__list__[t],this.__values__[t]]})),_unBind:o((function(){this.__values__=null,l.call(this)})),toString:o((function(){return"[object Map Iterator]"}))}),Object.defineProperty(n.prototype,a,o("c","Map Iterator"))},{"./iterator-kinds":69,d:15,"es5-ext/object/set-prototype-of":50,"es6-iterator":62,"es6-symbol":72}],71:[function(t,e,r){"use strict";var n,i=t("es5-ext/array/#/clear"),o=t("es5-ext/array/#/e-index-of"),s=t("es5-ext/object/set-prototype-of"),a=t("es5-ext/object/valid-callable"),u=t("es5-ext/object/valid-value"),c=t("d"),l=t("event-emitter"),f=t("es6-symbol"),h=t("es6-iterator/valid-iterable"),p=t("es6-iterator/for-of"),d=t("./lib/iterator"),g=t("./is-native-implemented"),y=Function.prototype.call,b=Object.defineProperties,_=Object.getPrototypeOf;e.exports=n=function(){var t,e,r,i=arguments[0];if(!(this instanceof n))throw new TypeError("Constructor requires 'new'");return r=g&&s&&Map!==n?s(new Map,_(this)):this,null!=i&&h(i),b(r,{__mapKeysData__:c("c",t=[]),__mapValuesData__:c("c",e=[])}),i?(p(i,(function(r){var n=u(r)[0];r=r[1],-1===o.call(t,n)&&(t.push(n),e.push(r))}),r),r):r},g&&(s&&s(n,Map),n.prototype=Object.create(Map.prototype,{constructor:c(n)})),l(b(n.prototype,{clear:c((function(){this.__mapKeysData__.length&&(i.call(this.__mapKeysData__),i.call(this.__mapValuesData__),this.emit("_clear"))})),delete:c((function(t){var e=o.call(this.__mapKeysData__,t);return-1!==e&&(this.__mapKeysData__.splice(e,1),this.__mapValuesData__.splice(e,1),this.emit("_delete",e,t),!0)})),entries:c((function(){return new d(this,"key+value")})),forEach:c((function(t){var e,r,n=arguments[1];a(t),e=this.entries(),r=e._next();while(void 0!==r)y.call(t,n,this.__mapValuesData__[r],this.__mapKeysData__[r],this),r=e._next()})),get:c((function(t){var e=o.call(this.__mapKeysData__,t);if(-1!==e)return this.__mapValuesData__[e]})),has:c((function(t){return-1!==o.call(this.__mapKeysData__,t)})),keys:c((function(){return new d(this,"key")})),set:c((function(t,e){var r,n=o.call(this.__mapKeysData__,t);return-1===n&&(n=this.__mapKeysData__.push(t)-1,r=!0),this.__mapValuesData__[n]=e,r&&this.emit("_add",n,t),this})),size:c.gs((function(){return this.__mapKeysData__.length})),values:c((function(){return new d(this,"value")})),toString:c((function(){return"[object Map]"}))})),Object.defineProperty(n.prototype,f.iterator,c((function(){return this.entries()}))),Object.defineProperty(n.prototype,f.toStringTag,c("c","Map"))},{"./is-native-implemented":68,"./lib/iterator":70,d:15,"es5-ext/array/#/clear":18,"es5-ext/array/#/e-index-of":19,"es5-ext/object/set-prototype-of":50,"es5-ext/object/valid-callable":53,"es5-ext/object/valid-value":54,"es6-iterator/for-of":60,"es6-iterator/valid-iterable":65,"es6-symbol":72,"event-emitter":77}],72:[function(t,e,r){"use strict";e.exports=t("./is-implemented")()?Symbol:t("./polyfill")},{"./is-implemented":73,"./polyfill":75}],73:[function(t,e,r){"use strict";var n={object:!0,symbol:!0};e.exports=function(){var t;if("function"!==typeof Symbol)return!1;t=Symbol("test symbol");try{String(t)}catch(e){return!1}return!!n[typeof Symbol.iterator]&&(!!n[typeof Symbol.toPrimitive]&&!!n[typeof Symbol.toStringTag])}},{}],74:[function(t,e,r){"use strict";e.exports=function(t){return!!t&&("symbol"===typeof t||!!t.constructor&&("Symbol"===t.constructor.name&&"Symbol"===t[t.constructor.toStringTag]))}},{}],75:[function(t,e,r){"use strict";var n,i,o,s,a=t("d"),u=t("./validate-symbol"),c=Object.create,l=Object.defineProperties,f=Object.defineProperty,h=Object.prototype,p=c(null);if("function"===typeof Symbol){n=Symbol;try{String(n()),s=!0}catch(g){}}var d=function(){var t=c(null);return function(e){var r,n,i=0;while(t[e+(i||"")])++i;return e+=i||"",t[e]=!0,r="@@"+e,f(h,r,a.gs(null,(function(t){n||(n=!0,f(this,r,a(t)),n=!1)}))),r}}();o=function(t){if(this instanceof o)throw new TypeError("Symbol is not a constructor");return i(t)},e.exports=i=function t(e){var r;if(this instanceof t)throw new TypeError("Symbol is not a constructor");return s?n(e):(r=c(o.prototype),e=void 0===e?"":String(e),l(r,{__description__:a("",e),__name__:a("",d(e))}))},l(i,{for:a((function(t){return p[t]?p[t]:p[t]=i(String(t))})),keyFor:a((function(t){var e;for(e in u(t),p)if(p[e]===t)return e})),hasInstance:a("",n&&n.hasInstance||i("hasInstance")),isConcatSpreadable:a("",n&&n.isConcatSpreadable||i("isConcatSpreadable")),iterator:a("",n&&n.iterator||i("iterator")),match:a("",n&&n.match||i("match")),replace:a("",n&&n.replace||i("replace")),search:a("",n&&n.search||i("search")),species:a("",n&&n.species||i("species")),split:a("",n&&n.split||i("split")),toPrimitive:a("",n&&n.toPrimitive||i("toPrimitive")),toStringTag:a("",n&&n.toStringTag||i("toStringTag")),unscopables:a("",n&&n.unscopables||i("unscopables"))}),l(o.prototype,{constructor:a(i),toString:a("",(function(){return this.__name__}))}),l(i.prototype,{toString:a((function(){return"Symbol ("+u(this).__description__+")"})),valueOf:a((function(){return u(this)}))}),f(i.prototype,i.toPrimitive,a("",(function(){var t=u(this);return"symbol"===typeof t?t:t.toString()}))),f(i.prototype,i.toStringTag,a("c","Symbol")),f(o.prototype,i.toStringTag,a("c",i.prototype[i.toStringTag])),f(o.prototype,i.toPrimitive,a("c",i.prototype[i.toPrimitive]))},{"./validate-symbol":76,d:15}],76:[function(t,e,r){"use strict";var n=t("./is-symbol");e.exports=function(t){if(!n(t))throw new TypeError(t+" is not a symbol");return t}},{"./is-symbol":74}],77:[function(t,e,r){"use strict";var n,i,o,s,a,u,c,l=t("d"),f=t("es5-ext/object/valid-callable"),h=Function.prototype.apply,p=Function.prototype.call,d=Object.create,g=Object.defineProperty,y=Object.defineProperties,b=Object.prototype.hasOwnProperty,_={configurable:!0,enumerable:!1,writable:!0};n=function(t,e){var r;return f(e),b.call(this,"__ee__")?r=this.__ee__:(r=_.value=d(null),g(this,"__ee__",_),_.value=null),r[t]?"object"===typeof r[t]?r[t].push(e):r[t]=[r[t],e]:r[t]=e,this},i=function(t,e){var r,i;return f(e),i=this,n.call(this,t,r=function(){o.call(i,t,r),h.call(e,this,arguments)}),r.__eeOnceListener__=e,this},o=function(t,e){var r,n,i,o;if(f(e),!b.call(this,"__ee__"))return this;if(r=this.__ee__,!r[t])return this;if(n=r[t],"object"===typeof n)for(o=0;i=n[o];++o)i!==e&&i.__eeOnceListener__!==e||(2===n.length?r[t]=n[o?0:1]:n.splice(o,1));else n!==e&&n.__eeOnceListener__!==e||delete r[t];return this},s=function(t){var e,r,n,i,o;if(b.call(this,"__ee__")&&(i=this.__ee__[t],i))if("object"===typeof i){for(r=arguments.length,o=new Array(r-1),e=1;e0&&a.length>o)){a.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+a.length+' "'+String(e)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');u.name="MaxListenersExceededWarning",u.emitter=t,u.type=e,u.count=a.length,"object"===typeof console&&console.warn&&console.warn("%s: %s",u.name,u.message)}}else a=s[e]=r,++t._eventsCount;return t}function b(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var t=new Array(arguments.length),e=0;e1&&(e=arguments[1]),e instanceof Error)throw e;var u=new Error('Unhandled "error" event. ('+e+")");throw u.context=e,u}if(r=s[t],!r)return!1;var c="function"===typeof r;switch(n=arguments.length,n){case 1:f(r,c,this);break;case 2:h(r,c,this,arguments[1]);break;case 3:p(r,c,this,arguments[1],arguments[2]);break;case 4:d(r,c,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),o=1;o=0;s--)if(r[s]===e||r[s].listener===e){a=r[s].listener,o=s;break}if(o<0)return this;0===o?r.shift():w(r,o),1===r.length&&(i[t]=r[0]),i.removeListener&&this.emit("removeListener",t,a||e)}return this},s.prototype.removeAllListeners=function(t){var e,r,o;if(r=this._events,!r)return this;if(!r.removeListener)return 0===arguments.length?(this._events=n(null),this._eventsCount=0):r[t]&&(0===--this._eventsCount?this._events=n(null):delete r[t]),this;if(0===arguments.length){var s,a=i(r);for(o=0;o=0;o--)this.removeListener(t,e[o]);return this},s.prototype.listeners=function(t){return m(this,t,!0)},s.prototype.rawListeners=function(t){return m(this,t,!1)},s.listenerCount=function(t,e){return"function"===typeof t.listenerCount?t.listenerCount(e):v.call(t,e)},s.prototype.listenerCount=v,s.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]}},{}],79:[function(t,e,r){r.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,u=(1<>1,l=-7,f=r?i-1:0,h=r?-1:1,p=t[e+f];for(f+=h,o=p&(1<<-l)-1,p>>=-l,l+=a;l>0;o=256*o+t[e+f],f+=h,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=n;l>0;s=256*s+t[e+f],f+=h,l-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,n),o-=c}return(p?-1:1)*s*Math.pow(2,o-n)},r.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,l=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=l):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),e+=s+f>=1?h/u:h*Math.pow(2,1-f),e*u>=2&&(s++,u/=2),s+f>=l?(a=0,s=l):s+f>=1?(a=(e*u-1)*Math.pow(2,i),s+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;t[r+p]=255&a,p+=d,a/=256,i-=8);for(s=s<0;t[r+p]=255&s,p+=d,s/=256,c-=8);t[r+p-d]|=128*g}},{}],80:[function(t,e,r){"function"===typeof Object.create?e.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},{}],81:[function(t,e,r){function n(t){return!!t.constructor&&"function"===typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function i(t){return"function"===typeof t.readFloatLE&&"function"===typeof t.slice&&n(t.slice(0,0))}e.exports=function(t){return null!=t&&(n(t)||i(t)||!!t._isBuffer)}},{}],82:[function(t,e,r){var n={}.toString;e.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},{}],83:[function(t,e,r){"use strict";var n=t("safe-buffer").Buffer,i=e.exports;for(var o in i.types={0:"reserved",1:"connect",2:"connack",3:"publish",4:"puback",5:"pubrec",6:"pubrel",7:"pubcomp",8:"subscribe",9:"suback",10:"unsubscribe",11:"unsuback",12:"pingreq",13:"pingresp",14:"disconnect",15:"reserved"},i.codes={},i.types){var s=i.types[o];i.codes[s]=o}function a(t){return[0,1,2].map((function(e){return[0,1].map((function(r){return[0,1].map((function(o){var s=new n(1);return s.writeUInt8(i.codes[t]<>8,0),e.writeUInt8(255&t,1),e}function a(){for(var t=0;t0)&&this[this._states[this._stateCounter]]()&&!this.error)this._stateCounter++,this._stateCounter>=this._states.length&&(this._stateCounter=0);return this._list.length},u.prototype._parseHeader=function(){var t=this._list.readUInt8(0);return this.packet.cmd=a.types[t>>a.CMD_SHIFT],this.packet.retain=0!==(t&a.RETAIN_MASK),this.packet.qos=t>>a.QOS_SHIFT&a.QOS_MASK,this.packet.dup=0!==(t&a.DUP_MASK),this._list.consume(1),!0},u.prototype._parseLength=function(){var t,e=0,r=1,n=0,i=!0;while(e<5){if(t=this._list.readUInt8(e++),n+=r*(t&a.LENGTH_MASK),r*=128,0===(t&a.LENGTH_FIN_MASK))break;if(this._list.length<=e){i=!1;break}}return i&&(this.packet.length=n,this._list.consume(e)),i},u.prototype._parsePayload=function(){var t=!1;if(0===this.packet.length||this._list.length>=this.packet.length){switch(this._pos=0,this.packet.cmd){case"connect":this._parseConnect();break;case"connack":this._parseConnack();break;case"publish":this._parsePublish();break;case"puback":case"pubrec":case"pubrel":case"pubcomp":this._parseMessageId();break;case"subscribe":this._parseSubscribe();break;case"suback":this._parseSuback();break;case"unsubscribe":this._parseUnsubscribe();break;case"unsuback":this._parseUnsuback();break;case"pingreq":case"pingresp":case"disconnect":break;default:this._emitError(new Error("Not supported"))}t=!0}return t},u.prototype._parseConnect=function(){var t,e,r,n,i,o,s={},u=this.packet;if(t=this._parseString(),null===t)return this._emitError(new Error("Cannot parse protocolId"));if("MQTT"!==t&&"MQIsdp"!==t)return this._emitError(new Error("Invalid protocolId"));if(u.protocolId=t,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(u.protocolVersion=this._list.readUInt8(this._pos),3!==u.protocolVersion&&4!==u.protocolVersion)return this._emitError(new Error("Invalid protocol version"));if(this._pos++,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(s.username=this._list.readUInt8(this._pos)&a.USERNAME_MASK,s.password=this._list.readUInt8(this._pos)&a.PASSWORD_MASK,s.will=this._list.readUInt8(this._pos)&a.WILL_FLAG_MASK,s.will&&(u.will={},u.will.retain=0!==(this._list.readUInt8(this._pos)&a.WILL_RETAIN_MASK),u.will.qos=(this._list.readUInt8(this._pos)&a.WILL_QOS_MASK)>>a.WILL_QOS_SHIFT),u.clean=0!==(this._list.readUInt8(this._pos)&a.CLEAN_SESSION_MASK),this._pos++,u.keepalive=this._parseNum(),-1===u.keepalive)return this._emitError(new Error("Packet too short"));if(e=this._parseString(),null===e)return this._emitError(new Error("Packet too short"));if(u.clientId=e,s.will){if(r=this._parseString(),null===r)return this._emitError(new Error("Cannot parse will topic"));if(u.will.topic=r,n=this._parseBuffer(),null===n)return this._emitError(new Error("Cannot parse will payload"));u.will.payload=n}if(s.username){if(o=this._parseString(),null===o)return this._emitError(new Error("Cannot parse username"));u.username=o}if(s.password){if(i=this._parseBuffer(),null===i)return this._emitError(new Error("Cannot parse password"));u.password=i}return u},u.prototype._parseConnack=function(){var t=this.packet;return this._list.length<2?null:(t.sessionPresent=!!(this._list.readUInt8(this._pos++)&a.SESSIONPRESENT_MASK),t.returnCode=this._list.readUInt8(this._pos),-1===t.returnCode?this._emitError(new Error("Cannot parse return code")):void 0)},u.prototype._parsePublish=function(){var t=this.packet;if(t.topic=this._parseString(),null===t.topic)return this._emitError(new Error("Cannot parse topic"));t.qos>0&&!this._parseMessageId()||(t.payload=this._list.slice(this._pos,t.length))},u.prototype._parseSubscribe=function(){var t,e,r=this.packet;if(1!==r.qos)return this._emitError(new Error("Wrong subscribe header"));if(r.subscriptions=[],this._parseMessageId())while(this._posthis._list.length||n>this.packet.length?null:(e=this._list.toString("utf8",this._pos,n),this._pos+=r,e)},u.prototype._parseBuffer=function(){var t,e=this._parseNum(),r=e+this._pos;return-1===e||r>this._list.length||r>this.packet.length?null:(t=this._list.slice(this._pos,r),this._pos+=e,t)},u.prototype._parseNum=function(){if(this._list.length-this._pos<2)return-1;var t=this._list.readUInt16BE(this._pos);return this._pos+=2,t},u.prototype._newPacket=function(){return this.packet&&(this._list.consume(this.packet.length),this.emit("packet",this.packet)),this.packet=new s,!0},u.prototype._emitError=function(t){this.error=t,this.emit("error",t)},e.exports=u},{"./constants":83,"./packet":87,bl:10,events:78,inherits:80}],89:[function(t,e,r){"use strict";var n=t("./constants"),i=t("safe-buffer").Buffer,o=i.allocUnsafe(0),s=i.from([0]),a=t("./numbers"),u=t("process-nextick-args").nextTick,c=a.cache,l=a.generateNumber,f=a.generateCache,h=T,p=!0;function d(t,e){switch(e.cork&&(e.cork(),u(g,e)),p&&(p=!1,f()),t.cmd){case"connect":return y(t,e);case"connack":return b(t,e);case"publish":return _(t,e);case"puback":case"pubrec":case"pubrel":case"pubcomp":case"unsuback":return m(t,e);case"subscribe":return v(t,e);case"suback":return w(t,e);case"unsubscribe":return x(t,e);case"pingreq":case"pingresp":case"disconnect":return S(t,e);default:return e.emit("error",new Error("Unknown command")),!1}}function g(t){t.uncork()}function y(t,e){var r=t||{},o=r.protocolId||"MQTT",s=r.protocolVersion||4,a=r.will,u=r.clean,c=r.keepalive||0,l=r.clientId||"",f=r.username,p=r.password;void 0===u&&(u=!0);var d=0;if(!o||"string"!==typeof o&&!i.isBuffer(o))return e.emit("error",new Error("Invalid protocolId")),!1;if(d+=o.length+2,3!==s&&4!==s)return e.emit("error",new Error("Invalid protocol version")),!1;if(d+=1,"string"!==typeof l&&!i.isBuffer(l)||!l&&4!==s||!l&&!u){if(s<4)return e.emit("error",new Error("clientId must be supplied before 3.1.1")),!1;if(1*u===0)return e.emit("error",new Error("clientId must be given if cleanSession set to 0")),!1}else d+=l.length+2;if("number"!==typeof c||c<0||c>65535||c%1!==0)return e.emit("error",new Error("Invalid keepalive")),!1;if(d+=2,d+=1,a){if("object"!==typeof a)return e.emit("error",new Error("Invalid will")),!1;if(!a.topic||"string"!==typeof a.topic)return e.emit("error",new Error("Invalid will topic")),!1;if(d+=i.byteLength(a.topic)+2,a.payload&&a.payload){if(!(a.payload.length>=0))return e.emit("error",new Error("Invalid will payload")),!1;"string"===typeof a.payload?d+=i.byteLength(a.payload)+2:d+=a.payload.length+2}else d+=2}var g=!1;if(null!=f){if(!L(f))return e.emit("error",new Error("Invalid username")),!1;g=!0,d+=i.byteLength(f)+2}if(null!=p){if(!g)return e.emit("error",new Error("Username is required to use password")),!1;if(!L(p))return e.emit("error",new Error("Invalid password")),!1;d+=C(p)+2}e.write(n.CONNECT_HEADER),I(e,d),M(e,o),e.write(4===s?n.VERSION4:n.VERSION3);var y=0;return y|=null!=f?n.USERNAME_MASK:0,y|=null!=p?n.PASSWORD_MASK:0,y|=a&&a.retain?n.WILL_RETAIN_MASK:0,y|=a&&a.qos?a.qos<0&&h(e,l),e.write(c))}function m(t,e){var r=t||{},i=r.cmd||"puback",o=r.messageId,s=r.dup&&"pubrel"===i?n.DUP_MASK:0,a=0;return"pubrel"===i&&(a=1),"number"!==typeof o?(e.emit("error",new Error("Invalid messageId")),!1):(e.write(n.ACKS[i][a][s][0]),I(e,2),h(e,o))}function v(t,e){var r=t||{},o=r.dup?n.DUP_MASK:0,s=r.messageId,a=r.subscriptions,u=0;if("number"!==typeof s)return e.emit("error",new Error("Invalid messageId")),!1;if(u+=2,"object"!==typeof a||!a.length)return e.emit("error",new Error("Invalid subscriptions")),!1;for(var c=0;c=0&&t<128?1:t>=128&&t<16384?2:t>=16384&&t<2097152?3:t>=2097152&&t<268435456?4:0}function k(t){var e=0,r=0,n=i.allocUnsafe(E(t));do{e=t%128|0,t=t/128|0,t>0&&(e|=128),n.writeUInt8(e,r++)}while(t>0);return n}Object.defineProperty(d,"cacheNumbers",{get:function(){return h===T},set:function(t){t?(c&&0!==Object.keys(c).length||(p=!0),h=T):(p=!1,h=A)}});var j={};function I(t,e){var r=j[e];r||(r=k(e),e<16384&&(j[e]=r)),t.write(r)}function O(t,e){var r=i.byteLength(e);h(t,r),t.write(e,"utf8")}function T(t,e){return t.write(c[e])}function A(t,e){return t.write(l(e))}function M(t,e){"string"===typeof e?O(t,e):e?(h(t,e.length),t.write(e)):h(t,0)}function C(t){return t?t instanceof i?t.length:i.byteLength(t):0}function L(t){return"string"===typeof t||t instanceof i}e.exports=d},{"./constants":83,"./numbers":86,"process-nextick-args":91,"safe-buffer":108}],90:[function(t,e,r){var n=t("wrappy");function i(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function o(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}e.exports=n(i),e.exports.strict=n(o),i.proto=i((function(){Object.defineProperty(Function.prototype,"once",{value:function(){return i(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return o(this)},configurable:!0})}))},{wrappy:119}],91:[function(t,e,r){(function(t){"use strict";function r(e,r,n,i){if("function"!==typeof e)throw new TypeError('"callback" argument must be a function');var o,s,a=arguments.length;switch(a){case 0:case 1:return t.nextTick(e);case 2:return t.nextTick((function(){e.call(null,r)}));case 3:return t.nextTick((function(){e.call(null,r,n)}));case 4:return t.nextTick((function(){e.call(null,r,n,i)}));default:o=new Array(a-1),s=0;while(s1)for(var r=1;r= 0x80 (not a basic code point)","invalid-input":"Invalid input"},S=f-h,E=Math.floor,k=String.fromCharCode;function j(t){throw new RangeError(x[t])}function I(t,e){var r=t.length,n=[];while(r--)n[r]=e(t[r]);return n}function O(t,e){var r=t.split("@"),n="";r.length>1&&(n=r[0]+"@",t=r[1]),t=t.replace(w,".");var i=t.split("."),o=I(i,e).join(".");return n+o}function T(t){var e,r,n=[],i=0,o=t.length;while(i=55296&&e<=56319&&i65535&&(t-=65536,e+=k(t>>>10&1023|55296),t=56320|1023&t),e+=k(t),e})).join("")}function M(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:f}function C(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function L(t,e,r){var n=0;for(t=r?E(t/g):t>>1,t+=E(t/e);t>S*p>>1;n+=f)t=E(t/S);return E(n+(S+1)*t/(t+d))}function P(t){var e,r,n,i,o,s,a,u,c,d,g=[],m=t.length,v=0,w=b,x=y;for(r=t.lastIndexOf(_),r<0&&(r=0),n=0;n=128&&j("not-basic"),g.push(t.charCodeAt(n));for(i=r>0?r+1:0;i=m&&j("invalid-input"),u=M(t.charCodeAt(i++)),(u>=f||u>E((l-v)/s))&&j("overflow"),v+=u*s,c=a<=x?h:a>=x+p?p:a-x,uE(l/d)&&j("overflow"),s*=d}e=g.length+1,x=L(v-o,e,0==o),E(v/e)>l-w&&j("overflow"),w+=E(v/e),v%=e,g.splice(v++,0,w)}return A(g)}function R(t){var e,r,n,i,o,s,a,u,c,d,g,m,v,w,x,S=[];for(t=T(t),m=t.length,e=b,r=0,o=y,s=0;s=e&&gE((l-r)/v)&&j("overflow"),r+=(a-e)*v,e=a,s=0;sl&&j("overflow"),g==e){for(u=r,c=f;;c+=f){if(d=c<=o?h:c>=o+p?p:c-o,u0&&c>u&&(c=u);for(var l=0;l=0?(f=g.substr(0,y),h=g.substr(y+1)):(f=g,h=""),p=decodeURIComponent(f),d=decodeURIComponent(h),n(s,p)?i(s[p])?s[p].push(d):s[p]=[s[p],d]:s[p]=d}return s};var i=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}},{}],95:[function(t,e,r){"use strict";var n=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};e.exports=function(t,e,r,a){return e=e||"&",r=r||"=",null===t&&(t=void 0),"object"===typeof t?o(s(t),(function(s){var a=encodeURIComponent(n(s))+r;return i(t[s])?o(t[s],(function(t){return a+encodeURIComponent(n(t))})).join(e):a+encodeURIComponent(n(t[s]))})).join(e):a?encodeURIComponent(n(a))+r+encodeURIComponent(n(t)):""};var i=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function o(t,e){if(t.map)return t.map(e);for(var r=[],n=0;n0?("string"===typeof e||s.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=f(e)),n?s.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):E(t,s,e,!0):s.ended?t.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||0!==e.length?E(t,s,e,!1):L(t,s)):E(t,s,e,!1))):n||(s.reading=!1));return j(s)}function E(t,e,r,n){e.flowing&&0===e.length&&!e.sync?(t.emit("data",r),t.read(0)):(e.length+=e.objectMode?1:r.length,n?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&M(t)),L(t,e)}function k(t,e){var r;return h(e)||"string"===typeof e||void 0===e||t.objectMode||(r=new TypeError("Invalid non-string/buffer chunk")),r}function j(t){return!t.ended&&(t.needReadable||t.length=I?t=I:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function T(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=O(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function A(t,e){if(!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,M(t)}}function M(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(g("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?i.nextTick(C,t):C(t))}function C(t){g("emit readable"),t.emit("readable"),q(t)}function L(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(P,t,e))}function P(t,e){var r=e.length;while(!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=F(t,e.buffer,e.decoder),r);var r}function F(t,e,r){var n;return to.length?o.length:t;if(s===o.length?i+=o:i+=o.slice(0,t),t-=s,0===t){s===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(s));break}++n}return e.length-=n,i}function z(t,e){var r=c.allocUnsafe(t),n=e.head,i=1;n.data.copy(r),t-=n.data.length;while(n=n.next){var o=n.data,s=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,s),t-=s,0===t){s===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(s));break}++i}return e.length-=i,r}function K(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,i.nextTick(H,e,t))}function H(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function Q(t,e){for(var r=0,n=t.length;r=e.highWaterMark||e.ended))return g("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?K(this):M(this),null;if(t=T(t,e),0===t&&e.ended)return 0===e.length&&K(this),null;var n,i=e.needReadable;return g("need readable",i),(0===e.length||e.length-t0?D(t,e):null,null===n?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&K(this)),null!==n&&this.emit("data",n),n},x.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},x.prototype.pipe=function(t,e){var n=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t);break}o.pipesCount+=1,g("pipe count=%d opts=%j",o.pipesCount,e);var s=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr,u=s?l:w;function c(t,e){g("onunpipe"),t===n&&e&&!1===e.hasUnpiped&&(e.hasUnpiped=!0,p())}function l(){g("onend"),t.end()}o.endEmitted?i.nextTick(u):n.once("end",u),t.on("unpipe",c);var f=R(n);t.on("drain",f);var h=!1;function p(){g("cleanup"),t.removeListener("close",_),t.removeListener("finish",m),t.removeListener("drain",f),t.removeListener("error",b),t.removeListener("unpipe",c),n.removeListener("end",l),n.removeListener("end",w),n.removeListener("data",y),h=!0,!o.awaitDrain||t._writableState&&!t._writableState.needDrain||f()}var d=!1;function y(e){g("ondata"),d=!1;var r=t.write(e);!1!==r||d||((1===o.pipesCount&&o.pipes===t||o.pipesCount>1&&-1!==Q(o.pipes,t))&&!h&&(g("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,d=!0),n.pause())}function b(e){g("onerror",e),w(),t.removeListener("error",b),0===a(t,"error")&&t.emit("error",e)}function _(){t.removeListener("finish",m),w()}function m(){g("onfinish"),t.removeListener("close",_),w()}function w(){g("unpipe"),n.unpipe(t)}return n.on("data",y),v(t,"error",b),t.once("close",_),t.once("finish",m),t.emit("pipe",n),o.flowing||(g("pipe resume"),n.resume()),t},x.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o-1?i:o.nextTick;v.WritableState=m;var c=t("core-util-is");c.inherits=t("inherits");var l={deprecate:t("util-deprecate")},f=t("./internal/streams/stream"),h=t("safe-buffer").Buffer,p=n.Uint8Array||function(){};function d(t){return h.from(t)}function g(t){return h.isBuffer(t)||t instanceof p}var y,b=t("./internal/streams/destroy");function _(){}function m(e,r){a=a||t("./_stream_duplex"),e=e||{};var n=r instanceof a;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,o=e.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(o||0===o)?o:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var c=!1===e.decodeStrings;this.decodeStrings=!c,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){O(r,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function v(e){if(a=a||t("./_stream_duplex"),!y.call(v,this)&&!(this instanceof a))return new v(e);this._writableState=new m(e,this),this.writable=!0,e&&("function"===typeof e.write&&(this._write=e.write),"function"===typeof e.writev&&(this._writev=e.writev),"function"===typeof e.destroy&&(this._destroy=e.destroy),"function"===typeof e.final&&(this._final=e.final)),f.call(this)}function w(t,e){var r=new Error("write after end");t.emit("error",r),o.nextTick(e,r)}function x(t,e,r,n){var i=!0,s=!1;return null===r?s=new TypeError("May not write null values to stream"):"string"===typeof r||void 0===r||e.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(t.emit("error",s),o.nextTick(n,s),i=!1),i}function S(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!==typeof e||(e=h.from(e,r)),e}function E(t,e,r,n,i,o){if(!r){var s=S(e,n,i);n!==s&&(r=!0,i="buffer",n=s)}var a=e.objectMode?1:n.length;e.length+=a;var u=e.length-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(v.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),v.prototype._write=function(t,e,r){r(new Error("_write() is not implemented"))},v.prototype._writev=null,v.prototype.end=function(t,e,r){var n=this._writableState;"function"===typeof t?(r=t,t=null,e=null):"function"===typeof e&&(r=e,e=null),null!==t&&void 0!==t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||B(this,n,r)},Object.defineProperty(v.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),v.prototype.destroy=b.destroy,v.prototype._undestroy=b.undestroy,v.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,t("_process"),"undefined"!==typeof r.g?r.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{},t("timers").setImmediate)},{"./_stream_duplex":98,"./internal/streams/destroy":104,"./internal/streams/stream":105,_process:92,"core-util-is":13,inherits:80,"process-nextick-args":91,"safe-buffer":108,timers:111,"util-deprecate":114}],103:[function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=t("safe-buffer").Buffer,o=t("util");function s(t,e,r){t.copy(e,r)}e.exports=function(){function t(){n(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";var e=this.head,r=""+e.data;while(e=e.next)r+=t+e.data;return r},t.prototype.concat=function(t){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;var e=i.allocUnsafe(t>>>0),r=this.head,n=0;while(r)s(r.data,e,n),n+=r.data.length,r=r.next;return e},t}(),o&&o.inspect&&o.inspect.custom&&(e.exports.prototype[o.inspect.custom]=function(){var t=o.inspect({length:this.length});return this.constructor.name+" "+t})},{"safe-buffer":108,util:11}],104:[function(t,e,r){"use strict";var n=t("process-nextick-args");function i(t,e){var r=this,i=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return i||o?(e?e(t):!t||this._writableState&&this._writableState.errorEmitted||n.nextTick(s,this,t),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?(n.nextTick(s,r,t),r._writableState&&(r._writableState.errorEmitted=!0)):e&&e(t)})),this)}function o(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function s(t,e){t.emit("error",e)}e.exports={destroy:i,undestroy:o}},{"process-nextick-args":91}],105:[function(t,e,r){e.exports=t("events").EventEmitter},{events:78}],106:[function(t,e,r){r=e.exports=t("./lib/_stream_readable.js"),r.Stream=r,r.Readable=r,r.Writable=t("./lib/_stream_writable.js"),r.Duplex=t("./lib/_stream_duplex.js"),r.Transform=t("./lib/_stream_transform.js"),r.PassThrough=t("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":98,"./lib/_stream_passthrough.js":99,"./lib/_stream_readable.js":100,"./lib/_stream_transform.js":101,"./lib/_stream_writable.js":102}],107:[function(t,e,r){"use strict";function n(t,e,r){var n=this;this._callback=t,this._args=r,this._interval=setInterval(t,e,this._args),this.reschedule=function(t){t||(t=n._interval),n._interval&&clearInterval(n._interval),n._interval=setInterval(n._callback,t,n._args)},this.clear=function(){n._interval&&(clearInterval(n._interval),n._interval=void 0)},this.destroy=function(){n._interval&&clearInterval(n._interval),n._callback=void 0,n._interval=void 0,n._args=void 0}}function i(){if("function"!==typeof arguments[0])throw new Error("callback needed");if("number"!==typeof arguments[1])throw new Error("interval needed");var t;if(arguments.length>0){t=new Array(arguments.length-2);for(var e=0;e>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function c(t,e,r){var n=e.length-1;if(n=0?(i>0&&(t.lastNeed=i-1),i):--n=0?(i>0&&(t.lastNeed=i-2),i):--n=0?(i>0&&(2===i?i=0:t.lastNeed=i-3),i):0))}function l(t,e,r){if(128!==(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!==(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!==(192&e[2]))return t.lastNeed=2,"�"}}function f(t){var e=this.lastTotal-this.lastNeed,r=l(this,t,e);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function h(t,e){var r=c(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString("utf8",e,n)}function p(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e}function d(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function g(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function y(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function b(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function _(t){return t.toString(this.encoding)}function m(t){return t&&t.length?this.write(t):""}r.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),void 0===e)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},r.setImmediate="function"===typeof e?e:function(t){var e=u++,n=!(arguments.length<2)&&s.call(arguments,1);return a[e]=!0,i((function(){a[e]&&(n?t.apply(null,n):t.call(null),r.clearImmediate(e))})),e},r.clearImmediate="function"===typeof n?n:function(t){delete a[t]}}).call(this,t("timers").setImmediate,t("timers").clearImmediate)},{"process/browser.js":92,timers:111}],112:[function(t,e,r){"use strict";var n=t("punycode"),i=t("./util");function o(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}r.parse=w,r.resolve=S,r.resolveObject=E,r.format=x,r.Url=o;var s=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,u=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["<",">",'"',"`"," ","\r","\n","\t"],l=["{","}","|","\\","^","`"].concat(c),f=["'"].concat(l),h=["%","/","?",";","#"].concat(f),p=["/","?","#"],d=255,g=/^[+a-z0-9A-Z_-]{0,63}$/,y=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,b={javascript:!0,"javascript:":!0},_={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},v=t("querystring");function w(t,e,r){if(t&&i.isObject(t)&&t instanceof o)return t;var n=new o;return n.parse(t,e,r),n}function x(t){return i.isString(t)&&(t=w(t)),t instanceof o?t.format():o.prototype.format.call(t)}function S(t,e){return w(t,!1,!0).resolve(e)}function E(t,e){return t?w(t,!1,!0).resolveObject(e):e}o.prototype.parse=function(t,e,r){if(!i.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),a=-1!==o&&o127?R+="x":R+=P[B];if(!R.match(g)){var N=C.slice(0,T),q=C.slice(T+1),D=P.match(y);D&&(N.push(D[1]),q.unshift(D[2])),q.length&&(w="/"+q.join(".")+w),this.hostname=N.join(".");break}}}this.hostname.length>d?this.hostname="":this.hostname=this.hostname.toLowerCase(),M||(this.hostname=n.toASCII(this.hostname));var F=this.port?":"+this.port:"",W=this.hostname||"";this.host=W+F,this.href+=this.host,M&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==w[0]&&(w="/"+w))}if(!b[E])for(T=0,L=f.length;T0)&&r.host.split("@");k&&(r.auth=k.shift(),r.host=r.hostname=k.shift())}return r.search=t.search,r.query=t.query,i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!S.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var j=S.slice(-1)[0],I=(r.host||t.host||S.length>1)&&("."===j||".."===j)||""===j,O=0,T=S.length;T>=0;T--)j=S[T],"."===j?S.splice(T,1):".."===j?(S.splice(T,1),O++):O&&(S.splice(T,1),O--);if(!w&&!x)for(;O--;O)S.unshift("..");!w||""===S[0]||S[0]&&"/"===S[0].charAt(0)||S.unshift(""),I&&"/"!==S.join("/").substr(-1)&&S.push("");var A=""===S[0]||S[0]&&"/"===S[0].charAt(0);if(E){r.hostname=r.host=A?"":S.length?S.shift():"";k=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@");k&&(r.auth=k.shift(),r.host=r.hostname=k.shift())}return w=w||r.host&&S.length,w&&!A&&S.unshift(""),S.length?r.pathname=S.join("/"):(r.pathname=null,r.path=null),i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var t=this.host,e=a.exec(t);e&&(e=e[0],":"!==e&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},{"./util":113,punycode:93,querystring:96}],113:[function(t,e,r){"use strict";e.exports={isString:function(t){return"string"===typeof t},isObject:function(t){return"object"===typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},{}],114:[function(t,e,n){(function(t){function r(t,e){if(n("noDeprecation"))return t;var r=!1;function i(){if(!r){if(n("throwDeprecation"))throw new Error(e);n("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}return i}function n(e){try{if(!t.localStorage)return!1}catch(n){return!1}var r=t.localStorage[e];return null!=r&&"true"===String(r).toLowerCase()}e.exports=r}).call(this,"undefined"!==typeof r.g?r.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{}],115:[function(t,e,r){e.exports=function(t){return t&&"object"===typeof t&&"function"===typeof t.copy&&"function"===typeof t.fill&&"function"===typeof t.readUInt8}},{}],116:[function(t,e,n){(function(e,r){var i=/%[sdj%]/g;n.format=function(t){if(!x(t)){for(var e=[],r=0;r=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return t}})),u=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),_(e)?r.showHidden=e:e&&n._extend(r,e),E(r.showHidden)&&(r.showHidden=!1),E(r.depth)&&(r.depth=2),E(r.colors)&&(r.colors=!1),E(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=u),f(r,t,r.depth)}function u(t,e){var r=a.styles[e];return r?"["+a.colors[r][0]+"m"+t+"["+a.colors[r][1]+"m":t}function c(t,e){return t}function l(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}function f(t,e,r){if(t.customInspect&&e&&T(e.inspect)&&e.inspect!==n.inspect&&(!e.constructor||e.constructor.prototype!==e)){var i=e.inspect(r,t);return x(i)||(i=f(t,i,r)),i}var o=h(t,e);if(o)return o;var s=Object.keys(e),a=l(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(e)),O(e)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return p(e);if(0===s.length){if(T(e)){var u=e.name?": "+e.name:"";return t.stylize("[Function"+u+"]","special")}if(k(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(I(e))return t.stylize(Date.prototype.toString.call(e),"date");if(O(e))return p(e)}var c,_="",m=!1,v=["{","}"];if(b(e)&&(m=!0,v=["[","]"]),T(e)){var w=e.name?": "+e.name:"";_=" [Function"+w+"]"}return k(e)&&(_=" "+RegExp.prototype.toString.call(e)),I(e)&&(_=" "+Date.prototype.toUTCString.call(e)),O(e)&&(_=" "+p(e)),0!==s.length||m&&0!=e.length?r<0?k(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special"):(t.seen.push(e),c=m?d(t,e,r,a,s):s.map((function(n){return g(t,e,r,a,n,m)})),t.seen.pop(),y(c,_,v)):v[0]+_+v[1]}function h(t,e){if(E(e))return t.stylize("undefined","undefined");if(x(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return w(e)?t.stylize(""+e,"number"):_(e)?t.stylize(""+e,"boolean"):m(e)?t.stylize("null","null"):void 0}function p(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,r,n,i){for(var o=[],s=0,a=e.length;s-1&&(a=o?a.split("\n").map((function(t){return" "+t})).join("\n").substr(2):"\n"+a.split("\n").map((function(t){return" "+t})).join("\n"))):a=t.stylize("[Circular]","special")),E(s)){if(o&&i.match(/^\d+$/))return a;s=JSON.stringify(""+i),s.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function y(t,e,r){var n=t.reduce((function(t,e){return e.indexOf("\n")>=0&&0,t+e.replace(/\u001b\[\d\d?m/g,"").length+1}),0);return n>60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}function b(t){return Array.isArray(t)}function _(t){return"boolean"===typeof t}function m(t){return null===t}function v(t){return null==t}function w(t){return"number"===typeof t}function x(t){return"string"===typeof t}function S(t){return"symbol"===typeof t}function E(t){return void 0===t}function k(t){return j(t)&&"[object RegExp]"===M(t)}function j(t){return"object"===typeof t&&null!==t}function I(t){return j(t)&&"[object Date]"===M(t)}function O(t){return j(t)&&("[object Error]"===M(t)||t instanceof Error)}function T(t){return"function"===typeof t}function A(t){return null===t||"boolean"===typeof t||"number"===typeof t||"string"===typeof t||"symbol"===typeof t||"undefined"===typeof t}function M(t){return Object.prototype.toString.call(t)}function C(t){return t<10?"0"+t.toString(10):t.toString(10)}n.debuglog=function(t){if(E(o)&&(o=e.env.NODE_DEBUG||""),t=t.toUpperCase(),!s[t])if(new RegExp("\\b"+t+"\\b","i").test(o)){var r=e.pid;s[t]=function(){var e=n.format.apply(n,arguments);console.error("%s %d: %s",t,r,e)}}else s[t]=function(){};return s[t]},n.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},n.isArray=b,n.isBoolean=_,n.isNull=m,n.isNullOrUndefined=v,n.isNumber=w,n.isString=x,n.isSymbol=S,n.isUndefined=E,n.isRegExp=k,n.isObject=j,n.isDate=I,n.isError=O,n.isFunction=T,n.isPrimitive=A,n.isBuffer=t("./support/isBuffer");var L=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function P(){var t=new Date,e=[C(t.getHours()),C(t.getMinutes()),C(t.getSeconds())].join(":");return[t.getDate(),L[t.getMonth()],e].join(" ")}function R(t,e){return Object.prototype.hasOwnProperty.call(t,e)}n.log=function(){console.log("%s - %s",P(),n.format.apply(n,arguments))},n.inherits=t("inherits"),n._extend=function(t,e){if(!e||!j(e))return t;var r=Object.keys(e),n=r.length;while(n--)t[r[n]]=e[r[n]];return t}}).call(this,t("_process"),"undefined"!==typeof r.g?r.g:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{"./support/isBuffer":115,_process:92,inherits:80}],117:[function(t,e,n){(function(r,n){"use strict";var i=t("readable-stream").Transform,o=t("duplexify"),s=t("ws"),a=t("safe-buffer").Buffer;function u(t,e,r){var n=new i({objectMode:t.objectMode});return n._write=e,n._flush=r,n}function c(t,e,i){var c,l,f="browser"===r.title,h=!!n.WebSocket,p=f?m:_;e&&!Array.isArray(e)&&"object"===typeof e&&(i=e,e=null,("string"===typeof i.protocol||Array.isArray(i.protocol))&&(e=i.protocol)),i||(i={}),void 0===i.objectMode&&(i.objectMode=!(!0===i.binary||void 0===i.binary));var d=u(i,p,v);i.objectMode||(d._writev=j);var g=i.browserBufferSize||524288,y=i.browserBufferTimeout||1e3;"object"===typeof t?l=t:(l=h&&f?new s(t,e):new s(t,e,i),l.binaryType="arraybuffer"),l.readyState===l.OPEN?c=d:(c=o.obj(),l.onopen=w),c.socket=l,l.onclose=x,l.onerror=S,l.onmessage=E,d.on("close",k);var b=!i.objectMode;function _(t,e,r){l.readyState===l.OPEN?(b&&"string"===typeof t&&(t=a.from(t,"utf8")),l.send(t,r)):r()}function m(t,e,r){if(l.bufferedAmount>g)setTimeout(m,y,t,e,r);else{b&&"string"===typeof t&&(t=a.from(t,"utf8"));try{l.send(t)}catch(n){return r(n)}r()}}function v(t){l.close(),t()}function w(){c.setReadable(d),c.setWritable(d),c.emit("connect")}function x(){c.end(),c.destroy()}function S(t){c.destroy(t)}function E(t){var e=t.data;e=e instanceof ArrayBuffer?a.from(e):a.from(e,"utf8"),d.push(e)}function k(){l.close()}function j(t,e){for(var r=new Array(t.length),n=0;nr,f=o(n)?n:l(n),h=a?u(arguments,r):[],p=a?function(){i(f,this,h)}:f;return e?t(p,s):t(p)}:t}},1606:function(t,e,r){"use strict";var n,i,o,s,a=r(4475),u=r(8745),c=r(6080),l=r(4901),f=r(9297),h=r(9039),p=r(397),d=r(7680),g=r(4055),y=r(2812),b=r(8119),_=r(9088),m=a.setImmediate,v=a.clearImmediate,w=a.process,x=a.Dispatch,S=a.Function,E=a.MessageChannel,k=a.String,j=0,I={},O="onreadystatechange";h((function(){n=a.location}));var T=function(t){if(f(I,t)){var e=I[t];delete I[t],e()}},A=function(t){return function(){T(t)}},M=function(t){T(t.data)},C=function(t){a.postMessage(k(t),n.protocol+"//"+n.host)};m&&v||(m=function(t){y(arguments.length,1);var e=l(t)?t:S(t),r=d(arguments,1);return I[++j]=function(){u(e,void 0,r)},i(j),j},v=function(t){delete I[t]},_?i=function(t){w.nextTick(A(t))}:x&&x.now?i=function(t){x.now(A(t))}:E&&!b?(o=new E,s=o.port2,o.port1.onmessage=M,i=c(s.postMessage,s)):a.addEventListener&&l(a.postMessage)&&!a.importScripts&&n&&"file:"!==n.protocol&&!h(C)?(i=C,a.addEventListener("message",M,!1)):i=O in g("script")?function(t){p.appendChild(g("script"))[O]=function(){p.removeChild(this),T(t)}}:function(t){setTimeout(A(t),0)}),t.exports={set:m,clear:v}},6368:function(t,e,r){"use strict";var n=r(6518),i=r(4475),o=r(1606).clear;n({global:!0,bind:!0,enumerable:!0,forced:i.clearImmediate!==o},{clearImmediate:o})},9848:function(t,e,r){"use strict";r(6368),r(9309)},9309:function(t,e,r){"use strict";var n=r(6518),i=r(4475),o=r(1606).set,s=r(9472),a=i.setImmediate?s(o,!1):o;n({global:!0,bind:!0,enumerable:!0,forced:i.setImmediate!==a},{setImmediate:a})}}]); \ No newline at end of file diff --git a/web/js/193.256e1126.js b/web/js/193.256e1126.js new file mode 100644 index 0000000..212998b --- /dev/null +++ b/web/js/193.256e1126.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkset_vue"]=self["webpackChunkset_vue"]||[]).push([[193],{6193:function(e,l,o){o.r(l),o.d(l,{default:function(){return K}});var a=o(4726),n=o(6596);const t=(0,a.G)(n.A);o(3081);var d=o(122),c=(o(9998),o(4114),o(6768)),s=o(5828),r=o(8442),i=o(6370),u=o(6591),p=o(6145);const[b,m]=(0,s.YX)("checkbox-group"),h={max:i.VQ,shape:(0,i.Ts)("round"),disabled:Boolean,iconSize:i.VQ,direction:String,modelValue:(0,i.zj)(),checkedColor:String},g=Symbol(b);(0,c.pM)({name:b,props:h,emits:["change","update:modelValue"],setup(e,{emit:l,slots:o}){const{children:a,linkChildren:n}=(0,u.Py)(g),t=e=>l("update:modelValue",e),d=(e={})=>{"boolean"===typeof e&&(e={checked:e});const{checked:l,skipDisabled:o}=e,n=a.filter((e=>!!e.props.bindGroup&&(e.props.disabled&&o?e.checked.value:null!=l?l:!e.checked.value))),d=n.map((e=>e.name));t(d)};return(0,c.wB)((()=>e.modelValue),(e=>l("change",e))),(0,p.c)({toggleAll:d}),(0,u.Gp)((()=>e.modelValue)),n({props:e,updateValue:t}),()=>{var l;return(0,c.bF)("div",{class:m([e.direction])},[null==(l=o.default)?void 0:l.call(o)])}}});var v=o(144),k=o(7905),f=o(5632);const V={name:i.E9,disabled:Boolean,iconSize:i.VQ,modelValue:i.E9,checkedColor:String,labelPosition:String,labelDisabled:Boolean};var w=(0,c.pM)({props:(0,r.X$)({},V,{bem:(0,i.$g)(Function),role:String,shape:String,parent:Object,checked:Boolean,bindGroup:i.Rd,indeterminate:{type:Boolean,default:null}}),emits:["click","toggle"],setup(e,{emit:l,slots:o}){const a=(0,v.KR)(),n=l=>{if(e.parent&&e.bindGroup)return e.parent.props[l]},t=(0,c.EW)((()=>{if(e.parent&&e.bindGroup){const l=n("disabled")||e.disabled;if("checkbox"===e.role){const o=n("modelValue").length,a=n("max"),t=a&&o>=+a;return l||t&&!e.checked}return l}return e.disabled})),d=(0,c.EW)((()=>n("direction"))),s=(0,c.EW)((()=>{const l=e.checkedColor||n("checkedColor");if(l&&e.checked&&!t.value)return{borderColor:l,backgroundColor:l}})),r=(0,c.EW)((()=>e.shape||n("shape")||"round")),i=o=>{const{target:n}=o,d=a.value,c=d===n||(null==d?void 0:d.contains(n));t.value||!c&&e.labelDisabled||l("toggle"),l("click",o)},u=()=>{var l,d;const{bem:i,checked:u,indeterminate:p}=e,b=e.iconSize||n("iconSize");return(0,c.bF)("div",{ref:a,class:i("icon",[r.value,{disabled:t.value,checked:u,indeterminate:p}]),style:"dot"!==r.value?{fontSize:(0,k._V)(b)}:{width:(0,k._V)(b),height:(0,k._V)(b),borderColor:null==(l=s.value)?void 0:l.borderColor}},[o.icon?o.icon({checked:u,disabled:t.value}):"dot"!==r.value?(0,c.bF)(f.In,{name:p?"minus":"success",style:s.value},null):(0,c.bF)("div",{class:i("icon--dot__icon"),style:{backgroundColor:null==(d=s.value)?void 0:d.backgroundColor}},null)])},p=()=>{const{checked:l}=e;if(o.default)return(0,c.bF)("span",{class:e.bem("label",[e.labelPosition,{disabled:t.value}])},[o.default({checked:l,disabled:t.value})])};return()=>{const l="left"===e.labelPosition?[p(),u()]:[u(),p()];return(0,c.bF)("div",{role:e.role,class:e.bem([{disabled:t.value,"label-disabled":e.labelDisabled},d.value]),tabindex:t.value?void 0:0,"aria-checked":e.checked,onClick:i},[l])}}});const[C,y]=(0,s.YX)("checkbox"),F=(0,r.X$)({},V,{shape:String,bindGroup:i.Rd,indeterminate:{type:Boolean,default:null}});var _=(0,c.pM)({name:C,props:F,emits:["change","update:modelValue"],setup(e,{emit:l,slots:o}){const{parent:a}=(0,u.cJ)(g),n=l=>{const{name:o}=e,{max:n,modelValue:t}=a.props,d=t.slice();if(l){const l=n&&d.length>=+n;l||d.includes(o)||(d.push(o),e.bindGroup&&a.updateValue(d))}else{const l=d.indexOf(o);-1!==l&&(d.splice(l,1),e.bindGroup&&a.updateValue(d))}},t=(0,c.EW)((()=>a&&e.bindGroup?-1!==a.props.modelValue.indexOf(e.name):!!e.modelValue)),d=(o=!t.value)=>{a&&e.bindGroup?n(o):l("update:modelValue",o),null!==e.indeterminate&&l("change",o)};return(0,c.wB)((()=>e.modelValue),(o=>{null===e.indeterminate&&l("change",o)})),(0,p.c)({toggle:d,props:e,checked:t}),(0,u.Gp)((()=>e.modelValue)),()=>(0,c.bF)(w,(0,c.v6)({bem:y,role:"checkbox",parent:a,checked:t.value,onToggle:d},e),(0,r.Up)(o,["default","icon"]))}});const S=(0,a.G)(_);o(6647),o(7708),o(7484);var G=o(3788),x=(o(7540),o(5050));o(9766);const L=e=>((0,c.Qi)("data-v-cb07f33e"),e=e(),(0,c.jt)(),e),B={class:"container"},E=L((()=>(0,c.Lk)("div",{class:"welcome-wrapper"},[(0,c.Lk)("p",null,"欢迎 :)")],-1))),P={class:"login-wrapper"},z=L((()=>(0,c.Lk)("h4",null,"登录",-1))),W={class:"login-checkbox"},O={class:"options-row"};function R(e,l,o,a,n,s){const r=x.D0,i=G.Qh,u=S,p=d.$n,b=t;return(0,c.uX)(),(0,c.CE)("div",B,[E,(0,c.Lk)("div",P,[z,(0,c.Lk)("div",W,[(0,c.bF)(i,{class:"custom-cell-group",inset:"",id:"password-input"},{default:(0,c.k6)((()=>[(0,c.bF)(r,{class:"custom-field",modelValue:a.password,"onUpdate:modelValue":l[0]||(l[0]=e=>a.password=e),type:"password",label:"密码"},null,8,["modelValue"])])),_:1}),(0,c.Lk)("div",O,[(0,c.bF)(u,{modelValue:a.checked,"onUpdate:modelValue":l[1]||(l[1]=e=>a.checked=e)},{default:(0,c.k6)((()=>[(0,c.eW)("记住密码")])),_:1},8,["modelValue"]),(0,c.Lk)("span",{class:"forgot-password",onClick:l[2]||(l[2]=(...e)=>a.navigateToForgetPassword&&a.navigateToForgetPassword(...e))},"忘记密码?")])]),(0,c.bF)(p,{class:"login-button",type:"primary",size:"large",onClick:a.login},{default:(0,c.k6)((()=>[(0,c.eW)("登录")])),_:1},8,["onClick"])]),(0,c.bF)(b)])}var j=o(1387),A=o(4373),D=(o(8628),o(782)),Q=o(1508),T={setup(){const e=(0,v.KR)(!0),l=(0,v.KR)(""),o=(0,j.rd)(),a=(0,v.KR)(1),n=(0,D.Pj)(),t=()=>{o.push("/reset")},d=()=>{const e={board_id:1,JSON_id:a.value,gateway:{log_in:{type:1,pass:l.value}}};console.log(JSON.stringify(e)),A.A.post("/communication",e,{headers:{"content-type":"application/json"}}).then((e=>{const l=e.data;l.gateway&&l.log_in&&0===l.log_in.return?(console.log(JSON.stringify(l)),(0,Q.GF)("登录成功"),a.value++,n.commit("setAuthenticated",!0),o.push("/")):((0,Q.xr)("密码错误"),console.error("Login failed:",l))})).catch((e=>{(0,Q.xr)("登录失败,请重试"),console.error("Login error:",e)}))};return{checked:e,password:l,navigateToForgetPassword:t,login:d}}},X=o(1241);const J=(0,X.A)(T,[["render",R],["__scopeId","data-v-cb07f33e"]]);var K=J}}]); \ No newline at end of file diff --git a/web/js/233.a1cddea4.js b/web/js/233.a1cddea4.js new file mode 100644 index 0000000..a6e7755 --- /dev/null +++ b/web/js/233.a1cddea4.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkset_vue"]=self["webpackChunkset_vue"]||[]).push([[233],{887:function(){},7265:function(){},3506:function(t,e,r){var n=r(3925),o=String,a=TypeError;t.exports=function(t){if(n(t))return t;throw new a("Can't set "+o(t)+" as a prototype")}},7811:function(t){t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},7394:function(t,e,r){var n=r(6706),o=r(4576),a=TypeError;t.exports=n(ArrayBuffer.prototype,"byteLength","get")||function(t){if("ArrayBuffer"!==o(t))throw new a("ArrayBuffer expected");return t.byteLength}},3238:function(t,e,r){var n=r(9504),o=r(7394),a=n(ArrayBuffer.prototype.slice);t.exports=function(t){if(0!==o(t))return!1;try{return a(t,0,0),!1}catch(e){return!0}}},5636:function(t,e,r){var n=r(4475),o=r(9504),a=r(6706),i=r(7696),l=r(3238),u=r(7394),s=r(4483),c=r(1548),f=n.structuredClone,p=n.ArrayBuffer,d=n.DataView,v=n.TypeError,y=Math.min,g=p.prototype,h=d.prototype,b=o(g.slice),m=a(g,"resizable","get"),w=a(g,"maxByteLength","get"),A=o(h.getInt8),x=o(h.setInt8);t.exports=(c||s)&&function(t,e,r){var n,o=u(t),a=void 0===e?o:i(e),g=!m||!m(t);if(l(t))throw new v("ArrayBuffer is detached");if(c&&(t=f(t,{transfer:[t]}),o===a&&(r||g)))return t;if(o>=a&&(!r||g))n=b(t,0,a);else{var h=r&&!g&&w?{maxByteLength:w(t)}:void 0;n=new p(a,h);for(var T=new d(t),C=new d(n),B=y(a,o),F=0;F2?r:n(e),i=new t(a);while(a>o)i[o]=e[o++];return i}},7628:function(t,e,r){var n=r(6198);t.exports=function(t,e){for(var r=n(t),o=new e(r),a=0;a=l||s<0)throw new a("Incorrect index");for(var c=new e(l),f=0;f92||u&&a>94||i&&a>97)return!1;var t=new ArrayBuffer(8),e=s(t,{transfer:[t]});return 0!==t.byteLength||8!==e.byteLength}))},5854:function(t,e,r){var n=r(2777),o=TypeError;t.exports=function(t){var e=n(t,"number");if("number"==typeof e)throw new o("Can't convert number to bigint");return BigInt(e)}},7696:function(t,e,r){var n=r(1291),o=r(8014),a=RangeError;t.exports=function(t){if(void 0===t)return 0;var e=n(t),r=o(e);if(e!==r)throw new a("Wrong length or index");return r}},2140:function(t,e,r){var n=r(8227),o=n("toStringTag"),a={};a[o]="z",t.exports="[object z]"===String(a)},9714:function(t,e,r){var n=r(9088);t.exports=function(t){try{if(n)return Function('return require("'+t+'")')()}catch(e){}}},2812:function(t){var e=TypeError;t.exports=function(t,r){if(t{var n;return(0,o.bF)("div",(0,o.v6)({class:[c({inset:t.inset}),{[l.pT]:t.border&&!t.inset}]},r,(0,u.b)()),[null==(n=e.default)?void 0:n.call(e)])},a=()=>(0,o.bF)("div",{class:c("title",{inset:t.inset})},[e.title?e.title():t.title]);return()=>t.title||e.title?(0,o.bF)(o.FK,null,[a(),n()]):n()}});const d=(0,n.G)(p)},7540:function(t,e,r){r(6647)},6261:function(t,e,r){r.d(e,{Ay:function(){return d},yH:function(){return f}});var n=r(6768),o=r(5828),a=r(6370),i=r(8442),l=r(4548),u=r(5632);const[s,c]=(0,o.YX)("cell"),f={tag:(0,a.Ts)("div"),icon:String,size:String,title:a.VQ,value:a.VQ,label:a.VQ,center:Boolean,isLink:Boolean,border:a.Rd,iconPrefix:String,valueClass:a.E9,labelClass:a.E9,titleClass:a.E9,titleStyle:null,arrowDirection:String,required:{type:[Boolean,String],default:null},clickable:{type:Boolean,default:null}},p=(0,i.X$)({},f,l.aI);var d=(0,n.pM)({name:s,props:p,setup(t,{slots:e}){const r=(0,l.lq)(),o=()=>{const r=e.label||(0,i.C8)(t.label);if(r)return(0,n.bF)("div",{class:[c("label"),t.labelClass]},[e.label?e.label():t.label])},a=()=>{var r;if(e.title||(0,i.C8)(t.title)){const a=null==(r=e.title)?void 0:r.call(e);if(Array.isArray(a)&&0===a.length)return;return(0,n.bF)("div",{class:[c("title"),t.titleClass],style:t.titleStyle},[a||(0,n.bF)("span",null,[t.title]),o()])}},s=()=>{const r=e.value||e.default,o=r||(0,i.C8)(t.value);if(o)return(0,n.bF)("div",{class:[c("value"),t.valueClass]},[r?r():(0,n.bF)("span",null,[t.value])])},f=()=>e.icon?e.icon():t.icon?(0,n.bF)(u.In,{name:t.icon,class:c("left-icon"),classPrefix:t.iconPrefix},null):void 0,p=()=>{if(e["right-icon"])return e["right-icon"]();if(t.isLink){const e=t.arrowDirection&&"right"!==t.arrowDirection?`arrow-${t.arrowDirection}`:"arrow";return(0,n.bF)(u.In,{name:e,class:c("right-icon")},null)}};return()=>{var o;const{tag:i,size:l,center:u,border:d,isLink:v,required:y}=t,g=null!=(o=t.clickable)?o:v,h={center:u,required:!!y,clickable:g,borderless:!d};return l&&(h[l]=!!l),(0,n.bF)(i,{class:c(h),role:g?"button":void 0,tabindex:g?0:void 0,onClick:r},{default:()=>{var t;return[f(),a(),s(),p(),null==(t=e.extra)?void 0:t.call(e)]}})}}})},8139:function(t,e,r){r.d(e,{fh:function(){return a}});var n=r(4726),o=r(6261);const a=(0,n.G)(o.Ay)},6145:function(t,e,r){r.d(e,{c:function(){return a}});var n=r(6768),o=r(8442);function a(t){const e=(0,n.nI)();e&&(0,o.X$)(e.proxy,t)}},9614:function(t,e,r){r.d(e,{B:function(){return a}});var n=r(6768);let o=0;function a(){const t=(0,n.nI)(),{name:e="unknown"}=(null==t?void 0:t.type)||{};return`${e}-${++o}`}},1483:function(t,e,r){r.d(e,{b:function(){return o}});var n=r(6768);const o=()=>{var t;const{scopeId:e}=(null==(t=(0,n.nI)())?void 0:t.vnode)||{};return e?{[e]:""}:null}},4390:function(t,e,r){r.d(e,{P:function(){return i}});var n=r(144),o=r(4612);function a(t,e){return t>e?"horizontal":e>t?"vertical":""}function i(){const t=(0,n.KR)(0),e=(0,n.KR)(0),r=(0,n.KR)(0),i=(0,n.KR)(0),l=(0,n.KR)(0),u=(0,n.KR)(0),s=(0,n.KR)(""),c=(0,n.KR)(!0),f=()=>"vertical"===s.value,p=()=>"horizontal"===s.value,d=()=>{r.value=0,i.value=0,l.value=0,u.value=0,s.value="",c.value=!0},v=r=>{d(),t.value=r.touches[0].clientX,e.value=r.touches[0].clientY},y=n=>{const f=n.touches[0];r.value=(f.clientX<0?0:f.clientX)-t.value,i.value=f.clientY-e.value,l.value=Math.abs(r.value),u.value=Math.abs(i.value);const p=10;(!s.value||l.valueo.Ez||u.value>o.Ez)&&(c.value=!1)};return{move:y,start:v,reset:d,startX:t,startY:e,deltaX:r,deltaY:i,offsetX:l,offsetY:u,direction:s,isVertical:f,isHorizontal:p,isTap:c}}},5050:function(t,e,r){r.d(e,{D0:function(){return R}});var n=r(4726),o=r(6768),a=r(144),i=r(5828),l=r(6370),u=r(8442),s=r(4612),c=r(7905),f=r(240);function p(t){return Array.isArray(t)?!t.length:0!==t&&!t}function d(t,e){if(p(t)){if(e.required)return!1;if(!1===e.validateEmpty)return!0}return!(e.pattern&&!e.pattern.test(String(t)))}function v(t,e){return new Promise((r=>{const n=e.validator(t,e);(0,u.yL)(n)?n.then(r):r(n)}))}function y(t,e){const{message:r}=e;return(0,u.Tn)(r)?r(t,e):r||""}function g({target:t}){t.composing=!0}function h({target:t}){t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}function b(t,e){const r=(0,f.Td)();t.style.height="auto";let n=t.scrollHeight;if((0,u.Gv)(e)){const{maxHeight:t,minHeight:r}=e;void 0!==t&&(n=Math.min(n,t)),void 0!==r&&(n=Math.max(n,r))}n&&(t.style.height=`${n}px`,(0,f.Fk)(r))}function m(t){return"number"===t?{type:"text",inputmode:"decimal"}:"digit"===t?{type:"tel",inputmode:"numeric"}:{type:t}}function w(t){return[...t].length}function A(t,e){return[...t].slice(0,e).join("")}var x=r(6261),T=r(6591),C=r(9614),B=r(6145),F=r(5632),S=r(8139);const[I,k]=(0,i.YX)("field"),E={id:String,name:String,leftIcon:String,rightIcon:String,autofocus:Boolean,clearable:Boolean,maxlength:l.VQ,formatter:Function,clearIcon:(0,l.Ts)("clear"),modelValue:(0,l.TU)(""),inputAlign:String,placeholder:String,autocomplete:String,autocapitalize:String,autocorrect:String,errorMessage:String,enterkeyhint:String,clearTrigger:(0,l.Ts)("focus"),formatTrigger:(0,l.Ts)("onChange"),spellcheck:{type:Boolean,default:null},error:{type:Boolean,default:null},disabled:{type:Boolean,default:null},readonly:{type:Boolean,default:null}},V=(0,u.X$)({},x.yH,E,{rows:l.VQ,type:(0,l.Ts)("text"),rules:Array,autosize:[Boolean,Object],labelWidth:l.VQ,labelClass:l.E9,labelAlign:String,showWordLimit:Boolean,errorMessageAlign:String,colon:{type:Boolean,default:null}});var M=(0,o.pM)({name:I,props:V,emits:["blur","focus","clear","keypress","clickInput","endValidate","startValidate","clickLeftIcon","clickRightIcon","update:modelValue"],setup(t,{emit:e,slots:r}){const n=(0,C.B)(),i=(0,a.Kh)({status:"unvalidated",focused:!1,validateMessage:""}),l=(0,a.KR)(),x=(0,a.KR)(),I=(0,a.KR)(),{parent:E}=(0,T.cJ)(s.$i),V=()=>{var e;return String(null!=(e=t.modelValue)?e:"")},M=e=>(0,u.C8)(t[e])?t[e]:E&&(0,u.C8)(E.props[e])?E.props[e]:void 0,R=(0,o.EW)((()=>{const e=M("readonly");if(t.clearable&&!e){const e=""!==V(),r="always"===t.clearTrigger||"focus"===t.clearTrigger&&i.focused;return e&&r}return!1})),_=(0,o.EW)((()=>I.value&&r.input?I.value():t.modelValue)),z=(0,o.EW)((()=>{var e;const r=M("required");return"auto"===r?null==(e=t.rules)?void 0:e.some((t=>t.required)):r})),L=t=>t.reduce(((t,e)=>t.then((()=>{if("failed"===i.status)return;let{value:t}=_;if(e.formatter&&(t=e.formatter(t,e)),!d(t,e))return i.status="failed",void(i.validateMessage=y(t,e));if(e.validator){if(p(t)&&!1===e.validateEmpty)return;return v(t,e).then((r=>{r&&"string"===typeof r?(i.status="failed",i.validateMessage=r):!1===r&&(i.status="failed",i.validateMessage=y(t,e))}))}}))),Promise.resolve()),P=()=>{i.status="unvalidated",i.validateMessage=""},Y=()=>e("endValidate",{status:i.status,message:i.validateMessage}),O=(r=t.rules)=>new Promise((n=>{P(),r?(e("startValidate"),L(r).then((()=>{"failed"===i.status?(n({name:t.name,message:i.validateMessage}),Y()):(i.status="passed",n(),Y())}))):n()})),W=e=>{if(E&&t.rules){const{validateTrigger:r}=E.props,n=(0,u.$r)(r).includes(e),o=t.rules.filter((t=>t.trigger?(0,u.$r)(t.trigger).includes(e):n));o.length&&O(o)}},$=e=>{var r;const{maxlength:n}=t;if((0,u.C8)(n)&&w(e)>+n){const t=V();if(t&&w(t)===+n)return t;const o=null==(r=l.value)?void 0:r.selectionEnd;if(i.focused&&o){const t=[...e],r=t.length-+n;return t.splice(o-r,r),t.join("")}return A(e,+n)}return e},j=(r,n="onChange")=>{const o=r;r=$(r);const a=w(o)-w(r);if("number"===t.type||"digit"===t.type){const e="number"===t.type;r=(0,c.ZV)(r,e,e)}let s=0;if(t.formatter&&n===t.formatTrigger){const{formatter:e,maxlength:n}=t;if(r=e(r),(0,u.C8)(n)&&w(r)>+n&&(r=A(r,+n)),l.value&&i.focused){const{selectionEnd:t}=l.value,r=A(o,t);s=w(e(r))-w(r)}}if(l.value&&l.value.value!==r)if(i.focused){let{selectionStart:t,selectionEnd:e}=l.value;if(l.value.value=r,(0,u.C8)(t)&&(0,u.C8)(e)){const n=w(r);a?(t-=a,e-=a):s&&(t+=s,e+=s),l.value.setSelectionRange(Math.min(t,n),Math.min(e,n))}}else l.value.value=r;r!==t.modelValue&&e("update:modelValue",r)},D=t=>{t.target.composing||j(t.target.value)},K=()=>{var t;return null==(t=l.value)?void 0:t.blur()},X=()=>{var t;return null==(t=l.value)?void 0:t.focus()},U=()=>{const e=l.value;"textarea"===t.type&&t.autosize&&e&&b(e,t.autosize)},q=t=>{i.focused=!0,e("focus",t),(0,o.dY)(U),M("readonly")&&K()},Q=t=>{i.focused=!1,j(V(),"onBlur"),e("blur",t),M("readonly")||(W("onBlur"),(0,o.dY)(U),(0,f.B0)())},G=t=>e("clickInput",t),H=t=>e("clickLeftIcon",t),N=t=>e("clickRightIcon",t),J=t=>{(0,f.wo)(t),e("update:modelValue",""),e("clear",t)},Z=(0,o.EW)((()=>"boolean"===typeof t.error?t.error:!(!E||!E.props.showError||"failed"!==i.status)||void 0)),tt=(0,o.EW)((()=>{const t=M("labelWidth"),e=M("labelAlign");if(t&&"top"!==e)return{width:(0,c._V)(t)}})),et=r=>{const n=13;if(r.keyCode===n){const e=E&&E.props.submitOnEnter;e||"textarea"===t.type||(0,f.wo)(r),"search"===t.type&&K()}e("keypress",r)},rt=()=>t.id||`${n}-input`,nt=()=>i.status,ot=()=>{const e=k("control",[M("inputAlign"),{error:Z.value,custom:!!r.input,"min-height":"textarea"===t.type&&!t.autosize}]);if(r.input)return(0,o.bF)("div",{class:e,onClick:G},[r.input()]);const a={id:rt(),ref:l,name:t.name,rows:void 0!==t.rows?+t.rows:void 0,class:e,disabled:M("disabled"),readonly:M("readonly"),autofocus:t.autofocus,placeholder:t.placeholder,autocomplete:t.autocomplete,autocapitalize:t.autocapitalize,autocorrect:t.autocorrect,enterkeyhint:t.enterkeyhint,spellcheck:t.spellcheck,"aria-labelledby":t.label?`${n}-label`:void 0,onBlur:Q,onFocus:q,onInput:D,onClick:G,onChange:h,onKeypress:et,onCompositionend:h,onCompositionstart:g};return"textarea"===t.type?(0,o.bF)("textarea",a,null):(0,o.bF)("input",(0,o.v6)(m(t.type),a),null)},at=()=>{const e=r["left-icon"];if(t.leftIcon||e)return(0,o.bF)("div",{class:k("left-icon"),onClick:H},[e?e():(0,o.bF)(F.In,{name:t.leftIcon,classPrefix:t.iconPrefix},null)])},it=()=>{const e=r["right-icon"];if(t.rightIcon||e)return(0,o.bF)("div",{class:k("right-icon"),onClick:N},[e?e():(0,o.bF)(F.In,{name:t.rightIcon,classPrefix:t.iconPrefix},null)])},lt=()=>{if(t.showWordLimit&&t.maxlength){const e=w(V());return(0,o.bF)("div",{class:k("word-limit")},[(0,o.bF)("span",{class:k("word-num")},[e]),(0,o.eW)("/"),t.maxlength])}},ut=()=>{if(E&&!1===E.props.showErrorMessage)return;const e=t.errorMessage||i.validateMessage;if(e){const t=r["error-message"],n=M("errorMessageAlign");return(0,o.bF)("div",{class:k("error-message",n)},[t?t({message:e}):e])}},st=()=>{const e=M("labelWidth"),a=M("labelAlign"),i=M("colon")?":":"";return r.label?[r.label(),i]:t.label?(0,o.bF)("label",{id:`${n}-label`,for:r.input?void 0:rt(),onClick:t=>{(0,f.wo)(t),X()},style:"top"===a&&e?{width:(0,c._V)(e)}:void 0},[t.label+i]):void 0},ct=()=>[(0,o.bF)("div",{class:k("body")},[ot(),R.value&&(0,o.bF)(F.In,{ref:x,name:t.clearIcon,class:k("clear")},null),it(),r.button&&(0,o.bF)("div",{class:k("button")},[r.button()])]),lt(),ut()];return(0,B.c)({blur:K,focus:X,validate:O,formValue:_,resetValidation:P,getValidationStatus:nt}),(0,o.Gt)(T.f,{customValue:I,resetValidation:P,validateWithTrigger:W}),(0,o.wB)((()=>t.modelValue),(()=>{j(V()),P(),W("onChange"),(0,o.dY)(U)})),(0,o.sV)((()=>{j(V(),t.formatTrigger),(0,o.dY)(U)})),(0,T.ML)("touchstart",J,{target:(0,o.EW)((()=>{var t;return null==(t=x.value)?void 0:t.$el}))}),()=>{const e=M("disabled"),n=M("labelAlign"),a=at(),i=()=>{const t=st();return"top"===n?[a,t].filter(Boolean):t||[]};return(0,o.bF)(S.fh,{size:t.size,class:k({error:Z.value,disabled:e,[`label-${n}`]:n}),center:t.center,border:t.border,isLink:t.isLink,clickable:t.clickable,titleStyle:tt.value,valueClass:k("value"),titleClass:[k("label",[n,{required:z.value}]),t.labelClass],arrowDirection:t.arrowDirection},{icon:a&&"top"!==n?()=>a:null,title:i,value:ct,extra:r.extra})}}});const R=(0,n.G)(M)},9766:function(t,e,r){r(6647),r(7708),r(7484),r(887)},2094:function(t,e,r){r.d(e,{Rh:function(){return y}});var n=r(4726),o=r(6768),a=r(5828),i=r(6370),l=r(8442),u=r(7905);const[s,c]=(0,a.YX)("loading"),f=Array(12).fill(null).map(((t,e)=>(0,o.bF)("i",{class:c("line",String(e+1))},null))),p=(0,o.bF)("svg",{class:c("circular"),viewBox:"25 25 50 50"},[(0,o.bF)("circle",{cx:"50",cy:"50",r:"20",fill:"none"},null)]),d={size:i.VQ,type:(0,i.Ts)("circular"),color:String,vertical:Boolean,textSize:i.VQ,textColor:String};var v=(0,o.pM)({name:s,props:d,setup(t,{slots:e}){const r=(0,o.EW)((()=>(0,l.X$)({color:t.color},(0,u.vE)(t.size)))),n=()=>{const n="spinner"===t.type?f:p;return(0,o.bF)("span",{class:c("spinner",t.type),style:r.value},[e.icon?e.icon():n])},a=()=>{var r;if(e.default)return(0,o.bF)("span",{class:c("text"),style:{fontSize:(0,u._V)(t.textSize),color:null!=(r=t.textColor)?r:t.color}},[e.default()])};return()=>{const{type:e,vertical:r}=t;return(0,o.bF)("div",{class:c([e,{vertical:r}]),"aria-live":"polite","aria-busy":!0},[n(),a()])}}});const y=(0,n.G)(v)}}]); \ No newline at end of file diff --git a/web/js/239.1c6f4606.js b/web/js/239.1c6f4606.js new file mode 100644 index 0000000..63fa511 --- /dev/null +++ b/web/js/239.1c6f4606.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkset_vue"]=self["webpackChunkset_vue"]||[]).push([[239],{5239:function(e,s,l){l.r(s),l.d(s,{default:function(){return y}});var a=l(122),o=(l(9998),l(3788)),t=(l(7540),l(5050)),n=(l(9766),l(6768));const d=e=>((0,n.Qi)("data-v-4dd8be90"),e=e(),(0,n.jt)(),e),r={class:"container"},u=d((()=>(0,n.Lk)("div",{class:"welcome-wrapper"},[(0,n.Lk)("p",{class:"title"},"欢迎使用 :)")],-1))),c={class:"login-wrapper"},p=d((()=>(0,n.Lk)("p",{class:"reset-title"},"修改密码",-1))),i={class:"change_pass"},m={class:"button-group"};function w(e,s,l,d,w,v){const f=t.D0,k=o.Qh,b=a.$n;return(0,n.uX)(),(0,n.CE)("div",r,[u,(0,n.Lk)("div",c,[p,(0,n.Lk)("div",i,[(0,n.bF)(k,{inset:"",class:"custom-cell-group"},{default:(0,n.k6)((()=>[(0,n.bF)(f,{modelValue:d.password,"onUpdate:modelValue":s[0]||(s[0]=e=>d.password=e),class:"custom-field",type:"password",label:"原始密码"},null,8,["modelValue"]),(0,n.bF)(f,{modelValue:d.password1,"onUpdate:modelValue":s[1]||(s[1]=e=>d.password1=e),class:"custom-field",type:"password",label:"新密码"},null,8,["modelValue"]),(0,n.bF)(f,{modelValue:d.password2,"onUpdate:modelValue":s[2]||(s[2]=e=>d.password2=e),class:"custom-field",type:"password",label:"确认新密码"},null,8,["modelValue"])])),_:1})]),(0,n.Lk)("div",m,[(0,n.bF)(b,{type:"primary",size:"normal",class:"flex-grow",onClick:d.handleSubmit},{default:(0,n.k6)((()=>[(0,n.eW)("确认")])),_:1},8,["onClick"]),(0,n.bF)(b,{type:"primary",size:"normal",class:"flex-grow",onClick:d.handleReset},{default:(0,n.k6)((()=>[(0,n.eW)("取消")])),_:1},8,["onClick"])])])])}l(4114);var v=l(1387),f=l(144),k=(l(8628),l(4373)),b=l(1508),h=(l(3081),{setup(){const e=(0,v.rd)(),s=(0,f.KR)(""),l=(0,f.KR)(""),a=(0,f.KR)(""),o=()=>{const o=l.value.trim(),t=a.value.trim();if(!o||!t)return void(0,b.xr)("密码不能为空");if(o!==t)return void(0,b.xr)("密码不一致");const n={JSON_id:1,LPR_card:{log_in:{type:2,pass:s.value,new_pass:l.value}}};console.log(JSON.stringify(n)),k.A.post("/communication",n,{headers:{"content-type":"application/json"}}).then((s=>{(0,b.GF)("修改成功"),console.log(s.data),jsonId.value++,e.push("/")})).catch((e=>{(0,b.xr)("修改失败"),console.error(e)}))},t=()=>{e.push("/login")};return{password:s,password1:l,password2:a,handleSubmit:o,handleReset:t}}}),_=l(1241);const g=(0,_.A)(h,[["render",w],["__scopeId","data-v-4dd8be90"]]);var y=g}}]); \ No newline at end of file diff --git a/web/js/419.a70e3c85.js b/web/js/419.a70e3c85.js new file mode 100644 index 0000000..e6c0081 --- /dev/null +++ b/web/js/419.a70e3c85.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkset_vue"]=self["webpackChunkset_vue"]||[]).push([[419],{887:function(){},7265:function(){},1125:function(){},4259:function(){},2869:function(e,t,l){l.r(t),l.d(t,{default:function(){return M}});var a=l(6769),n=l(6987),i=(l(6463),l(3788)),o=(l(7540),l(8139)),r=(l(7057),l(9265)),s=(l(6647),l(4259),l(1477)),c=(l(1125),l(4726)),u=l(6768),v=l(5130),d=l(144),f=l(5828),p=l(6370),h=l(8442),b=l(6591),g=l(6145),w=l(8957),m=l(5632);const[y,F]=(0,f.YX)("notice-bar"),k={text:String,mode:String,color:String,delay:(0,p.TU)(1),speed:(0,p.TU)(60),leftIcon:String,wrapable:Boolean,background:String,scrollable:{type:Boolean,default:null}};var C=(0,u.pM)({name:y,props:k,emits:["close","replay"],setup(e,{emit:t,slots:l}){let a,n=0,i=0;const o=(0,d.KR)(),r=(0,d.KR)(),s=(0,d.Kh)({show:!0,offset:0,duration:0}),c=()=>l["left-icon"]?l["left-icon"]():e.leftIcon?(0,u.bF)(m.In,{class:F("left-icon"),name:e.leftIcon},null):void 0,f=()=>"closeable"===e.mode?"cross":"link"===e.mode?"arrow":void 0,p=l=>{"closeable"===e.mode&&(s.show=!1,t("close",l))},y=()=>{if(l["right-icon"])return l["right-icon"]();const e=f();return e?(0,u.bF)(m.In,{name:e,class:F("right-icon"),onClick:p},null):void 0},k=()=>{s.offset=n,s.duration=0,(0,b.er)((()=>{(0,b.r7)((()=>{s.offset=-i,s.duration=(i+n)/+e.speed,t("replay")}))}))},C=()=>{const t=!1===e.scrollable&&!e.wrapable,a={transform:s.offset?`translateX(${s.offset}px)`:"",transitionDuration:`${s.duration}s`};return(0,u.bF)("div",{ref:o,role:"marquee",class:F("wrap")},[(0,u.bF)("div",{ref:r,style:a,class:[F("content"),{"van-ellipsis":t}],onTransitionend:k},[l.default?l.default():e.text])])},x=()=>{const{delay:t,speed:l,scrollable:c}=e,u=(0,h.C8)(t)?1e3*+t:0;n=0,i=0,s.offset=0,s.duration=0,clearTimeout(a),a=setTimeout((()=>{if(!o.value||!r.value||!1===c)return;const e=(0,b.yD)(o).width,t=(0,b.yD)(r).width;(c||t>e)&&(0,b.r7)((()=>{n=e,i=t,s.offset=-i,s.duration=i/+l}))}),u)};return(0,w.V)(x),(0,b.kz)(x),(0,b.ML)("pageshow",x),(0,g.c)({reset:x}),(0,u.wB)((()=>[e.text,e.scrollable]),x),()=>{const{color:t,wrapable:l,background:a}=e;return(0,u.bo)((0,u.bF)("div",{role:"alert",class:F({wrapable:l}),style:{color:t,background:a}},[c(),C(),y()]),[[v.aG,s.show]])}}});const x=(0,c.G)(C);l(7708),l(7484);var R=l(4758);const S={class:"page-container"},E={class:"content"},T={class:"item-content"};function z(e,t,l,c,v,d){const f=R.A,p=x,h=s.O,b=r.Hp,g=o.fh,w=i.Qh,m=n.j5,y=a["default"];return(0,u.uX)(),(0,u.CE)("div",S,[(0,u.bF)(f,{title:c.currentTitle},null,8,["title"]),(0,u.bF)(m,{modelValue:c.loading,"onUpdate:modelValue":t[4]||(t[4]=e=>c.loading=e),onRefresh:c.onRefresh,"success-text":"刷新成功"},{default:(0,u.k6)((()=>[(0,u.Lk)("div",E,[(0,u.bF)(p,{class:"notice",scrollable:"",text:"下滑刷新页面",color:"black"}),(0,u.bF)(b,{class:"my-swipe",autoplay:3e3,"indicator-color":"white"},{default:(0,u.k6)((()=>[(0,u.bF)(h,null,{default:(0,u.k6)((()=>[(0,u.eW)("信安智能")])),_:1}),(0,u.bF)(h,null,{default:(0,u.k6)((()=>[(0,u.eW)("2")])),_:1}),(0,u.bF)(h,null,{default:(0,u.k6)((()=>[(0,u.eW)("3")])),_:1})])),_:1}),(0,u.Lk)("div",T,[(0,u.bF)(w,{inset:""},{default:(0,u.k6)((()=>[(0,u.bF)(g,{size:"large",class:"custom-cell",title:"显示设置",icon:"photo-o","is-link":"",value:"显示",onClick:t[0]||(t[0]=e=>c.navigateTo("web/screen_main.html"))}),(0,u.bF)(g,{size:"large",class:"custom-cell",title:"语音设置",icon:"volume-o","is-link":"",value:"语音",onClick:t[1]||(t[1]=e=>c.navigateTo("web/voice_set.html"))}),(0,u.bF)(g,{size:"large",class:"custom-cell",title:"车牌识别",icon:"search","is-link":"",value:"识别",onClick:t[2]||(t[2]=e=>c.goto("recognition"))}),(0,u.bF)(g,{size:"large",class:"custom-cell",title:"预警设置",icon:"warning-o","is-link":"",value:"预警",onClick:t[3]||(t[3]=e=>c.goto("warning"))})])),_:1})])])])),_:1},8,["modelValue","onRefresh"]),(0,u.bF)(y)])}l(4114);var X=l(1387),K={components:{Header:R.A,Footer:a["default"]},setup(){const e=(0,d.KR)("系统设置"),t=(0,d.KR)(!1),l=(0,X.rd)(),a=()=>{setTimeout((()=>{t.value=!1}),1e3)},n=e=>{window.location.href=e},i=e=>{l.push({name:e})};return{currentTitle:e,loading:t,onRefresh:a,navigateTo:n,goto:i}}},Y=l(1241);const B=(0,Y.A)(K,[["render",z],["__scopeId","data-v-7d98715e"]]);var M=B},3788:function(e,t,l){l.d(t,{Qh:function(){return f}});var a=l(4726),n=l(6768),i=l(5828),o=l(6370),r=l(4612),s=l(1483);const[c,u]=(0,i.YX)("cell-group"),v={title:String,inset:Boolean,border:o.Rd};var d=(0,n.pM)({name:c,inheritAttrs:!1,props:v,setup(e,{slots:t,attrs:l}){const a=()=>{var a;return(0,n.bF)("div",(0,n.v6)({class:[u({inset:e.inset}),{[r.pT]:e.border&&!e.inset}]},l,(0,s.b)()),[null==(a=t.default)?void 0:a.call(t)])},i=()=>(0,n.bF)("div",{class:u("title",{inset:e.inset})},[t.title?t.title():e.title]);return()=>e.title||t.title?(0,n.bF)(n.FK,null,[i(),a()]):a()}});const f=(0,a.G)(d)},7540:function(e,t,l){l(6647)},6261:function(e,t,l){l.d(t,{Ay:function(){return f},yH:function(){return v}});var a=l(6768),n=l(5828),i=l(6370),o=l(8442),r=l(4548),s=l(5632);const[c,u]=(0,n.YX)("cell"),v={tag:(0,i.Ts)("div"),icon:String,size:String,title:i.VQ,value:i.VQ,label:i.VQ,center:Boolean,isLink:Boolean,border:i.Rd,iconPrefix:String,valueClass:i.E9,labelClass:i.E9,titleClass:i.E9,titleStyle:null,arrowDirection:String,required:{type:[Boolean,String],default:null},clickable:{type:Boolean,default:null}},d=(0,o.X$)({},v,r.aI);var f=(0,a.pM)({name:c,props:d,setup(e,{slots:t}){const l=(0,r.lq)(),n=()=>{const l=t.label||(0,o.C8)(e.label);if(l)return(0,a.bF)("div",{class:[u("label"),e.labelClass]},[t.label?t.label():e.label])},i=()=>{var l;if(t.title||(0,o.C8)(e.title)){const i=null==(l=t.title)?void 0:l.call(t);if(Array.isArray(i)&&0===i.length)return;return(0,a.bF)("div",{class:[u("title"),e.titleClass],style:e.titleStyle},[i||(0,a.bF)("span",null,[e.title]),n()])}},c=()=>{const l=t.value||t.default,n=l||(0,o.C8)(e.value);if(n)return(0,a.bF)("div",{class:[u("value"),e.valueClass]},[l?l():(0,a.bF)("span",null,[e.value])])},v=()=>t.icon?t.icon():e.icon?(0,a.bF)(s.In,{name:e.icon,class:u("left-icon"),classPrefix:e.iconPrefix},null):void 0,d=()=>{if(t["right-icon"])return t["right-icon"]();if(e.isLink){const t=e.arrowDirection&&"right"!==e.arrowDirection?`arrow-${e.arrowDirection}`:"arrow";return(0,a.bF)(s.In,{name:t,class:u("right-icon")},null)}};return()=>{var n;const{tag:o,size:r,center:s,border:f,isLink:p,required:h}=e,b=null!=(n=e.clickable)?n:p,g={center:s,required:!!h,clickable:b,borderless:!f};return r&&(g[r]=!!r),(0,a.bF)(o,{class:u(g),role:b?"button":void 0,tabindex:b?0:void 0,onClick:l},{default:()=>{var e;return[v(),i(),c(),d(),null==(e=t.extra)?void 0:e.call(t)]}})}}})},8139:function(e,t,l){l.d(t,{fh:function(){return i}});var a=l(4726),n=l(6261);const i=(0,a.G)(n.Ay)},7057:function(e,t,l){l(6647),l(7708),l(7484),l(887)},6145:function(e,t,l){l.d(t,{c:function(){return i}});var a=l(6768),n=l(8442);function i(e){const t=(0,a.nI)();t&&(0,n.X$)(t.proxy,e)}},1483:function(e,t,l){l.d(t,{b:function(){return n}});var a=l(6768);const n=()=>{var e;const{scopeId:t}=(null==(e=(0,a.nI)())?void 0:e.vnode)||{};return t?{[t]:""}:null}},4390:function(e,t,l){l.d(t,{P:function(){return o}});var a=l(144),n=l(4612);function i(e,t){return e>t?"horizontal":t>e?"vertical":""}function o(){const e=(0,a.KR)(0),t=(0,a.KR)(0),l=(0,a.KR)(0),o=(0,a.KR)(0),r=(0,a.KR)(0),s=(0,a.KR)(0),c=(0,a.KR)(""),u=(0,a.KR)(!0),v=()=>"vertical"===c.value,d=()=>"horizontal"===c.value,f=()=>{l.value=0,o.value=0,r.value=0,s.value=0,c.value="",u.value=!0},p=l=>{f(),e.value=l.touches[0].clientX,t.value=l.touches[0].clientY},h=a=>{const v=a.touches[0];l.value=(v.clientX<0?0:v.clientX)-e.value,o.value=v.clientY-t.value,r.value=Math.abs(l.value),s.value=Math.abs(o.value);const d=10;(!c.value||r.valuen.Ez||s.value>n.Ez)&&(u.value=!1)};return{move:h,start:p,reset:f,startX:e,startY:t,deltaX:l,deltaY:o,offsetX:r,offsetY:s,direction:c,isVertical:v,isHorizontal:d,isTap:u}}},2094:function(e,t,l){l.d(t,{Rh:function(){return h}});var a=l(4726),n=l(6768),i=l(5828),o=l(6370),r=l(8442),s=l(7905);const[c,u]=(0,i.YX)("loading"),v=Array(12).fill(null).map(((e,t)=>(0,n.bF)("i",{class:u("line",String(t+1))},null))),d=(0,n.bF)("svg",{class:u("circular"),viewBox:"25 25 50 50"},[(0,n.bF)("circle",{cx:"50",cy:"50",r:"20",fill:"none"},null)]),f={size:o.VQ,type:(0,o.Ts)("circular"),color:String,vertical:Boolean,textSize:o.VQ,textColor:String};var p=(0,n.pM)({name:c,props:f,setup(e,{slots:t}){const l=(0,n.EW)((()=>(0,r.X$)({color:e.color},(0,s.vE)(e.size)))),a=()=>{const a="spinner"===e.type?v:d;return(0,n.bF)("span",{class:u("spinner",e.type),style:l.value},[t.icon?t.icon():a])},i=()=>{var l;if(t.default)return(0,n.bF)("span",{class:u("text"),style:{fontSize:(0,s._V)(e.textSize),color:null!=(l=e.textColor)?l:e.color}},[t.default()])};return()=>{const{type:t,vertical:l}=e;return(0,n.bF)("div",{class:u([t,{vertical:l}]),"aria-live":"polite","aria-busy":!0},[a(),i()])}}});const h=(0,a.G)(p)},1477:function(e,t,l){l.d(t,{O:function(){return f}});var a=l(4726),n=l(6768),i=l(144),o=l(5828),r=l(667),s=l(6591),c=l(6145);const[u,v]=(0,o.YX)("swipe-item");var d=(0,n.pM)({name:u,setup(e,{slots:t}){let l;const a=(0,i.Kh)({offset:0,inited:!1,mounted:!1}),{parent:o,index:u}=(0,s.cJ)(r.te);if(!o)return void 0;const d=(0,n.EW)((()=>{const e={},{vertical:t}=o.props;return o.size.value&&(e[t?"height":"width"]=`${o.size.value}px`),a.offset&&(e.transform=`translate${t?"Y":"X"}(${a.offset}px)`),e})),f=(0,n.EW)((()=>{const{loop:e,lazyRender:t}=o.props;if(!t||l)return!0;if(!a.mounted)return!1;const n=o.activeIndicator.value,i=o.count.value-1,r=0===n&&e?i:n-1,s=n===i&&e?0:n+1;return l=u.value===n||u.value===r||u.value===s,l})),p=e=>{a.offset=e};return(0,n.sV)((()=>{(0,n.dY)((()=>{a.mounted=!0}))})),(0,c.c)({setOffset:p}),()=>{var e;return(0,n.bF)("div",{class:v(),style:d.value},[f.value?null==(e=t.default)?void 0:e.call(t):null])}}});const f=(0,a.G)(d)},667:function(e,t,l){l.d(t,{Ay:function(){return g},te:function(){return b}});var a=l(6768),n=l(144),i=l(5828),o=l(6370),r=l(7905),s=l(240),c=l(6591),u=l(4390),v=l(6145),d=l(8957);const[f,p]=(0,i.YX)("swipe"),h={loop:o.Rd,width:o.VQ,height:o.VQ,vertical:Boolean,autoplay:(0,o.TU)(0),duration:(0,o.TU)(500),touchable:o.Rd,lazyRender:Boolean,initialSwipe:(0,o.TU)(0),indicatorColor:String,showIndicators:o.Rd,stopPropagation:o.Rd},b=Symbol(f);var g=(0,a.pM)({name:f,props:h,emits:["change","dragStart","dragEnd"],setup(e,{emit:t,slots:l}){const i=(0,n.KR)(),o=(0,n.KR)(),f=(0,n.Kh)({rect:null,width:0,height:0,offset:0,active:0,swiping:!1});let h=!1;const g=(0,u.P)(),{children:w,linkChildren:m}=(0,c.Py)(b),y=(0,a.EW)((()=>w.length)),F=(0,a.EW)((()=>f[e.vertical?"height":"width"])),k=(0,a.EW)((()=>e.vertical?g.deltaY.value:g.deltaX.value)),C=(0,a.EW)((()=>{if(f.rect){const t=e.vertical?f.rect.height:f.rect.width;return t-F.value*y.value}return 0})),x=(0,a.EW)((()=>F.value?Math.ceil(Math.abs(C.value)/F.value):y.value)),R=(0,a.EW)((()=>y.value*F.value)),S=(0,a.EW)((()=>(f.active+y.value)%y.value)),E=(0,a.EW)((()=>{const t=e.vertical?"vertical":"horizontal";return g.direction.value===t})),T=(0,a.EW)((()=>{const t={transitionDuration:`${f.swiping?0:e.duration}ms`,transform:`translate${e.vertical?"Y":"X"}(${+f.offset.toFixed(2)}px)`};if(F.value){const l=e.vertical?"height":"width",a=e.vertical?"width":"height";t[l]=`${R.value}px`,t[a]=e[a]?`${e[a]}px`:""}return t})),z=t=>{const{active:l}=f;return t?e.loop?(0,r.qE)(l+t,-1,y.value):(0,r.qE)(l+t,0,x.value):l},X=(t,l=0)=>{let a=t*F.value;e.loop||(a=Math.min(a,-C.value));let n=l-a;return e.loop||(n=(0,r.qE)(n,C.value,0)),n},K=({pace:l=0,offset:a=0,emitChange:n})=>{if(y.value<=1)return;const{active:i}=f,o=z(l),r=X(o,a);if(e.loop){if(w[0]&&r!==C.value){const e=r0;w[y.value-1].setOffset(e?-R.value:0)}}f.active=o,f.offset=r,n&&o!==i&&t("change",S.value)},Y=()=>{f.swiping=!0,f.active<=-1?K({pace:y.value}):f.active>=y.value&&K({pace:-y.value})},B=()=>{Y(),g.reset(),(0,c.r7)((()=>{f.swiping=!1,K({pace:-1,emitChange:!0})}))},M=()=>{Y(),g.reset(),(0,c.r7)((()=>{f.swiping=!1,K({pace:1,emitChange:!0})}))};let I;const V=()=>clearTimeout(I),W=()=>{V(),+e.autoplay>0&&y.value>1&&(I=setTimeout((()=>{M(),W()}),+e.autoplay))},$=(t=+e.initialSwipe)=>{if(!i.value)return;const l=()=>{var l,a;if(!(0,s.dK)(i)){const t={width:i.value.offsetWidth,height:i.value.offsetHeight};f.rect=t,f.width=+(null!=(l=e.width)?l:t.width),f.height=+(null!=(a=e.height)?a:t.height)}y.value&&(t=Math.min(y.value-1,t),-1===t&&(t=y.value-1)),f.active=t,f.swiping=!0,f.offset=X(t),w.forEach((e=>{e.setOffset(0)})),W()};(0,s.dK)(i)?(0,a.dY)().then(l):l()},_=()=>$(f.active);let A;const D=t=>{!e.touchable||t.touches.length>1||(g.start(t),h=!1,A=Date.now(),V(),Y())},P=l=>{if(e.touchable&&f.swiping&&(g.move(l),E.value)){const a=!e.loop&&(0===f.active&&k.value>0||f.active===y.value-1&&k.value<0);a||((0,s.wo)(l,e.stopPropagation),K({offset:k.value}),h||(t("dragStart",{index:S.value}),h=!0))}},Q=()=>{if(!e.touchable||!f.swiping)return;const l=Date.now()-A,a=k.value/l,n=Math.abs(a)>.25||Math.abs(k.value)>F.value/2;if(n&&E.value){const t=e.vertical?g.offsetY.value:g.offsetX.value;let l=0;l=e.loop?t>0?k.value>0?-1:1:0:-Math[k.value>0?"ceil":"floor"](k.value/F.value),K({pace:l,emitChange:!0})}else k.value&&K({pace:0});h=!1,f.swiping=!1,t("dragEnd",{index:S.value}),W()},q=(t,l={})=>{Y(),g.reset(),(0,c.r7)((()=>{let a;a=e.loop&&t===y.value?0===f.active?0:t:t%y.value,l.immediate?(0,c.r7)((()=>{f.swiping=!1})):f.swiping=!1,K({pace:a-f.active,emitChange:!0})}))},G=(t,l)=>{const n=l===S.value,i=n?{backgroundColor:e.indicatorColor}:void 0;return(0,a.bF)("i",{style:i,class:p("indicator",{active:n})},null)},L=()=>l.indicator?l.indicator({active:S.value,total:y.value}):e.showIndicators&&y.value>1?(0,a.bF)("div",{class:p("indicators",{vertical:e.vertical})},[Array(y.value).fill("").map(G)]):void 0;return(0,v.c)({prev:B,next:M,state:f,resize:_,swipeTo:q}),m({size:F,props:e,count:y,activeIndicator:S}),(0,a.wB)((()=>e.initialSwipe),(e=>$(+e))),(0,a.wB)(y,(()=>$(f.active))),(0,a.wB)((()=>e.autoplay),W),(0,a.wB)([s.Xw,s.C7,()=>e.width,()=>e.height],_),(0,a.wB)((0,c.TU)(),(e=>{"visible"===e?W():V()})),(0,a.sV)($),(0,a.n)((()=>$(f.active))),(0,d.V)((()=>$(f.active))),(0,a.Y4)(V),(0,a.xo)(V),(0,c.ML)("touchmove",P,{target:o}),()=>{var t;return(0,a.bF)("div",{ref:i,class:p()},[(0,a.bF)("div",{ref:o,style:T.value,class:p("track",{vertical:e.vertical}),onTouchstartPassive:D,onTouchend:Q,onTouchcancel:Q},[null==(t=l.default)?void 0:t.call(l)]),L()])}}})},9265:function(e,t,l){l.d(t,{Hp:function(){return i}});var a=l(4726),n=l(667);const i=(0,a.G)(n.Ay)}}]); \ No newline at end of file diff --git a/web/js/506.70402c53.js b/web/js/506.70402c53.js new file mode 100644 index 0000000..036264f --- /dev/null +++ b/web/js/506.70402c53.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkset_vue"]=self["webpackChunkset_vue"]||[]).push([[506],{6769:function(e,t,a){a.r(t),a.d(t,{default:function(){return $}});var n=a(4726),l=a(6768),o=a(144),s=a(5828),i=a(6370),r=a(7905),c=a(4612),u=a(9725),d=a(6591),f=a(4397);const[v,h]=(0,s.YX)("tabbar"),p={route:Boolean,fixed:i.Rd,border:i.Rd,zIndex:i.VQ,placeholder:Boolean,activeColor:String,beforeChange:Function,inactiveColor:String,modelValue:(0,i.TU)(0),safeAreaInsetBottom:{type:Boolean,default:null}},g=Symbol(v);var b=(0,l.pM)({name:v,props:p,emits:["change","update:modelValue"],setup(e,{emit:t,slots:a}){const n=(0,o.KR)(),{linkChildren:s}=(0,d.Py)(g),i=(0,f.h)(n,h),v=()=>{var t;return null!=(t=e.safeAreaInsetBottom)?t:e.fixed},p=()=>{var t;const{fixed:o,zIndex:s,border:i}=e;return(0,l.bF)("div",{ref:n,role:"tablist",style:(0,r.AO)(s),class:[h({fixed:o}),{[c.pT]:i,"van-safe-area-bottom":v()}]},[null==(t=a.default)?void 0:t.call(a)])},b=(a,n)=>{(0,u.m)(e.beforeChange,{args:[a],done(){t("update:modelValue",a),t("change",a),n()}})};return s({props:e,setActive:b}),()=>e.fixed&&e.placeholder?i(p):p()}});const m=(0,n.G)(b);a(6647);var x=a(8442),T=a(4548),F=a(5632),k=a(3408);const[D,C]=(0,s.YX)("tabbar-item"),V=(0,x.X$)({},T.aI,{dot:Boolean,icon:String,name:i.VQ,badge:i.VQ,badgeProps:Object,iconPrefix:String});var B=(0,l.pM)({name:D,props:V,emits:["click"],setup(e,{emit:t,slots:a}){const n=(0,T.lq)(),o=(0,l.nI)().proxy,{parent:s,index:i}=(0,d.cJ)(g);if(!s)return void 0;const r=(0,l.EW)((()=>{var t;const{route:a,modelValue:n}=s.props;if(a&&"$route"in o){const{$route:t}=o,{to:a}=e,n=(0,x.Gv)(a)?a:{path:a};return!!t.matched.find((e=>{const t="path"in n&&n.path===e.path,a="name"in n&&n.name===e.name;return t||a}))}return(null!=(t=e.name)?t:i.value)===n})),c=a=>{var l;r.value||s.setActive(null!=(l=e.name)?l:i.value,n),t("click",a)},u=()=>a.icon?a.icon({active:r.value}):e.icon?(0,l.bF)(F.In,{name:e.icon,classPrefix:e.iconPrefix},null):void 0;return()=>{var t;const{dot:n,badge:o}=e,{activeColor:i,inactiveColor:d}=s.props,f=r.value?i:d;return(0,l.bF)("div",{role:"tab",class:C({active:r.value}),style:{color:f},tabindex:0,"aria-selected":r.value,onClick:c},[(0,l.bF)(k.Ex,(0,l.v6)({dot:n,class:C("icon"),content:o},e.badgeProps),{default:u}),(0,l.bF)("div",{class:C("text")},[null==(t=a.default)?void 0:t.call(a,{active:r.value})])])}}});const A=(0,n.G)(B);a(7708),a(7484);const I={class:"footer"};function R(e,t,a,n,o,s){const i=(0,l.g2)("router-view"),r=A,c=m;return(0,l.uX)(),(0,l.CE)("div",I,[(0,l.bF)(i),(0,l.bF)(c,{modelValue:n.active,"onUpdate:modelValue":t[0]||(t[0]=e=>n.active=e),onChange:n.onChange},{default:(0,l.k6)((()=>[(0,l.bF)(r,{icon:"home-o",name:"home"},{default:(0,l.k6)((()=>[(0,l.eW)("系统设置")])),_:1}),(0,l.bF)(r,{icon:"setting-o",name:"info"},{default:(0,l.k6)((()=>[(0,l.eW)("系统信息")])),_:1})])),_:1},8,["modelValue","onChange"])])}a(4114);var S=a(1387),w={setup(){const e=(0,o.KR)("home"),t=(0,S.rd)(),a=(0,S.lq)(),n=e=>{t.push({name:e})};return(0,l.nT)((()=>{e.value=a.name})),{active:e,onChange:n}}},y=a(1241);const Y=(0,y.A)(w,[["render",R]]);var $=Y},4758:function(e,t,a){a.d(t,{A:function(){return k}});var n=a(4726),l=a(6768),o=a(144),s=a(5828),i=a(6370),r=a(7905),c=a(4612),u=a(4397),d=a(5632);const[f,v]=(0,s.YX)("nav-bar"),h={title:String,fixed:Boolean,zIndex:i.VQ,border:i.Rd,leftText:String,rightText:String,leftDisabled:Boolean,rightDisabled:Boolean,leftArrow:Boolean,placeholder:Boolean,safeAreaInsetTop:Boolean,clickable:i.Rd};var p=(0,l.pM)({name:f,props:h,emits:["clickLeft","clickRight"],setup(e,{emit:t,slots:a}){const n=(0,o.KR)(),s=(0,u.h)(n,v),i=a=>{e.leftDisabled||t("clickLeft",a)},f=a=>{e.rightDisabled||t("clickRight",a)},h=()=>a.left?a.left():[e.leftArrow&&(0,l.bF)(d.In,{class:v("arrow"),name:"arrow-left"},null),e.leftText&&(0,l.bF)("span",{class:v("text")},[e.leftText])],p=()=>a.right?a.right():(0,l.bF)("span",{class:v("text")},[e.rightText]),g=()=>{const{title:t,fixed:o,border:s,zIndex:u}=e,d=(0,r.AO)(u),g=e.leftArrow||e.leftText||a.left,b=e.rightText||a.right;return(0,l.bF)("div",{ref:n,style:d,class:[v({fixed:o}),{[c.n_]:s,"van-safe-area-top":e.safeAreaInsetTop}]},[(0,l.bF)("div",{class:v("content")},[g&&(0,l.bF)("div",{class:[v("left",{disabled:e.leftDisabled}),e.clickable&&!e.leftDisabled?c.Dk:""],onClick:i},[h()]),(0,l.bF)("div",{class:[v("title"),"van-ellipsis"]},[a.title?a.title():t]),b&&(0,l.bF)("div",{class:[v("right",{disabled:e.rightDisabled}),e.clickable&&!e.rightDisabled?c.Dk:""],onClick:f},[p()])])])};return()=>e.fixed&&e.placeholder?s(g):g()}});const g=(0,n.G)(p);a(6647),a(7708),a(7484);const b={class:"custom-nav-bar"};function m(e,t,a,n,o,s){const i=g;return(0,l.uX)(),(0,l.CE)("div",b,[(0,l.bF)(i,{title:a.title},null,8,["title"])])}var x={name:"Header",props:{title:{type:String,default:"标题"}}},T=a(1241);const F=(0,T.A)(x,[["render",m],["__scopeId","data-v-fc10581e"]]);var k=F},4397:function(e,t,a){a.d(t,{h:function(){return c}});var n=a(6768),l=a(6591),o=a(144),s=a(240),i=a(8957);const r=(e,t)=>{const a=(0,o.KR)(),r=()=>{a.value=(0,l.yD)(e).height};return(0,n.sV)((()=>{if((0,n.dY)(r),t)for(let e=1;e<=3;e++)setTimeout(r,100*e)})),(0,i.V)((()=>(0,n.dY)(r))),(0,n.wB)([s.Xw,s.C7],r),a};function c(e,t){const a=r(e,!0);return e=>(0,n.bF)("div",{class:t("placeholder"),style:{height:a.value?`${a.value}px`:void 0}},[e()])}},6987:function(e,t,a){a.d(t,{j5:function(){return x}});var n=a(4726),l=(a(4114),a(6768)),o=a(144),s=a(5828),i=a(6370),r=a(240),c=a(6591),u=a(4390),d=a(2094);const[f,v,h]=(0,s.YX)("pull-refresh"),p=50,g=["pulling","loosing","success"],b={disabled:Boolean,modelValue:Boolean,headHeight:(0,i.TU)(p),successText:String,pullingText:String,loosingText:String,loadingText:String,pullDistance:i.VQ,successDuration:(0,i.TU)(500),animationDuration:(0,i.TU)(300)};var m=(0,l.pM)({name:f,props:b,emits:["change","refresh","update:modelValue"],setup(e,{emit:t,slots:a}){let n;const s=(0,o.KR)(),i=(0,o.KR)(),f=(0,c.f$)(s),b=(0,o.Kh)({status:"normal",distance:0,duration:0}),m=(0,u.P)(),x=()=>{if(e.headHeight!==p)return{height:`${e.headHeight}px`}},T=()=>"loading"!==b.status&&"success"!==b.status&&!e.disabled,F=t=>{const a=+(e.pullDistance||e.headHeight);return t>a&&(t=t<2*a?a+(t-a)/2:1.5*a+(t-2*a)/4),Math.round(t)},k=(a,n)=>{const l=+(e.pullDistance||e.headHeight);b.distance=a,b.status=n?"loading":0===a?"normal":a{const{status:t}=b;return"normal"===t?"":e[`${t}Text`]||h(t)},C=()=>{const{status:e,distance:t}=b;if(a[e])return a[e]({distance:t});const n=[];return g.includes(e)&&n.push((0,l.bF)("div",{class:v("text")},[D()])),"loading"===e&&n.push((0,l.bF)(d.Rh,{class:v("loading")},{default:D})),n},V=()=>{b.status="success",setTimeout((()=>{k(0)}),+e.successDuration)},B=e=>{n=0===(0,r.hY)(f.value),n&&(b.duration=0,m.start(e))},A=e=>{T()&&B(e)},I=e=>{if(T()){n||B(e);const{deltaY:t}=m;m.move(e),n&&t.value>=0&&m.isVertical()&&((0,r.wo)(e),k(F(t.value)))}},R=()=>{n&&m.deltaY.value&&T()&&(b.duration=+e.animationDuration,"loosing"===b.status?(k(+e.headHeight,!0),t("update:modelValue",!0),(0,l.dY)((()=>t("refresh")))):k(0))};return(0,l.wB)((()=>e.modelValue),(t=>{b.duration=+e.animationDuration,t?k(+e.headHeight,!0):a.success||e.successText?V():k(0,!1)})),(0,c.ML)("touchmove",I,{target:i}),()=>{var e;const t={transitionDuration:`${b.duration}ms`,transform:b.distance?`translate3d(0,${b.distance}px, 0)`:""};return(0,l.bF)("div",{ref:s,class:v()},[(0,l.bF)("div",{ref:i,class:v("track"),style:t,onTouchstartPassive:A,onTouchend:R,onTouchcancel:R},[(0,l.bF)("div",{class:v("head"),style:x()},[C()]),null==(e=a.default)?void 0:e.call(a)])])}}});const x=(0,n.G)(m)},6463:function(e,t,a){a(6647),a(7265)}}]); \ No newline at end of file diff --git a/web/js/619.a1ca49f9.js b/web/js/619.a1ca49f9.js new file mode 100644 index 0000000..4340aea --- /dev/null +++ b/web/js/619.a1ca49f9.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkset_vue"]=self["webpackChunkset_vue"]||[]).push([[619],{1125:function(){},4259:function(){},696:function(e,t,l){l.r(t),l.d(t,{default:function(){return Ut}});var o=l(6769),n=l(6987),a=(l(6463),l(4726)),i=l(6768),r=l(144),s=l(5828),u=l(6370),c=l(8442),d=l(240),v=l(7905),p=l(9725),m=l(6591),h=l(4390),f=l(6145);const[b,g]=(0,s.YX)("swipe-cell"),w={name:(0,u.TU)(""),disabled:Boolean,leftWidth:u.VQ,rightWidth:u.VQ,beforeClose:Function,stopPropagation:Boolean};var k=(0,i.pM)({name:b,props:w,emits:["open","close","click"],setup(e,{emit:t,slots:l}){let o,n,a,s;const u=(0,r.KR)(),b=(0,r.KR)(),w=(0,r.KR)(),k=(0,r.Kh)({offset:0,dragging:!1}),y=(0,h.P)(),C=e=>e.value?(0,m.yD)(e).width:0,V=(0,i.EW)((()=>(0,c.C8)(e.leftWidth)?+e.leftWidth:C(b))),x=(0,i.EW)((()=>(0,c.C8)(e.rightWidth)?+e.rightWidth:C(w))),F=l=>{k.offset="left"===l?V.value:-x.value,o||(o=!0,t("open",{name:e.name,position:l}))},S=l=>{k.offset=0,o&&(o=!1,t("close",{name:e.name,position:l}))},R=e=>{const t=Math.abs(k.offset),l=.15,n=o?1-l:l,a="left"===e?V.value:x.value;a&&t>a*n?F(e):S(e)},T=t=>{e.disabled||(a=k.offset,y.start(t))},_=t=>{if(e.disabled)return;const{deltaX:l}=y;if(y.move(t),y.isHorizontal()){n=!0,k.dragging=!0;const i=!o||l.value*a<0;i&&(0,d.wo)(t,e.stopPropagation),k.offset=(0,v.qE)(l.value+a,-x.value,V.value)}},I=()=>{k.dragging&&(k.dragging=!1,R(k.offset>0?"left":"right"),setTimeout((()=>{n=!1}),0))},B=(l="outside")=>{s||(t("click",l),o&&!n&&(s=!0,(0,p.m)(e.beforeClose,{args:[{name:e.name,position:l}],done:()=>{s=!1,S(l)},canceled:()=>s=!1,error:()=>s=!1})))},P=(e,t)=>l=>{t&&l.stopPropagation(),B(e)},E=(e,t)=>{const o=l[e];if(o)return(0,i.bF)("div",{ref:t,class:g(e),onClick:P(e,!0)},[o()])};return(0,f.c)({open:F,close:S}),(0,m.W3)(u,(()=>B("outside")),{eventName:"touchstart"}),(0,m.ML)("touchmove",_,{target:u}),()=>{var e;const t={transform:`translate3d(${k.offset}px, 0, 0)`,transitionDuration:k.dragging?"0s":".6s"};return(0,i.bF)("div",{ref:u,class:g(),onClick:P("cell",n),onTouchstartPassive:T,onTouchend:I,onTouchcancel:I},[(0,i.bF)("div",{class:g("wrapper"),style:t},[E("left",b),null==(e=l.default)?void 0:e.call(l),E("right",w)])])}}});const y=(0,a.G)(k);l(6647);var C=l(5632),V=(l(7708),l(7484),l(122)),x=(l(9998),l(3064)),F=(l(269),l(4371),l(4612));l(4114);const[S,R,T]=(0,s.YX)("picker"),_=e=>e.find((e=>!e.disabled))||e[0];function I(e,t){const l=e[0];if(l){if(Array.isArray(l))return"multiple";if(t.children in l)return"cascade"}return"default"}function B(e,t){t=(0,v.qE)(t,0,e.length);for(let l=t;l=0;l--)if(!e[l].disabled)return l;return 0}const P=(e,t,l)=>void 0!==t&&!!e.find((e=>e[l.value]===t));function E(e,t,l){const o=e.findIndex((e=>e[l.value]===t)),n=B(e,o);return e[n]}function U(e,t,l){const o=[];let n={[t.children]:e},a=0;while(n&&n[t.children]){const e=n[t.children],i=l.value[a];if(n=(0,c.C8)(i)?E(e,i,t):void 0,!n&&e.length){const l=_(e)[t.value];n=E(e,l,t)}a++,o.push(e)}return o}function K(e){const{transform:t}=window.getComputedStyle(e),l=t.slice(7,t.length-1).split(", ")[5];return Number(l)}function O(e){return(0,c.X$)({text:"text",value:"value",children:"children"},e)}var W=l(2094);const $=200,M=300,L=15,[N,X]=(0,s.YX)("picker-column"),z=Symbol(N);var Y=(0,i.pM)({name:N,props:{value:u.VQ,fields:(0,u.$g)(Object),options:(0,u.zj)(),readonly:Boolean,allowHtml:Boolean,optionHeight:(0,u.$g)(Number),swipeDuration:(0,u.$g)(u.VQ),visibleOptionNum:(0,u.$g)(u.VQ)},emits:["change","clickOption","scrollInto"],setup(e,{emit:t,slots:l}){let o,n,a,s,u;const c=(0,r.KR)(),p=(0,r.KR)(),b=(0,r.KR)(0),g=(0,r.KR)(0),w=(0,h.P)(),k=()=>e.options.length,y=()=>e.optionHeight*(+e.visibleOptionNum-1)/2,C=l=>{let n=B(e.options,l);const a=-n*e.optionHeight,i=()=>{n>k()-1&&(n=B(e.options,l));const o=e.options[n][e.fields.value];o!==e.value&&t("change",o)};o&&a!==b.value?u=i:i(),b.value=a},V=()=>e.readonly||!e.options.length,x=l=>{o||V()||(u=null,g.value=$,C(l),t("clickOption",e.options[l]))},F=t=>(0,v.qE)(Math.round(-t/e.optionHeight),0,k()-1),S=(0,i.EW)((()=>F(b.value))),R=(t,l)=>{const o=Math.abs(t/l);t=b.value+o/.003*(t<0?-1:1);const n=F(t);g.value=+e.swipeDuration,C(n)},T=()=>{o=!1,g.value=0,u&&(u(),u=null)},_=e=>{if(!V()){if(w.start(e),o){const e=K(p.value);b.value=Math.min(0,e-y())}g.value=0,n=b.value,a=Date.now(),s=n,u=null}},I=l=>{if(V())return;w.move(l),w.isVertical()&&(o=!0,(0,d.wo)(l,!0));const i=(0,v.qE)(n+w.deltaY.value,-k()*e.optionHeight,e.optionHeight),r=F(i);r!==S.value&&t("scrollInto",e.options[r]),b.value=i;const u=Date.now();u-a>M&&(a=u,s=i)},P=()=>{if(V())return;const e=b.value-s,t=Date.now()-a,l=tL;if(l)return void R(e,t);const n=F(b.value);g.value=$,C(n),setTimeout((()=>{o=!1}),0)},E=()=>{const t={height:`${e.optionHeight}px`};return e.options.map(((o,n)=>{const a=o[e.fields.text],{disabled:r}=o,s=o[e.fields.value],u={role:"button",style:t,tabindex:r?-1:0,class:[X("item",{disabled:r,selected:s===e.value}),o.className],onClick:()=>x(n)},c={class:"van-ellipsis",[e.allowHtml?"innerHTML":"textContent"]:a};return(0,i.bF)("li",u,[l.option?l.option(o,n):(0,i.bF)("div",c,null)])}))};return(0,m.cJ)(z),(0,f.c)({stopMomentum:T}),(0,i.nT)((()=>{const t=o?Math.floor(-b.value/e.optionHeight):e.options.findIndex((t=>t[e.fields.value]===e.value)),l=B(e.options,t),n=-l*e.optionHeight;o&&l(0,i.bF)("div",{ref:c,class:X(),onTouchstartPassive:_,onTouchend:P,onTouchcancel:P},[(0,i.bF)("ul",{ref:p,style:{transform:`translate3d(0, ${b.value+y()}px, 0)`,transitionDuration:`${g.value}ms`,transitionProperty:g.value?"all":"none"},class:X("wrapper"),onTransitionend:T},[E()])])}});const[D]=(0,s.YX)("picker-toolbar"),H={title:String,cancelButtonText:String,confirmButtonText:String},A=["cancel","confirm","title","toolbar"],Q=Object.keys(H);var j=(0,i.pM)({name:D,props:H,emits:["confirm","cancel"],setup(e,{emit:t,slots:l}){const o=()=>l.title?l.title():e.title?(0,i.bF)("div",{class:[R("title"),"van-ellipsis"]},[e.title]):void 0,n=()=>t("cancel"),a=()=>t("confirm"),r=()=>{var t;const o=null!=(t=e.cancelButtonText)?t:T("cancel");if(l.cancel||o)return(0,i.bF)("button",{type:"button",class:[R("cancel"),F.Dk],onClick:n},[l.cancel?l.cancel():o])},s=()=>{var t;const o=null!=(t=e.confirmButtonText)?t:T("confirm");if(l.confirm||o)return(0,i.bF)("button",{type:"button",class:[R("confirm"),F.Dk],onClick:a},[l.confirm?l.confirm():o])};return()=>(0,i.bF)("div",{class:R("toolbar")},[l.toolbar?l.toolbar():[r(),o(),s()]])}});const G=(e,t)=>{const l=(0,r.KR)(e());return(0,i.wB)(e,(e=>{e!==l.value&&(l.value=e)})),(0,i.wB)(l,(l=>{l!==e()&&t(l)})),l};var q=l(5130),J=l(4232);function Z(e,t,l){let o,n=0;const a=e.scrollLeft,i=0===l?1:Math.round(1e3*l/16);function r(){(0,m.SA)(o)}function s(){e.scrollLeft+=(t-a)/i,++nt||!i&&at?n=(0,m.er)(c):o&&(n=(0,m.er)(o))}return c(),u}var te=l(9614),le=l(4548);function oe(){const e=(0,r.KR)([]),t=[];(0,i.Ic)((()=>{e.value=[]}));const l=l=>(t[l]||(t[l]=t=>{e.value[l]=t}),t[l]);return[e,l]}var ne=l(8957);function ae(e,t){if(!c.M||!window.IntersectionObserver)return;const l=new IntersectionObserver((e=>{t(e[0].intersectionRatio>0)}),{root:document.body}),o=()=>{e.value&&l.observe(e.value)},n=()=>{e.value&&l.unobserve(e.value)};(0,i.Y4)(n),(0,i.xo)(n),(0,m.kz)(o)}const[ie,re]=(0,s.YX)("sticky"),se={zIndex:u.VQ,position:(0,u.Ts)("top"),container:Object,offsetTop:(0,u.TU)(0),offsetBottom:(0,u.TU)(0)};var ue=(0,i.pM)({name:ie,props:se,emits:["scroll","change"],setup(e,{emit:t,slots:l}){const o=(0,r.KR)(),n=(0,m.f$)(o),a=(0,r.Kh)({fixed:!1,width:0,height:0,transform:0}),s=(0,r.KR)(!1),u=(0,i.EW)((()=>(0,v.S7)("top"===e.position?e.offsetTop:e.offsetBottom))),p=(0,i.EW)((()=>{if(s.value)return;const{fixed:e,height:t,width:l}=a;return e?{width:`${l}px`,height:`${t}px`}:void 0})),h=(0,i.EW)((()=>{if(!a.fixed||s.value)return;const t=(0,c.X$)((0,v.AO)(e.zIndex),{width:`${a.width}px`,height:`${a.height}px`,[e.position]:`${u.value}px`});return a.transform&&(t.transform=`translate3d(0, ${a.transform}px, 0)`),t})),f=e=>t("scroll",{scrollTop:e,isFixed:a.fixed}),b=()=>{if(!o.value||(0,d.dK)(o))return;const{container:t,position:l}=e,n=(0,m.yD)(o),i=(0,d.hY)(window);if(a.width=n.width,a.height=n.height,"top"===l)if(t){const e=(0,m.yD)(t),l=e.bottom-u.value-a.height;a.fixed=u.value>n.top&&e.bottom>0,a.transform=l<0?l:0}else a.fixed=u.value>n.top;else{const{clientHeight:e}=document.documentElement;if(t){const l=(0,m.yD)(t),o=e-l.top-u.value-a.height;a.fixed=e-u.valuel.top,a.transform=o<0?-o:0}else a.fixed=e-u.valuea.fixed),(e=>t("change",e))),(0,m.ML)("scroll",b,{target:n,passive:!0}),ae(o,b),(0,i.wB)([d.Xw,d.C7],(()=>{o.value&&!(0,d.dK)(o)&&a.fixed&&(s.value=!0,(0,i.dY)((()=>{const e=(0,m.yD)(o);a.width=e.width,a.height=e.height,s.value=!1})))})),()=>{var e;return(0,i.bF)("div",{ref:o,style:p.value},[(0,i.bF)("div",{class:re({fixed:a.fixed&&!s.value}),style:h.value},[null==(e=l.default)?void 0:e.call(l)])])}}});const ce=(0,a.G)(ue);var de=l(9265);const[ve,pe]=(0,s.YX)("tabs");var me=(0,i.pM)({name:ve,props:{count:(0,u.$g)(Number),inited:Boolean,animated:Boolean,duration:(0,u.$g)(u.VQ),swipeable:Boolean,lazyRender:Boolean,currentIndex:(0,u.$g)(Number)},emits:["change"],setup(e,{emit:t,slots:l}){const o=(0,r.KR)(),n=e=>t("change",e),a=()=>{var t;const a=null==(t=l.default)?void 0:t.call(l);return e.animated||e.swipeable?(0,i.bF)(de.Hp,{ref:o,loop:!1,class:pe("track"),duration:1e3*+e.duration,touchable:e.swipeable,lazyRender:e.lazyRender,showIndicators:!1,onChange:n},{default:()=>[a]}):a},s=t=>{const l=o.value;l&&l.state.active!==t&&l.swipeTo(t,{immediate:!e.inited})};return(0,i.wB)((()=>e.currentIndex),s),(0,i.sV)((()=>{s(e.currentIndex)})),(0,f.c)({swipeRef:o}),()=>(0,i.bF)("div",{class:pe("content",{animated:e.animated||e.swipeable})},[a()])}});const[he,fe]=(0,s.YX)("tabs"),be={type:(0,u.Ts)("line"),color:String,border:Boolean,sticky:Boolean,shrink:Boolean,active:(0,u.TU)(0),duration:(0,u.TU)(.3),animated:Boolean,ellipsis:u.Rd,swipeable:Boolean,scrollspy:Boolean,offsetTop:(0,u.TU)(0),background:String,lazyRender:u.Rd,showHeader:u.Rd,lineWidth:u.VQ,lineHeight:u.VQ,beforeChange:Function,swipeThreshold:(0,u.TU)(5),titleActiveColor:String,titleInactiveColor:String},ge=Symbol(he);var we=(0,i.pM)({name:he,props:be,emits:["change","scroll","rendered","clickTab","update:active"],setup(e,{emit:t,slots:l}){let o,n,a,s,u;const h=(0,r.KR)(),b=(0,r.KR)(),g=(0,r.KR)(),w=(0,r.KR)(),k=(0,te.B)(),y=(0,m.f$)(h),[C,V]=oe(),{children:x,linkChildren:S}=(0,m.Py)(ge),R=(0,r.Kh)({inited:!1,position:"",lineStyle:{},currentIndex:-1}),T=(0,i.EW)((()=>x.length>+e.swipeThreshold||!e.ellipsis||e.shrink)),_=(0,i.EW)((()=>({borderColor:e.color,background:e.background}))),I=(e,t)=>{var l;return null!=(l=e.name)?l:t},B=(0,i.EW)((()=>{const e=x[R.currentIndex];if(e)return I(e,R.currentIndex)})),P=(0,i.EW)((()=>(0,v.S7)(e.offsetTop))),E=(0,i.EW)((()=>e.sticky?P.value+o:0)),U=t=>{const l=b.value,o=C.value;if(!T.value||!l||!o||!o[R.currentIndex])return;const n=o[R.currentIndex].$el,a=n.offsetLeft-(l.offsetWidth-n.offsetWidth)/2;s&&s(),s=Z(l,a,t?0:+e.duration)},K=()=>{const t=R.inited;(0,i.dY)((()=>{const l=C.value;if(!l||!l[R.currentIndex]||"line"!==e.type||(0,d.dK)(h.value))return;const o=l[R.currentIndex].$el,{lineWidth:n,lineHeight:a}=e,i=o.offsetLeft+o.offsetWidth/2,r={width:(0,v._V)(n),backgroundColor:e.color,transform:`translateX(${i}px) translateX(-50%)`};if(t&&(r.transitionDuration=`${e.duration}s`),(0,c.C8)(a)){const e=(0,v._V)(a);r.height=e,r.borderRadius=e}R.lineStyle=r}))},O=e=>{const t=e=0&&e{const n=O(l);if(!(0,c.C8)(n))return;const i=x[n],r=I(i,n),s=null!==R.currentIndex;R.currentIndex!==n&&(R.currentIndex=n,o||U(),K()),r!==e.active&&(t("update:active",r),s&&t("change",r,i.title)),a&&!e.scrollspy&&(0,d.Fk)(Math.ceil((0,d.mk)(h.value)-P.value))},$=(e,t)=>{const l=x.find(((t,l)=>I(t,l)===e)),o=l?x.indexOf(l):0;W(o,t)},M=(t=!1)=>{if(e.scrollspy){const l=x[R.currentIndex].$el;if(l&&y.value){const o=(0,d.mk)(l,y.value)-E.value;n=!0,u&&u(),u=ee(y.value,o,t?0:+e.duration,(()=>{n=!1}))}}},L=(l,o,n)=>{const{title:a,disabled:i}=x[o],r=I(x[o],o);i||((0,p.m)(e.beforeChange,{args:[r],done:()=>{W(o),M()}}),(0,le.wE)(l)),t("clickTab",{name:r,title:a,event:n,disabled:i})},N=e=>{a=e.isFixed,t("scroll",e)},X=e=>{(0,i.dY)((()=>{$(e),M(!0)}))},z=()=>{for(let e=0;eE.value)return 0===e?0:e-1}return x.length-1},Y=()=>{if(e.scrollspy&&!n){const e=z();W(e)}},D=()=>{if("line"===e.type&&x.length)return(0,i.bF)("div",{class:fe("line"),style:R.lineStyle},null)},H=()=>{var t,o,n;const{type:a,border:r,sticky:s}=e,u=[(0,i.bF)("div",{ref:s?void 0:g,class:[fe("wrap"),{[F.pT]:"line"===a&&r}]},[(0,i.bF)("div",{ref:b,role:"tablist",class:fe("nav",[a,{shrink:e.shrink,complete:T.value}]),style:_.value,"aria-orientation":"horizontal"},[null==(t=l["nav-left"])?void 0:t.call(l),x.map((e=>e.renderTitle(L))),D(),null==(o=l["nav-right"])?void 0:o.call(l)])]),null==(n=l["nav-bottom"])?void 0:n.call(l)];return s?(0,i.bF)("div",{ref:g},[u]):u},A=()=>{K(),(0,i.dY)((()=>{var e,t;U(!0),null==(t=null==(e=w.value)?void 0:e.swipeRef.value)||t.resize()}))};(0,i.wB)((()=>[e.color,e.duration,e.lineWidth,e.lineHeight]),K),(0,i.wB)(d.Xw,A),(0,i.wB)((()=>e.active),(e=>{e!==B.value&&$(e)})),(0,i.wB)((()=>x.length),(()=>{R.inited&&($(e.active),K(),(0,i.dY)((()=>{U(!0)})))}));const Q=()=>{$(e.active,!0),(0,i.dY)((()=>{R.inited=!0,g.value&&(o=(0,m.yD)(g.value).height),U(!0)}))},j=(e,l)=>t("rendered",e,l);return(0,f.c)({resize:A,scrollTo:X}),(0,i.n)(K),(0,ne.V)(K),(0,m.kz)(Q),ae(h,K),(0,m.ML)("scroll",Y,{target:y,passive:!0}),S({id:k,props:e,setLine:K,scrollable:T,onRendered:j,currentName:B,setTitleRefs:V,scrollIntoView:U}),()=>(0,i.bF)("div",{ref:h,class:fe([e.type])},[e.showHeader?e.sticky?(0,i.bF)(ce,{container:h.value,offsetTop:P.value,onScroll:N},{default:()=>[H()]}):H():null,(0,i.bF)(me,{ref:w,count:x.length,inited:R.inited,animated:e.animated,duration:e.duration,swipeable:e.swipeable,lazyRender:e.lazyRender,currentIndex:R.currentIndex,onChange:W},{default:()=>{var e;return[null==(e=l.default)?void 0:e.call(l)]}})])}});const ke=Symbol();var ye=l(3408);const[Ce,Ve]=(0,s.YX)("tab"),xe=(0,i.pM)({name:Ce,props:{id:String,dot:Boolean,type:String,color:String,title:String,badge:u.VQ,shrink:Boolean,isActive:Boolean,disabled:Boolean,controls:String,scrollable:Boolean,activeColor:String,inactiveColor:String,showZeroBadge:u.Rd},setup(e,{slots:t}){const l=(0,i.EW)((()=>{const t={},{type:l,color:o,disabled:n,isActive:a,activeColor:i,inactiveColor:r}=e,s="card"===l;o&&s&&(t.borderColor=o,n||(a?t.backgroundColor=o:t.color=o));const u=a?i:r;return u&&(t.color=u),t})),o=()=>{const l=(0,i.bF)("span",{class:Ve("text",{ellipsis:!e.scrollable})},[t.title?t.title():e.title]);return e.dot||(0,c.C8)(e.badge)&&""!==e.badge?(0,i.bF)(ye.Ex,{dot:e.dot,content:e.badge,showZero:e.showZeroBadge},{default:()=>[l]}):l};return()=>(0,i.bF)("div",{id:e.id,role:"tab",class:[Ve([e.type,{grow:e.scrollable&&!e.shrink,shrink:e.shrink,active:e.isActive,disabled:e.disabled}])],style:l.value,tabindex:e.disabled?void 0:e.isActive?0:-1,"aria-selected":e.isActive,"aria-disabled":e.disabled||void 0,"aria-controls":e.controls},[o()])}});var Fe=l(1477);const[Se,Re]=(0,s.YX)("tab"),Te=(0,c.X$)({},le.aI,{dot:Boolean,name:u.VQ,badge:u.VQ,title:String,disabled:Boolean,titleClass:u.E9,titleStyle:[String,Object],showZeroBadge:u.Rd});var _e=(0,i.pM)({name:Se,props:Te,setup(e,{slots:t}){const l=(0,te.B)(),o=(0,r.KR)(!1),n=(0,i.nI)(),{parent:a,index:s}=(0,m.cJ)(ge);if(!a)return void 0;const u=()=>{var t;return null!=(t=e.name)?t:s.value},d=()=>{o.value=!0,a.props.lazyRender&&(0,i.dY)((()=>{a.onRendered(u(),e.title)}))},v=(0,i.EW)((()=>{const e=u()===a.currentName.value;return e&&!o.value&&d(),e})),p=(0,r.KR)(""),h=(0,r.KR)("");(0,i.nT)((()=>{const{titleClass:t,titleStyle:l}=e;p.value=t?(0,J.C4)(t):"",h.value=l&&"string"!==typeof l?(0,J.tl)((0,J.Tr)(l)):l}));const b=o=>(0,i.bF)(xe,(0,i.v6)({key:l,id:`${a.id}-${s.value}`,ref:a.setTitleRefs(s.value),style:h.value,class:p.value,isActive:v.value,controls:l,scrollable:a.scrollable.value,activeColor:a.props.titleActiveColor,inactiveColor:a.props.titleInactiveColor,onClick:e=>o(n.proxy,s.value,e)},(0,c.Up)(a.props,["type","color","shrink"]),(0,c.Up)(e,["dot","badge","title","disabled","showZeroBadge"])),{title:t.title}),g=(0,r.KR)(!v.value);return(0,i.wB)(v,(e=>{e?g.value=!1:(0,m.r7)((()=>{g.value=!0}))})),(0,i.wB)((()=>e.title),(()=>{a.setLine(),a.scrollIntoView()})),(0,i.Gt)(ke,v),(0,f.c)({id:l,renderTitle:b}),()=>{var e;const n=`${a.id}-${s.value}`,{animated:r,swipeable:u,scrollspy:c,lazyRender:d}=a.props;if(!t.default&&!r)return;const p=c||v.value;if(r||u)return(0,i.bF)(Fe.O,{id:l,role:"tabpanel",class:Re("panel-wrapper",{inactive:g.value}),tabindex:v.value?0:-1,"aria-hidden":!v.value,"aria-labelledby":n},{default:()=>{var e;return[(0,i.bF)("div",{class:Re("panel")},[null==(e=t.default)?void 0:e.call(t)])]}});const m=o.value||c||!d,h=m?null==(e=t.default)?void 0:e.call(t):null;return(0,i.bo)((0,i.bF)("div",{id:l,role:"tabpanel",class:Re("panel"),tabindex:p?0:-1,"aria-labelledby":n},[h]),[[q.aG,p]])}}});const Ie=(0,a.G)(_e);const Be=(0,a.G)(we);const[Pe,Ee]=(0,s.YX)("picker-group"),Ue=Symbol(Pe),Ke=(0,c.X$)({tabs:(0,u.zj)(),activeTab:(0,u.TU)(0),nextStepText:String,showToolbar:u.Rd},H);(0,i.pM)({name:Pe,props:Ke,emits:["confirm","cancel","update:activeTab"],setup(e,{emit:t,slots:l}){const o=G((()=>e.activeTab),(e=>t("update:activeTab",e))),{children:n,linkChildren:a}=(0,m.Py)(Ue);a();const r=()=>+o.value{r()?o.value=+o.value+1:t("confirm",n.map((e=>e.confirm())))},u=()=>t("cancel");return()=>{var t,n;let a=null==(n=null==(t=l.default)?void 0:t.call(l))?void 0:n.filter((e=>e.type!==i.Mw)).map((e=>e.type===i.FK?e.children:e));a&&(a=(0,c.Ct)(a));const d=r()?e.nextStepText:e.confirmButtonText;return(0,i.bF)("div",{class:Ee()},[e.showToolbar?(0,i.bF)(j,{title:e.title,cancelButtonText:e.cancelButtonText,confirmButtonText:d,onConfirm:s,onCancel:u},(0,c.Up)(l,A)):null,(0,i.bF)(Be,{active:o.value,"onUpdate:active":e=>o.value=e,class:Ee("tabs"),shrink:!0,animated:!0,lazyRender:!1},{default:()=>[e.tabs.map(((e,t)=>(0,i.bF)(Ie,{title:e,titleClass:Ee("tab-title")},{default:()=>[null==a?void 0:a[t]]})))]})])}}});const Oe=(0,c.X$)({loading:Boolean,readonly:Boolean,allowHtml:Boolean,optionHeight:(0,u.TU)(44),showToolbar:u.Rd,swipeDuration:(0,u.TU)(1e3),visibleOptionNum:(0,u.TU)(6)},H),We=(0,c.X$)({},Oe,{columns:(0,u.zj)(),modelValue:(0,u.zj)(),toolbarPosition:(0,u.Ts)("top"),columnsFieldNames:Object});var $e=(0,i.pM)({name:S,props:We,emits:["confirm","cancel","change","scrollInto","clickOption","update:modelValue"],setup(e,{emit:t,slots:l}){const o=(0,r.KR)(),n=(0,r.KR)(e.modelValue.slice(0)),{parent:a}=(0,m.cJ)(Ue),{children:s,linkChildren:u}=(0,m.Py)(z);u();const p=(0,i.EW)((()=>O(e.columnsFieldNames))),h=(0,i.EW)((()=>(0,v.S7)(e.optionHeight))),b=(0,i.EW)((()=>I(e.columns,p.value))),g=(0,i.EW)((()=>{const{columns:t}=e;switch(b.value){case"multiple":return t;case"cascade":return U(t,p.value,n);default:return[t]}})),w=(0,i.EW)((()=>g.value.some((e=>e.length)))),k=(0,i.EW)((()=>g.value.map(((e,t)=>E(e,n.value[t],p.value))))),y=(0,i.EW)((()=>g.value.map(((e,t)=>e.findIndex((e=>e[p.value.value]===n.value[t])))))),C=(e,t)=>{if(n.value[e]!==t){const l=n.value.slice(0);l[e]=t,n.value=l}},V=()=>({selectedValues:n.value.slice(0),selectedOptions:k.value,selectedIndexes:y.value}),x=(e,l)=>{C(l,e),"cascade"===b.value&&n.value.forEach(((e,t)=>{const l=g.value[t];P(l,e,p.value)||C(t,l.length?l[0][p.value.value]:void 0)})),(0,i.dY)((()=>{t("change",(0,c.X$)({columnIndex:l},V()))}))},S=(e,l)=>{const o={columnIndex:l,currentOption:e};t("clickOption",(0,c.X$)(V(),o)),t("scrollInto",o)},T=()=>{s.forEach((e=>e.stopMomentum()));const e=V();return(0,i.dY)((()=>{t("confirm",e)})),e},B=()=>t("cancel",V()),K=()=>g.value.map(((o,a)=>(0,i.bF)(Y,{value:n.value[a],fields:p.value,options:o,readonly:e.readonly,allowHtml:e.allowHtml,optionHeight:h.value,swipeDuration:e.swipeDuration,visibleOptionNum:e.visibleOptionNum,onChange:e=>x(e,a),onClickOption:e=>S(e,a),onScrollInto:e=>{t("scrollInto",{currentOption:e,columnIndex:a})}},{option:l.option}))),$=e=>{if(w.value){const t={height:`${h.value}px`},l={backgroundSize:`100% ${(e-h.value)/2}px`};return[(0,i.bF)("div",{class:R("mask"),style:l},null),(0,i.bF)("div",{class:[F.xm,R("frame")],style:t},null)]}},M=()=>{const t=h.value*+e.visibleOptionNum,l={height:`${t}px`};return(0,i.bF)("div",{ref:o,class:R("columns"),style:l},[K(),$(t)])},L=()=>{if(e.showToolbar&&!a)return(0,i.bF)(j,(0,i.v6)((0,c.Up)(e,Q),{onConfirm:T,onCancel:B}),(0,c.Up)(l,A))};let N;(0,i.wB)(g,(e=>{e.forEach(((e,t)=>{e.length&&!P(e,n.value[t],p.value)&&C(t,_(e)[p.value.value])}))}),{immediate:!0}),(0,i.wB)((()=>e.modelValue),(e=>{(0,c.am)(e,n.value)||(0,c.am)(e,N)||(n.value=e.slice(0),N=e.slice(0))}),{deep:!0}),(0,i.wB)(n,(l=>{(0,c.am)(l,e.modelValue)||(N=l.slice(0),t("update:modelValue",N))}),{immediate:!0}),(0,m.ML)("touchmove",d.wo,{target:o});const X=()=>k.value;return(0,f.c)({confirm:T,getSelectedOptions:X}),()=>{var t,o;return(0,i.bF)("div",{class:R()},["top"===e.toolbarPosition?L():null,e.loading?(0,i.bF)(W.Rh,{class:R("loading")},null):null,null==(t=l["columns-top"])?void 0:t.call(l),M(),null==(o=l["columns-bottom"])?void 0:o.call(l),"bottom"===e.toolbarPosition?L():null])}}});const Me=(0,a.G)($e);l(7265),l(4259),l(1125);const[Le,Ne]=(0,s.YX)("switch"),Xe={size:u.VQ,loading:Boolean,disabled:Boolean,modelValue:u.E9,activeColor:String,inactiveColor:String,activeValue:{type:u.E9,default:!0},inactiveValue:{type:u.E9,default:!1}};var ze=(0,i.pM)({name:Le,props:Xe,emits:["change","update:modelValue"],setup(e,{emit:t,slots:l}){const o=()=>e.modelValue===e.activeValue,n=()=>{if(!e.disabled&&!e.loading){const l=o()?e.inactiveValue:e.activeValue;t("update:modelValue",l),t("change",l)}},a=()=>{if(e.loading){const t=o()?e.activeColor:e.inactiveColor;return(0,i.bF)(W.Rh,{class:Ne("loading"),color:t},null)}if(l.node)return l.node()};return(0,m.Gp)((()=>e.modelValue)),()=>{var t;const{size:r,loading:s,disabled:u,activeColor:c,inactiveColor:d}=e,p=o(),m={fontSize:(0,v._V)(r),backgroundColor:p?c:d};return(0,i.bF)("div",{role:"switch",class:Ne({on:p,loading:s,disabled:u}),style:m,tabindex:u?void 0:0,"aria-checked":p,onClick:n},[(0,i.bF)("div",{class:Ne("node")},[a()]),null==(t=l.background)?void 0:t.call(l)])}}});const Ye=(0,a.G)(ze);var De=l(7684);const[He,Ae]=(0,s.YX)("action-sheet"),Qe=(0,c.X$)({},De.C,{title:String,round:u.Rd,actions:(0,u.zj)(),closeIcon:(0,u.Ts)("cross"),closeable:u.Rd,cancelText:String,description:String,closeOnPopstate:u.Rd,closeOnClickAction:Boolean,safeAreaInsetBottom:u.Rd}),je=[...De.r,"round","closeOnPopstate","safeAreaInsetBottom"];var Ge=(0,i.pM)({name:He,props:Qe,emits:["select","cancel","update:show"],setup(e,{slots:t,emit:l}){const o=e=>l("update:show",e),n=()=>{o(!1),l("cancel")},a=()=>{if(e.title)return(0,i.bF)("div",{class:Ae("header")},[e.title,e.closeable&&(0,i.bF)(C.In,{name:e.closeIcon,class:[Ae("close"),F.Dk],onClick:n},null)])},r=()=>{if(t.cancel||e.cancelText)return[(0,i.bF)("div",{class:Ae("gap")},null),(0,i.bF)("button",{type:"button",class:Ae("cancel"),onClick:n},[t.cancel?t.cancel():e.cancelText])]},s=e=>{if(e.icon)return(0,i.bF)(C.In,{class:Ae("item-icon"),name:e.icon},null)},u=(e,l)=>e.loading?(0,i.bF)(W.Rh,{class:Ae("loading-icon")},null):t.action?t.action({action:e,index:l}):[(0,i.bF)("span",{class:Ae("name")},[e.name]),e.subname&&(0,i.bF)("div",{class:Ae("subname")},[e.subname])],d=(t,n)=>{const{color:a,loading:r,callback:c,disabled:d,className:v}=t,p=()=>{d||r||(c&&c(t),e.closeOnClickAction&&o(!1),(0,i.dY)((()=>l("select",t,n))))};return(0,i.bF)("button",{type:"button",style:{color:a},class:[Ae("item",{loading:r,disabled:d}),v],onClick:p},[s(t),u(t,n)])},v=()=>{if(e.description||t.description){const l=t.description?t.description():e.description;return(0,i.bF)("div",{class:Ae("description")},[l])}};return()=>(0,i.bF)(x.zD,(0,i.v6)({class:Ae(),position:"bottom","onUpdate:show":o},(0,c.Up)(e,je)),{default:()=>{var l;return[a(),v(),(0,i.bF)("div",{class:Ae("content")},[e.actions.map(d),null==(l=t.default)?void 0:l.call(t)]),r()]}})}});const qe=(0,a.G)(Ge);var Je=l(8139),Ze=(l(7057),l(3788));l(7540);const[et,tt]=(0,s.YX)("slider"),lt={min:(0,u.TU)(0),max:(0,u.TU)(100),step:(0,u.TU)(1),range:Boolean,reverse:Boolean,disabled:Boolean,readonly:Boolean,vertical:Boolean,barHeight:u.VQ,buttonSize:u.VQ,activeColor:String,inactiveColor:String,modelValue:{type:[Number,Array],default:0}};var ot=(0,i.pM)({name:et,props:lt,emits:["change","dragEnd","dragStart","update:modelValue"],setup(e,{emit:t,slots:l}){let o,n,a;const s=(0,r.KR)(),u=[(0,r.KR)(),(0,r.KR)()],p=(0,r.KR)(),f=(0,h.P)(),b=(0,i.EW)((()=>Number(e.max)-Number(e.min))),g=(0,i.EW)((()=>{const t=e.vertical?"width":"height";return{background:e.inactiveColor,[t]:(0,v._V)(e.barHeight)}})),w=t=>e.range&&Array.isArray(t),k=()=>{const{modelValue:t,min:l}=e;return w(t)?100*(t[1]-t[0])/b.value+"%":100*(t-Number(l))/b.value+"%"},y=()=>{const{modelValue:t,min:l}=e;return w(t)?100*(t[0]-Number(l))/b.value+"%":"0%"},C=(0,i.EW)((()=>{const t=e.vertical?"height":"width",l={[t]:k(),background:e.activeColor};p.value&&(l.transition="none");const o=()=>e.vertical?e.reverse?"bottom":"top":e.reverse?"right":"left";return l[o()]=y(),l})),V=t=>{const l=+e.min,o=+e.max,n=+e.step;t=(0,v.qE)(t,l,o);const a=Math.round((t-l)/n)*n;return(0,v.LF)(l,a)},x=()=>{const t=e.modelValue;a=w(t)?t.map(V):V(t)},F=t=>{var l,o;const n=null!=(l=t[0])?l:Number(e.min),a=null!=(o=t[1])?o:Number(e.max);return n>a?[a,n]:[n,a]},S=(l,o)=>{l=w(l)?F(l).map(V):V(l),(0,c.am)(l,e.modelValue)||t("update:modelValue",l),o&&!(0,c.am)(l,a)&&t("change",l)},R=t=>{if(t.stopPropagation(),e.disabled||e.readonly)return;x();const{min:l,reverse:o,vertical:n,modelValue:a}=e,i=(0,m.yD)(s),r=()=>n?o?i.bottom-t.clientY:t.clientY-i.top:o?i.right-t.clientX:t.clientX-i.left,u=n?i.height:i.width,c=Number(l)+r()/u*b.value;if(w(a)){const[e,t]=a,l=(e+t)/2;S(c<=l?[c,t]:[e,c],!0)}else S(c,!0)},T=t=>{e.disabled||e.readonly||(f.start(t),n=e.modelValue,x(),p.value="start")},_=l=>{if(e.disabled||e.readonly)return;"start"===p.value&&t("dragStart",l),(0,d.wo)(l,!0),f.move(l),p.value="dragging";const i=(0,m.yD)(s),r=e.vertical?f.deltaY.value:f.deltaX.value,u=e.vertical?i.height:i.width;let c=r/u*b.value;if(e.reverse&&(c=-c),w(a)){const t=e.reverse?1-o:o;n[t]=a[t]+c}else n=a+c;S(n)},I=l=>{e.disabled||e.readonly||("dragging"===p.value&&(S(n,!0),t("dragEnd",l)),p.value="")},B=t=>{if("number"===typeof t){const e=["left","right"];return tt("button-wrapper",e[t])}return tt("button-wrapper",e.reverse?"left":"right")},P=(t,a)=>{const r="dragging"===p.value;if("number"===typeof a){const e=l[0===a?"left-button":"right-button"];let i;if(r&&Array.isArray(n)&&(i=n[0]>n[1]?1^o:o),e)return e({value:t,dragging:r,dragIndex:i})}return l.button?l.button({value:t,dragging:r}):(0,i.bF)("div",{class:tt("button"),style:(0,v.vE)(e.buttonSize)},null)},E=t=>{const l="number"===typeof t?e.modelValue[t]:e.modelValue;return(0,i.bF)("div",{ref:u[null!=t?t:0],role:"slider",class:B(t),tabindex:e.disabled?void 0:0,"aria-valuemin":e.min,"aria-valuenow":l,"aria-valuemax":e.max,"aria-disabled":e.disabled||void 0,"aria-readonly":e.readonly||void 0,"aria-orientation":e.vertical?"vertical":"horizontal",onTouchstartPassive:e=>{"number"===typeof t&&(o=t),T(e)},onTouchend:I,onTouchcancel:I,onClick:d.dG},[P(l,t)])};return S(e.modelValue),(0,m.Gp)((()=>e.modelValue)),u.forEach((e=>{(0,m.ML)("touchmove",_,{target:e})})),()=>(0,i.bF)("div",{ref:s,style:g.value,class:tt({vertical:e.vertical,disabled:e.disabled}),onClick:R},[(0,i.bF)("div",{class:tt("bar"),style:C.value},[e.range?[E(0),E(1)]:E()])])}});const nt=(0,a.G)(ot);var at=l(5050),it=(l(9766),l(4758));const rt=e=>((0,i.Qi)("data-v-a06cbe3a"),e=e(),(0,i.jt)(),e),st={class:"content"},ut={class:"home"},ct=rt((()=>(0,i.Lk)("p",{class:"title"},"数显设置",-1))),dt={class:"button-container"},vt={class:"home"},pt=rt((()=>(0,i.Lk)("p",{class:"title",style:{"pointer-events":"none"}},"阈值设置",-1))),mt={class:"slider-container"},ht=rt((()=>(0,i.Lk)("p",{class:"set-title"},"触发阈值",-1))),ft={class:"input-container"},bt={class:"slider-container"},gt=rt((()=>(0,i.Lk)("p",{class:"set-title"},"超速阈值",-1))),wt={class:"input-container"},kt={class:"control"},yt=rt((()=>(0,i.Lk)("p",{class:"title-control"},"双色屏控制",-1))),Ct={class:"control"},Vt=rt((()=>(0,i.Lk)("p",{class:"title-control"},"设备地址",-1))),xt={class:"control"},Ft=rt((()=>(0,i.Lk)("p",{class:"title-control"},"事件列表",-1))),St={key:1,class:"button-container"};function Rt(e,t,l,a,r,s){const u=it.A,c=at.D0,d=nt,v=Ze.Qh,p=Je.fh,m=qe,h=Ye,f=Me,b=x.zD,g=V.$n,w=C.In,k=y,F=n.j5,S=o["default"];return(0,i.uX)(),(0,i.CE)(i.FK,null,[(0,i.bF)(u,{title:r.currentTitle},null,8,["title"]),(0,i.bF)(F,{modelValue:a.loading,"onUpdate:modelValue":t[24]||(t[24]=e=>a.loading=e),"success-text":"刷新成功",onRefresh:a.onRefresh},{default:(0,i.k6)((()=>[(0,i.Lk)("div",st,[(0,i.Lk)("div",ut,[ct,(0,i.bF)(v,{inset:""},{default:(0,i.k6)((()=>[(0,i.bF)(c,{class:"brightness",modelValue:a.number,"onUpdate:modelValue":t[0]||(t[0]=e=>a.number=e),modelModifiers:{number:!0},type:"number",label:"亮度",placeholder:"请输入0-100"},null,8,["modelValue"]),(0,i.bF)(d,{modelValue:a.number,"onUpdate:modelValue":t[1]||(t[1]=e=>a.number=e),modelModifiers:{number:!0},step:1,max:100,min:0,onChange:a.onBrightnessChange,class:"slider"},null,8,["modelValue","onChange"])])),_:1}),(0,i.bF)(p,{"is-link":"",title:"正常颜色",onClick:t[2]||(t[2]=e=>a.showNormalColor=!0)},{default:(0,i.k6)((()=>[(0,i.eW)((0,J.v_)(a.selectedNormalColor),1)])),_:1}),(0,i.bF)(m,{show:a.showNormalColor,"onUpdate:show":t[3]||(t[3]=e=>a.showNormalColor=e),actions:a.actions,onSelect:a.onSelectNormalColor},null,8,["show","actions","onSelect"]),(0,i.bF)(p,{"is-link":"",title:"超速颜色",onClick:t[4]||(t[4]=e=>a.showOverSpeedColor=!0)},{default:(0,i.k6)((()=>[(0,i.eW)((0,J.v_)(a.selectedOverSpeedColor),1)])),_:1}),(0,i.bF)(m,{show:a.showOverSpeedColor,"onUpdate:show":t[5]||(t[5]=e=>a.showOverSpeedColor=e),actions:a.actions,onSelect:a.onSelectOverSpeedColor},null,8,["show","actions","onSelect"]),(0,i.bF)(p,{title:"正常闪烁"},{default:(0,i.k6)((()=>[(0,i.bF)(h,{modelValue:a.checked,"onUpdate:modelValue":t[6]||(t[6]=e=>a.checked=e)},null,8,["modelValue"])])),_:1}),(0,i.bF)(p,{title:"超速闪烁"},{default:(0,i.k6)((()=>[(0,i.bF)(h,{modelValue:a.showOverSpeedBlink,"onUpdate:modelValue":t[7]||(t[7]=e=>a.showOverSpeedBlink=e)},null,8,["modelValue"])])),_:1}),(0,i.bF)(c,{modelValue:a.fieldValue,"onUpdate:modelValue":t[8]||(t[8]=e=>a.fieldValue=e),"is-link":"",readonly:"",label:"闪烁速度",placeholder:"请输入",onClick:t[9]||(t[9]=e=>a.showPicker=!0)},null,8,["modelValue"]),(0,i.bF)(b,{show:a.showPicker,"onUpdate:show":t[11]||(t[11]=e=>a.showPicker=e),round:"",position:"bottom"},{default:(0,i.k6)((()=>[(0,i.bF)(f,{columns:a.columns,onCancel:t[10]||(t[10]=e=>a.showPicker=!1),onConfirm:a.onConfirm},null,8,["columns","onConfirm"])])),_:1},8,["show"]),(0,i.Lk)("div",dt,[(0,i.bF)(g,{type:"primary",size:"large",onClick:a.uploadSettings},{default:(0,i.k6)((()=>[(0,i.eW)("上传")])),_:1},8,["onClick"])])]),(0,i.Lk)("div",vt,[pt,(0,i.Lk)("div",mt,[ht,(0,i.bF)(d,{modelValue:a.value,"onUpdate:modelValue":t[12]||(t[12]=e=>a.value=e),range:"",onChange:a.onChange},null,8,["modelValue","onChange"])]),(0,i.Lk)("div",ft,[(0,i.bF)(c,{modelValue:a.value[0],"onUpdate:modelValue":t[13]||(t[13]=e=>a.value[0]=e),type:"number",label:"最小值",placeholder:"最小值"},null,8,["modelValue"]),(0,i.bF)(c,{modelValue:a.value[1],"onUpdate:modelValue":t[14]||(t[14]=e=>a.value[1]=e),type:"number",label:"最大值",placeholder:"最大值"},null,8,["modelValue"])]),(0,i.Lk)("div",bt,[gt,(0,i.bF)(d,{modelValue:a.overSpeedValue,"onUpdate:modelValue":t[15]||(t[15]=e=>a.overSpeedValue=e),range:"",onChange:a.onOverSpeedChange},null,8,["modelValue","onChange"])]),(0,i.Lk)("div",wt,[(0,i.bF)(c,{modelValue:a.overSpeedValue[0],"onUpdate:modelValue":t[16]||(t[16]=e=>a.overSpeedValue[0]=e),type:"number",label:"最小值",placeholder:"最小值"},null,8,["modelValue"]),(0,i.bF)(c,{modelValue:a.overSpeedValue[1],"onUpdate:modelValue":t[17]||(t[17]=e=>a.overSpeedValue[1]=e),type:"number",label:"最大值",placeholder:"最大值"},null,8,["modelValue"])]),(0,i.Lk)("div",kt,[yt,(0,i.bF)(h,{modelValue:a.screencontrol,"onUpdate:modelValue":t[18]||(t[18]=e=>a.screencontrol=e),class:"switch-control"},null,8,["modelValue"])]),(0,i.Lk)("div",Ct,[Vt,(0,i.bF)(c,{modelValue:a.addr,"onUpdate:modelValue":t[19]||(t[19]=e=>a.addr=e),placeholder:"请输入设备地址"},null,8,["modelValue"])]),(0,i.Lk)("div",xt,[Ft,(0,i.bF)(w,{name:"plus",onClick:a.addEvent},null,8,["onClick"])]),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(a.events,((e,l)=>((0,i.uX)(),(0,i.CE)("div",{key:l,class:"event-item"},[(0,i.bF)(k,{"right-width":65,onClose:a.onClose},{right:(0,i.k6)((()=>[(0,i.bF)(g,{square:"",type:"danger",onClick:e=>a.removeEvent(l),class:"delete-button"},{default:(0,i.k6)((()=>[(0,i.eW)("删除")])),_:2},1032,["onClick"])])),default:(0,i.k6)((()=>[(0,i.bF)(p,{"is-link":"",title:"事件类型",modelValue:e.type,"onUpdate:modelValue":t=>e.type=t,onClick:t=>e.showTypePicker=!0},{default:(0,i.k6)((()=>[(0,i.eW)((0,J.v_)(e.type),1)])),_:2},1032,["modelValue","onUpdate:modelValue","onClick"]),"其他"===e.type?((0,i.uX)(),(0,i.Wv)(c,{key:0,modelValue:e.code,"onUpdate:modelValue":t=>e.code=t,label:"事件编码",placeholder:"请输入事件编码"},null,8,["modelValue","onUpdate:modelValue"])):(0,i.Q3)("",!0),(0,i.bF)(c,{modelValue:e.source,"onUpdate:modelValue":t=>e.source=t,label:"事件来源",placeholder:"请输入事件来源"},null,8,["modelValue","onUpdate:modelValue"]),(0,i.bF)(c,{modelValue:e.priority,"onUpdate:modelValue":t=>e.priority=t,label:"优先级",placeholder:"请输入优先级"},null,8,["modelValue","onUpdate:modelValue"]),(0,i.bF)(c,{modelValue:e.showItem,"onUpdate:modelValue":t=>e.showItem=t,"is-link":"",readonly:"",label:"显示节目",placeholder:"选择显示节目",onClick:e=>a.showItemPicker=l},null,8,["modelValue","onUpdate:modelValue","onClick"]),(0,i.bF)(c,{modelValue:e.showDuration,"onUpdate:modelValue":t=>e.showDuration=t,label:"显示时长",placeholder:"请输入显示时长"},null,8,["modelValue","onUpdate:modelValue"]),(0,i.bF)(c,{modelValue:e.outputPin,"onUpdate:modelValue":t=>e.outputPin=t,"is-link":"",readonly:"",label:"输出引脚",placeholder:"请输入输出引脚",onClick:e=>a.showpinpicker=l},null,8,["modelValue","onUpdate:modelValue","onClick"]),(0,i.bF)(p,{"is-link":"",title:"输出电平",onClick:t=>e.showoutlevel=!0},{default:(0,i.k6)((()=>[(0,i.eW)((0,J.v_)(e.outlevel),1)])),_:2},1032,["onClick"]),l===a.events.length-1?((0,i.uX)(),(0,i.CE)("div",St,[(0,i.bF)(g,{round:"",type:"success",size:"large",onClick:a.uploadEventSettings},{default:(0,i.k6)((()=>[(0,i.eW)("设置")])),_:1},8,["onClick"])])):(0,i.Q3)("",!0)])),_:2},1032,["onClose"]),(0,i.bF)(m,{show:e.showoutlevel,"onUpdate:show":t=>e.showoutlevel=t,actions:a.levelactions,onSelect:t=>a.onSelectlevel(e,t)},null,8,["show","onUpdate:show","actions","onSelect"]),(0,i.bF)(m,{show:e.showTypePicker,"onUpdate:show":t=>e.showTypePicker=t,actions:a.typeaction,onSelect:t=>a.onSelecttype(e,t)},null,8,["show","onUpdate:show","actions","onSelect"]),(0,i.bF)(b,{modelValue:a.showItemPicker,"onUpdate:modelValue":t[21]||(t[21]=e=>a.showItemPicker=e),show:a.showItemPicker===l,round:"",position:"bottom"},{default:(0,i.k6)((()=>[(0,i.bF)(f,{columns:a.progremcolums,onCancel:t[20]||(t[20]=()=>a.showItemPicker=-1),onConfirm:e=>a.onConfirmShowItem(l,e)},null,8,["columns","onConfirm"])])),_:2},1032,["modelValue","show"]),(0,i.bF)(b,{modelValue:a.showpinpicker,"onUpdate:modelValue":t[23]||(t[23]=e=>a.showpinpicker=e),show:a.showpinpicker===l,round:"",position:"bottom"},{default:(0,i.k6)((()=>[(0,i.bF)(f,{columns:a.outpincolumns,onCancel:t[22]||(t[22]=()=>a.showpinpicker=-1),onConfirm:e=>a.onConfirmoutpin(l,e)},null,8,["columns","onConfirm"])])),_:2},1032,["modelValue","show"])])))),128))])])])),_:1},8,["modelValue","onRefresh"]),(0,i.bF)(S)],64)}l(8628);var Tt=l(5149),_t=l(4373),It=l(1508),Bt=(l(3081),{components:{Footer:o["default"],Header:it.A},data(){return{currentTitle:"车牌识别"}},setup(){const e=(0,r.KR)(1),t=(0,r.KR)(!1),l=(0,r.KR)(0),o=(0,r.KR)(""),n=(0,r.KR)(!1),a=(0,r.KR)(""),s=(0,r.KR)(""),u=(0,r.KR)(!1),c=(0,r.KR)(!1),d=(0,r.KR)(!1),v=(0,r.KR)(!1),p=(0,r.KR)(!1),m=(0,r.KR)(!1),h=(0,r.KR)([10,50]),f=(0,r.KR)([60,160]),b=(0,r.KR)([]),g=(0,r.KR)(!1),w=(0,r.KR)(""),k=(0,r.KR)(-1),y=(0,r.KR)(-1),C=(0,r.KR)(!1),V=[{name:"雷达触发",code:1},{name:"雷达超速",code:2},{name:"车牌触发",code:3},{name:"车牌超速",code:4},{name:"其他",code:5}],x=[{name:"0",value:0},{name:"1",value:1}];let F;F=Tt.connect("wss://broker.emqx.io:8084/mqtt");const S=e=>(0,It.P0)("当前值:"+e),R=e=>(0,It.P0)("当前超速值:"+e),T=[{name:"红",value:1},{name:"绿",value:2},{name:"黄",value:3}],_=[{text:"1",value:"1"},{text:"2",value:"2"},{text:"3",value:"3"},{text:"4",value:"4"},{text:"5",value:"5"}],I=[{text:"节目0",value:"0"},{text:"节目1",value:"1"},{text:"节目2",value:"2"},{text:"节目3",value:"3"},{text:"节目4",value:"4"},{text:"节目5",value:"5"},{text:"节目6",value:"6"},{text:"节目7",value:"7"},{text:"节目8",value:"8"},{text:"节目9",value:"9"}],B=[{text:"关闭",value:"0"},{text:"引脚1",value:"1"},{text:"引脚2",value:"2"},{text:"引脚3",value:"3"},{text:"引脚4",value:"4"},{text:"引脚5",value:"5"},{text:"引脚6",value:"6"},{text:"引脚7",value:"7"},{text:"引脚8",value:"8"}],P=()=>{"192.168.4.1"===window.location.hostname?(console.log("in local"),t.value=!0):t.value=!1},E=(e,t)=>{b.value[e].showItem=t.selectedOptions[0].value,k.value=-1},U=(e,t)=>{b.value[e].outputPin=t.selectedOptions[0].value,y.value=-1},K=e=>{u.value=!1,a.value=e.name,(0,It.P0)(e.name)},O=e=>{c.value=!1,s.value=e.name,(0,It.P0)(e.name)},W=({selectedOptions:e})=>{m.value=!1,o.value=e[0].text},$=(e,t)=>{e.type=t.name,e.code=t.code.toString(),e.showTypePicker=!1,(0,It.P0)(e.type)},M=(e,t)=>{e.outlevel=t.name,e.value=t.value.toString(),e.showoutlevel=!1,(0,It.P0)(e.outlevel)},L=()=>{n.value=!0,N()},N=()=>{F.publish("recewive/abc",JSON.stringify({JSON_id:e.value,LPR_card:{get_info:1}}))},X=()=>{F.on("connect",(()=>{console.log("Connected to MQTT broker"),F.subscribe("/mytest/abc")})),F.on("message",((e,t)=>{const l=JSON.parse(t.toString());console.log("Received message:",l),l.LPR_card&&(D(l),n.value=!1)}))},z=()=>{if(!l.value||!a.value||!s.value||!o.value)return void(0,It.P0)("请填写完整数显信息");const n={JSON_id:e.value,LPR_card:{seg_cfg:{bright:parseInt(l.value),trig_c:T.findIndex((e=>e.name===a.value))+1,over_spd_c:T.findIndex((e=>e.name===s.value))+1,bk_trig_en:d.value?1:0,bk_over_spd_en:v.value?1:0,bk_spd:parseInt(o.value)}}};console.log(JSON.stringify(n)),t.value?(console.log("axios发送"),_t.A.post("/communication",n,{headers:{"content-type":"application/json"}}).then((t=>{D(t.data),(0,It.P0)("事件设置已上传"),console.log(t.data),e.value++})).catch((t=>{console.error("Upload error:",t),(0,It.P0)("事件设置上传失败"),e.value++}))):(e.value++,console.log("mqtt发送"),F.publish("recewive/abc",JSON.stringify(n),(e=>{e?console.error("Publish error:",e):(console.log("Payload published:",n),(0,It.P0)("设置已上传"))})))},Y=()=>{for(const e of b.value)if(!e.type||!e.code||!e.source||!e.priority||!e.showItem||!e.showDuration||!e.outputPin||!e.outlevel||!w)return void(0,It.P0)("请填写完整事件信息");const l={JSON_id:e.value,LPR_card:{trig_cfg:{trig_spd_L:h.value[0],trig_spd_H:h.value[1],lmt_spd_L:f.value[0],lmt_spd_H:f.value[1],screen_ctrl_en:p.value?1:0,addr:w.value,event:b.value.map((e=>({code:parseInt(e.code),source:parseInt(e.source),priority:parseInt(e.priority),prg_num:parseInt(e.showItem),prg_time:parseInt(e.showDuration),output:parseInt(e.outputPin),level:parseInt(e.outlevel)})))},get_cfg:1,trig_cfg_ok:1},error_code:0};console.log(JSON.stringify(l)),t.value?(console.log("axios发送"),_t.A.post("/communication",l,{headers:{"content-type":"application/json"}}).then((t=>{D(t.data),(0,It.P0)("事件设置已上传"),console.log(t.data),e.value++})).catch((t=>{console.error("Upload error:",t),(0,It.P0)("事件设置上传失败"),e.value++}))):(console.log("mqtt发送"),e.value++,F.publish("/communication",JSON.stringify(l),(e=>{e?console.error("Publish error:",e):(console.log("Payload published:",l),(0,It.P0)("设置已上传"))})))},D=e=>{if(e.LPR_card){const t=e.LPR_card.seg_cfg,n=e.LPR_card.trig_cfg;l.value=t.bright,a.value=T.find((e=>e.value===t.trig_c)).name,s.value=T.find((e=>e.value===t.over_spd_c)).name,d.value=!!t.bk_trig_en,v.value=!!t.bk_over_spd_en,o.value=t.bk_spd.toString(),w.value=n.addr,h.value=[n.trig_spd_L,n.trig_spd_H],f.value=[n.lmt_spd_L,n.lmt_spd_H],p.value=!!n.screen_ctrl_en,b.value=n.event.map((e=>{let t;if(e.code>4)t="其他";else{const l=V.find((t=>t.code===e.code));t=l?l.name:"未知类型"}return{type:t,code:e.code.toString(),source:e.source.toString(),priority:e.priority.toString(),showItem:e.prg_num.toString(),showDuration:e.prg_time.toString(),outputPin:e.output.toString(),outlevel:e.level.toString()}}))}};(0,i.sV)((()=>{X(),P()})),(0,i.xo)((()=>{F&&F.end()}));const H=()=>{b.value.push({type:"",code:"",source:"",priority:"",showItem:"",showDuration:"",outputPin:"",outlevel:"",showTypePicker:!1,showoutlevel:!1})},A=e=>{b.value.splice(e,1)},Q=(e,t)=>{"right"===e&&t.close()},j=e=>{l.value=e,(0,It.P0)("亮度值:"+e)};return{number:l,fieldValue:o,loading:n,showNormalColor:u,showOverSpeedColor:c,checked:d,showOverSpeedBlink:v,showPicker:m,actions:T,columns:_,onSelectNormalColor:K,onSelectOverSpeedColor:O,onConfirm:W,onRefresh:L,selectedNormalColor:a,selectedOverSpeedColor:s,value:h,onChange:S,overSpeedValue:f,onOverSpeedChange:R,screencontrol:p,events:b,addEvent:H,removeEvent:A,uploadSettings:z,showtype:g,onSelecttype:$,typeaction:V,onClose:Q,onBrightnessChange:j,uploadEventSettings:Y,parseAndFillData:D,checkEnvironment:P,isLocal:t,jsonId:e,addr:w,onConfirmShowItem:E,showItemPicker:k,progremcolums:I,onSelectlevel:M,levelactions:x,outlevel:C,showpinpicker:y,outpincolumns:B,onConfirmoutpin:U}}}),Pt=l(1241);const Et=(0,Pt.A)(Bt,[["render",Rt],["__scopeId","data-v-a06cbe3a"]]);var Ut=Et},7057:function(e,t,l){l(6647),l(7708),l(7484),l(887)},1477:function(e,t,l){l.d(t,{O:function(){return p}});var o=l(4726),n=l(6768),a=l(144),i=l(5828),r=l(667),s=l(6591),u=l(6145);const[c,d]=(0,i.YX)("swipe-item");var v=(0,n.pM)({name:c,setup(e,{slots:t}){let l;const o=(0,a.Kh)({offset:0,inited:!1,mounted:!1}),{parent:i,index:c}=(0,s.cJ)(r.te);if(!i)return void 0;const v=(0,n.EW)((()=>{const e={},{vertical:t}=i.props;return i.size.value&&(e[t?"height":"width"]=`${i.size.value}px`),o.offset&&(e.transform=`translate${t?"Y":"X"}(${o.offset}px)`),e})),p=(0,n.EW)((()=>{const{loop:e,lazyRender:t}=i.props;if(!t||l)return!0;if(!o.mounted)return!1;const n=i.activeIndicator.value,a=i.count.value-1,r=0===n&&e?a:n-1,s=n===a&&e?0:n+1;return l=c.value===n||c.value===r||c.value===s,l})),m=e=>{o.offset=e};return(0,n.sV)((()=>{(0,n.dY)((()=>{o.mounted=!0}))})),(0,u.c)({setOffset:m}),()=>{var e;return(0,n.bF)("div",{class:d(),style:v.value},[p.value?null==(e=t.default)?void 0:e.call(t):null])}}});const p=(0,o.G)(v)},667:function(e,t,l){l.d(t,{Ay:function(){return b},te:function(){return f}});var o=l(6768),n=l(144),a=l(5828),i=l(6370),r=l(7905),s=l(240),u=l(6591),c=l(4390),d=l(6145),v=l(8957);const[p,m]=(0,a.YX)("swipe"),h={loop:i.Rd,width:i.VQ,height:i.VQ,vertical:Boolean,autoplay:(0,i.TU)(0),duration:(0,i.TU)(500),touchable:i.Rd,lazyRender:Boolean,initialSwipe:(0,i.TU)(0),indicatorColor:String,showIndicators:i.Rd,stopPropagation:i.Rd},f=Symbol(p);var b=(0,o.pM)({name:p,props:h,emits:["change","dragStart","dragEnd"],setup(e,{emit:t,slots:l}){const a=(0,n.KR)(),i=(0,n.KR)(),p=(0,n.Kh)({rect:null,width:0,height:0,offset:0,active:0,swiping:!1});let h=!1;const b=(0,c.P)(),{children:g,linkChildren:w}=(0,u.Py)(f),k=(0,o.EW)((()=>g.length)),y=(0,o.EW)((()=>p[e.vertical?"height":"width"])),C=(0,o.EW)((()=>e.vertical?b.deltaY.value:b.deltaX.value)),V=(0,o.EW)((()=>{if(p.rect){const t=e.vertical?p.rect.height:p.rect.width;return t-y.value*k.value}return 0})),x=(0,o.EW)((()=>y.value?Math.ceil(Math.abs(V.value)/y.value):k.value)),F=(0,o.EW)((()=>k.value*y.value)),S=(0,o.EW)((()=>(p.active+k.value)%k.value)),R=(0,o.EW)((()=>{const t=e.vertical?"vertical":"horizontal";return b.direction.value===t})),T=(0,o.EW)((()=>{const t={transitionDuration:`${p.swiping?0:e.duration}ms`,transform:`translate${e.vertical?"Y":"X"}(${+p.offset.toFixed(2)}px)`};if(y.value){const l=e.vertical?"height":"width",o=e.vertical?"width":"height";t[l]=`${F.value}px`,t[o]=e[o]?`${e[o]}px`:""}return t})),_=t=>{const{active:l}=p;return t?e.loop?(0,r.qE)(l+t,-1,k.value):(0,r.qE)(l+t,0,x.value):l},I=(t,l=0)=>{let o=t*y.value;e.loop||(o=Math.min(o,-V.value));let n=l-o;return e.loop||(n=(0,r.qE)(n,V.value,0)),n},B=({pace:l=0,offset:o=0,emitChange:n})=>{if(k.value<=1)return;const{active:a}=p,i=_(l),r=I(i,o);if(e.loop){if(g[0]&&r!==V.value){const e=r0;g[k.value-1].setOffset(e?-F.value:0)}}p.active=i,p.offset=r,n&&i!==a&&t("change",S.value)},P=()=>{p.swiping=!0,p.active<=-1?B({pace:k.value}):p.active>=k.value&&B({pace:-k.value})},E=()=>{P(),b.reset(),(0,u.r7)((()=>{p.swiping=!1,B({pace:-1,emitChange:!0})}))},U=()=>{P(),b.reset(),(0,u.r7)((()=>{p.swiping=!1,B({pace:1,emitChange:!0})}))};let K;const O=()=>clearTimeout(K),W=()=>{O(),+e.autoplay>0&&k.value>1&&(K=setTimeout((()=>{U(),W()}),+e.autoplay))},$=(t=+e.initialSwipe)=>{if(!a.value)return;const l=()=>{var l,o;if(!(0,s.dK)(a)){const t={width:a.value.offsetWidth,height:a.value.offsetHeight};p.rect=t,p.width=+(null!=(l=e.width)?l:t.width),p.height=+(null!=(o=e.height)?o:t.height)}k.value&&(t=Math.min(k.value-1,t),-1===t&&(t=k.value-1)),p.active=t,p.swiping=!0,p.offset=I(t),g.forEach((e=>{e.setOffset(0)})),W()};(0,s.dK)(a)?(0,o.dY)().then(l):l()},M=()=>$(p.active);let L;const N=t=>{!e.touchable||t.touches.length>1||(b.start(t),h=!1,L=Date.now(),O(),P())},X=l=>{if(e.touchable&&p.swiping&&(b.move(l),R.value)){const o=!e.loop&&(0===p.active&&C.value>0||p.active===k.value-1&&C.value<0);o||((0,s.wo)(l,e.stopPropagation),B({offset:C.value}),h||(t("dragStart",{index:S.value}),h=!0))}},z=()=>{if(!e.touchable||!p.swiping)return;const l=Date.now()-L,o=C.value/l,n=Math.abs(o)>.25||Math.abs(C.value)>y.value/2;if(n&&R.value){const t=e.vertical?b.offsetY.value:b.offsetX.value;let l=0;l=e.loop?t>0?C.value>0?-1:1:0:-Math[C.value>0?"ceil":"floor"](C.value/y.value),B({pace:l,emitChange:!0})}else C.value&&B({pace:0});h=!1,p.swiping=!1,t("dragEnd",{index:S.value}),W()},Y=(t,l={})=>{P(),b.reset(),(0,u.r7)((()=>{let o;o=e.loop&&t===k.value?0===p.active?0:t:t%k.value,l.immediate?(0,u.r7)((()=>{p.swiping=!1})):p.swiping=!1,B({pace:o-p.active,emitChange:!0})}))},D=(t,l)=>{const n=l===S.value,a=n?{backgroundColor:e.indicatorColor}:void 0;return(0,o.bF)("i",{style:a,class:m("indicator",{active:n})},null)},H=()=>l.indicator?l.indicator({active:S.value,total:k.value}):e.showIndicators&&k.value>1?(0,o.bF)("div",{class:m("indicators",{vertical:e.vertical})},[Array(k.value).fill("").map(D)]):void 0;return(0,d.c)({prev:E,next:U,state:p,resize:M,swipeTo:Y}),w({size:y,props:e,count:k,activeIndicator:S}),(0,o.wB)((()=>e.initialSwipe),(e=>$(+e))),(0,o.wB)(k,(()=>$(p.active))),(0,o.wB)((()=>e.autoplay),W),(0,o.wB)([s.Xw,s.C7,()=>e.width,()=>e.height],M),(0,o.wB)((0,u.TU)(),(e=>{"visible"===e?W():O()})),(0,o.sV)($),(0,o.n)((()=>$(p.active))),(0,v.V)((()=>$(p.active))),(0,o.Y4)(O),(0,o.xo)(O),(0,u.ML)("touchmove",X,{target:i}),()=>{var t;return(0,o.bF)("div",{ref:a,class:m()},[(0,o.bF)("div",{ref:i,style:T.value,class:m("track",{vertical:e.vertical}),onTouchstartPassive:N,onTouchend:z,onTouchcancel:z},[null==(t=l.default)?void 0:t.call(l)]),H()])}}})},9265:function(e,t,l){l.d(t,{Hp:function(){return a}});var o=l(4726),n=l(667);const a=(0,o.G)(n.Ay)}}]); \ No newline at end of file diff --git a/web/js/718.62d77b72.js b/web/js/718.62d77b72.js new file mode 100644 index 0000000..1163a54 --- /dev/null +++ b/web/js/718.62d77b72.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkset_vue"]=self["webpackChunkset_vue"]||[]).push([[718],{269:function(){},4371:function(){},679:function(e,t,n){var r=n(1625),o=TypeError;e.exports=function(e,t){if(r(t,e))return e;throw new o("Incorrect invocation")}},5002:function(e){e.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},8574:function(e,t,n){var r=n(9504),o=Error,s=r("".replace),i=function(e){return String(new o(e).stack)}("zxcasd"),a=/\n\s*at [^:]*:[^\n]*/,c=a.test(i);e.exports=function(e,t){if(c&&"string"==typeof e&&!o.prepareStackTrace)while(t--)e=s(e,a,"");return e}},3167:function(e,t,n){var r=n(4901),o=n(34),s=n(2967);e.exports=function(e,t,n){var i,a;return s&&r(i=t.constructor)&&i!==n&&o(a=i.prototype)&&a!==n.prototype&&s(e,a),e}},2603:function(e,t,n){var r=n(655);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:r(e)}},655:function(e,t,n){var r=n(6955),o=String;e.exports=function(e){if("Symbol"===r(e))throw new TypeError("Cannot convert a Symbol value to a string");return o(e)}},4979:function(e,t,n){var r=n(6518),o=n(4475),s=n(7751),i=n(6980),a=n(4913).f,c=n(9297),l=n(679),u=n(3167),d=n(2603),f=n(5002),p=n(8574),h=n(3724),m=n(6395),y="DOMException",b=s("Error"),g=s(y),w=function(){l(this,E);var e=arguments.length,t=d(e<1?void 0:arguments[0]),n=d(e<2?void 0:arguments[1],"Error"),r=new g(t,n),o=new b(t);return o.name=y,a(r,"stack",i(1,p(o.stack,1))),u(r,this,w),r},E=w.prototype=g.prototype,v="stack"in new b(y),R="stack"in new g(1,2),O=g&&h&&Object.getOwnPropertyDescriptor(o,y),S=!!O&&!(O.writable&&O.configurable),T=v&&!S&&!R;r({global:!0,constructor:!0,forced:m||T},{DOMException:T?w:g});var A=s(y),C=A.prototype;if(C.constructor!==A)for(var x in m||a(C,"constructor",i(1,A)),f)if(c(f,x)){var N=f[x],_=N.s;c(A,_)||a(A,_,i(6,N.c))}},4603:function(e,t,n){var r=n(6840),o=n(9504),s=n(655),i=n(2812),a=URLSearchParams,c=a.prototype,l=o(c.append),u=o(c["delete"]),d=o(c.forEach),f=o([].push),p=new a("a=1&a=2&b=3");p["delete"]("a",1),p["delete"]("b",void 0),p+""!=="a=2"&&r(c,"delete",(function(e){var t=arguments.length,n=t<2?void 0:arguments[1];if(t&&void 0===n)return u(this,e);var r=[];d(this,(function(e,t){f(r,{key:t,value:e})})),i(t,1);var o,a=s(e),c=s(n),p=0,h=0,m=!1,y=r.length;while(pt=>{const n=s.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),c=e=>(e=e.toLowerCase(),t=>a(t)===e),l=e=>t=>typeof t===e,{isArray:u}=Array,d=l("undefined");function f(e){return null!==e&&!d(e)&&null!==e.constructor&&!d(e.constructor)&&y(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const p=c("ArrayBuffer");function h(e){let t;return t="undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&p(e.buffer),t}const m=l("string"),y=l("function"),b=l("number"),g=e=>null!==e&&"object"===typeof e,w=e=>!0===e||!1===e,E=e=>{if("object"!==a(e))return!1;const t=i(e);return(null===t||t===Object.prototype||null===Object.getPrototypeOf(t))&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},v=c("Date"),R=c("File"),O=c("Blob"),S=c("FileList"),T=e=>g(e)&&y(e.pipe),A=e=>{let t;return e&&("function"===typeof FormData&&e instanceof FormData||y(e.append)&&("formdata"===(t=a(e))||"object"===t&&y(e.toString)&&"[object FormData]"===e.toString()))},C=c("URLSearchParams"),[x,N,_,k]=["ReadableStream","Request","Response","Headers"].map(c),P=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function B(e,t,{allOwnKeys:n=!1}={}){if(null===e||"undefined"===typeof e)return;let r,o;if("object"!==typeof e&&(e=[e]),u(e))for(r=0,o=e.length;r0)if(r=n[o],t===r.toLowerCase())return r;return null}const F=(()=>"undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self?self:"undefined"!==typeof window?window:global)(),D=e=>!d(e)&&e!==F;function j(){const{caseless:e}=D(this)&&this||{},t={},n=(n,r)=>{const o=e&&L(t,r)||r;E(t[o])&&E(n)?t[o]=j(t[o],n):E(n)?t[o]=j({},n):u(n)?t[o]=n.slice():t[o]=n};for(let r=0,o=arguments.length;r(B(t,((t,r)=>{n&&y(t)?e[r]=o(t,n):e[r]=t}),{allOwnKeys:r}),e),U=e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),z=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},M=(e,t,n,r)=>{let o,s,a;const c={};if(t=t||{},null==e)return t;do{o=Object.getOwnPropertyNames(e),s=o.length;while(s-- >0)a=o[s],r&&!r(a,e,t)||c[a]||(t[a]=e[a],c[a]=!0);e=!1!==n&&i(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},q=(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},H=e=>{if(!e)return null;if(u(e))return e;let t=e.length;if(!b(t))return null;const n=new Array(t);while(t-- >0)n[t]=e[t];return n},V=(e=>t=>e&&t instanceof e)("undefined"!==typeof Uint8Array&&i(Uint8Array)),K=(e,t)=>{const n=e&&e[Symbol.iterator],r=n.call(e);let o;while((o=r.next())&&!o.done){const n=o.value;t.call(e,n[0],n[1])}},W=(e,t)=>{let n;const r=[];while(null!==(n=e.exec(t)))r.push(n);return r},J=c("HTMLFormElement"),$=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),X=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),G=c("RegExp"),Q=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};B(n,((n,o)=>{let s;!1!==(s=t(n,o,e))&&(r[o]=s||n)})),Object.defineProperties(e,r)},Y=e=>{Q(e,((t,n)=>{if(y(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];y(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},Z=(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return u(e)?r(e):r(String(e).split(t)),n},ee=()=>{},te=(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,ne="abcdefghijklmnopqrstuvwxyz",re="0123456789",oe={DIGIT:re,ALPHA:ne,ALPHA_DIGIT:ne+ne.toUpperCase()+re},se=(e=16,t=oe.ALPHA_DIGIT)=>{let n="";const{length:r}=t;while(e--)n+=t[Math.random()*r|0];return n};function ie(e){return!!(e&&y(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])}const ae=e=>{const t=new Array(10),n=(e,r)=>{if(g(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=u(e)?[]:{};return B(e,((e,t)=>{const s=n(e,r+1);!d(s)&&(o[t]=s)})),t[r]=void 0,o}}return e};return n(e,0)},ce=c("AsyncFunction"),le=e=>e&&(g(e)||y(e))&&y(e.then)&&y(e.catch);var ue={isArray:u,isArrayBuffer:p,isBuffer:f,isFormData:A,isArrayBufferView:h,isString:m,isNumber:b,isBoolean:w,isObject:g,isPlainObject:E,isReadableStream:x,isRequest:N,isResponse:_,isHeaders:k,isUndefined:d,isDate:v,isFile:R,isBlob:O,isRegExp:G,isFunction:y,isStream:T,isURLSearchParams:C,isTypedArray:V,isFileList:S,forEach:B,merge:j,extend:I,trim:P,stripBOM:U,inherits:z,toFlatObject:M,kindOf:a,kindOfTest:c,endsWith:q,toArray:H,forEachEntry:K,matchAll:W,isHTMLForm:J,hasOwnProperty:X,hasOwnProp:X,reduceDescriptors:Q,freezeMethods:Y,toObjectSet:Z,toCamelCase:$,noop:ee,toFiniteNumber:te,findKey:L,global:F,isContextDefined:D,ALPHABET:oe,generateString:se,isSpecCompliantForm:ie,toJSONObject:ae,isAsyncFn:ce,isThenable:le};function de(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}ue.inherits(de,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ue.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const fe=de.prototype,pe={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{pe[e]={value:e}})),Object.defineProperties(de,pe),Object.defineProperty(fe,"isAxiosError",{value:!0}),de.from=(e,t,n,r,o,s)=>{const i=Object.create(fe);return ue.toFlatObject(e,i,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),de.call(i,e.message,t,n,r,o),i.cause=e,i.name=e.name,s&&Object.assign(i,s),i};var he=de,me=null;function ye(e){return ue.isPlainObject(e)||ue.isArray(e)}function be(e){return ue.endsWith(e,"[]")?e.slice(0,-2):e}function ge(e,t,n){return e?e.concat(t).map((function(e,t){return e=be(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}function we(e){return ue.isArray(e)&&!e.some(ye)}const Ee=ue.toFlatObject(ue,{},null,(function(e){return/^is[A-Z]/.test(e)}));function ve(e,t,n){if(!ue.isObject(e))throw new TypeError("target must be an object");t=t||new(me||FormData),n=ue.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!ue.isUndefined(t[e])}));const r=n.metaTokens,o=n.visitor||u,s=n.dots,i=n.indexes,a=n.Blob||"undefined"!==typeof Blob&&Blob,c=a&&ue.isSpecCompliantForm(t);if(!ue.isFunction(o))throw new TypeError("visitor must be a function");function l(e){if(null===e)return"";if(ue.isDate(e))return e.toISOString();if(!c&&ue.isBlob(e))throw new he("Blob is not supported. Use a Buffer instead.");return ue.isArrayBuffer(e)||ue.isTypedArray(e)?c&&"function"===typeof Blob?new Blob([e]):Buffer.from(e):e}function u(e,n,o){let a=e;if(e&&!o&&"object"===typeof e)if(ue.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(ue.isArray(e)&&we(e)||(ue.isFileList(e)||ue.endsWith(n,"[]"))&&(a=ue.toArray(e)))return n=be(n),a.forEach((function(e,r){!ue.isUndefined(e)&&null!==e&&t.append(!0===i?ge([n],r,s):null===i?n:n+"[]",l(e))})),!1;return!!ye(e)||(t.append(ge(o,n,s),l(e)),!1)}const d=[],f=Object.assign(Ee,{defaultVisitor:u,convertValue:l,isVisitable:ye});function p(e,n){if(!ue.isUndefined(e)){if(-1!==d.indexOf(e))throw Error("Circular reference detected in "+n.join("."));d.push(e),ue.forEach(e,(function(e,r){const s=!(ue.isUndefined(e)||null===e)&&o.call(t,e,ue.isString(r)?r.trim():r,n,f);!0===s&&p(e,n?n.concat(r):[r])})),d.pop()}}if(!ue.isObject(e))throw new TypeError("data must be an object");return p(e),t}var Re=ve;function Oe(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Se(e,t){this._pairs=[],e&&Re(e,this,t)}const Te=Se.prototype;Te.append=function(e,t){this._pairs.push([e,t])},Te.toString=function(e){const t=e?function(t){return e.call(this,t,Oe)}:Oe;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var Ae=Se;function Ce(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function xe(e,t,n){if(!t)return e;const r=n&&n.encode||Ce,o=n&&n.serialize;let s;if(s=o?o(t,n):ue.isURLSearchParams(t)?t.toString():new Ae(t,n).toString(r),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}class Ne{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){ue.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}var _e=Ne,ke={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Pe=(n(4603),n(7566),n(8721),"undefined"!==typeof URLSearchParams?URLSearchParams:Ae),Be="undefined"!==typeof FormData?FormData:null,Le="undefined"!==typeof Blob?Blob:null,Fe={isBrowser:!0,classes:{URLSearchParams:Pe,FormData:Be,Blob:Le},protocols:["http","https","file","blob","url","data"]};const De="undefined"!==typeof window&&"undefined"!==typeof document,je=(e=>De&&["ReactNative","NativeScript","NS"].indexOf(e)<0)("undefined"!==typeof navigator&&navigator.product),Ie=(()=>"undefined"!==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"===typeof self.importScripts)(),Ue=De&&window.location.href||"http://localhost";var ze={...r,...Fe};function Me(e,t){return Re(e,new ze.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return ze.isNode&&ue.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}function qe(e){return ue.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}function He(e){const t={},n=Object.keys(e);let r;const o=n.length;let s;for(r=0;r=e.length;if(s=!s&&ue.isArray(r)?r.length:s,a)return ue.hasOwnProp(r,s)?r[s]=[r[s],n]:r[s]=n,!i;r[s]&&ue.isObject(r[s])||(r[s]=[]);const c=t(e,n,r[s],o);return c&&ue.isArray(r[s])&&(r[s]=He(r[s])),!i}if(ue.isFormData(e)&&ue.isFunction(e.entries)){const n={};return ue.forEachEntry(e,((e,r)=>{t(qe(e),r,n,0)})),n}return null}var Ke=Ve;function We(e,t,n){if(ue.isString(e))try{return(t||JSON.parse)(e),ue.trim(e)}catch(r){if("SyntaxError"!==r.name)throw r}return(n||JSON.stringify)(e)}const Je={transitional:ke,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=ue.isObject(e);o&&ue.isHTMLForm(e)&&(e=new FormData(e));const s=ue.isFormData(e);if(s)return r?JSON.stringify(Ke(e)):e;if(ue.isArrayBuffer(e)||ue.isBuffer(e)||ue.isStream(e)||ue.isFile(e)||ue.isBlob(e)||ue.isReadableStream(e))return e;if(ue.isArrayBufferView(e))return e.buffer;if(ue.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let i;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return Me(e,this.formSerializer).toString();if((i=ue.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Re(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),We(e)):e}],transformResponse:[function(e){const t=this.transitional||Je.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(ue.isResponse(e)||ue.isReadableStream(e))return e;if(e&&ue.isString(e)&&(n&&!this.responseType||r)){const n=t&&t.silentJSONParsing,s=!n&&r;try{return JSON.parse(e)}catch(o){if(s){if("SyntaxError"===o.name)throw he.from(o,he.ERR_BAD_RESPONSE,this,null,this.response);throw o}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ze.classes.FormData,Blob:ze.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ue.forEach(["delete","get","head","post","put","patch"],(e=>{Je.headers[e]={}}));var $e=Je;const Xe=ue.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);var Ge=e=>{const t={};let n,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&Xe[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t};const Qe=Symbol("internals");function Ye(e){return e&&String(e).trim().toLowerCase()}function Ze(e){return!1===e||null==e?e:ue.isArray(e)?e.map(Ze):String(e)}function et(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;while(r=n.exec(e))t[r[1]]=r[2];return t}const tt=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function nt(e,t,n,r,o){return ue.isFunction(r)?r.call(this,t,n):(o&&(t=n),ue.isString(t)?ue.isString(r)?-1!==t.indexOf(r):ue.isRegExp(r)?r.test(t):void 0:void 0)}function rt(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}function ot(e,t){const n=ue.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})}))}class st{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=Ye(t);if(!o)throw new Error("header name must be a non-empty string");const s=ue.findKey(r,o);(!s||void 0===r[s]||!0===n||void 0===n&&!1!==r[s])&&(r[s||t]=Ze(e))}const s=(e,t)=>ue.forEach(e,((e,n)=>o(e,n,t)));if(ue.isPlainObject(e)||e instanceof this.constructor)s(e,t);else if(ue.isString(e)&&(e=e.trim())&&!tt(e))s(Ge(e),t);else if(ue.isHeaders(e))for(const[i,a]of e.entries())o(a,i,n);else null!=e&&o(t,e,n);return this}get(e,t){if(e=Ye(e),e){const n=ue.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return et(e);if(ue.isFunction(t))return t.call(this,e,n);if(ue.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Ye(e),e){const n=ue.findKey(this,e);return!(!n||void 0===this[n]||t&&!nt(this,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=Ye(e),e){const o=ue.findKey(n,e);!o||t&&!nt(n,n[o],o,t)||(delete n[o],r=!0)}}return ue.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;while(n--){const o=t[n];e&&!nt(this,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return ue.forEach(this,((r,o)=>{const s=ue.findKey(n,o);if(s)return t[s]=Ze(r),void delete t[o];const i=e?rt(o):String(o).trim();i!==o&&delete t[o],t[i]=Ze(r),n[i]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return ue.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&ue.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=this[Qe]=this[Qe]={accessors:{}},n=t.accessors,r=this.prototype;function o(e){const t=Ye(e);n[t]||(ot(r,e),n[t]=!0)}return ue.isArray(e)?e.forEach(o):o(e),this}}st.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),ue.reduceDescriptors(st.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),ue.freezeMethods(st);var it=st;function at(e,t){const n=this||$e,r=t||n,o=it.from(r.headers);let s=r.data;return ue.forEach(e,(function(e){s=e.call(n,s,o.normalize(),t?t.status:void 0)})),o.normalize(),s}function ct(e){return!(!e||!e.__CANCEL__)}function lt(e,t,n){he.call(this,null==e?"canceled":e,he.ERR_CANCELED,t,n),this.name="CanceledError"}ue.inherits(lt,he,{__CANCEL__:!0});var ut=lt;function dt(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new he("Request failed with status code "+n.status,[he.ERR_BAD_REQUEST,he.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}function ft(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function pt(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,s=0,i=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),l=r[i];o||(o=c),n[s]=a,r[s]=c;let u=i,d=0;while(u!==s)d+=n[u++],u%=e;if(s=(s+1)%e,s===i&&(i=(i+1)%e),c-or)return o&&(clearTimeout(o),o=null),n=s,e.apply(null,arguments);o||(o=setTimeout((()=>(o=null,n=Date.now(),e.apply(null,arguments))),r-(s-n)))}}var yt=mt,bt=(e,t,n=3)=>{let r=0;const o=ht(50,250);return yt((n=>{const s=n.loaded,i=n.lengthComputable?n.total:void 0,a=s-r,c=o(a),l=s<=i;r=s;const u={loaded:s,total:i,progress:i?s/i:void 0,bytes:a,rate:c||void 0,estimated:c&&i&&l?(i-s)/c:void 0,event:n,lengthComputable:null!=i};u[t?"download":"upload"]=!0,e(u)}),n)},gt=(n(4979),ze.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=ue.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return function(){return!0}}()),wt=ze.hasStandardBrowserEnv?{write(e,t,n,r,o,s){const i=[e+"="+encodeURIComponent(t)];ue.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),ue.isString(r)&&i.push("path="+r),ue.isString(o)&&i.push("domain="+o),!0===s&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Et(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function vt(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Rt(e,t){return e&&!Et(t)?vt(e,t):t}const Ot=e=>e instanceof it?{...e}:e;function St(e,t){t=t||{};const n={};function r(e,t,n){return ue.isPlainObject(e)&&ue.isPlainObject(t)?ue.merge.call({caseless:n},e,t):ue.isPlainObject(t)?ue.merge({},t):ue.isArray(t)?t.slice():t}function o(e,t,n){return ue.isUndefined(t)?ue.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function s(e,t){if(!ue.isUndefined(t))return r(void 0,t)}function i(e,t){return ue.isUndefined(t)?ue.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function a(n,o,s){return s in t?r(n,o):s in e?r(void 0,n):void 0}const c={url:s,method:s,data:s,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(e,t)=>o(Ot(e),Ot(t),!0)};return ue.forEach(Object.keys(Object.assign({},e,t)),(function(r){const s=c[r]||o,i=s(e[r],t[r],r);ue.isUndefined(i)&&s!==a||(n[r]=i)})),n}var Tt=e=>{const t=St({},e);let n,{data:r,withXSRFToken:o,xsrfHeaderName:s,xsrfCookieName:i,headers:a,auth:c}=t;if(t.headers=a=it.from(a),t.url=xe(Rt(t.baseURL,t.url),e.params,e.paramsSerializer),c&&a.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),ue.isFormData(r))if(ze.hasStandardBrowserEnv||ze.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(!1!==(n=a.getContentType())){const[e,...t]=n?n.split(";").map((e=>e.trim())).filter(Boolean):[];a.setContentType([e||"multipart/form-data",...t].join("; "))}if(ze.hasStandardBrowserEnv&&(o&&ue.isFunction(o)&&(o=o(t)),o||!1!==o&>(t.url))){const e=s&&i&&wt.read(i);e&&a.set(s,e)}return t};const At="undefined"!==typeof XMLHttpRequest;var Ct=At&&function(e){return new Promise((function(t,n){const r=Tt(e);let o=r.data;const s=it.from(r.headers).normalize();let i,{responseType:a}=r;function c(){r.cancelToken&&r.cancelToken.unsubscribe(i),r.signal&&r.signal.removeEventListener("abort",i)}let l=new XMLHttpRequest;function u(){if(!l)return;const r=it.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders()),o=a&&"text"!==a&&"json"!==a?l.response:l.responseText,s={data:o,status:l.status,statusText:l.statusText,headers:r,config:e,request:l};dt((function(e){t(e),c()}),(function(e){n(e),c()}),s),l=null}l.open(r.method.toUpperCase(),r.url,!0),l.timeout=r.timeout,"onloadend"in l?l.onloadend=u:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(u)},l.onabort=function(){l&&(n(new he("Request aborted",he.ECONNABORTED,r,l)),l=null)},l.onerror=function(){n(new he("Network Error",he.ERR_NETWORK,r,l)),l=null},l.ontimeout=function(){let e=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const t=r.transitional||ke;r.timeoutErrorMessage&&(e=r.timeoutErrorMessage),n(new he(e,t.clarifyTimeoutError?he.ETIMEDOUT:he.ECONNABORTED,r,l)),l=null},void 0===o&&s.setContentType(null),"setRequestHeader"in l&&ue.forEach(s.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),ue.isUndefined(r.withCredentials)||(l.withCredentials=!!r.withCredentials),a&&"json"!==a&&(l.responseType=r.responseType),"function"===typeof r.onDownloadProgress&&l.addEventListener("progress",bt(r.onDownloadProgress,!0)),"function"===typeof r.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",bt(r.onUploadProgress)),(r.cancelToken||r.signal)&&(i=t=>{l&&(n(!t||t.type?new ut(null,e,l):t),l.abort(),l=null)},r.cancelToken&&r.cancelToken.subscribe(i),r.signal&&(r.signal.aborted?i():r.signal.addEventListener("abort",i)));const d=ft(r.url);d&&-1===ze.protocols.indexOf(d)?n(new he("Unsupported protocol "+d+":",he.ERR_BAD_REQUEST,e)):l.send(o||null)}))};const xt=(e,t)=>{let n,r=new AbortController;const o=function(e){if(!n){n=!0,i();const t=e instanceof Error?e:this.reason;r.abort(t instanceof he?t:new ut(t instanceof Error?t.message:t))}};let s=t&&setTimeout((()=>{o(new he(`timeout ${t} of ms exceeded`,he.ETIMEDOUT))}),t);const i=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach((e=>{e&&(e.removeEventListener?e.removeEventListener("abort",o):e.unsubscribe(o))})),e=null)};e.forEach((e=>e&&e.addEventListener&&e.addEventListener("abort",o)));const{signal:a}=r;return a.unsubscribe=i,[a,()=>{s&&clearTimeout(s),s=null}]};var Nt=xt;const _t=function*(e,t){let n=e.byteLength;if(!t||n{const s=kt(e,t,o);let i=0;return new ReadableStream({type:"bytes",async pull(e){const{done:t,value:o}=await s.next();if(t)return e.close(),void r();let a=o.byteLength;n&&n(i+=a),e.enqueue(new Uint8Array(o))},cancel(e){return r(e),s.return()}},{highWaterMark:2})},Bt=(e,t)=>{const n=null!=e;return r=>setTimeout((()=>t({lengthComputable:n,total:e,loaded:r})))},Lt="function"===typeof fetch&&"function"===typeof Request&&"function"===typeof Response,Ft=Lt&&"function"===typeof ReadableStream,Dt=Lt&&("function"===typeof TextEncoder?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),jt=Ft&&(()=>{let e=!1;const t=new Request(ze.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t})(),It=65536,Ut=Ft&&!!(()=>{try{return ue.isReadableStream(new Response("").body)}catch(e){}})(),zt={stream:Ut&&(e=>e.body)};Lt&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach((t=>{!zt[t]&&(zt[t]=ue.isFunction(e[t])?e=>e[t]():(e,n)=>{throw new he(`Response type '${t}' is not supported`,he.ERR_NOT_SUPPORT,n)})}))})(new Response);const Mt=async e=>null==e?0:ue.isBlob(e)?e.size:ue.isSpecCompliantForm(e)?(await new Request(e).arrayBuffer()).byteLength:ue.isArrayBufferView(e)?e.byteLength:(ue.isURLSearchParams(e)&&(e+=""),ue.isString(e)?(await Dt(e)).byteLength:void 0),qt=async(e,t)=>{const n=ue.toFiniteNumber(e.getContentLength());return null==n?Mt(t):n};var Ht=Lt&&(async e=>{let{url:t,method:n,data:r,signal:o,cancelToken:s,timeout:i,onDownloadProgress:a,onUploadProgress:c,responseType:l,headers:u,withCredentials:d="same-origin",fetchOptions:f}=Tt(e);l=l?(l+"").toLowerCase():"text";let p,h,[m,y]=o||s||i?Nt([o,s],i):[];const b=()=>{!p&&setTimeout((()=>{m&&m.unsubscribe()})),p=!0};let g;try{if(c&&jt&&"get"!==n&&"head"!==n&&0!==(g=await qt(u,r))){let e,n=new Request(t,{method:"POST",body:r,duplex:"half"});ue.isFormData(r)&&(e=n.headers.get("content-type"))&&u.setContentType(e),n.body&&(r=Pt(n.body,It,Bt(g,bt(c)),null,Dt))}ue.isString(d)||(d=d?"cors":"omit"),h=new Request(t,{...f,signal:m,method:n.toUpperCase(),headers:u.normalize().toJSON(),body:r,duplex:"half",withCredentials:d});let o=await fetch(h);const s=Ut&&("stream"===l||"response"===l);if(Ut&&(a||s)){const e={};["status","statusText","headers"].forEach((t=>{e[t]=o[t]}));const t=ue.toFiniteNumber(o.headers.get("content-length"));o=new Response(Pt(o.body,It,a&&Bt(t,bt(a,!0)),s&&b,Dt),e)}l=l||"text";let i=await zt[ue.findKey(zt,l)||"text"](o,e);return!s&&b(),y&&y(),await new Promise(((t,n)=>{dt(t,n,{data:i,headers:it.from(o.headers),status:o.status,statusText:o.statusText,config:e,request:h})}))}catch(w){if(b(),w&&"TypeError"===w.name&&/fetch/i.test(w.message))throw Object.assign(new he("Network Error",he.ERR_NETWORK,e,h),{cause:w.cause||w});throw he.from(w,w&&w.code,e,h)}});const Vt={http:me,xhr:Ct,fetch:Ht};ue.forEach(Vt,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(n){}Object.defineProperty(e,"adapterName",{value:t})}}));const Kt=e=>`- ${e}`,Wt=e=>ue.isFunction(e)||null===e||!1===e;var Jt={getAdapter:e=>{e=ue.isArray(e)?e:[e];const{length:t}=e;let n,r;const o={};for(let s=0;s`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));let n=t?e.length>1?"since :\n"+e.map(Kt).join("\n"):" "+Kt(e[0]):"as no adapter specified";throw new he("There is no suitable adapter to dispatch the request "+n,"ERR_NOT_SUPPORT")}return r},adapters:Vt};function $t(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ut(null,e)}function Xt(e){$t(e),e.headers=it.from(e.headers),e.data=at.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);const t=Jt.getAdapter(e.adapter||$e.adapter);return t(e).then((function(t){return $t(e),t.data=at.call(e,e.transformResponse,t),t.headers=it.from(t.headers),t}),(function(t){return ct(t)||($t(e),t&&t.response&&(t.response.data=at.call(e,e.transformResponse,t.response),t.response.headers=it.from(t.response.headers))),Promise.reject(t)}))}const Gt="1.7.2",Qt={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Qt[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const Yt={};function Zt(e,t,n){if("object"!==typeof e)throw new he("options must be an object",he.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;while(o-- >0){const s=r[o],i=t[s];if(i){const t=e[s],n=void 0===t||i(t,s,e);if(!0!==n)throw new he("option "+s+" must be "+n,he.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new he("Unknown option "+s,he.ERR_BAD_OPTION)}}Qt.transitional=function(e,t,n){function r(e,t){return"[Axios v"+Gt+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,s)=>{if(!1===e)throw new he(r(o," has been removed"+(t?" in "+t:"")),he.ERR_DEPRECATED);return t&&!Yt[o]&&(Yt[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,s)}};var en={assertOptions:Zt,validators:Qt};const tn=en.validators;class nn{constructor(e){this.defaults=e,this.interceptors={request:new _e,response:new _e}}async request(e,t){try{return await this._request(e,t)}catch(n){if(n instanceof Error){let e;Error.captureStackTrace?Error.captureStackTrace(e={}):e=new Error;const t=e.stack?e.stack.replace(/^.+\n/,""):"";try{n.stack?t&&!String(n.stack).endsWith(t.replace(/^.+\n.+\n/,""))&&(n.stack+="\n"+t):n.stack=t}catch(r){}}throw n}}_request(e,t){"string"===typeof e?(t=t||{},t.url=e):t=e||{},t=St(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&en.assertOptions(n,{silentJSONParsing:tn.transitional(tn.boolean),forcedJSONParsing:tn.transitional(tn.boolean),clarifyTimeoutError:tn.transitional(tn.boolean)},!1),null!=r&&(ue.isFunction(r)?t.paramsSerializer={serialize:r}:en.assertOptions(r,{encode:tn.function,serialize:tn.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=o&&ue.merge(o.common,o[t.method]);o&&ue.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=it.concat(s,o);const i=[];let a=!0;this.interceptors.request.forEach((function(e){"function"===typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,i.unshift(e.fulfilled,e.rejected))}));const c=[];let l;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let u,d=0;if(!a){const e=[Xt.bind(this),void 0];e.unshift.apply(e,i),e.push.apply(e,c),u=e.length,l=Promise.resolve(t);while(d{if(!n._listeners)return;let t=n._listeners.length;while(t-- >0)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,o){n.reason||(n.reason=new ut(e,r,o),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;const t=new on((function(t){e=t}));return{token:t,cancel:e}}}var sn=on;function an(e){return function(t){return e.apply(null,t)}}function cn(e){return ue.isObject(e)&&!0===e.isAxiosError}const ln={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(ln).forEach((([e,t])=>{ln[t]=e}));var un=ln;function dn(e){const t=new rn(e),n=o(rn.prototype.request,t);return ue.extend(n,rn.prototype,t,{allOwnKeys:!0}),ue.extend(n,t,null,{allOwnKeys:!0}),n.create=function(t){return dn(St(e,t))},n}const fn=dn($e);fn.Axios=rn,fn.CanceledError=ut,fn.CancelToken=sn,fn.isCancel=ct,fn.VERSION=Gt,fn.toFormData=Re,fn.AxiosError=he,fn.Cancel=fn.CanceledError,fn.all=function(e){return Promise.all(e)},fn.spread=an,fn.isAxiosError=cn,fn.mergeConfig=St,fn.AxiosHeaders=it,fn.formToJSON=e=>Ke(ue.isHTMLForm(e)?new FormData(e):e),fn.getAdapter=Jt.getAdapter,fn.HttpStatusCode=un,fn.default=fn;var pn=fn},122:function(e,t,n){n.d(t,{$n:function(){return b}});var r=n(4726),o=n(6768),s=n(5828),i=n(8442),a=n(6370),c=n(240),l=n(4612),u=n(4548),d=n(5632),f=n(2094);const[p,h]=(0,s.YX)("button"),m=(0,i.X$)({},u.aI,{tag:(0,a.Ts)("button"),text:String,icon:String,type:(0,a.Ts)("default"),size:(0,a.Ts)("normal"),color:String,block:Boolean,plain:Boolean,round:Boolean,square:Boolean,loading:Boolean,hairline:Boolean,disabled:Boolean,iconPrefix:String,nativeType:(0,a.Ts)("button"),loadingSize:a.VQ,loadingText:String,loadingType:String,iconPosition:(0,a.Ts)("left")});var y=(0,o.pM)({name:p,props:m,emits:["click"],setup(e,{emit:t,slots:n}){const r=(0,u.lq)(),s=()=>n.loading?n.loading():(0,o.bF)(f.Rh,{size:e.loadingSize,type:e.loadingType,class:h("loading")},null),i=()=>e.loading?s():n.icon?(0,o.bF)("div",{class:h("icon")},[n.icon()]):e.icon?(0,o.bF)(d.In,{name:e.icon,class:h("icon"),classPrefix:e.iconPrefix},null):void 0,a=()=>{let t;if(t=e.loading?e.loadingText:n.default?n.default():e.text,t)return(0,o.bF)("span",{class:h("text")},[t])},p=()=>{const{color:t,plain:n}=e;if(t){const e={color:n?t:"white"};return n||(e.background=t),t.includes("gradient")?e.border=0:e.borderColor=t,e}},m=n=>{e.loading?(0,c.wo)(n):e.disabled||(t("click",n),r())};return()=>{const{tag:t,type:n,size:r,block:s,round:c,plain:u,square:d,loading:f,disabled:y,hairline:b,nativeType:g,iconPosition:w}=e,E=[h([n,r,{plain:u,block:s,round:c,square:d,loading:f,disabled:y,hairline:b}]),{[l.kw]:b}];return(0,o.bF)(t,{type:g,class:E,style:p(),disabled:y,onClick:m},{default:()=>[(0,o.bF)("div",{class:h("content")},["left"===w&&i(),a(),"right"===w&&i()])]})}}});const b=(0,r.G)(y)},9998:function(e,t,n){n(6647),n(7708),n(7484),n(7265)},3064:function(e,t,n){n.d(t,{zD:function(){return F}});var r=n(4726),o=n(6768),s=n(5130),i=n(144),a=n(7684),c=n(8442),l=n(6370),u=n(5828),d=n(9725),f=n(4612),p=n(6591),h=n(6145),m=n(4390),y=n(240);let b=0;const g="van-overflow-hidden";function w(e,t){const n=(0,m.P)(),r="01",s="10",i=t=>{n.move(t);const o=n.deltaY.value>0?s:r,i=(0,p.mH)(t.target,e.value),{scrollHeight:a,offsetHeight:c,scrollTop:l}=i;let u="11";0===l?u=c>=a?"00":"01":l+c>=a&&(u="10"),"11"===u||!n.isVertical()||parseInt(u,2)&parseInt(o,2)||(0,y.wo)(t,!0)},a=()=>{document.addEventListener("touchstart",n.start),document.addEventListener("touchmove",i,{passive:!1}),b||document.body.classList.add(g),b++},c=()=>{b&&(document.removeEventListener("touchstart",n.start),document.removeEventListener("touchmove",i),b--,b||document.body.classList.remove(g))},l=()=>t()&&a(),u=()=>t()&&c();(0,p.kz)(l),(0,o.Y4)(u),(0,o.xo)(u),(0,o.wB)(t,(e=>{e?a():c()}))}function E(e){const t=(0,i.KR)(!1);return(0,o.wB)(e,(e=>{e&&(t.value=e)}),{immediate:!0}),e=>()=>t.value?e():null}var v=n(8957),R=n(6438),O=n(1483),S=n(5632),T=n(7905);const[A,C]=(0,u.YX)("overlay"),x={show:Boolean,zIndex:l.VQ,duration:l.VQ,className:l.E9,lockScroll:l.Rd,lazyRender:l.Rd,customStyle:Object};var N=(0,o.pM)({name:A,props:x,setup(e,{slots:t}){const n=(0,i.KR)(),r=E((()=>e.show||!e.lazyRender)),a=t=>{e.lockScroll&&(0,y.wo)(t,!0)},l=r((()=>{var r;const i=(0,c.X$)((0,T.AO)(e.zIndex),e.customStyle);return(0,c.C8)(e.duration)&&(i.animationDuration=`${e.duration}s`),(0,o.bo)((0,o.bF)("div",{ref:n,style:i,class:[C(),e.className]},[null==(r=t.default)?void 0:r.call(t)]),[[s.aG,e.show]])}));return(0,p.ML)("touchmove",a,{target:n}),()=>(0,o.bF)(s.eB,{name:"van-fade",appear:!0},{default:l})}});const _=(0,r.G)(N);const k=(0,c.X$)({},a.C,{round:Boolean,position:(0,l.Ts)("center"),closeIcon:(0,l.Ts)("cross"),closeable:Boolean,transition:String,iconPrefix:String,closeOnPopstate:Boolean,closeIconPosition:(0,l.Ts)("top-right"),safeAreaInsetTop:Boolean,safeAreaInsetBottom:Boolean}),[P,B]=(0,u.YX)("popup");var L=(0,o.pM)({name:P,inheritAttrs:!1,props:k,emits:["open","close","opened","closed","keydown","update:show","clickOverlay","clickCloseIcon"],setup(e,{emit:t,attrs:n,slots:r}){let a,l;const u=(0,i.KR)(),m=(0,i.KR)(),y=E((()=>e.show||!e.lazyRender)),b=(0,o.EW)((()=>{const t={zIndex:u.value};if((0,c.C8)(e.duration)){const n="center"===e.position?"animationDuration":"transitionDuration";t[n]=`${e.duration}s`}return t})),g=()=>{a||(a=!0,u.value=void 0!==e.zIndex?+e.zIndex:(0,R.v)(),t("open"))},T=()=>{a&&(0,d.m)(e.beforeClose,{done(){a=!1,t("close"),t("update:show",!1)}})},A=n=>{t("clickOverlay",n),e.closeOnClickOverlay&&T()},C=()=>{if(e.overlay)return(0,o.bF)(_,(0,o.v6)({show:e.show,class:e.overlayClass,zIndex:u.value,duration:e.duration,customStyle:e.overlayStyle,role:e.closeOnClickOverlay?"button":void 0,tabindex:e.closeOnClickOverlay?0:void 0},(0,O.b)(),{onClick:A}),{default:r["overlay-content"]})},x=e=>{t("clickCloseIcon",e),T()},N=()=>{if(e.closeable)return(0,o.bF)(S.In,{role:"button",tabindex:0,name:e.closeIcon,class:[B("close-icon",e.closeIconPosition),f.Dk],classPrefix:e.iconPrefix,onClick:x},null)};let k;const P=()=>{k&&clearTimeout(k),k=setTimeout((()=>{t("opened")}))},L=()=>t("closed"),F=e=>t("keydown",e),D=y((()=>{var t;const{round:i,position:a,safeAreaInsetTop:c,safeAreaInsetBottom:l}=e;return(0,o.bo)((0,o.bF)("div",(0,o.v6)({ref:m,style:b.value,role:"dialog",tabindex:0,class:[B({round:i,[a]:a}),{"van-safe-area-top":c,"van-safe-area-bottom":l}],onKeydown:F},n,(0,O.b)()),[null==(t=r.default)?void 0:t.call(r),N()]),[[s.aG,e.show]])})),j=()=>{const{position:t,transition:n,transitionAppear:r}=e,i="center"===t?"van-fade":`van-popup-slide-${t}`;return(0,o.bF)(s.eB,{name:n||i,appear:r,onAfterEnter:P,onAfterLeave:L},{default:D})};return(0,o.wB)((()=>e.show),(e=>{e&&!a&&(g(),0===n.tabindex&&(0,o.dY)((()=>{var e;null==(e=m.value)||e.focus()}))),!e&&a&&(a=!1,t("close"))})),(0,h.c)({popupRef:m}),w(m,(()=>e.show&&e.lockScroll)),(0,p.ML)("popstate",(()=>{e.closeOnPopstate&&(T(),l=!1)})),(0,o.sV)((()=>{e.show&&g()})),(0,o.n)((()=>{l&&(t("update:show",!0),l=!1)})),(0,o.Y4)((()=>{e.show&&e.teleport&&(T(),l=!0)})),(0,o.Gt)(v.q,(()=>e.show)),()=>e.teleport?(0,o.bF)(o.Im,{to:e.teleport},{default:()=>[C(),j()]}):(0,o.bF)(o.FK,null,[C(),j()])}});const F=(0,r.G)(L)},7684:function(e,t,n){n.d(t,{C:function(){return o},r:function(){return s}});var r=n(6370);const o={show:Boolean,zIndex:r.VQ,overlay:r.Rd,duration:r.VQ,teleport:[String,Object],lockScroll:r.Rd,lazyRender:r.Rd,beforeClose:Function,overlayStyle:Object,overlayClass:r.E9,transitionAppear:Boolean,closeOnClickOverlay:r.Rd},s=Object.keys(o)},6596:function(e,t,n){n.d(t,{A:function(){return y}});var r=n(6768),o=n(5828),s=n(6370),i=n(8442);let a=0;function c(e){e?(a||document.body.classList.add("van-toast--unclickable"),a++):a&&(a--,a||document.body.classList.remove("van-toast--unclickable"))}var l=n(5632),u=n(3064),d=n(2094);const[f,p]=(0,o.YX)("toast"),h=["show","overlay","teleport","transition","overlayClass","overlayStyle","closeOnClickOverlay","zIndex"],m={icon:String,show:Boolean,type:(0,s.Ts)("text"),overlay:Boolean,message:s.VQ,iconSize:s.VQ,duration:(0,s.Jh)(2e3),position:(0,s.Ts)("middle"),teleport:[String,Object],wordBreak:String,className:s.E9,iconPrefix:String,transition:(0,s.Ts)("van-fade"),loadingType:String,forbidClick:Boolean,overlayClass:s.E9,overlayStyle:Object,closeOnClick:Boolean,closeOnClickOverlay:Boolean,zIndex:s.VQ};var y=(0,r.pM)({name:f,props:m,emits:["update:show"],setup(e,{emit:t,slots:n}){let o,s=!1;const a=()=>{const t=e.show&&e.forbidClick;s!==t&&(s=t,c(s))},f=e=>t("update:show",e),m=()=>{e.closeOnClick&&f(!1)},y=()=>clearTimeout(o),b=()=>{const{icon:t,type:n,iconSize:o,iconPrefix:s,loadingType:i}=e,a=t||"success"===n||"fail"===n;return a?(0,r.bF)(l.In,{name:t||n,size:o,class:p("icon"),classPrefix:s},null):"loading"===n?(0,r.bF)(d.Rh,{class:p("loading"),size:o,type:i},null):void 0},g=()=>{const{type:t,message:o}=e;return n.message?(0,r.bF)("div",{class:p("text")},[n.message()]):(0,i.C8)(o)&&""!==o?"html"===t?(0,r.bF)("div",{key:0,class:p("text"),innerHTML:String(o)},null):(0,r.bF)("div",{class:p("text")},[o]):void 0};return(0,r.wB)((()=>[e.show,e.forbidClick]),a),(0,r.wB)((()=>[e.show,e.type,e.message,e.duration]),(()=>{y(),e.show&&e.duration>0&&(o=setTimeout((()=>{f(!1)}),e.duration))})),(0,r.sV)(a),(0,r.hi)(a),()=>(0,r.bF)(u.zD,(0,r.v6)({class:[p([e.position,"normal"===e.wordBreak?"break-normal":e.wordBreak,{[e.type]:!e.icon}]),e.className],lockScroll:!1,onClick:m,onClosed:y,"onUpdate:show":f},(0,i.Up)(e,h)),{default:()=>[b(),g()]})}})},1508:function(e,t,n){n.d(t,{xr:function(){return R},GF:function(){return v},P0:function(){return w}});n(4114);var r=n(6768),o=n(144),s=n(8442),i=n(5130),a=n(6145);function c(){const e=(0,o.Kh)({show:!1}),t=t=>{e.show=t},n=n=>{(0,s.X$)(e,n,{transitionAppear:!0}),t(!0)},r=()=>t(!1);return(0,a.c)({open:n,close:r,toggle:t}),{open:n,close:r,state:e,toggle:t}}function l(e){const t=(0,i.Ef)(e),n=document.createElement("div");return document.body.appendChild(n),{instance:t.mount(n),unmount(){t.unmount(),document.body.removeChild(n)}}}var u=n(6596);const d={icon:"",type:"text",message:"",className:"",overlay:!1,onClose:void 0,onOpened:void 0,duration:2e3,teleport:"body",iconSize:void 0,iconPrefix:void 0,position:"middle",transition:"van-fade",forbidClick:!1,loadingType:void 0,overlayClass:"",overlayStyle:void 0,closeOnClick:!1,closeOnClickOverlay:!1};let f=[],p=!1,h=(0,s.X$)({},d);const m=new Map;function y(e){return(0,s.Gv)(e)?e:{message:e}}function b(){const{instance:e,unmount:t}=l({setup(){const n=(0,o.KR)(""),{open:s,state:i,close:a,toggle:l}=c(),d=()=>{p&&(f=f.filter((t=>t!==e)),t())},h=()=>{const e={onClosed:d,"onUpdate:show":l};return(0,r.bF)(u.A,(0,r.v6)(i,e),null)};return(0,r.wB)(n,(e=>{i.message=e})),(0,r.nI)().render=h,{open:s,close:a,message:n}}});return e}function g(){if(!f.length||p){const e=b();f.push(e)}return f[f.length-1]}function w(e={}){if(!s.M)return{};const t=g(),n=y(e);return t.open((0,s.X$)({},h,m.get(n.type||h.type),n)),t}const E=e=>t=>w((0,s.X$)({type:e},y(t))),v=(E("loading"),E("success")),R=E("fail")},3081:function(e,t,n){n(6647),n(7708),n(7484),n(7265),n(269),n(4371)}}]); \ No newline at end of file diff --git a/web/js/769.9bee6fb6.js b/web/js/769.9bee6fb6.js new file mode 100644 index 0000000..73ac4b9 --- /dev/null +++ b/web/js/769.9bee6fb6.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkset_vue"]=self["webpackChunkset_vue"]||[]).push([[769],{6769:function(e,t,n){n.r(t),n.d(t,{default:function(){return T}});var a=n(4726),o=n(6768),r=n(144),l=n(5828),i=n(6370),c=n(7905),u=n(4612),s=n(9725),d=n(6591),v=n(4397);const[f,p]=(0,l.YX)("tabbar"),m={route:Boolean,fixed:i.Rd,border:i.Rd,zIndex:i.VQ,placeholder:Boolean,activeColor:String,beforeChange:Function,inactiveColor:String,modelValue:(0,i.TU)(0),safeAreaInsetBottom:{type:Boolean,default:null}},b=Symbol(f);var h=(0,o.pM)({name:f,props:m,emits:["change","update:modelValue"],setup(e,{emit:t,slots:n}){const a=(0,r.KR)(),{linkChildren:l}=(0,d.Py)(b),i=(0,v.h)(a,p),f=()=>{var t;return null!=(t=e.safeAreaInsetBottom)?t:e.fixed},m=()=>{var t;const{fixed:r,zIndex:l,border:i}=e;return(0,o.bF)("div",{ref:a,role:"tablist",style:(0,c.AO)(l),class:[p({fixed:r}),{[u.pT]:i,"van-safe-area-bottom":f()}]},[null==(t=n.default)?void 0:t.call(n)])},h=(n,a)=>{(0,s.m)(e.beforeChange,{args:[n],done(){t("update:modelValue",n),t("change",n),a()}})};return l({props:e,setActive:h}),()=>e.fixed&&e.placeholder?i(m):m()}});const g=(0,a.G)(h);n(6647);var x=n(8442),C=n(4548),V=n(5632),k=n(3408);const[F,y]=(0,l.YX)("tabbar-item"),B=(0,x.X$)({},C.aI,{dot:Boolean,icon:String,name:i.VQ,badge:i.VQ,badgeProps:Object,iconPrefix:String});var I=(0,o.pM)({name:F,props:B,emits:["click"],setup(e,{emit:t,slots:n}){const a=(0,C.lq)(),r=(0,o.nI)().proxy,{parent:l,index:i}=(0,d.cJ)(b);if(!l)return void 0;const c=(0,o.EW)((()=>{var t;const{route:n,modelValue:a}=l.props;if(n&&"$route"in r){const{$route:t}=r,{to:n}=e,a=(0,x.Gv)(n)?n:{path:n};return!!t.matched.find((e=>{const t="path"in a&&a.path===e.path,n="name"in a&&a.name===e.name;return t||n}))}return(null!=(t=e.name)?t:i.value)===a})),u=n=>{var o;c.value||l.setActive(null!=(o=e.name)?o:i.value,a),t("click",n)},s=()=>n.icon?n.icon({active:c.value}):e.icon?(0,o.bF)(V.In,{name:e.icon,classPrefix:e.iconPrefix},null):void 0;return()=>{var t;const{dot:a,badge:r}=e,{activeColor:i,inactiveColor:d}=l.props,v=c.value?i:d;return(0,o.bF)("div",{role:"tab",class:y({active:c.value}),style:{color:v},tabindex:0,"aria-selected":c.value,onClick:u},[(0,o.bF)(k.Ex,(0,o.v6)({dot:a,class:y("icon"),content:r},e.badgeProps),{default:s}),(0,o.bF)("div",{class:y("text")},[null==(t=n.default)?void 0:t.call(n,{active:c.value})])])}}});const A=(0,a.G)(I);n(7708),n(7484);const P={class:"footer"};function w(e,t,n,a,r,l){const i=(0,o.g2)("router-view"),c=A,u=g;return(0,o.uX)(),(0,o.CE)("div",P,[(0,o.bF)(i),(0,o.bF)(u,{modelValue:a.active,"onUpdate:modelValue":t[0]||(t[0]=e=>a.active=e),onChange:a.onChange},{default:(0,o.k6)((()=>[(0,o.bF)(c,{icon:"home-o",name:"home"},{default:(0,o.k6)((()=>[(0,o.eW)("系统设置")])),_:1}),(0,o.bF)(c,{icon:"setting-o",name:"info"},{default:(0,o.k6)((()=>[(0,o.eW)("系统信息")])),_:1})])),_:1},8,["modelValue","onChange"])])}n(4114);var R=n(1387),S={setup(){const e=(0,r.KR)("home"),t=(0,R.rd)(),n=(0,R.lq)(),a=e=>{t.push({name:e})};return(0,o.nT)((()=>{e.value=n.name})),{active:e,onChange:a}}},X=n(1241);const _=(0,X.A)(S,[["render",w]]);var T=_},4397:function(e,t,n){n.d(t,{h:function(){return u}});var a=n(6768),o=n(6591),r=n(144),l=n(240),i=n(8957);const c=(e,t)=>{const n=(0,r.KR)(),c=()=>{n.value=(0,o.yD)(e).height};return(0,a.sV)((()=>{if((0,a.dY)(c),t)for(let e=1;e<=3;e++)setTimeout(c,100*e)})),(0,i.V)((()=>(0,a.dY)(c))),(0,a.wB)([l.Xw,l.C7],c),n};function u(e,t){const n=c(e,!0);return e=>(0,a.bF)("div",{class:t("placeholder"),style:{height:n.value?`${n.value}px`:void 0}},[e()])}}}]); \ No newline at end of file diff --git a/web/js/772.ea12d9e4.js b/web/js/772.ea12d9e4.js new file mode 100644 index 0000000..a56da35 --- /dev/null +++ b/web/js/772.ea12d9e4.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkset_vue"]=self["webpackChunkset_vue"]||[]).push([[772],{7265:function(){},1351:function(e,t,l){l.r(t),l.d(t,{default:function(){return h}});var a=l(6769),n=l(6987),r=(l(6463),l(4758)),u=l(6768);const o=e=>((0,u.Qi)("data-v-14c7b2a1"),e=e(),(0,u.jt)(),e),s={class:"page-container"},c=o((()=>(0,u.Lk)("div",{class:"content"}," 预警设置 ",-1)));function i(e,t,l,o,i,v){const f=r.A,d=n.j5,p=a["default"];return(0,u.uX)(),(0,u.CE)("div",s,[(0,u.bF)(f,{title:o.currentTitle},null,8,["title"]),(0,u.bF)(d,{loading:o.loading,"onUpdate:loading":t[0]||(t[0]=e=>o.loading=e),"success-text":"刷新成功",onRefresh:o.onRefresh},{default:(0,u.k6)((()=>[c])),_:1},8,["loading","onRefresh"]),(0,u.bF)(p)])}l(4114);var v=l(144),f=l(1387),d=(l(8628),{components:{Header:r.A,Footer:a["default"]},setup(){const e=(0,v.KR)("预警设置"),t=(0,f.rd)(),l=(0,v.KR)(!1),a=()=>{setTimeout((()=>{l.value=!1}),1e3)},n=e=>{t.push({name:e})};return{currentTitle:e,loading:l,onRefresh:a,goto:n}}}),p=l(1241);const b=(0,p.A)(d,[["render",i],["__scopeId","data-v-14c7b2a1"]]);var h=b},4390:function(e,t,l){l.d(t,{P:function(){return u}});var a=l(144),n=l(4612);function r(e,t){return e>t?"horizontal":t>e?"vertical":""}function u(){const e=(0,a.KR)(0),t=(0,a.KR)(0),l=(0,a.KR)(0),u=(0,a.KR)(0),o=(0,a.KR)(0),s=(0,a.KR)(0),c=(0,a.KR)(""),i=(0,a.KR)(!0),v=()=>"vertical"===c.value,f=()=>"horizontal"===c.value,d=()=>{l.value=0,u.value=0,o.value=0,s.value=0,c.value="",i.value=!0},p=l=>{d(),e.value=l.touches[0].clientX,t.value=l.touches[0].clientY},b=a=>{const v=a.touches[0];l.value=(v.clientX<0?0:v.clientX)-e.value,u.value=v.clientY-t.value,o.value=Math.abs(l.value),s.value=Math.abs(u.value);const f=10;(!c.value||o.valuen.Ez||s.value>n.Ez)&&(i.value=!1)};return{move:b,start:p,reset:d,startX:e,startY:t,deltaX:l,deltaY:u,offsetX:o,offsetY:s,direction:c,isVertical:v,isHorizontal:f,isTap:i}}},2094:function(e,t,l){l.d(t,{Rh:function(){return b}});var a=l(4726),n=l(6768),r=l(5828),u=l(6370),o=l(8442),s=l(7905);const[c,i]=(0,r.YX)("loading"),v=Array(12).fill(null).map(((e,t)=>(0,n.bF)("i",{class:i("line",String(t+1))},null))),f=(0,n.bF)("svg",{class:i("circular"),viewBox:"25 25 50 50"},[(0,n.bF)("circle",{cx:"50",cy:"50",r:"20",fill:"none"},null)]),d={size:u.VQ,type:(0,u.Ts)("circular"),color:String,vertical:Boolean,textSize:u.VQ,textColor:String};var p=(0,n.pM)({name:c,props:d,setup(e,{slots:t}){const l=(0,n.EW)((()=>(0,o.X$)({color:e.color},(0,s.vE)(e.size)))),a=()=>{const a="spinner"===e.type?v:f;return(0,n.bF)("span",{class:i("spinner",e.type),style:l.value},[t.icon?t.icon():a])},r=()=>{var l;if(t.default)return(0,n.bF)("span",{class:i("text"),style:{fontSize:(0,s._V)(e.textSize),color:null!=(l=e.textColor)?l:e.color}},[t.default()])};return()=>{const{type:t,vertical:l}=e;return(0,n.bF)("div",{class:i([t,{vertical:l}]),"aria-live":"polite","aria-busy":!0},[a(),r()])}}});const b=(0,a.G)(p)}}]); \ No newline at end of file diff --git a/web/js/928.aebea282.js b/web/js/928.aebea282.js new file mode 100644 index 0000000..c914908 --- /dev/null +++ b/web/js/928.aebea282.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkset_vue"]=self["webpackChunkset_vue"]||[]).push([[928],{3133:function(e,l,a){a.r(l),a.d(l,{default:function(){return x}});var o=a(6769),t=a(6987),n=(a(6463),a(3788)),s=(a(7540),a(5050)),i=(a(9766),a(4726)),r=a(6768),c=a(5828),d=a(6370);const[u,v]=(0,c.YX)("divider"),m={dashed:Boolean,hairline:d.Rd,vertical:Boolean,contentPosition:(0,d.Ts)("center")};var b=(0,r.pM)({name:u,props:m,setup(e,{slots:l}){return()=>{var a;return(0,r.bF)("div",{role:"separator",class:v({dashed:e.dashed,hairline:e.hairline,vertical:e.vertical,[`content-${e.contentPosition}`]:!!l.default&&!e.vertical})},[!e.vertical&&(null==(a=l.default)?void 0:a.call(l))])}}});const f=(0,i.G)(b);a(6647);var p=a(4758);const k=e=>((0,r.Qi)("data-v-96208070"),e=e(),(0,r.jt)(),e),R={class:"page-container"},F={class:"content"},_={class:"item"},g=k((()=>(0,r.Lk)("p",{class:"title"},"双色LED屏驱动板",-1))),h={class:"item"},L=k((()=>(0,r.Lk)("p",{class:"title"},"车辆识别",-1))),y={class:"item"},T=k((()=>(0,r.Lk)("p",{class:"title"},"4G声卡",-1)));function V(e,l,a,i,c,d){const u=p.A,v=f,m=s.D0,b=n.Qh,k=t.j5,V=o["default"];return(0,r.uX)(),(0,r.CE)("div",R,[(0,r.bF)(u,{title:i.currentTitle},null,8,["title"]),(0,r.bF)(k,{modelValue:i.loading,"onUpdate:modelValue":l[0]||(l[0]=e=>i.loading=e),"success-text":"刷新成功",onRefresh:i.onRefresh},{default:(0,r.k6)((()=>[(0,r.Lk)("div",F,[(0,r.Lk)("div",_,[(0,r.bF)(b,{inset:""},{default:(0,r.k6)((()=>[g,(0,r.bF)(v,{style:{color:"black"}}),(0,r.bF)(m,{label:"版本号:","model-value":i.ledVision,readonly:""},null,8,["model-value"]),(0,r.bF)(m,{label:"编译时间:","model-value":i.ledTime,readonly:""},null,8,["model-value"])])),_:1})]),(0,r.Lk)("div",h,[(0,r.bF)(b,{inset:""},{default:(0,r.k6)((()=>[L,(0,r.bF)(v,{style:{color:"black"}}),(0,r.bF)(m,{label:"版本号:","model-value":i.carVision,readonly:""},null,8,["model-value"]),(0,r.bF)(m,{label:"编译时间:","model-value":i.carTime,readonly:""},null,8,["model-value"])])),_:1})]),(0,r.Lk)("div",y,[(0,r.bF)(b,{inset:""},{default:(0,r.k6)((()=>[T,(0,r.bF)(v,{style:{color:"black"}}),(0,r.bF)(m,{label:"版本号:","model-value":i.g4Vision,readonly:""},null,8,["model-value"]),(0,r.bF)(m,{label:"编译时间:","model-value":i.g4Time,readonly:""},null,8,["model-value"])])),_:1})])])])),_:1},8,["modelValue","onRefresh"]),(0,r.bF)(V)])}var K=a(144),P=a(5149),w=(a(8628),{components:{Header:p.A,Footer:o["default"]},setup(){const e=(0,K.KR)("系统信息"),l=(0,K.KR)(!1),a=(0,K.KR)(""),o=(0,K.KR)(""),t=(0,K.KR)(""),n=(0,K.KR)(""),s=(0,K.KR)(""),i=(0,K.KR)("");let c,d=(0,K.KR)(1);c=P.connect("wss://broker.emqx.io:8084/mqtt");const u=()=>{l.value=!0,v()},v=()=>{c.publish("recewive/abc",JSON.stringify({JSON_id:d.value,LPR_card:{get_info:1}})),d.value+=1},m=()=>{c.on("connect",(()=>{console.log("Connected to MQTT broker"),c.subscribe("/mytest/abc")})),c.on("message",((e,r)=>{const c=JSON.parse(r.toString());if(console.log("Received message:",c),c.LPR_card&&c.LPR_card.info){const e=c.LPR_card.info;a.value=e.versions,o.value=e.compile_time,t.value=e.versions,n.value=e.compile_time,s.value=e.versions,i.value=e.compile_time,l.value=!1}}))};return(0,r.sV)((()=>{m()})),(0,r.xo)((()=>{c&&c.end()})),{currentTitle:e,loading:l,onRefresh:u,ledVision:a,ledTime:o,carVision:t,carTime:n,g4Vision:s,g4Time:i}}}),C=a(1241);const S=(0,C.A)(w,[["render",V],["__scopeId","data-v-96208070"]]);var x=S}}]); \ No newline at end of file diff --git a/web/js/960.29de40e4.js b/web/js/960.29de40e4.js new file mode 100644 index 0000000..5fabc2f --- /dev/null +++ b/web/js/960.29de40e4.js @@ -0,0 +1 @@ +"use strict";(self["webpackChunkset_vue"]=self["webpackChunkset_vue"]||[]).push([[960],{7708:function(){},7484:function(){},6647:function(){},6591:function(n,t,e){e.d(t,{Gp:function(){return L},ML:function(){return w},Py:function(){return h},SA:function(){return c},TU:function(){return O},W3:function(){return $},cJ:function(){return d},er:function(){return i},f:function(){return A},f$:function(){return V},kz:function(){return b},lW:function(){return k},mH:function(){return S},r7:function(){return a},yD:function(){return f}});e(4114);var r=e(144),o=e(6768),u="undefined"!==typeof window;function i(n){return u?requestAnimationFrame(n):-1}function c(n){u&&cancelAnimationFrame(n)}function a(n){i((()=>i(n)))}var s=n=>n===window,l=(n,t)=>({top:0,left:0,right:n,bottom:t,width:n,height:t}),f=n=>{const t=(0,r.R1)(n);if(s(t)){const n=t.innerWidth,e=t.innerHeight;return l(n,e)}return(null==t?void 0:t.getBoundingClientRect)?t.getBoundingClientRect():l(0,0)};function d(n){const t=(0,o.WQ)(n,null);if(t){const n=(0,o.nI)(),{link:e,unlink:r,internalChildren:u}=t;e(n),(0,o.hi)((()=>r(n)));const i=(0,o.EW)((()=>u.indexOf(n)));return{parent:t,index:i}}return{parent:null,index:(0,r.KR)(-1)}}function p(n){const t=[],e=n=>{Array.isArray(n)&&n.forEach((n=>{var r;(0,o.vv)(n)&&(t.push(n),(null==(r=n.component)?void 0:r.subTree)&&(t.push(n.component.subTree),e(n.component.subTree.children)),n.children&&e(n.children))}))};return e(n),t}var v=(n,t)=>{const e=n.indexOf(t);return-1===e?n.findIndex((n=>void 0!==t.key&&null!==t.key&&n.type===t.type&&n.key===t.key)):e};function m(n,t,e){const r=p(n.subTree.children);e.sort(((n,t)=>v(r,n.vnode)-v(r,t.vnode)));const o=e.map((n=>n.proxy));t.sort(((n,t)=>{const e=o.indexOf(n),r=o.indexOf(t);return e-r}))}function h(n){const t=(0,r.Kh)([]),e=(0,r.Kh)([]),u=(0,o.nI)(),i=r=>{const i=n=>{n.proxy&&(e.push(n),t.push(n.proxy),m(u,t,e))},c=n=>{const r=e.indexOf(n);t.splice(r,1),e.splice(r,1)};(0,o.Gt)(n,Object.assign({link:i,unlink:c,children:t,internalChildren:e},r))};return{children:t,linkChildren:i}}var g,y;function b(n){let t;(0,o.sV)((()=>{n(),(0,o.dY)((()=>{t=!0}))})),(0,o.n)((()=>{t&&n()}))}function w(n,t,e={}){if(!u)return;const{target:i=window,passive:c=!1,capture:a=!1}=e;let s,l=!1;const f=e=>{if(l)return;const o=(0,r.R1)(e);o&&!s&&(o.addEventListener(n,t,{capture:a,passive:c}),s=!0)},d=e=>{if(l)return;const o=(0,r.R1)(e);o&&s&&(o.removeEventListener(n,t,a),s=!1)};let p;return(0,o.hi)((()=>d(i))),(0,o.Y4)((()=>d(i))),b((()=>f(i))),(0,r.i9)(i)&&(p=(0,o.wB)(i,((n,t)=>{d(t),f(n)}))),()=>{null==p||p(),d(i),l=!0}}function $(n,t,e={}){if(!u)return;const{eventName:o="click"}=e,i=e=>{const o=Array.isArray(n)?n:[n],u=o.every((n=>{const t=(0,r.R1)(n);return t&&!t.contains(e.target)}));u&&t(e)};w(o,i,{target:document})}function k(){if(!g&&(g=(0,r.KR)(0),y=(0,r.KR)(0),u)){const n=()=>{g.value=window.innerWidth,y.value=window.innerHeight};n(),window.addEventListener("resize",n,{passive:!0}),window.addEventListener("orientationchange",n,{passive:!0})}return{width:g,height:y}}var x,C=/scroll|auto|overlay/i,T=u?window:void 0;function E(n){const t=1;return"HTML"!==n.tagName&&"BODY"!==n.tagName&&n.nodeType===t}function S(n,t=T){let e=n;while(e&&e!==t&&E(e)){const{overflowY:n}=window.getComputedStyle(e);if(C.test(n))return e;e=e.parentNode}return t}function V(n,t=T){const e=(0,r.KR)();return(0,o.sV)((()=>{n.value&&(e.value=S(n.value,t))})),e}function O(){if(!x&&(x=(0,r.KR)("visible"),u)){const n=()=>{x.value=document.hidden?"hidden":"visible"};n(),window.addEventListener("visibilitychange",n)}return x}var A=Symbol("van-field");function L(n){const t=(0,o.WQ)(A,null);t&&!t.customValue.value&&(t.customValue.value=n,(0,o.wB)(n,(()=>{t.resetValidation(),t.validateWithTrigger("onChange")})))}},3408:function(n,t,e){e.d(t,{Ex:function(){return p}});var r=e(4726),o=e(6768),u=e(5828),i=e(6370),c=e(8442),a=e(7905);const[s,l]=(0,u.YX)("badge"),f={dot:Boolean,max:i.VQ,tag:(0,i.Ts)("div"),color:String,offset:Array,content:i.VQ,showZero:i.Rd,position:(0,i.Ts)("top-right")};var d=(0,o.pM)({name:s,props:f,setup(n,{slots:t}){const e=()=>{if(t.content)return!0;const{content:e,showZero:r}=n;return(0,c.C8)(e)&&""!==e&&(r||0!==e&&"0"!==e)},r=()=>{const{dot:r,max:o,content:u}=n;if(!r&&e())return t.content?t.content():(0,c.C8)(o)&&(0,c.kf)(u)&&+u>+o?`${o}+`:u},u=n=>n.startsWith("-")?n.replace("-",""):`-${n}`,i=(0,o.EW)((()=>{const e={background:n.color};if(n.offset){const[r,o]=n.offset,{position:i}=n,[c,s]=i.split("-");t.default?(e[c]="number"===typeof o?(0,a._V)("top"===c?o:-o):"top"===c?(0,a._V)(o):u(o),e[s]="number"===typeof r?(0,a._V)("left"===s?r:-r):"left"===s?(0,a._V)(r):u(r)):(e.marginTop=(0,a._V)(o),e.marginLeft=(0,a._V)(r))}return e})),s=()=>{if(e()||n.dot)return(0,o.bF)("div",{class:l([n.position,{dot:n.dot,fixed:!!t.default}]),style:i.value},[r()])};return()=>{if(t.default){const{tag:e}=n;return(0,o.bF)(e,{class:l("wrapper")},{default:()=>[t.default(),s()]})}return s()}}});const p=(0,r.G)(d)},8957:function(n,t,e){e.d(t,{V:function(){return u},q:function(){return o}});var r=e(6768);const o=Symbol();function u(n){const t=(0,r.WQ)(o,null);t&&(0,r.wB)(t,(t=>{t&&n()}))}},6438:function(n,t,e){e.d(t,{S:function(){return u},v:function(){return o}});let r=2e3;const o=()=>++r,u=n=>{r=n}},4548:function(n,t,e){e.d(t,{aI:function(){return o},lq:function(){return i},wE:function(){return u}});var r=e(6768);const o={to:[String,Object],url:String,replace:Boolean};function u({to:n,url:t,replace:e,$router:r}){n&&r?r[e?"replace":"push"](n):t&&(e?location.replace(t):location.href=t)}function i(){const n=(0,r.nI)().proxy;return()=>u(n)}},5632:function(n,t,e){e.d(t,{In:function(){return x}});var r=e(4726),o=e(6768),u=e(5828),i=e(6370),c=e(7905),a=e(3408),s=e(8442),l=e(6438);const[f,d]=(0,u.YX)("config-provider"),p=Symbol(f),v={tag:(0,i.Ts)("div"),theme:(0,i.Ts)("light"),zIndex:Number,themeVars:Object,themeVarsDark:Object,themeVarsLight:Object,themeVarsScope:(0,i.Ts)("local"),iconPrefix:String};function m(n){return n.replace(/([a-zA-Z])(\d)/g,"$1-$2")}function h(n){const t={};return Object.keys(n).forEach((e=>{const r=m((0,c.kW)(e));t[`--van-${r}`]=n[e]})),t}function g(n={},t={}){Object.keys(n).forEach((e=>{n[e]!==t[e]&&document.documentElement.style.setProperty(e,n[e])})),Object.keys(t).forEach((t=>{n[t]||document.documentElement.style.removeProperty(t)}))}(0,o.pM)({name:f,props:v,setup(n,{slots:t}){const e=(0,o.EW)((()=>h((0,s.X$)({},n.themeVars,"dark"===n.theme?n.themeVarsDark:n.themeVarsLight))));if(s.M){const t=()=>{document.documentElement.classList.add(`van-theme-${n.theme}`)},r=(t=n.theme)=>{document.documentElement.classList.remove(`van-theme-${t}`)};(0,o.wB)((()=>n.theme),((n,e)=>{e&&r(e),t()}),{immediate:!0}),(0,o.n)(t),(0,o.Y4)(r),(0,o.xo)(r),(0,o.wB)(e,((t,e)=>{"global"===n.themeVarsScope&&g(t,e)})),(0,o.wB)((()=>n.themeVarsScope),((n,t)=>{"global"===t&&g({},e.value),"global"===n&&g(e.value,{})})),"global"===n.themeVarsScope&&g(e.value,{})}return(0,o.Gt)(p,n),(0,o.nT)((()=>{void 0!==n.zIndex&&(0,l.S)(n.zIndex)})),()=>(0,o.bF)(n.tag,{class:d(),style:"local"===n.themeVarsScope?e.value:void 0},{default:()=>{var n;return[null==(n=t.default)?void 0:n.call(t)]}})}});const[y,b]=(0,u.YX)("icon"),w=n=>null==n?void 0:n.includes("/"),$={dot:Boolean,tag:(0,i.Ts)("i"),name:String,size:i.VQ,badge:i.VQ,color:String,badgeProps:Object,classPrefix:String};var k=(0,o.pM)({name:y,props:$,setup(n,{slots:t}){const e=(0,o.WQ)(p,null),r=(0,o.EW)((()=>n.classPrefix||(null==e?void 0:e.iconPrefix)||b()));return()=>{const{tag:e,dot:u,name:i,size:s,badge:l,color:f}=n,d=w(i);return(0,o.bF)(a.Ex,(0,o.v6)({dot:u,tag:e,class:[r.value,d?"":`${r.value}-${i}`],style:{color:f,fontSize:(0,c._V)(s)},content:l},n.badgeProps),{default:()=>{var n;return[null==(n=t.default)?void 0:n.call(t),d&&(0,o.bF)("img",{class:b("image"),src:i},null)]}})}}});const x=(0,r.G)(k)},8442:function(n,t,e){function r(){}e.d(t,{$r:function(){return m},C8:function(){return c},Ct:function(){return h},Gv:function(){return i},Jt:function(){return d},M:function(){return u},Tn:function(){return a},Up:function(){return p},X$:function(){return o},am:function(){return v},kf:function(){return l},lQ:function(){return r},un:function(){return f},yL:function(){return s}});const o=Object.assign,u="undefined"!==typeof window,i=n=>null!==n&&"object"===typeof n,c=n=>void 0!==n&&null!==n,a=n=>"function"===typeof n,s=n=>i(n)&&a(n.then)&&a(n.catch);const l=n=>"number"===typeof n||/^\d+(\.\d+)?$/.test(n),f=()=>!!u&&/ios|iphone|ipad|ipod/.test(navigator.userAgent.toLowerCase());function d(n,t){const e=t.split(".");let r=n;return e.forEach((n=>{var t;r=i(r)&&null!=(t=r[n])?t:""})),r}function p(n,t,e){return t.reduce(((t,r)=>(e&&void 0===n[r]||(t[r]=n[r]),t)),{})}const v=(n,t)=>JSON.stringify(n)===JSON.stringify(t),m=n=>Array.isArray(n)?n:[n],h=n=>n.reduce(((n,t)=>n.concat(t)),[])},4612:function(n,t,e){e.d(t,{$i:function(){return s},Dk:function(){return a},Ez:function(){return l},kw:function(){return u},n_:function(){return o},pT:function(){return i},xm:function(){return c}});const r="van-hairline",o=`${r}--bottom`,u=`${r}--surround`,i=`${r}--top-bottom`,c=`${r}-unset--top-bottom`,a="van-haptics-feedback",s=Symbol("van-form"),l=5},5828:function(n,t,e){e.d(t,{YX:function(){return g}});var r=e(8442),o=e(7905),u=e(144);const{hasOwnProperty:i}=Object.prototype;function c(n,t,e){const o=t[e];(0,r.C8)(o)&&(i.call(n,e)&&(0,r.Gv)(o)?n[e]=a(Object(n[e]),o):n[e]=o)}function a(n,t){return Object.keys(t).forEach((e=>{c(n,t,e)})),n}var s={name:"姓名",tel:"电话",save:"保存",clear:"清空",cancel:"取消",confirm:"确认",delete:"删除",loading:"加载中...",noCoupon:"暂无优惠券",nameEmpty:"请填写姓名",addContact:"添加联系人",telInvalid:"请填写正确的电话",vanCalendar:{end:"结束",start:"开始",title:"日期选择",weekdays:["日","一","二","三","四","五","六"],monthTitle:(n,t)=>`${n}年${t}月`,rangePrompt:n=>`最多选择 ${n} 天`},vanCascader:{select:"请选择"},vanPagination:{prev:"上一页",next:"下一页"},vanPullRefresh:{pulling:"下拉即可刷新...",loosing:"释放即可刷新..."},vanSubmitBar:{label:"合计:"},vanCoupon:{unlimited:"无门槛",discount:n=>`${n}折`,condition:n=>`满${n}元可用`},vanCouponCell:{title:"优惠券",count:n=>`${n}张可用`},vanCouponList:{exchange:"兑换",close:"不使用",enable:"可用",disabled:"不可用",placeholder:"输入优惠码"},vanAddressEdit:{area:"地区",areaEmpty:"请选择地区",addressEmpty:"请填写详细地址",addressDetail:"详细地址",defaultAddress:"设为默认收货地址"},vanAddressList:{add:"新增地址"}};const l=(0,u.KR)("zh-CN"),f=(0,u.Kh)({"zh-CN":s}),d={messages(){return f[l.value]},use(n,t){l.value=n,this.add({[n]:t})},add(n={}){a(f,n)}};var p=d;function v(n){const t=(0,o.PT)(n)+".";return(n,...e)=>{const o=p.messages(),u=(0,r.Jt)(o,t+n)||(0,r.Jt)(o,n);return(0,r.Tn)(u)?u(...e):u}}function m(n,t){return t?"string"===typeof t?` ${n}--${t}`:Array.isArray(t)?t.reduce(((t,e)=>t+m(n,e)),""):Object.keys(t).reduce(((e,r)=>e+(t[r]?m(n,r):"")),""):""}function h(n){return(t,e)=>(t&&"string"!==typeof t&&(e=t,t=""),t=t?`${n}__${t}`:n,`${t}${m(t,e)}`)}function g(n){const t=`van-${n}`;return[t,h(t),v(t)]}},240:function(n,t,e){e.d(t,{B0:function(){return d},C7:function(){return g},Fk:function(){return s},LR:function(){return c},Td:function(){return a},Xw:function(){return h},dG:function(){return p},dK:function(){return m},hY:function(){return i},mk:function(){return l},wo:function(){return v}});var r=e(6591),o=e(144),u=e(8442);function i(n){const t="scrollTop"in n?n.scrollTop:n.pageYOffset;return Math.max(t,0)}function c(n,t){"scrollTop"in n?n.scrollTop=t:n.scrollTo(n.scrollX,t)}function a(){return window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0}function s(n){c(window,n),c(document.body,n)}function l(n,t){if(n===window)return 0;const e=t?i(t):a();return(0,r.yD)(n).top+e}const f=(0,u.un)();function d(){f&&s(a())}const p=n=>n.stopPropagation();function v(n,t){("boolean"!==typeof n.cancelable||n.cancelable)&&n.preventDefault(),t&&p(n)}function m(n){const t=(0,o.R1)(n);if(!t)return!1;const e=window.getComputedStyle(t),r="none"===e.display,u=null===t.offsetParent&&"fixed"!==e.position;return r||u}const{width:h,height:g}=(0,r.lW)()},7905:function(n,t,e){e.d(t,{AO:function(){return c},LF:function(){return w},PT:function(){return m},S7:function(){return p},ZV:function(){return b},_V:function(){return u},kW:function(){return h},qE:function(){return g},vE:function(){return i}});var r=e(8442),o=e(240);function u(n){if((0,r.C8)(n))return(0,r.kf)(n)?`${n}px`:String(n)}function i(n){if((0,r.C8)(n)){if(Array.isArray(n))return{width:u(n[0]),height:u(n[1])};const t=u(n);return{width:t,height:t}}}function c(n){const t={};return void 0!==n&&(t.zIndex=+n),t}let a;function s(){if(!a){const n=document.documentElement,t=n.style.fontSize||window.getComputedStyle(n).fontSize;a=parseFloat(t)}return a}function l(n){return n=n.replace(/rem/g,""),+n*s()}function f(n){return n=n.replace(/vw/g,""),+n*o.Xw.value/100}function d(n){return n=n.replace(/vh/g,""),+n*o.C7.value/100}function p(n){if("number"===typeof n)return n;if(r.M){if(n.includes("rem"))return l(n);if(n.includes("vw"))return f(n);if(n.includes("vh"))return d(n)}return parseFloat(n)}const v=/-(\w)/g,m=n=>n.replace(v,((n,t)=>t.toUpperCase())),h=n=>n.replace(/([A-Z])/g,"-$1").toLowerCase().replace(/^-/,"");const g=(n,t,e)=>Math.min(Math.max(n,t),e);function y(n,t,e){const r=n.indexOf(t);return-1===r?n:"-"===t&&0!==r?n.slice(0,r):n.slice(0,r+1)+n.slice(r).replace(e,"")}function b(n,t=!0,e=!0){n=t?y(n,".",/\./g):n.split(".")[0],n=e?y(n,"-",/-/g):n.replace(/-/,"");const r=t?/[^-0-9.]/g:/[^-0-9]/g;return n.replace(r,"")}function w(n,t){const e=10**10;return Math.round((n+t)*e)/e}},9725:function(n,t,e){e.d(t,{m:function(){return o}});var r=e(8442);function o(n,{args:t=[],done:e,canceled:o,error:u}){if(n){const i=n.apply(null,t);(0,r.yL)(i)?i.then((n=>{n?e():o&&o()})).catch(u||r.lQ):i?e():o&&o()}else e()}},6370:function(n,t,e){e.d(t,{$g:function(){return i},E9:function(){return r},Jh:function(){return a},Rd:function(){return u},TU:function(){return s},Ts:function(){return l},VQ:function(){return o},zj:function(){return c}});const r=null,o=[Number,String],u={type:Boolean,default:!0},i=n=>({type:n,required:!0}),c=()=>({type:Array,default:()=>[]}),a=n=>({type:Number,default:n}),s=n=>({type:o,default:n}),l=n=>({type:String,default:n})},4726:function(n,t,e){e.d(t,{G:function(){return o}});var r=e(7905);function o(n){return n.install=t=>{const{name:e}=n;e&&(t.component(e,n),t.component((0,r.PT)(`-${e}`),n))},n}}}]); \ No newline at end of file diff --git a/web/js/app.f4ff13fe.js b/web/js/app.f4ff13fe.js new file mode 100644 index 0000000..9a5b6aa --- /dev/null +++ b/web/js/app.f4ff13fe.js @@ -0,0 +1 @@ +(function(){var e={2685:function(){window._iconfont_svg_string_4573698='',function(e){var t=(t=document.getElementsByTagName("script"))[t.length-1],n=t.getAttribute("data-injectcss");t=t.getAttribute("data-disable-injectsvg");if(!t){var o,i,a,r,c,l=function(e,t){t.parentNode.insertBefore(e,t)};if(n&&!e.__iconfont__svg__cssinject__){e.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(t){console&&console.log(t)}}o=function(){var t,n=document.createElement("div");n.innerHTML=e._iconfont_svg_string_4573698,(n=n.getElementsByTagName("svg")[0])&&(n.setAttribute("aria-hidden","true"),n.style.position="absolute",n.style.width=0,n.style.height=0,n.style.overflow="hidden",(t=document.body).firstChild?l(n,t.firstChild):t.appendChild(n))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(o,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),o()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(a=o,r=e.document,c=!1,s(),r.onreadystatechange=function(){"complete"==r.readyState&&(r.onreadystatechange=null,u())})}function u(){c||(c=!0,a())}function s(){try{r.documentElement.doScroll("left")}catch(t){return void setTimeout(s,50)}u()}}(window)},6335:function(e,t,n){"use strict";n(4114),n(6095);var o=n(5130),i=n(6768);function a(e,t){const n=(0,i.g2)("router-view");return(0,i.uX)(),(0,i.Wv)(n)}var r=n(1241);const c={},l=(0,r.A)(c,[["render",a]]);var u=l,s=n(1387),d=n(782);const f=[{path:"/login",name:"login",component:()=>Promise.all([n.e(960),n.e(233),n.e(718),n.e(193)]).then(n.bind(n,6193))},{path:"/reset",name:"reset",component:()=>Promise.all([n.e(960),n.e(233),n.e(718),n.e(239)]).then(n.bind(n,5239))},{path:"/",name:"home",component:()=>Promise.all([n.e(960),n.e(506),n.e(419)]).then(n.bind(n,2869))},{path:"/recognition",name:"recognition",component:()=>Promise.all([n.e(960),n.e(233),n.e(506),n.e(718),n.e(149),n.e(619)]).then(n.bind(n,696))},{path:"/info",name:"info",component:()=>Promise.all([n.e(960),n.e(233),n.e(506),n.e(149),n.e(928)]).then(n.bind(n,3133))},{path:"/warning",name:"warning",component:()=>Promise.all([n.e(960),n.e(506),n.e(772)]).then(n.bind(n,1351))},{path:"/Footer",name:"Footer",component:()=>Promise.all([n.e(960),n.e(769)]).then(n.bind(n,6769))}],h=(0,s.aE)({history:(0,s.Bt)(),routes:f});h.beforeEach(((e,t,n)=>{const o=(0,d.Pj)();"/login"===e.path||o.state.isAuthenticated?n():n("/login")}));var p=h,m=(0,d.y$)({state:{isAuthenticated:!1},mutations:{setAuthenticated(e,t){e.isAuthenticated=t}},actions:{login({commit:e},t){e("setAuthenticated",!0)}},modules:{}});n(8628),n(2685);function v(){"192.168.4.1"===window.location.hostname?(console.log("in local"),g()):b()}function g(){m.state.isAuthenticated||p.push("/login")}function b(){m.commit("setAuthenticated",!0)}const y=(0,o.Ef)(u);v(),y.use(m).use(p).mount("#app")}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var a=t[o]={exports:{}};return e[o].call(a.exports,a,a.exports,n),a.exports}n.m=e,function(){var e=[];n.O=function(t,o,i,a){if(!o){var r=1/0;for(s=0;s=a)&&Object.keys(n.O).every((function(e){return n.O[e](o[l])}))?o.splice(l--,1):(c=!1,a0&&e[s-1][2]>a;s--)e[s]=e[s-1];e[s]=[o,i,a]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){n.d=function(e,t){for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})}}(),function(){n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,o){return n.f[o](e,t),t}),[]))}}(),function(){n.u=function(e){return"js/"+e+"."+{149:"2f4f7417",193:"256e1126",233:"a1cddea4",239:"1c6f4606",419:"a70e3c85",506:"70402c53",619:"a1ca49f9",718:"62d77b72",769:"9bee6fb6",772:"ea12d9e4",928:"aebea282",960:"29de40e4"}[e]+".js"}}(),function(){n.miniCssF=function(e){return"css/"+e+"."+{193:"0c29947b",239:"fd5d7b06",419:"832a40ea",619:"93201e95",718:"dc007c1e",769:"522c5d34",772:"fdf33262",928:"e3bab1c5",960:"56b57727"}[e]+".css"}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="set-vue:";n.l=function(o,i,a,r){if(e[o])e[o].push(i);else{var c,l;if(void 0!==a)for(var u=document.getElementsByTagName("script"),s=0;s=4))break}1===this._dirtyLevel&&(this._dirtyLevel=0),b()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=v,e=i;try{return v=!0,i=this,this._runnings++,p(this),this.fn()}finally{d(this),this._runnings--,i=e,v=t}}stop(){this.active&&(p(this),d(this),this.onStop&&this.onStop(),this.active=!1)}}function f(t){return t.value}function p(t){t._trackId++,t._depsLength=0}function d(t){if(t.deps.length>t._depsLength){for(let e=t._depsLength;e{const n=new Map;return n.cleanup=t,n.computed=e,n},O=new WeakMap,T=Symbol(""),k=Symbol("");function M(t,e,n){if(v&&i){let e=O.get(t);e||O.set(t,e=new Map);let r=e.get(n);r||e.set(n,r=C((()=>e.delete(n)))),x(i,r,void 0)}}function $(t,e,n,o,i,s){const c=O.get(t);if(!c)return;let u=[];if("clear"===e)u=[...c.values()];else if("length"===n&&(0,r.cy)(t)){const t=Number(o);c.forEach(((e,n)=>{("length"===n||!(0,r.Bm)(n)&&n>=t)&&u.push(e)}))}else switch(void 0!==n&&u.push(c.get(n)),e){case"add":(0,r.cy)(t)?(0,r.yI)(n)&&u.push(c.get("length")):(u.push(c.get(T)),(0,r.CE)(t)&&u.push(c.get(k)));break;case"delete":(0,r.cy)(t)||(u.push(c.get(T)),(0,r.CE)(t)&&u.push(c.get(k)));break;case"set":(0,r.CE)(t)&&u.push(c.get(T));break}_();for(const r of u)r&&S(r,4,void 0);w()}const j=(0,r.pD)("__proto__,__v_isRef,__isVue"),P=new Set(Object.getOwnPropertyNames(Symbol).filter((t=>"arguments"!==t&&"caller"!==t)).map((t=>Symbol[t])).filter(r.Bm)),A=L();function L(){const t={};return["includes","indexOf","lastIndexOf"].forEach((e=>{t[e]=function(...t){const n=Et(this);for(let e=0,o=this.length;e{t[e]=function(...t){y(),_();const n=Et(this)[e].apply(this,t);return w(),b(),n}})),t}function R(t){(0,r.Bm)(t)||(t=String(t));const e=Et(this);return M(e,"has",t),e.hasOwnProperty(t)}class I{constructor(t=!1,e=!1){this._isReadonly=t,this._isShallow=e}get(t,e,n){const o=this._isReadonly,i=this._isShallow;if("__v_isReactive"===e)return!o;if("__v_isReadonly"===e)return o;if("__v_isShallow"===e)return i;if("__v_raw"===e)return n===(o?i?pt:ft:i?lt:at).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const s=(0,r.cy)(t);if(!o){if(s&&(0,r.$3)(A,e))return Reflect.get(A,e,n);if("hasOwnProperty"===e)return R}const c=Reflect.get(t,e,n);return((0,r.Bm)(e)?P.has(e):j(e))?c:(o||M(t,"get",e),i?c:jt(c)?s&&(0,r.yI)(e)?c:c.value:(0,r.Gv)(c)?o?mt(c):vt(c):c)}}class F extends I{constructor(t=!1){super(!1,t)}set(t,e,n,o){let i=t[e];if(!this._isShallow){const e=_t(i);if(wt(n)||_t(n)||(i=Et(i),n=Et(n)),!(0,r.cy)(t)&&jt(i)&&!jt(n))return!e&&(i.value=n,!0)}const s=(0,r.cy)(t)&&(0,r.yI)(e)?Number(e)t,W=t=>Reflect.getPrototypeOf(t);function V(t,e,n=!1,o=!1){t=t["__v_raw"];const i=Et(t),s=Et(e);n||((0,r.$H)(e,s)&&M(i,"get",e),M(i,"get",s));const{has:c}=W(i),u=o?B:n?Ot:Ct;return c.call(i,e)?u(t.get(e)):c.call(i,s)?u(t.get(s)):void(t!==i&&t.get(e))}function K(t,e=!1){const n=this["__v_raw"],o=Et(n),i=Et(t);return e||((0,r.$H)(t,i)&&M(o,"has",t),M(o,"has",i)),t===i?n.has(t):n.has(t)||n.has(i)}function X(t,e=!1){return t=t["__v_raw"],!e&&M(Et(t),"iterate",T),Reflect.get(t,"size",t)}function Z(t){t=Et(t);const e=Et(this),n=W(e),r=n.has.call(e,t);return r||(e.add(t),$(e,"add",t,t)),this}function H(t,e){e=Et(e);const n=Et(this),{has:o,get:i}=W(n);let s=o.call(n,t);s||(t=Et(t),s=o.call(n,t));const c=i.call(n,t);return n.set(t,e),s?(0,r.$H)(e,c)&&$(n,"set",t,e,c):$(n,"add",t,e),this}function z(t){const e=Et(this),{has:n,get:r}=W(e);let o=n.call(e,t);o||(t=Et(t),o=n.call(e,t));const i=r?r.call(e,t):void 0,s=e.delete(t);return o&&$(e,"delete",t,void 0,i),s}function q(){const t=Et(this),e=0!==t.size,n=void 0,r=t.clear();return e&&$(t,"clear",void 0,void 0,n),r}function Q(t,e){return function(n,r){const o=this,i=o["__v_raw"],s=Et(i),c=e?B:t?Ot:Ct;return!t&&M(s,"iterate",T),i.forEach(((t,e)=>n.call(r,c(t),c(e),o)))}}function Y(t,e,n){return function(...o){const i=this["__v_raw"],s=Et(i),c=(0,r.CE)(s),u="entries"===t||t===Symbol.iterator&&c,a="keys"===t&&c,l=i[t](...o),f=n?B:e?Ot:Ct;return!e&&M(s,"iterate",a?k:T),{next(){const{value:t,done:e}=l.next();return e?{value:t,done:e}:{value:u?[f(t[0]),f(t[1])]:f(t),done:e}},[Symbol.iterator](){return this}}}}function J(t){return function(...e){return"delete"!==t&&("clear"===t?void 0:this)}}function tt(){const t={get(t){return V(this,t)},get size(){return X(this)},has:K,add:Z,set:H,delete:z,clear:q,forEach:Q(!1,!1)},e={get(t){return V(this,t,!1,!0)},get size(){return X(this)},has:K,add:Z,set:H,delete:z,clear:q,forEach:Q(!1,!0)},n={get(t){return V(this,t,!0)},get size(){return X(this,!0)},has(t){return K.call(this,t,!0)},add:J("add"),set:J("set"),delete:J("delete"),clear:J("clear"),forEach:Q(!0,!1)},r={get(t){return V(this,t,!0,!0)},get size(){return X(this,!0)},has(t){return K.call(this,t,!0)},add:J("add"),set:J("set"),delete:J("delete"),clear:J("clear"),forEach:Q(!0,!0)},o=["keys","values","entries",Symbol.iterator];return o.forEach((o=>{t[o]=Y(o,!1,!1),n[o]=Y(o,!0,!1),e[o]=Y(o,!1,!0),r[o]=Y(o,!0,!0)})),[t,n,e,r]}const[et,nt,rt,ot]=tt();function it(t,e){const n=e?t?ot:rt:t?nt:et;return(e,o,i)=>"__v_isReactive"===o?!t:"__v_isReadonly"===o?t:"__v_raw"===o?e:Reflect.get((0,r.$3)(n,o)&&o in e?n:e,o,i)}const st={get:it(!1,!1)},ct={get:it(!1,!0)},ut={get:it(!0,!1)};const at=new WeakMap,lt=new WeakMap,ft=new WeakMap,pt=new WeakMap;function dt(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ht(t){return t["__v_skip"]||!Object.isExtensible(t)?0:dt((0,r.Zf)(t))}function vt(t){return _t(t)?t:yt(t,!1,G,st,at)}function gt(t){return yt(t,!1,U,ct,lt)}function mt(t){return yt(t,!0,D,ut,ft)}function yt(t,e,n,o,i){if(!(0,r.Gv)(t))return t;if(t["__v_raw"]&&(!e||!t["__v_isReactive"]))return t;const s=i.get(t);if(s)return s;const c=ht(t);if(0===c)return t;const u=new Proxy(t,2===c?o:n);return i.set(t,u),u}function bt(t){return _t(t)?bt(t["__v_raw"]):!(!t||!t["__v_isReactive"])}function _t(t){return!(!t||!t["__v_isReadonly"])}function wt(t){return!(!t||!t["__v_isShallow"])}function xt(t){return!!t&&!!t["__v_raw"]}function Et(t){const e=t&&t["__v_raw"];return e?Et(e):t}function St(t){return Object.isExtensible(t)&&(0,r.yQ)(t,"__v_skip",!0),t}const Ct=t=>(0,r.Gv)(t)?vt(t):t,Ot=t=>(0,r.Gv)(t)?mt(t):t;class Tt{constructor(t,e,n,r){this.getter=t,this._setter=e,this.dep=void 0,this.__v_isRef=!0,this["__v_isReadonly"]=!1,this.effect=new l((()=>t(this._value)),(()=>$t(this,2===this.effect._dirtyLevel?2:3))),this.effect.computed=this,this.effect.active=this._cacheable=!r,this["__v_isReadonly"]=n}get value(){const t=Et(this);return t._cacheable&&!t.effect.dirty||!(0,r.$H)(t._value,t._value=t.effect.run())||$t(t,4),Mt(t),t.effect._dirtyLevel>=2&&$t(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function kt(t,e,n=!1){let o,i;const s=(0,r.Tn)(t);s?(o=t,i=r.tE):(o=t.get,i=t.set);const c=new Tt(o,i,s||!i,n);return c}function Mt(t){var e;v&&i&&(t=Et(t),x(i,null!=(e=t.dep)?e:t.dep=C((()=>t.dep=void 0),t instanceof Tt?t:void 0),void 0))}function $t(t,e=4,n){t=Et(t);const r=t.dep;r&&S(r,e,void 0)}function jt(t){return!(!t||!0!==t.__v_isRef)}function Pt(t){return Lt(t,!1)}function At(t){return Lt(t,!0)}function Lt(t,e){return jt(t)?t:new Rt(t,e)}class Rt{constructor(t,e){this.__v_isShallow=e,this.dep=void 0,this.__v_isRef=!0,this._rawValue=e?t:Et(t),this._value=e?t:Ct(t)}get value(){return Mt(this),this._value}set value(t){const e=this.__v_isShallow||wt(t)||_t(t);t=e?t:Et(t),(0,r.$H)(t,this._rawValue)&&(this._rawValue=t,this._value=e?t:Ct(t),$t(this,4,t))}}function It(t){return jt(t)?t.value:t}const Ft={get:(t,e,n)=>It(Reflect.get(t,e,n)),set:(t,e,n,r)=>{const o=t[e];return jt(o)&&!jt(n)?(o.value=n,!0):Reflect.set(t,e,n,r)}};function Nt(t){return bt(t)?t:new Proxy(t,Ft)}},6768:function(t,e,n){"use strict";n.d(e,{$u:function(){return It},CE:function(){return hn},Df:function(){return _t},EW:function(){return tr},FK:function(){return nn},Gt:function(){return he},Gy:function(){return lt},Ic:function(){return Rt},Im:function(){return tn},K9:function(){return Ne},Lk:function(){return _n},MZ:function(){return bt},Mw:function(){return on},OW:function(){return gt},Q3:function(){return On},QP:function(){return pt},Qi:function(){return R},WQ:function(){return ve},Wv:function(){return vn},Y4:function(){return Ot},bF:function(){return wn},bo:function(){return st},dY:function(){return y},eW:function(){return Cn},g2:function(){return K},h:function(){return er},hi:function(){return Nt},jt:function(){return I},k6:function(){return F},n:function(){return Ct},nI:function(){return In},nT:function(){return J},pI:function(){return Wt},pM:function(){return wt},pR:function(){return ht},qL:function(){return s},sV:function(){return Lt},uX:function(){return an},v6:function(){return $n},vv:function(){return gn},wB:function(){return et},xo:function(){return Ft}});n(4114),n(3375),n(9225),n(3972),n(9209),n(5714),n(7561),n(6197);var r=n(144),o=n(4232);function i(t,e,n,r){try{return r?t(...r):t()}catch(o){c(o,e,n)}}function s(t,e,n,r){if((0,o.Tn)(t)){const s=i(t,e,n,r);return s&&(0,o.yL)(s)&&s.catch((t=>{c(t,e,n)})),s}if((0,o.cy)(t)){const o=[];for(let i=0;i>>1,o=f[r],i=O(o);ip&&f.splice(e,1)}function E(t){(0,o.cy)(t)?d.push(...t):h&&h.includes(t,t.allowRecurse?v+1:v)||d.push(t),w()}function S(t,e,n=(a?p+1:0)){for(0;nO(t)-O(e)));if(d.length=0,h)return void h.push(...t);for(h=t,v=0;vnull==t.id?1/0:t.id,T=(t,e)=>{const n=O(t)-O(e);if(0===n){if(t.pre&&!e.pre)return-1;if(e.pre&&!t.pre)return 1}return n};function k(t){l=!1,a=!0,f.sort(T);o.tE;try{for(p=0;p(0,o.Kg)(t)?t.trim():t))),e&&(i=n.map(o.bB))}let a;let l=r[a=(0,o.rU)(e)]||r[a=(0,o.rU)((0,o.PT)(e))];!l&&c&&(l=r[a=(0,o.rU)((0,o.Tg)(e))]),l&&s(l,t,6,i);const f=r[a+"Once"];if(f){if(t.emitted){if(t.emitted[a])return}else t.emitted={};t.emitted[a]=!0,s(f,t,6,i)}}function $(t,e,n=!1){const r=e.emitsCache,i=r.get(t);if(void 0!==i)return i;const s=t.emits;let c={},u=!1;if(!(0,o.Tn)(t)){const r=t=>{const n=$(t,e,!0);n&&(u=!0,(0,o.X$)(c,n))};!n&&e.mixins.length&&e.mixins.forEach(r),t.extends&&r(t.extends),t.mixins&&t.mixins.forEach(r)}return s||u?((0,o.cy)(s)?s.forEach((t=>c[t]=null)):(0,o.X$)(c,s),(0,o.Gv)(t)&&r.set(t,c),c):((0,o.Gv)(t)&&r.set(t,null),null)}function j(t,e){return!(!t||!(0,o.Mp)(e))&&(e=e.slice(2).replace(/Once$/,""),(0,o.$3)(t,e[0].toLowerCase()+e.slice(1))||(0,o.$3)(t,(0,o.Tg)(e))||(0,o.$3)(t,e))}let P=null,A=null;function L(t){const e=P;return P=t,A=t&&t.type.__scopeId||null,e}function R(t){A=t}function I(){A=null}function F(t,e=P,n){if(!e)return t;if(t._n)return t;const r=(...n)=>{r._d&&pn(-1);const o=L(e);let i;try{i=t(...n)}finally{L(o),r._d&&pn(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function N(t){const{type:e,vnode:n,proxy:r,withProxy:i,propsOptions:[s],slots:u,attrs:a,emit:l,render:f,renderCache:p,props:d,data:h,setupState:v,ctx:g,inheritAttrs:m}=t,y=L(t);let b,_;try{if(4&n.shapeFlag){const t=i||r,e=t;b=Tn(f.call(e,t,p,d,v,h,g)),_=a}else{const t=e;0,b=Tn(t.length>1?t(d,{attrs:a,slots:u,emit:l}):t(d,null)),_=e.props?a:G(a)}}catch(x){cn.length=0,c(x,t,1),b=wn(on)}let w=b;if(_&&!1!==m){const t=Object.keys(_),{shapeFlag:e}=w;t.length&&7&e&&(s&&t.some(o.CP)&&(_=D(_,s)),w=Sn(w,_,!1,!0))}return n.dirs&&(w=Sn(w,null,!1,!0),w.dirs=w.dirs?w.dirs.concat(n.dirs):n.dirs),n.transition&&(w.transition=n.transition),b=w,L(y),b}const G=t=>{let e;for(const n in t)("class"===n||"style"===n||(0,o.Mp)(n))&&((e||(e={}))[n]=t[n]);return e},D=(t,e)=>{const n={};for(const r in t)(0,o.CP)(r)&&r.slice(9)in e||(n[r]=t[r]);return n};function U(t,e,n){const{props:r,children:o,component:i}=t,{props:s,children:c,patchFlag:u}=e,a=i.emitsOptions;if(e.dirs||e.transition)return!0;if(!(n&&u>=0))return!(!o&&!c||c&&c.$stable)||r!==s&&(r?!s||B(r,s,a):!!s);if(1024&u)return!0;if(16&u)return r?B(r,s,a):!!s;if(8&u){const t=e.dynamicProps;for(let e=0;et.__isSuspense;function q(t,e){e&&e.pendingBranch?(0,o.cy)(t)?e.effects.push(...t):e.effects.push(t):E(t)}const Q=Symbol.for("v-scx"),Y=()=>{{const t=ve(Q);return t}};function J(t,e){return nt(t,null,e)}const tt={};function et(t,e,n){return nt(t,e,n)}function nt(t,e,{immediate:n,deep:c,flush:u,once:a,onTrack:l,onTrigger:f}=o.MZ){if(e&&a){const t=e;e=(...e)=>{t(...e),O()}}const p=Rn,d=t=>!0===c?t:it(t,!1===c?1:void 0);let h,v,g=!1,m=!1;if((0,r.i9)(t)?(h=()=>t.value,g=(0,r.fE)(t)):(0,r.g8)(t)?(h=()=>d(t),g=!0):(0,o.cy)(t)?(m=!0,g=t.some((t=>(0,r.g8)(t)||(0,r.fE)(t))),h=()=>t.map((t=>(0,r.i9)(t)?t.value:(0,r.g8)(t)?d(t):(0,o.Tn)(t)?i(t,p,2):void 0))):h=(0,o.Tn)(t)?e?()=>i(t,p,2):()=>(v&&v(),s(t,p,3,[b])):o.tE,e&&c){const t=h;h=()=>it(t())}let y,b=t=>{v=S.onStop=()=>{i(t,p,4),v=S.onStop=void 0}};if(Vn){if(b=o.tE,e?n&&s(e,p,3,[h(),m?[]:void 0,b]):h(),"sync"!==u)return o.tE;{const t=Y();y=t.__watcherHandles||(t.__watcherHandles=[])}}let w=m?new Array(t.length).fill(tt):tt;const x=()=>{if(S.active&&S.dirty)if(e){const t=S.run();(c||g||(m?t.some(((t,e)=>(0,o.$H)(t,w[e]))):(0,o.$H)(t,w)))&&(v&&v(),s(e,p,3,[t,w===tt?void 0:m&&w[0]===tt?[]:w,b]),w=t)}else S.run()};let E;x.allowRecurse=!!e,"sync"===u?E=x:"post"===u?E=()=>Fe(x,p&&p.suspense):(x.pre=!0,p&&(x.id=p.uid),E=()=>_(x));const S=new r.X2(h,o.tE,E),C=(0,r.o5)(),O=()=>{S.stop(),C&&(0,o.TF)(C.effects,S)};return e?n?x():w=S.run():"post"===u?Fe(S.run.bind(S),p&&p.suspense):S.run(),y&&y.push(O),O}function rt(t,e,n){const r=this.proxy,i=(0,o.Kg)(t)?t.includes(".")?ot(r,t):()=>r[t]:t.bind(r,r);let s;(0,o.Tn)(e)?s=e:(s=e.handler,n=e);const c=Gn(this),u=nt(i,s.bind(r),n);return c(),u}function ot(t,e){const n=e.split(".");return()=>{let e=t;for(let t=0;t{it(t,e,n)}));else if((0,o.Qd)(t))for(const r in t)it(t[r],e,n);return t}function st(t,e){if(null===P)return t;const n=Qn(P)||P.proxy,r=t.dirs||(t.dirs=[]);for(let i=0;i{t.isMounted=!0})),Ft((()=>{t.isUnmounting=!0})),t}const ft=[Function,Array],pt={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ft,onEnter:ft,onAfterEnter:ft,onEnterCancelled:ft,onBeforeLeave:ft,onLeave:ft,onAfterLeave:ft,onLeaveCancelled:ft,onBeforeAppear:ft,onAppear:ft,onAfterAppear:ft,onAppearCancelled:ft},dt={name:"BaseTransition",props:pt,setup(t,{slots:e}){const n=In(),o=lt();return()=>{const i=e.default&&_t(e.default(),!0);if(!i||!i.length)return;let s=i[0];if(i.length>1){let t=!1;for(const e of i)if(e.type!==on){0,s=e,t=!0;break}}const c=(0,r.ux)(t),{mode:u}=c;if(o.isLeaving)return mt(s);const a=yt(s);if(!a)return mt(s);const l=gt(a,c,o,n);bt(a,l);const f=n.subTree,p=f&&yt(f);if(p&&p.type!==on&&!mn(a,p)){const t=gt(p,c,o,n);if(bt(p,t),"out-in"===u&&a.type!==on)return o.isLeaving=!0,t.afterLeave=()=>{o.isLeaving=!1,!1!==n.update.active&&(n.effect.dirty=!0,n.update())},mt(s);"in-out"===u&&a.type!==on&&(t.delayLeave=(t,e,n)=>{const r=vt(o,p);r[String(p.key)]=p,t[ut]=()=>{e(),t[ut]=void 0,delete l.delayedLeave},l.delayedLeave=n})}return s}}},ht=dt;function vt(t,e){const{leavingVNodes:n}=t;let r=n.get(e.type);return r||(r=Object.create(null),n.set(e.type,r)),r}function gt(t,e,n,r){const{appear:i,mode:c,persisted:u=!1,onBeforeEnter:a,onEnter:l,onAfterEnter:f,onEnterCancelled:p,onBeforeLeave:d,onLeave:h,onAfterLeave:v,onLeaveCancelled:g,onBeforeAppear:m,onAppear:y,onAfterAppear:b,onAppearCancelled:_}=e,w=String(t.key),x=vt(n,t),E=(t,e)=>{t&&s(t,r,9,e)},S=(t,e)=>{const n=e[1];E(t,e),(0,o.cy)(t)?t.every((t=>t.length<=1))&&n():t.length<=1&&n()},C={mode:c,persisted:u,beforeEnter(e){let r=a;if(!n.isMounted){if(!i)return;r=m||a}e[ut]&&e[ut](!0);const o=x[w];o&&mn(t,o)&&o.el[ut]&&o.el[ut](),E(r,[e])},enter(t){let e=l,r=f,o=p;if(!n.isMounted){if(!i)return;e=y||l,r=b||f,o=_||p}let s=!1;const c=t[at]=e=>{s||(s=!0,E(e?o:r,[t]),C.delayedLeave&&C.delayedLeave(),t[at]=void 0)};e?S(e,[t,c]):c()},leave(e,r){const o=String(t.key);if(e[at]&&e[at](!0),n.isUnmounting)return r();E(d,[e]);let i=!1;const s=e[ut]=n=>{i||(i=!0,r(),E(n?g:v,[e]),e[ut]=void 0,x[o]===t&&delete x[o])};x[o]=t,h?S(h,[e,s]):s()},clone(t){return gt(t,e,n,r)}};return C}function mt(t){if(Et(t))return t=Sn(t),t.children=null,t}function yt(t){if(!Et(t))return t;const{shapeFlag:e,children:n}=t;if(n){if(16&e)return n[0];if(32&e&&(0,o.Tn)(n.default))return n.default()}}function bt(t,e){6&t.shapeFlag&&t.component?bt(t.component.subTree,e):128&t.shapeFlag?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}function _t(t,e=!1,n){let r=[],o=0;for(let i=0;i1)for(let i=0;i(0,o.X$)({name:t.name},e,{setup:t}))():t}const xt=t=>!!t.type.__asyncLoader +/*! #__NO_SIDE_EFFECTS__ */;const Et=t=>t.type.__isKeepAlive;RegExp,RegExp;function St(t,e){return(0,o.cy)(t)?t.some((t=>St(t,e))):(0,o.Kg)(t)?t.split(",").includes(e):!!(0,o.gd)(t)&&t.test(e)}function Ct(t,e){Tt(t,"a",e)}function Ot(t,e){Tt(t,"da",e)}function Tt(t,e,n=Rn){const r=t.__wdc||(t.__wdc=()=>{let e=n;while(e){if(e.isDeactivated)return;e=e.parent}return t()});if(jt(e,r,n),n){let t=n.parent;while(t&&t.parent)Et(t.parent.vnode)&&kt(r,e,n,t),t=t.parent}}function kt(t,e,n,r){const i=jt(e,t,r,!0);Nt((()=>{(0,o.TF)(r[e],i)}),n)}function Mt(t){t.shapeFlag&=-257,t.shapeFlag&=-513}function $t(t){return 128&t.shapeFlag?t.ssContent:t}function jt(t,e,n=Rn,o=!1){if(n){const i=n[t]||(n[t]=[]),c=e.__weh||(e.__weh=(...o)=>{if(n.isUnmounted)return;(0,r.C4)();const i=Gn(n),c=s(e,n,t,o);return i(),(0,r.bl)(),c});return o?i.unshift(c):i.push(c),c}}const Pt=t=>(e,n=Rn)=>(!Vn||"sp"===t)&&jt(t,((...t)=>e(...t)),n),At=Pt("bm"),Lt=Pt("m"),Rt=Pt("bu"),It=Pt("u"),Ft=Pt("bum"),Nt=Pt("um"),Gt=Pt("sp"),Dt=Pt("rtg"),Ut=Pt("rtc");function Bt(t,e=Rn){jt("ec",t,e)}function Wt(t,e,n,r){let i;const s=n&&n[r];if((0,o.cy)(t)||(0,o.Kg)(t)){i=new Array(t.length);for(let n=0,r=t.length;ne(t,n,void 0,s&&s[n])));else{const n=Object.keys(t);i=new Array(n.length);for(let r=0,o=n.length;rt?Un(t)?Qn(t)||t.proxy:Vt(t.parent):null,Kt=(0,o.X$)(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>Vt(t.parent),$root:t=>Vt(t.root),$emit:t=>t.emit,$options:t=>te(t),$forceUpdate:t=>t.f||(t.f=()=>{t.effect.dirty=!0,_(t.update)}),$nextTick:t=>t.n||(t.n=y.bind(t.proxy)),$watch:t=>rt.bind(t)}),Xt=(t,e)=>t!==o.MZ&&!t.__isScriptSetup&&(0,o.$3)(t,e),Zt={get({_:t},e){if("__v_skip"===e)return!0;const{ctx:n,setupState:i,data:s,props:c,accessCache:u,type:a,appContext:l}=t;let f;if("$"!==e[0]){const r=u[e];if(void 0!==r)switch(r){case 1:return i[e];case 2:return s[e];case 4:return n[e];case 3:return c[e]}else{if(Xt(i,e))return u[e]=1,i[e];if(s!==o.MZ&&(0,o.$3)(s,e))return u[e]=2,s[e];if((f=t.propsOptions[0])&&(0,o.$3)(f,e))return u[e]=3,c[e];if(n!==o.MZ&&(0,o.$3)(n,e))return u[e]=4,n[e];zt&&(u[e]=0)}}const p=Kt[e];let d,h;return p?("$attrs"===e&&(0,r.u4)(t.attrs,"get",""),p(t)):(d=a.__cssModules)&&(d=d[e])?d:n!==o.MZ&&(0,o.$3)(n,e)?(u[e]=4,n[e]):(h=l.config.globalProperties,(0,o.$3)(h,e)?h[e]:void 0)},set({_:t},e,n){const{data:r,setupState:i,ctx:s}=t;return Xt(i,e)?(i[e]=n,!0):r!==o.MZ&&(0,o.$3)(r,e)?(r[e]=n,!0):!(0,o.$3)(t.props,e)&&(("$"!==e[0]||!(e.slice(1)in t))&&(s[e]=n,!0))},has({_:{data:t,setupState:e,accessCache:n,ctx:r,appContext:i,propsOptions:s}},c){let u;return!!n[c]||t!==o.MZ&&(0,o.$3)(t,c)||Xt(e,c)||(u=s[0])&&(0,o.$3)(u,c)||(0,o.$3)(r,c)||(0,o.$3)(Kt,c)||(0,o.$3)(i.config.globalProperties,c)},defineProperty(t,e,n){return null!=n.get?t._.accessCache[e]=0:(0,o.$3)(n,"value")&&this.set(t,e,n.value,null),Reflect.defineProperty(t,e,n)}};function Ht(t){return(0,o.cy)(t)?t.reduce(((t,e)=>(t[e]=null,t)),{}):t}let zt=!0;function qt(t){const e=te(t),n=t.proxy,i=t.ctx;zt=!1,e.beforeCreate&&Yt(e.beforeCreate,t,"bc");const{data:s,computed:c,methods:u,watch:a,provide:l,inject:f,created:p,beforeMount:d,mounted:h,beforeUpdate:v,updated:g,activated:m,deactivated:y,beforeDestroy:b,beforeUnmount:_,destroyed:w,unmounted:x,render:E,renderTracked:S,renderTriggered:C,errorCaptured:O,serverPrefetch:T,expose:k,inheritAttrs:M,components:$,directives:j,filters:P}=e,A=null;if(f&&Qt(f,i,A),u)for(const r in u){const t=u[r];(0,o.Tn)(t)&&(i[r]=t.bind(n))}if(s){0;const e=s.call(n,n);0,(0,o.Gv)(e)&&(t.data=(0,r.Kh)(e))}if(zt=!0,c)for(const r in c){const t=c[r],e=(0,o.Tn)(t)?t.bind(n,n):(0,o.Tn)(t.get)?t.get.bind(n,n):o.tE;0;const s=!(0,o.Tn)(t)&&(0,o.Tn)(t.set)?t.set.bind(n):o.tE,u=tr({get:e,set:s});Object.defineProperty(i,r,{enumerable:!0,configurable:!0,get:()=>u.value,set:t=>u.value=t})}if(a)for(const r in a)Jt(a[r],i,n,r);if(l){const t=(0,o.Tn)(l)?l.call(n):l;Reflect.ownKeys(t).forEach((e=>{he(e,t[e])}))}function L(t,e){(0,o.cy)(e)?e.forEach((e=>t(e.bind(n)))):e&&t(e.bind(n))}if(p&&Yt(p,t,"c"),L(At,d),L(Lt,h),L(Rt,v),L(It,g),L(Ct,m),L(Ot,y),L(Bt,O),L(Ut,S),L(Dt,C),L(Ft,_),L(Nt,x),L(Gt,T),(0,o.cy)(k))if(k.length){const e=t.exposed||(t.exposed={});k.forEach((t=>{Object.defineProperty(e,t,{get:()=>n[t],set:e=>n[t]=e})}))}else t.exposed||(t.exposed={});E&&t.render===o.tE&&(t.render=E),null!=M&&(t.inheritAttrs=M),$&&(t.components=$),j&&(t.directives=j)}function Qt(t,e,n=o.tE){(0,o.cy)(t)&&(t=ie(t));for(const i in t){const n=t[i];let s;s=(0,o.Gv)(n)?"default"in n?ve(n.from||i,n.default,!0):ve(n.from||i):ve(n),(0,r.i9)(s)?Object.defineProperty(e,i,{enumerable:!0,configurable:!0,get:()=>s.value,set:t=>s.value=t}):e[i]=s}}function Yt(t,e,n){s((0,o.cy)(t)?t.map((t=>t.bind(e.proxy))):t.bind(e.proxy),e,n)}function Jt(t,e,n,r){const i=r.includes(".")?ot(n,r):()=>n[r];if((0,o.Kg)(t)){const n=e[t];(0,o.Tn)(n)&&et(i,n)}else if((0,o.Tn)(t))et(i,t.bind(n));else if((0,o.Gv)(t))if((0,o.cy)(t))t.forEach((t=>Jt(t,e,n,r)));else{const r=(0,o.Tn)(t.handler)?t.handler.bind(n):e[t.handler];(0,o.Tn)(r)&&et(i,r,t)}else 0}function te(t){const e=t.type,{mixins:n,extends:r}=e,{mixins:i,optionsCache:s,config:{optionMergeStrategies:c}}=t.appContext,u=s.get(e);let a;return u?a=u:i.length||n||r?(a={},i.length&&i.forEach((t=>ee(a,t,c,!0))),ee(a,e,c)):a=e,(0,o.Gv)(e)&&s.set(e,a),a}function ee(t,e,n,r=!1){const{mixins:o,extends:i}=e;i&&ee(t,i,n,!0),o&&o.forEach((e=>ee(t,e,n,!0)));for(const s in e)if(r&&"expose"===s);else{const r=ne[s]||n&&n[s];t[s]=r?r(t[s],e[s]):e[s]}return t}const ne={data:re,props:ue,emits:ue,methods:ce,computed:ce,beforeCreate:se,created:se,beforeMount:se,mounted:se,beforeUpdate:se,updated:se,beforeDestroy:se,beforeUnmount:se,destroyed:se,unmounted:se,activated:se,deactivated:se,errorCaptured:se,serverPrefetch:se,components:ce,directives:ce,watch:ae,provide:re,inject:oe};function re(t,e){return e?t?function(){return(0,o.X$)((0,o.Tn)(t)?t.call(this,this):t,(0,o.Tn)(e)?e.call(this,this):e)}:e:t}function oe(t,e){return ce(ie(t),ie(e))}function ie(t){if((0,o.cy)(t)){const e={};for(let n=0;n1)return n&&(0,o.Tn)(e)?e.call(r&&r.proxy):e}else 0}const ge={},me=()=>Object.create(ge),ye=t=>Object.getPrototypeOf(t)===ge;function be(t,e,n,o=!1){const i={},s=me();t.propsDefaults=Object.create(null),we(t,e,i,s);for(const r in t.propsOptions[0])r in i||(i[r]=void 0);n?t.props=o?i:(0,r.Gc)(i):t.type.props?t.props=i:t.props=s,t.attrs=s}function _e(t,e,n,i){const{props:s,attrs:c,vnode:{patchFlag:u}}=t,a=(0,r.ux)(s),[l]=t.propsOptions;let f=!1;if(!(i||u>0)||16&u){let r;we(t,e,s,c)&&(f=!0);for(const i in a)e&&((0,o.$3)(e,i)||(r=(0,o.Tg)(i))!==i&&(0,o.$3)(e,r))||(l?!n||void 0===n[i]&&void 0===n[r]||(s[i]=xe(l,a,i,void 0,t,!0)):delete s[i]);if(c!==a)for(const t in c)e&&(0,o.$3)(e,t)||(delete c[t],f=!0)}else if(8&u){const n=t.vnode.dynamicProps;for(let r=0;r{a=!0;const[n,r]=Ee(t,e,!0);(0,o.X$)(c,n),r&&u.push(...r)};!n&&e.mixins.length&&e.mixins.forEach(r),t.extends&&r(t.extends),t.mixins&&t.mixins.forEach(r)}if(!s&&!a)return(0,o.Gv)(t)&&r.set(t,o.Oj),o.Oj;if((0,o.cy)(s))for(let f=0;f-1,r[1]=n<0||t-1||(0,o.$3)(r,"default"))&&u.push(e)}}}}const l=[c,u];return(0,o.Gv)(t)&&r.set(t,l),l}function Se(t){return"$"!==t[0]&&!(0,o.SU)(t)}function Ce(t){if(null===t)return"null";if("function"===typeof t)return t.name||"";if("object"===typeof t){const e=t.constructor&&t.constructor.name;return e||""}return""}function Oe(t,e){return Ce(t)===Ce(e)}function Te(t,e){return(0,o.cy)(e)?e.findIndex((e=>Oe(e,t))):(0,o.Tn)(e)&&Oe(e,t)?0:-1}const ke=t=>"_"===t[0]||"$stable"===t,Me=t=>(0,o.cy)(t)?t.map(Tn):[Tn(t)],$e=(t,e,n)=>{if(e._n)return e;const r=F(((...t)=>Me(e(...t))),n);return r._c=!1,r},je=(t,e,n)=>{const r=t._ctx;for(const i in t){if(ke(i))continue;const n=t[i];if((0,o.Tn)(n))e[i]=$e(i,n,r);else if(null!=n){0;const t=Me(n);e[i]=()=>t}}},Pe=(t,e)=>{const n=Me(e);t.slots.default=()=>n},Ae=(t,e)=>{const n=t.slots=me();if(32&t.vnode.shapeFlag){const t=e._;t?((0,o.X$)(n,e),(0,o.yQ)(n,"_",t,!0)):je(e,n)}else e&&Pe(t,e)},Le=(t,e,n)=>{const{vnode:r,slots:i}=t;let s=!0,c=o.MZ;if(32&r.shapeFlag){const t=e._;t?n&&1===t?s=!1:((0,o.X$)(i,e),n||1!==t||delete i._):(s=!e.$stable,je(e,i)),c=e}else e&&(Pe(t,e),c={default:1});if(s)for(const o in i)ke(o)||null!=c[o]||delete i[o]};function Re(t,e,n,s,c=!1){if((0,o.cy)(t))return void t.forEach(((t,r)=>Re(t,e&&((0,o.cy)(e)?e[r]:e),n,s,c)));if(xt(s)&&!c)return;const u=4&s.shapeFlag?Qn(s.component)||s.component.proxy:s.el,a=c?null:u,{i:l,r:f}=t;const p=e&&e.r,d=l.refs===o.MZ?l.refs={}:l.refs,h=l.setupState;if(null!=p&&p!==f&&((0,o.Kg)(p)?(d[p]=null,(0,o.$3)(h,p)&&(h[p]=null)):(0,r.i9)(p)&&(p.value=null)),(0,o.Tn)(f))i(f,l,12,[a,d]);else{const e=(0,o.Kg)(f),i=(0,r.i9)(f);if(e||i){const r=()=>{if(t.f){const n=e?(0,o.$3)(h,f)?h[f]:d[f]:f.value;c?(0,o.cy)(n)&&(0,o.TF)(n,u):(0,o.cy)(n)?n.includes(u)||n.push(u):e?(d[f]=[u],(0,o.$3)(h,f)&&(h[f]=d[f])):(f.value=[u],t.k&&(d[t.k]=f.value))}else e?(d[f]=a,(0,o.$3)(h,f)&&(h[f]=a)):i&&(f.value=a,t.k&&(d[t.k]=a))};a?(r.id=-1,Fe(r,n)):r()}else 0}}function Ie(){"boolean"!==typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&((0,o.We)().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__=!1)}const Fe=q;function Ne(t){return Ge(t)}function Ge(t,e){Ie();const n=(0,o.We)();n.__VUE__=!0;const{insert:i,remove:s,patchProp:c,createElement:u,createText:a,createComment:l,setText:f,setElementText:p,parentNode:d,nextSibling:h,setScopeId:v=o.tE,insertStaticContent:g}=t,m=(t,e,n,r=null,o=null,i=null,s=void 0,c=null,u=!!e.dynamicChildren)=>{if(t===e)return;t&&!mn(t,e)&&(r=Y(t),Z(t,o,i,!0),t=null),-2===e.patchFlag&&(u=!1,e.dynamicChildren=null);const{type:a,ref:l,shapeFlag:f}=e;switch(a){case rn:y(t,e,n,r);break;case on:b(t,e,n,r);break;case sn:null==t&&w(e,n,r,s);break;case nn:L(t,e,n,r,o,i,s,c,u);break;default:1&f?T(t,e,n,r,o,i,s,c,u):6&f?R(t,e,n,r,o,i,s,c,u):(64&f||128&f)&&a.process(t,e,n,r,o,i,s,c,u,et)}null!=l&&o&&Re(l,t&&t.ref,i,e||t,!e)},y=(t,e,n,r)=>{if(null==t)i(e.el=a(e.children),n,r);else{const n=e.el=t.el;e.children!==t.children&&f(n,e.children)}},b=(t,e,n,r)=>{null==t?i(e.el=l(e.children||""),n,r):e.el=t.el},w=(t,e,n,r)=>{[t.el,t.anchor]=g(t.children,e,n,r,t.el,t.anchor)},E=({el:t,anchor:e},n,r)=>{let o;while(t&&t!==e)o=h(t),i(t,n,r),t=o;i(e,n,r)},O=({el:t,anchor:e})=>{let n;while(t&&t!==e)n=h(t),s(t),t=n;s(e)},T=(t,e,n,r,o,i,s,c,u)=>{"svg"===e.type?s="svg":"math"===e.type&&(s="mathml"),null==t?k(e,n,r,o,i,s,c,u):j(t,e,o,i,s,c,u)},k=(t,e,n,r,s,a,l,f)=>{let d,h;const{props:v,shapeFlag:g,transition:m,dirs:y}=t;if(d=t.el=u(t.type,a,v&&v.is,v),8&g?p(d,t.children):16&g&&$(t.children,d,null,r,s,De(t,a),l,f),y&&ct(t,null,r,"created"),M(d,t,t.scopeId,l,r),v){for(const e in v)"value"===e||(0,o.SU)(e)||c(d,e,null,v[e],a,t.children,r,s,Q);"value"in v&&c(d,"value",null,v.value,a),(h=v.onVnodeBeforeMount)&&jn(h,r,t)}y&&ct(t,null,r,"beforeMount");const b=Be(s,m);b&&m.beforeEnter(d),i(d,e,n),((h=v&&v.onVnodeMounted)||b||y)&&Fe((()=>{h&&jn(h,r,t),b&&m.enter(d),y&&ct(t,null,r,"mounted")}),s)},M=(t,e,n,r,o)=>{if(n&&v(t,n),r)for(let i=0;i{for(let a=u;a{const a=e.el=t.el;let{patchFlag:l,dynamicChildren:f,dirs:d}=e;l|=16&t.patchFlag;const h=t.props||o.MZ,v=e.props||o.MZ;let g;if(n&&Ue(n,!1),(g=v.onVnodeBeforeUpdate)&&jn(g,n,e,t),d&&ct(e,t,n,"beforeUpdate"),n&&Ue(n,!0),f?P(t.dynamicChildren,f,a,n,r,De(e,i),s):u||B(t,e,a,null,n,r,De(e,i),s,!1),l>0){if(16&l)A(a,e,h,v,n,r,i);else if(2&l&&h.class!==v.class&&c(a,"class",null,v.class,i),4&l&&c(a,"style",h.style,v.style,i),8&l){const o=e.dynamicProps;for(let e=0;e{g&&jn(g,n,e,t),d&&ct(e,t,n,"updated")}),r)},P=(t,e,n,r,o,i,s)=>{for(let c=0;c{if(n!==r){if(n!==o.MZ)for(const a in n)(0,o.SU)(a)||a in r||c(t,a,n[a],null,u,e.children,i,s,Q);for(const a in r){if((0,o.SU)(a))continue;const l=r[a],f=n[a];l!==f&&"value"!==a&&c(t,a,f,l,u,e.children,i,s,Q)}"value"in r&&c(t,"value",n.value,r.value,u)}},L=(t,e,n,r,o,s,c,u,l)=>{const f=e.el=t?t.el:a(""),p=e.anchor=t?t.anchor:a("");let{patchFlag:d,dynamicChildren:h,slotScopeIds:v}=e;v&&(u=u?u.concat(v):v),null==t?(i(f,n,r),i(p,n,r),$(e.children||[],n,p,o,s,c,u,l)):d>0&&64&d&&h&&t.dynamicChildren?(P(t.dynamicChildren,h,n,o,s,c,u),(null!=e.key||o&&e===o.subTree)&&We(t,e,!0)):B(t,e,n,p,o,s,c,u,l)},R=(t,e,n,r,o,i,s,c,u)=>{e.slotScopeIds=c,null==t?512&e.shapeFlag?o.ctx.activate(e,n,r,s,u):I(e,n,r,o,i,s,u):F(t,e,u)},I=(t,e,n,r,o,i,s)=>{const c=t.component=Ln(t,r,o);if(Et(t)&&(c.ctx.renderer=et),Kn(c),c.asyncDep){if(o&&o.registerDep(c,G),!t.el){const t=c.subTree=wn(on);b(null,t,e,n)}}else G(c,t,e,n,o,i,s)},F=(t,e,n)=>{const r=e.component=t.component;if(U(t,e,n)){if(r.asyncDep&&!r.asyncResolved)return void D(r,e,n);r.next=e,x(r.update),r.effect.dirty=!0,r.update()}else e.el=t.el,r.vnode=e},G=(t,e,n,i,s,c,u)=>{const a=()=>{if(t.isMounted){let{next:e,bu:n,u:r,parent:i,vnode:l}=t;{const n=Ke(t);if(n)return e&&(e.el=l.el,D(t,e,u)),void n.asyncDep.then((()=>{t.isUnmounted||a()}))}let f,p=e;0,Ue(t,!1),e?(e.el=l.el,D(t,e,u)):e=l,n&&(0,o.DY)(n),(f=e.props&&e.props.onVnodeBeforeUpdate)&&jn(f,i,e,l),Ue(t,!0);const h=N(t);0;const v=t.subTree;t.subTree=h,m(v,h,d(v.el),Y(v),t,s,c),e.el=h.el,null===p&&W(t,h.el),r&&Fe(r,s),(f=e.props&&e.props.onVnodeUpdated)&&Fe((()=>jn(f,i,e,l)),s)}else{let r;const{el:u,props:a}=e,{bm:l,m:f,parent:p}=t,d=xt(e);if(Ue(t,!1),l&&(0,o.DY)(l),!d&&(r=a&&a.onVnodeBeforeMount)&&jn(r,p,e),Ue(t,!0),u&&rt){const n=()=>{t.subTree=N(t),rt(u,t.subTree,t,s,null)};d?e.type.__asyncLoader().then((()=>!t.isUnmounted&&n())):n()}else{0;const r=t.subTree=N(t);0,m(null,r,n,i,t,s,c),e.el=r.el}if(f&&Fe(f,s),!d&&(r=a&&a.onVnodeMounted)){const t=e;Fe((()=>jn(r,p,t)),s)}(256&e.shapeFlag||p&&xt(p.vnode)&&256&p.vnode.shapeFlag)&&t.a&&Fe(t.a,s),t.isMounted=!0,e=n=i=null}},l=t.effect=new r.X2(a,o.tE,(()=>_(f)),t.scope),f=t.update=()=>{l.dirty&&l.run()};f.id=t.uid,Ue(t,!0),f()},D=(t,e,n)=>{e.component=t;const o=t.vnode.props;t.vnode=e,t.next=null,_e(t,e.props,o,n),Le(t,e.children,n),(0,r.C4)(),S(t),(0,r.bl)()},B=(t,e,n,r,o,i,s,c,u=!1)=>{const a=t&&t.children,l=t?t.shapeFlag:0,f=e.children,{patchFlag:d,shapeFlag:h}=e;if(d>0){if(128&d)return void K(a,f,n,r,o,i,s,c,u);if(256&d)return void V(a,f,n,r,o,i,s,c,u)}8&h?(16&l&&Q(a,o,i),f!==a&&p(n,f)):16&l?16&h?K(a,f,n,r,o,i,s,c,u):Q(a,o,i,!0):(8&l&&p(n,""),16&h&&$(f,n,r,o,i,s,c,u))},V=(t,e,n,r,i,s,c,u,a)=>{t=t||o.Oj,e=e||o.Oj;const l=t.length,f=e.length,p=Math.min(l,f);let d;for(d=0;df?Q(t,i,s,!0,!1,p):$(e,n,r,i,s,c,u,a,p)},K=(t,e,n,r,i,s,c,u,a)=>{let l=0;const f=e.length;let p=t.length-1,d=f-1;while(l<=p&&l<=d){const r=t[l],o=e[l]=a?kn(e[l]):Tn(e[l]);if(!mn(r,o))break;m(r,o,n,null,i,s,c,u,a),l++}while(l<=p&&l<=d){const r=t[p],o=e[d]=a?kn(e[d]):Tn(e[d]);if(!mn(r,o))break;m(r,o,n,null,i,s,c,u,a),p--,d--}if(l>p){if(l<=d){const t=d+1,o=td)while(l<=p)Z(t[l],i,s,!0),l++;else{const h=l,v=l,g=new Map;for(l=v;l<=d;l++){const t=e[l]=a?kn(e[l]):Tn(e[l]);null!=t.key&&g.set(t.key,l)}let y,b=0;const _=d-v+1;let w=!1,x=0;const E=new Array(_);for(l=0;l<_;l++)E[l]=0;for(l=h;l<=p;l++){const r=t[l];if(b>=_){Z(r,i,s,!0);continue}let o;if(null!=r.key)o=g.get(r.key);else for(y=v;y<=d;y++)if(0===E[y-v]&&mn(r,e[y])){o=y;break}void 0===o?Z(r,i,s,!0):(E[o-v]=l+1,o>=x?x=o:w=!0,m(r,e[o],n,null,i,s,c,u,a),b++)}const S=w?Ve(E):o.Oj;for(y=S.length-1,l=_-1;l>=0;l--){const t=v+l,o=e[t],p=t+1{const{el:s,type:c,transition:u,children:a,shapeFlag:l}=t;if(6&l)return void X(t.component.subTree,e,n,r);if(128&l)return void t.suspense.move(e,n,r);if(64&l)return void c.move(t,e,n,et);if(c===nn){i(s,e,n);for(let t=0;tu.enter(s)),o);else{const{leave:t,delayLeave:r,afterLeave:o}=u,c=()=>i(s,e,n),a=()=>{t(s,(()=>{c(),o&&o()}))};r?r(s,c,a):a()}else i(s,e,n)},Z=(t,e,n,r=!1,o=!1)=>{const{type:i,props:s,ref:c,children:u,dynamicChildren:a,shapeFlag:l,patchFlag:f,dirs:p}=t;if(null!=c&&Re(c,null,n,t,!0),256&l)return void e.ctx.deactivate(t);const d=1&l&&p,h=!xt(t);let v;if(h&&(v=s&&s.onVnodeBeforeUnmount)&&jn(v,e,t),6&l)q(t.component,n,r);else{if(128&l)return void t.suspense.unmount(n,r);d&&ct(t,null,e,"beforeUnmount"),64&l?t.type.remove(t,e,n,o,et,r):a&&(i!==nn||f>0&&64&f)?Q(a,e,n,!1,!0):(i===nn&&384&f||!o&&16&l)&&Q(u,e,n),r&&H(t)}(h&&(v=s&&s.onVnodeUnmounted)||d)&&Fe((()=>{v&&jn(v,e,t),d&&ct(t,null,e,"unmounted")}),n)},H=t=>{const{type:e,el:n,anchor:r,transition:o}=t;if(e===nn)return void z(n,r);if(e===sn)return void O(t);const i=()=>{s(n),o&&!o.persisted&&o.afterLeave&&o.afterLeave()};if(1&t.shapeFlag&&o&&!o.persisted){const{leave:e,delayLeave:r}=o,s=()=>e(n,i);r?r(t.el,i,s):s()}else i()},z=(t,e)=>{let n;while(t!==e)n=h(t),s(t),t=n;s(e)},q=(t,e,n)=>{const{bum:r,scope:i,update:s,subTree:c,um:u}=t;r&&(0,o.DY)(r),i.stop(),s&&(s.active=!1,Z(c,t,e,n)),u&&Fe(u,e),Fe((()=>{t.isUnmounted=!0}),e),e&&e.pendingBranch&&!e.isUnmounted&&t.asyncDep&&!t.asyncResolved&&t.suspenseId===e.pendingId&&(e.deps--,0===e.deps&&e.resolve())},Q=(t,e,n,r=!1,o=!1,i=0)=>{for(let s=i;s6&t.shapeFlag?Y(t.component.subTree):128&t.shapeFlag?t.suspense.next():h(t.anchor||t.el);let J=!1;const tt=(t,e,n)=>{null==t?e._vnode&&Z(e._vnode,null,null,!0):m(e._vnode||null,t,e,null,null,null,n),J||(J=!0,S(),C(),J=!1),e._vnode=t},et={p:m,um:Z,m:X,r:H,mt:I,mc:$,pc:B,pbc:P,n:Y,o:t};let nt,rt;return e&&([nt,rt]=e(et)),{render:tt,hydrate:nt,createApp:pe(tt,nt)}}function De({type:t,props:e},n){return"svg"===n&&"foreignObject"===t||"mathml"===n&&"annotation-xml"===t&&e&&e.encoding&&e.encoding.includes("html")?void 0:n}function Ue({effect:t,update:e},n){t.allowRecurse=e.allowRecurse=n}function Be(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted}function We(t,e,n=!1){const r=t.children,i=e.children;if((0,o.cy)(r)&&(0,o.cy)(i))for(let o=0;o>1,t[n[c]]0&&(e[r]=n[i-1]),n[i]=r)}}i=n.length,s=n[i-1];while(i-- >0)n[i]=s,s=e[s];return n}function Ke(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:Ke(e)}const Xe=t=>t.__isTeleport,Ze=t=>t&&(t.disabled||""===t.disabled),He=t=>"undefined"!==typeof SVGElement&&t instanceof SVGElement,ze=t=>"function"===typeof MathMLElement&&t instanceof MathMLElement,qe=(t,e)=>{const n=t&&t.to;if((0,o.Kg)(n)){if(e){const t=e(n);return t}return null}return n},Qe={name:"Teleport",__isTeleport:!0,process(t,e,n,r,o,i,s,c,u,a){const{mc:l,pc:f,pbc:p,o:{insert:d,querySelector:h,createText:v,createComment:g}}=a,m=Ze(e.props);let{shapeFlag:y,children:b,dynamicChildren:_}=e;if(null==t){const t=e.el=v(""),a=e.anchor=v("");d(t,n,r),d(a,n,r);const f=e.target=qe(e.props,h),p=e.targetAnchor=v("");f&&(d(p,f),"svg"===s||He(f)?s="svg":("mathml"===s||ze(f))&&(s="mathml"));const g=(t,e)=>{16&y&&l(b,t,e,o,i,s,c,u)};m?g(n,a):f&&g(f,p)}else{e.el=t.el;const r=e.anchor=t.anchor,l=e.target=t.target,d=e.targetAnchor=t.targetAnchor,v=Ze(t.props),g=v?n:l,y=v?r:d;if("svg"===s||He(l)?s="svg":("mathml"===s||ze(l))&&(s="mathml"),_?(p(t.dynamicChildren,_,g,o,i,s,c),We(t,e,!0)):u||f(t,e,g,y,o,i,s,c,!1),m)v?e.props&&t.props&&e.props.to!==t.props.to&&(e.props.to=t.props.to):Ye(e,n,r,a,1);else if((e.props&&e.props.to)!==(t.props&&t.props.to)){const t=e.target=qe(e.props,h);t&&Ye(e,t,null,a,0)}else v&&Ye(e,l,d,a,1)}en(e)},remove(t,e,n,r,{um:o,o:{remove:i}},s){const{shapeFlag:c,children:u,anchor:a,targetAnchor:l,target:f,props:p}=t;if(f&&i(l),s&&i(a),16&c){const t=s||!Ze(p);for(let r=0;r0?un||o.Oj:null,ln(),fn>0&&un&&un.push(t),t}function hn(t,e,n,r,o,i){return dn(_n(t,e,n,r,o,i,!0))}function vn(t,e,n,r,o){return dn(wn(t,e,n,r,o,!0))}function gn(t){return!!t&&!0===t.__v_isVNode}function mn(t,e){return t.type===e.type&&t.key===e.key}const yn=({key:t})=>null!=t?t:null,bn=({ref:t,ref_key:e,ref_for:n})=>("number"===typeof t&&(t=""+t),null!=t?(0,o.Kg)(t)||(0,r.i9)(t)||(0,o.Tn)(t)?{i:P,r:t,k:e,f:!!n}:t:null);function _n(t,e=null,n=null,r=0,i=null,s=(t===nn?0:1),c=!1,u=!1){const a={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&yn(e),ref:e&&bn(e),scopeId:A,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:P};return u?(Mn(a,n),128&s&&t.normalize(a)):n&&(a.shapeFlag|=(0,o.Kg)(n)?8:16),fn>0&&!c&&un&&(a.patchFlag>0||6&s)&&32!==a.patchFlag&&un.push(a),a}const wn=xn;function xn(t,e=null,n=null,i=0,s=null,c=!1){if(t&&t!==X||(t=on),gn(t)){const r=Sn(t,e,!0);return n&&Mn(r,n),fn>0&&!c&&un&&(6&r.shapeFlag?un[un.indexOf(t)]=r:un.push(r)),r.patchFlag|=-2,r}if(Jn(t)&&(t=t.__vccOpts),e){e=En(e);let{class:t,style:n}=e;t&&!(0,o.Kg)(t)&&(e.class=(0,o.C4)(t)),(0,o.Gv)(n)&&((0,r.ju)(n)&&!(0,o.cy)(n)&&(n=(0,o.X$)({},n)),e.style=(0,o.Tr)(n))}const u=(0,o.Kg)(t)?1:z(t)?128:Xe(t)?64:(0,o.Gv)(t)?4:(0,o.Tn)(t)?2:0;return _n(t,e,n,i,s,u,c,!0)}function En(t){return t?(0,r.ju)(t)||ye(t)?(0,o.X$)({},t):t:null}function Sn(t,e,n=!1,r=!1){const{props:i,ref:s,patchFlag:c,children:u,transition:a}=t,l=e?$n(i||{},e):i,f={__v_isVNode:!0,__v_skip:!0,type:t.type,props:l,key:l&&yn(l),ref:e&&e.ref?n&&s?(0,o.cy)(s)?s.concat(bn(e)):[s,bn(e)]:bn(e):s,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:u,target:t.target,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==nn?-1===c?16:16|c:c,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:a,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&Sn(t.ssContent),ssFallback:t.ssFallback&&Sn(t.ssFallback),el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce};return a&&r&&(f.transition=a.clone(f)),f}function Cn(t=" ",e=0){return wn(rn,null,t,e)}function On(t="",e=!1){return e?(an(),vn(on,null,t)):wn(on,null,t)}function Tn(t){return null==t||"boolean"===typeof t?wn(on):(0,o.cy)(t)?wn(nn,null,t.slice()):"object"===typeof t?kn(t):wn(rn,null,String(t))}function kn(t){return null===t.el&&-1!==t.patchFlag||t.memo?t:Sn(t)}function Mn(t,e){let n=0;const{shapeFlag:r}=t;if(null==e)e=null;else if((0,o.cy)(e))n=16;else if("object"===typeof e){if(65&r){const n=e.default;return void(n&&(n._c&&(n._d=!1),Mn(t,n()),n._c&&(n._d=!0)))}{n=32;const r=e._;r||ye(e)?3===r&&P&&(1===P.slots._?e._=1:(e._=2,t.patchFlag|=1024)):e._ctx=P}}else(0,o.Tn)(e)?(e={default:e,_ctx:P},n=32):(e=String(e),64&r?(n=16,e=[Cn(e)]):n=8);t.children=e,t.shapeFlag|=n}function $n(...t){const e={};for(let n=0;nRn||P;let Fn,Nn;{const t=(0,o.We)(),e=(e,n)=>{let r;return(r=t[e])||(r=t[e]=[]),r.push(n),t=>{r.length>1?r.forEach((e=>e(t))):r[0](t)}};Fn=e("__VUE_INSTANCE_SETTERS__",(t=>Rn=t)),Nn=e("__VUE_SSR_SETTERS__",(t=>Vn=t))}const Gn=t=>{const e=Rn;return Fn(t),t.scope.on(),()=>{t.scope.off(),Fn(e)}},Dn=()=>{Rn&&Rn.scope.off(),Fn(null)};function Un(t){return 4&t.vnode.shapeFlag}let Bn,Wn,Vn=!1;function Kn(t,e=!1){e&&Nn(e);const{props:n,children:r}=t.vnode,o=Un(t);be(t,n,o,e),Ae(t,r);const i=o?Xn(t,e):void 0;return e&&Nn(!1),i}function Xn(t,e){const n=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,Zt);const{setup:s}=n;if(s){const n=t.setupContext=s.length>1?qn(t):null,u=Gn(t);(0,r.C4)();const a=i(s,t,0,[t.props,n]);if((0,r.bl)(),u(),(0,o.yL)(a)){if(a.then(Dn,Dn),e)return a.then((n=>{Zn(t,n,e)})).catch((e=>{c(e,t,0)}));t.asyncDep=a}else Zn(t,a,e)}else Hn(t,e)}function Zn(t,e,n){(0,o.Tn)(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:(0,o.Gv)(e)&&(t.setupState=(0,r.Pr)(e)),Hn(t,n)}function Hn(t,e,n){const i=t.type;if(!t.render){if(!e&&Bn&&!i.render){const e=i.template||te(t).template;if(e){0;const{isCustomElement:n,compilerOptions:r}=t.appContext.config,{delimiters:s,compilerOptions:c}=i,u=(0,o.X$)((0,o.X$)({isCustomElement:n,delimiters:s},r),c);i.render=Bn(e,u)}}t.render=i.render||o.tE,Wn&&Wn(t)}{const e=Gn(t);(0,r.C4)();try{qt(t)}finally{(0,r.bl)(),e()}}}const zn={get(t,e){return(0,r.u4)(t,"get",""),t[e]}};function qn(t){const e=e=>{t.exposed=e||{}};return{attrs:new Proxy(t.attrs,zn),slots:t.slots,emit:t.emit,expose:e}}function Qn(t){if(t.exposed)return t.exposeProxy||(t.exposeProxy=new Proxy((0,r.Pr)((0,r.IG)(t.exposed)),{get(e,n){return n in e?e[n]:n in Kt?Kt[n](t):void 0},has(t,e){return e in t||e in Kt}}))}function Yn(t,e=!0){return(0,o.Tn)(t)?t.displayName||t.name:t.name||e&&t.__name}function Jn(t){return(0,o.Tn)(t)&&"__vccOpts"in t}const tr=(t,e)=>{const n=(0,r.EW)(t,e,Vn);return n};function er(t,e,n){const r=arguments.length;return 2===r?(0,o.Gv)(e)&&!(0,o.cy)(e)?gn(e)?wn(t,null,[e]):wn(t,e):wn(t,null,e):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&gn(n)&&(n=[n]),wn(t,e,n))}const nr="3.4.27"},5130:function(t,e,n){"use strict";n.d(e,{Ef:function(){return bt},aG:function(){return L},eB:function(){return h}});n(4114),n(3375),n(9225),n(3972),n(9209),n(5714),n(7561),n(6197);var r=n(6768),o=n(4232),i=n(144); +/** +* @vue/runtime-dom v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +const s="http://www.w3.org/2000/svg",c="http://www.w3.org/1998/Math/MathML",u="undefined"!==typeof document?document:null,a=u&&u.createElement("template"),l={insert:(t,e,n)=>{e.insertBefore(t,n||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,n,r)=>{const o="svg"===e?u.createElementNS(s,t):"mathml"===e?u.createElementNS(c,t):u.createElement(t,n?{is:n}:void 0);return"select"===t&&r&&null!=r.multiple&&o.setAttribute("multiple",r.multiple),o},createText:t=>u.createTextNode(t),createComment:t=>u.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>u.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,n,r,o,i){const s=n?n.previousSibling:e.lastChild;if(o&&(o===i||o.nextSibling)){while(1)if(e.insertBefore(o.cloneNode(!0),n),o===i||!(o=o.nextSibling))break}else{a.innerHTML="svg"===r?`${t}`:"mathml"===r?`${t}`:t;const o=a.content;if("svg"===r||"mathml"===r){const t=o.firstChild;while(t.firstChild)o.appendChild(t.firstChild);o.removeChild(t)}e.insertBefore(o,n)}return[s?s.nextSibling:e.firstChild,n?n.previousSibling:e.lastChild]}},f="transition",p="animation",d=Symbol("_vtc"),h=(t,{slots:e})=>(0,r.h)(r.pR,b(t),e);h.displayName="Transition";const v={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},g=h.props=(0,o.X$)({},r.QP,v),m=(t,e=[])=>{(0,o.cy)(t)?t.forEach((t=>t(...e))):t&&t(...e)},y=t=>!!t&&((0,o.cy)(t)?t.some((t=>t.length>1)):t.length>1);function b(t){const e={};for(const o in t)o in v||(e[o]=t[o]);if(!1===t.css)return e;const{name:n="v",type:r,duration:i,enterFromClass:s=`${n}-enter-from`,enterActiveClass:c=`${n}-enter-active`,enterToClass:u=`${n}-enter-to`,appearFromClass:a=s,appearActiveClass:l=c,appearToClass:f=u,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=t,g=_(i),b=g&&g[0],w=g&&g[1],{onBeforeEnter:C,onEnter:T,onEnterCancelled:k,onLeave:M,onLeaveCancelled:j,onBeforeAppear:P=C,onAppear:A=T,onAppearCancelled:L=k}=e,R=(t,e,n)=>{E(t,e?f:u),E(t,e?l:c),n&&n()},I=(t,e)=>{t._isLeaving=!1,E(t,p),E(t,h),E(t,d),e&&e()},F=t=>(e,n)=>{const o=t?A:T,i=()=>R(e,t,n);m(o,[e,i]),S((()=>{E(e,t?a:s),x(e,t?f:u),y(o)||O(e,r,b,i)}))};return(0,o.X$)(e,{onBeforeEnter(t){m(C,[t]),x(t,s),x(t,c)},onBeforeAppear(t){m(P,[t]),x(t,a),x(t,l)},onEnter:F(!1),onAppear:F(!0),onLeave(t,e){t._isLeaving=!0;const n=()=>I(t,e);x(t,p),x(t,d),$(),S((()=>{t._isLeaving&&(E(t,p),x(t,h),y(M)||O(t,r,w,n))})),m(M,[t,n])},onEnterCancelled(t){R(t,!1),m(k,[t])},onAppearCancelled(t){R(t,!0),m(L,[t])},onLeaveCancelled(t){I(t),m(j,[t])}})}function _(t){if(null==t)return null;if((0,o.Gv)(t))return[w(t.enter),w(t.leave)];{const e=w(t);return[e,e]}}function w(t){const e=(0,o.Ro)(t);return e}function x(t,e){e.split(/\s+/).forEach((e=>e&&t.classList.add(e))),(t[d]||(t[d]=new Set)).add(e)}function E(t,e){e.split(/\s+/).forEach((e=>e&&t.classList.remove(e)));const n=t[d];n&&(n.delete(e),n.size||(t[d]=void 0))}function S(t){requestAnimationFrame((()=>{requestAnimationFrame(t)}))}let C=0;function O(t,e,n,r){const o=t._endId=++C,i=()=>{o===t._endId&&r()};if(n)return setTimeout(i,n);const{type:s,timeout:c,propCount:u}=T(t,e);if(!s)return r();const a=s+"end";let l=0;const f=()=>{t.removeEventListener(a,p),i()},p=e=>{e.target===t&&++l>=u&&f()};setTimeout((()=>{l(n[t]||"").split(", "),o=r(`${f}Delay`),i=r(`${f}Duration`),s=k(o,i),c=r(`${p}Delay`),u=r(`${p}Duration`),a=k(c,u);let l=null,d=0,h=0;e===f?s>0&&(l=f,d=s,h=i.length):e===p?a>0&&(l=p,d=a,h=u.length):(d=Math.max(s,a),l=d>0?s>a?f:p:null,h=l?l===f?i.length:u.length:0);const v=l===f&&/\b(transform|all)(,|$)/.test(r(`${f}Property`).toString());return{type:l,timeout:d,propCount:h,hasTransform:v}}function k(t,e){while(t.lengthM(e)+M(t[n]))))}function M(t){return"auto"===t?0:1e3*Number(t.slice(0,-1).replace(",","."))}function $(){return document.body.offsetHeight}function j(t,e,n){const r=t[d];r&&(e=(e?[e,...r]:[...r]).join(" ")),null==e?t.removeAttribute("class"):n?t.setAttribute("class",e):t.className=e}const P=Symbol("_vod"),A=Symbol("_vsh"),L={beforeMount(t,{value:e},{transition:n}){t[P]="none"===t.style.display?"":t.style.display,n&&e?n.beforeEnter(t):R(t,e)},mounted(t,{value:e},{transition:n}){n&&e&&n.enter(t)},updated(t,{value:e,oldValue:n},{transition:r}){!e!==!n&&(r?e?(r.beforeEnter(t),R(t,!0),r.enter(t)):r.leave(t,(()=>{R(t,!1)})):R(t,e))},beforeUnmount(t,{value:e}){R(t,e)}};function R(t,e){t.style.display=e?t[P]:"none",t[A]=!e}const I=Symbol("");const F=/(^|;)\s*display\s*:/;function N(t,e,n){const r=t.style,i=(0,o.Kg)(n);let s=!1;if(n&&!i){if(e)if((0,o.Kg)(e))for(const t of e.split(";")){const e=t.slice(0,t.indexOf(":")).trim();null==n[e]&&D(r,e,"")}else for(const t in e)null==n[t]&&D(r,t,"");for(const t in n)"display"===t&&(s=!0),D(r,t,n[t])}else if(i){if(e!==n){const t=r[I];t&&(n+=";"+t),r.cssText=n,s=F.test(n)}}else e&&t.removeAttribute("style");P in t&&(t[P]=s?r.display:"",t[A]&&(r.display="none"))}const G=/\s*!important$/;function D(t,e,n){if((0,o.cy)(n))n.forEach((n=>D(t,e,n)));else if(null==n&&(n=""),e.startsWith("--"))t.setProperty(e,n);else{const r=W(t,e);G.test(n)?t.setProperty((0,o.Tg)(r),n.replace(G,""),"important"):t[r]=n}}const U=["Webkit","Moz","ms"],B={};function W(t,e){const n=B[e];if(n)return n;let r=(0,o.PT)(e);if("filter"!==r&&r in t)return B[e]=r;r=(0,o.ZH)(r);for(let o=0;oJ||(tt.then((()=>J=0)),J=Date.now());function nt(t,e){const n=t=>{if(t._vts){if(t._vts<=n.attached)return}else t._vts=Date.now();(0,r.qL)(rt(t,n.value),e,5,[t])};return n.value=t,n.attached=et(),n}function rt(t,e){if((0,o.cy)(e)){const n=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{n.call(t),t._stopped=!0},e.map((t=>e=>!e._stopped&&t&&t(e)))}return e}const ot=t=>111===t.charCodeAt(0)&&110===t.charCodeAt(1)&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,it=(t,e,n,r,i,s,c,u,a)=>{const l="svg"===i;"class"===e?j(t,r,l):"style"===e?N(t,n,r):(0,o.Mp)(e)?(0,o.CP)(e)||q(t,e,n,r,c):("."===e[0]?(e=e.slice(1),1):"^"===e[0]?(e=e.slice(1),0):st(t,e,r,l))?X(t,e,r,s,c,u,a):("true-value"===e?t._trueValue=r:"false-value"===e&&(t._falseValue=r),K(t,e,r,l))};function st(t,e,n,r){if(r)return"innerHTML"===e||"textContent"===e||!!(e in t&&ot(e)&&(0,o.Tn)(n));if("spellcheck"===e||"draggable"===e||"translate"===e)return!1;if("form"===e)return!1;if("list"===e&&"INPUT"===t.tagName)return!1;if("type"===e&&"TEXTAREA"===t.tagName)return!1;if("width"===e||"height"===e){const e=t.tagName;if("IMG"===e||"VIDEO"===e||"CANVAS"===e||"SOURCE"===e)return!1}return(!ot(e)||!(0,o.Kg)(n))&&e in t} +/*! #__NO_SIDE_EFFECTS__ */ +/*! #__NO_SIDE_EFFECTS__ */ +"undefined"!==typeof HTMLElement&&HTMLElement;const ct=new WeakMap,ut=new WeakMap,at=Symbol("_moveCb"),lt=Symbol("_enterCb"),ft={name:"TransitionGroup",props:(0,o.X$)({},g,{tag:String,moveClass:String}),setup(t,{slots:e}){const n=(0,r.nI)(),o=(0,r.Gy)();let s,c;return(0,r.$u)((()=>{if(!s.length)return;const e=t.moveClass||`${t.name||"v"}-move`;if(!vt(s[0].el,n.vnode.el,e))return;s.forEach(pt),s.forEach(dt);const r=s.filter(ht);$(),r.forEach((t=>{const n=t.el,r=n.style;x(n,e),r.transform=r.webkitTransform=r.transitionDuration="";const o=n[at]=t=>{t&&t.target!==n||t&&!/transform$/.test(t.propertyName)||(n.removeEventListener("transitionend",o),n[at]=null,E(n,e))};n.addEventListener("transitionend",o)}))})),()=>{const u=(0,i.ux)(t),a=b(u);let l=u.tag||r.FK;if(s=[],c)for(let t=0;t{t.split(/\s+/).forEach((t=>t&&r.classList.remove(t)))})),n.split(/\s+/).forEach((t=>t&&r.classList.add(t))),r.style.display="none";const i=1===e.nodeType?e:e.parentNode;i.appendChild(r);const{hasTransform:s}=T(r);return i.removeChild(r),s}Symbol("_assign");const gt=(0,o.X$)({patchProp:it},l);let mt;function yt(){return mt||(mt=(0,r.K9)(gt))}const bt=(...t)=>{const e=yt().createApp(...t);const{mount:n}=e;return e.mount=t=>{const r=wt(t);if(!r)return;const i=e._component;(0,o.Tn)(i)||i.render||i.template||(i.template=r.innerHTML),r.innerHTML="";const s=n(r,!1,_t(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),s},e};function _t(t){return t instanceof SVGElement?"svg":"function"===typeof MathMLElement&&t instanceof MathMLElement?"mathml":void 0}function wt(t){if((0,o.Kg)(t)){const e=document.querySelector(t);return e}return t}},4232:function(t,e,n){"use strict";n.d(e,{$3:function(){return d},$H:function(){return F},BH:function(){return K},BX:function(){return rt},Bm:function(){return w},C4:function(){return Y},CE:function(){return v},CP:function(){return a},DY:function(){return N},Gv:function(){return x},J$:function(){return tt},Kg:function(){return _},MZ:function(){return o},Mp:function(){return u},NO:function(){return c},Oj:function(){return i},PT:function(){return P},Qd:function(){return T},Ro:function(){return U},SU:function(){return M},TF:function(){return f},Tg:function(){return L},Tn:function(){return b},Tr:function(){return X},We:function(){return W},X$:function(){return l},Y2:function(){return et},ZH:function(){return R},Zf:function(){return O},bB:function(){return D},cy:function(){return h},gd:function(){return y},pD:function(){return r},rU:function(){return I},tE:function(){return s},tl:function(){return Q},u3:function(){return ot},vM:function(){return g},v_:function(){return it},yI:function(){return k},yL:function(){return E},yQ:function(){return G}});n(4114),n(3375),n(9225),n(3972),n(9209),n(5714),n(7561),n(6197); +/** +* @vue/shared v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +/*! #__NO_SIDE_EFFECTS__ */ +function r(t,e){const n=new Set(t.split(","));return e?t=>n.has(t.toLowerCase()):t=>n.has(t)}const o={},i=[],s=()=>{},c=()=>!1,u=t=>111===t.charCodeAt(0)&&110===t.charCodeAt(1)&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),a=t=>t.startsWith("onUpdate:"),l=Object.assign,f=(t,e)=>{const n=t.indexOf(e);n>-1&&t.splice(n,1)},p=Object.prototype.hasOwnProperty,d=(t,e)=>p.call(t,e),h=Array.isArray,v=t=>"[object Map]"===C(t),g=t=>"[object Set]"===C(t),m=t=>"[object Date]"===C(t),y=t=>"[object RegExp]"===C(t),b=t=>"function"===typeof t,_=t=>"string"===typeof t,w=t=>"symbol"===typeof t,x=t=>null!==t&&"object"===typeof t,E=t=>(x(t)||b(t))&&b(t.then)&&b(t.catch),S=Object.prototype.toString,C=t=>S.call(t),O=t=>C(t).slice(8,-1),T=t=>"[object Object]"===C(t),k=t=>_(t)&&"NaN"!==t&&"-"!==t[0]&&""+parseInt(t,10)===t,M=r(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),$=t=>{const e=Object.create(null);return n=>{const r=e[n];return r||(e[n]=t(n))}},j=/-(\w)/g,P=$((t=>t.replace(j,((t,e)=>e?e.toUpperCase():"")))),A=/\B([A-Z])/g,L=$((t=>t.replace(A,"-$1").toLowerCase())),R=$((t=>t.charAt(0).toUpperCase()+t.slice(1))),I=$((t=>{const e=t?`on${R(t)}`:"";return e})),F=(t,e)=>!Object.is(t,e),N=(t,e)=>{for(let n=0;n{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,writable:r,value:n})},D=t=>{const e=parseFloat(t);return isNaN(e)?t:e},U=t=>{const e=_(t)?Number(t):NaN;return isNaN(e)?t:e};let B;const W=()=>B||(B="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self?self:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:{});const V="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error",K=r(V);function X(t){if(h(t)){const e={};for(let n=0;n{if(t){const n=t.split(H);n.length>1&&(e[n[0].trim()]=n[1].trim())}})),e}function Q(t){let e="";if(!t||_(t))return e;for(const n in t){const r=t[n];if(_(r)||"number"===typeof r){const t=n.startsWith("--")?n:L(n);e+=`${t}:${r};`}}return e}function Y(t){let e="";if(_(t))e=t;else if(h(t))for(let n=0;nrt(t,e)))}const it=t=>_(t)?t:null==t?"":h(t)||x(t)&&(t.toString===S||!b(t.toString))?JSON.stringify(t,st,2):String(t),st=(t,e)=>e&&e.__v_isRef?st(t,e.value):v(e)?{[`Map(${e.size})`]:[...e.entries()].reduce(((t,[e,n],r)=>(t[ct(e,r)+" =>"]=n,t)),{})}:g(e)?{[`Set(${e.size})`]:[...e.values()].map((t=>ct(t)))}:w(e)?ct(e):!x(e)||h(e)||T(e)?e:String(e),ct=(t,e="")=>{var n;return w(t)?`Symbol(${null!=(n=t.description)?n:e})`:t}},6095:function(){(function(t,e){var n=e.documentElement,r=t.devicePixelRatio||1;function o(){e.body?e.body.style.fontSize=12*r+"px":e.addEventListener("DOMContentLoaded",o)}function i(){var t=n.clientWidth/10;n.style.fontSize=t+"px"}if(o(),i(),t.addEventListener("resize",i),t.addEventListener("pageshow",(function(t){t.persisted&&i()})),r>=2){var s=e.createElement("body"),c=e.createElement("div");c.style.border=".5px solid transparent",s.appendChild(c),n.appendChild(s),1===c.offsetHeight&&n.classList.add("hairlines"),n.removeChild(s)}})(window,document)},1241:function(t,e){"use strict";e.A=(t,e)=>{const n=t.__vccOpts||t;for(const[r,o]of e)n[r]=o;return n}},782:function(t,e,n){"use strict";n.d(e,{y$:function(){return et},Pj:function(){return m}});n(4114);var r=n(6768),o=n(144);function i(){return s().__VUE_DEVTOOLS_GLOBAL_HOOK__}function s(){return"undefined"!==typeof navigator&&"undefined"!==typeof window?window:"undefined"!==typeof globalThis?globalThis:{}}const c="function"===typeof Proxy,u="devtools-plugin:setup",a="plugin:settings:set";let l,f;function p(){var t;return void 0!==l||("undefined"!==typeof window&&window.performance?(l=!0,f=window.performance):"undefined"!==typeof globalThis&&(null===(t=globalThis.perf_hooks)||void 0===t?void 0:t.performance)?(l=!0,f=globalThis.perf_hooks.performance):l=!1),l}function d(){return p()?f.now():Date.now()}class h{constructor(t,e){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=t,this.hook=e;const n={};if(t.settings)for(const s in t.settings){const e=t.settings[s];n[s]=e.defaultValue}const r=`__vue-devtools-plugin-settings__${t.id}`;let o=Object.assign({},n);try{const t=localStorage.getItem(r),e=JSON.parse(t);Object.assign(o,e)}catch(i){}this.fallbacks={getSettings(){return o},setSettings(t){try{localStorage.setItem(r,JSON.stringify(t))}catch(i){}o=t},now(){return d()}},e&&e.on(a,((t,e)=>{t===this.plugin.id&&this.fallbacks.setSettings(e)})),this.proxiedOn=new Proxy({},{get:(t,e)=>this.target?this.target.on[e]:(...t)=>{this.onQueue.push({method:e,args:t})}}),this.proxiedTarget=new Proxy({},{get:(t,e)=>this.target?this.target[e]:"on"===e?this.proxiedOn:Object.keys(this.fallbacks).includes(e)?(...t)=>(this.targetQueue.push({method:e,args:t,resolve:()=>{}}),this.fallbacks[e](...t)):(...t)=>new Promise((n=>{this.targetQueue.push({method:e,args:t,resolve:n})}))})}async setRealTarget(t){this.target=t;for(const e of this.onQueue)this.target.on[e.method](...e.args);for(const e of this.targetQueue)e.resolve(await this.target[e.method](...e.args))}}function v(t,e){const n=t,r=s(),o=i(),a=c&&n.enableEarlyProxy;if(!o||!r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__&&a){const t=a?new h(n,o):null,i=r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[];i.push({pluginDescriptor:n,setupFn:e,proxy:t}),t&&e(t.proxiedTarget)}else o.emit(u,t,e)} +/*! + * vuex v4.1.0 + * (c) 2022 Evan You + * @license MIT + */ +var g="store";function m(t){return void 0===t&&(t=null),(0,r.WQ)(null!==t?t:g)}function y(t,e){Object.keys(t).forEach((function(n){return e(t[n],n)}))}function b(t){return null!==t&&"object"===typeof t}function _(t){return t&&"function"===typeof t.then}function w(t,e){return function(){return t(e)}}function x(t,e,n){return e.indexOf(t)<0&&(n&&n.prepend?e.unshift(t):e.push(t)),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function E(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;C(t,n,[],t._modules.root,!0),S(t,n,e)}function S(t,e,n){var i=t._state,s=t._scope;t.getters={},t._makeLocalGettersCache=Object.create(null);var c=t._wrappedGetters,u={},a={},l=(0,o.uY)(!0);l.run((function(){y(c,(function(e,n){u[n]=w(e,t),a[n]=(0,r.EW)((function(){return u[n]()})),Object.defineProperty(t.getters,n,{get:function(){return a[n].value},enumerable:!0})}))})),t._state=(0,o.Kh)({data:e}),t._scope=l,t.strict&&j(t),i&&n&&t._withCommit((function(){i.data=null})),s&&s.stop()}function C(t,e,n,r,o){var i=!n.length,s=t._modules.getNamespace(n);if(r.namespaced&&(t._modulesNamespaceMap[s],t._modulesNamespaceMap[s]=r),!i&&!o){var c=P(e,n.slice(0,-1)),u=n[n.length-1];t._withCommit((function(){c[u]=r.state}))}var a=r.context=O(t,s,n);r.forEachMutation((function(e,n){var r=s+n;k(t,r,e,a)})),r.forEachAction((function(e,n){var r=e.root?n:s+n,o=e.handler||e;M(t,r,o,a)})),r.forEachGetter((function(e,n){var r=s+n;$(t,r,e,a)})),r.forEachChild((function(r,i){C(t,e,n.concat(i),r,o)}))}function O(t,e,n){var r=""===e,o={dispatch:r?t.dispatch:function(n,r,o){var i=A(n,r,o),s=i.payload,c=i.options,u=i.type;return c&&c.root||(u=e+u),t.dispatch(u,s)},commit:r?t.commit:function(n,r,o){var i=A(n,r,o),s=i.payload,c=i.options,u=i.type;c&&c.root||(u=e+u),t.commit(u,s,c)}};return Object.defineProperties(o,{getters:{get:r?function(){return t.getters}:function(){return T(t,e)}},state:{get:function(){return P(t.state,n)}}}),o}function T(t,e){if(!t._makeLocalGettersCache[e]){var n={},r=e.length;Object.keys(t.getters).forEach((function(o){if(o.slice(0,r)===e){var i=o.slice(r);Object.defineProperty(n,i,{get:function(){return t.getters[o]},enumerable:!0})}})),t._makeLocalGettersCache[e]=n}return t._makeLocalGettersCache[e]}function k(t,e,n,r){var o=t._mutations[e]||(t._mutations[e]=[]);o.push((function(e){n.call(t,r.state,e)}))}function M(t,e,n,r){var o=t._actions[e]||(t._actions[e]=[]);o.push((function(e){var o=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e);return _(o)||(o=Promise.resolve(o)),t._devtoolHook?o.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):o}))}function $(t,e,n,r){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)})}function j(t){(0,r.wB)((function(){return t._state.data}),(function(){0}),{deep:!0,flush:"sync"})}function P(t,e){return e.reduce((function(t,e){return t[e]}),t)}function A(t,e,n){return b(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}var L="vuex bindings",R="vuex:mutations",I="vuex:actions",F="vuex",N=0;function G(t,e){v({id:"org.vuejs.vuex",app:t,label:"Vuex",homepage:"https://next.vuex.vuejs.org/",logo:"https://vuejs.org/images/icons/favicon-96x96.png",packageName:"vuex",componentStateTypes:[L]},(function(n){n.addTimelineLayer({id:R,label:"Vuex Mutations",color:D}),n.addTimelineLayer({id:I,label:"Vuex Actions",color:D}),n.addInspector({id:F,label:"Vuex",icon:"storage",treeFilterPlaceholder:"Filter stores..."}),n.on.getInspectorTree((function(n){if(n.app===t&&n.inspectorId===F)if(n.filter){var r=[];X(r,e._modules.root,n.filter,""),n.rootNodes=r}else n.rootNodes=[K(e._modules.root,"")]})),n.on.getInspectorState((function(n){if(n.app===t&&n.inspectorId===F){var r=n.nodeId;T(e,r),n.state=Z(z(e._modules,r),"root"===r?e.getters:e._makeLocalGettersCache,r)}})),n.on.editInspectorState((function(n){if(n.app===t&&n.inspectorId===F){var r=n.nodeId,o=n.path;"root"!==r&&(o=r.split("/").filter(Boolean).concat(o)),e._withCommit((function(){n.set(e._state.data,o,n.state.value)}))}})),e.subscribe((function(t,e){var r={};t.payload&&(r.payload=t.payload),r.state=e,n.notifyComponentUpdate(),n.sendInspectorTree(F),n.sendInspectorState(F),n.addTimelineEvent({layerId:R,event:{time:Date.now(),title:t.type,data:r}})})),e.subscribeAction({before:function(t,e){var r={};t.payload&&(r.payload=t.payload),t._id=N++,t._time=Date.now(),r.state=e,n.addTimelineEvent({layerId:I,event:{time:t._time,title:t.type,groupId:t._id,subtitle:"start",data:r}})},after:function(t,e){var r={},o=Date.now()-t._time;r.duration={_custom:{type:"duration",display:o+"ms",tooltip:"Action duration",value:o}},t.payload&&(r.payload=t.payload),r.state=e,n.addTimelineEvent({layerId:I,event:{time:Date.now(),title:t.type,groupId:t._id,subtitle:"end",data:r}})}})}))}var D=8702998,U=6710886,B=16777215,W={label:"namespaced",textColor:B,backgroundColor:U};function V(t){return t&&"root"!==t?t.split("/").slice(-2,-1)[0]:"Root"}function K(t,e){return{id:e||"root",label:V(e),tags:t.namespaced?[W]:[],children:Object.keys(t._children).map((function(n){return K(t._children[n],e+n+"/")}))}}function X(t,e,n,r){r.includes(n)&&t.push({id:r||"root",label:r.endsWith("/")?r.slice(0,r.length-1):r||"Root",tags:e.namespaced?[W]:[]}),Object.keys(e._children).forEach((function(o){X(t,e._children[o],n,r+o+"/")}))}function Z(t,e,n){e="root"===n?e:e[n];var r=Object.keys(e),o={state:Object.keys(t.state).map((function(e){return{key:e,editable:!0,value:t.state[e]}}))};if(r.length){var i=H(e);o.getters=Object.keys(i).map((function(t){return{key:t.endsWith("/")?V(t):t,editable:!1,value:q((function(){return i[t]}))}}))}return o}function H(t){var e={};return Object.keys(t).forEach((function(n){var r=n.split("/");if(r.length>1){var o=e,i=r.pop();r.forEach((function(t){o[t]||(o[t]={_custom:{value:{},display:t,tooltip:"Module",abstract:!0}}),o=o[t]._custom.value})),o[i]=q((function(){return t[n]}))}else e[n]=q((function(){return t[n]}))})),e}function z(t,e){var n=e.split("/").filter((function(t){return t}));return n.reduce((function(t,r,o){var i=t[r];if(!i)throw new Error('Missing module "'+r+'" for path "'+e+'".');return o===n.length-1?i:i._children}),"root"===e?t:t.root._children)}function q(t){try{return t()}catch(e){return e}}var Q=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"===typeof n?n():n)||{}},Y={namespaced:{configurable:!0}};Y.namespaced.get=function(){return!!this._rawModule.namespaced},Q.prototype.addChild=function(t,e){this._children[t]=e},Q.prototype.removeChild=function(t){delete this._children[t]},Q.prototype.getChild=function(t){return this._children[t]},Q.prototype.hasChild=function(t){return t in this._children},Q.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},Q.prototype.forEachChild=function(t){y(this._children,t)},Q.prototype.forEachGetter=function(t){this._rawModule.getters&&y(this._rawModule.getters,t)},Q.prototype.forEachAction=function(t){this._rawModule.actions&&y(this._rawModule.actions,t)},Q.prototype.forEachMutation=function(t){this._rawModule.mutations&&y(this._rawModule.mutations,t)},Object.defineProperties(Q.prototype,Y);var J=function(t){this.register([],t,!1)};function tt(t,e,n){if(e.update(n),n.modules)for(var r in n.modules){if(!e.getChild(r))return void 0;tt(t.concat(r),e.getChild(r),n.modules[r])}}J.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},J.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,n){return e=e.getChild(n),t+(e.namespaced?n+"/":"")}),"")},J.prototype.update=function(t){tt([],this.root,t)},J.prototype.register=function(t,e,n){var r=this;void 0===n&&(n=!0);var o=new Q(e,n);if(0===t.length)this.root=o;else{var i=this.get(t.slice(0,-1));i.addChild(t[t.length-1],o)}e.modules&&y(e.modules,(function(e,o){r.register(t.concat(o),e,n)}))},J.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1],r=e.getChild(n);r&&r.runtime&&e.removeChild(n)},J.prototype.isRegistered=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];return!!e&&e.hasChild(n)};function et(t){return new nt(t)}var nt=function(t){var e=this;void 0===t&&(t={});var n=t.plugins;void 0===n&&(n=[]);var r=t.strict;void 0===r&&(r=!1);var o=t.devtools;this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new J(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null),this._scope=null,this._devtools=o;var i=this,s=this,c=s.dispatch,u=s.commit;this.dispatch=function(t,e){return c.call(i,t,e)},this.commit=function(t,e,n){return u.call(i,t,e,n)},this.strict=r;var a=this._modules.root.state;C(this,a,[],this._modules.root),S(this,a),n.forEach((function(t){return t(e)}))},rt={state:{configurable:!0}};nt.prototype.install=function(t,e){t.provide(e||g,this),t.config.globalProperties.$store=this;var n=void 0!==this._devtools&&this._devtools;n&&G(t,this)},rt.state.get=function(){return this._state.data},rt.state.set=function(t){0},nt.prototype.commit=function(t,e,n){var r=this,o=A(t,e,n),i=o.type,s=o.payload,c=(o.options,{type:i,payload:s}),u=this._mutations[i];u&&(this._withCommit((function(){u.forEach((function(t){t(s)}))})),this._subscribers.slice().forEach((function(t){return t(c,r.state)})))},nt.prototype.dispatch=function(t,e){var n=this,r=A(t,e),o=r.type,i=r.payload,s={type:o,payload:i},c=this._actions[o];if(c){try{this._actionSubscribers.slice().filter((function(t){return t.before})).forEach((function(t){return t.before(s,n.state)}))}catch(a){0}var u=c.length>1?Promise.all(c.map((function(t){return t(i)}))):c[0](i);return new Promise((function(t,e){u.then((function(e){try{n._actionSubscribers.filter((function(t){return t.after})).forEach((function(t){return t.after(s,n.state)}))}catch(a){0}t(e)}),(function(t){try{n._actionSubscribers.filter((function(t){return t.error})).forEach((function(e){return e.error(s,n.state,t)}))}catch(a){0}e(t)}))}))}},nt.prototype.subscribe=function(t,e){return x(t,this._subscribers,e)},nt.prototype.subscribeAction=function(t,e){var n="function"===typeof t?{before:t}:t;return x(n,this._actionSubscribers,e)},nt.prototype.watch=function(t,e,n){var o=this;return(0,r.wB)((function(){return t(o.state,o.getters)}),e,Object.assign({},n))},nt.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._state.data=t}))},nt.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"===typeof t&&(t=[t]),this._modules.register(t,e),C(this,this.state,t,this._modules.get(t),n.preserveState),S(this,this.state)},nt.prototype.unregisterModule=function(t){var e=this;"string"===typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){var n=P(e.state,t.slice(0,-1));delete n[t[t.length-1]]})),E(this)},nt.prototype.hasModule=function(t){return"string"===typeof t&&(t=[t]),this._modules.isRegistered(t)},nt.prototype.hotUpdate=function(t){this._modules.update(t),E(this,!0)},nt.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(nt.prototype,rt);st((function(t,e){var n={};return ot(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=ct(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"===typeof o?o.call(this,e,n):e[o]},n[r].vuex=!0})),n})),st((function(t,e){var n={};return ot(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.commit;if(t){var i=ct(this.$store,"mapMutations",t);if(!i)return;r=i.context.commit}return"function"===typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n})),st((function(t,e){var n={};return ot(e).forEach((function(e){var r=e.key,o=e.val;o=t+o,n[r]=function(){if(!t||ct(this.$store,"mapGetters",t))return this.$store.getters[o]},n[r].vuex=!0})),n})),st((function(t,e){var n={};return ot(e).forEach((function(e){var r=e.key,o=e.val;n[r]=function(){var e=[],n=arguments.length;while(n--)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var i=ct(this.$store,"mapActions",t);if(!i)return;r=i.context.dispatch}return"function"===typeof o?o.apply(this,[r].concat(e)):r.apply(this.$store,[o].concat(e))}})),n}));function ot(t){return it(t)?Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}})):[]}function it(t){return Array.isArray(t)||b(t)}function st(t){return function(e,n){return"string"!==typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function ct(t,e,n){var r=t._modulesNamespaceMap[n];return r}},9306:function(t,e,n){"use strict";var r=n(4901),o=n(6823),i=TypeError;t.exports=function(t){if(r(t))return t;throw new i(o(t)+" is not a function")}},7080:function(t,e,n){"use strict";var r=n(4402).has;t.exports=function(t){return r(t),t}},8551:function(t,e,n){"use strict";var r=n(34),o=String,i=TypeError;t.exports=function(t){if(r(t))return t;throw new i(o(t)+" is not an object")}},9617:function(t,e,n){"use strict";var r=n(5397),o=n(5610),i=n(6198),s=function(t){return function(e,n,s){var c=r(e),u=i(c);if(0===u)return!t&&-1;var a,l=o(s,u);if(t&&n!==n){while(u>l)if(a=c[l++],a!==a)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:s(!0),indexOf:s(!1)}},4527:function(t,e,n){"use strict";var r=n(3724),o=n(4376),i=TypeError,s=Object.getOwnPropertyDescriptor,c=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=c?function(t,e){if(o(t)&&!s(t,"length").writable)throw new i("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},4576:function(t,e,n){"use strict";var r=n(9504),o=r({}.toString),i=r("".slice);t.exports=function(t){return i(o(t),8,-1)}},7740:function(t,e,n){"use strict";var r=n(9297),o=n(5031),i=n(7347),s=n(4913);t.exports=function(t,e,n){for(var c=o(e),u=s.f,a=i.f,l=0;ln)throw e("Maximum allowed index exceeded");return t}},9392:function(t){"use strict";t.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},7388:function(t,e,n){"use strict";var r,o,i=n(4475),s=n(9392),c=i.process,u=i.Deno,a=c&&c.versions||u&&u.version,l=a&&a.v8;l&&(r=l.split("."),o=r[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&s&&(r=s.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=s.match(/Chrome\/(\d+)/),r&&(o=+r[1]))),t.exports=o},8727:function(t){"use strict";t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},6518:function(t,e,n){"use strict";var r=n(4475),o=n(7347).f,i=n(6699),s=n(6840),c=n(9433),u=n(7740),a=n(2796);t.exports=function(t,e){var n,l,f,p,d,h,v=t.target,g=t.global,m=t.stat;if(l=g?r:m?r[v]||c(v,{}):r[v]&&r[v].prototype,l)for(f in e){if(d=e[f],t.dontCallGetSet?(h=o(l,f),p=h&&h.value):p=l[f],n=a(g?f:v+(m?".":"#")+f,t.forced),!n&&void 0!==p){if(typeof d==typeof p)continue;u(d,p)}(t.sham||p&&p.sham)&&i(d,"sham",!0),s(l,f,d,t)}}},9039:function(t){"use strict";t.exports=function(t){try{return!!t()}catch(e){return!0}}},616:function(t,e,n){"use strict";var r=n(9039);t.exports=!r((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},9565:function(t,e,n){"use strict";var r=n(616),o=Function.prototype.call;t.exports=r?o.bind(o):function(){return o.apply(o,arguments)}},350:function(t,e,n){"use strict";var r=n(3724),o=n(9297),i=Function.prototype,s=r&&Object.getOwnPropertyDescriptor,c=o(i,"name"),u=c&&"something"===function(){}.name,a=c&&(!r||r&&s(i,"name").configurable);t.exports={EXISTS:c,PROPER:u,CONFIGURABLE:a}},6706:function(t,e,n){"use strict";var r=n(9504),o=n(9306);t.exports=function(t,e,n){try{return r(o(Object.getOwnPropertyDescriptor(t,e)[n]))}catch(i){}}},9504:function(t,e,n){"use strict";var r=n(616),o=Function.prototype,i=o.call,s=r&&o.bind.bind(i,i);t.exports=r?s:function(t){return function(){return i.apply(t,arguments)}}},7751:function(t,e,n){"use strict";var r=n(4475),o=n(4901),i=function(t){return o(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t]):r[t]&&r[t][e]}},1767:function(t){"use strict";t.exports=function(t){return{iterator:t,next:t.next,done:!1}}},5966:function(t,e,n){"use strict";var r=n(9306),o=n(4117);t.exports=function(t,e){var n=t[e];return o(n)?void 0:r(n)}},3789:function(t,e,n){"use strict";var r=n(9306),o=n(8551),i=n(9565),s=n(1291),c=n(1767),u="Invalid size",a=RangeError,l=TypeError,f=Math.max,p=function(t,e){this.set=t,this.size=f(e,0),this.has=r(t.has),this.keys=r(t.keys)};p.prototype={getIterator:function(){return c(o(i(this.keys,this.set)))},includes:function(t){return i(this.has,this.set,t)}},t.exports=function(t){o(t);var e=+t.size;if(e!==e)throw new l(u);var n=s(e);if(n<0)throw new a(u);return new p(t,n)}},4475:function(t,e,n){"use strict";var r=function(t){return t&&t.Math===Math&&t};t.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||r("object"==typeof this&&this)||function(){return this}()||Function("return this")()},9297:function(t,e,n){"use strict";var r=n(9504),o=n(8981),i=r({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return i(o(t),e)}},421:function(t){"use strict";t.exports={}},5917:function(t,e,n){"use strict";var r=n(3724),o=n(9039),i=n(4055);t.exports=!r&&!o((function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},7055:function(t,e,n){"use strict";var r=n(9504),o=n(9039),i=n(4576),s=Object,c=r("".split);t.exports=o((function(){return!s("z").propertyIsEnumerable(0)}))?function(t){return"String"===i(t)?c(t,""):s(t)}:s},3706:function(t,e,n){"use strict";var r=n(9504),o=n(4901),i=n(7629),s=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(t){return s(t)}),t.exports=i.inspectSource},1181:function(t,e,n){"use strict";var r,o,i,s=n(8622),c=n(4475),u=n(34),a=n(6699),l=n(9297),f=n(7629),p=n(6119),d=n(421),h="Object already initialized",v=c.TypeError,g=c.WeakMap,m=function(t){return i(t)?o(t):r(t,{})},y=function(t){return function(e){var n;if(!u(e)||(n=o(e)).type!==t)throw new v("Incompatible receiver, "+t+" required");return n}};if(s||f.state){var b=f.state||(f.state=new g);b.get=b.get,b.has=b.has,b.set=b.set,r=function(t,e){if(b.has(t))throw new v(h);return e.facade=t,b.set(t,e),e},o=function(t){return b.get(t)||{}},i=function(t){return b.has(t)}}else{var _=p("state");d[_]=!0,r=function(t,e){if(l(t,_))throw new v(h);return e.facade=t,a(t,_,e),e},o=function(t){return l(t,_)?t[_]:{}},i=function(t){return l(t,_)}}t.exports={set:r,get:o,has:i,enforce:m,getterFor:y}},4376:function(t,e,n){"use strict";var r=n(4576);t.exports=Array.isArray||function(t){return"Array"===r(t)}},4901:function(t){"use strict";var e="object"==typeof document&&document.all;t.exports="undefined"==typeof e&&void 0!==e?function(t){return"function"==typeof t||t===e}:function(t){return"function"==typeof t}},2796:function(t,e,n){"use strict";var r=n(9039),o=n(4901),i=/#|\.prototype\./,s=function(t,e){var n=u[c(t)];return n===l||n!==a&&(o(e)?r(e):!!e)},c=s.normalize=function(t){return String(t).replace(i,".").toLowerCase()},u=s.data={},a=s.NATIVE="N",l=s.POLYFILL="P";t.exports=s},4117:function(t){"use strict";t.exports=function(t){return null===t||void 0===t}},34:function(t,e,n){"use strict";var r=n(4901);t.exports=function(t){return"object"==typeof t?null!==t:r(t)}},6395:function(t){"use strict";t.exports=!1},757:function(t,e,n){"use strict";var r=n(7751),o=n(4901),i=n(1625),s=n(7040),c=Object;t.exports=s?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return o(e)&&i(e.prototype,c(t))}},507:function(t,e,n){"use strict";var r=n(9565);t.exports=function(t,e,n){var o,i,s=n?t:t.iterator,c=t.next;while(!(o=r(c,s)).done)if(i=e(o.value),void 0!==i)return i}},9539:function(t,e,n){"use strict";var r=n(9565),o=n(8551),i=n(5966);t.exports=function(t,e,n){var s,c;o(t);try{if(s=i(t,"return"),!s){if("throw"===e)throw n;return n}s=r(s,t)}catch(u){c=!0,s=u}if("throw"===e)throw n;if(c)throw s;return o(s),n}},6198:function(t,e,n){"use strict";var r=n(8014);t.exports=function(t){return r(t.length)}},283:function(t,e,n){"use strict";var r=n(9504),o=n(9039),i=n(4901),s=n(9297),c=n(3724),u=n(350).CONFIGURABLE,a=n(3706),l=n(1181),f=l.enforce,p=l.get,d=String,h=Object.defineProperty,v=r("".slice),g=r("".replace),m=r([].join),y=c&&!o((function(){return 8!==h((function(){}),"length",{value:8}).length})),b=String(String).split("String"),_=t.exports=function(t,e,n){"Symbol("===v(d(e),0,7)&&(e="["+g(d(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!s(t,"name")||u&&t.name!==e)&&(c?h(t,"name",{value:e,configurable:!0}):t.name=e),y&&n&&s(n,"arity")&&t.length!==n.arity&&h(t,"length",{value:n.arity});try{n&&s(n,"constructor")&&n.constructor?c&&h(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(o){}var r=f(t);return s(r,"source")||(r.source=m(b,"string"==typeof e?e:"")),t};Function.prototype.toString=_((function(){return i(this)&&p(this).source||a(this)}),"toString")},741:function(t){"use strict";var e=Math.ceil,n=Math.floor;t.exports=Math.trunc||function(t){var r=+t;return(r>0?n:e)(r)}},4913:function(t,e,n){"use strict";var r=n(3724),o=n(5917),i=n(8686),s=n(8551),c=n(6969),u=TypeError,a=Object.defineProperty,l=Object.getOwnPropertyDescriptor,f="enumerable",p="configurable",d="writable";e.f=r?i?function(t,e,n){if(s(t),e=c(e),s(n),"function"===typeof t&&"prototype"===e&&"value"in n&&d in n&&!n[d]){var r=l(t,e);r&&r[d]&&(t[e]=n.value,n={configurable:p in n?n[p]:r[p],enumerable:f in n?n[f]:r[f],writable:!1})}return a(t,e,n)}:a:function(t,e,n){if(s(t),e=c(e),s(n),o)try{return a(t,e,n)}catch(r){}if("get"in n||"set"in n)throw new u("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},7347:function(t,e,n){"use strict";var r=n(3724),o=n(9565),i=n(8773),s=n(6980),c=n(5397),u=n(6969),a=n(9297),l=n(5917),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=c(t),e=u(e),l)try{return f(t,e)}catch(n){}if(a(t,e))return s(!o(i.f,t,e),t[e])}},8480:function(t,e,n){"use strict";var r=n(1828),o=n(8727),i=o.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},3717:function(t,e){"use strict";e.f=Object.getOwnPropertySymbols},1625:function(t,e,n){"use strict";var r=n(9504);t.exports=r({}.isPrototypeOf)},1828:function(t,e,n){"use strict";var r=n(9504),o=n(9297),i=n(5397),s=n(9617).indexOf,c=n(421),u=r([].push);t.exports=function(t,e){var n,r=i(t),a=0,l=[];for(n in r)!o(c,n)&&o(r,n)&&u(l,n);while(e.length>a)o(r,n=e[a++])&&(~s(l,n)||u(l,n));return l}},8773:function(t,e){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,o=r&&!n.call({1:2},1);e.f=o?function(t){var e=r(this,t);return!!e&&e.enumerable}:n},4270:function(t,e,n){"use strict";var r=n(9565),o=n(4901),i=n(34),s=TypeError;t.exports=function(t,e){var n,c;if("string"===e&&o(n=t.toString)&&!i(c=r(n,t)))return c;if(o(n=t.valueOf)&&!i(c=r(n,t)))return c;if("string"!==e&&o(n=t.toString)&&!i(c=r(n,t)))return c;throw new s("Can't convert object to primitive value")}},5031:function(t,e,n){"use strict";var r=n(7751),o=n(9504),i=n(8480),s=n(3717),c=n(8551),u=o([].concat);t.exports=r("Reflect","ownKeys")||function(t){var e=i.f(c(t)),n=s.f;return n?u(e,n(t)):e}},7750:function(t,e,n){"use strict";var r=n(4117),o=TypeError;t.exports=function(t){if(r(t))throw new o("Can't call method on "+t);return t}},9286:function(t,e,n){"use strict";var r=n(4402),o=n(8469),i=r.Set,s=r.add;t.exports=function(t){var e=new i;return o(t,(function(t){s(e,t)})),e}},3440:function(t,e,n){"use strict";var r=n(7080),o=n(4402),i=n(9286),s=n(5170),c=n(3789),u=n(8469),a=n(507),l=o.has,f=o.remove;t.exports=function(t){var e=r(this),n=c(t),o=i(e);return s(e)<=n.size?u(e,(function(t){n.includes(t)&&f(o,t)})):a(n.getIterator(),(function(t){l(e,t)&&f(o,t)})),o}},4402:function(t,e,n){"use strict";var r=n(9504),o=Set.prototype;t.exports={Set:Set,add:r(o.add),has:r(o.has),remove:r(o["delete"]),proto:o}},8750:function(t,e,n){"use strict";var r=n(7080),o=n(4402),i=n(5170),s=n(3789),c=n(8469),u=n(507),a=o.Set,l=o.add,f=o.has;t.exports=function(t){var e=r(this),n=s(t),o=new a;return i(e)>n.size?u(n.getIterator(),(function(t){f(e,t)&&l(o,t)})):c(e,(function(t){n.includes(t)&&l(o,t)})),o}},4449:function(t,e,n){"use strict";var r=n(7080),o=n(4402).has,i=n(5170),s=n(3789),c=n(8469),u=n(507),a=n(9539);t.exports=function(t){var e=r(this),n=s(t);if(i(e)<=n.size)return!1!==c(e,(function(t){if(n.includes(t))return!1}),!0);var l=n.getIterator();return!1!==u(l,(function(t){if(o(e,t))return a(l,"normal",!1)}))}},3838:function(t,e,n){"use strict";var r=n(7080),o=n(5170),i=n(8469),s=n(3789);t.exports=function(t){var e=r(this),n=s(t);return!(o(e)>n.size)&&!1!==i(e,(function(t){if(!n.includes(t))return!1}),!0)}},8527:function(t,e,n){"use strict";var r=n(7080),o=n(4402).has,i=n(5170),s=n(3789),c=n(507),u=n(9539);t.exports=function(t){var e=r(this),n=s(t);if(i(e)0?o(e,9007199254740991):0}},8981:function(t,e,n){"use strict";var r=n(7750),o=Object;t.exports=function(t){return o(r(t))}},2777:function(t,e,n){"use strict";var r=n(9565),o=n(34),i=n(757),s=n(5966),c=n(4270),u=n(8227),a=TypeError,l=u("toPrimitive");t.exports=function(t,e){if(!o(t)||i(t))return t;var n,u=s(t,l);if(u){if(void 0===e&&(e="default"),n=r(u,t,e),!o(n)||i(n))return n;throw new a("Can't convert object to primitive value")}return void 0===e&&(e="number"),c(t,e)}},6969:function(t,e,n){"use strict";var r=n(2777),o=n(757);t.exports=function(t){var e=r(t,"string");return o(e)?e:e+""}},6823:function(t){"use strict";var e=String;t.exports=function(t){try{return e(t)}catch(n){return"Object"}}},3392:function(t,e,n){"use strict";var r=n(9504),o=0,i=Math.random(),s=r(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+s(++o+i,36)}},7040:function(t,e,n){"use strict";var r=n(4495);t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},8686:function(t,e,n){"use strict";var r=n(3724),o=n(9039);t.exports=r&&o((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},8622:function(t,e,n){"use strict";var r=n(4475),o=n(4901),i=r.WeakMap;t.exports=o(i)&&/native code/.test(String(i))},8227:function(t,e,n){"use strict";var r=n(4475),o=n(5745),i=n(9297),s=n(3392),c=n(4495),u=n(7040),a=r.Symbol,l=o("wks"),f=u?a["for"]||a:a&&a.withoutSetter||s;t.exports=function(t){return i(l,t)||(l[t]=c&&i(a,t)?a[t]:f("Symbol."+t)),l[t]}},4114:function(t,e,n){"use strict";var r=n(6518),o=n(8981),i=n(6198),s=n(4527),c=n(6837),u=n(9039),a=u((function(){return 4294967297!==[].push.call({length:4294967296},1)})),l=function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}},f=a||!l();r({target:"Array",proto:!0,arity:1,forced:f},{push:function(t){var e=o(this),n=i(e),r=arguments.length;c(n+r);for(var u=0;u{},l=Array.isArray;const f=/#/g,p=/&/g,d=/\//g,h=/=/g,v=/\?/g,g=/\+/g,m=/%5B/g,y=/%5D/g,b=/%5E/g,_=/%60/g,w=/%7B/g,x=/%7C/g,E=/%7D/g,S=/%20/g;function C(t){return encodeURI(""+t).replace(x,"|").replace(m,"[").replace(y,"]")}function O(t){return C(t).replace(w,"{").replace(E,"}").replace(b,"^")}function T(t){return C(t).replace(g,"%2B").replace(S,"+").replace(f,"%23").replace(p,"%26").replace(_,"`").replace(w,"{").replace(E,"}").replace(b,"^")}function k(t){return T(t).replace(h,"%3D")}function M(t){return C(t).replace(f,"%23").replace(v,"%3F")}function $(t){return null==t?"":M(t).replace(d,"%2F")}function j(t){try{return decodeURIComponent(""+t)}catch(e){}return""+t}const P=/\/$/,A=t=>t.replace(P,"");function L(t,e,n="/"){let r,o={},i="",s="";const c=e.indexOf("#");let u=e.indexOf("?");return c=0&&(u=-1),u>-1&&(r=e.slice(0,u),i=e.slice(u+1,c>-1?c:e.length),o=t(i)),c>-1&&(r=r||e.slice(0,c),s=e.slice(c,e.length)),r=B(null!=r?r:e,n),{fullPath:r+(i&&"?")+i+s,path:r,query:o,hash:j(s)}}function R(t,e){const n=e.query?t(e.query):"";return e.path+(n&&"?")+n+(e.hash||"")}function I(t,e){return e&&t.toLowerCase().startsWith(e.toLowerCase())?t.slice(e.length)||"/":t}function F(t,e,n){const r=e.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&N(e.matched[r],n.matched[o])&&G(e.params,n.params)&&t(e.query)===t(n.query)&&e.hash===n.hash}function N(t,e){return(t.aliasOf||t)===(e.aliasOf||e)}function G(t,e){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(const n in t)if(!D(t[n],e[n]))return!1;return!0}function D(t,e){return l(t)?U(t,e):l(e)?U(e,t):t===e}function U(t,e){return l(e)?t.length===e.length&&t.every(((t,n)=>t===e[n])):1===t.length&&t[0]===e}function B(t,e){if(t.startsWith("/"))return t;if(!t)return e;const n=e.split("/"),r=t.split("/"),o=r[r.length-1];".."!==o&&"."!==o||r.push("");let i,s,c=n.length-1;for(i=0;i1&&c--}return n.slice(0,c).join("/")+"/"+r.slice(i).join("/")}var W,V;(function(t){t["pop"]="pop",t["push"]="push"})(W||(W={})),function(t){t["back"]="back",t["forward"]="forward",t["unknown"]=""}(V||(V={}));function K(t){if(!t)if(i){const e=document.querySelector("base");t=e&&e.getAttribute("href")||"/",t=t.replace(/^\w+:\/\/[^\/]+/,"")}else t="/";return"/"!==t[0]&&"#"!==t[0]&&(t="/"+t),A(t)}const X=/^[^#]+#/;function Z(t,e){return t.replace(X,"#")+e}function H(t,e){const n=document.documentElement.getBoundingClientRect(),r=t.getBoundingClientRect();return{behavior:e.behavior,left:r.left-n.left-(e.left||0),top:r.top-n.top-(e.top||0)}}const z=()=>({left:window.scrollX,top:window.scrollY});function q(t){let e;if("el"in t){const n=t.el,r="string"===typeof n&&n.startsWith("#");0;const o="string"===typeof n?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;e=H(o,t)}else e=t;"scrollBehavior"in document.documentElement.style?window.scrollTo(e):window.scrollTo(null!=e.left?e.left:window.scrollX,null!=e.top?e.top:window.scrollY)}function Q(t,e){const n=history.state?history.state.position-e:-1;return n+t}const Y=new Map;function J(t,e){Y.set(t,e)}function tt(t){const e=Y.get(t);return Y.delete(t),e}let et=()=>location.protocol+"//"+location.host;function nt(t,e){const{pathname:n,search:r,hash:o}=e,i=t.indexOf("#");if(i>-1){let e=o.includes(t.slice(i))?t.slice(i).length:1,n=o.slice(e);return"/"!==n[0]&&(n="/"+n),I(n,"")}const s=I(n,t);return s+r+o}function rt(t,e,n,r){let o=[],i=[],s=null;const u=({state:i})=>{const c=nt(t,location),u=n.value,a=e.value;let l=0;if(i){if(n.value=c,e.value=i,s&&s===u)return void(s=null);l=a?i.position-a.position:0}else r(c);o.forEach((t=>{t(n.value,u,{delta:l,type:W.pop,direction:l?l>0?V.forward:V.back:V.unknown})}))};function a(){s=n.value}function l(t){o.push(t);const e=()=>{const e=o.indexOf(t);e>-1&&o.splice(e,1)};return i.push(e),e}function f(){const{history:t}=window;t.state&&t.replaceState(c({},t.state,{scroll:z()}),"")}function p(){for(const t of i)t();i=[],window.removeEventListener("popstate",u),window.removeEventListener("beforeunload",f)}return window.addEventListener("popstate",u),window.addEventListener("beforeunload",f,{passive:!0}),{pauseListeners:a,listen:l,destroy:p}}function ot(t,e,n,r=!1,o=!1){return{back:t,current:e,forward:n,replaced:r,position:window.history.length,scroll:o?z():null}}function it(t){const{history:e,location:n}=window,r={value:nt(t,n)},o={value:e.state};function i(r,i,s){const c=t.indexOf("#"),u=c>-1?(n.host&&document.querySelector("base")?t:t.slice(c))+r:et()+t+r;try{e[s?"replaceState":"pushState"](i,"",u),o.value=i}catch(a){console.error(a),n[s?"replace":"assign"](u)}}function s(t,n){const s=c({},e.state,ot(o.value.back,t,o.value.forward,!0),n,{position:o.value.position});i(t,s,!0),r.value=t}function u(t,n){const s=c({},o.value,e.state,{forward:t,scroll:z()});i(s.current,s,!0);const u=c({},ot(r.value,t,null),{position:s.position+1},n);i(t,u,!1),r.value=t}return o.value||i(r.value,{back:null,current:r.value,forward:null,position:e.length-1,replaced:!0,scroll:null},!0),{location:r,state:o,push:u,replace:s}}function st(t){t=K(t);const e=it(t),n=rt(t,e.state,e.location,e.replace);function r(t,e=!0){e||n.pauseListeners(),history.go(t)}const o=c({location:"",base:t,go:r,createHref:Z.bind(null,t)},e,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>e.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>e.state.value}),o}function ct(t){return t=location.host?t||location.pathname+location.search:"",t.includes("#")||(t+="#"),st(t)}function ut(t){return"string"===typeof t||t&&"object"===typeof t}function at(t){return"string"===typeof t||"symbol"===typeof t}const lt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},ft=Symbol("");var pt;(function(t){t[t["aborted"]=4]="aborted",t[t["cancelled"]=8]="cancelled",t[t["duplicated"]=16]="duplicated"})(pt||(pt={}));function dt(t,e){return c(new Error,{type:t,[ft]:!0},e)}function ht(t,e){return t instanceof Error&&ft in t&&(null==e||!!(t.type&e))}const vt="[^/]+?",gt={sensitive:!1,strict:!1,start:!0,end:!0},mt=/[.+*?^${}()[\]/\\]/g;function yt(t,e){const n=c({},gt,e),r=[];let o=n.start?"^":"";const i=[];for(const c of t){const t=c.length?[]:[90];n.strict&&!c.length&&(o+="/");for(let e=0;ee.length?1===e.length&&80===e[0]?1:-1:0}function _t(t,e){let n=0;const r=t.score,o=e.score;while(n0&&e[e.length-1]<0}const xt={type:0,value:""},Et=/[a-zA-Z0-9_]/;function St(t){if(!t)return[[]];if("/"===t)return[[xt]];if(!t.startsWith("/"))throw new Error(`Invalid path "${t}"`);function e(t){throw new Error(`ERR (${n})/"${a}": ${t}`)}let n=0,r=n;const o=[];let i;function s(){i&&o.push(i),i=[]}let c,u=0,a="",l="";function f(){a&&(0===n?i.push({type:0,value:a}):1===n||2===n||3===n?(i.length>1&&("*"===c||"+"===c)&&e(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),i.push({type:1,value:a,regexp:l,repeatable:"*"===c||"+"===c,optional:"*"===c||"?"===c})):e("Invalid state to consume buffer"),a="")}function p(){a+=c}while(u{s(h)}:a}function s(t){if(at(t)){const e=r.get(t);e&&(r.delete(t),n.splice(n.indexOf(e),1),e.children.forEach(s),e.alias.forEach(s))}else{const e=n.indexOf(t);e>-1&&(n.splice(e,1),t.record.name&&r.delete(t.record.name),t.children.forEach(s),t.alias.forEach(s))}}function u(){return n}function l(t){let e=0;while(e=0&&(t.record.path!==n[e].record.path||!At(t,n[e])))e++;n.splice(e,0,t),t.record.name&&!$t(t)&&r.set(t.record.name,t)}function f(t,e){let o,i,s,u={};if("name"in t&&t.name){if(o=r.get(t.name),!o)throw dt(1,{location:t});0,s=o.record.name,u=c(Tt(e.params,o.keys.filter((t=>!t.optional)).concat(o.parent?o.parent.keys.filter((t=>t.optional)):[]).map((t=>t.name))),t.params&&Tt(t.params,o.keys.map((t=>t.name)))),i=o.stringify(u)}else if(null!=t.path)i=t.path,o=n.find((t=>t.re.test(i))),o&&(u=o.parse(i),s=o.record.name);else{if(o=e.name?r.get(e.name):n.find((t=>t.re.test(e.path))),!o)throw dt(1,{location:t,currentLocation:e});s=o.record.name,u=c({},e.params,t.params),i=o.stringify(u)}const a=[];let l=o;while(l)a.unshift(l.record),l=l.parent;return{name:s,path:i,params:u,matched:a,meta:jt(a)}}return e=Pt({strict:!1,end:!0,sensitive:!1},e),t.forEach((t=>i(t))),{addRoute:i,resolve:f,removeRoute:s,getRoutes:u,getRecordMatcher:o}}function Tt(t,e){const n={};for(const r of e)r in t&&(n[r]=t[r]);return n}function kt(t){return{path:t.path,redirect:t.redirect,name:t.name,meta:t.meta||{},aliasOf:void 0,beforeEnter:t.beforeEnter,props:Mt(t),children:t.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in t?t.components||null:t.component&&{default:t.component}}}function Mt(t){const e={},n=t.props||!1;if("component"in t)e.default=n;else for(const r in t.components)e[r]="object"===typeof n?n[r]:n;return e}function $t(t){while(t){if(t.record.aliasOf)return!0;t=t.parent}return!1}function jt(t){return t.reduce(((t,e)=>c(t,e.meta)),{})}function Pt(t,e){const n={};for(const r in t)n[r]=r in e?e[r]:t[r];return n}function At(t,e){return e.children.some((e=>e===t||At(t,e)))}function Lt(t){const e={};if(""===t||"?"===t)return e;const n="?"===t[0],r=(n?t.slice(1):t).split("&");for(let o=0;ot&&T(t))):[r&&T(r)];o.forEach((t=>{void 0!==t&&(e+=(e.length?"&":"")+n,null!=t&&(e+="="+t))}))}return e}function It(t){const e={};for(const n in t){const r=t[n];void 0!==r&&(e[n]=l(r)?r.map((t=>null==t?null:""+t)):null==r?r:""+r)}return e}const Ft=Symbol(""),Nt=Symbol(""),Gt=Symbol(""),Dt=Symbol(""),Ut=Symbol("");function Bt(){let t=[];function e(e){return t.push(e),()=>{const n=t.indexOf(e);n>-1&&t.splice(n,1)}}function n(){t=[]}return{add:e,list:()=>t.slice(),reset:n}}function Wt(t,e,n,r,o,i=(t=>t())){const s=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise(((c,u)=>{const a=t=>{!1===t?u(dt(4,{from:n,to:e})):t instanceof Error?u(t):ut(t)?u(dt(2,{from:e,to:t})):(s&&r.enterCallbacks[o]===s&&"function"===typeof t&&s.push(t),c())},l=i((()=>t.call(r&&r.instances[o],e,n,a)));let f=Promise.resolve(l);t.length<3&&(f=f.then(a)),f.catch((t=>u(t)))}))}function Vt(t,e,n,r,o=(t=>t())){const i=[];for(const c of t){0;for(const t in c.components){let u=c.components[t];if("beforeRouteEnter"===e||c.instances[t])if(Kt(u)){const s=u.__vccOpts||u,a=s[e];a&&i.push(Wt(a,n,r,c,t,o))}else{let a=u();0,i.push((()=>a.then((i=>{if(!i)return Promise.reject(new Error(`Couldn't resolve component "${t}" at "${c.path}"`));const u=s(i)?i.default:i;c.components[t]=u;const a=u.__vccOpts||u,l=a[e];return l&&Wt(l,n,r,c,t,o)()}))))}}}return i}function Kt(t){return"object"===typeof t||"displayName"in t||"props"in t||"__vccOpts"in t}function Xt(t){const e=(0,r.WQ)(Gt),n=(0,r.WQ)(Dt);const i=(0,r.EW)((()=>{const n=(0,o.R1)(t.to);return e.resolve(n)})),s=(0,r.EW)((()=>{const{matched:t}=i.value,{length:e}=t,r=t[e-1],o=n.matched;if(!r||!o.length)return-1;const s=o.findIndex(N.bind(null,r));if(s>-1)return s;const c=Qt(t[e-2]);return e>1&&Qt(r)===c&&o[o.length-1].path!==c?o.findIndex(N.bind(null,t[e-2])):s})),c=(0,r.EW)((()=>s.value>-1&&qt(n.params,i.value.params))),u=(0,r.EW)((()=>s.value>-1&&s.value===n.matched.length-1&&G(n.params,i.value.params)));function l(n={}){return zt(n)?e[(0,o.R1)(t.replace)?"replace":"push"]((0,o.R1)(t.to)).catch(a):Promise.resolve()}return{route:i,href:(0,r.EW)((()=>i.value.href)),isActive:c,isExactActive:u,navigate:l}}const Zt=(0,r.pM)({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Xt,setup(t,{slots:e}){const n=(0,o.Kh)(Xt(t)),{options:i}=(0,r.WQ)(Gt),s=(0,r.EW)((()=>({[Yt(t.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[Yt(t.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive})));return()=>{const o=e.default&&e.default(n);return t.custom?o:(0,r.h)("a",{"aria-current":n.isExactActive?t.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),Ht=Zt;function zt(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&(void 0===t.button||0===t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){const e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function qt(t,e){for(const n in e){const r=e[n],o=t[n];if("string"===typeof r){if(r!==o)return!1}else if(!l(o)||o.length!==r.length||r.some(((t,e)=>t!==o[e])))return!1}return!0}function Qt(t){return t?t.aliasOf?t.aliasOf.path:t.path:""}const Yt=(t,e,n)=>null!=t?t:null!=e?e:n,Jt=(0,r.pM)({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(t,{attrs:e,slots:n}){const i=(0,r.WQ)(Ut),s=(0,r.EW)((()=>t.route||i.value)),u=(0,r.WQ)(Nt,0),a=(0,r.EW)((()=>{let t=(0,o.R1)(u);const{matched:e}=s.value;let n;while((n=e[t])&&!n.components)t++;return t})),l=(0,r.EW)((()=>s.value.matched[a.value]));(0,r.Gt)(Nt,(0,r.EW)((()=>a.value+1))),(0,r.Gt)(Ft,l),(0,r.Gt)(Ut,s);const f=(0,o.KR)();return(0,r.wB)((()=>[f.value,l.value,t.name]),(([t,e,n],[r,o,i])=>{e&&(e.instances[n]=t,o&&o!==e&&t&&t===r&&(e.leaveGuards.size||(e.leaveGuards=o.leaveGuards),e.updateGuards.size||(e.updateGuards=o.updateGuards))),!t||!e||o&&N(e,o)&&r||(e.enterCallbacks[n]||[]).forEach((e=>e(t)))}),{flush:"post"}),()=>{const o=s.value,i=t.name,u=l.value,a=u&&u.components[i];if(!a)return te(n.default,{Component:a,route:o});const p=u.props[i],d=p?!0===p?o.params:"function"===typeof p?p(o):p:null,h=t=>{t.component.isUnmounted&&(u.instances[i]=null)},v=(0,r.h)(a,c({},d,e,{onVnodeUnmounted:h,ref:f}));return te(n.default,{Component:v,route:o})||v}}});function te(t,e){if(!t)return null;const n=t(e);return 1===n.length?n[0]:n}const ee=Jt;function ne(t){const e=Ot(t.routes,t),n=t.parseQuery||Lt,s=t.stringifyQuery||Rt,f=t.history;const p=Bt(),d=Bt(),h=Bt(),v=(0,o.IJ)(lt);let g=lt;i&&t.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const m=u.bind(null,(t=>""+t)),y=u.bind(null,$),b=u.bind(null,j);function _(t,n){let r,o;return at(t)?(r=e.getRecordMatcher(t),o=n):o=t,e.addRoute(o,r)}function w(t){const n=e.getRecordMatcher(t);n&&e.removeRoute(n)}function x(){return e.getRoutes().map((t=>t.record))}function E(t){return!!e.getRecordMatcher(t)}function S(t,r){if(r=c({},r||v.value),"string"===typeof t){const o=L(n,t,r.path),i=e.resolve({path:o.path},r),s=f.createHref(o.fullPath);return c(o,i,{params:b(i.params),hash:j(o.hash),redirectedFrom:void 0,href:s})}let o;if(null!=t.path)o=c({},t,{path:L(n,t.path,r.path).path});else{const e=c({},t.params);for(const t in e)null==e[t]&&delete e[t];o=c({},t,{params:y(e)}),r.params=y(r.params)}const i=e.resolve(o,r),u=t.hash||"";i.params=m(b(i.params));const a=R(s,c({},t,{hash:O(u),path:i.path})),l=f.createHref(a);return c({fullPath:a,hash:u,query:s===Rt?It(t.query):t.query||{}},i,{redirectedFrom:void 0,href:l})}function C(t){return"string"===typeof t?L(n,t,v.value.path):c({},t)}function T(t,e){if(g!==t)return dt(8,{from:e,to:t})}function k(t){return A(t)}function M(t){return k(c(C(t),{replace:!0}))}function P(t){const e=t.matched[t.matched.length-1];if(e&&e.redirect){const{redirect:n}=e;let r="function"===typeof n?n(t):n;return"string"===typeof r&&(r=r.includes("?")||r.includes("#")?r=C(r):{path:r},r.params={}),c({query:t.query,hash:t.hash,params:null!=r.path?{}:t.params},r)}}function A(t,e){const n=g=S(t),r=v.value,o=t.state,i=t.force,u=!0===t.replace,a=P(n);if(a)return A(c(C(a),{state:"object"===typeof a?c({},o,a.state):o,force:i,replace:u}),e||n);const l=n;let f;return l.redirectedFrom=e,!i&&F(s,r,n)&&(f=dt(16,{to:l,from:r}),nt(r,r,!0,!1)),(f?Promise.resolve(f):G(l,r)).catch((t=>ht(t)?ht(t,2)?t:et(t):H(t,l,r))).then((t=>{if(t){if(ht(t,2))return A(c({replace:u},C(t.to),{state:"object"===typeof t.to?c({},o,t.to.state):o,force:i}),e||l)}else t=U(l,r,!0,u,o);return D(l,r,t),t}))}function I(t,e){const n=T(t,e);return n?Promise.reject(n):Promise.resolve()}function N(t){const e=it.values().next().value;return e&&"function"===typeof e.runWithContext?e.runWithContext(t):t()}function G(t,e){let n;const[r,o,i]=re(t,e);n=Vt(r.reverse(),"beforeRouteLeave",t,e);for(const c of r)c.leaveGuards.forEach((r=>{n.push(Wt(r,t,e))}));const s=I.bind(null,t,e);return n.push(s),ct(n).then((()=>{n=[];for(const r of p.list())n.push(Wt(r,t,e));return n.push(s),ct(n)})).then((()=>{n=Vt(o,"beforeRouteUpdate",t,e);for(const r of o)r.updateGuards.forEach((r=>{n.push(Wt(r,t,e))}));return n.push(s),ct(n)})).then((()=>{n=[];for(const r of i)if(r.beforeEnter)if(l(r.beforeEnter))for(const o of r.beforeEnter)n.push(Wt(o,t,e));else n.push(Wt(r.beforeEnter,t,e));return n.push(s),ct(n)})).then((()=>(t.matched.forEach((t=>t.enterCallbacks={})),n=Vt(i,"beforeRouteEnter",t,e,N),n.push(s),ct(n)))).then((()=>{n=[];for(const r of d.list())n.push(Wt(r,t,e));return n.push(s),ct(n)})).catch((t=>ht(t,8)?t:Promise.reject(t)))}function D(t,e,n){h.list().forEach((r=>N((()=>r(t,e,n)))))}function U(t,e,n,r,o){const s=T(t,e);if(s)return s;const u=e===lt,a=i?history.state:{};n&&(r||u?f.replace(t.fullPath,c({scroll:u&&a&&a.scroll},o)):f.push(t.fullPath,o)),v.value=t,nt(t,e,n,u),et()}let B;function V(){B||(B=f.listen(((t,e,n)=>{if(!st.listening)return;const r=S(t),o=P(r);if(o)return void A(c(o,{replace:!0}),r).catch(a);g=r;const s=v.value;i&&J(Q(s.fullPath,n.delta),z()),G(r,s).catch((t=>ht(t,12)?t:ht(t,2)?(A(t.to,r).then((t=>{ht(t,20)&&!n.delta&&n.type===W.pop&&f.go(-1,!1)})).catch(a),Promise.reject()):(n.delta&&f.go(-n.delta,!1),H(t,r,s)))).then((t=>{t=t||U(r,s,!1),t&&(n.delta&&!ht(t,8)?f.go(-n.delta,!1):n.type===W.pop&&ht(t,20)&&f.go(-1,!1)),D(r,s,t)})).catch(a)})))}let K,X=Bt(),Z=Bt();function H(t,e,n){et(t);const r=Z.list();return r.length?r.forEach((r=>r(t,e,n))):console.error(t),Promise.reject(t)}function Y(){return K&&v.value!==lt?Promise.resolve():new Promise(((t,e)=>{X.add([t,e])}))}function et(t){return K||(K=!t,V(),X.list().forEach((([e,n])=>t?n(t):e())),X.reset()),t}function nt(e,n,o,s){const{scrollBehavior:c}=t;if(!i||!c)return Promise.resolve();const u=!o&&tt(Q(e.fullPath,0))||(s||!o)&&history.state&&history.state.scroll||null;return(0,r.dY)().then((()=>c(e,n,u))).then((t=>t&&q(t))).catch((t=>H(t,e,n)))}const rt=t=>f.go(t);let ot;const it=new Set,st={currentRoute:v,listening:!0,addRoute:_,removeRoute:w,hasRoute:E,getRoutes:x,resolve:S,options:t,push:k,replace:M,go:rt,back:()=>rt(-1),forward:()=>rt(1),beforeEach:p.add,beforeResolve:d.add,afterEach:h.add,onError:Z.add,isReady:Y,install(t){const e=this;t.component("RouterLink",Ht),t.component("RouterView",ee),t.config.globalProperties.$router=e,Object.defineProperty(t.config.globalProperties,"$route",{enumerable:!0,get:()=>(0,o.R1)(v)}),i&&!ot&&v.value===lt&&(ot=!0,k(f.location).catch((t=>{0})));const n={};for(const o in lt)Object.defineProperty(n,o,{get:()=>v.value[o],enumerable:!0});t.provide(Gt,e),t.provide(Dt,(0,o.Gc)(n)),t.provide(Ut,v);const r=t.unmount;it.add(t),t.unmount=function(){it.delete(t),it.size<1&&(g=lt,B&&B(),B=null,v.value=lt,ot=!1,K=!1),r()}}};function ct(t){return t.reduce(((t,e)=>t.then((()=>N(e)))),Promise.resolve())}return st}function re(t,e){const n=[],r=[],o=[],i=Math.max(e.matched.length,t.matched.length);for(let s=0;sN(t,i)))?r.push(i):n.push(i));const c=t.matched[s];c&&(e.matched.find((t=>N(t,c)))||o.push(c))}return[n,r,o]}function oe(){return(0,r.WQ)(Gt)}function ie(){return(0,r.WQ)(Dt)}}}]); \ No newline at end of file diff --git a/web/login.html b/web/login.html new file mode 100644 index 0000000..fe28a41 --- /dev/null +++ b/web/login.html @@ -0,0 +1 @@ +set-vue
\ No newline at end of file diff --git a/web/web/cache.manifest b/web/web/cache.manifest new file mode 100644 index 0000000..cd51b75 --- /dev/null +++ b/web/web/cache.manifest @@ -0,0 +1,13 @@ +CACHE MANIFEST +#v0.01 //߻ļİ汾Ϣ + +CACHE: //Ҫ߻Դ +./css/common.css +./css/content.css +./css/style.css + +NETWORK://ʾֻ״̬²ܷʵԴҪԴ +* + +FALLBACK://Դʧܵʱתҳ + diff --git a/web/web/content_pattern1.html b/web/web/content_pattern1.html new file mode 100644 index 0000000..ca0d8f5 --- /dev/null +++ b/web/web/content_pattern1.html @@ -0,0 +1,1953 @@ + + + + + + + + + + + 模式1—节目内容编辑页面 + + + + + + + +
+ +
+
+

画面预览

+ + +
+ +
+
+
+
+
+

节目参数

+ 模式1 +
+
+
+
+
+
+

分区0

+
+ 项目选择 + +
+ +
+
+
+ 图片参数 + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ 文字参数 +
+ +
+ +
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ 显示参数 +
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+
+
+ 数据监测设置 + +
+ +

+ +
+ +

+ +
+ +

+ +
+ +
+
+ +
+ +

+
+ + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+
+ 高级参数 +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+ +
+ + +
+
+ +
+
+ 数据不能为空 +
+
+ 设置中... +
+
+ 设置节目成功 +
+
+ 设置节目失败 +
+
+ 结果内容 +
+ + + + + + diff --git a/web/web/css/common.css b/web/web/css/common.css new file mode 100644 index 0000000..6ad6a1a --- /dev/null +++ b/web/web/css/common.css @@ -0,0 +1,52 @@ +/*底部导航*/ +footer ul { + background-color: #333; + position: fixed; + display: block; + bottom: 0; + width: 100%; + height: 35px; + line-height: 35px; + font-family: "microsoft yahei"; + font-size: 1.125rem; + border-radius: 6px; +} + +footer li { + width: 25%; + float: left; + text-align: center; +} + +/*导航选项链接*/ +footer li a { + padding: 12px 5px; + color: white; +} + +footer li a.active { + background-color: rgb(235, 84, 14); +} + +footer li a:active, +footer li a:link, +footer li a:visited { + color: white; +} + +footer { + width: 100%; + display: block; +} + +footer img { + width: 145px; + left: 32%; + position: relative; + box-sizing: border-box; +} + +footer p { + text-align: center; +} + diff --git a/web/web/css/content.css b/web/web/css/content.css new file mode 100644 index 0000000..18415f8 --- /dev/null +++ b/web/web/css/content.css @@ -0,0 +1,517 @@ +*{ + margin: 0 ; + padding: 0; +} +/* body{ + background: #E5EDE2; + /* background:#eee; +} +/**/ +/* .show{ + position: relative; + margin-left: 50%; + margin-right: 50%; + transform:translate(-50%,50%); + color: #5555; + cursor: pointer; + +} */ +/* 屏幕展示区域样式 */ +/* .e-screen { + width: 380px; + height: 135px; + background-color: black; + + margin-bottom: 30px; + margin: 0 auto; + +} */ + +textarea { + max-width: 335px; + min-width: 335px; + max-height: 58px; + min-height: 58px; + margin-top: 10px; + outline: none; + margin: 8px 8px; + font-size: 24px; +} + +.bd textarea:focus { + box-shadow: 0 0 0 .075rem #fff, 0 0 0 .2rem #0074d9; +} + +.bd textarea:active { + color: #fff; + background-color: #84c6ff; +} + +.font { + width: 70px; + /* margin: 2px 10px; */ + margin: 0; + padding: 8px; +} + +.fontsize { + width: 50px; + margin: 0; + padding: 8px; +} + +.tx, +.speed, +.stay, +.h-align, +.v-align { + left: 10px; + position: relative; + width: 70%; + margin: 0; + padding: 8px; +} + +.my_fieldset { + margin: 0 auto; + width: 95%; + border: solid 2px #84c6ff; +} + +.my_fieldset legend { + color: #84c6ff; +} + + + +.my_fieldset label { + position: relative; + left: 5%; + margin-right: 70px; + font-size: 13px; +} + +.select .img_type_css { + position: relative; + width: 200px; + font-size: 13px; +} + +.my_fieldset_div { + margin: 0 auto; + width: 95%; + border: solid 2px #84c6ff; +} +.my_fieldset_div2{ + position: relative; + width: 80%; + margin-left: 10%; +} +.my_fieldset_div legend { + color: #84c6ff; +} + +.my_fieldset_div2 label { + font-size: 16px; +} + +.my_fieldset_div2 input { + /* position: relative; */ + border: solid 2px #d4d4d4; + border-radius: 6px; + width: 40%; + margin-bottom: 10px; + line-height: 24px; + font-size: 16px; +} + +.my_fieldset_div2 div { + width: 50%; + float: left; +} + +.select { + margin: 0 auto; + margin-left: 10px; + margin-bottom: 6px; + position: relative; + padding: 0; + box-shadow: 0 0 10px #d4d4d4; + border-radius: 8px; +} +.select input{ + width: 148px; + border-radius: 6px; + color: #555; + background-color: #eee; + font-size: 14px; + padding: .5rem 2.25rem .5rem 1rem; + /* justify-content: space-around; + + line-height: 1; + + border: 0; + + cursor: pointer; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + outline: none; + */ +} + +.select, +.animation_style { + position: relative; + display: inline-flex; + /* background-color: #ededed; */ + color: #555; + font-size: 15px; +} + +.select select { + width: 105px; + justify-content: space-around; + padding: .5rem 2.25rem .5rem 1rem; + line-height: 1; + color: #555; + background-color: #eee; + border: 0; + border-radius: 6px; + cursor: pointer; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + outline: none; + font-size: 14px; + +} + +.select select:focus:-moz-focusring { + color: transparent; + text-shadow: 1.2 -1.2 1.8 #000; +} + +/* Dropdown arrow */ +.select:after { + position: absolute; + top: 50%; + right: 0.25rem; + content: ""; + width: 0; + height: 0; + margin-top: -.15rem; + pointer-events: none; + border-top: .35rem solid; + border-right: .35rem solid transparent; + border-bottom: .35rem solid transparent; + border-left: .35rem solid transparent; +} + +/* Focus */ +.select select:focus, +.animation_style select:focus { + box-shadow: 0 0 0 .075rem #fff, 0 0 0 .2rem #0074d9; +} + +/* Active/open */ +.select select:active, +.animation_style select:active { + color: #fff; + background-color: #84c6ff; +} + +.select select::-ms-expand, +.animation_style select::-ms-expand { + display: none; +} + +/* Media query to target Firefox only */ + + +/* IE9 hack to hide the arrow +@media screen and (min-width:0\0) { + .select select { + z-index: 1; + padding: .5rem 1.5rem .5rem 2rem; + } + .select:after { + z-index: 5; + } + .select:before { + position: absolute; + top: 0; + right: 1rem; + bottom: 0; + z-index: 2; + content: ""; + display: block; + width: 1.5rem; + background-color: #eee; + } + .select select:hover, + .select select:focus, + .select select:active { + color: #555; + background-color: #eee; + } +} */ +/* Hide the arrow in IE10 and up */ +.animation_style select { + display: inline-block; + width: 140px; + margin-right: 10px; + padding: .5rem 2.25rem .5rem 1rem; + line-height: 1; + color: #555; + background-color: #eee; + border: 0; + border-radius: 6px; + cursor: pointer; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + outline: none; + font-size: 14px; +} + +.animation_style select:active { + color: #fff; + background-color: #84c6ff; + outline: none; +} + +.animation_style table { + width: 340px; + left: 9px; + position: relative; + border: solid 1px #d4d4d4; + border-radius: 5px; + box-shadow: 0 1px 10px #e8e8e8; + font-size: 14px; +} + +td { + width: 160px; + /* background-color: #eee; */ + /* background: #fff; */ +} + +/* td:nth-child(2) { + width: 100px; + font-size: 15px; + /* color: #eee; */ +/* background: #eee url(../img/coin.png) 15px 2px no-repeat; */ +/* } */ + +.content_btn { + width: 375px; + display: flex; + margin: 0 auto; +} + +.content_btn button { + width: 80px; + height: 35px; + line-height: 35px; + border-radius: 8px; + border: none; + color: #fff; + background-color: #67a9eb; + margin: 35px 55px 55px; + justify-content: space-around; + cursor: pointer; + box-shadow: 0 0 10px #e8e8e8; + +} + +.txt_bold { + width: 60px; + height: 30px; + /* float: left; */ + /* background: url(../img/coin2.png) 10px -20px no-repeat; */ +} + +#txt_canvas { + background: rgba(0, 0, 0, 0); +} + +/************************************************节目管理弹出css****************************************************/ +.my_contain { + display: none; + background-color: #FFFFFF; + z-index: 11; + width: 80%; + height: 45%; + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + margin: auto; +} + +.my_contain2 { + height: 57%; +} + +.ground { + top: -20%; + display: none; + background-color: #B3B3B3; + position: absolute; + width: 100%; + height: 190%; + z-index: 10; + -moz-opacity: 0.8; + opacity: .80; + filter: alpha(opacity=80); + /* 只支持IE6、7、8、9 */ +} + +/*************************************************节目模式修改弹窗css************************************************/ +.pro_mode_shade { + top: 0%; + display: none; + background-color: #B3B3B3; + position: fixed; + width: 100%; + height: 100%; + z-index: 10; + -moz-opacity: 0.8; + opacity: .80; + filter: alpha(opacity=80); + /* 只支持IE6、7、8、9 */ +} + +.pro_mode_window { + display: none; + background-color: #FFFFFF; + z-index: 11; + width: 80%; + height: 700px; + position: fixed; + top: 0; + right: 0; + left: 0; + bottom: 0; + margin: auto; +} + +.pro_mode_window h2 { + margin-top: 15px; + text-align: center; + /* 位置居中 */ +} + +.pro_mode_btn { + float: left; + margin-top: 15px; + margin-bottom: 15px; + margin-right: 5%; + margin-left: 5%; + border: none; + outline: none; + width: 40%; + height: 130px; + border-radius: 18px; + color: #2b2828; + font-size: 24px; + background-color: #67a9eb; + cursor: pointer; +} + +.pro_mode_btn p { + font-size: 18px; + position: relative; + bottom: -10px; + text-align: center; + width: 100%; +} + +.pro_mode1_area { + width: 90%; + height: 90%; + margin-top: 6.5px; + margin-left: 5%; + border-radius: 10px; + background-color: #B3B3B3; + text-align: center; + font-size: 20px; +} + +.pro_mode2_area { + width: 90%; + height: 42.5%; + margin-top: 6.5px; + margin-left: 5%; + border-radius: 10px; + background-color: #B3B3B3; + text-align: center; + font-size: 20px; +} + +.pro_mode3_area { + float: right; + width: 42.5%; + height: 90%; + margin-top: 6.5px; + margin-right: 5%; + border-radius: 10px; + background-color: #B3B3B3; + text-align: center; + font-size: 20px; +} + +.pro_mode4_area { + width: 90%; + height: 26.66%; + margin-top: 6.5px; + margin-left: 5%; + border-radius: 10px; + background-color: #B3B3B3; + text-align: center; + font-size: 20px; +} + +.pro_mode5_area { + width: 90%; + height: 18.75%; + margin-top: 6.5px; + margin-left: 5%; + border-radius: 10px; + background-color: #B3B3B3; + text-align: center; + font-size: 20px; +} + +.pro_mode6_area { + float: right; + width: 42.5%; + height: 42.5%; + margin-top: 6.5px; + margin-right: 5%; + border-radius: 10px; + background-color: #B3B3B3; + text-align: center; + font-size: 20px; +} + +/*************************************************屏幕亮度弹窗css************************************************/ +.scroll { + margin: 100px; + width: 5px; + height: 320px; + background: #ccc; + position: relative; +} + +.bar { + width: 15px; + height: 5px; + background: #369; + position: absolute; + top: 0px; + left: -5; + cursor: pointer; +} diff --git a/web/web/css/style.css b/web/web/css/style.css new file mode 100644 index 0000000..c68b60c --- /dev/null +++ b/web/web/css/style.css @@ -0,0 +1,1011 @@ +* { + margin: 0; + padding: 0; + text-decoration: none; +} + +/* body { + min-width: 100%; + height: 600px; + font-family: "microsoft yahei"; + background-color: #f5f5f5; + background: url(../img/bg.jpg) no-repeat; +} */ + +.contain { + width: 100%; + height: 500px; + top: 10%; + position: relative; +} + +.contain_pattern { + width: 100%; + height: 650px; +} + +.contain p { + width: 100%; + font-family: 'Microsoft Yahei'; + font-size: 24px; + font-weight: bold; + text-align: center; +} + +.pattern1, +.pattern2, +.pattern3 { + width: 375px; + text-align: center; + border: none; + border-radius: 8px; + background-color: #67a9eb; + box-shadow: 0 0 10px #67a9eb; + font-family: 'Microsoft Yahei'; + font-size: 18px; + margin-top: 8px; +} + +.pattern1 p, +.pattern2 p, +.pattern3 p { + text-align: center; + font-size: 18px; + font-weight: normal; +} + +.pattern1 ul, +.pattern3 ul { + display: flex; +} + +.pattern2 ul { + width: 120px; + margin-top: 8px; + margin: 0 auto; +} + +.pattern1 ul li, +.pattern3 ul li { + width: 130px; + height: 150px; + line-height: 150px; + margin: 10px auto; + justify-content: space-around; + border: none; + border-radius: 8px; + color: #fff; + background-color: gray; + font-family: 'Microsoft Yahei'; + font-size: 18px; +} + +.pattern2 ul li { + width: 120px; + height: 130px; + line-height: 130px; + margin-top: 8px; + border: none; + border-radius: 8px; + color: #fff; + background-color: gray; + font-family: 'Microsoft Yahei'; + font-size: 18px; +} + +#pattern1:hover, +#pattern2:hover, +#pattern3:hover { + cursor: pointer; +} + +header { + /* background: url(../img/bg.jpg); */ + width: 100%; + height: 20px; +} + +header span { + margin-left: 8px; + width: 100%; + height: 50px; +} + +header a { + font-family: '微软雅黑'; + font-size: medium; + font-weight: bold; +} + +ul li { + list-style: none; +} + +.login { + width: 80%; + height: 350px; + padding: 0px 20px; + background-color: #ffffff; + overflow: hidden; + border: 1px solid #ddd; + box-shadow: 0 0 10px #bbb; + margin: 10% auto; +} + +.login_ul { + width: 100%; + padding-top: 34px; + font-size: 22px; + text-align: center; + color: #656565; +} + +.login_ul>li { + width: 100%; + line-height: 66px; + border-bottom: solid 1px #999999; + cursor: pointer; + /* float: left; */ + margin: 0 auto; +} + +/* 设置鼠标指针移动至登录表单模块列表项上时的文本颜色,下边框与字体加粗 */ +.login_ul>li:hover, +.login_ul>li.active { + color: #67a9eb; + border-bottom: solid 2px #67a9eb; + font-weight: bold; +} + +/* 去除表单模块表单控件的边框与边框线 +*并设置其宽度、高度、内外边距、行高、文本颜色、字号与下边距*/ +.login input { + border: none; + outline: none; + width: 80%; + height: 46px; + padding: 0px 14px; + margin-top: 30px; + line-height: 46px; + color: #cbcbcb; + font-size: 30px; + border-bottom: solid 1px #cbcbcb; +} + +.login span { + color: #cbcbcb; + font-size: 24px; + float: right; + margin-top: 12px; +} + +/* 去除登录表单模块中登录按钮的边框与轮廓线、 +* 并设置其宽度、高度、圆角、文本颜色、字号、背景颜色 +*/ +.login_btn { + border: none; + outline: none; + width: 80%; + height: 40px; + border-radius: 18px; + color: #ffffff; + font-size: 16px; + background-color: #67a9eb; + cursor: pointer; + margin-top: 40px; + margin-left: 10%; +} + +.login_checkbox { + float:left; +} +.login_checkbox input { + display: none; +} + +.login_checkbox label { + display: inline-block; + width: 24px; + height: 24px; + border: 1px solid #333; + position: relative; + margin-top: 17px; +} + +.login_checkbox label::after { + -webkit-transition: opacity .5s ease; + -moz-transition: opacity .5s ease; + -o-transition: opacity .5s ease; + -ms-transition: opacity .5s ease; + transition: opacity .5s ease; + cursor: pointer; + position: absolute; + content: ''; + opacity: 0; +} + +.login_checkbox input:checked+label::after { + border: 2px solid #d73d32; + border-top: none; + border-right: none; + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); + width: 20px; + height: 10px; + top: 50%; + margin-top: -8px; + left: 50%; + margin-left: -10px; + opacity: 1.0; +} + +.login_checkbox span { + color: #cbcbcb; + font-size: 24px; + float: left; + margin-top: 12px; +} + +.screen { + width: 100%; + height: 800px; + margin: 0px auto; +} + +.select_pattern { + margin-top: 8px; + width: 100%; + height: 140px; + border-radius: 8px; +} + +.select_pattern strong { + left: 5%; + font-size: 16px; + line-height: 40px; + position: relative; + clear: both; +} +.select_pattern input{ + border: solid 2px #d4d4d4; + border-radius: 6px; + width: 20%; + margin-top: 5px; + /* margin-bottom: 10px; */ + line-height: 24px; + font-size: 16px; + float: left; + left: 2%; + position: relative; +} + +.select_pattern label, +.select_pattern span { + float: left; + left: 5%; + position: relative; + width: 20%; + line-height: 35px; + font-size: 14px; +} + +.select_pattern button { + width: 80px; + height: 35px; + margin-right: 5%; + float: right; + position: relative; + outline: none; + border: none; + font-size: 16px; + font-family: 'Microsoft Yahei'; + color: #fff; + background-color: #67a9eb; + border-radius: 8px; + cursor: pointer; +} + +.tag, +.tag li { + height: 60px; + text-align: center; + margin-left: 30px; +} + +.tag li { + float: left; + font-family: "Microsoft Yahei"; + width: 185px; + font-size: 15px; + border-bottom: solid 1px #999999; + cursor: pointer; + margin: 0 auto; +} + +.tag li:hover { + border-bottom: 2px solid #67a9eb; +} + +.midart { + position: relative; + font-size: 15px; + width: 375px; + height: 450px; + margin: 0 auto; +} + +.midart_2 { + top: 226px; +} + +.version{ + position: fixed; + bottom: 10px; + width: 80%; + background-color: #1296db; + color: #FFF; + border-radius: 14px; + text-align: center; + left: 10%; +} +.version p{ + font-size: 24px; +} + +.keys_div{ + position: relative; + width: 100%; + height: 100%; + margin-top: 30px; + margin-bottom: 100px; +} + +.card_item { + position: relative; + width: calc(100%); + /* left: 8px; */ + height: 40px; + margin-top: 10px; + background-color: #7bc8f1; + border-radius: 20px; + box-shadow: 0px 7px 15px rgba(128, 128, 128, 0.25); +} + +/* 配置界面 - 配置内容框 - 基础设置卡片 - 卡片项目 - 标题*/ +.card_item p { + position: relative; + color: black; + font-size: 20px; + color: #ffffff; + width: calc(50% - 12px); + height: 26px; + top: 6px; + left: 6px; + float: left; + text-align: center; + overflow: hidden; +} + +/* 配置界面 - 配置内容框 - 基础设置卡片 - 卡片项目 - 数据 */ +.data_div { + position: relative; + width: calc(50% - 6px); + height: 28px; + font-size: 20px; + top: 6px; + left: 6px; + padding-left: 3px; + padding-right: 3px; + background-color: #ffffff; + border-radius: 14px; + overflow: hidden; + text-align: center; +} + +/* 配置界面 - 配置内容框 - 基础设置卡片 - 卡片项目 - 数据 - 选择项 */ +.card_item .data_div select { + position: relative; + margin-top: 0px; + width: 100%; + height: 28px; + font-size: 20px; + text-align: center; + border: none; + outline: none; + background-color: #ffffff; +} + +.play_item_css { + margin-top: 8px; + width: 375px; + border-radius: 8px; + box-shadow: 0 0 10px #1c7fc3; + padding-bottom: 8px; +} + +.pro_insert { + width: 375px; + height: 35px; + margin: 10px auto; +} + +.tag_control, +.pro_bottom { + width: 375px; +} + +a { + color: #444; + text-decoration: none; +} + +.control_li:after, +.pro_li:after { + content: ""; + clear: both; + display: flex; + visibility: hidden; +} + +.control_li { + width: 130px; + height: 120px; + line-height: 25px; + display: inline-block; + text-align: center; + margin-bottom: 10px; + margin-left: 35px; + margin-right: 8px; + border: solid 2px #67a9eb; + /* border-radius: 20px; */ + cursor: pointer; + background: linear-gradient(#1c7fc3 10%, #ddd 50%, #eee); +} + +.screen .item_list { + width: 375px; + height: 390px; + border: none; + border-radius: 8px; + box-shadow: 0 0 10px darkgray; + margin:0 auto; +} + +/*节目管理页面中列表项宽度*/ +.screen .pro { + width: 58%; + height: 340px; + float: left; + margin-left: 8px; + margin-top: 10px; + background-color: #fff; + border-radius: 8px; + box-shadow: 0 0 10px #1c7fc3; +} + +.screen p { + text-align: center; + font-size: 20px; +} + +.pro .list { + width: 100%; + border-radius: 8px; + margin-top: 3px; + line-height: 8px; + margin-bottom: 8px; +} + +.pro .list p { + font-family: 'Microsoft Yahei'; + font-size: 18px; + width: 100%; + height: 28px; + line-height: 30px; + font-weight: bold; + color: #fff; + margin-top: 2px; + margin-bottom: 6px; +} + +.pro .list p:hover { + background-color: #1c7fc3ba +} + +.list p.bordercolor { + border-radius: 8px; + background-color: orangered; +} + +.pro_right { + width: 35%; + float: right; + position: relative; + border: none; + margin: 10px 8px; + border-radius: 8px; + background-color: #eee; + box-shadow: 0 0 10px darkgray; +} + +.pro_right p { + width: 80px; + font-size: 16px; + text-align: center; +} + +.bs_switch { + margin-bottom: 3px; + width: 46px; + height: 25px; + box-sizing: border-box; + position: relative; + background: #cccccc; + border: 1px solid #dfdfdf; + border-radius: 16px; + line-height: 20.5px; + text-align: center; + cursor: pointer; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + outline: 0; +} + +.bs_switch:active, +.bs_switch:visited { + outline: none; +} + +.bs_switch:before { + content: attr(data-off); + position: absolute; + top: 2px; + left: 1px; + padding-left: 13px; + border-radius: 15px; + background-color: #cccccc; + color: #fff; + font-size: 12px; +} + +.bs_switch:after { + content: " "; + position: absolute; + top: 5px; + left: 2px; + width: 12px; + height: 12px; + border-radius: 15px; + background-color: #ffffff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); + transition: transform 0.3s; +} + +.bs_switch:checked { + border-color: #67a9eb; + background-color: #67a9eb; +} + +.bs_switch:checked:after { + transform: translateX(28px); +} + +.bs_switch:checked:before { + content: attr(data-on); + padding-left: 0px; + padding-left: 2px; + background-color: #67a9eb; + color: #fff; + width: 24px; +} + +.pro_icon img { + width: 30px; + height: 30px; + display: inline-block; + margin-left: 6px; + cursor: pointer; +} + +.pro_icon span { + width: 30px; + height: 50px; + +} + +.pro_li { + width: 100px; + height: 78px; + line-height: 20px; + display: inline-block; + text-align: center; + margin-left: 10px; + margin-right: 6px; + border: solid 2px #67a9eb; + border-radius: 8px; + cursor: pointer; + +} + +/* .control_li span{ + display: flex; + width: 180px; + justify-content: space-around; +} */ +.control_li img, +.tag li img { + display: flex; + width: 30px; + height: 30px; + margin-left: 50px; + margin-top: 30px; + justify-content: space-around; +} + +.pro_li img { + display: flex; + width: 30px; + margin-left: 34px; + margin-top: 30px; + justify-content: space-around; + clear: both; +} + +/* body, +h1, +h2, +h3, +h4, +h5, +h6, +p, +ul, +ol, +dl, +dd { + margin: 0; + padding: 0; +} */ + +ul { + list-style: none; +} + +input { + border: 0; + outline: none; +} + +.clear:after { + content: ""; + display: block; + clear: both; +} + +.box, +.nav { + width: 375px; + margin: 0 auto; + padding: 30px 30px; + border: 1px solid #ddd; + box-shadow: 0 0 10px #bbb; + box-sizing: border-box; + top: 25%; + position: relative; +} + +.screen_box { + width: 100%; + height: 100%; + margin: 0 auto; + padding: 30px 30px; + border: 1px solid #ddd; + box-shadow: 0 0 10px #bbb; + box-sizing: border-box; + top: 0%; + position: relative; +} + +.box select { + display: inline-block; + width: 96%; + height: 30px; + font-size: 24px; + position: relative; + vertical-align: middle; + padding: 0; + overflow: hidden; + background-color: #fff; + color: rgb(85, 85, 85); + border: 1px solid rgb(11, 184, 236); + text-shadow: none; + border-radius: 4px; + z-index: 2; + margin-bottom: 7px; + margin-top: 7px; + margin-left: 2%; + margin-right: 2%; + text-align: center; + text-align-last: center; + outline: none; +} + +.box h2 { + text-align: center; + color: #666; + font-size: 22px; + line-height: 40px; +} + +.box ul, +.screen_box ul { + padding: 10px 0; +} + +.box ul li, +.screen_box ul li { + display: flex; + height: 35px; + line-height: 35px; + margin-bottom: 18px; +} + +.box ul li input, +.screen_box input { + border: 1px solid #ddd; + height: 38px; + padding: 0 10px; + line-height: 38px; + flex: 1; + box-sizing: border-box; +} + +.box ul li label { + display: block; + width: 115px; +} + +.box ul li label span { + color: red; + padding-right: 10px; +} + +.box button, +.screen_box button { + width: 100%; + border: none; + font-family: 'Microsoft Yahei'; + font-size: 18px; + border-radius: 8px; + height: 40px; + background-color: #67a9eb; + color: #fff; + cursor: pointer; +} + +.screen_box h1 { + font-size: 24px; + text-align: center; + margin-bottom: 7px +} + +.screen_box select { + display: inline-block; + width: 96%; + height: 30px; + font-size: 24px; + position: relative; + vertical-align: middle; + padding: 0; + overflow: hidden; + background-color: #fff; + color: rgb(85, 85, 85); + border: 1px solid rgb(11, 184, 236); + text-shadow: none; + border-radius: 4px; + transition: box-shadow 0.25s ease; + z-index: 2; + margin-bottom: 7px; + margin-top: 7px; + margin-left: 2%; + margin-right: 2%; + text-align: center; + text-align-last: center; + outline: none; +} + +.my_luminance { + display: inline-block; + position: relative; + width: 100%; + margin-bottom: 7px; +} + +.my_luminance::before { + content: ''; + position: absolute; + bottom: 0; + left: 0; + width: 50%; + height: 100%; + background: linear-gradient(-90deg, #64d8f0 0%, #67a9eb 100%); + border-radius: 8px; + transition: .3s; +} + +#read, +#reset { + font-family: 'Microsoft Yahei'; + font-size: 18px; +} + +#set, +#reset, +#cancel, +#cancel2, +#confirm2 { + width: 100%; + margin-top: 5px; + /* top: 5px; */ + position: relative; + border: none; + border-radius: 8px; + height: 40px; + background-color: #67a9eb; + color: #fff; + cursor: pointer; + font-size: 18px; +} + +.main { + margin: 0 auto; + margin: 30px 30px; + width: 375px; + font-family: '微软雅黑'; + /* -webkit-user-select: none; */ +} + +.slider { + width: 375px; + height: 40px; + position: relative; + background-color: #E8E8E8; + margin-top: 20px; +} + +.track { + width: 16px; + height: 46px; + position: absolute; + margin: -3px 0 0 0px; + background-color: #2dacd1; + cursor: pointer; +} + +.valueC { + height: 40px; + position: absolute; + margin: 0; + background-color: #43BFE3; +} + +.value span { + position: absolute; + text-align: right; + height: 40px; + line-height: 40px; + color: #808080; + border-right: 1px solid #dddddd; +} + +.show { + width: 45px; + height: 30px; + background-color: #333; + color: #fff; + text-align: center; + line-height: 30px; + position: absolute; + opacity: 0.9; + margin-top: -38px; + margin-left: -15px; +} + +.clear { + clear: both; +} + +.toast { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + /* display: flex; */ + display: none; + align-items: center; + justify-content: center; + user-select: none; + z-index: 999 +} + +.toast span { + background-color: rgba(0, 0, 0, .4); + padding: 10px 20px; + color: #fff; +} + +.my_h1_style { + background: #4787bb; + border-radius: 6px 6px 6px 6px; + box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); + color: #FFFFFF; + font-family: "微软雅黑", "宋体", "黑体", Arial; + font-size: 18px; + font-weight: bold; + height: 25px; + line-height: 25px; + margin: 18px 0 !important; + padding: 8px 0 5px 5px; + text-shadow: 2px 2px 3px #222222; +} + +.canvas_item{ + margin-top: 8px; + width: 375px; + height: atuo; + border-radius: 8px; + box-shadow: 0 0 10px #1c7fc3; + padding-bottom: 8px; +} + +.roof_dis{ + position: fixed; + top: 0px; + z-index:10; + background-color: #fff; + top: 0px; + left: 0px; + right: 0px; + margin-left:auto; + margin-right:auto; + margin-top:-17px; + /* width: 100%; */ +} + +.canvas_item canvas{ + position: relative; + margin-right: auto; + margin-left: auto; + margin-bottom: 10px; + display: block; + /* border: 2px solid #84c6ff; */ + background-color: #000000; +} + +.canvas_bg{ + position: relative; + margin-right: auto; + margin-left: auto; + width: 320px; + height: 160px; + background-image: linear-gradient(45deg,#eee 25%,transparent 25%,transparent 75%,#eee 75%),linear-gradient(45deg,#eee 25%,transparent 25%,transparent 75%,#eee 75%); + background-size: 16px 16px; + background-position: 0 0,8px 8px; + border: 2px solid #84c6ff; +} + +/* .canvas_item .canvas_border{ + position: relative; + left: 25px; + width: 320px; + height: 320px; + border: 2px solid #84c6ff; + background-color: #c5c5c5cb; +} + +.canvas_item .canvas_border canvas{ + background-color: #000000; +} */ diff --git a/web/web/edit_pwd.html b/web/web/edit_pwd.html new file mode 100644 index 0000000..917b33e --- /dev/null +++ b/web/web/edit_pwd.html @@ -0,0 +1,122 @@ + + + + + + + + + + + + 修改密码 + + + + + + + +
+
+ +
+
+

修改密码

+ +
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
+
+ + +
+ 密码不能为空 +
+
+
+ + + + + diff --git a/web/web/favicon.ico b/web/web/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..682f8ec042b52bd9236de5ee71dd73fe0cecc1ba GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/web/web/img/content.png b/web/web/img/content.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b531268b32e277f3ab991f3cfd4be896d485fb GIT binary patch literal 33157 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�#-Q!j77Rm8>yK#2o_Cpgh|wFZkDgW6ORzH<9YC;sQ@!Ag-|=%`mRd%^DF* zrfK_3u^{oX92Xe9#W&-E;LWZ#mv8L%WMDf-nZ3)iQ~f%Y zn+wNuw(r+G?o01-b;isvhcGG%J&764`R)Nt2r}Z7mB#Gt`&TWmRkW1)4=C|PS4Ez= zmdlUdyA`BuKc&oPP>_+{Ph+7Um}4BZD8Y$u5&n~t^?a;$$hfpAxe}?v77~_)?~D;# zDbmNisSSikJOXf{NEiLN83if7wng?9QMwByqz6j{sdbQ|lJAUG`~>ppfJ*SrNQcJ! z9V8;z!n4-F8#d|~wSMy#$OW9MDieb=+cfuPzmEAjqA*fIW|k4eMZ03tAzk?F5;nQO zoE1->Vz4=UGMs$(d*0?sLUqp{@#?XnivA6U*44?l=gPOtE}*(M-Q}ZXBRtG*piDn~ zXV4Rl_np}vW0O5ac?@jKYy3XqHY-)*ni9(np1+gF^Ks_R=uO4+;qX#D;`{8V#9Fez zuL*dqviIaJZ% z0x)KTEeI`s*6pHLGj3t7+Ose8{M5%(i)`cZohM7@C6m)*|AcO-C-&&v{}voHwV(xurTe6&h_Dhi-N`Xo$vwvd0PC5v?IRz@C1)mJX!LH(!Jimui zPms!7*TkLrp9RNd5i8OmKQWM+X1Ln4SC!eIwcbS0rXWZFkFN}iKDd!dDX%Kv%1iRR zd;+H)&u$#Cw#2%uG((L%>Qnu>o&LvH98cz^$5Z&J2G+;vRRiMwn@HrmVa0@;VX@Yn zl&I*khPry5K6*f4x8HBSIv#?;+(SP3Ctab%Llp`d?JsCTUOgjIovD?v)f?9(!~d_g zc@bZr2z!=4^c01tOhWwi%!)%uYEojLC`sNvThJ!XN!$?WI)Fo`Y5vjvq{xlLY>b6F zMq(`DY8IdGEsZEq*LpwU_DbO|;!nppHdej4d)@MMRC$5&Z>RpRKbgPSVp%g%I}bi| zje2n0@zU@qs9JH&rZL<-bhpP{CaBz;n#f*q`AbG*!%kABJ8As<#SBfy6SP|qS>9L` zPb?BdHmRczK`3Clg`OVN;u+!4ot#fdSFF8gLMDj&widBe%zPD)(yVAt(Y=ce+QgOX z7LP)Hw_(9pnV>UQtv*a>{P7C(w2Kxcj4h+Ub+!T7%AV0#8}33^dWR(lWT_H7d-KDE z1d1Y)e~TH<)WxhHrO!p}X>wGfeuH;HiZ5-+RA0 zmwr(seAyPDnTuP_-Mlk+kMFYGN}Or$c!!aa-g+|_|XGjbpdfZo-mH%ZlPd^WySJVzpFhuW5 zI4!OD23A@b)&U8@i&B9qIm|GEI3sTIyEnKfG^4}dFcH36uX${sP+`P0t&0BF;IOJn z7gs8)veN;sm4)zf)sq8HA=(yW_8GsYwtctTp2fA>ytz<*^Uv|$q<$w`LhA2c8mQa; z`|Y)&#hV%p1s{F}@1$n9Zl|!7y8c#w>_-*h+fA2*h+=m!MBhGSj!95vr6ZSD{o!Kh zBtj<&NEe40fceuczngjibpsLt@bg)V&>4fN0>ZKZ<(JK_EJ)H3h$x}us3}~Io8231 z9qO_)Myo!Fajj0=qeCAS7QRD03dyk0vr>l2@t~x&2~APu#Qoi-ob`$s?;6z$-KuOX z@8O9=368*vq2{W>w?9M)mJ4>VAja;dwTypegWg9jCrmqOYr0!_1_bUmkHn|*a}GMhvg5v zVywC6eIDA+Qk11H^|#Ew!fN&S+u^gCNV;!gV>phI&=NX9aWk}ei8$RUS4<@E06hfE zUH(w23M>;S-YhU-imjJ$3*;2FJZ1QoA2dsX!lK>21&NA;n*R%Wv`=<6=GSgX@kv_Q zJe*5>4>yI`T{>ZX91_%9^kly}qz92%K~A_?^+D`YJo^`|$DqLsdZ8Ho=!elEncCl0 zZ>*`~bQro)Pq9s(!&V4cA|QKRspAL7$$}i(@L+5iPv3B@!|UK2astxF=pu}!Tevfv zmCk-)J@>~uyLUOicVl?A>V-J78pZ6Kyow%`+-p|`{8!sg{ti1zxO^Z#L?Rt z6-jGK9YtoJ9p()-Tlt$Cj8YiGYbX+MqsQb1sq;OwcTaOew4p1xjk zO>!yPH6Sy<(N1|7M;ddER8I*vcTsb!h;S@~h9xgTu&_L_M8H+gj-ksXN+Jd&s95;J zNGfxX`aJE&zq&h)Qg{D+gBSb9E_u{9Ad-#sYRMKUEw4xdDAI5GDaYpkn{JAVD7k2q zpeW>{g`OMK0`y~Px_2P~g3#pxARPmV;hTltbLDtdVwMtM*6FP(L(q5Q3EK^R2)`ds zG1iu5ABD&gTOupt$Lb6=jl43bAh*T2OJkN)O#`Lr638etTS}mrAE05x z5f*J)XpFBkU#c9M^PRr&=v3mfXsrvXPv%UGV&keMw76Mr`#sl`B0$h`=I9=HYM~Mz zL7vNp`LWWC>Fd0Dgk;Wp*ZA5<6>n)z-%d_BK5x8{*UeKlK$~@gC9nLTE|UIR7K9^uj|C8Y^j99w-19K{p$33bHey$@lNN+BUMLn z8YaHZlFNeILZMk7;;PpQ62<~YTRm3PE$loZzW+@f?D(jgKSz(RHhIHgU)?OH3A|;lgQ@{Z@nuZI1 z_G?3{X#D+^*M@^bY?Ej3Wt+~ug7cQ)6-TKl_t)w{ufxDLKyjNuLpt2qj0nXL702*o zbXvnx(gR0*ZP{1Ce|a_igxUlnxF4g~k(tdVAE{1fB(O^lEq)D;!^=;)>vbz!{Tb_X zW^RYKR;haTHCclQAtI?y%vL}J_kytU2Tk>JI~kHU>12zi2dj^TZ-d4fAPQ=&m%5_C z*(TcY?Bk=OiBi(in*h)b9B&lu4_k3v4fGV0XM9P9F}i@-+a(T$fb^hNF1Xs(D7eViss zCzr5J9v4xn=djx>xlIq8Cb)z=Bz##niAtPkU&O7Ra<>)!qNcEc&~~vdRq75I~92-KEOeZ z#^K`a0uf=>y)K)kmW;7^U+(3sc+S<6nSo|oBN;2m_kRtnDu-S&;Y+&U_=oP}OT%Vk zCx9kw!A2L(uQI%vWt}`cPI5roOCq6%2ME>O5;4_0%JKO~PmA1_x>@~}u>cSM1;`FS z+oA!|5wRrkb_F_r9GZl<1VOrGAbtKBnKKzaSWWq%{deYc@Sr(etz4e*Oy9YVy%#3 z7m?)JlT+pMun|5NQkmr%kA)}KFPF=s53j7AzDme&cTI>{jUBZedOsN^KjGT0+C>~C zs7VvTgJK6jgt@8;$f&ZgoOhcgA;*9=C9wEtLX&R(;tNVm(4Wam6yikLTUPjSBrMpA z%|Kp)g0%yCAJCraj6f3ScXnehpAWjqL3 zD2f)0w7UK-d_u6kw>IEnE&rZ&rsi z6-5S!gCu^BHmhJajq6MODBgl$XwVv*dr_$WCl7>Gfwv5gFpTTIyhsq)667r0`WKCG zc_JN4o&)d)BqNTB^cFnC(s>UL4phOZRhsbE-x?bOfoR7A;A#>(Od2bzu>Y0M!Qr9a zl>ImhE2o0PhcGS;7`k|PCG5+?wvRSbKm01^HhFTECbo%8w)Q$olfY&a%uBgw!Fl1X zvN8Si6&OtN#~;D{VtBDi>Zz`!A}9=?&mnJE@v+jqQKskwo3AlO-DABkzDNi#%!v?v zm^7{NY<-l+KdB{mFZ#}x9uqbiz1W^D4fDUjRzq@HvyiCWr_{zj zgerJmr{Si5ryZI~@j*G@BGp2F$o||95M)g=Tk)dr9+Qaat{LyQi3mWd#4JS>BfooSXNV%UPo9OKz}!A6GF_SQ?)_yPmySjwVQ4Vh+2;yYRLLmPBt7ft$qZa4EN z^QfWqoCOi#iD#72sguLC}~4sjDCX%bC zE?`YhAMz^UQYFjixU|*ZZ;OE`?YDE0c;)HBdJp1os_n^%(3t09IA)-l6n8xDzM$yR zu9p8pICS*4oa*}zal(=Zf#PESYOJh$y6x;-DMXrJ3bHh`DsT-rayj$I6eFwcc#H$RL{-Nuuip$+fWN0l>HH;2rm(DlR57$#26xw^|(WKIxh|WfEDRx zhtMp>j^oc6#a67Z_{=K-umFT!2@t1Wz20(bp(j{(QlN__$m2?Tv*JW&UakXI6QdTk zJbbVZdrwE6$&ZqrtmP%#HF14|r6+eybt&j={F|iG!PK~({LTNLj>*-+)b;z>6^2-K z`m5lfi*={jtS9cL!W%NwPGa4cjb-0fzI^r5%@@MFw>8^bvu&u6Cqo}xVue^Gn;7v! zL!!HUAV#p!UMv{Ko9Z=6M8RY%|XoLr_k1QPv z1a%T0M|2tg4t44(P%HS(VQWg^R#{z50SKV}+@2{mIICMeF@)#M3MjOLkU9{F`)$&Y zW^Z3pH4t4KT$Zl?T)YCY|78-t|IsYdx08z4xY^R{`LHzcxUW+4h$Y{oA+@O-Y4Y!>JzQU$ zxT9m8$`XtGc=5+Qv+81y*~Jr|?rKsx-uT5IM1wDo!MZ();FiiPUliwkLBh92v8O<+Cd6^gP|iw%+yT!eE({-gEz-!s?5F^F_UV615*#S6DvlJQGrrR z#q6KQEct+Ljug4C9-+%yN&I3z9m9pqYVx+a)KevW-0qZa(fZmuf;La(_={kKZPxJP zV6iGwy;?{((Ni6%^7Dc5+VSJV_wMrtHO^G`Qb`~mlC#Vjf% zB{eiN6RFBkJ(0NefTu9^An#@Ik0@}cU7kVsnn~E&&18$rjmGV6a3GyBVWs(M*bpPv zxV_J>`9f>-dH7miSLzPC^8M`%@FZ`B4BYsK2VH)qCZ5G*K}b($-g|1M!e(Os<2@?y zohMN;K9BN?MH+n^k~?*(t(Lc@hVpZt#j8A3QCE~WPQsh;rTnDwC{nr3C*ytltHSZ` zUX?p}$RrFv4qkG#Rh5a~5O9Y4nOMJNGL!l3D$`WgV&xfY&J5%->_I2Nz{3cMx&4PC4(^TzqiaYP$rAeJ zYO2O9Gc(;ZH25%Ar=Ig&EZJfNHeUMk1V@#NNZ1z`h>&%I>d3IdF^- zSFbC7yPk#Id%Kb!z6Mekcd&C?Z6zo=Nd2q(i^f6@gTT)vJAsy$Bw^p=4N+-y#dn%iq z4ILG8N-v}6Zz;qzJ}<`^12@lnlvQaYUSaG+28B4{gCws+rxpGS1C7+ome{BLsgGV~JAGl+cZE%UV(SF<|CVF&R?OWq zA(J}Xx~;Aem{0-5in`GR_6Ba{`0JN&w1Yl+s`wxhZ(sb?)s)_BISskmqe)SmO7^h? zWR=dm(bDBFmXE82YXPw@nl5p4UHSkwmeb#qwRr9aP3bdY1L!2e*519jY*y{nCV?Y3 zQ)~k&GV~c?`w6kZsgLsqq;cr@8MQvn<-+}ElMa2r4(`#gc$3){@6%~tsC-ys;+_}e zx&*_hy3mdp_nM{=wuyp5Q6Y(l^hCrUXc&uk{dS5v1*c7xg3Z22mk+|uH*Ne(!crEm zEe$&1)pW`wF9JoziF#w=X#Q6|C0cT zKdr(L2xs)qVDAAWm1iB2tbAJzl1_U%Uh|deBaO`{{DEASsOrtyjJB9i-Gt*S}ltUDYW! z)YEJB64kCSj!xp%SxhyL`JO&^z(Mc5S*eS$9g70tJ~xz@d=H#{f}Fof`zfLSa68?` z_s|&Wy%#)sRrtVK!v5da^e&y`5*PnEOcMV4iXRG&vFWO^=yPtr!}+HmLA`xrthCbX z2T_?`H34Ua^NkppBV8VYT9R&hSCYBCiMigCJAYtzJyoH5KIr#j y+W#o~G6H;4r|kckf&TYR?(wUAxzh^}Di_1@3?6)SyAqsp3sF{3hn35}3H(2e2btjj literal 0 HcmV?d00001 diff --git a/web/web/img/del.png b/web/web/img/del.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a5f0587c054069ff3625d5e4747173c4dc3c2c GIT binary patch literal 5802 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 I9eB+D074x#MF0Q* literal 0 HcmV?d00001 diff --git a/web/web/img/delete.png b/web/web/img/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..3e9ecb16d36762d25585c6e13810897d2dc0c936 GIT binary patch literal 3603 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
`->t=< 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 literal 0 HcmV?d00001 diff --git a/web/web/img/refresh.png b/web/web/img/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..59353200566a264bb294e4da456adfbd7391754d GIT binary patch literal 17554 zcmW(+bwE^47hRTGdg+yJ0cnuVrMpu=8UdxdyIHy$q@|_18AbMCq4MX9OCVxg0u0{{Rlc{wQ!_-OIp144nn9d}Z--~*bYoW2VHfPw$tg8<0N zfdByLsy336YHFVxTpe6KIXF_uOG;8XIy+d|e6|DtJb&eCT5D+@5sBPxTtO8h15*?o zGzdXd8qkFwmsLp~JjlPV!M_mL9DUOUD zf86#dwp;AH{XO;4v?O})?J~D<2DKN2nI^}r{yq@10!o3q6*4k7yuHUJ9)wQk2mpf` zEvQ|dX%PT-{=&lVXnIk*0SKOR7$88ea&|8VS;Q;OA84i_LSQIDuWKT|A}EjmAnpx= zmIB0O5CU^E7&HL|NC1-wbF*E58Y{r$ZNTq2Kw$1&rVj$(Lkcw^LO~*c3g0qP3h+q? z@NGsXS{k6o0U)qa925X7vjRBeb*&2_0wDPSOh##GJprMa z00Nl{UEzQ4YQP7~@JMAg2)EG*NC$lYu{xpZ>atNVPRkR&Bj7a!nr4Z!^?PN$;R@ox z*}9wr016Tb;j6uT_MFD9nV#l_HDiBd{nLZ;N@HfW`?5b%M1P9($rz)+?KZ}$0Y|(EP;m51_tNpd*hm*9w5_b{@9ixs3_?Gcj_dlpSoeSI z)qVba?=Spxd%e}YLl?wl6eNpux79y+rBp&TlY|y(w)Q(-_NfKq^@)6rW>DU&O^=yi zR~^p@CY2R?$yGuV1x;caqMv=W*x6)xL=@e852&*hMes>vEjKbpyit4$)^qLMxdi|& zIvo1u89|7FpF*~0JYLVlo@EQ@0fAQXNlpNOu@oJf)_9}X2nYa>DhOh(lOVn7gRu0X zko6(2^8usN92}IoO5=p!NJLXvyXi^)%lwtAt+smSPfaDSokp&^E<_rIk{E?4}{(2jdQ2r=X0 zjL?%~pq5FL!TXk9&`FkNV;Rdajwc)7LxA9Y&3DTZK3K;C-Hb6w3@Q3GL!6jrHM-*`Z3Gn7i-%*DJJ(c<9aJkB`C#L0Bf)?;pF_9aXl zM^9BqWk@AuX4k5yEUnzA#L&Lfp3sV~FxK>|k1ldZa#iY8vd3M#H78}crCrh;`j0`_5+e$44d2RI$4?{Y9%!y;u9u;g5h;rZUe~Zy z+Le$Nc1U^j*q5DVi#v4HCME}soP&hS*>aQ((Gqy zZANU}GE_5gn%tG_*X|ehEP{#^v4UMiZb0tu^4*z0P)BehYdYst%x~x_?TFo4Zw5TG z%)Q%;KfyF;ldG9MCu>b?-R2T<85t9$7(Bt2F3OfoI=nvGwWr{E?PRp=J$s#--I(2f zQodSy%6n>a8nKo?$&=5Nr_b&3V_;NrOMU;R7)E|7hu!8ke^p7=losKU17crt_}TEFw%dTny$IsYmjYGyT2C&oxPxO{oW|G^vejYfe>xT2_Vk z%%YWSw!**o+IiZ=hS{w2Cl~Z`_2fS*k_oUe*YMhZ?%sSlxs2G!-ND%PAu#UWV*rTG%O4QOE2W6TTtqv!XXcOAoaS7?+q)8>}sLt$L=S#s$)<^4?9I zOg4_MCh+B)<-eZb_2X?PHJ5}d>avpS{qFi^E6^b9
vONjg~TnFWwaBFlk^OptH zsuSJx8viZ^Z)Lk61dwWSjyRXuk7%_h@_@LW<+!l>vPf>q*l z!hmJQHP3z02#4{W%(ay76;*?67Bg0}R!6@#So1z$r&Xr^PRF*#TKV-IYg6a@$@Pu& zDtr1A<7!7pvt(Owk8o?JW!c#Dl#rO#SFJ0p2QA*y+4UyVr91ndr=&ieH#~nARzGy! zK8ucZuWBP`D=%0rSU$=>Hr|TWL{%Q$r9FNzs#f{pbTWcCi};L6i`~4`HorhVE25_a$*xl390+v^O&eacx?VJ_?&IsW>Somne*E&s^^fpN@|@~O zM@~mpO`D-z+o^X~laJNy5osRZ^!ino*FU1y#f3Zpk@c=iZ-?8V+v`oDb${o#&(jkf zD;{r8t2!NBmOsGEqZJ#O{B$aJ)4AGvjAr`bBzj&llg4=Rdv2 zZ)#VE`-dsI$2_??jjwbbPx?I8Jjl2CV9xUKtNFSAh{$h?P z1Z!B26}J06G@-K8hNxs7n1Gs~sk(5G(~)y2?&pd%z^}^qMcTBL45<%VVdyS!;6xCP zYaVNtg<`bSCm>58U3cjvWg5v3GhOBF=Ri6jBPoe20)^WIbD{uDVoPR3KtMHxLK_ku z#@b3G6a$-Y2k|!#%Cn8|K&sHYSr^XN)G|F%laQ5F-lPrXF7YkTP3p3V9_> z*z@qL!7y5C!G|{EL*4P9yvOa`ec!*mb5s6ccj&Fpjd|D(+gn#cLjcK(Svx>MplRyR z1Y!Xg?g(eb1DUkCSagw#DI_m)_m1b_sT{lmKJXQV?cVzqp7&5t&T?!p*Pt}VVUodsIS^QCbA(ZnGTu`wPK9q08&t%GvP+gze?@DBDFLBD zmkc$Hqyj-VZ*c~lI@v+N>6mlE1Yz4~!^F!Mq6P>yIY5`yqd$U(aVL|V3=%9AI$=uAKD zJ!QD*2N3SFFi@i)Wdj~rSPX)ay9Ak#8g+VW41; zI?Kmzg?4o;h^3~`C7w?t&+w}B)PSFRgU;4Ge5SN^QGj5wV z!CRI@(wmV*hw5_;cboF!t>A*tzYM*I?uCxJqWL}5dMq^cpfAW&!5o7cRUs-Z@hY|P zL;FMq>l7$3j7=PHD0M#vbP^J}1*WPX)sT=D`G^2SH(D~uLSdN;&23a;*;B95;aDv< zt<)ISYKqPLMZhvg=0l;>#xrxdC5VkOK)tqo{$}%*@&GE_FA$IizVJXy&=a+SX|yl# zOwACWhv5(?((hp)@3CNHmBu}vGQxfy;JiRQVJm+7b#^_sP$hH(y zg6G^ub~TBC9LN#!yh$wK>YL16*wFhaxnW05p-36*DOf)nXqnSrU8uv z5S!L8vW+@4kQ2tC5fGxGR~mF=i%hyWZFZchYjR0Qs>Zf&N-~@=gd_nNapE|<<%D2n z!FGKGV7p@TJSPMtT2CxMD3W7`4WuV+=D^{dF7v)wedHc_N>`JhNT=5x1e-!2e9n5t zoWr&7h(K#jT-!jAF-*mV1ZVb2x9gDZxg?Y-NLoCwDn-{3JI$AaL2LvQH>NKm5R4gI zRWJ>KSTho$FSoj5Z8W*z*K9PSHC2qazL&){TpB9alr#JPl=eT5|-azYVcC*7)Ff`DXK&SMM+ttV* z!rMu{fFbZZw!-`pou7ZjL@)qpm?gvop)`7s5!MG!n~_M``=?@l8HlV&YzSU3R5TvT z&brS0QoGfCL}$KopOcU1P81~s;UNS8<@rT)=JJIR6kPi$i|C~q5pTpvyZFlG9=hGQ zP*I_rs(_qk8K*A|mf`olz%&-(kC&81akmM_{ z;j*IBp`CZZ%{+Mj@DYgq=8;l-7Gpr0VaP0;0|rJ(M3S+zRcFz(5d$FrQk~I+S`5RE zJ?sY--|_YG#PLLdib1g5g4Lsf)e{OAquX~*WC8k1*Qc8#R4lM1d<8L0HlkPU5`*eA z1^SG%_cx7-)x0;9{-m{C_e9fdEKm@v^UDB-lA40}`{*1~nsjc{KPaw}lx<(5S`(VW z7nrZVLi0nJ?bPMzXCRV;kbaI}N~B^;Y@j;C^zgobN>6O57i;OXw`sN6q*PSow4V&M z%NVE2xK;>)`66=gRMlRSe_w%Ebo{`B;NPXi_WI{)KE;@kXawj%#+_qiFuXg{6N?xT zPX&7u-HbK&LxM4^)NXX&c~qalx%4}pLL}y}+0I$5MwuZx_#58&NFe>iqtoOTDz)&Y zEI2gsjp8xh$aMj!V9k0rp~t#6{^Hd8f@1@cbCD4V2M+O;)wsv5jR2(c4hcweKvrN1 z=D=OczQ$3b=G(K5!S#}-GP*Zun(!5%=I20ZP4PN%yQum(9JwL zBp~^5-Uv!)J>w3YKLKj;TO0I#zQZl8wEVl`#(J~nN&eT64eO@+pm6S}VExDyes}{g zg10CEsS5i`rKM$dLuO7a$$zd;?#8O{VheYRv{-V zc|T8(J;#ENv=h?!6igepED#U?g{KAY^kwkIhd^mg;v7J!EMyDTG0i$gdU+RQfABc) zJ&2k=f-)R}NltL-^>@RK)%~m;TQgMyJ^G;i(7ogE`)aju&#R9q9IH+VR zC*Zq5#nXXzS9hr%TYS(@NNtcculchU1H0Z!z^BB*@Q&^oiYQuf(&+U;8zp6Gzm62>v}G3 z7PiTeB(-TxsU$%DJPWOOsI#46B$9v)YwW;3VSZQ)Ba9k=87>Kz{2aXbPB;AU|K?0` z2$(}KQ9d=T9=ZxX8jjo(4liE@^IBBFF7_H zV#^i7OpL*}Ebu9d?Hy9lCo!ma6w8GSu^){;l{7mmNLQ|r4Jdc>LAWUvi6##L(I!kR znmZ@v>HsM{Aes|p#kxP%7f`)PG1UFk;Z+;3{Bu^&`<`v?t{*2+!~W``^_Prl0F0^g9xh=cW= zxh$DN3S$_f`}hY;4tsyNb>60tI<5L_gkzK542&bwZVL{Z?DQZ!mN&l5YOkk&lBrf(iAB?fu#gsfbKnt)J6LY!wv zEC?Vqx=am13PVz%>$;fC{`d_b=e?<*Lp!@Af)*JFP!H?C+=GgWM$zj3lGeux1sni~ z4Mp+-UBU~G%{d&wLrLX-al+x(nCDiP&-rQY2bt3~ryr-TKWv+_x{S|WgTb2w#1-kI zRkfYYoZ^eWo!e>`j<1C(H8ss8o}QdBHlO=6`CD2;6)KP_aUtPB&V_-{jc}O?%+i!V zJZ2vPG&i=B$o-5JUN6bA|cn1(3oT#6q|gF4=fn%##8d}I-cxfTskVs{MJ zh){T+d@4hfphy^+yqWEJ5JmXHE_LI?bwc>&-J9bI#tAUZBmW8+eysUc>!A?r>)`+x zcD(!Ni|#h@X*bqTXSH4oWL*VyVqyXg1wB*zudLHvS1Jf?ReCJ`ZdUH@er<*n9lI68 z9|!Q+JArdNYIQCJDKzTE;>qz2x(jC<0mTyGT!IUqlOOZhnvSTh8U4&p;~BFU-% zG&;SqDe@WWd zmZTe3q+Go2Cx1AJ4hRH1CDto3{ zHmzu8c0pxZthleZLFMJS#wJ-(82VJOl0lmShRjH3FSd6WkyKn&c=(xG=qeY*E0fF! z(Td{yTxm4?tpHGB&E$13Po9)|ES&itH#_tpdTeAZzU@9MUbih=`Rwl9wIPdq5O0JB zM%ZJSdkT^1dWkP9EgONX@x_x3;N*Fs#a{9_rlWhMTzG-AVu@l|0)wF{H=|WKO@VaX zO71T*M^2?wZ!LCyB~QdtLvHnn0Z=5Q^i(urxz+9!d4fW8g}mxR{H3?84S=Aa<03KF zKIDkq)`FCsja7%?rd8fDo!R4Sc#{1vG=4cNJbUE={bNT5A=tw?>c{-dOnqI(*kQ{D zSj>Of|8|PheXJT)teNX0b|(iw zw|+nR+T|{+b$m3$kr@ zcs`UY72*c_ilWA8z;S8WolRMsiTX$j#K10C7~L|i7Y?-6inBJ%W>s_X2GEeQ*wh3yK1wob0xI@6r=LuUhYvh!X-GFS9%Ek+0U zHUwdBjXjaGWK2I0@l+OSvGh*s+ZYyvjw|HADxE5SM)4<(m9mX~m&5CD>f7tLTw^S$ zW5JM(rx=Q-@FA<#!MOK*;Zjy?pXZO}fMBb$rPo{E+8bWhcp!vQMbp?|jiG9~Vohma&^j?c#k`c#pw;Bg#IIVU05ZA0XGc_f-cf^$pNpBpv`e(YlyncmrzWlNqTWU_7 z@T=zJzU-^8eed?hlwezSraSn4_pKT$p#(^Jqgjoaz?5-1yfV{J!6HZ&PIwKvQY>bT z1QEiW-5QG05wT)9?_WLmKUJ$o=X}|n;@cd|_dn>+Gc=UqG~ch9EggsK@`oR{j~-ku zH(KM^Z+4)Tn4y_MM){Ls-&CLx^&#`OB86dC(gURcxXDjx2ahJPg+h*XewT!vuN&DW z6?_kl{3-TTD^J{;w_?b>q^O|@>u^%6YW4d!?;bbO&e5f!=hMCJRv5yC0BI;VC5HE+ z?TPWj_#g@^0v-OK{Gwapzl;P(SV<{KF^5#S!O+>B43jil`oPoEhr5>n9CI(PH!ENF z%=o6g(1$lfeCj-A?DsCc_$5(e8+q*Mv_C)uaLG!AG{@IWjKj~h87F}2-MX7z!# zC72*;)J$bXt^#IzIs~I)3#}-8uR=Mi+Fc;CWSmF1dJ5YZh#DNeEd->;7#)Zg4&JxA zYyjXwsX)NJFQgqFXTzr-93(^?CITmy%M}MLWF~Di?KYACn+`wn+`w@iSXzX8u~ zfYu^47EvA{As?d~>6{O?+w}*xeb>IPt5Lp<%dHU9Ro2fJpM1{55%f!3!m88!Lj%+DkC z-~2g<($myCF~xm1BXV2*6@GjI+?=k5xOZTUII(54PXY(DC&9vRKJJ?s%H5Xs{@{s* z%M?hx6^$7DF8*jET?83K!y-sfhgKWo69jO|6zn&E{HH9%^v zL^#ROGccyOYG0oL+_8D>_9B3x{>7X^k3&aFGqllf^42{74*9|%wr!D3jojrr3LI|A z&hJC0k%+nGXt+*N{{_d+_|!PRBSJsKL51g8{MLT@Ep_dUjIip%sS)2=pwFfUj+M35 zmN!K|BMB**baVMc`!`yL-9%Z+uFvW8x@gc))4*)|PF$R|07~>Qpy5*2T|&@KSBA5$ zyy+VmP96pIiWCzP!6HVPGQQrnA^Pt=h@ZQh5$$`91R?Dx)JPA{qG@SqKMV~XfPtIT z5!e(+)O$GA2fts&ES@|shL-B;*7^;LVVN>mL%!JI4D9W@59fZAfS}T2Tk?|&V4dkG zeU^2800oZN1>+9COrcsrj41Oib;{1eam~QGM;CFN45H+S1VrYY24%4zT|}{L{LYBj z17}vXRTh=u^cQ}zeh#Il{tz6K+v=9lp&yLxoh)(kYLMi`q?r$l%gqLT=8$%Zw6qWW zE%Sr$iFDX^A(RA1)54MoqF&hpKhnUb{4J~W{#vHk=_AwJEq~8^|7C4=P|&XF$r>if zoaShzAWvMmw?wZKy>!8mAR8Yw4Pd+kZ#q{j-r?n_<=;)cc}AsWU{EhB&Rq0E^W){K_Hh|CgU4UnHcQdSi5(V~s)he$xigAbj- z)JWl_ebf8rcgd>TGn8Hg?S)ksZ-?2y2V}6_K#l0C+BTGy4QCA7CU_TOT-Y55o*RtX zeS5yAscPP~0NsGwQQ9I#%|B^%FfzjRa`0UkD&-&?&MlftY-1D+qQF#Sqbm$b^iouS zLBl|4&a7OvX?E6-K$E3~)jGeqVONumh0kU-Hb(^q?UdB0H)lP5wzhwKxVgCrX}LEp z$NO5G4o98#zF=HG@RTxJLZZ=w0Of3}^`_u{3@B*m+<1~p9HcNr^Xr7S`@U>*xNzXI zT<0Bem)yEN&b=?i?YakhO~;Lal=}A_JuBeozvQ>)^O`dSE2mWX6V%Z(p{9W8426Xw zX}cuj+K8&!Zjyl40m}X>Ey9pOxMd+dk9InfL1|9T#zz25y{=QXG-B3>JcHvj)m-H` z(9sP0l%j(X6BDy;Uv`Ob@nBc$_x0x|-zrWa#fHD9F^@RA)w^YT&U;$OsZfe=gDeF3 zN+>P&V(E{*#u?@Jt!R z*daX|aTBCbdEw_t7kIhZ^qfT zygP*cY>F(mI?)Qx7`-P_Q!ve9P{|Pv zv(EFOfERR?iD@I`KDPyi%-d0AdHofdWr;Jj6o2uDxAHnp``6F>*ddyBOPTKW?&FG% z2$IEc)dH-HsCbx6AVq`NaR4vx%_|m$)7~wb-(u;ODat(?<6s=j6t8^thmi?-p6ebr z{Yo!AzMju9A3mRbk>vMsM~nMK0N2(p1QZjapc=ti?JRNQ!5q=%m?CYug%!qf?(*R- z*zeK@W@ou5{P)y5-S$}bF7FAA=hv z5jA#<pEeBYd>#H{mt5jLn^JQ&-SjCgVD zGJah@GGOiU^oMNk^Zj=6uLyh4BHT~<`U@)#hLFV3hSmlNttXND&9wS%Z25ot*g_Q2cV3j4G})j;CghJN_Vf=Q)DLbsX+vHz za(VwP2U&8?>Eg;p`01RM-{m*Ug_n<8%RYZbW@cXqj%Z|6O*?w`aX*Lay$@fS|;{yS#XKE2u;V_4qeQ>wP=<(ejZa|KLtP5Wbw+}EVwz3w<&$DkOsUP*iTT^QvxTL4|8S`- zWklF9O*%Z|&4pj?@RwW82s28%FFNbm#WgiGJ-1#S>)jsR;SDI|VrShvHKu5BoAv`B zohFkWIasXMOTtU;@qpq&~N&!!@Ke=^cUTjI(&QmTfDcyX|^C?yTtd!cSCy17YoW&;5m^^Q*a; z-dhn!c=wKP-Eli(s)FaH$nBQVk|E;EB~|O%kN2+R0*cI%8R2yINWH6~)GfoazAw3rHMW{msU=)fx!NwN$v*r`dRb48?CUpI?5h}wD65MT^0nxpK$ z_6@{aIio^)yg3=*o)L}Vz#J*1Zall90;yN%I4$LRn2f+qK=aaFWX!o3h0WgY2c5nh zIu?}^Vnkri?ADLu!R7TZ%gib~SeqfX$A%N?hTrowya!1TzGX<|aKNF>MpNd`3tRbg zcv=*Q1QDco_@n%CN}jF8T8%mCutXZiZh_!ri1Ua;DeJ=_UZMqW--0_wtT9Fm z*&JorPY7STzwRNz^|aNS)1ewthZI5&vOX^5l=-*$1dobyxzP!nj%?@S?;g+BTxLG5LHj`q3dkN^w<>>^yOkRd^u^h> z+lR}P2laBD56^`ue4fy*yp1wS+nA|JZOm>@*IS*I*wmCmBrI+14h={;-&ab6Yrk)T ztA(BLy()l9c+EOPZbG~R8a`)l#Qk&0L|qSc?XDlvZ8KS7IAMG+vXOf$)DkE~nvGn( zK;n%GkcJ=Zl-Y}{UXdcQ)T6es+24xIShnxs3wsmF`I zpV)9UVwU{tbFD3WeZ>s|1}x0;x#@dsL}fd)qm>qxA>^W!%1P;4+mOhwV03G!p-MnT zG^QA%e~|O*X=e9#czg~o9s6p=0Wq;LMVQh#zTDd)b?|N8_~hG`Rv{S**zkQsnr7iu zA7ABQ#c#IkpXbJSu4Gjtq=L#(WrCfTspnLe2vDsuh>SgtEPW4VD4?~QAL~C-%gg95 z{cV@9(nn)`)or7Hh>92ahji0*!5kX{E`n3V62svLu{(sdr@U-1G6K?p0+GVk0qj}8 z-tk;{&gUE?sX(|IeJ7EDe)=uDV*A$@-4c`^XSelmouSTFobW<{7@xF`asASh50t(7Bj7*~0ku;fxd1#iBz%+c`$)cqj#0x6r$k?=A@ zU=;ee?=8AmV-$mW+ChB0R1;Q=g7Tul2UTMsa{T>QK=^62nBPZdk@_7yIuvw;iul>E zha&$THNSuQ%jyqX53OvS(-x;DymX!lcuiL$&zFZxcOL+j8HbvAN(5dvVs+YGq6knk zAU$*$hYNb`#;ul>mGvxr;$hau7j?d1QOWxdY;#B}u0&fRIjjF}^x9PZ&hoeSh*ce( zr{)5BT9)$Dzonii-Pimz1y0bi3O8eI>Co6HQ9%pIMXx*={GWAe!or}Py_VBWN zKMGZmOH2^JsO)I?#1l1fz=_;2VBPKR>aA$BOczY0B|S6cfL2kCw<=IeBf*?UKox|r z3zUHLYX(X=#m3oL)tyAU9bF!~3hEi^9l8tV;v`5$V1HpJirLJx;c>TeQ&3@L*W{cD=lc1q@o6Jv z1G$D+$@kH}<_Yowwxyo}K0e~}!$QpJJ%irSgo+o>D$o#_J}!P~eeCim`dLnkPK%@- zs&_5TFrq>~p-_-5s3bW{GBHKue>IrQ@9RlXS|d4k6deeLa*$!GGZLKRh~A_9?cNs| zH;S6%b#PC%=QTjrcrOPYh3p`UexB&RQ9f3$8nrSZ2>&$hKl+hlSXBP^ z!GQ$Y{lLn~N>seXPGdZg8sF9W9^?1vxR>?A-zlqe?Zcovqb zLia*hHPqIbVCdFWrpw(}4Ey$vCt)P>1~0n1=znscAosGEp(UXnjk%t%_{gfx*fa8$Of2()W9j_UmN=ASUm)V?JP8(S%>A-rfd zx3c;jv!KL^H-Z@f%k4L-stTpU+S4{EW7doJIJSI)UxE}~NSojC@4Q&7 zx25|Lj5*L+V4iWK%7|Q;ML@nwmR-|{*WuuWe(T75ut-i<8uw8HGn)LW~YG3CiwOED&fdi_P z{&{*_CPZ({nOj^L&R~xINmoK4J_n@{$A}OFc<~GuHib!?0q2DkM@O~rmWu}7au}H3 zuRE&PdKwX2Y0#3uy(cbNK5QgY!7g8>D)aHJ4p&Vkzc%ace-SNyy&vHheqGd4_2WWj z(9%?DxY~{LCKqb{Je)SATVz~YsKqGfCq?u8YQitoxGez+5wHv{&B`o+R8Ya0vzJ$`uU+76gD4hQm8=1 zDc6R$VD0=*DPIG{)vwcN4*aj~H18f-y5sm^YU-!X(u(Q^v4!IrEOXE%4Vf0NVS=mB^0iD4yg$UMc_#)dbX#7$=gG(-x*yH5OJ(Pg*FRLH3bF&{k-Obi8 zfMmXp1cJ}h7XtXDHZ<0m1xTROELY&@r)&M8M5#h*{TLZ{Yb3_>=tI}XyWcH6F=hEa z*zRl*&_a&V)x2B^`p`;(%w8NxBvVkFtpa7`A?#GX3YBCQTglD zo48{F`;K{ z{1ToXo5U<`0vRSIi5qrMR#u(+oFL-YK!mo(puwF+!LAd4H7Axv*iPCb(&(S zKya&1o!=wxQ-1yfKd+G&q4#sQnG?5ASh5LKvZ>{oHq9-azQmErTC?=O`2U65=1HXpEyZ z)UiWJKcS7Ctw8tb@Z6d062ICl(tro@9Fdklg*G}5BKDu;O2+39Pbqr@>(zQ5O{2C@ zcMf+0W)_?8tn0^wuYrMTB~Rk#PZ;bwLO3F^VPVJw=wqilC8%p`ylF1=`Tv9|VY?>w zQ)Hr7F*s(oQ+$eVFh|JotKKxiCLP~%xpuT}Nv@Yk@siJse6Ehp&90GatP-zoYRZ}t zb20MxUYCr3q&4@V53lq>461p5H^T|hzs0e}AB+;y-|48L=wxK>GRm8Hm=Hw^_ryd0 zHljY3|#w>33`*{_Nl4lms@Gt(yzoTBHjJ$j##6|{qt|g41uJC z-|-ymf3-W}Px_7>w3OP+JoB?-% z(?8VNV6mG)0Zx9yt9 zu+0fEm?QM~0YW^aMFYgIVUD64wa^hpj0Epy^%{f4LBUmvGuzQk+{J$vF6&rg`q+_8 z`MZg7-Sqz$xqT?nxc7$NN=Ce`J`#bFvZ}@Fl%pGwrgC^3jZ~>ROHnmAU z90qQ4JYH0aY}S2FMxB0p5aZPVfGn&#u4JF+sW&~IQ#&Bw{cqjeBK%Nli210#z$B0D za)TGQee0><=amMy7S66MGXRKl{~?a;*t36$rYDR9_{ez{9NRt{eacr5WX}) zTVl3kg;xKSE8+3dx1rz4*>z64-b$*7m-Ym@`!yh+YJ` zd^>GYv684`HZIvA#~}W8D^@VPn0hnuG3h$`;p@$u%`Y#cuT5~rRH-RVG%bHkjD1VQ zPzgN?D{Jx6*}%214RU2y)lqv&anl#Aam&d`9u6Vy5ZjVqC^e2GA6RBqnp67GB5762 z3^7;^w{cR8Q6C?s9-L?p0m;?vhsZ)?&x65@*G!*#oc-F-r&4ItTx{f{XFyJccasW% z07kvE>wTHxe@AdP*UjLEbx~|`p)kfI*XVhhC2?6>1zQ@)pNE;<(mHEgO+-m% z7>B~X&LqIiL+wEv=v$8($>Z0;ND>J*tM83uryEk5J7GDgAvRf&`j|`CVCnjuLwOoi zURx#0Z>A*~oJZpg=&rQ#Z@n;+%Sv_NS;Oz%05u~gPPH~b27{re%&7_=bKy;J2ZP0B zuGgP)2aXSGG_I1m^-`1wNefK!o;BZMWk@9D{`|(1XRwgU7(}PxfpdAOvH~s5lt-xm z1=j8f+Kbk#DLnIvMrSqiY(3#(Ez0`azyh(2^gW^NSsar>d(l_udL&%eL4I zeKTCT3Dpv}NJu*RAmb{K*n}mRQl=oqFO+9U>_a^{I zp$SuA(Cu5e2j)4EZ9$~4kj~N!6jaVgET_MQl_dq*BEqSGDcwqpMA%h z<$lIY&>yPwp$p@bYkK^MHl@*#3&LP`ogg;F5;;GXaH?o3z_%~(PqnwDjHT{MQ45~% z3ZC4EE?xT5M;A@t@AeqNjfa6?%G^qw*Gt!~ZY$?JW)N+Ta8Kmr1S{O!!ZlKf*Wmm+ zg|M`+*dC3eP?wwOQkIRoJifv(Sw2cENtC8qjsYOiJUprwhq;9y4qAjGcB>VUz})C} z7PG5IKc4jTnOmQ(00d~a+sZ+NAsf}7Q1UshsQ>{Hk!QP9g%Vza;oq>KFbh5N^?03y|uc`sUNFVl#h}-h+Zt9 zpAGt$8=#+{h9=s{sovh3a$A0DW?VhALIOz}`ONVQsHFHx+6sC?nv!i9svZxTeDBHN z-HE|x<1;bzEstGB+qXcV7@;`J1TbdzI%Rf7i#atwn>oGe9qSgqaiCRMgiZ^_Olr^% z4xUe0H437M^+`(q(zP3jibHzkH1v#7sF+%-09-}uvidp~p3`soOaq8}eJT{ab8!0foECS@Q-!`)xH^L!+GWA_5=?FFh5v{`F zH4tu8c72p=4XU+ZOt9CtjBl3f#8L-!HC87O1`AQvE=eOICofWcu{=Wcg1C;#BjIlo?l%Ar5h%gNCGY1G4B59}2 zX}Z2QXIY;qmP#MU=kpgF>7C8S!cgwsxt@oCE`TCOM>-OyoZIxNdTS)H?($Ye|ckP0 z;i^|H_qge9O6dc3K7UuSP`E8;+p3wh@(53?CN;uHj$b;SFK4M3L(Gz+Ba+ZeE<6A% z(@)73oyl44x>^&E3rHqRT}M8*vP6_TK{`g@`xrV7oZ;{p&+{JVoIk=je?EB()wI7G zfC#k+>H9u4O!I!jFg~8Q?VD`d-eTLfrC$UXD4#C1s~G$!QoVCoEhkh6OLf?J+A`KM zGUp%!x@!C8EDM%lK+`o?hLJfHZe<{R--qXUf$KPLyPo$li=uBtar~%hnmoDCeF0%qb zN9UDX?3TQaKmsvvTz5GP!{?$f{5I$O2b2&eiengtfu9#ZKnXES)13B$V7p-$zi64} z{g!2IwQbunRmbsS@_U!!tlnvA%#|2G6ov?VAFk&GVGtY%g5c38ioR!B)_fF(Z6QQN ziR}ISTmhmf)i=j=K`C8l8pf4z9PhMpx%U``aie9L*BYj2>beeHDf*-*_WTuZBE!~3 zu}m0Z=?X(X2o6M1v@h`emvqB86ougl#@JaqpI0hCQkv=K77*9-QvEE)b)oC}c1_c^ z6JRH$bhB<48%)!@QrEP#x?z;H%v`UgvMsVoB|p|~RWr6Mj??+xD2n=V9G?q=;6xn9 zry1u*Ip>Es=kswK&*v2gaU3IO+yCnU;(DH1OOub~jMX(w+h&;NPD;oo&iPuyFy?f_ zs8UL8N=TkiY7s&-LWo8H9r6PJVlG51gkVAl#u*DZ=Pu*ii=(I;MbQGG^c?5>SQLhb z80T+kn%2~Hxu6+E5o`s*{{}?U5UR0IP1C4hng%6A9}I_i(=_J{!)OT3Yb=h}5K60r zQi~E|5km3+62{MGoV!AZKyV%~&bzvKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z001?QNkld*E`*QEqR&m}tpHF?d zySh%*sr@@^{eElhwbvH+{N^`o&tVt_LWu6)T5EzJKnQ{3IC!3iQVPd$Xt!EO!$3-j z5CW}r_oq^dAPBH53#~O_7-HKttyT-$wy`XWTCIkZ63eoZmT3-!N{zHyt#QLJ78{0< z5<;Yb9FUDKr>3>8Dy14>7&ets8@B2mH^I8hXq|2Qj zX<0iOQm&AOvE1x=zs{rgP)c>*UnxbX6k!-X69mE2f#*G`w0_hy%{8v;-WvqLWHOoj z|A2G`%=i87Km1s03i$l zg81Qj9=_+T3xeQxN~!zW?e_JSWv%T1BBlI)50D@TP)aQ_4C9TC3&_ls3&cFv*BQL--|--ZVMq`Jgh7DkdHBAM=li&>i`#A&gCMxS-ELp2 zmAXsA#@_GwKN^tu0`~|0Igv;l<2X*vNhC-*4o)J0X;~2v@p%h;$0?l%nMeqVFFAnRzWZY)5@4G1ew+$JT+gH3YSD@xjYgy8 zw%b2)UH6l~!$BC5NF@ID0I_YGcDp@jS=NVB$>dqdbUK^KWFm`joGk+3ZCFopa+1ma zypxHa+(~KE2HaXL8vM2!0iiTVfiO&jVIYin5JH6xLv$E`(nu*VEE^-?ATwEG)(rPxT)$0#^MUieXuiWK{~SR5X6lK$r&7Fp;){;n*0q1EzrxGnNzI(yO)#}f~AUGii zf=887FC0L8-$zRMu1qHLui0#NG@HwjPN%y((REL)7EfJwEx-G>E2yl04i$u$nM?#k z3<63aEej)=#7HDClPSz}Is$<>5bQjj-&aLaRckaF<+%in20^QdYPShmEtKzrln5!& zQlfmHpk7Cs2Dv3m+5JPOu;PgKLo(U@4q9uPjRv(Cm|C?uQLooe48!n--hlG221pPD z7>03LHk-XPo6C{QSbOOgdG4ooW90K#i9|f88lj@EYa|kwnGAL= zhndbIOcS9sT4@A&W}vt08+OhV2r1A)po4&*QNycN3F>vib{mb3EiDdQ+ik*9i6sZU zo;^=Li{UrEsb6usF7;ZCYOO}STBTa6o$mYoWgXZ2R{=yRg<%+<$mMbu=5jf*xg54_ z_v`#hg|!!5$Ya-COS@VnxoA;jEh-{gAthEei=7|BOlL40Cjv7J`vzb9sr)euBoPOE zq3aSf>UgCheyxU93N1xsH9&LYMv}Q4J0J0W_PF4a7y|=+F-)ymrBTx@DNryjR+&xBn=}5 zB9E2HB262JqT%^Sd_e)}JTIbw2Z0Ja{CW+qRKly(q8maAFbup#onX4elGnV3{XTaI zx&2={1By~KVnAY0uJAnX)Lu~j?0{&kF)iz>1G(Hu1A~KPvRTad`3@M*Ui}Ro{LCk4 zluFoxd8A>0QV69mQ)v=~QLMoMgp8iwnl)_eb9#FKnPoLdiB=(gxk7t#0>9aao|6I{ zD!g)uRDO{C&i^D!kN#kv3TrePR4WxK)hd;8`CmNGJGqlC`m+Kegut?_Pv-^(F387V z7_-1w_lfg)=#q<(Lj|ma(*;6W7S7Nx_V6%iT0sUPCeE3d>EAH{SWP$5EV%yfpt*dpv)E{>|hIRh%U6Ob+4 z^E7L2cx{Jc{A!i<=8gD`dhFs1eAmU>G{NpCoWQ=9|Jxi;%9RS$N`+FXbeiXR zm(Mp%@FxM%c{3rzI|l~`Z^-BKWOF%8)0_dr_qgvvAK(wyeHVLl4AZtD4wme}K@wx* z7|A4rs?RFKJOe1^7fXLahIi|hqcBd`TWSh;9x(22R`?o za14L=-`9~`v^Yw&hau81NQ{n=7%4LHwx~r3^?D~n%&Sb7VkK*)nWGThsWo_3z zeQT3$;=X(DeO~8lTGpYtT<-Rvp&_!lT;EjebKm|Z_ndq@#_$N1<3w)CG)XO9f|DQW zrZ2=6T#*n0?fV3^DrP2&;W%Bl_Lr~_4G1Zt;ILl9%;pfbg;siAaOg=;wo65t8`h(P z0BsnAu1h#Q#mm0>HI^K8Z1>zoqd}=yq+BjjE|(7rf?(D25&RYbiTzzBlg-{UJT$ah zerTvqQPtNxz<<5-ZL|Xq%XT2RUTpK9RSp~1d6!-zWcTah-KR!AI|4LIW#;>BAM)h z5!UPc>YZ<4^1gdXjEqE<0VKv3ksKY58B_K1MekiMCAv{ZNP`upoWaPUZ>IdSpYp^P zK7)4K7}?x{MeF)`Qt@H6f=s2^;jHt>zxuUIuKE#AU-qTwvr?%@QOy&-bhE`m(AvC- z)~1co^M*ltYKpO!yp)&U_#=!=rkn38PES)Rl_(aA7rL(dsV%uK@xX6?yCpz&&t|i~ z85tSLC$dQJ|8cL*hQ#%9kgP_>1Q)?*v!Px z#yf9k{iR>RR0^3+ci(4wctmdtAW{<6YDmXn#Tn<2Kj`({|82PCMmBuq%Lvm#rqfYb z(U!PJM3H^-x##doMU<3irD$*1z#gZb#%>p1+I?-a(O_zNn&R|yy;`ll3|KoaAP+w9 zz}$(WXiofwd_Moq;gOL(iCg)vpYzLiy&Yvp>{J@U5F?!?vut@BXM}yhS+C5E+*AXC zkR8rCm*F?PdCq5Vy8BKxe(7RNrMh?N0xI3;8X66-EOt2WLIz%W;GEYzcgqcIzT#4( zZ6lINRBS1o@1=Uk9>XAPwP-&341S{#<-VE?WT-gshFckU<*U16S}GPP7K@Zhr5jtV z*1P7jk~x6rh=gC38yx(vk&zK2lgZ4us%nLM-}`rL`sFW3E?U&(jr58YSh<02^gSOK z#9#;^S#iqg3?KHkEe_nqyY67~rC-4C{l3||g>YFxt%i|Ivh3{h894B@TRd<5P1m#O z%CAHvOvzL{ufn`8Oc(}Ur9$(Wr%_=DhCy@VM#f)tATRs=O~_o7A#S%?OixcUT`Y#x zO68SGso%`zk~x4VrEn67>qbUK{xP4=N6~mZ80)|NE$%<*gE&i;B9ua-NR5t@SiGd0 zAQbaN;6h5mMjasp%Rl@PhTr_Qtq$a-RX<|liZ5dX0V0#>zV{yuh?Eg$B$6!o$k`0O z?hRW#cLo##nMy?yXt9Op*;B(((%i5fck?C?5+x<>`saAbzkGuwM}43>M_(zIDNau_ zH8u6`?RNW!*;djANE~16JuoovtC5kBR3$y~B$l zxf+Jud{iHIbT}gnS#jn$49!zautiW-uVV7jFJPh}mF@LB&^pFmc`PKo=@&I z2W|8D>u@87kGnpvzmV(sM zkg*B{CNzekg0SuAbJ}~UBs@kUPIarOV0in z*;l`2yRTvW%{Q?5tCu1z8<9xNA^DEQNW-LEoTB;MGiasJ2*O64JR^WcNMIji^Q^Z9E=M@O-G@>S1$?W;U=_D3*>N21DbAxJJ;j*}lk z#IB0j77~P*$pnjzIiCEXZ~l`N(&kk^rgZrwm|+N+%p6HP2MZ|)YgL4kV9}XplR4-O zfATeKy!9q3*Ii4{Y7xc}`y5GZ7`UY(&1av9mNzIxFg3+KpZ_vTPdK@2CDT(=OifKu zEEbPcN?qH{sCQhJ)|yl%vwC!7C}~qC?-xe&7CHS2fmaH6|t}nVz1$vr(@f z(goz9HEVhU!Fxu>#?qYxq7Z`e-FI>Cdk;rvvzRde=@lzT42__AxMQ}=)q#(h$+GCg zQyF;mYZnfbJ6BQu@)t3K0Fh45`x;fNArcA3&bff}0)F-%Zo7rM&pMqE+h&)QE2A5) zhva8uaKt5zr=RWuBx*HY`u&?3eEl1{iN~qQNv5Wz8kI`r04e3#uFBF{V_DYu!^6WD z4Gj%p^;C{L`GwE$=!F-MS-y-+7!V|qSUc{7;lvYAvn6iNU8-wUupNd@I*mn#y=B1$ zX7j2aQN7~JSiTRLp4^uZsA?6FOfq`L*`#0hh6Ve~-`{vWcb$47&1#k1_t=9S7A=Z% zTY6r_6}TS$laFJz+tdw%`ZLe6=O-^>$B&-hP0yE0rHiBgJGI(_rl z=;%8J1_!(I9Ny+l-1qiFsBPRtBH^$|dAOtFc#D=}=%_kmJ`3qhAgWpoWmycLb{2~c zIdtJHW%cdUF8va=Qs{IV0fhA$!nPSX>par0ecgh6))POxnL9po9F0nuJ@?v+m5Udn zh$>F>JTs132$YoA>z~1y*vtmQqV2j2jE}Sbt*f!e#?e5dR%3E%imA!TTN;hV;ZjP( zqmMj77=}aXbo$q$qoX^edm{7Nng{sx8(xKxA10$iMr?szz615l5IP7jX3dA|o;YL% z7=dUu34~zi%ySrf;~@(+P?LAxN&Sl#V`)vO6~eM8ocnQ-uUa_Hc=AWLvg-H`&~7x? zW4GN{xnv0{ChK0=+e_>rAWV~Nt%!K~DJFeQ%`i~KXaN>8U9uCnq0o zHk&Uu45KL4Joq3|%0mb9`5%vrjEGJxF2J*weTmFtz}yt7|ED-9h~epTaT>hR^>rsRI{~Gj6$&J5D+tui0eJ z-FIi_@kIn$5%h=&HBTxf1QMnoLx}(QAE;OBOd2MBt;+6ae~e{uOcDeE#bS}EsVQA9 zmEIhN;VNM#EfYmPmVpw(i)G8k}7td%<<(n*AjQtXYUKq-L~bFE^FZcGSdtA#HhbH+K0E+D5Y z2!a3jhum@8(YUQPd+)j{yDeHopmd+S)w9wjh#4>pLz7NugaWM%bfZD=#FLc0fU+N8 zCX?*@&1=ZL>b2ddeL4c<7ry5mEY_`Cw>056zZo4HTa@gX72I&eB|QGc&!TOIVFNO$ z1ja7AAWQ*LBMb-vXf(9Rw|`14bUN=Bsx%pzyCe8W}9iH5uVG=XPw95Q_kqdBh%B< zOioU2aNF&di!~2ExOaYNXwBHzSl>j{6K9>uGuM0*D>q19YSQ@}#*RBiBWgtEAWZOE z0dG%VO}0UuXO+e;rVsxa}71_|OMw)f?=+beug`EP-SOr6oF4-J&`@ z3z+V63QSvLXEj>IGOGiK7KG2Or#&%AQAk=76D#o9 z_@Rf6DijJ=508xWRh2yazV|Ts!<)&CkCPK2_Oc}yqodKM8PO;U1BlJjuLx8iFyuT| z(Rr;DXtzyJnnu;j5V+COv_=)rvdLfkb;jQM&cCdiy5&ahJn48m*JrQM96OsDB~5g8 z0CR8%;UpoXTN`&kwW2LhK7eR;zcR~c<4QEr+DWbWJgCMKz3Y#92x=#0T`&MY22rt zrX~z36B7&{{3iDKk6XKdRI61cCnlJhnmS3Wee}_f77B&W=ZA)7*2noC4$w4Cut!UolZup}etD`&t^fr~0m5|)b*avdOgBTFfuRw78G z7`W&gj30LRU%*WrN3-5wuf>Dxmeyz;)q;1}TZbAUO^ksdd z(0+W*e1Me7cz<|;nlPvqrx|?t|6-q;Z%0@*8mPs9OixdrEq=Fd-KPtM!Udg_J3z2` z6Oa7E;nW^^nC##n8L6;#+6iMIhbEW{NauG0XhK+)2r0mXu+=1-+60X%TIvW4`g1Iz z6Tlb}(Wu}V4ucn6&DfjX_Gba($shlaRmUBJ+xFOVNse98Dk{oXbCOaJL_o=O4s&E2 znM|R5qC8$+A(D}0bV2NJhz5da`9fH(;y?a4H4JLy64^cXVz2*wGv?TM6pPgB9SgZg z{BGU4%L;|Usl9--A6v(|e||5`XPzRH&61W1YnNRxav8LK9zbNIz=SIaE0VBUC79j_ z?K+q;vI5a_PH$-6AslHyql~9C`A>YEv9}+wpkO@qgMa6alTIMeu=!)<2|+s)pQYd?2>w|LiU9AqL=&)RHKX#nvsuxo!na%7Lav6 z_;>C;`2h`*R{%&9W2~$$XIwFwzb(zZjX$ zM*xQUc>pm8D>eMz|DHyV%i3d0E^FP|wI3}M3ZEa$=V$s;`5uoPei*f1|2OHOVUi-m z-f1OrZ~(Rhh#^1Lo-n&FF>SB=h<|FR4$i zzM0aej>YntkjX=+XWUiSGDJ7X6G@HCsOYBi6c{$<$WmlB9|02Tt&)0E7}R4@-{a=n zyQ{8hwb~4+uYL5<6AOjHzjRbqNA~{iJ#VLc=N+U9qaOoujf0RI^67 z`DwJ@0@H}N!2%&Qx+zf2C~_qh09_6-Bw=+LnMyHw{=bnq`0xKBvUl@sKcM>g6EVFe zWQHJAGoWUP3+#0 zz5OcdB=P7Yj~q2pC|uo*L*l^j_y6=BinrcOYHXZ@2(ecz!zhf*8;4*>gmUpVK8dGOz#328I*2-$?nh$6|#Zr1DX1a;%!9 zqaYRK?Q|$&R}=#hMwK-(mBSoc0j2|ingE#3!g<=4vq;{Hi^CSE|F5|Bo{3M-LB!Ue*&%i$W_Hsc7|Vi zEF`wBNZL*#Q%QzD{B_c=dG8A%{XVh!2h{%cIIN(BP7Xn!VqWNRSF-_8fEOSQ2Xo1b zAd%_v2}(k!@gMs=Ub96z&?w(!$w$v)G)}*VVaW9KG!qjOQTlz|x^)T1w(lGr8#}PK z9;@-o|HG3XI1<%rVcP~)!ops;5|K(oc_>pNv?AF26hUPgVVluhNgU{P`9<`CqQR7? zRvBsA6wbbe)c-o17t%3t_bt>eJrXPQ(9S@lzIxnMWEHclCD7nUuFD)>9^HMR1})Kz zHvS*}faeCdet=9S+3{P~kclU#T-WVb$S*w4J6JsY@WUkHDco!}JJac>(crOzUV*o9 zBUZw}vcOul46`tT7GXrjrAhqF&wwEimgtYZjUKlpbi^w{qnc$zGD+d1SCKyOoxBi_ z&3E2J?b2f+Nu0{}0T2;-4>&4{1W+37Ypn5Q$l+1&G(t#%i7EW&p2ZIZeyfeOXc4>q z^jFaeF`(IOMwKU>DclEs`&$x;#My<>(Tnr>{7my;t$Fethtjz3UaVvaL-?3u1?(Mm zjDo|^!+-V(l-ER9az@JbMBu{cnG7)nx?V)2Qxwj)lJx5qPTD^9gMTMfu=_v!;{q1r z{Rg$nj>mKxkQ$Ei?DGKwaE5{Ln)fhH>c7(9n;EhlhpH(;IQ(vM;gu;;0PBP(DUJi@o#C2q_4P zn+Yb?gC!A0hvZ{GI%)UL^M-+Hl#mIB!Z}|jebBoXu!!vzesuKvk%s2*Yp-R=n+{(< zqQ8O4B_G5JJV*{klDNYkFe86sm!<P6K@8Ys@rAg-a?@@T| z!lhg$?z)xgXOF@RTu2V|=dHTdA!gzaUm;`yd*yDZMicMJCs3{;lm>ojnw{_dCCRu@ z&i8$a#Uc|E6OXrBt*B7$p*3qzN|8>dZyp;Pdq*al?E>O&-o#UHJA`24Cd`C`&>rTp zrHF)0u;Hm_I@ah(iHKQl%K%j`Vx%(^KK2dLuU$B48x^sA2)EH@|CglLZKaQHR%ixE zG9S2#(Kjxf6;9l76V;19h-}pn>EXETcz@2SYbk+72VgB(fo{75&#gyEo1pDtE*fXY zAFjrVb6A~d4A5i|>N!{F+4pcWb>7N53O4Zv5gqEmU3oQ-W&pgZ6r!HbN zF1FS{y;_Zm8;ZpXT-S|?t=Fwx8&!=fwRXpMQ%OX-j29-zp8Q=3uU|M$ zdH7?eA+P@m>B1Oc*puS|@O#rNopipye{Lh$!`{N;o&`Iu>qZI1si`|_y$g2Mu3g(@ zd@1Gohlhr)85$l&_9PlhU;8SX&;1C-=rGbWA`|V-nd>e%k-Lfk(mqBeP5#7Bl6%LI z3*e@1VD*Qif`t9|&9M6lFPiC_U3%V~>5|YW;mI`F6TZ&qA%A+|#Muu#NJ;u5mooOAqyOlRK2O|wGk2VH z0`+p8{r1hW=MF*SA;K-6qvN}iMiJl0l0E4vMi2hu-PhXhe4C$q^bCAIWZz{OR;Dy6 zjLUvH?kW)dvy29)Vi|LXo!Md4PrD5S!Z7Tto~o8hrJXcPb^&=fc3B-z5{bkWg+k%O z1A~Lzn@#}5uY8HAOFoS;n2F_{m;t2Mg&8xIjTi#jHNr3;bI!jp{_Z2U8;KfVRtjuVF zK=jvO1#uFx^LKn>s!E;VGe5@gDQ9-ave9UC7JYuD-D;gePftei=p&EBRxaXx>tgSL z!NFe@3WZc}X=zv~^UPtdA}nn}q>|8z)?s&5m8tvZNjmf8rbM(W1b#r~+$*;WlqYVv ziB%^akK1;6@g5m=TjCKa5w%X*+M8(61x5=4(JbTX1liNR#n>U+p0ZhY-8I~C@<|BO zWZz{OUX)SW01l{T3v+0k<+uM5Bfh~qo#u*DQ_WJj{0go0L%ph2 ztbO#+z6(%Fkw_%28z~h2F`LVEo2&?+{M~P{`K)6xmn{KLM|0&ykLxn#aa{ti4Mej- zpdoYS<&1BG`-;|QoJ_OUV81;F*kh?5-H73~HN@0WQ)kVNFh{bx2Xe#ti&{O4o4W7upqyR9``*PYv1 zV>TdKYlM_98ypz;uc46eCUHTstxwtJ;xr4LbQmB*g7eFw!uQwT=%8xC44hO_ROmoKV-}9 zYwdTx&0S}lP7rGLTb^O3tRf5{>;!?GXx;Bwx#NSdfV3c3zme1duV(SLZ|=4y55tgh zv_L1URw}R5TF-4hGaHZ|E4g8KWaOQ>S#AAVzxoBw9rad3LLi+KsusVY(WAOLpc}EJ z(BYXF6yGOv-q#p^*Zb#y^3;!S{>EeeV2oo6ak#1?vM%(jZ&{{5Z4 zO2ox@!XbCwHH^LSZS$z9@38vh4}oE_@6t3YvzkzeNJND6TSrG#1<_~7tVXq(XjilJ z+S^FJ;=noFQ7V;gY`5FJrh(jtoXSylXYqd^CxeGnd`;?s3mZN)By|Q;UmjIb;Hha%Vp|D#z zo$hN7>puJd>p$>jwDb_R17(eJC0Lz$E8PWX#(niHK$HU98g_n|+RG2;=hy$3>V}Q% zyJME!M^*Rx_YHct5BN5;0}^7U^;;j0#L7#H$YSbcRwgUuHnhcPycv>enlXiv<5BKwtBcW#}T;%Y;=xaA`2 z{2`L*1iR+Lp0#^=rkIZBv5Kw5BJ|Yk>RHwzB+_rwm@2U@9APkJu}enbhjFZ<`pZgn zXD%e10YeUf@?65r(~N%V8w|eh*gjWPDVLd^o~Bl-9p=04D%I13dYfFxpa7V z__Tppt_xuL3+FO*<;7Ubh7r;xoD|>*aAtwhJ8{+HzO;z86;z#yqWLUC=)NUc+l)uw z`ZF=hg5m*=r(sQ^s9TE2dcuHyl{VW=`G5sRL8C(#|Ji9qPCSR$<0JtttOj0f`SMl}i0|czE~~ojzKom!-w?a!X%PwFXHP;3?Jrd>?^pApUN0SRpJ3p4mw5 z-N!NZ*{}7DO{>-FbhiFgqtQ4>DdjE*AW}*U)7&MQO#X6cXlNvrO7(rP_5&u)J(B7j z*I_OhM}z`3DNwB$_ti)Cy$cX!&-##F0D8fjEp7kEq*&Kt`Uomcq0^(HdS25zf8OPc zq(&B^8na--CbDljg0YLQL0B_&ZJy^*ER`siN>lAt>s7w*Ki1h=?|A`vJ`U+sUGdL% z=JWX*@7XV-)uKwq?!1XHldkVwA=+1=0?gk{bK7Na zA8*hz$a+?uYaUCP!xtTC8-UCxtRYT5o|@0+FB=#bm_zaa6BkDA%UCjmux!+{K$T;1u$Z-CYS!Iu%v!|L z7Yxqh!nW3pUvKH>JU~F-@`FAX<;Mm+sE|XTgEql)B?jJe9HXD=cT+(aQmqh#lp{E1E_H6i~=k0?rD`@PHcCQ>(J<)egAqxs@ML1nXIztQ{ z_bCS6d)&NWlq(e~mCC>PzJGEjfAwbvL`aF!8p|*)9~>M!B{wk8-M_F`eYMxz!}MjR z(|YKanBy6Qok3MJYRW*jI!mH^()Jx}cT+*o-R7uLtzHrM{;8d8$6pMP?p}t5@rl8~!3(pwT;IO8 zorpfHR486~0rk~aqk{(K_$c@gPDxZ*qFZs*qpkaQ+!2~BHsso7Sv3!TgdOXd6(IW2 zyoN}sh%1IQ*br{o3`U0Rn~rAa#7|@724*%*79wg@742V0wOZ}lSn@9p2!IL#q+y(v z%jGW34GhpLiF;jG^B1cqfA4d&9{d?bA%jfWXx~7WWCTvbh$>eMJvWg!Uqh~~rA|6I zEHz8^ihd>43HW46VGM`JyaG$18Xl@xBeBnG7<}Kkq+WgK91q~RZg)e;TCH|^7zCHe z&i=oDEkLx^1ip_U<-0Pu+`r~>xzThc6K!KL%UX1^MeVk$soZcGVeMHkeB?j|JPTcw zgyooH!kM19ecUo{khmT0D&`8I=&o~-S&htx$gBp-Lsc8-z{1QeW8mGVk$vk?h*YxA zDzw(LS}m%T3bk5oqE@S&sFb>)cZ>4BDj;DHfDqWWy{BmyR}Kse9GK2#u`O#}YYEFm zYPWoo`hQ-7zy47$!5ql}Ho66>EKyY>T4fagzMQFaF?v;)o*xh`W+ZKA1#M@&qoom! zMh=9?L4|NY3!iYR0s&Zy_ayWB_me&RSd77;IaU#dA&q*SYOO}CTK#zt1Sfc&_h@Hq zUNC?NDRCSJFW%rjlg*xy%jHO=QuJ*>8e0p1s@JLAd?l?%|C82zcY^XU3Mqu0j0V~R zT@$FfM7t90M>BNV6Ell1duIk^kDNAiH2AhgSRfpY$f#(+zZC=Lw(zH#2*V<^-@zpI zdL7xrPe8_-5cF9E;I>+w&F!hzYL|pcU0_*O+jZUU_JS`gKoSXj*Ch-?EZaWJwye+Q za=90$(rIkl?mMT~Vzh$RFMf#kk#FJQSGfCKr6&3>`eL%N8s$RKgn0Wt(%FSeSN;~(`+_r)N0h~ z^#?r9JJ0jH+fCENG)-RcfW(^@eiS z9NWGykx0BHoyjDV$z&Aa&jO~`okcN0fcD$C>+ZvS^w$IvPobL=AUt&FqM9{ytATb~ z(dkYSkxV0#S%m3;vJvS~%+Vci_INqYZZAPt34~?#^ZqO#!Wf8Vvq_`TXtmnyA9=3( zN#Nly3?tXd6Rn`$?gXMZmUJ3)xvY#YOB?{ zN^AWct@Zt#>rqPm&jh4{i?v zq#y|JeV@ShX}8<7TdkrO1oyk`_O+o>cNtP{oPA^bj|W6+jUNP*D+VI?wlir?tM% zYqzgAOmnT)nji@J`0f8GK!Pyr0uqKHre)D;HZd)$U|H5nRT%CgrQE|b%^eNHSRoB# zc?TF7&oRul9;H;Y@1RnsFvJf-R2V)JgyGYH?>`wT^{A9`P2l_Y20<{HOeXO>uiI86 zh;Ner4@eA%+ipiL%d%)T8VDgUEh}l7=8#fq#BH_44bxmKgh&Y?(n5$F&}qqCQ%Y5} z)(xdpGYrEGPBOVk3NhvTelhUU8P*7-ZbZ>KLZ*U+lnSp_Ufq@}0xwybFAi#%#fq@|}KQEO56)-X|e7nZL z$iTqBa9P*U#mSX{G{Bl%P*lRez;J+pfx##xwK$o9f#C}S14DXwNkIt%17i#W1A|CX zc0maP17iUL1A|C*NRTrF17iyV0~1e4YDEbH0|SF|enDkXW_m`6f}y3QrGjHhep0GJ zaAk2xYHqQDXI^rCQ9*uDVo7QW0|Nup4h9AW240u^5(W3f%sd4n162kpgNVo|1qcff zJ_s=cNG>fZg9jx8g8+j9g8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCG zm^qSpA@ds+OO_6nTdaDlt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JW@PU zd4+f<@d@)yL(o<5icqT158+-B6_LH7;i6x}CW#w~Uy-Pgl#@Irl`kzV zeL|*8R$ca%T%Wv){2zs_iiJvgN^h0dsuZZ2sQy$tsNSU!s;Q*;LF<6_B%M@UD?LHI zSNcZ`78uqV#TeU~$eS{ozBIdFzSClfs*^S+dw;4dus<{M;#|MXC)T}S9v!D zcV!QCPhBq)ZyO(X-(bH4|NMaZz==UigLj2o41F2S6d@OB6%`R(5i>J(Puzn9wnW{e zu;hl6HK{k#IWjCVGqdJqU(99Cv(K+6*i`tgSi2;vbXD1#3jNBGs$DgVwO(~o>mN4i zHPtkqZIx>)Y(Ls5-Br|mx>vQYvH$Kwn@O`L|D75??eGkZnfg$5<;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e z{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRa5QAtEWRCwBS&!Gy!a1h7w@2!XfQG5%r zY4izvfECl4BBJ0+m;|*fn-pBO3kES5EIxuw6k&qpXAt&Z*nZdUa~yY`C@PP_cmP)} zg!C|(CPbVZL0fBW1hCRjUq|=MnmQFqj%Gj=NDvR+EF7H$FB0Gbz*Z^!8|AzU`&PSw z;o}2vu#`qT8`=3dNXa0V_rMdGR9`B_mm@ z9sD>@qZH9tyK$hjq@0-R4%Bj(aB_BA+E`|I9DKj4FD-ozPrZA;KF`zhd4H-ZXY`-- zX2_7?20x>uNzFY**9 zP@rhonsrbUYC&?PJg+?S&Ij;Tp1WA-OT+d|kF<*^)>DU2#XWXI83>Nah**#|76{jx zh$7Ts$5X!fWHZi^wTlA>PGgEKabB8Mf1q<1z;k-b%inhqQqn22lBKW9)H?Qt5@8va zSicRiA}(Aw@sebR71mJsIUy!l=Kv2av>3=YujLaGMI6QP&(jwF;Xz$c@t~(5O;YH# zhc1G2SfwDyEb$^31{yA21Wg1J1q1)$p^b=&Fc3V|Ns!b+1zADaf21bGPTqwNpB)LY=%9^@G=y}Zq_yMtb73OynP5olKq~QUqO1ZH zO+5_SkuZDQ0KiQuzxc;KOXQmPHp!8X|5^Q7sVN8>B$7`oiZE)XRq0#x+q+WPVV7+b zSh5sXf1Y8~(Hx5x^Vq2h%Gc<~eW{Q!GdG6>Ab}(^txlRFdw-P|WSa?V2#HuVzefQf z`zie#lC9AV|3GiiVn>oJXE=orBxpy3E#|~1rQGs!(05$jf5{^2tYQm%5%1G>DLTmf zYwWyy=%QZSe{RcfByz$Sv4Q(z96>ySDa_d{j2UxlmHx2B!EtmP`StpvqdKR4m1FWg|Gn???z`vme!tJ_ z0rhnYS$0eCe+lxm*~~m5o@wN>g!!bCMjG>sqFP%vYgj`nE0{zQhe_b7lek;RyVFP- z@g*2V4RzE|OW85kb1Q-mRRqvT5TSpbE^mq#ma0o?nL4F>BSWzMkDw=S@ z3Gb{XbtK;Zld>8JqX+&@sx66d;BcFhTtIqK!5DgD4!9>B5tD&n{0Rht@Ffrn8ub9y zw-QqOooe>#gD5N{a+Z_4q2IICx)($cLKM{~8ga0ldThW~zGG?jI}!1iZ4`0FO+LI_ zHSvAiyWQu_N7Z8Weq*UQflX_vb&h&<=gIa@Qv&os zVh`Rb{hVrx7D6##!O9P;d;#hhjC%&{SQ*kLnY9xtHeI<>!18#Be>i=t6sG zct!!qoYzUxVAYq+Ok*P^eUOuEC7;R?_#JpD50hUzKZaePdM~Ot zB(btsrjM&4kYPB8+2`sLnXjm%0W0Z}EQ@47lGPLW{fVG(@C^-(8ELKGffq5Fk+DP) z;`Hp|V;teMq0D7GE4j`I3dtmsEV9_p(4xJKqDc}NWRS%s@+jmKFBt6{w^~N7|20Vb ztM!Xr^N)$TjN|z0dmJ91oF_j5N~vYAC^wjBw91jDMVn1?{1^>uVp=IOW-DFTh9pd< z{!y}~OiDCwiiC}5$cnNl`>`KQ0aa zJ3){zjEK0=p+jO=*82PMetP(ea3F-Kh=GGh+($|GCaF8yfQv^+L7yh0PVothFo=i= zbJteM@?=n8AQF%9vD6a{M~>Dvn&{*P-OtE-^>Y&uUBp4j9tW2i4(I9v0h!4hFU{&q zJ1z~S?~%UPrBJ-2Grx4L+15K+-fI3nCkzp{j~bWrT@{Zv36dE{w>w9`&2YgPp^tsXEC?=73DqKYbQkcWvO zj^wV44HG*o!ZF}x2BGwOVtlV~nO=IlVy_CwUP4G9jOq$QoA%@e449aX8$AL>hOjb- z1elE%5i#+jO#0IKvy)FL-~vC;Fk3l!kcV(S;Pv@eR!tjpa)NxWj&;)l zJtn@!#;<<0;g}E*De;8Uev$!EHr268fkv(pr8sC*{KP~p9~~SuO)z2Du<#HP>#^g& zj)8M@D#p2j9ki>SWPTu_K`k4b4%At`l$uxSnNA!cq3CfV(S{wJSFv<3!{^S>aJbYW0)%l z7a@q;LdO7ofZOw)sHCAT&S>sHt78n1TUfDUVaU(63vu1e7(c8U7s4hGnC_TJ+#vYw zfoReH2GzAlG*56|zd~e-)|f-8Mx3LGk#kNHB=6BIp-5P6$j+1xdKJCQzeCAX1cbQy zsI<@=GCc*8PUA( zm9l;X0@>`PlqV3lq-cMA^Pl9=qw>$n^e!vQC}x)Txlx|#*~oT&R&CqAJ&6Y>C5oQ0 zKo+qNBNh^QZc_1g>8aU>6tdmtVMqZo6B|=WU{>$s{Gny>p_d~GCzu3nkaEf?XT=-t zh{?KLd0mapj2W{wNEv06v7`1*y!&}~DygK7$Gc*BOJ15R#Cai%L=t7Pp^CNwnJ3;} z>9e-7Y+-edlIa>RX2gH%w_mRbQ*dCzhHd-*W#(wsL$Bj3N1pVJ4Yw08XoV?Ex*5ag>`K#A0n$odfXd@uP zeLF^4o7c_kMu(0r?22=0T6YC?oJC@Uq|m#SJ`6~R-16wzzG?2!r&&M> z(Vi`HM?p(s3LzM<6Wiyz)&-SLoVbWn{YYX0QdBZ8@*O+a&0+RYN(m)w;bx@U=OJj@ zG$hC4{r$=L?%e0Q_rC9a-}`GxrGf*t>*(~F_>s# zh+_tc^yO79a)2XMYAqg~X@0CTq5=+)LmuBbWM*4@cISts{UlJV`#83gJo3pWk6V1p zRV=mNHvjNTOQ3QLRZBkEXepri?PmF_KTE^EfC_*E{Q34-gxH z2;Z!fo&UTW)(nY6OCDC5p+`p(iv6;N*Y$kP5KW8cc!mgiP(dkbxK{z8OHWNcV(Ju7 zuiT0v5Q&;lG{d*a8AaDd=k{HEZo0g*PLB?6ia0|$SMcG=V6&#~7xBrk3zV>(cQDZi zKMY)({+UcJ$r^sW*Q_%iOEI(wYK1r|cM-swj%3C(m%CD{p0lYJD}z^ z7G4<#=g6fpMShZ*Jp-3Px!L>p#H93n@~~VZ|B+z|tsdEdU}#cZNIR!m6F_>mnOz_Mz`fAmi9Z4O;7=glXsT5YEf|#d!aJ<0BE=wD8qtJSgc3jy zrNn-nD}J%_(FX2;2U>zLpaz04W5Ek6COoiU#zGOL&gIi4^E>fcdJZ0_P@^XpTa7DJ zH$d{)z%1Tl1?Q>2&UMbSV{B4eH&OvrI#;1aiw*;R_@hM!+(Cs6FG}#mk77z30Hs){ z#O~N1%eo)xb&+h$sJX-rW;2O3>{bq~|Dp(qWGjAd*tu<6*2D&Ip2O&9 z<~$75%a2G@=n23Z1A6eQ=y57`>b%we1~tAIFrWqW_;Rnnw~|6652*2JvVzP zg_K~z3{<+v^0o#Aw%G>s{%OYS6^gqn{Aq$@QmG(h)dKq)0>sBtX;(%%0~)vXi5kHu z&L|(RK`}_;8&lL#FLsLSxG;Qkn?rsD?o3@4T8i*?fgrWwm4CW;g z7=jLSjfy2VKqC1)qX;609By)pK>pUFtvorVp>nxq|54=&=MJU~q3H0XBd@cRG0H)j z5JGF((U!J^6ULw;3y(K+VtVhN8p#74@;Sw6PV+UH990f7wu)luy7qFfA1BKmpH-v| zsbVk`gKVs#C0vYK)A64DYS{MrY@6t9>p-Maia~s<$iOW|WZ6V~tgIC#EVb{O+I&Ta z3fssTBWBnB_g=fd5EBwEaGO$0PALYlKOiXMEIqepizTmAcXS%l8zVP}m=P68W1A+4 z_2T|#$F;XEDT!jac*ilGT}#BU-3YgB0U+xeA99PN(>mKq~@EZ-x3jT-=r81>=e>92L@D;y|;ar!$d65J3db)9GYgPq*6dms^Sr zJ67^B;f+KfxPt{KM%K%uJaRlDuw&*lpYl0rq>)B4MF;A7qUF)F5aPev=;yX002ovPDHLkV1np> BR3!ia literal 0 HcmV?d00001 diff --git a/web/web/img/traffic_sign.bmp b/web/web/img/traffic_sign.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d286702064d0fe40dc74703c174ca6b59ad449e0 GIT binary patch literal 26686 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 literal 0 HcmV?d00001 diff --git a/web/web/js/MQTT_port.js b/web/web/js/MQTT_port.js new file mode 100644 index 0000000..dc969c7 --- /dev/null +++ b/web/web/js/MQTT_port.js @@ -0,0 +1,66 @@ +/* + * @Descripttion: + * @version: + * @Author: Eugene + * @Date: 2023-10-12 09:55:52 + * @LastEditors: Andy + * @LastEditTime: 2023-11-24 16:59:21 + */ +var MQTT_MODE = 0; + +function pageName() { + var a = location.href; + var b = a.split("/"); + var c = b.slice(b.length - 1, b.length).toString(String).split("."); + return c[0]; +} + +var json_id = 0; + +//在发送数据后调用这个函数 +function MQTT_send(string) { + json_id++; + if(json_id>255) + { + json_id = 0; + } + let send_string = "{\"JSON_id\":" + json_id + ",\"led_protocol\":" + string + "}" + console.log("MQTT 发送:" + send_string); + //这里需要将string发送出去 + window.parent.postMessage({ + str: send_string + }, "*"); // 替换为Vue应用的URL +} + +//在收到数据后需要调用这个函数 +function MQTT_recv(string) { + console.log("MQTT 接收:" + string); + let json = jQuery.parseJSON(string); + let href = pageName(); + if ("error_code" in json) { + console.log("MQTT接收到回复码" + json.error_code); + } + var str = JSON.stringify(json.led_protocol); + string = str; + console.log("MQTT 处理后:" + string); + if (href == "screen_main") { + console.log("now -> screen_main"); + cmd_reply_parse_fun(string); + } + else if (href == "screen_par") { + console.log("now -> screen_par"); + screen_par_reply_parse_fun(string); + } + else if (href == "screen_program") { + console.log("now -> screen_program"); + program_list_reply_parse_fun(string); + } + else if (href == "screen_virtual") { + console.log("now -> screen_virtual"); + screen_virtual_reply_parse_fun(string); + } + else if (href == "content_pattern1") { + console.log("now -> content_pattern1"); + content_pattern_reply_parse_fun(string); + } +} diff --git a/web/web/js/content.js b/web/web/js/content.js new file mode 100644 index 0000000..97f663d --- /dev/null +++ b/web/web/js/content.js @@ -0,0 +1,930 @@ +const width_screen = 64; +const height_screen = 64; +const txt_preview = document.getElementById("preview_canvas"); +const txt_draw = document.getElementById("txt_canvas"); +const input_ctl=document.getElementById('screen_info'); +const f_color = document.getElementById('fcolor0'); +const f_style = document.getElementById('txt_style0'); +const f_stretch=document.getElementById('stretch_act0') +const h_align_ctrl = document.getElementById("h-align0"); +const v_align_ctrl = document.getElementById("v-align0"); +const font_type_ctl = document.getElementById("font0"); +const font_size_ctl = document.getElementById("fontsize0"); +const animation_type_ctl = document.getElementById("tx0"); +const p_pausetime = document.getElementById('stay0'); +const button_ctl =document.getElementById('btn_set'); +const g_zoom_preview = 5; +var g_text_resrtcut_arry;//重组后的字符数组(字符串数组) +var g_text_line_width;//每一行的宽度,(数组) +var g_text_page_line;//每一页的行数,数组元素的个数,代表了总共有多少页,(数组),g_text_page_line[x]代表该页有多少行 +var back_ground_img;//预览文字背景 +var preview_img_data;//预览文字图片 +var img_rgb_data; + //对文字进行预处理,根据屏幕的宽度,将文字存放到二维数组,二维数组行数代表屏幕上有几行 + function restruct_input_text() + { + var row_txt_array = input_ctl.value; + var font_size = parseInt(font_size_ctl.value); + var animation_type = parseInt(animation_type_ctl.value); + var line = 0; + var cur_index = 0; + g_text_resrtcut_arry = null; + g_text_line_width = null; + g_text_page_lines = null; + if(row_txt_array.length != 0) + { + g_text_resrtcut_arry = new Array(); + g_text_line_width = new Array(); + g_text_page_lines = new Array(); + g_text_page_lines[0] = 0; + } + else + { + return; + } + var line_max_per_screen = parseInt(height_screen/font_size); + if(line_max_per_screen == 0) + { + line_max_per_screen = 1; + } + + if(animation_type == 6)//连续左移单独处理,因为不需要分页 + { + g_text_resrtcut_arry[0] = row_txt_array; + + var x_width = 0; + for(var i=0; i 255) //中文 + { + x_width += font_size; + } + else + { + x_width += font_size/2; + } + } + + g_text_line_width[0] = Math.ceil(x_width/8)*8; + g_text_page_lines[0] = 1; + } + else + { + var page = 0; + while(1) + { + var text_write_width = 0; + var row = 0; + while(1) + { + if(font_size > width_screen)//字体大于屏幕宽度 + { + if(g_text_resrtcut_arry[line] == null) + { + g_text_resrtcut_arry[line] = row_txt_array.substring(cur_index, cur_index + 1); + g_text_line_width[line] = width_screen; + } + else + { + g_text_resrtcut_arry[line] += row_txt_array.substring(cur_index, cur_index + 1); + g_text_line_width[line] += width_screen; + } + + cur_index++; + line++; + + if(line >= (page+1)*line_max_per_screen)//换一页 + { + g_text_page_lines[page] += 1; + page++; + g_text_page_lines[page] = 0; + } + else + { + g_text_page_lines[page] += 1; + } + + if(cur_index < row_txt_array.length)//文字未取完 + { + break;//写不下 换行 + } + } + else{ + if (row_txt_array.charCodeAt(cur_index) > 255) //中文 + { + if((text_write_width + font_size) <= width_screen) + { + if(g_text_resrtcut_arry[line] == null) + { + g_text_resrtcut_arry[line] = row_txt_array.substring(cur_index, cur_index + 1); + g_text_line_width[line] = font_size; + } + else + { + g_text_resrtcut_arry[line] += row_txt_array.substring(cur_index, cur_index + 1); + g_text_line_width[line] += font_size; + } + + text_write_width += font_size; + cur_index++; + } + else + { + line++; + if(line >= (page+1)*line_max_per_screen)//换一页 + { + g_text_page_lines[page] += 1; + page++; + g_text_page_lines[page] = 0; + } + else + { + g_text_page_lines[page] += 1; + } + break;//写不下 换行 + } + } + else + { + if((text_write_width + font_size/2) <= width_screen) + { + if(g_text_resrtcut_arry[line] == null) + { + g_text_resrtcut_arry[line] = row_txt_array.substring(cur_index, cur_index + 1); + g_text_line_width[line] = font_size/2; + } + else + { + g_text_resrtcut_arry[line] += row_txt_array.substring(cur_index, cur_index + 1); + g_text_line_width[line] += font_size/2; + } + + text_write_width += font_size/2; + cur_index++; + } + else + { + line++; + if(line >= (page+1)*line_max_per_screen)//换一页 + { + g_text_page_lines[page] += 1; + page++; + g_text_page_lines[page] = 0; + } + else + { + g_text_page_lines[page] += 1; + } + break; + } + } + } + + if(cur_index >= row_txt_array.length)//文字取完 + { + if(g_text_resrtcut_arry[line].length != 0)//如果最后一行不是空,但并没有完整的一行 + { + g_text_page_lines[page] += 1; + } + return;//结束 + } + } + } + } + } + function uint8arrayToBase64(u8Arr) { + let CHUNK_SIZE = 0x8000; //arbitrary number + let index = 0; + let length = u8Arr.length; + let result = ''; + let slice; + while (index < length) { + slice = u8Arr.subarray(index, Math.min(index + CHUNK_SIZE, length)); + result += String.fromCharCode.apply(null, slice); + index += CHUNK_SIZE; + } + return btoa(result); + } + // //将图片二值化 + function img_binarization(img_rgb_data) + { + var tmp = 0; + var j = 0,k = 0; + + var bin_arry = new Uint8Array(img_rgb_data.data.length/32); + for(var i=0; irebuild preview img data"); + } + else if(animation_int == 6)//连续左移 + { + var cxt = txt_draw.getContext("2d"); + draw_scroll_img(font_int,1); + img_rgb_data = cxt.getImageData(0,0,txt_draw.width,txt_draw.height); + draw_scroll_img(font_int,5); + preview_img_data = new Image(); + preview_img_data.src = txt_draw.toDataURL("../img/png"); + var font_style =parseInt(f_style.value) + var font_type = font_type_ctl.value + if(font_style==1){ + cxt.font="bold "+ font_size.toString() + "px "+font_type; + }else{ + cxt.font="lighter"+ font_size.toString() + "px "+font_type; + } + + } + else if(animation_int == 2 || animation_int == 3)//左移或者右移 + { + //TODO + var type = animation_int==2?0:1; + var cxt = txt_draw.getContext("2d"); + draw_horizontal_continue_img(font_int,H_align,V_align,total_line_nums,total_pages,type,1); + img_rgb_data = cxt.getImageData(0,0,txt_draw.width,txt_draw.height); + draw_horizontal_continue_img(font_int,H_align,V_align,total_line_nums,total_pages,type,g_zoom_preview); + preview_img_data = new Image(); + preview_img_data.src = txt_draw.toDataURL("../img/png"); + if(font_style==1){ + cxt.font="bold "+ font_size.toString() + "px "+font_type; + }else{ + cxt.font="lighter"+ font_size.toString() + "px "+font_type; + } + } + if(font_stretch==1){ + var width= cxt.measureText(input_ctl.value).width + if(width <= 64){ + cxt.scale(width,1.35,x_offset) + } + + }else if(font_stretch==2){ + var width= cxt.measureText(input_ctl.value).width/80 + if(width <= 64){ + cxt.scale(width,1.5,y_offset) + cxt.save() + } + } + + } + + function draw_backgroud(width, height, scale) { + txt_preview.setAttribute("width", width*scale); + txt_preview.setAttribute("height", height*scale); + var cxt = txt_preview.getContext("2d"); + cxt.fillStyle = "rgba(0,0,0,0.9)" //背景 + cxt.fillRect(0, 0, width * scale, height * scale); + cxt.beginPath(); + cxt.strokeStyle = 'rgba(255,255,255,0.3)'; //水平线条 + for (var i = 0; i < height * scale; i += 1 * scale) { + cxt.moveTo(0, i); + cxt.lineTo(width * scale, i); + } + for (var i = 0; i < width * scale; i += 1 * scale) { //竖直线条 + cxt.moveTo(i, 0); + cxt.lineTo(i, height * scale); + } + cxt.stroke(); + + var img = new Image(); + img.src = txt_preview.toDataURL("../img/png"); + return img; + } + + var cur_page_pre = 0; + var page_init = 0; + var cur_y_offset = 0; + var cur_x_offset = 0; + var cur_line_pre = 0; + var max_offset = 0; + var timer = 0; + var font_size = parseInt(font_size_ctl.value); + var font_type=font_type_ctl.value; + var font_style=parseInt(f_style.value); + function drawFrame() + { + var animation = parseInt(animation_type_ctl.value);//动画方式 + var cxt = txt_preview.getContext("2d"); + if(animation == 1)//立即显示 + { + // console.log("--->draw page,cur_page_pre=%d",cur_page_pre); + cxt.clearRect(0,0,width_screen*g_zoom_preview,height_screen*g_zoom_preview); + cxt.drawImage(back_ground_img,0,0); + cxt.drawImage(preview_img_data, 0,cur_page_pre*height_screen*g_zoom_preview, width_screen*g_zoom_preview, height_screen*g_zoom_preview, 0, 0, width_screen*g_zoom_preview, g_zoom_preview*height_screen); + } + else if(animation == 2)//左移 + { + if(cur_x_offset < cur_page_pre*width_screen*g_zoom_preview) + { + cur_x_offset += 1*g_zoom_preview; + timer = setTimeout("drawFrame()",30); + } + + cxt.clearRect(0,0,width_screen*g_zoom_preview,height_screen*g_zoom_preview); + cxt.drawImage(back_ground_img,0,0); + cxt.drawImage(preview_img_data, cur_x_offset, 0, width_screen*g_zoom_preview, height_screen*g_zoom_preview, 0, 0, width_screen*g_zoom_preview, g_zoom_preview*height_screen); + if(font_style==1){ + cxt.font="bold "+ font_size.toString() + "px "+font_type; + }else{ + cxt.font="lighter"+ font_size.toString() + "px "+font_type; + } + } + else if(animation == 3)//右移 + { + if(cur_x_offset > cur_page_pre*width_screen*g_zoom_preview) + { + cur_x_offset -= 1*g_zoom_preview; + timer = setTimeout("drawFrame()",20); + + } + cxt.clearRect(0,0,width_screen*g_zoom_preview,height_screen*g_zoom_preview); + cxt.drawImage(back_ground_img,0,0); + cxt.drawImage(preview_img_data, cur_x_offset, 0, width_screen*g_zoom_preview, height_screen*g_zoom_preview, 0, 0, width_screen*g_zoom_preview, g_zoom_preview*height_screen); + if(font_style==1){ + cxt.font="bold "+ font_size.toString() + "px "+font_type; + }else if(font_style==0){ + cxt.font="lighter"+ font_size.toString() + "px "+font_type; + } + } + else if(animation == 4)//上移 + { + if(cur_y_offset < cur_page_pre*height_screen*g_zoom_preview) + { + cur_y_offset += 1*g_zoom_preview; + timer = setTimeout("drawFrame()",20); + } + + cxt.clearRect(0,0,width_screen*g_zoom_preview,height_screen*g_zoom_preview); + cxt.drawImage(back_ground_img,0,0); + cxt.drawImage(preview_img_data, 0, cur_y_offset, width_screen*g_zoom_preview, height_screen*g_zoom_preview, 0, 0, width_screen*g_zoom_preview, g_zoom_preview*height_screen); + } + else if(animation == 5)//下移 + { + if(cur_y_offset > cur_page_pre*height_screen*g_zoom_preview) + { + cur_y_offset -= 1*g_zoom_preview; + timer = setTimeout("drawFrame()",20); + } + cxt.clearRect(0,0,width_screen*g_zoom_preview,height_screen*g_zoom_preview); + cxt.drawImage(back_ground_img,0,0); + cxt.drawImage(preview_img_data, 0, cur_y_offset, width_screen*g_zoom_preview, height_screen*g_zoom_preview, 0, 0, width_screen*g_zoom_preview, g_zoom_preview*height_screen); + cxt.font="lighter"+ font_size.toString() + "px "+font_type; + } + else if(animation == 6)//连续左移 + { + cxt.clearRect(0,0,width_screen*g_zoom_preview,height_screen*g_zoom_preview); + cxt.drawImage(back_ground_img,0,0); + cxt.drawImage(preview_img_data, cur_x_offset, 0, width_screen*g_zoom_preview, 32*g_zoom_preview, 0, 16*g_zoom_preview, width_screen*g_zoom_preview, 32*g_zoom_preview); + cur_x_offset += 2; + if(cur_x_offset > g_text_line_width[0]*g_zoom_preview) + { + cur_x_offset = 0; + } + timer = setTimeout("drawFrame()",30); + } + + } + var scroll_run = 0; + var timer_task; + function animation_display() + { + var animation = parseInt(animation_type_ctl.value);//动画方式 + if(typeof(g_text_page_lines) == undefined) + { + return; + } + var total_pages = g_text_page_lines.length; + + if(animation == 1 || animation==4 || animation==5)//上下切换方式的 + { + if(animation != 5) + { + cur_page_pre++; + if(cur_page_pre >= total_pages || page_init == 1) + { + cur_page_pre = 0; + cur_y_offset = 0; + } + } + else + { + cur_page_pre--; + if(cur_page_pre < 0 || page_init == 1) + { + cur_page_pre = total_pages-1; + cur_y_offset = (total_pages-1)*height_screen*g_zoom_preview; + } + } + clearTimeout(timer); + drawFrame(); + } + else if(animation == 6)//连续左移 + { + if(!scroll_run) + { + clearTimeout(timer); + drawFrame(); + scroll_run = 1; + } + + } + else if(animation == 2 || animation == 3)//左右切换方式的 + { + if(animation == 2) + { + cur_page_pre++; + if(cur_page_pre >= total_pages || page_init == 1) + { + cur_page_pre = 0; + cur_x_offset = 0; + } + } + else + { + cur_page_pre--; + if(cur_page_pre < 0 || page_init == 1) + { + cur_page_pre = total_pages-1; + cur_x_offset = (total_pages-1)*height_screen*g_zoom_preview; + } + } + clearTimeout(timer); + drawFrame(); + } + page_init = 0; + timer_task = setTimeout("animation_display()",3000); + } + function re_draw_screens() + { + restruct_input_text(); + dynamic_draw_txt(); + clearTimeout(timer_task); + page_init = 1; + + timer_task = setTimeout("animation_display()",200); + } + + window.onload = () => { + back_ground_img = draw_backgroud(width_screen, height_screen, 5); + re_draw_screens(); + } + + //将图片二值化 + function img_binarization(img_rgb_data) + { + var tmp = 0; + var j = 0,k = 0; + + var bin_arry = new Uint8Array(img_rgb_data.data.length/32); + for(var i=0; i { + // re_draw_screens(); + // var img_string = img_binarization(img_rgb_data); + + // // httpPost("img_data",img_string); + // } + + input_ctl.onchange = () => { + + re_draw_screens(); + + } + p_pausetime.onchange=()=>{ + + re_draw_screens(); + + } + f_color.onchange=()=>{ + + re_draw_screens(); + } + font_size_ctl.onchange = () => { + re_draw_screens(); + } + font_type_ctl.onchange = () => { + re_draw_screens(); + } + f_style.onchange=()=>{ + re_draw_screens(); + } + f_stretch.onclick=()=>{ + re_draw_screens(); + } + h_align_ctrl.onchange = () => { + re_draw_screens(); + } + v_align_ctrl.onchange = () => { + re_draw_screens(); + } + animation_type_ctl.onchange = () => { + re_draw_screens(); + } + // button_ctl.onclick= () => { + // var canvas_width = txt_draw.getAttribute("width")/g_zoom_preview; + // var canvas_height = txt_draw.getAttribute("height")/g_zoom_preview; + // var img_string = img_binarization(img_rgb_data); + // var post_string = + // `${img_string}${animation_type_ctl.value}${canvas_width}${canvas_height}`; + // httpPost("data.json", post_string); + // console.log(post_string) + // return false + // } + \ No newline at end of file diff --git a/web/web/js/data.js b/web/web/js/data.js new file mode 100644 index 0000000..c9da4f7 --- /dev/null +++ b/web/web/js/data.js @@ -0,0 +1,282 @@ +$(function () { + var baseHost = document.location.origin + /*********************************************************登录页面数据提交**************************************************/ + // $('#login').on('click', function () { + // var pwd = $('#pwd').val() + // var login = {} + // login.log_in = new Object() + // login.log_in.type = 1 + // login.log_in.pass = pwd + // console.log(JSON.stringify(login)) + // if (!pwd.trim().length) { + // $('.toast').css('display', 'flex') + // setTimeout(function () { + // $('.toast').css('display', 'none') + // }, 2000) + // return false + // } + // //1.创建ajax对象 + // var xhr = new XMLHttpRequest() + // //2.连接服务器 + // xhr.open('post', baseHost + '/log_in', true) + // //3.设置请求头信息 + // xhr.setRequestHeader('content-type', 'application/json') + // //4.发送请求 + // xhr.send(JSON.stringify(login)); + // xhr.onreadystatechange = function () { + // if (xhr.readyState == 4 && xhr.status == 200) { + // //1.服务器返回的json格式数据 + // var json = xhr.responseText + // console.log(JSON.stringify(json)) + // //alert(xhr.responseText) + // /*2. + // *通过eval方法将上面的数据转换成json格式, + // *上面数据的所有双引号全部转换成单引号 + // */ + // var result = eval("(" + json.replace(/"/g, "'") + ")") + // /* 3.转换成json格式后可以通过对象的方式进行访问,既通过“.”的方式 + // * 判断从服务器返回值中return是否等于0 + // * 0:密码正确 1:密码错误 + // */ + // if (result.log_in.return == 0) { + // alert("登录成功!") + // window.location.href = "/screen_main.html" + // return + // } + // else { + // alert("登录失败!") + // return + // } + // } + // } + // }) + /*********************************************************密码修改页面数据提交**************************************************/ + // $('#submit').on('click', function () { + // var rawPwd = $('#raw_pass').val() + // var newPwd = $('#new_pwd').val() + // var rePwd = $('#pwdOK').val() + // var submit = {} + // submit.log_in = new Object() + // submit.log_in.type = 2 + // submit.log_in.pass = rawPwd + // submit.log_in.new_pass = newPwd + // console.log(JSON.stringify(submit)) + // if (!newPwd.trim().length || !rePwd.trim().length) { + // $('.toast').css('display', 'flex') + // setTimeout(function () { + // $('.toast').css('display', 'none') + // }, 2000) + // return false + // } else if (newPwd != rePwd) { + // alert('新密码与确认密码不一致') + // return false + // } + // //1.创建ajax对象 + // var xhr = new XMLHttpRequest() + // xhr.open('post', baseHost + '/log_in', true) + // xhr.setRequestHeader('content-type', 'application/json') + // xhr.send(JSON.stringify(submit)) + // xhr.onreadystatechange = function () { + // if (xhr.readyState == 4 && xhr.status == 200) { + // //1.服务器返回的json格式数据 + // var json = xhr.responseText + // console.log(json) + // /*2. + // *通过eval方法将上面的数据转换成json格式, + // *上面数据的所有双引号全部转换成单引号 + // */ + // var result = eval("(" + json.replace(/"/g, "'") + ")") + // /* 3.转换成json格式后可以通过对象的方式进行访问,既通过“.”的方式 + // * 判断从服务器返回值中return是否等于0 + // * 0:密码正确 1:密码错误 + // */ + // if (result.log_in.return == 0) { + // alert("修改密码成功!") + // window.location.href = "/login.html" + // return + // } + // else { + // alert("修改密码失败!") + // return false + // } + // } + // } + // }) + // //单击取消按钮,跳转至登录页面 + // $("#reset").on('click', function () { + // window.location.href = '/login.html' + // }) + /*********************************************************屏幕参数页面数据提交->读取数据**************************************************/ + // function item_init(obj) { + // document.getElementById('sw').value = obj.screen_p.w + // document.getElementById('sh').value = obj.screen_p.h + // if (obj.screen_p.oe == 0 && obj.screen_p.data == 1) { + // document.getElementById('two-color').checked = "checked" + // } else { + // document.getElementById('mono').checked = "checked" + // } + // document.getElementById('srt').value = obj.screen_p.screen_angle + // } + // // read intial values + // fetch(`${baseHost}/p/get?`) + // //异步执行 避免数据没获取到等问题 + // .then(function (response) { + // return response.json() + // }) + // .then(function (state) { + // item_init(state) + // }).catch(function (arr) { + // console.log(arr) + // }) + // $('#read').on('click', function () { + // fetch(`${baseHost}/p/get?`) + // //异步执行 避免数据没获取到等问题 + // .then(function (response) { + // return response.json() + // }) + // .then(function (state) { + // item_init(state) + // }).catch(function (arr) { + // console.log(arr) + // }) + // }) + /*********************************************************屏幕参数页面数据提交->设置数据**************************************************/ + // $('#set').on('click', function () { + // var screen_width = parseInt($('#sw').val()) + // var screen_height = parseInt($('#sh').val()) + // var oecolor = $("input[type='radio']:checked").val() + // var screen_angle = parseInt($('#srt').val()) + // var screen = {} + // screen.screen_p = new Object() + // //获取屏幕宽度、高度 + // screen.screen_p.w = screen_width + // screen.screen_p.h = screen_height + // /*mono:单色 two-color:双色 + // *如果oecolor==momo 输出oe极性为1 另一个值则为0 + // */ + // if (oecolor === "mono") { + // screen.screen_p.oe = 1 + // screen.screen_p.data = 0 + // } else { + // screen.screen_p.oe = 0 + // screen.screen_p.data = 1 + // } + // screen.screen_p.screen_angle = screen_angle + // console.log(JSON.stringify(screen)) + // var xhr = new XMLHttpRequest() + // xhr.open('post', baseHost + '/p/set', true) + // xhr.setRequestHeader('content-type', 'application/json') + // xhr.send(JSON.stringify(screen)) + // xhr.onreadystatechange = function () { + // if (xhr.readyState == 4 && xhr.status == 200) { + // var info = xhr.responseText + // if (info == "OK") { + // alert("屏幕参数设置成功!") + // } + // } + // } + // }) + /*********************************************************屏幕操作指令**************************************************/ + /*1.开启屏幕 + *当type=1时,data1的值为1表示关闭屏幕、值为2表示开启屏幕、值为3时清除屏幕 + */ + $('#start').on('click', function () { + var screen_start = {} + screen_start.cmd = new Object() + screen_start.cmd.type = 1 + screen_start.cmd.data1 = 2 + screen_start.cmd.data2 = 0 + screen_start.cmd.data3 = 0 + console.log(JSON.stringify(screen_start)) + var xhr = new XMLHttpRequest() + xhr.open('POST', baseHost + '/cmd', true) + xhr.setRequestHeader('content-type', 'application/json') + xhr.send(JSON.stringify(screen_start)) + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + var info = xhr.responseText + if (info == "OK") { + alert("开启屏幕成功!") + } + } + } + // alert(JSON.stringify(screen_start)) + }) + //关闭屏幕 + $('#close').on('click', function () { + var screen_close = {} + screen_close.cmd = new Object() + screen_close.cmd.type = 1 + screen_close.cmd.data1 = 1 + screen_close.cmd.data2 = 0 + screen_close.cmd.data3 = 0 + console.log(JSON.stringify(screen_close)) + var xhr = new XMLHttpRequest() + xhr.open('POST', baseHost + '/cmd', true) + xhr.setRequestHeader('content-type', 'application/json') + xhr.send(JSON.stringify(screen_close)) + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + var info = xhr.responseText + if (info == "OK") { + alert("关闭屏幕成功!") + } + } + } + return false + }) + + //清除屏幕 + $('#clear').on('click', function () { + var screen_clear = {} + screen_clear.cmd = new Object() + screen_clear.cmd.type = 1 + screen_clear.cmd.data1 = 3 + screen_clear.cmd.data2 = 0 + screen_clear.cmd.data3 = 0 + console.log(JSON.stringify(screen_clear)) + var xhr = new XMLHttpRequest() + xhr.open('POST', baseHost + '/cmd', true) + xhr.send(JSON.stringify(screen_clear)) + xhr.setRequestHeader('content-type', 'application/json') + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + var info = xhr.responseText + if (info == "OK") { + alert("清除屏幕成功!") + } + } + } + return false + }) + /*********************************************************模式选择 pattern**************************************************/ + /*mode1:单色屏幕 播放项为纯文字 + mode2:双色屏幕 播放项为文字和图片 + mode3:彩色屏幕 + * + */ + $("#pattern1").on('click', function () { + var screen_pattern = {} + screen_pattern.cmd = new Object() + screen_pattern.cmd.mode = 1 + var screen_start = {} + screen_start.cmd = new Object() + screen_start.cmd.type = 1 + screen_start.cmd.data1 = 2 + var xhr = new XMLHttpRequest() + xhr.open('POST', baseHost + '/cmd', true) + xhr.send(JSON.stringify(screen_pattern)) + // xhr.setRequestHeader('content-type', 'application/json') + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + var info = xhr.responseText + if (info == "OK") { + alert("接入屏幕成功!") + window.location.href = "/content.html" + return + } + } + } + }) + +}) diff --git a/web/web/js/jquery-3.4.1.min.js b/web/web/js/jquery-3.4.1.min.js new file mode 100644 index 0000000..a1c07fd --- /dev/null +++ b/web/web/js/jquery-3.4.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0 255) { + json_id = 0; +} diff --git a/web/web/login.html b/web/web/login.html new file mode 100644 index 0000000..1c512db --- /dev/null +++ b/web/web/login.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + 登录页面 + + + + + + + + + + +
+ 密码不能为空 +
+
+ 登录中.... +
+
+ 登录失败 +
+
+ 登录成功 +
+ + + + + + + diff --git a/web/web/screen_main.html b/web/web/screen_main.html new file mode 100644 index 0000000..9f08b32 --- /dev/null +++ b/web/web/screen_main.html @@ -0,0 +1,482 @@ + + + + + + + + + + + 我的LED屏 + + + + + + + + + + + + + +
+ + + + +
+
+
    +
  • + 屏参 +
  • +
  • + 节目 +
  • +
  • + 屏幕亮度 +
  • +
  • + 虚拟遥控器 +
  • +
  • + 开启屏幕 +
  • +
  • + 关闭屏幕 +
  • +
  • + 清除屏幕 +
  • +
  • + 开机参数 +
  • +
+
+
+ +
+

版本号 V1.0.0

+
+ + +
+ +
+
+

开机参数

+
+

开机界面

+
+ +
+
+
+

重置开关

+
+ +
+
+
+ +
+
+ + + + + +
+ 结果内容 +
+
+ + + + + diff --git a/web/web/screen_par.html b/web/web/screen_par.html new file mode 100644 index 0000000..253182a --- /dev/null +++ b/web/web/screen_par.html @@ -0,0 +1,303 @@ + + + + + + + + + + + + 屏幕参数 + + + + + + + + + +
+
+ <返回 +
+
+ +
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • + +
  • + + +
  • +
+
+ + +
+
+ + +
+ 结果内容 +
+ + + + diff --git a/web/web/screen_program.html b/web/web/screen_program.html new file mode 100644 index 0000000..fd63b78 --- /dev/null +++ b/web/web/screen_program.html @@ -0,0 +1,453 @@ + + + + + + + + + + + + 我的节目页面 + + + + + + + + + + + + + +
+
+
+

节目列表

+
+

+ +

+
+
+
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
+
    +
  • + 返回 +
  • +
  • + 添加 +
  • +
  • + 刷新 +
  • +
+
+
+ +
+ + + +
+ 加载中.... +
+
+ 加载失败 +
+
+ 删除中.... +
+
+ 删除失败 +
+
+ 设置中.... +
+
+ 设置失败 +
+
+ 结果内容 +
+
+ + + + diff --git a/web/web/screen_virtual.html b/web/web/screen_virtual.html new file mode 100644 index 0000000..1406e12 --- /dev/null +++ b/web/web/screen_virtual.html @@ -0,0 +1,184 @@ + + + + + + + + + + + 虚拟遥控器 + + + + + + + + + + + + + +
+
+
    +
  • + 返回首页 +
  • +
  • + 加载中 +
  • +
+
+
+
+ 打开中... +
+
+ 打开节目成功 +
+
+ 打开节目失败 +
+
+ 结果内容 +
+ + + + + diff --git a/web/web/traffic_sign.bmp b/web/web/traffic_sign.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d286702064d0fe40dc74703c174ca6b59ad449e0 GIT binary patch literal 26686 zcmeI4&#N3+mfs^QyE_U-C=15Wf>P6#ve%{Hu9`KYqvLCMTVvs_-VH9PB;`;MF_uk0Jc$t!W zW@=-6OBpBb{obGFoO{lR8}aI&{fmeHDzo&E>p#-nEX#g07vV+;e0w|mLP5BC?=yb? zKfQwkO<+}?=(K7oPxRNt+tB|a(P{g(P)WZ?bc%NYcZuG>ok}{_MXKC5_0E5B>DvNI z3Zoq03&YEP;TfVW$C%yc!kg0P!lBc&Hr)HQ;ZxN6mGD}W_RwkC3g3CZ6%L)Ijqr`< z-*P58O*`Q$Pt%JF(P^rMuRTM5@r~#-HRaPw7RS=Sq0`iqmzRDKap*L)#nmOu^X=KZ zdUyoyit9@Wr+b*!=g?{D9C#rSE*jBk>cJ(p-hJ`SP4P)}z)R7-JR&~t!A)%7N5toS zetl_T$-Cl+co5w6rHN(T6-UH_;I1!CEZf#yOee4W=K6ALv~@?sgW#?&t$f$I`LXu( z^`(ieZru^_AQ+aQc1?TlI4<25{^Z^f@n}!Py-|ieq`KqO6>)DxI>vO*-Ydpb_v6&N zxVIx6W4iAbK`e<*alc@NN{NQt{+dUzCAvq#-71PL(Hppl4?#yd#WzuGiB9pIi3dSO zI>qZKmPDs`6UCC~uZy=Xv`94M_SaON=pG4oY1bt>#rrapBs#_aU(YAGO=(MI&l&dLgeJVoGTZl4ns7N#-A`%68P+DyXNyJ?N%;tSbG(jiF5D>fp(&YTXM&Az zqu>i)b0x(aG`JRSl;V7kR|*|iKqcI0wy5WOd?|e9{ZhD5@R_)xhGcuM^(y@iO7NtLHQg?R~zZn6zffv5-5qbHMwY zoa}dAa|wlw#Rax!eJ3A`H1NR%cqK!?-f%Jt>{*X&3M4zH9%b6glod1pCl$!X)fucn zM%rP*yFz=gRj#ZZ2&Ii{;U9@!I;TBsxUVSZ&QTBk2Ry_B>J5<<-JH9kDmpS0(Q}9g zgww?KwaPo>A91bO%ppUXU7#FV)}lablL;A;*_{KL;sJw?;vpVbsscQk(i9I=!cmtg zMGBI4Q>b)4xf* z^ob<79-{_wVZc)NQ>rpcfe(ovdz$cXi>7f;^q=N?0@k`sfT!@pw^KOcMy*aJ%m{|% zBznwD0!ED_n@r*Gmmcl>m$pJ*NPUS`8DnWm-T z`9IcM^v1h7`sw}ie|i?^f=5Cp3{62K?l>N~-Y}Ea8uFyYy@k4CNeT{d^ zweBe#XdQn1VTL8@T{Ely0GsuZ@DGcoc-tH=?fktd-v)(%kJ=~_|*Re z_7E3Y{0BuNd7Zs@DVzD~dYRoX>wxFD*oP1F47R5IFQ5S@GEjRz$3;KDEolTW>eAAI&52U|Zceaq~+PrxH)b&9O~yzu#(&yf>&@4nMN0Y{LGp+2(mKZ1Xg z@Wrj{NeQkwh~CTmpOvursVBkk#aZ?#<#L8nuKu^9~KLTb(%6b32nU!{n z3jR^DIzt>J@mMsUiRJ^oE#LxaYht3FWajgJ5&I_tWT4S)UqV+t;dHhVp6I44$VZ&U zOaZa&>8_JF!8Jc{bdIU-Y2BCPk#EAK+rkeh`k}%LF;%P`(Ng)1f38AiGJXDM4;lVn z%s#a~aW%@;xhOm8C9LbxLQ# zm%60q{zGa|_71#c5bLCMsuh;Br?sQRCed=I)H*Jt)^YKB{}99{L90B`ma#LZd|&E1 zr5(}SyZn=daiQVyYZc>)<0uo%(C>Go_xb06ukYx?pvt&(vX?oz{Y*S^M7HuB8Vx@djarLE~EYd z@kzj4qF65QCg8Jx`xvuP)nT)R%X<5I?iD}Hz-`Yg#c19O=={L&-0*qAE8)Bs(D}he z?Ws+B-av%*wQ$}G=={KN=T}z7VMYzBtS;{bbUv_E`@(O*9qkQg4LJjYug7>+23)Mn zS=!TAEOHgvZ)h*(<@7IB3BSC;rwXqMzo{ssJ>RY zM@Yh%vT*T7?e!=H?!XJ-eZ<8d!>Oz1`)i#KtbKbc;`!TvKdTL2fS2ISogak$7j3{D z{6Q^!>uO8I_FKQl^t89_O0PxlI^PTYJCgNpP3(w~; z5PW;B^MRGmR#o7SUsl5BGZ+BAxz_o>O56soS$?+6a%ctva?g7KoeylqZIhq66%L;n z1gT!@d|)euG+fil@|sIg3lDL@hQ+eG&<|5#!(o7Miw8`w;G7Mrrk>JOQwF0@9Kf2j zE74zijW{ELhq$1Q%%Xjj@VT`Q@j!Dq zGHUddeIUHhBC{W{Vg$$vdF`Zo;g$j}j>Nd2yQ98XOTf!S!7U!>vPZ0iQ;&cT_D8t( zR-c)pERWzJ9+*){MsleR$RvsY*MctMr4o+V6NR<8AetVtuM~!Ope|S*H6;hJJ<)`p zw(qT@lXv)sfS>j+F&;SSpJH6Vf>@SKjOp#E?v;QL z4;^d1U$hWhf$M}TUx2rFU3XXOeG>5cfy0vE+sF%V&RqMDiPW77=c4C)rvR>e30{9j zo`q~8zU%_7yzolTG%#S*FY1!}rM`R$HpB)LKG zvi{*qY+}cp{8~6`2JiD4H+RwXWp)1iLb&oPaMrZhpalF@7hRdL(JwaO$_r;s!Y@|J zcf}H%e3vVa-z_e%kz3XUhqo(^V&>iR%~tlH^jqO@R=6}19K~o~2At>!T#^y4BWdug zUA*!E&kaALop6?E_(zU#$@-rg{(y38ANptdyfqR2S-|fXar`hpa2IgYT;u zhIz6++r3)f3|#BWmWAOf)(L;)9Q+0NoV~JwKeLMdcHU$Me?OobZ~O%pf9EV5+;n5T z>25I%`7HDYe2e>FyKa%EbTi*{4_HQ!FSz6@y9`c@>lmZ^)Pc{*tG)C??rPN#2cRd5 zszcwv$qSc$v0(6$BN*x9zpqL*BDzuM=&|$@yd)0?=E9dW7mhd$uhbr0Td^w5QOno< zSmp?t{jp?x;(~%@RpcLP`NF@$yoJ-8e!F`tt7bpm)$&`{-MfXHSQFB3(Dd$>Lj%~) zceH%)TX#{jrf89Vz35#3VL>tWAfq08rT_4ZX|v`#PH!CwvoH8SnHB~Ld4gl*m)Zdt z#n>OSu`+JTtK&r-!c0<*mL-I z%)Sr)fC-5QLtgdC^MbY3Tu=Fzy+1-A)Z6Eye|n#Pd!K(y=Ob*OLjB*!TOpU^k5A=O z`THme{H~PdJJgxfXT70=S{f^cq6(u_#dwJFLdA(csS0c~KDIF~O7-J83yRuW!#ehp zG3YrX#YLrl19-NzT4?o+O#83^Qf-Nxx{R9hA=fWhSho zE~sk@4!F&oi>$8cZOK^1iNGhir4yt`x#EMgAF!osO7K~vWyuyI0a{bbSUim_BEbM_ z$2j?G-rm+KjOTKk`}di%c3S)5uNhHK3L&1ibAN4a&h7h*eZP49x(;tObM<29{ul>7 z7ju2~0N?rgw_m>0lSp`;uygp$vB!{H@Nis$}~ zUuI9{e!cUr|ML>6nd_R){e^!T@L%?Z>;wuY{NZ^O{1I_a@>mL^J&)qS0_r*r?E|NPeXgtL9vDB$@=yfzum{dfKk zZ{HSP3&-90#iBqBIM){&>Hkk|-5cZmA}=@(0ROMWQ{ml*xSW0ez59m+0!-)n;1&lA z^XuGi7YJ~SqxM^tq_kpp77`$?QX*pg9rE3uEhE07KtP<^BLc(c!grxP#}s8z*m=q# z2j5tnXZ*Jc5!ZPPA375kfD^$tJYR~>z@-@Z?&wJ)ibWzS(z9J6A0pVSP>HeZC3!TS(X85ANO&lQH>;-<^_1?kc z=Il3VPw98=p%(jh9#RU;qrFprw+<5npDBrkACb%@!z~ z2_5|ZOK+Q`nozcYm0vuDUhr>1D~eUV`VzXiNr9N4_uu^rTHmC`8=j4CzW`^SPbmAk z=;xH@k4wX+RQ_M~<0Gum1@z-Tc7ZORiJJe9c+U&!?vpBUnm2#^vC-ziTy*gN z?I&Lmjx3tDfBuQl=3jo-DCP-Mm^a<+7q!n9%`(f3)-OIV8u7ZzA3ySWUN5tm(cR;@ zsQf$a*SmiH<&;qnqqEL=%o?&Njbf ze%;w8MmI~N3Ez4D)9NMb>&|W)-PHeD6py0*S%=^J_%V2Y_xnZ(m_*0;#g~SEY;@<} zh$jE8_SIL&$KU$IXzkyMCcNf>yMBRu{mDhm1i~o-@5sKyNmu|2#hxO7NQAn&$Ide%5J;1tew#(*+Nw3Xy*SP z>f55fhrTz?=vihI-28u6XumulwBp-9QQq~5%F_n_UzKk!{!IJL1-kU23GW@A<^^_O zLJ7q7{{Qi(rD9`0qPXV0|7QnS95ALAD7gIpigxUP8#MWUApe3&Q#$tle~qzH95ANI ze#$1d(MFG{?nnOr#(nbtr|kRG|Bw8FApA-2A2S_%%oOga4oU z#UY>kXKU5r!i4(2i-cqp+Uc8&*6|GLC+UKTmN=rPf!nVpup%|3*%vq=B=QaSt>Z#! z9hYUvg@EiC5{6xG$z+*|BCQJD>fl^|zom4@ui9A|U8i=3@qknyOs$`Vu@2(^sR>ha z8pFn#$k|4=!=*O2u_pQw;#Kvm@2lx*8VA^7bgA)pB1Mb`B2`oCq$+HziaHkeCR(KB zmsSmio8M1Vld_H(L&G32+f0e3J)p)KOLI^>kf_?K4-F0jY@aJ02z)D3dDvs_CZ76@ z;}8$b{S50C;{uzM=A|(htGmzXWOi0SXNm(fsknTb1K%Ico9wQ>L$tU+lM2!=jZee_ z;MmI;7pP;p4Qq!1`eL9y#~$;*p*SGP#l~PP!{zUV6BlSwY55vU_(nJnJT+94l3v&t zj79I@tGwnB37nCGUL`%-QHl`oS9+w(*P2;czIqvOWK2K8O|MP&7;BGT82&8oi=eyx zY>!ule*puS#5YSiA`xTQ_?#=$1^us{iUHogLS1a1a;{Cax#9w+IDiSXj(v@~*ghA| zyun)@#8=x?p6VHXE?n;^R@>BX8pm+X8;A=GPxJaB&QtTNvjy|hdymyBt?OA_r`A_z z4u7p@|J6G2#Ya9FUX{W(!fPfUrDJ?HoMV)PC%Gg!?Otnr0hfG|T$7yZYr}Km0?uf1 ze6act8lbV7hBrn!>mn`ykI$=GMcDsM^C;rQMg1B2lc~KfK~I}jI;!^0;#Av{aRX>9 z;sKuE&~M@b#kn?g+yJVkQ-((0=MopR>=U|8%eP^8O(eWfT+nHM#eHcuhH3I%51jXU zt|}F$n_{aEjlnV%2e1~42SihOs+a6SqN(3uoLueUaH3j!Sbmr%3Uy$gCi@?yCQ&I- zCKZ=25i-XTs<}oQ`D$b6QWva+!4r*gN&A18XW|PBOUpL~jN7UY7yw&r`E=@V%cc4M zL?`#YdC;SZgJwBC3 z$Paju zJNu@I28$6c!yIr?zzJUGHU3`h16|JPC$+EpVoS=Qy36ZowwyPMJmI^(xV*Z&!rz07 z3a|6^2w(5?pYT90d1@ZxPhUNK74Sf}o_BraLmsf*+5Jv|6;*~mgi{@9w zCHk_*;kT1sivObgA)xw8{ZI9}eZq@@=C&K~!jne(;~~AYcL#jBuTnm>pYF?)Px#c| zr~H5uJX$<3p$Q-S{KU=-`1|bBM*UN1LWlOr&rj%pPwZ;)`vac*{Dcnp`|SI~FC_mz zw7=o+C;sJzzpu?-?c2Z4zXg8?lMejkzP)c9AgOg+NUh^C!pYrCe_Q-!k0(o77ob!0 zU|m$5WuRm%&o?ec zIqx?;#K{GHJPY|c&^GD!qwu`XxmM8kPlJAk{c+dvo{aMV=mVASsm}ZLoZo>PWq(Cl z8cqB2BhKZ<`_qN}nf(1pI`R8#Gt%gM@ICfrutTTp6!Jah{}E~^pZNXZxj&V^&%RFl z{*CAVu`NE<*Zcg#3ID(MH>dnkDo=jw6!jSvRp}IMozRK@ALR}Fwl1iHarjjKs7I^c zXg;kAm5t7Iz`~EBqw7OUb?DLW{rw@I#GAmM#Lq*zERh7iy*v)%fvVuqn;*^ze^lO} zwZlH}I~4~c^&0&BBp$HE!+;c*PN^*(2Hf!b6=nDgTRaRn>HiZ0PVKM60L=kQhnqU2 zkpa_vo$|JL7?AQ)n)cJ+_Z?3dW@nf*G)SLw{|C|U6CsS_fFOPT+%5Ti@E8XeO$-?P zekq(dAlk_wea=Ly^WgVAUk+Ft5b{C#ockxgFFg2tiwlDEIrqPaexLXBX5WMTN4;4* zzj_tpfPfEiKve$)2WW~L)_Tux6r&~@)j!{nH@}p=1Bm&k{+#rJfCmi#4}NVs z#ZCRQO*oI|I{?EOEBMzkGGObYUk^C(K=98+WB|DQtG)w}ALYBi5I2l)O!62%x42-` ze`w#H$MzvE@KHegj}BC>?*IbjC4lm5xS4+XPM^HK0}#I6)iz)F7k0?7{{C*nt5Wqw z{0;mW@DLXa@=5WSzm?(u`F+~g&g2{YJ>LNcR~#TbAM_*YgT4cxoacDM(T}jfnkxEx zz5@t;A6)1EK|H>x&tn`=2mPeI^mNegmw(c~zRy3?@3)fPH?D&r`kflQh#T(|UdD}g3a5O}`lFQw%{z)FyK@4h zc+k8PRg$8efWz|LDKy!g0Z(c%D9T>*tj-O5vivDNUH%jwHXgmdY0d zq=u>o%h$I=?fpFAHGdN|UcSY4?E|)ANY&o#h5|i9v}am{rRAARW;YbbZt=o4!e0MB zpW1o*g)*A*Vz&$#{aM7p@=cZb!>=OX9e)-vEWghzm9(#1!1Y=9p!^Xp!0X5W{n?jT zZY+qn18*V&?9Vll-5KHfDq5*>w4dPWUtd%yEsLA|mz4LB0k+Puc*0iYs#>wyl6(C^ z3Oxq~gkh>8sEFa>FDWn}O!I)hk`E~`AT0A>cPeHl1tipJX`-Jc=?5wFTv_HoKcruz zFtaer1O2K>!vh1tDhB}xSsEM|khnBvKx8bOO@oBRiwR1rK#T!NO10Z7*k#03mKHT; zfcCc%pXKw}rQIGiZ+ck~0t4zr4G6WvRZnrg2=@mJ2t|k2Lk&2@lp8bPCVI$#WB8Z> z$M7)&j^PIyaHPU928^ry?HEu-28??g-xrYqz?0 zt>co?fZL66pmhm^4tTBhxscXzNh#t^e?}5NC~aK=p~L)^!fk<5d*?ye^ z9)-EgNWL&apPG}!}0yyJywr{WrDB#g2&=7o) zK8#)a)PG%YOFD%|pTNRs?{2n_%ZG8`g`S+0Wa(SS#r%ip34D;3{@=g2oN4 zHQVL}p7C;19@qkZaMwoa;_^aDqEh+no&s-N_W8>zxx zzgDf&Vv~O2NGtHjPe(A^>c~C>#iDSk9OKJYNB4UM1bn~$swem0=fF`JHgbEsesEV@ z@S3EhrMlb8qq%d(%v9LlK!)$_2QzinE?x9}nnqFLhLH*t3@PAC!EvN=z;q+=;mw4{ zo|NCG;5TaFRx`|JiW`G%;$gf!-a6eIgY7Pir?QaZr$_3)P|4I!^`%N}fp*h6Bh$+= lEDr`0Q^@jloW6aBccjJ*zE0~Hcc+D;{B+(U=x=`ee*n>Z<&gjY literal 0 HcmV?d00001