From def4e496e42a4141fb124cead7dd1bf7b6ef88a6 Mon Sep 17 00:00:00 2001 From: Peng-YM <1048217874pengym@gmail.com> Date: Tue, 24 May 2022 21:20:26 +0800 Subject: [PATCH] Bump to ES6 --- backend/.babelrc | 7 + backend/.prettierrc.json | 6 + backend/banner | 5 +- backend/gulpfile.babel.js | 48 + backend/package-lock.json | 10843 +++++++++++++++++++++++++- backend/package.json | 16 +- backend/src/core/app.js | 4 +- backend/src/core/proxy-utils.js | 3503 +++++---- backend/src/core/rule-utils.js | 559 +- backend/src/facade/artifacts.js | 684 +- backend/src/facade/collections.js | 265 +- backend/src/facade/constants.js | 18 +- backend/src/facade/index.js | 201 +- backend/src/facade/settings.js | 43 +- backend/src/facade/subscriptions.js | 357 +- backend/src/main.js | 9 +- backend/src/utils/download.js | 45 +- backend/src/utils/express.js | 502 +- backend/src/utils/geo.js | 516 +- backend/src/utils/gist.js | 134 +- backend/src/utils/logical.js | 7 +- backend/src/utils/open-api.js | 529 +- backend/sub-store.min.js | 7 +- 23 files changed, 14866 insertions(+), 3442 deletions(-) create mode 100644 backend/.babelrc create mode 100644 backend/.prettierrc.json create mode 100644 backend/gulpfile.babel.js diff --git a/backend/.babelrc b/backend/.babelrc new file mode 100644 index 0000000..4146bb7 --- /dev/null +++ b/backend/.babelrc @@ -0,0 +1,7 @@ +{ + "presets": [ + [ + "@babel/preset-env" + ] + ] +} \ No newline at end of file diff --git a/backend/.prettierrc.json b/backend/.prettierrc.json new file mode 100644 index 0000000..9848721 --- /dev/null +++ b/backend/.prettierrc.json @@ -0,0 +1,6 @@ +{ + "singleQuote": true, + "trailingComma": "all", + "tabWidth": 4, + "bracketSpacing": true +} diff --git a/backend/banner b/backend/banner index 83cfa38..19d3e50 100644 --- a/backend/banner +++ b/backend/banner @@ -5,8 +5,9 @@ * ╚════██║██║ ██║██╔══██╗╚════╝╚════██║ ██║ ██║ ██║██╔══██╗██╔══╝ * ███████║╚██████╔╝██████╔╝ ███████║ ██║ ╚██████╔╝██║ ██║███████╗ * ╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ - * Advanced Subscription Manager for QX, Loon, Surge and Clash. - * @version: 1.5 + * Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket! + * @updated: <%= updated %> + * @version: <%= pkg.version %> * @author: Peng-YM * @github: https://github.com/Peng-YM/Sub-Store * @documentation: https://www.notion.so/Sub-Store-6259586994d34c11a4ced5c406264b46 diff --git a/backend/gulpfile.babel.js b/backend/gulpfile.babel.js new file mode 100644 index 0000000..dd899db --- /dev/null +++ b/backend/gulpfile.babel.js @@ -0,0 +1,48 @@ +import fs from 'fs'; +import browserify from 'browserify'; +import gulp from 'gulp'; +import prettier from 'gulp-prettier'; +import header from 'gulp-header'; + +const DEST_FILE = 'sub-store.min.js'; + +export function styles() { + return gulp + .src('src/**/*.js') + .pipe( + prettier({ + singleQuote: true, + trailingComma: 'all', + tabWidth: 4, + bracketSpacing: true + }) + ) + .pipe(gulp.dest((file) => file.base)); +} + +export function scripts() { + return browserify('src/main.js') + .transform('babelify', { + presets: [ + [ + '@babel/preset-env' + ] + ] + }) + .plugin('tinyify') + .bundle() + .pipe(fs.createWriteStream(DEST_FILE)); +} + +export function banner() { + const pkg = require('./package.json'); + + return gulp + .src(DEST_FILE) + .pipe(header(fs.readFileSync('./banner', 'utf-8'), { pkg, updated: new Date().toLocaleString() })) + .pipe(gulp.dest((file) => file.base)); +} + +const build = gulp.series(styles, scripts, banner); + +export default build; diff --git a/backend/package-lock.json b/backend/package-lock.json index fe94f26..db8b633 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -1,12 +1,12 @@ { - "name": "sub-store-backend", - "version": "0.0.1", + "name": "sub-store", + "version": "1.5.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "sub-store-backend", - "version": "0.0.1", + "name": "sub-store", + "version": "1.5.1", "license": "GPL", "dependencies": { "body-parser": "^1.19.0", @@ -16,11 +16,1742 @@ "static-js-yaml": "^1.0.0" }, "devDependencies": { + "@babel/core": "^7.18.0", + "@babel/preset-env": "^7.18.0", + "@babel/register": "^7.17.7", + "@types/gulp": "^4.0.9", "axios": "^0.20.0", + "babelify": "^10.0.0", + "browser-pack-flat": "^3.4.2", "browserify": "^17.0.0", + "gulp": "^4.0.2", + "gulp-babel": "^8.0.0", + "gulp-header": "^2.0.9", + "gulp-prettier": "^4.0.0", + "prettier": "2.6.2", + "prettier-plugin-sort-imports": "^1.6.1", "tinyify": "^3.0.0" } }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.18.0.tgz", + "integrity": "sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.0", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.0", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/generator": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.18.0.tgz", + "integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.0", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.17.10", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", + "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", + "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.18.0.tgz", + "integrity": "sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/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/@babel/highlight/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/@babel/highlight/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/@babel/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.17.12", + "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.17.12.tgz", + "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", + "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", + "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", + "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", + "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", + "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@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-proposal-json-strings": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", + "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", + "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@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-proposal-nullish-coalescing-operator": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", + "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@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-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", + "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@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-proposal-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", + "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", + "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", + "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12", + "@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-proposal-unicode-property-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", + "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=4" + }, + "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-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.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", + "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "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-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-transform-arrow-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", + "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", + "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.17.12.tgz", + "integrity": "sha512-jw8XW/B1i7Lqwqj2CbrViPcZijSxfguBWZP2aN59NHgxUyO/OcO1mfdCxH13QhN5LbWhPkX+f+brKGhZTiqtZQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.17.12.tgz", + "integrity": "sha512-cvO7lc7pZat6BsvH6l/EGaI8zpl8paICaoGk+7x7guvtfak/TbIf66nYmJOH13EuG0H+Xx3M+9LQDtSvZFKXKw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "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.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", + "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", + "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", + "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.1", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", + "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", + "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", + "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.0.tgz", + "integrity": "sha512-cCeR0VZWtfxWS4YueAK2qtHtBPJRSaJcMlbS8jhSIm/A3E2Kpro4W1Dn4cqJtp59dtWfXjQwK7SPKF8ghs7rlw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.0.tgz", + "integrity": "sha512-vwKpxdHnlM5tIrRt/eA0bzfbi7gUBLN08vLu38np1nZevlPySRe6yvuATJB5F/WPJ+ur4OXwpVYq9+BsxqAQuQ==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", + "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", + "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", + "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", + "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", + "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", + "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", + "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.17.12.tgz", + "integrity": "sha512-kAKJ7DX1dSRa2s7WN1xUAuaQmkTpN+uig4wCKWivVXIObqGbVTUlSavHyfI2iZvz89GFAMGm9p2DBJ4Y1Tp0hw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", + "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.18.0.tgz", + "integrity": "sha512-cP74OMs7ECLPeG1reiCQ/D/ypyOxgfm8uR6HRYV23vTJ7Lu1nbgj9DQDo/vH59gnn7GOAwtTDPPYV4aXzsMKHA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", + "@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.17.12", + "@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-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.17.12", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.0", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.17.12", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/register/-/register-7.17.7.tgz", + "integrity": "sha512-fg56SwvXRifootQEDQAu1mKdjh5uthPzdO0N6t358FktfL4XjAVXuH58ULoiW8mesxiOgNIrxiImqEwv0+hRRA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.5", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.0.tgz", + "integrity": "sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.18.0.tgz", + "integrity": "sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.0", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.18.0", + "@babel/types": "^7.18.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/types": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.18.0.tgz", + "integrity": "sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@goto-bus-stop/common-shake": { "version": "2.4.0", "resolved": "https://registry.npmmirror.com/@goto-bus-stop/common-shake/-/common-shake-2.4.0.tgz", @@ -79,6 +1810,278 @@ "integrity": "sha512-5TXltWJGc+RdnabUGzhRae1TRq6m4gr+3K2wQX0is5/F2yS6MJXJvLyI3ErAnsAXuJoGqvfVD5icRgim07DrxQ==", "dev": true }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmmirror.com/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "dev": true + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/glob-stream": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/@types/glob-stream/-/glob-stream-6.1.1.tgz", + "integrity": "sha512-AGOUTsTdbPkRS0qDeyeS+6KypmfVpbT5j23SN8UPG63qjKXNKjXn6V9wZUr8Fin0m9l8oGYaPK8b2WUMF8xI1A==", + "dev": true, + "dependencies": { + "@types/glob": "*", + "@types/node": "*" + } + }, + "node_modules/@types/gulp": { + "version": "4.0.9", + "resolved": "https://registry.npmmirror.com/@types/gulp/-/gulp-4.0.9.tgz", + "integrity": "sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q==", + "dev": true, + "dependencies": { + "@types/undertaker": "*", + "@types/vinyl-fs": "*", + "chokidar": "^3.3.1" + } + }, + "node_modules/@types/gulp/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/gulp/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/gulp/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/@types/gulp/node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "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/@types/gulp/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/@types/gulp/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/@types/gulp/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/@types/gulp/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/@types/gulp/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/@types/gulp/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/@types/gulp/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/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.35", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-17.0.35.tgz", + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "dev": true + }, + "node_modules/@types/undertaker": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@types/undertaker/-/undertaker-1.2.8.tgz", + "integrity": "sha512-gW3PRqCHYpo45XFQHJBhch7L6hytPsIe0QeLujlnFsjHPnXLhJcPdN6a9368d7aIQgH2I/dUTPFBlGeSNA3qOg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/undertaker-registry": "*", + "async-done": "~1.3.2" + } + }, + "node_modules/@types/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==", + "dev": true + }, + "node_modules/@types/vinyl": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@types/vinyl/-/vinyl-2.0.6.tgz", + "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", + "dev": true, + "dependencies": { + "@types/expect": "^1.20.4", + "@types/node": "*" + } + }, + "node_modules/@types/vinyl-fs": { + "version": "2.4.12", + "resolved": "https://registry.npmmirror.com/@types/vinyl-fs/-/vinyl-fs-2.4.12.tgz", + "integrity": "sha512-LgBpYIWuuGsihnlF+OOWWz4ovwCYlT03gd3DuLwex50cYZLmX3yrW+sFF9ndtmh7zcZpS6Ri47PrIu+fV+sbXw==", + "dev": true, + "dependencies": { + "@types/glob-stream": "*", + "@types/node": "*", + "@types/vinyl": "*" + } + }, "node_modules/accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -142,6 +2145,30 @@ "node": ">=0.4.2" } }, + "node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "dev": true, + "dependencies": { + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -160,6 +2187,55 @@ "node": ">=0.10.0" } }, + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dev": true, + "dependencies": { + "buffer-equal": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", @@ -168,6 +2244,66 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "dev": true, + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "dev": true, + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -179,6 +2315,90 @@ "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", "dev": true }, + "node_modules/array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "dev": true, + "dependencies": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "dependencies": { + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "dependencies": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-sort/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -238,11 +2458,65 @@ "inherits": "2.0.1" } }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "node_modules/async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "dev": true, + "dependencies": { + "async-done": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -275,12 +2549,122 @@ "follow-redirects": "^1.10.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.3.1", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babelify": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/babelify/-/babelify-10.0.0.tgz", + "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/bach": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "dev": true, + "dependencies": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", @@ -295,6 +2679,25 @@ "tweetnacl": "^0.14.3" } }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/bn.js": { "version": "5.2.0", "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.0.tgz", @@ -331,6 +2734,27 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz", @@ -585,6 +3009,25 @@ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, + "node_modules/browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/buffer": { "version": "5.2.1", "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.2.1.tgz", @@ -595,6 +3038,15 @@ "ieee754": "^1.1.4" } }, + "node_modules/buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", @@ -637,6 +3089,26 @@ "node": ">= 0.8" } }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/cached-path-relative": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/cached-path-relative/-/cached-path-relative-1.1.0.tgz", @@ -664,6 +3136,21 @@ "estraverse": "^4.0.0" } }, + "node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001342", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001342.tgz", + "integrity": "sha512-bn6sOCu7L7jcbBbyNhLg0qzXdJ/PMbybZTH/BA6Roet9wxYRm6Tr9D0s0uhLkOZ6MSG+QU6txUgdpr3MXIVqjA==", + "dev": true + }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -685,6 +3172,29 @@ "node": ">=0.10.0" } }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, "node_modules/cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz", @@ -695,6 +3205,224 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "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/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "dev": true, + "dependencies": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, "node_modules/combine-source-map": { "version": "0.8.0", "resolved": "https://registry.npmmirror.com/combine-source-map/-/combine-source-map-0.8.0.tgz", @@ -746,6 +3474,18 @@ "safe-buffer": "~5.1.1" } }, + "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/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", @@ -766,6 +3506,24 @@ "typedarray": "^0.0.6" } }, + "node_modules/concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/concat-with-sourcemaps/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/console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz", @@ -816,6 +3574,53 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "dev": true, + "dependencies": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "node_modules/copy-props/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js-compat": { + "version": "3.22.6", + "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.22.6.tgz", + "integrity": "sha512-dQ/SxlHcuiywaPIoSUCU6Fx+Mk/H5TXENqd/ZJcK85ta0ZcQkbzHwblxPeL0hF5o+NsT2uK3q9ZOG5TboiVuWw==", + "dev": true, + "dependencies": { + "browserslist": "^4.20.3", + "semver": "7.0.0" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -930,6 +3735,24 @@ "ms": "2.0.0" } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmmirror.com/dedent/-/dedent-0.7.0.tgz", @@ -956,6 +3779,36 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "dependencies": { + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-compare/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/define-properties": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.1.4.tgz", @@ -969,6 +3822,19 @@ "node": ">= 0.4" } }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/defined": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/defined/-/defined-1.0.0.tgz", @@ -1021,6 +3887,15 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/detective": { "version": "5.2.0", "resolved": "https://registry.npmmirror.com/detective/-/detective-5.2.0.tgz", @@ -1106,6 +3981,16 @@ "node": ">= 6" } }, + "node_modules/each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -1120,6 +4005,12 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "node_modules/electron-to-chromium": { + "version": "1.4.137", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", + "dev": true + }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz", @@ -1164,6 +4055,15 @@ "once": "^1.4.0" } }, + "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/es-abstract": { "version": "1.20.1", "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.20.1.tgz", @@ -1297,6 +4197,15 @@ "es6-symbol": "^3.1.1" } }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1479,6 +4388,119 @@ "safe-buffer": "^5.1.1" } }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -1539,6 +4561,49 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -1564,6 +4629,21 @@ "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, + "node_modules/fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "dependencies": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -1586,6 +4666,28 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -1603,6 +4705,82 @@ "node": ">= 0.8" } }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, "node_modules/follow-redirects": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", @@ -1621,6 +4799,27 @@ "is-callable": "^1.1.3" } }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -1650,6 +4849,18 @@ "node": ">= 0.6" } }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -1677,12 +4888,44 @@ "from2": "^2.0.3" } }, + "node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", @@ -1709,12 +4952,27 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "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-assigned-identifiers": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", "dev": true }, + "node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, "node_modules/get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz", @@ -1739,6 +4997,15 @@ "node": ">= 0.4" } }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -1764,6 +5031,253 @@ "node": "*" } }, + "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==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.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==", + "dev": true, + "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-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmmirror.com/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "dependencies": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-babel": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/gulp-babel/-/gulp-babel-8.0.0.tgz", + "integrity": "sha512-oomaIqDXxFkg7lbpBou/gnUkX51/Y/M2ZfSjL2hdqXTAlSWZcgZtd2o0cOH0r/eE8LWD0+Q/PsLsr2DKOoqToQ==", + "dev": true, + "dependencies": { + "plugin-error": "^1.0.1", + "replace-ext": "^1.0.0", + "through2": "^2.0.0", + "vinyl-sourcemaps-apply": "^0.2.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-header": { + "version": "2.0.9", + "resolved": "https://registry.npmmirror.com/gulp-header/-/gulp-header-2.0.9.tgz", + "integrity": "sha512-LMGiBx+qH8giwrOuuZXSGvswcIUh0OiioNkUpLhNyvaC6/Ga8X6cfAeme2L5PqsbXMhL8o8b/OmVqIQdxprhcQ==", + "dev": true, + "dependencies": { + "concat-with-sourcemaps": "^1.1.0", + "lodash.template": "^4.5.0", + "map-stream": "0.0.7", + "through2": "^2.0.0" + } + }, + "node_modules/gulp-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/gulp-prettier/-/gulp-prettier-4.0.0.tgz", + "integrity": "sha512-REx99tBRRKJD7qLPaKpplReM9cq2vFvqhMbcUZtJEVjxGjb5Ji+gN9vi8bsM8UhnDV+l0Zrf5x6L4uZiDmvGFQ==", + "dev": true, + "dependencies": { + "plugin-error": "^1.0.1", + "prettier": "^2.0.0", + "through2": "^4.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/gulp-prettier/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gulp-prettier/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dev": true, + "dependencies": { + "glogg": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -1814,6 +5328,15 @@ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "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.0", "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", @@ -1844,6 +5367,45 @@ "node": ">= 0.4" } }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/hash-base": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz", @@ -1905,6 +5467,24 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/htmlescape": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/htmlescape/-/htmlescape-1.1.1.tgz", @@ -1981,6 +5561,12 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "node_modules/inline-source-map": { "version": "0.6.2", "resolved": "https://registry.npmmirror.com/inline-source-map/-/inline-source-map-0.6.2.tgz", @@ -2025,6 +5611,24 @@ "node": ">= 0.4" } }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -2033,6 +5637,31 @@ "node": ">= 0.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==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", @@ -2046,6 +5675,12 @@ "node": ">= 0.4" } }, + "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-bigint": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz", @@ -2055,6 +5690,18 @@ "has-bigints": "^1.0.1" } }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -2092,6 +5739,18 @@ "has": "^1.0.3" } }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz", @@ -2104,6 +5763,50 @@ "node": ">= 0.4" } }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz", @@ -2116,6 +5819,27 @@ "node": ">= 0.4" } }, + "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-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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -2125,6 +5849,18 @@ "node": ">= 0.4" } }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz", @@ -2137,6 +5873,30 @@ "node": ">= 0.4" } }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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-regex": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", @@ -2150,6 +5910,18 @@ "node": ">= 0.4" } }, + "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==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -2204,6 +5976,33 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "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==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz", @@ -2213,11 +6012,35 @@ "call-bind": "^1.0.2" } }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "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/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -2228,6 +6051,12 @@ "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.2.tgz", "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" }, + "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", @@ -2245,6 +6074,18 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, + "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-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -2255,11 +6096,29 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "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==", + "dev": true + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz", @@ -2299,6 +6158,21 @@ "verror": "1.10.0" } }, + "node_modules/just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", + "dev": true + }, + "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/labeled-stream-splicer": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", @@ -2309,6 +6183,55 @@ "stream-splicer": "^2.0.0" } }, + "node_modules/last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "dev": true, + "dependencies": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dev": true, + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dev": true, + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz", @@ -2322,12 +6245,100 @@ "node": ">= 0.8.0" } }, + "node_modules/liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "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.memoize": { "version": "3.0.4", "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz", "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", "dev": true }, + "node_modules/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0" + } + }, "node_modules/magic-string": { "version": "0.23.2", "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.23.2.tgz", @@ -2337,6 +6348,109 @@ "sourcemap-codec": "^1.4.1" } }, + "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, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmmirror.com/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==", + "dev": true + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "dev": true, + "dependencies": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/matchdep/node_modules/findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/matchdep/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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz", @@ -2378,6 +6492,55 @@ "node": ">= 0.6" } }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz", @@ -2512,6 +6675,31 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmmirror.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", @@ -2579,6 +6767,15 @@ "integrity": "sha512-KU5tVjIdTGsMb92JlWwEZCGrvtI1ku9G9GuNbWdQT/Ici1ztFXX0L8lWpbbC3pISVMfBNL56wdqplHvva2XSlA==", "dev": true }, + "node_modules/mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/mutexify": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/mutexify/-/mutexify-1.4.0.tgz", @@ -2588,6 +6785,13 @@ "queue-tick": "^1.0.0" } }, + "node_modules/nan": { + "version": "2.15.0", + "resolved": "https://registry.npmmirror.com/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true, + "optional": true + }, "node_modules/nanobench": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/nanobench/-/nanobench-2.1.1.tgz", @@ -2604,6 +6808,53 @@ "nanobench-compare": "compare.js" } }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -2618,6 +6869,63 @@ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true }, + "node_modules/node-releases": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "dev": true + }, + "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.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -2635,6 +6943,91 @@ "node": ">=0.10.0" } }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.12.1", "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.1.tgz", @@ -2663,6 +7056,18 @@ "node": ">= 0.4" } }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object.assign": { "version": "4.1.2", "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.2.tgz", @@ -2678,6 +7083,59 @@ "node": ">= 0.4" } }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dev": true, + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "dev": true, + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -2715,12 +7173,66 @@ "node": ">= 0.8.0" } }, + "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==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dev": true, + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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": "3.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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/pako": { "version": "1.0.11", "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", @@ -2749,6 +7261,50 @@ "safe-buffer": "^5.1.1" } }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -2757,12 +7313,36 @@ "node": ">= 0.8" } }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "dev": true }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2787,11 +7367,55 @@ "node": ">= 0.8.0" } }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-type/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, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz", @@ -2813,6 +7437,121 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/plugin-error/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/plugin-error/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -2822,6 +7561,28 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/prettier-plugin-sort-imports": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-1.6.1.tgz", + "integrity": "sha512-qqknrB5ozMilKig/xWrs9K2zivZMHU6pjU3H4Up34VpFD1MsPm0m0WfduaRDbaCNHkKx+rLRfR/AyTr0tPY0Iw==", + "dev": true, + "dependencies": { + "prettier": "^2.5.1", + "typescript": "^4.0.3" + } + }, "node_modules/pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -2882,6 +7643,39 @@ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, + "node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -3033,6 +7827,58 @@ "readable-stream": "^2.0.2" } }, + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz", @@ -3055,6 +7901,103 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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.0.1", + "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -3069,6 +8012,124 @@ "node": ">= 0.4" } }, + "node_modules/regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "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/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dev": true, + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "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==", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -3108,6 +8169,21 @@ "node": ">=0.6" } }, + "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-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, "node_modules/resolve": { "version": "1.22.0", "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.0.tgz", @@ -3122,6 +8198,47 @@ "resolve": "bin/resolve" } }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dev": true, + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, "node_modules/ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz", @@ -3137,6 +8254,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -3163,6 +8289,27 @@ "integrity": "sha512-5TXltWJGc+RdnabUGzhRae1TRq6m4gr+3K2wQX0is5/F2yS6MJXJvLyI3ErAnsAXuJoGqvfVD5icRgim07DrxQ==", "dev": true }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "dev": true, + "dependencies": { + "sver-compat": "^1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -3205,6 +8352,27 @@ "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -3223,6 +8391,18 @@ "sha.js": "bin.js" } }, + "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/shallow-copy": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/shallow-copy/-/shallow-copy-0.0.1.tgz", @@ -3260,6 +8440,158 @@ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "dev": true }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz", @@ -3269,6 +8601,20 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.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", @@ -3288,12 +8634,97 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "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.11", + "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -3323,6 +8754,15 @@ "node": ">=0.10.0" } }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmmirror.com/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/static-eval": { "version": "0.2.4", "resolved": "https://registry.npmmirror.com/static-eval/-/static-eval-0.2.4.tgz", @@ -3370,6 +8810,102 @@ "node": ">=0.4.0" } }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/static-js-yaml": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/static-js-yaml/-/static-js-yaml-1.0.0.tgz", @@ -3616,6 +9152,12 @@ "readable-stream": "^2.0.2" } }, + "node_modules/stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, "node_modules/stream-http": { "version": "3.2.0", "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-3.2.0.tgz", @@ -3679,6 +9221,20 @@ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/string.prototype.trimend": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", @@ -3713,6 +9269,18 @@ "node": ">=0.10.0" } }, + "node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/subarg": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/subarg/-/subarg-1.0.0.tgz", @@ -3740,6 +9308,16 @@ "node": ">= 0.4" } }, + "node_modules/sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "dev": true, + "dependencies": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, "node_modules/syntax-error": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/syntax-error/-/syntax-error-1.4.0.tgz", @@ -3791,6 +9369,25 @@ "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==", + "dev": true, + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/timers-browserify": { "version": "1.4.2", "resolved": "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-1.4.2.tgz", @@ -3838,6 +9435,117 @@ "readable-stream": "2 || 3" } }, + "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==", + "dev": true, + "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-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dev": true, + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -3948,6 +9656,19 @@ "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, + "node_modules/typescript": { + "version": "4.6.4", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/uglifyify": { "version": "5.0.2", "resolved": "https://registry.npmmirror.com/uglifyify/-/uglifyify-5.0.2.tgz", @@ -4049,6 +9770,15 @@ "which-boxed-primitive": "^1.0.2" } }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/undeclared-identifiers": { "version": "1.1.3", "resolved": "https://registry.npmmirror.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", @@ -4065,6 +9795,107 @@ "undeclared-identifiers": "bin.js" } }, + "node_modules/undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker/node_modules/fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==", + "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.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.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==", + "dev": true, + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -4073,6 +9904,64 @@ "node": ">= 0.8" } }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, "node_modules/uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -4081,6 +9970,13 @@ "punycode": "^2.1.0" } }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, "node_modules/url": { "version": "0.11.0", "resolved": "https://registry.npmmirror.com/url/-/url-0.11.0.tgz", @@ -4097,6 +9993,15 @@ "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", "dev": true }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/util": { "version": "0.12.4", "resolved": "https://registry.npmmirror.com/util/-/util-0.12.4.tgz", @@ -4133,6 +10038,37 @@ "uuid": "bin/uuid" } }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -4154,12 +10090,117 @@ "extsprintf": "^1.2.0" } }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dev": true, + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap/node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/vinyl-sourcemap/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", + "dev": true, + "dependencies": { + "source-map": "^0.5.1" + } + }, "node_modules/vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, + "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/which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", @@ -4173,6 +10214,12 @@ "is-symbol": "^1.0.3" } }, + "node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", + "dev": true + }, "node_modules/which-typed-array": { "version": "1.1.8", "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.8.tgz", @@ -4199,6 +10246,19 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-comment": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/wrap-comment/-/wrap-comment-1.0.1.tgz", @@ -4218,9 +10278,1256 @@ "engines": { "node": ">=0.4" } + }, + "node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "node_modules/yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "node_modules/yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } } }, "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true + }, + "@babel/core": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.18.0.tgz", + "integrity": "sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.0", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.0", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.18.0.tgz", + "integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.0", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.10", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", + "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", + "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helpers": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.18.0.tgz", + "integrity": "sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + } + }, + "@babel/highlight": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "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, + "requires": { + "color-convert": "^1.9.0" + } + }, + "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, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.17.12", + "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.17.12.tgz", + "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", + "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.17.12" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", + "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", + "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", + "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", + "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", + "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", + "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", + "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", + "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.17.12" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", + "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", + "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", + "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", + "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", + "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", + "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", + "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.17.12.tgz", + "integrity": "sha512-jw8XW/B1i7Lqwqj2CbrViPcZijSxfguBWZP2aN59NHgxUyO/OcO1mfdCxH13QhN5LbWhPkX+f+brKGhZTiqtZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.17.12.tgz", + "integrity": "sha512-cvO7lc7pZat6BsvH6l/EGaI8zpl8paICaoGk+7x7guvtfak/TbIf66nYmJOH13EuG0H+Xx3M+9LQDtSvZFKXKw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", + "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", + "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", + "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.1", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", + "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", + "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", + "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.0.tgz", + "integrity": "sha512-cCeR0VZWtfxWS4YueAK2qtHtBPJRSaJcMlbS8jhSIm/A3E2Kpro4W1Dn4cqJtp59dtWfXjQwK7SPKF8ghs7rlw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.0.tgz", + "integrity": "sha512-vwKpxdHnlM5tIrRt/eA0bzfbi7gUBLN08vLu38np1nZevlPySRe6yvuATJB5F/WPJ+ur4OXwpVYq9+BsxqAQuQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", + "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", + "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", + "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", + "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", + "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", + "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", + "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.17.12.tgz", + "integrity": "sha512-kAKJ7DX1dSRa2s7WN1xUAuaQmkTpN+uig4wCKWivVXIObqGbVTUlSavHyfI2iZvz89GFAMGm9p2DBJ4Y1Tp0hw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.17.12", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", + "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/preset-env": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.18.0.tgz", + "integrity": "sha512-cP74OMs7ECLPeG1reiCQ/D/ypyOxgfm8uR6HRYV23vTJ7Lu1nbgj9DQDo/vH59gnn7GOAwtTDPPYV4aXzsMKHA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", + "@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.17.12", + "@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-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.17.12", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.0", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.17.12", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/register": { + "version": "7.17.7", + "resolved": "https://registry.npmmirror.com/@babel/register/-/register-7.17.7.tgz", + "integrity": "sha512-fg56SwvXRifootQEDQAu1mKdjh5uthPzdO0N6t358FktfL4XjAVXuH58ULoiW8mesxiOgNIrxiImqEwv0+hRRA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.5", + "source-map-support": "^0.5.16" + } + }, + "@babel/runtime": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.0.tgz", + "integrity": "sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.18.0.tgz", + "integrity": "sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.0", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.18.0", + "@babel/types": "^7.18.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.18.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.18.0.tgz", + "integrity": "sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, "@goto-bus-stop/common-shake": { "version": "2.4.0", "resolved": "https://registry.npmmirror.com/@goto-bus-stop/common-shake/-/common-shake-2.4.0.tgz", @@ -4280,6 +11587,232 @@ } } }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmmirror.com/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "dev": true + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/glob-stream": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/@types/glob-stream/-/glob-stream-6.1.1.tgz", + "integrity": "sha512-AGOUTsTdbPkRS0qDeyeS+6KypmfVpbT5j23SN8UPG63qjKXNKjXn6V9wZUr8Fin0m9l8oGYaPK8b2WUMF8xI1A==", + "dev": true, + "requires": { + "@types/glob": "*", + "@types/node": "*" + } + }, + "@types/gulp": { + "version": "4.0.9", + "resolved": "https://registry.npmmirror.com/@types/gulp/-/gulp-4.0.9.tgz", + "integrity": "sha512-zzT+wfQ8uwoXjDhRK9Zkmmk09/fbLLmN/yDHFizJiEKIve85qutOnXcP/TM2sKPBTU+Jc16vfPbOMkORMUBN7Q==", + "dev": true, + "requires": { + "@types/undertaker": "*", + "@types/vinyl-fs": "*", + "chokidar": "^3.3.1" + }, + "dependencies": { + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "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, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "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, + "requires": { + "is-glob": "^4.0.1" + } + }, + "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, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "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 + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "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, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/node": { + "version": "17.0.35", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-17.0.35.tgz", + "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==", + "dev": true + }, + "@types/undertaker": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@types/undertaker/-/undertaker-1.2.8.tgz", + "integrity": "sha512-gW3PRqCHYpo45XFQHJBhch7L6hytPsIe0QeLujlnFsjHPnXLhJcPdN6a9368d7aIQgH2I/dUTPFBlGeSNA3qOg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/undertaker-registry": "*", + "async-done": "~1.3.2" + } + }, + "@types/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@types/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==", + "dev": true + }, + "@types/vinyl": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@types/vinyl/-/vinyl-2.0.6.tgz", + "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", + "dev": true, + "requires": { + "@types/expect": "^1.20.4", + "@types/node": "*" + } + }, + "@types/vinyl-fs": { + "version": "2.4.12", + "resolved": "https://registry.npmmirror.com/@types/vinyl-fs/-/vinyl-fs-2.4.12.tgz", + "integrity": "sha512-LgBpYIWuuGsihnlF+OOWWz4ovwCYlT03gd3DuLwex50cYZLmX3yrW+sFF9ndtmh7zcZpS6Ri47PrIu+fV+sbXw==", + "dev": true, + "requires": { + "@types/glob-stream": "*", + "@types/node": "*", + "@types/vinyl": "*" + } + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -4328,6 +11861,24 @@ "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", "devOptional": true }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -4340,6 +11891,48 @@ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz", @@ -4348,6 +11941,48 @@ "sprintf-js": "~1.0.2" } }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "dev": true + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -4359,6 +11994,72 @@ "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", "dev": true }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "dev": true, + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -4419,11 +12120,50 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "dev": true, + "requires": { + "async-done": "^1.2.2" + } + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -4449,12 +12189,101 @@ "follow-redirects": "^1.10.0" } }, + "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, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "babelify": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/babelify/-/babelify-10.0.0.tgz", + "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", + "dev": true, + "requires": {} + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "dev": true, + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", @@ -4469,6 +12298,22 @@ "tweetnacl": "^0.14.3" } }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bn.js": { "version": "5.2.0", "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.0.tgz", @@ -4502,6 +12347,24 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz", @@ -4744,6 +12607,19 @@ "pako": "~1.0.5" } }, + "browserslist": { + "version": "4.20.3", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", + "escalade": "^3.1.1", + "node-releases": "^2.0.3", + "picocolors": "^1.0.0" + } + }, "buffer": { "version": "5.2.1", "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.2.1.tgz", @@ -4754,6 +12630,12 @@ "ieee754": "^1.1.4" } }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==", + "dev": true + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", @@ -4790,6 +12672,23 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, "cached-path-relative": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/cached-path-relative/-/cached-path-relative-1.1.0.tgz", @@ -4817,6 +12716,18 @@ "estraverse": "^4.0.0" } }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001342", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001342.tgz", + "integrity": "sha512-bn6sOCu7L7jcbBbyNhLg0qzXdJ/PMbybZTH/BA6Roet9wxYRm6Tr9D0s0uhLkOZ6MSG+QU6txUgdpr3MXIVqjA==", + "dev": true + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -4835,6 +12746,26 @@ "supports-color": "^2.0.0" } }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz", @@ -4845,6 +12776,185 @@ "safe-buffer": "^5.0.1" } }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true + }, + "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, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "dev": true, + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "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, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, "combine-source-map": { "version": "0.8.0", "resolved": "https://registry.npmmirror.com/combine-source-map/-/combine-source-map-0.8.0.tgz", @@ -4895,6 +13005,18 @@ } } }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", @@ -4912,6 +13034,23 @@ "typedarray": "^0.0.6" } }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "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 + } + } + }, "console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz", @@ -4953,6 +13092,48 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "dev": true, + "requires": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + } + } + }, + "core-js-compat": { + "version": "3.22.6", + "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.22.6.tgz", + "integrity": "sha512-dQ/SxlHcuiywaPIoSUCU6Fx+Mk/H5TXENqd/ZJcK85ta0ZcQkbzHwblxPeL0hF5o+NsT2uK3q9ZOG5TboiVuWw==", + "dev": true, + "requires": { + "browserslist": "^4.20.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -5060,6 +13241,18 @@ "ms": "2.0.0" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true + }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmmirror.com/dedent/-/dedent-0.7.0.tgz", @@ -5086,6 +13279,29 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "requires": { + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", + "dev": true + }, "define-properties": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.1.4.tgz", @@ -5096,6 +13312,16 @@ "object-keys": "^1.1.1" } }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, "defined": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/defined/-/defined-1.0.0.tgz", @@ -5139,6 +13365,12 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true + }, "detective": { "version": "5.2.0", "resolved": "https://registry.npmmirror.com/detective/-/detective-5.2.0.tgz", @@ -5215,6 +13447,16 @@ } } }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -5229,6 +13471,12 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "electron-to-chromium": { + "version": "1.4.137", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.137.tgz", + "integrity": "sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==", + "dev": true + }, "elliptic": { "version": "6.5.4", "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz", @@ -5272,6 +13520,15 @@ "once": "^1.4.0" } }, + "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, + "requires": { + "is-arrayish": "^0.2.1" + } + }, "es-abstract": { "version": "1.20.1", "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.20.1.tgz", @@ -5397,6 +13654,12 @@ "es6-symbol": "^3.1.1" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -5540,6 +13803,98 @@ "safe-buffer": "^5.1.1" } }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -5599,6 +13954,42 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -5620,6 +14011,18 @@ } } }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5642,6 +14045,25 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -5656,6 +14078,67 @@ "unpipe": "~1.0.0" } }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, "follow-redirects": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", @@ -5671,6 +14154,21 @@ "is-callable": "^1.1.3" } }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -5691,6 +14189,15 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -5715,12 +14222,33 @@ "from2": "^2.0.3" } }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", @@ -5744,12 +14272,24 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, + "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 + }, "get-assigned-identifiers": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", "dev": true }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, "get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz", @@ -5771,6 +14311,12 @@ "get-intrinsic": "^1.1.1" } }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -5793,6 +14339,209 @@ "path-is-absolute": "^1.0.0" } }, + "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==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dev": true, + "requires": { + "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" + } + }, + "glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmmirror.com/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "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 + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + } + }, + "gulp-babel": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/gulp-babel/-/gulp-babel-8.0.0.tgz", + "integrity": "sha512-oomaIqDXxFkg7lbpBou/gnUkX51/Y/M2ZfSjL2hdqXTAlSWZcgZtd2o0cOH0r/eE8LWD0+Q/PsLsr2DKOoqToQ==", + "dev": true, + "requires": { + "plugin-error": "^1.0.1", + "replace-ext": "^1.0.0", + "through2": "^2.0.0", + "vinyl-sourcemaps-apply": "^0.2.0" + } + }, + "gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + } + }, + "gulp-header": { + "version": "2.0.9", + "resolved": "https://registry.npmmirror.com/gulp-header/-/gulp-header-2.0.9.tgz", + "integrity": "sha512-LMGiBx+qH8giwrOuuZXSGvswcIUh0OiioNkUpLhNyvaC6/Ga8X6cfAeme2L5PqsbXMhL8o8b/OmVqIQdxprhcQ==", + "dev": true, + "requires": { + "concat-with-sourcemaps": "^1.1.0", + "lodash.template": "^4.5.0", + "map-stream": "0.0.7", + "through2": "^2.0.0" + } + }, + "gulp-prettier": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/gulp-prettier/-/gulp-prettier-4.0.0.tgz", + "integrity": "sha512-REx99tBRRKJD7qLPaKpplReM9cq2vFvqhMbcUZtJEVjxGjb5Ji+gN9vi8bsM8UhnDV+l0Zrf5x6L4uZiDmvGFQ==", + "dev": true, + "requires": { + "plugin-error": "^1.0.1", + "prettier": "^2.0.0", + "through2": "^4.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -5830,6 +14579,12 @@ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true }, + "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 + }, "has-property-descriptors": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", @@ -5854,6 +14609,38 @@ "has-symbols": "^1.0.2" } }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "hash-base": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz", @@ -5911,6 +14698,21 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "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 + }, "htmlescape": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/htmlescape/-/htmlescape-1.1.1.tgz", @@ -5974,6 +14776,12 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "inline-source-map": { "version": "0.6.2", "resolved": "https://registry.npmmirror.com/inline-source-map/-/inline-source-map-0.6.2.tgz", @@ -6012,11 +14820,42 @@ "side-channel": "^1.0.4" } }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "dev": true + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "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==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, "is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", @@ -6027,6 +14866,12 @@ "has-tostringtag": "^1.0.0" } }, + "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 + }, "is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz", @@ -6036,6 +14881,15 @@ "has-bigints": "^1.0.1" } }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, "is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -6067,6 +14921,15 @@ "has": "^1.0.3" } }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, "is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz", @@ -6076,6 +14939,38 @@ "has-tostringtag": "^1.0.0" } }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, "is-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz", @@ -6085,12 +14980,47 @@ "has-tostringtag": "^1.0.0" } }, + "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, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "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==", + "dev": true + }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz", "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz", @@ -6100,6 +15030,15 @@ "has-tostringtag": "^1.0.0" } }, + "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, + "requires": { + "isobject": "^3.0.1" + } + }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", @@ -6110,6 +15049,15 @@ "has-tostringtag": "^1.0.0" } }, + "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==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, "is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -6155,6 +15103,27 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "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==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "dev": true + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz", @@ -6164,11 +15133,29 @@ "call-bind": "^1.0.2" } }, + "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==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -6179,6 +15166,12 @@ "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.2.tgz", "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" }, + "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 + }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz", @@ -6193,6 +15186,12 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -6203,11 +15202,23 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "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==", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz", @@ -6235,6 +15246,18 @@ "verror": "1.10.0" } }, + "just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", + "dev": true + }, + "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 + }, "labeled-stream-splicer": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", @@ -6245,6 +15268,43 @@ "stream-splicer": "^2.0.0" } }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz", @@ -6255,12 +15315,90 @@ "type-check": "~0.3.2" } }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true + }, + "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 + }, "lodash.memoize": { "version": "3.0.4", "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz", "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", "dev": true }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, "magic-string": { "version": "0.23.2", "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.23.2.tgz", @@ -6270,6 +15408,89 @@ "sourcemap-codec": "^1.4.1" } }, + "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, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmmirror.com/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz", @@ -6305,6 +15526,48 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz", @@ -6416,6 +15679,27 @@ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmmirror.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", @@ -6476,6 +15760,12 @@ "integrity": "sha512-KU5tVjIdTGsMb92JlWwEZCGrvtI1ku9G9GuNbWdQT/Ici1ztFXX0L8lWpbbC3pISVMfBNL56wdqplHvva2XSlA==", "dev": true }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, "mutexify": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/mutexify/-/mutexify-1.4.0.tgz", @@ -6485,6 +15775,13 @@ "queue-tick": "^1.0.0" } }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmmirror.com/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true, + "optional": true + }, "nanobench": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/nanobench/-/nanobench-2.1.1.tgz", @@ -6497,6 +15794,46 @@ "pretty-hrtime": "^1.0.2" } }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -6508,6 +15845,53 @@ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true }, + "node-releases": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "dev": true + }, + "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, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "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 + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -6519,6 +15903,74 @@ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "object-inspect": { "version": "1.12.1", "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.1.tgz", @@ -6541,6 +15993,15 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, "object.assign": { "version": "4.1.2", "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.2.tgz", @@ -6553,6 +16014,47 @@ "object-keys": "^1.1.1" } }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -6584,12 +16086,54 @@ "word-wrap": "~1.2.3" } }, + "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==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", @@ -6618,17 +16162,67 @@ "safe-buffer": "^5.1.1" } }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "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 + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, "path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "dev": true }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -6647,11 +16241,45 @@ "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", "dev": true }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, "pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz", @@ -6670,12 +16298,115 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, + "prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "dev": true + }, + "prettier-plugin-sort-imports": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-1.6.1.tgz", + "integrity": "sha512-qqknrB5ozMilKig/xWrs9K2zivZMHU6pjU3H4Up34VpFD1MsPm0m0WfduaRDbaCNHkKx+rLRfR/AyTr0tPY0Iw==", + "dev": true, + "requires": { + "prettier": "^2.5.1", + "typescript": "^4.0.3" + } + }, "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -6729,6 +16460,41 @@ } } }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + } + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -6860,6 +16626,48 @@ "readable-stream": "^2.0.2" } }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz", @@ -6884,6 +16692,87 @@ } } }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -6895,6 +16784,99 @@ "functions-have-names": "^1.2.2" } }, + "regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dev": true, + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "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==", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -6929,6 +16911,18 @@ } } }, + "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 + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, "resolve": { "version": "1.22.0", "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.0.tgz", @@ -6940,6 +16934,37 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dev": true, + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz", @@ -6955,6 +16980,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -6983,6 +17017,21 @@ } } }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -7021,6 +17070,24 @@ "send": "0.17.1" } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -7036,6 +17103,15 @@ "safe-buffer": "^5.0.1" } }, + "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, + "requires": { + "kind-of": "^6.0.2" + } + }, "shallow-copy": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/shallow-copy/-/shallow-copy-0.0.1.tgz", @@ -7073,12 +17149,151 @@ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "dev": true }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "devOptional": true }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", @@ -7097,12 +17312,86 @@ } } }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, "sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "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, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -7124,6 +17413,12 @@ "tweetnacl": "~0.14.0" } }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmmirror.com/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true + }, "static-eval": { "version": "0.2.4", "resolved": "https://registry.npmmirror.com/static-eval/-/static-eval-0.2.4.tgz", @@ -7154,6 +17449,84 @@ } } }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "static-js-yaml": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/static-js-yaml/-/static-js-yaml-1.0.0.tgz", @@ -7374,6 +17747,12 @@ "readable-stream": "^2.0.2" } }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, "stream-http": { "version": "3.2.0", "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-3.2.0.tgz", @@ -7438,6 +17817,17 @@ } } }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, "string.prototype.trimend": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", @@ -7469,6 +17859,15 @@ "ansi-regex": "^2.0.0" } }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, "subarg": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/subarg/-/subarg-1.0.0.tgz", @@ -7490,6 +17889,16 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, "syntax-error": { "version": "1.4.0", "resolved": "https://registry.npmmirror.com/syntax-error/-/syntax-error-1.4.0.tgz", @@ -7534,6 +17943,22 @@ "xtend": "~4.0.1" } }, + "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==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", + "dev": true + }, "timers-browserify": { "version": "1.4.2", "resolved": "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-1.4.2.tgz", @@ -7580,6 +18005,94 @@ } } }, + "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==", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "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 + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dev": true, + "requires": { + "through2": "^2.0.3" + } + }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -7674,6 +18187,12 @@ "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, + "typescript": { + "version": "4.6.4", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "dev": true + }, "uglifyify": { "version": "5.0.2", "resolved": "https://registry.npmmirror.com/uglifyify/-/uglifyify-5.0.2.tgz", @@ -7761,6 +18280,12 @@ "which-boxed-primitive": "^1.0.2" } }, + "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==", + "dev": true + }, "undeclared-identifiers": { "version": "1.1.3", "resolved": "https://registry.npmmirror.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", @@ -7774,11 +18299,139 @@ "xtend": "^4.0.1" } }, + "undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "dependencies": { + "fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==", + "dev": true + } + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -7787,6 +18440,12 @@ "punycode": "^2.1.0" } }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmmirror.com/url/-/url-0.11.0.tgz", @@ -7805,6 +18464,12 @@ } } }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, "util": { "version": "0.12.4", "resolved": "https://registry.npmmirror.com/util/-/util-0.12.4.tgz", @@ -7834,6 +18499,31 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "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, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "dev": true + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -7849,12 +18539,104 @@ "extsprintf": "^1.2.0" } }, + "vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", + "dev": true, + "requires": { + "source-map": "^0.5.1" + } + }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", @@ -7868,6 +18650,12 @@ "is-symbol": "^1.0.3" } }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", + "dev": true + }, "which-typed-array": { "version": "1.1.8", "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.8.tgz", @@ -7888,6 +18676,16 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, "wrap-comment": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/wrap-comment/-/wrap-comment-1.0.1.tgz", @@ -7904,6 +18702,43 @@ "version": "4.0.2", "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } } } } diff --git a/backend/package.json b/backend/package.json index 56483af..b607dd7 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,12 +1,12 @@ { "name": "sub-store", - "version": "1.5", + "version": "1.5.1", "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", "main": "src/main.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "serve": "node src/main.js", - "build": "browserify -p tinyify src/main.js > bundle && cat banner bundle > sub-store.min.js && rm bundle" + "build": "gulp" }, "author": "Peng-YM", "license": "GPL", @@ -18,8 +18,20 @@ "static-js-yaml": "^1.0.0" }, "devDependencies": { + "@babel/core": "^7.18.0", + "@babel/preset-env": "^7.18.0", + "@babel/register": "^7.17.7", + "@types/gulp": "^4.0.9", "axios": "^0.20.0", + "babelify": "^10.0.0", + "browser-pack-flat": "^3.4.2", "browserify": "^17.0.0", + "gulp": "^4.0.2", + "gulp-babel": "^8.0.0", + "gulp-header": "^2.0.9", + "gulp-prettier": "^4.0.0", + "prettier": "2.6.2", + "prettier-plugin-sort-imports": "^1.6.1", "tinyify": "^3.0.0" } } diff --git a/backend/src/core/app.js b/backend/src/core/app.js index 37be5d9..7102670 100644 --- a/backend/src/core/app.js +++ b/backend/src/core/app.js @@ -1,4 +1,4 @@ -const { API } = require('../utils/open-api'); +import { API } from '../utils/open-api'; const $ = API('sub-store'); -module.exports = $; \ No newline at end of file +export default $; diff --git a/backend/src/core/proxy-utils.js b/backend/src/core/proxy-utils.js index 3380193..a120b8b 100644 --- a/backend/src/core/proxy-utils.js +++ b/backend/src/core/proxy-utils.js @@ -1,1074 +1,1185 @@ -const YAML = require('static-js-yaml'); -const { Base64 } = require('js-base64'); +import { safeLoad } from 'static-js-yaml'; +import { Base64 } from 'js-base64'; -const { AND, FULL } = require('../utils/logical'); -const { getFlag } = require('../utils/geo'); -const download = require('../utils/download'); +import { AND, FULL } from '../utils/logical'; +import download from '../utils/download'; +import { getFlag } from '../utils/geo'; -const $ = require('./app'); +import $ from './app'; -const PROXY_PREPROCESSORS = (function() { - function HTML() { - const name = 'HTML'; - const test = (raw) => /^/.test(raw); - // simply discard HTML - const parse = (_) => ''; - return { name, test, parse }; - } +const PROXY_PREPROCESSORS = (function () { + function HTML() { + const name = 'HTML'; + const test = (raw) => /^/.test(raw); + // simply discard HTML + const parse = (_) => ''; + return { name, test, parse }; + } - function Base64Encoded() { - const name = 'Base64 Pre-processor'; + function Base64Encoded() { + const name = 'Base64 Pre-processor'; - const keys = [ 'dm1lc3M', 'c3NyOi8v', 'dHJvamFu', 'c3M6Ly', 'c3NkOi8v', 'c2hhZG93', 'aHR0c' ]; + const keys = [ + 'dm1lc3M', + 'c3NyOi8v', + 'dHJvamFu', + 'c3M6Ly', + 'c3NkOi8v', + 'c2hhZG93', + 'aHR0c', + ]; - const test = function(raw) { - return keys.some((k) => raw.indexOf(k) !== -1); - }; - const parse = function(raw) { - raw = Base64.decode(raw); - return raw; - }; - return { name, test, parse }; - } + const test = function (raw) { + return keys.some((k) => raw.indexOf(k) !== -1); + }; + const parse = function (raw) { + raw = Base64.decode(raw); + return raw; + }; + return { name, test, parse }; + } - function Clash() { - const name = 'Clash Pre-processor'; - const test = function(raw) { - return /proxies/.test(raw); - }; - const parse = function(raw) { - // Clash YAML format - const proxies = YAML.safeLoad(raw).proxies; - return proxies.map((p) => JSON.stringify(p)).join('\n'); - }; - return { name, test, parse }; - } + function Clash() { + const name = 'Clash Pre-processor'; + const test = function (raw) { + return /proxies/.test(raw); + }; + const parse = function (raw) { + // Clash YAML format + const proxies = safeLoad(raw).proxies; + return proxies.map((p) => JSON.stringify(p)).join('\n'); + }; + return { name, test, parse }; + } - function SSD() { - const name = 'SSD Pre-processor'; - const test = function(raw) { - return raw.indexOf('ssd://') === 0; - }; - const parse = function(raw) { - // preprocessing for SSD subscription format - const output = []; - let ssdinfo = JSON.parse(Base64.decode(raw.split('ssd://')[1])); - // options (traffic_used, traffic_total, expiry, url) - const traffic_used = ssdinfo.traffic_used; // GB - const traffic_total = ssdinfo.traffic_total; // GB, -1 means unlimited - const expiry = ssdinfo.expiry; // YYYY-MM-DD HH:mm:ss - // default setting - let name = ssdinfo.airport; // name of the airport - let port = ssdinfo.port; - let method = ssdinfo.encryption; - let password = ssdinfo.password; - // servers config - let servers = ssdinfo.servers; - for (let i = 0; i < servers.length; i++) { - let server = servers[i]; - method = server.encryption ? server.encryption : method; - password = server.password ? server.password : password; - let userinfo = Base64.encode(method + ':' + password); - let hostname = server.server; - port = server.port ? server.port : port; - let tag = server.remarks ? server.remarks : i; - let plugin = server.plugin_options - ? '/?plugin=' + encodeURIComponent(server.plugin + ';' + server.plugin_options) - : ''; - output[i] = 'ss://' + userinfo + '@' + hostname + ':' + port + plugin + '#' + tag; - } - return output.join('\n'); - }; - return { name, test, parse }; - } + function SSD() { + const name = 'SSD Pre-processor'; + const test = function (raw) { + return raw.indexOf('ssd://') === 0; + }; + const parse = function (raw) { + // preprocessing for SSD subscription format + const output = []; + let ssdinfo = JSON.parse(Base64.decode(raw.split('ssd://')[1])); + // options (traffic_used, traffic_total, expiry, url) + const traffic_used = ssdinfo.traffic_used; // GB + const traffic_total = ssdinfo.traffic_total; // GB, -1 means unlimited + const expiry = ssdinfo.expiry; // YYYY-MM-DD HH:mm:ss + // default setting + let name = ssdinfo.airport; // name of the airport + let port = ssdinfo.port; + let method = ssdinfo.encryption; + let password = ssdinfo.password; + // servers config + let servers = ssdinfo.servers; + for (let i = 0; i < servers.length; i++) { + let server = servers[i]; + method = server.encryption ? server.encryption : method; + password = server.password ? server.password : password; + let userinfo = Base64.encode(method + ':' + password); + let hostname = server.server; + port = server.port ? server.port : port; + let tag = server.remarks ? server.remarks : i; + let plugin = server.plugin_options + ? '/?plugin=' + + encodeURIComponent( + server.plugin + ';' + server.plugin_options, + ) + : ''; + output[i] = + 'ss://' + + userinfo + + '@' + + hostname + + ':' + + port + + plugin + + '#' + + tag; + } + return output.join('\n'); + }; + return { name, test, parse }; + } - return [ HTML(), Base64Encoded(), Clash(), SSD() ]; + return [HTML(), Base64Encoded(), Clash(), SSD()]; })(); -const PROXY_PARSERS = (function() { - // Parse SS URI format (only supports new SIP002, legacy format is depreciated). - // reference: https://shadowsocks.org/en/spec/SIP002-URI-Scheme.html - function URI_SS() { - const name = 'URI SS Parser'; - const test = (line) => { - return /^ss:\/\//.test(line); - }; - const parse = (line) => { - const supported = {}; - // parse url - let content = line.split('ss://')[1]; +const PROXY_PARSERS = (function () { + // Parse SS URI format (only supports new SIP002, legacy format is depreciated). + // reference: https://shadowsocks.org/en/spec/SIP002-URI-Scheme.html + function URI_SS() { + const name = 'URI SS Parser'; + const test = (line) => { + return /^ss:\/\//.test(line); + }; + const parse = (line) => { + const supported = {}; + // parse url + let content = line.split('ss://')[1]; - const proxy = { - name: decodeURIComponent(line.split('#')[1]), - type: 'ss', - supported - }; - content = content.split('#')[0]; // strip proxy name - // handle IPV4 and IPV6 - const serverAndPort = content.match(/@([^\/]*)(\/|$)/)[1]; - const portIdx = serverAndPort.lastIndexOf(':'); - proxy.server = serverAndPort.substring(0, portIdx); - proxy.port = serverAndPort.substring(portIdx + 1); + const proxy = { + name: decodeURIComponent(line.split('#')[1]), + type: 'ss', + supported, + }; + content = content.split('#')[0]; // strip proxy name + // handle IPV4 and IPV6 + const serverAndPort = content.match(/@([^\/]*)(\/|$)/)[1]; + const portIdx = serverAndPort.lastIndexOf(':'); + proxy.server = serverAndPort.substring(0, portIdx); + proxy.port = serverAndPort.substring(portIdx + 1); - const userInfo = Base64.decode(content.split('@')[0]).split(':'); - proxy.cipher = userInfo[0]; - proxy.password = userInfo[1]; + const userInfo = Base64.decode(content.split('@')[0]).split(':'); + proxy.cipher = userInfo[0]; + proxy.password = userInfo[1]; - // handle obfs - const idx = content.indexOf('?plugin='); - if (idx !== -1) { - const pluginInfo = ('plugin=' + decodeURIComponent(content.split('?plugin=')[1].split('&')[0])).split( - ';' - ); - const params = {}; - for (const item of pluginInfo) { - const [ key, val ] = item.split('='); - if (key) params[key] = val || true; // some options like "tls" will not have value - } - switch (params.plugin) { - case 'obfs-local': - case 'simple-obfs': - proxy.plugin = 'obfs'; - proxy['plugin-opts'] = { - mode: params.obfs, - host: params['obfs-host'] - }; - break; - case 'v2ray-plugin': - proxy.supported = { - ...supported, - Loon: false, - Surge: false - }; - proxy.obfs = 'v2ray-plugin'; - proxy['plugin-opts'] = { - mode: 'websocket', - host: params['obfs-host'], - path: params.path || '', - tls: params.tls || false - }; - break; - default: - throw new Error(`Unsupported plugin option: ${params.plugin}`); - } - } - return proxy; - }; - return { name, test, parse }; - } + // handle obfs + const idx = content.indexOf('?plugin='); + if (idx !== -1) { + const pluginInfo = ( + 'plugin=' + + decodeURIComponent( + content.split('?plugin=')[1].split('&')[0], + ) + ).split(';'); + const params = {}; + for (const item of pluginInfo) { + const [key, val] = item.split('='); + if (key) params[key] = val || true; // some options like "tls" will not have value + } + switch (params.plugin) { + case 'obfs-local': + case 'simple-obfs': + proxy.plugin = 'obfs'; + proxy['plugin-opts'] = { + mode: params.obfs, + host: params['obfs-host'], + }; + break; + case 'v2ray-plugin': + proxy.supported = { + ...supported, + Loon: false, + Surge: false, + }; + proxy.obfs = 'v2ray-plugin'; + proxy['plugin-opts'] = { + mode: 'websocket', + host: params['obfs-host'], + path: params.path || '', + tls: params.tls || false, + }; + break; + default: + throw new Error( + `Unsupported plugin option: ${params.plugin}`, + ); + } + } + return proxy; + }; + return { name, test, parse }; + } - // Parse URI SSR format, such as ssr://xxx - function URI_SSR() { - const name = 'URI SSR Parser'; - const test = (line) => { - return /^ssr:\/\//.test(line); - }; - const supported = { - Surge: false - }; + // Parse URI SSR format, such as ssr://xxx + function URI_SSR() { + const name = 'URI SSR Parser'; + const test = (line) => { + return /^ssr:\/\//.test(line); + }; + const supported = { + Surge: false, + }; - const parse = (line) => { - line = Base64.decode(line.split('ssr://')[1]); + const parse = (line) => { + line = Base64.decode(line.split('ssr://')[1]); - // handle IPV6 & IPV4 format - let splitIdx = line.indexOf(':origin'); - if (splitIdx === -1) { - splitIdx = line.indexOf(':auth_'); - } - const serverAndPort = line.substring(0, splitIdx); - const server = serverAndPort.substring(0, serverAndPort.lastIndexOf(':')); - const port = serverAndPort.substring(serverAndPort.lastIndexOf(':') + 1); + // handle IPV6 & IPV4 format + let splitIdx = line.indexOf(':origin'); + if (splitIdx === -1) { + splitIdx = line.indexOf(':auth_'); + } + const serverAndPort = line.substring(0, splitIdx); + const server = serverAndPort.substring( + 0, + serverAndPort.lastIndexOf(':'), + ); + const port = serverAndPort.substring( + serverAndPort.lastIndexOf(':') + 1, + ); - let params = line.substring(splitIdx + 1).split('/?')[0].split(':'); - let proxy = { - type: 'ssr', - server, - port, - protocol: params[0], - cipher: params[1], - obfs: params[2], - password: Base64.decode(params[3]), - supported - }; - // get other params - const other_params = {}; - line = line.split('/?')[1].split('&'); - if (line.length > 1) { - for (const item of line) { - const [ key, val ] = item.split('='); - other_params[key] = val.trim(); - } - } - proxy = { - ...proxy, - name: other_params.remarks ? Base64.decode(other_params.remarks) : proxy.server, - 'protocol-param': Base64.decode(other_params.protoparam || '').replace(/\s/g, ''), - 'obfs-param': Base64.decode(other_params.obfsparam || '').replace(/\s/g, '') - }; - return proxy; - }; + let params = line + .substring(splitIdx + 1) + .split('/?')[0] + .split(':'); + let proxy = { + type: 'ssr', + server, + port, + protocol: params[0], + cipher: params[1], + obfs: params[2], + password: Base64.decode(params[3]), + supported, + }; + // get other params + const other_params = {}; + line = line.split('/?')[1].split('&'); + if (line.length > 1) { + for (const item of line) { + const [key, val] = item.split('='); + other_params[key] = val.trim(); + } + } + proxy = { + ...proxy, + name: other_params.remarks + ? Base64.decode(other_params.remarks) + : proxy.server, + 'protocol-param': Base64.decode( + other_params.protoparam || '', + ).replace(/\s/g, ''), + 'obfs-param': Base64.decode( + other_params.obfsparam || '', + ).replace(/\s/g, ''), + }; + return proxy; + }; - return { name, test, parse }; - } + return { name, test, parse }; + } - // V2rayN URI VMess format - // reference: https://github.com/2dust/v2rayN/wiki/%E5%88%86%E4%BA%AB%E9%93%BE%E6%8E%A5%E6%A0%BC%E5%BC%8F%E8%AF%B4%E6%98%8E(ver-2) + // V2rayN URI VMess format + // reference: https://github.com/2dust/v2rayN/wiki/%E5%88%86%E4%BA%AB%E9%93%BE%E6%8E%A5%E6%A0%BC%E5%BC%8F%E8%AF%B4%E6%98%8E(ver-2) - // Quantumult VMess format - function URI_VMess() { - const name = 'URI VMess Parser'; - const test = (line) => { - return /^vmess:\/\//.test(line); - }; - const parse = (line) => { - const supported = {}; - line = line.split('vmess://')[1]; - const content = Base64.decode(line); - if (/=\s*vmess/.test(content)) { - // Quantumult VMess URI format - const partitions = content.split(',').map((p) => p.trim()); - // get keyword params - const params = {}; - for (const part of partitions) { - if (part.indexOf('=') !== -1) { - const [ key, val ] = part.split('='); - params[key.trim()] = val.trim(); - } - } + // Quantumult VMess format + function URI_VMess() { + const name = 'URI VMess Parser'; + const test = (line) => { + return /^vmess:\/\//.test(line); + }; + const parse = (line) => { + const supported = {}; + line = line.split('vmess://')[1]; + const content = Base64.decode(line); + if (/=\s*vmess/.test(content)) { + // Quantumult VMess URI format + const partitions = content.split(',').map((p) => p.trim()); + // get keyword params + const params = {}; + for (const part of partitions) { + if (part.indexOf('=') !== -1) { + const [key, val] = part.split('='); + params[key.trim()] = val.trim(); + } + } - const proxy = { - name: partitions[0].split('=')[0].trim(), - type: 'vmess', - server: partitions[1], - port: partitions[2], - cipher: partitions[3], - uuid: partitions[4].match(/^"(.*)"$/)[1], - tls: params.obfs === 'over-tls' || params.obfs === 'wss' - }; + const proxy = { + name: partitions[0].split('=')[0].trim(), + type: 'vmess', + server: partitions[1], + port: partitions[2], + cipher: partitions[3], + uuid: partitions[4].match(/^"(.*)"$/)[1], + tls: params.obfs === 'over-tls' || params.obfs === 'wss', + }; - if (typeof params['udp-relay'] !== 'undefined') proxy.udp = JSON.parse(params['udp-relay']); - if (typeof params['fast-open'] !== 'undefined') proxy.udp = JSON.parse(params['fast-open']); + if (typeof params['udp-relay'] !== 'undefined') + proxy.udp = JSON.parse(params['udp-relay']); + if (typeof params['fast-open'] !== 'undefined') + proxy.udp = JSON.parse(params['fast-open']); - // handle ws headers - if (params.obfs === 'ws' || params.obfs === 'wss') { - proxy.network = 'ws'; - proxy['ws-opts'].path = (params['obfs-path'] || '"/"').match(/^"(.*)"$/)[1]; - let obfs_host = params['obfs-header']; - if (obfs_host && obfs_host.indexOf('Host') !== -1) { - obfs_host = obfs_host.match(/Host:\s*([a-zA-Z0-9-.]*)/)[1]; - } - proxy['ws-opts'].headers = { - Host: obfs_host || proxy.server // if no host provided, use the same as server - }; - } + // handle ws headers + if (params.obfs === 'ws' || params.obfs === 'wss') { + proxy.network = 'ws'; + proxy['ws-opts'].path = ( + params['obfs-path'] || '"/"' + ).match(/^"(.*)"$/)[1]; + let obfs_host = params['obfs-header']; + if (obfs_host && obfs_host.indexOf('Host') !== -1) { + obfs_host = obfs_host.match( + /Host:\s*([a-zA-Z0-9-.]*)/, + )[1]; + } + proxy['ws-opts'].headers = { + Host: obfs_host || proxy.server, // if no host provided, use the same as server + }; + } - // handle scert - if (proxy.tls && params['"tls-verification"'] === 'false') { - proxy['skip-cert-verify'] = true; - } + // handle scert + if (proxy.tls && params['"tls-verification"'] === 'false') { + proxy['skip-cert-verify'] = true; + } - // handle sni - if (proxy.tls && params['obfs-host']) { - proxy.sni = params['obfs-host']; - } + // handle sni + if (proxy.tls && params['obfs-host']) { + proxy.sni = params['obfs-host']; + } - return proxy; - } else { - // V2rayN URI format - const params = JSON.parse(content); - const proxy = { - name: params.ps, - type: 'vmess', - server: params.add, - port: params.port, - cipher: 'auto', // V2rayN has no default cipher! use aes-128-gcm as default. - uuid: params.id, - alterId: params.aid || 0, - tls: params.tls === 'tls' || params.tls === true, - supported - }; - // handle obfs - if (params.net === 'ws') { - proxy.network = 'ws'; - proxy['ws-opts'] = { - path: params.path, - headers: { Host: params.host || params.add } - }; - if (proxy.tls && params.host) { - proxy.sni = params.host; - } - } - // handle scert - if (params.verify_cert === false) { - proxy['skip-cert-verify'] = true; - } - return proxy; - } - }; - return { name, test, parse }; - } + return proxy; + } else { + // V2rayN URI format + const params = JSON.parse(content); + const proxy = { + name: params.ps, + type: 'vmess', + server: params.add, + port: params.port, + cipher: 'auto', // V2rayN has no default cipher! use aes-128-gcm as default. + uuid: params.id, + alterId: params.aid || 0, + tls: params.tls === 'tls' || params.tls === true, + supported, + }; + // handle obfs + if (params.net === 'ws') { + proxy.network = 'ws'; + proxy['ws-opts'] = { + path: params.path, + headers: { Host: params.host || params.add }, + }; + if (proxy.tls && params.host) { + proxy.sni = params.host; + } + } + // handle scert + if (params.verify_cert === false) { + proxy['skip-cert-verify'] = true; + } + return proxy; + } + }; + return { name, test, parse }; + } - // Trojan URI format - function URI_Trojan() { - const name = 'URI Trojan Parser'; - const test = (line) => { - return /^trojan:\/\//.test(line); - }; + // Trojan URI format + function URI_Trojan() { + const name = 'URI Trojan Parser'; + const test = (line) => { + return /^trojan:\/\//.test(line); + }; - const parse = (line) => { - const supported = {}; - line = line.split('trojan://')[1]; - const [ server, port ] = line.split('@')[1].split('?')[0].split(':'); - const name = decodeURIComponent(line.split('#')[1].trim()); - let paramArr = line.split('?'); - let sni = null; - if (paramArr.length > 1) { - paramArr = paramArr[1].split('#')[0].split('&'); - const params = new Map( - paramArr.map((item) => { - return item.split('='); - }) - ); - sni = params.get('sni'); - } + const parse = (line) => { + const supported = {}; + line = line.split('trojan://')[1]; + const [server, port] = line.split('@')[1].split('?')[0].split(':'); + const name = decodeURIComponent(line.split('#')[1].trim()); + let paramArr = line.split('?'); + let sni = null; + if (paramArr.length > 1) { + paramArr = paramArr[1].split('#')[0].split('&'); + const params = new Map( + paramArr.map((item) => { + return item.split('='); + }), + ); + sni = params.get('sni'); + } - return { - name: name || `[Trojan] ${server}`, // trojan uri may have no server tag! - type: 'trojan', - server, - port, - password: line.split('@')[0], - sni, - supported - }; - }; - return { name, test, parse }; - } + return { + name: name || `[Trojan] ${server}`, // trojan uri may have no server tag! + type: 'trojan', + server, + port, + password: line.split('@')[0], + sni, + supported, + }; + }; + return { name, test, parse }; + } - function Clash_All() { - const name = 'Clash Parser'; - const test = (line) => { - try { - JSON.parse(line); - } catch (e) { - return false; - } - return true; - }; - const parse = (line) => JSON.parse(line); - return { name, test, parse }; - } + function Clash_All() { + const name = 'Clash Parser'; + const test = (line) => { + try { + JSON.parse(line); + } catch (e) { + return false; + } + return true; + }; + const parse = (line) => JSON.parse(line); + return { name, test, parse }; + } - function QX_SS() { - const name = 'QX SS Parser'; - const test = (line) => { - return /^shadowsocks\s*=/.test(line.split(',')[0].trim()) && line.indexOf('ssr-protocol') === -1; - }; - const parse = (line) => { - const supported = {}; - const params = getQXParams(line); - const proxy = { - name: params.tag, - type: 'ss', - server: params.server, - port: params.port, - cipher: params.method, - password: params.password, - udp: JSON.parse(params['udp-relay'] || 'false'), - tfo: JSON.parse(params['fast-open'] || 'false'), - supported - }; - // handle obfs options - if (params.obfs) { - proxy['plugin-opts'] = { - host: params['obfs-host'] || proxy.server - }; - switch (params.obfs) { - case 'http': - case 'tls': - proxy.plugin = 'obfs'; - proxy['plugin-opts'].mode = params.obfs; - break; - case 'ws': - case 'wss': - proxy['plugin-opts'] = { - ...proxy['plugin-opts'], - mode: 'websocket', - path: params['obfs-uri'] || '/', - tls: params.obfs === 'wss' - }; - if (proxy['plugin-opts'].tls && typeof params['tls-verification'] !== 'undefined') { - proxy['plugin-opts']['skip-cert-verify'] = params['tls-verification']; - } - proxy.plugin = 'v2ray-plugin'; - // Surge and Loon lack support for v2ray-plugin obfs - proxy.supported.Surge = false; - proxy.supported.Loon = false; - break; - } - } - return proxy; - }; - return { name, test, parse }; - } + function QX_SS() { + const name = 'QX SS Parser'; + const test = (line) => { + return ( + /^shadowsocks\s*=/.test(line.split(',')[0].trim()) && + line.indexOf('ssr-protocol') === -1 + ); + }; + const parse = (line) => { + const supported = {}; + const params = getQXParams(line); + const proxy = { + name: params.tag, + type: 'ss', + server: params.server, + port: params.port, + cipher: params.method, + password: params.password, + udp: JSON.parse(params['udp-relay'] || 'false'), + tfo: JSON.parse(params['fast-open'] || 'false'), + supported, + }; + // handle obfs options + if (params.obfs) { + proxy['plugin-opts'] = { + host: params['obfs-host'] || proxy.server, + }; + switch (params.obfs) { + case 'http': + case 'tls': + proxy.plugin = 'obfs'; + proxy['plugin-opts'].mode = params.obfs; + break; + case 'ws': + case 'wss': + proxy['plugin-opts'] = { + ...proxy['plugin-opts'], + mode: 'websocket', + path: params['obfs-uri'] || '/', + tls: params.obfs === 'wss', + }; + if ( + proxy['plugin-opts'].tls && + typeof params['tls-verification'] !== 'undefined' + ) { + proxy['plugin-opts']['skip-cert-verify'] = + params['tls-verification']; + } + proxy.plugin = 'v2ray-plugin'; + // Surge and Loon lack support for v2ray-plugin obfs + proxy.supported.Surge = false; + proxy.supported.Loon = false; + break; + } + } + return proxy; + }; + return { name, test, parse }; + } - function QX_SSR() { - const name = 'QX SSR Parser'; - const test = (line) => { - return /^shadowsocks\s*=/.test(line.split(',')[0].trim()) && line.indexOf('ssr-protocol') !== -1; - }; + function QX_SSR() { + const name = 'QX SSR Parser'; + const test = (line) => { + return ( + /^shadowsocks\s*=/.test(line.split(',')[0].trim()) && + line.indexOf('ssr-protocol') !== -1 + ); + }; - const parse = (line) => { - const supported = { - Surge: false - }; - const params = getQXParams(line); - const proxy = { - name: params.tag, - type: 'ssr', - server: params.server, - port: params.port, - cipher: params.method, - password: params.password, - protocol: params['ssr-protocol'], - obfs: 'plain', // default obfs - 'protocol-param': params['ssr-protocol-param'], - udp: JSON.parse(params['udp-relay'] || 'false'), - tfo: JSON.parse(params['fast-open'] || 'false'), - supported - }; - // handle obfs options - if (params.obfs) { - proxy.obfs = params.obfs; - proxy['obfs-param'] = params['obfs-host']; - } - return proxy; - }; - return { name, test, parse }; - } + const parse = (line) => { + const supported = { + Surge: false, + }; + const params = getQXParams(line); + const proxy = { + name: params.tag, + type: 'ssr', + server: params.server, + port: params.port, + cipher: params.method, + password: params.password, + protocol: params['ssr-protocol'], + obfs: 'plain', // default obfs + 'protocol-param': params['ssr-protocol-param'], + udp: JSON.parse(params['udp-relay'] || 'false'), + tfo: JSON.parse(params['fast-open'] || 'false'), + supported, + }; + // handle obfs options + if (params.obfs) { + proxy.obfs = params.obfs; + proxy['obfs-param'] = params['obfs-host']; + } + return proxy; + }; + return { name, test, parse }; + } - function QX_VMess() { - const name = 'QX VMess Parser'; - const test = (line) => { - return /^vmess\s*=/.test(line.split(',')[0].trim()); - }; - const parse = (line) => { - const params = getQXParams(line); - const proxy = { - type: 'vmess', - name: params.tag, - server: params.server, - port: params.port, - cipher: params.method || 'none', - uuid: params.password, - alterId: 0, - tls: params.obfs === 'over-tls' || params.obfs === 'wss', - udp: JSON.parse(params['udp-relay'] || 'false'), - tfo: JSON.parse(params['fast-open'] || 'false') - }; - if (proxy.tls) { - proxy.sni = params['obfs-host'] || params.server; - proxy['skip-cert-verify'] = !JSON.parse(params['tls-verification'] || 'true'); - } - // handle ws headers - if (params.obfs === 'ws' || params.obfs === 'wss') { - proxy.network = 'ws'; - proxy['ws-opts'] = { - path: params['obfs-uri'], - headers: { - Host: params['obfs-host'] || params.server // if no host provided, use the same as server - } - }; - } - return proxy; - }; + function QX_VMess() { + const name = 'QX VMess Parser'; + const test = (line) => { + return /^vmess\s*=/.test(line.split(',')[0].trim()); + }; + const parse = (line) => { + const params = getQXParams(line); + const proxy = { + type: 'vmess', + name: params.tag, + server: params.server, + port: params.port, + cipher: params.method || 'none', + uuid: params.password, + alterId: 0, + tls: params.obfs === 'over-tls' || params.obfs === 'wss', + udp: JSON.parse(params['udp-relay'] || 'false'), + tfo: JSON.parse(params['fast-open'] || 'false'), + }; + if (proxy.tls) { + proxy.sni = params['obfs-host'] || params.server; + proxy['skip-cert-verify'] = !JSON.parse( + params['tls-verification'] || 'true', + ); + } + // handle ws headers + if (params.obfs === 'ws' || params.obfs === 'wss') { + proxy.network = 'ws'; + proxy['ws-opts'] = { + path: params['obfs-uri'], + headers: { + Host: params['obfs-host'] || params.server, // if no host provided, use the same as server + }, + }; + } + return proxy; + }; - return { name, test, parse }; - } + return { name, test, parse }; + } - function QX_Trojan() { - const name = 'QX Trojan Parser'; - const test = (line) => { - return /^trojan\s*=/.test(line.split(',')[0].trim()); - }; - const parse = (line) => { - const params = getQXParams(line); - const proxy = { - type: 'trojan', - name: params.tag, - server: params.server, - port: params.port, - password: params.password, - sni: params['tls-host'] || params.server, - udp: JSON.parse(params['udp-relay'] || 'false'), - tfo: JSON.parse(params['fast-open'] || 'false') - }; - proxy['skip-cert-verify'] = !JSON.parse(params['tls-verification'] || 'true'); - return proxy; - }; - return { name, test, parse }; - } + function QX_Trojan() { + const name = 'QX Trojan Parser'; + const test = (line) => { + return /^trojan\s*=/.test(line.split(',')[0].trim()); + }; + const parse = (line) => { + const params = getQXParams(line); + const proxy = { + type: 'trojan', + name: params.tag, + server: params.server, + port: params.port, + password: params.password, + sni: params['tls-host'] || params.server, + udp: JSON.parse(params['udp-relay'] || 'false'), + tfo: JSON.parse(params['fast-open'] || 'false'), + }; + proxy['skip-cert-verify'] = !JSON.parse( + params['tls-verification'] || 'true', + ); + return proxy; + }; + return { name, test, parse }; + } - function QX_Http() { - const name = 'QX HTTP Parser'; - const test = (line) => { - return /^http\s*=/.test(line.split(',')[0].trim()); - }; - const parse = (line) => { - const params = getQXParams(line); - const proxy = { - type: 'http', - name: params.tag, - server: params.server, - port: params.port, - tls: JSON.parse(params['over-tls'] || 'false'), - udp: JSON.parse(params['udp-relay'] || 'false'), - tfo: JSON.parse(params['fast-open'] || 'false') - }; - if (params.username && params.username !== 'none') proxy.username = params.username; - if (params.password && params.password !== 'none') proxy.password = params.password; - if (proxy.tls) { - proxy.sni = params['tls-host'] || proxy.server; - proxy['skip-cert-verify'] = !JSON.parse(params['tls-verification'] || 'true'); - } - return proxy; - }; + function QX_Http() { + const name = 'QX HTTP Parser'; + const test = (line) => { + return /^http\s*=/.test(line.split(',')[0].trim()); + }; + const parse = (line) => { + const params = getQXParams(line); + const proxy = { + type: 'http', + name: params.tag, + server: params.server, + port: params.port, + tls: JSON.parse(params['over-tls'] || 'false'), + udp: JSON.parse(params['udp-relay'] || 'false'), + tfo: JSON.parse(params['fast-open'] || 'false'), + }; + if (params.username && params.username !== 'none') + proxy.username = params.username; + if (params.password && params.password !== 'none') + proxy.password = params.password; + if (proxy.tls) { + proxy.sni = params['tls-host'] || proxy.server; + proxy['skip-cert-verify'] = !JSON.parse( + params['tls-verification'] || 'true', + ); + } + return proxy; + }; - return { name, test, parse }; - } + return { name, test, parse }; + } - function getQXParams(line) { - const groups = line.split(','); - const params = {}; - const protocols = [ 'shadowsocks', 'vmess', 'http', 'trojan' ]; - groups.forEach((g) => { - let [ key, value ] = g.split('='); - key = key.trim(); - value = value.trim(); - if (protocols.indexOf(key) !== -1) { - params.type = key; - const conf = value.split(':'); - params.server = conf[0]; - params.port = conf[1]; - } else { - params[key.trim()] = value.trim(); - } - }); - return params; - } + function getQXParams(line) { + const groups = line.split(','); + const params = {}; + const protocols = ['shadowsocks', 'vmess', 'http', 'trojan']; + groups.forEach((g) => { + let [key, value] = g.split('='); + key = key.trim(); + value = value.trim(); + if (protocols.indexOf(key) !== -1) { + params.type = key; + const conf = value.split(':'); + params.server = conf[0]; + params.port = conf[1]; + } else { + params[key.trim()] = value.trim(); + } + }); + return params; + } - function Loon_SS() { - const name = 'Loon SS Parser'; - const test = (line) => { - return line.split(',')[0].split('=')[1].trim().toLowerCase() === 'shadowsocks'; - }; - const parse = (line) => { - const params = line.split('=')[1].split(','); - const proxy = { - name: line.split('=')[0].trim(), - type: 'ss', - server: params[1], - port: params[2], - cipher: params[3], - password: params[4].replace(/"/g, '') - }; - // handle obfs - if (params.length > 5) { - proxy.plugin = 'obfs'; - proxy['plugin-opts'] = { - mode: params[5], - host: params[6] - }; - } - return proxy; - }; - return { name, test, parse }; - } + function Loon_SS() { + const name = 'Loon SS Parser'; + const test = (line) => { + return ( + line.split(',')[0].split('=')[1].trim().toLowerCase() === + 'shadowsocks' + ); + }; + const parse = (line) => { + const params = line.split('=')[1].split(','); + const proxy = { + name: line.split('=')[0].trim(), + type: 'ss', + server: params[1], + port: params[2], + cipher: params[3], + password: params[4].replace(/"/g, ''), + }; + // handle obfs + if (params.length > 5) { + proxy.plugin = 'obfs'; + proxy['plugin-opts'] = { + mode: params[5], + host: params[6], + }; + } + return proxy; + }; + return { name, test, parse }; + } - function Loon_SSR() { - const name = 'Loon SSR Parser'; - const test = (line) => { - return line.split(',')[0].split('=')[1].trim().toLowerCase() === 'shadowsocksr'; - }; - const parse = (line) => { - const params = line.split('=')[1].split(','); - const supported = { - Surge: false - }; - return { - name: line.split('=')[0].trim(), - type: 'ssr', - server: params[1], - port: params[2], - cipher: params[3], - password: params[4].replace(/"/g, ''), - protocol: params[5], - 'protocol-param': params[6].match(/{(.*)}/)[1], - supported, - obfs: params[7], - 'obfs-param': params[8].match(/{(.*)}/)[1] - }; - }; - return { name, test, parse }; - } + function Loon_SSR() { + const name = 'Loon SSR Parser'; + const test = (line) => { + return ( + line.split(',')[0].split('=')[1].trim().toLowerCase() === + 'shadowsocksr' + ); + }; + const parse = (line) => { + const params = line.split('=')[1].split(','); + const supported = { + Surge: false, + }; + return { + name: line.split('=')[0].trim(), + type: 'ssr', + server: params[1], + port: params[2], + cipher: params[3], + password: params[4].replace(/"/g, ''), + protocol: params[5], + 'protocol-param': params[6].match(/{(.*)}/)[1], + supported, + obfs: params[7], + 'obfs-param': params[8].match(/{(.*)}/)[1], + }; + }; + return { name, test, parse }; + } - function Loon_VMess() { - const name = 'Loon VMess Parser'; - const test = (line) => { - // distinguish between surge vmess - return /^.*=\s*vmess/i.test(line.split(',')[0]) && line.indexOf('username') === -1; - }; - const parse = (line) => { - let params = line.split('=')[1].split(','); - const proxy = { - name: line.split('=')[0].trim(), - type: 'vmess', - server: params[1], - port: params[2], - cipher: params[3] || 'none', - uuid: params[4].replace(/"/g, ''), - alterId: 0 - }; - // get transport options - params = params.splice(5); - for (const item of params) { - const [ key, val ] = item.split(':'); - params[key] = val; - } - proxy.tls = JSON.parse(params['over-tls'] || 'false'); - if (proxy.tls) { - proxy.sni = params['tls-name'] || proxy.server; - proxy['skip-cert-verify'] = JSON.parse(params['skip-cert-verify'] || 'false'); - } - switch (params.transport) { - case 'tcp': - break; - case 'ws': - proxy.network = params.transport; - proxy['ws-opts'] = { - path: params.path, - headers: { - Host: params.host - } - }; - } - if (proxy.tls) { - proxy['skip-cert-verify'] = JSON.parse(params['skip-cert-verify'] || 'false'); - } - return proxy; - }; - return { name, test, parse }; - } + function Loon_VMess() { + const name = 'Loon VMess Parser'; + const test = (line) => { + // distinguish between surge vmess + return ( + /^.*=\s*vmess/i.test(line.split(',')[0]) && + line.indexOf('username') === -1 + ); + }; + const parse = (line) => { + let params = line.split('=')[1].split(','); + const proxy = { + name: line.split('=')[0].trim(), + type: 'vmess', + server: params[1], + port: params[2], + cipher: params[3] || 'none', + uuid: params[4].replace(/"/g, ''), + alterId: 0, + }; + // get transport options + params = params.splice(5); + for (const item of params) { + const [key, val] = item.split(':'); + params[key] = val; + } + proxy.tls = JSON.parse(params['over-tls'] || 'false'); + if (proxy.tls) { + proxy.sni = params['tls-name'] || proxy.server; + proxy['skip-cert-verify'] = JSON.parse( + params['skip-cert-verify'] || 'false', + ); + } + switch (params.transport) { + case 'tcp': + break; + case 'ws': + proxy.network = params.transport; + proxy['ws-opts'] = { + path: params.path, + headers: { + Host: params.host, + }, + }; + } + if (proxy.tls) { + proxy['skip-cert-verify'] = JSON.parse( + params['skip-cert-verify'] || 'false', + ); + } + return proxy; + }; + return { name, test, parse }; + } - function Loon_Trojan() { - const name = 'Loon Trojan Parser'; - const test = (line) => { - return /^.*=\s*trojan/i.test(line.split(',')[0]) && line.indexOf('password') === -1; - }; + function Loon_Trojan() { + const name = 'Loon Trojan Parser'; + const test = (line) => { + return ( + /^.*=\s*trojan/i.test(line.split(',')[0]) && + line.indexOf('password') === -1 + ); + }; - const parse = (line) => { - const params = line.split('=')[1].split(','); - const proxy = { - name: line.split('=')[0].trim(), - type: 'trojan', - server: params[1], - port: params[2], - password: params[3].replace(/"/g, ''), - sni: params[1], // default sni is the server itself - 'skip-cert-verify': JSON.parse(params['skip-cert-verify'] || 'false') - }; - // trojan sni - if (params.length > 4) { - const [ key, val ] = params[4].split(':'); - if (key === 'tls-name') proxy.sni = val; - else throw new Error(`Unknown option ${key} for line: \n${line}`); - } - return proxy; - }; + const parse = (line) => { + const params = line.split('=')[1].split(','); + const proxy = { + name: line.split('=')[0].trim(), + type: 'trojan', + server: params[1], + port: params[2], + password: params[3].replace(/"/g, ''), + sni: params[1], // default sni is the server itself + 'skip-cert-verify': JSON.parse( + params['skip-cert-verify'] || 'false', + ), + }; + // trojan sni + if (params.length > 4) { + const [key, val] = params[4].split(':'); + if (key === 'tls-name') proxy.sni = val; + else + throw new Error( + `Unknown option ${key} for line: \n${line}`, + ); + } + return proxy; + }; - return { name, test, parse }; - } + return { name, test, parse }; + } - function Loon_Http() { - const name = 'Loon HTTP Parser'; - const test = (line) => { - return ( - /^.*=\s*http/i.test(line.split(',')[0]) && - line.split(',').length === 5 && - line.indexOf('username') === -1 && - line.indexOf('password') === -1 - ); - }; + function Loon_Http() { + const name = 'Loon HTTP Parser'; + const test = (line) => { + return ( + /^.*=\s*http/i.test(line.split(',')[0]) && + line.split(',').length === 5 && + line.indexOf('username') === -1 && + line.indexOf('password') === -1 + ); + }; - const parse = (line) => { - const params = line.split('=')[1].split(','); - const proxy = { - name: line.split('=')[0].trim(), - type: 'http', - server: params[1], - port: params[2], - tls: params[2] === '443' // port 443 is considered as https type - }; - if (params[3]) proxy.username = params[3]; - if (params[4]) proxy.password = params[4]; + const parse = (line) => { + const params = line.split('=')[1].split(','); + const proxy = { + name: line.split('=')[0].trim(), + type: 'http', + server: params[1], + port: params[2], + tls: params[2] === '443', // port 443 is considered as https type + }; + if (params[3]) proxy.username = params[3]; + if (params[4]) proxy.password = params[4]; - if (proxy.tls) { - proxy.sni = params['tls-name'] || proxy.server; - proxy['skip-cert-verify'] = JSON.parse(params['skip-cert-verify'] || 'false'); - } + if (proxy.tls) { + proxy.sni = params['tls-name'] || proxy.server; + proxy['skip-cert-verify'] = JSON.parse( + params['skip-cert-verify'] || 'false', + ); + } - return proxy; - }; - return { name, test, parse }; - } + return proxy; + }; + return { name, test, parse }; + } - function Surge_SS() { - const name = 'Surge SS Parser'; - const test = (line) => { - return /^.*=\s*ss/.test(line.split(',')[0]); - }; - const parse = (line) => { - const params = getSurgeParams(line); - const proxy = { - name: params.name, - type: 'ss', - server: params.server, - port: params.port, - cipher: params['encrypt-method'], - password: params.password, - tfo: JSON.parse(params.tfo || 'false'), - udp: JSON.parse(params['udp-relay'] || 'false') - }; - // handle obfs - if (params.obfs) { - proxy.plugin = 'obfs'; - proxy['plugin-opts'] = { - mode: params.obfs, - host: params['obfs-host'] - }; - } - return proxy; - }; - return { name, test, parse }; - } + function Surge_SS() { + const name = 'Surge SS Parser'; + const test = (line) => { + return /^.*=\s*ss/.test(line.split(',')[0]); + }; + const parse = (line) => { + const params = getSurgeParams(line); + const proxy = { + name: params.name, + type: 'ss', + server: params.server, + port: params.port, + cipher: params['encrypt-method'], + password: params.password, + tfo: JSON.parse(params.tfo || 'false'), + udp: JSON.parse(params['udp-relay'] || 'false'), + }; + // handle obfs + if (params.obfs) { + proxy.plugin = 'obfs'; + proxy['plugin-opts'] = { + mode: params.obfs, + host: params['obfs-host'], + }; + } + return proxy; + }; + return { name, test, parse }; + } - function Surge_VMess() { - const name = 'Surge VMess Parser'; - const test = (line) => { - return /^.*=\s*vmess/.test(line.split(',')[0]) && line.indexOf('username') !== -1; - }; - const parse = (line) => { - const params = getSurgeParams(line); - const proxy = { - name: params.name, - type: 'vmess', - server: params.server, - port: params.port, - uuid: params.username, - alterId: 0, // surge does not have this field - cipher: 'none', // surge does not have this field - tls: JSON.parse(params.tls || 'false'), - tfo: JSON.parse(params.tfo || 'false') - }; - if (proxy.tls) { - if (typeof params['skip-cert-verify'] !== 'undefined') { - proxy['skip-cert-verify'] = - params['skip-cert-verify'] === true || params['skip-cert-verify'] === '1'; - } - proxy.sni = params['sni'] || params.server; - } - // use websocket - if (JSON.parse(params.ws || 'false')) { - proxy.network = 'ws'; - proxy['ws-opts'] = { - path: params['ws-path'] - }; + function Surge_VMess() { + const name = 'Surge VMess Parser'; + const test = (line) => { + return ( + /^.*=\s*vmess/.test(line.split(',')[0]) && + line.indexOf('username') !== -1 + ); + }; + const parse = (line) => { + const params = getSurgeParams(line); + const proxy = { + name: params.name, + type: 'vmess', + server: params.server, + port: params.port, + uuid: params.username, + alterId: 0, // surge does not have this field + cipher: 'none', // surge does not have this field + tls: JSON.parse(params.tls || 'false'), + tfo: JSON.parse(params.tfo || 'false'), + }; + if (proxy.tls) { + if (typeof params['skip-cert-verify'] !== 'undefined') { + proxy['skip-cert-verify'] = + params['skip-cert-verify'] === true || + params['skip-cert-verify'] === '1'; + } + proxy.sni = params['sni'] || params.server; + } + // use websocket + if (JSON.parse(params.ws || 'false')) { + proxy.network = 'ws'; + proxy['ws-opts'] = { + path: params['ws-path'], + }; - const res = params['ws-headers'].match(/(,|^|\s)*HOST:\s*(.*?)(,|$)/); - const host = res ? res[2] : proxy.server; - proxy['ws-opts'].headers = { - Host: host || params.server - }; - } - return proxy; - }; - return { name, test, parse }; - } + const res = params['ws-headers'].match( + /(,|^|\s)*HOST:\s*(.*?)(,|$)/, + ); + const host = res ? res[2] : proxy.server; + proxy['ws-opts'].headers = { + Host: host || params.server, + }; + } + return proxy; + }; + return { name, test, parse }; + } - function Surge_Trojan() { - const name = 'Surge Trojan Parser'; - const test = (line) => { - return /^.*=\s*trojan/.test(line.split(',')[0]) && line.indexOf('sni') !== -1; - }; - const parse = (line) => { - const params = getSurgeParams(line); - const proxy = { - name: params.name, - type: 'trojan', - server: params.server, - port: params.port, - password: params.password, - sni: params.sni || params.server, - tfo: JSON.parse(params.tfo || 'false') - }; - if (typeof params['skip-cert-verify'] !== 'undefined') { - proxy['skip-cert-verify'] = params['skip-cert-verify'] === true || params['skip-cert-verify'] === '1'; - } - return proxy; - }; + function Surge_Trojan() { + const name = 'Surge Trojan Parser'; + const test = (line) => { + return ( + /^.*=\s*trojan/.test(line.split(',')[0]) && + line.indexOf('sni') !== -1 + ); + }; + const parse = (line) => { + const params = getSurgeParams(line); + const proxy = { + name: params.name, + type: 'trojan', + server: params.server, + port: params.port, + password: params.password, + sni: params.sni || params.server, + tfo: JSON.parse(params.tfo || 'false'), + }; + if (typeof params['skip-cert-verify'] !== 'undefined') { + proxy['skip-cert-verify'] = + params['skip-cert-verify'] === true || + params['skip-cert-verify'] === '1'; + } + return proxy; + }; - return { name, test, parse }; - } + return { name, test, parse }; + } - function Surge_Http() { - const name = 'Surge HTTP Parser'; - const test = (line) => { - return /^.*=\s*http/.test(line.split(',')[0]) && !Loon_Http().test(line); - }; - const parse = (line) => { - const params = getSurgeParams(line); - const proxy = { - name: params.name, - type: 'http', - server: params.server, - port: params.port, - tls: JSON.parse(params.tls || 'false'), - tfo: JSON.parse(params.tfo || 'false') - }; - if (proxy.tls) { - if (typeof params['skip-cert-verify'] !== 'undefined') { - proxy['skip-cert-verify'] = - params['skip-cert-verify'] === true || params['skip-cert-verify'] === '1'; - } - proxy.sni = params.sni || params.server; - } - if (params.username && params.username !== 'none') proxy.username = params.username; - if (params.password && params.password !== 'none') proxy.password = params.password; - return proxy; - }; - return { name, test, parse }; - } + function Surge_Http() { + const name = 'Surge HTTP Parser'; + const test = (line) => { + return ( + /^.*=\s*http/.test(line.split(',')[0]) && + !Loon_Http().test(line) + ); + }; + const parse = (line) => { + const params = getSurgeParams(line); + const proxy = { + name: params.name, + type: 'http', + server: params.server, + port: params.port, + tls: JSON.parse(params.tls || 'false'), + tfo: JSON.parse(params.tfo || 'false'), + }; + if (proxy.tls) { + if (typeof params['skip-cert-verify'] !== 'undefined') { + proxy['skip-cert-verify'] = + params['skip-cert-verify'] === true || + params['skip-cert-verify'] === '1'; + } + proxy.sni = params.sni || params.server; + } + if (params.username && params.username !== 'none') + proxy.username = params.username; + if (params.password && params.password !== 'none') + proxy.password = params.password; + return proxy; + }; + return { name, test, parse }; + } - function getSurgeParams(line) { - const params = {}; - params.name = line.split('=')[0].trim(); - const segments = line.split(','); - params.server = segments[1].trim(); - params.port = segments[2].trim(); - for (let i = 3; i < segments.length; i++) { - const item = segments[i]; - if (item.indexOf('=') !== -1) { - const [ key, value ] = item.split('='); - params[key.trim()] = value.trim(); - } - } - return params; - } + function getSurgeParams(line) { + const params = {}; + params.name = line.split('=')[0].trim(); + const segments = line.split(','); + params.server = segments[1].trim(); + params.port = segments[2].trim(); + for (let i = 3; i < segments.length; i++) { + const item = segments[i]; + if (item.indexOf('=') !== -1) { + const [key, value] = item.split('='); + params[key.trim()] = value.trim(); + } + } + return params; + } - return [ - URI_SS(), - URI_SSR(), - URI_VMess(), - URI_Trojan(), - Clash_All(), - Surge_SS(), - Surge_VMess(), - Surge_Trojan(), - Surge_Http(), - Loon_SS(), - Loon_SSR(), - Loon_VMess(), - Loon_Trojan(), - Loon_Http(), - QX_SS(), - QX_SSR(), - QX_VMess(), - QX_Trojan(), - QX_Http() - ]; + return [ + URI_SS(), + URI_SSR(), + URI_VMess(), + URI_Trojan(), + Clash_All(), + Surge_SS(), + Surge_VMess(), + Surge_Trojan(), + Surge_Http(), + Loon_SS(), + Loon_SSR(), + Loon_VMess(), + Loon_Trojan(), + Loon_Http(), + QX_SS(), + QX_SSR(), + QX_VMess(), + QX_Trojan(), + QX_Http(), + ]; })(); -const PROXY_PROCESSORS = (function() { - // force to set some properties (e.g., skip-cert-verify, udp, tfo, etc.) - function SetPropertyOperator({ key, value }) { - return { - name: 'Set Property Operator', - func: (proxies) => { - return proxies.map((p) => { - p[key] = value; - return p; - }); - } - }; - } +const PROXY_PROCESSORS = (function () { + // force to set some properties (e.g., skip-cert-verify, udp, tfo, etc.) + function SetPropertyOperator({ key, value }) { + return { + name: 'Set Property Operator', + func: (proxies) => { + return proxies.map((p) => { + p[key] = value; + return p; + }); + }, + }; + } - // add or remove flag for proxies - function FlagOperator(add = true) { - return { - name: 'Flag Operator', - func: (proxies) => { - return proxies.map((proxy) => { - if (!add) { - // no flag - proxy.name = removeFlag(proxy.name); - } else { - // get flag - const newFlag = getFlag(proxy.name); - // remove old flag - proxy.name = removeFlag(proxy.name); - proxy.name = newFlag + ' ' + proxy.name; - proxy.name = proxy.name.replace(/🇹🇼/g, '🇨🇳'); - } - return proxy; - }); - } - }; - } + // add or remove flag for proxies + function FlagOperator(add = true) { + return { + name: 'Flag Operator', + func: (proxies) => { + return proxies.map((proxy) => { + if (!add) { + // no flag + proxy.name = removeFlag(proxy.name); + } else { + // get flag + const newFlag = getFlag(proxy.name); + // remove old flag + proxy.name = removeFlag(proxy.name); + proxy.name = newFlag + ' ' + proxy.name; + proxy.name = proxy.name.replace(/🇹🇼/g, '🇨🇳'); + } + return proxy; + }); + }, + }; + } - // duplicate handler - function HandleDuplicateOperator(arg) { - const { action, template, link, position } = { - ...{ - action: 'rename', - template: '0 1 2 3 4 5 6 7 8 9', - link: '-', - position: 'back' - }, - ...arg - }; - return { - name: 'Handle Duplicate Operator', - func: (proxies) => { - if (action === 'delete') { - const chosen = {}; - return proxies.filter((p) => { - if (chosen[p.name]) { - return false; - } - chosen[p.name] = true; - return true; - }); - } else if (action === 'rename') { - const numbers = template.split(' '); - // count occurrences of each name - const counter = {}; - let maxLen = 0; - proxies.forEach((p) => { - if (typeof counter[p.name] === 'undefined') counter[p.name] = 1; - else counter[p.name]++; - maxLen = Math.max(counter[p.name].toString().length, maxLen); - }); - const increment = {}; - return proxies.map((p) => { - if (counter[p.name] > 1) { - if (typeof increment[p.name] == 'undefined') increment[p.name] = 1; - let num = ''; - let cnt = increment[p.name]++; - let numDigits = 0; - while (cnt > 0) { - num = numbers[cnt % 10] + num; - cnt = parseInt(cnt / 10); - numDigits++; - } - // padding - while (numDigits++ < maxLen) { - num = numbers[0] + num; - } - if (position === 'front') { - p.name = num + link + p.name; - } else if (position === 'back') { - p.name = p.name + link + num; - } - } - return p; - }); - } - } - }; - } + // duplicate handler + function HandleDuplicateOperator(arg) { + const { action, template, link, position } = { + ...{ + action: 'rename', + template: '0 1 2 3 4 5 6 7 8 9', + link: '-', + position: 'back', + }, + ...arg, + }; + return { + name: 'Handle Duplicate Operator', + func: (proxies) => { + if (action === 'delete') { + const chosen = {}; + return proxies.filter((p) => { + if (chosen[p.name]) { + return false; + } + chosen[p.name] = true; + return true; + }); + } else if (action === 'rename') { + const numbers = template.split(' '); + // count occurrences of each name + const counter = {}; + let maxLen = 0; + proxies.forEach((p) => { + if (typeof counter[p.name] === 'undefined') + counter[p.name] = 1; + else counter[p.name]++; + maxLen = Math.max( + counter[p.name].toString().length, + maxLen, + ); + }); + const increment = {}; + return proxies.map((p) => { + if (counter[p.name] > 1) { + if (typeof increment[p.name] == 'undefined') + increment[p.name] = 1; + let num = ''; + let cnt = increment[p.name]++; + let numDigits = 0; + while (cnt > 0) { + num = numbers[cnt % 10] + num; + cnt = parseInt(cnt / 10); + numDigits++; + } + // padding + while (numDigits++ < maxLen) { + num = numbers[0] + num; + } + if (position === 'front') { + p.name = num + link + p.name; + } else if (position === 'back') { + p.name = p.name + link + num; + } + } + return p; + }); + } + }, + }; + } - // sort proxies according to their names - function SortOperator(order = 'asc') { - return { - name: 'Sort Operator', - func: (proxies) => { - switch (order) { - case 'asc': - case 'desc': - return proxies.sort((a, b) => { - let res = a.name > b.name ? 1 : -1; - res *= order === 'desc' ? -1 : 1; - return res; - }); - case 'random': - return shuffle(proxies); - default: - throw new Error('Unknown sort option: ' + order); - } - } - }; - } + // sort proxies according to their names + function SortOperator(order = 'asc') { + return { + name: 'Sort Operator', + func: (proxies) => { + switch (order) { + case 'asc': + case 'desc': + return proxies.sort((a, b) => { + let res = a.name > b.name ? 1 : -1; + res *= order === 'desc' ? -1 : 1; + return res; + }); + case 'random': + return shuffle(proxies); + default: + throw new Error('Unknown sort option: ' + order); + } + }, + }; + } - // sort by regex - function RegexSortOperator(expressions) { - return { - name: 'Regex Sort Operator', - func: (proxies) => { - expressions = expressions.map((expr) => buildRegex(expr)); - return proxies.sort((a, b) => { - const oA = getRegexOrder(expressions, a.name); - const oB = getRegexOrder(expressions, b.name); - if (oA && !oB) return -1; - if (oB && !oA) return 1; - if (oA && oB) return oA < oB ? -1 : 1; - if ((!oA && !oB) || (oA && oB && oA === oB)) return a.name < b.name ? -1 : 1; // fallback to normal sort - }); - } - }; - } + // sort by regex + function RegexSortOperator(expressions) { + return { + name: 'Regex Sort Operator', + func: (proxies) => { + expressions = expressions.map((expr) => buildRegex(expr)); + return proxies.sort((a, b) => { + const oA = getRegexOrder(expressions, a.name); + const oB = getRegexOrder(expressions, b.name); + if (oA && !oB) return -1; + if (oB && !oA) return 1; + if (oA && oB) return oA < oB ? -1 : 1; + if ((!oA && !oB) || (oA && oB && oA === oB)) + return a.name < b.name ? -1 : 1; // fallback to normal sort + }); + }, + }; + } - function getRegexOrder(expressions, str) { - let order = null; - for (let i = 0; i < expressions.length; i++) { - if (expressions[i].test(str)) { - order = i + 1; // plus 1 is important! 0 will be treated as false!!! - break; - } - } - return order; - } + function getRegexOrder(expressions, str) { + let order = null; + for (let i = 0; i < expressions.length; i++) { + if (expressions[i].test(str)) { + order = i + 1; // plus 1 is important! 0 will be treated as false!!! + break; + } + } + return order; + } - // rename by regex - // keywords: [{expr: "string format regex", now: "now"}] - function RegexRenameOperator(regex) { - return { - name: 'Regex Rename Operator', - func: (proxies) => { - return proxies.map((proxy) => { - for (const { expr, now } of regex) { - proxy.name = proxy.name.replace(buildRegex(expr, 'g'), now).trim(); - } - return proxy; - }); - } - }; - } + // rename by regex + // keywords: [{expr: "string format regex", now: "now"}] + function RegexRenameOperator(regex) { + return { + name: 'Regex Rename Operator', + func: (proxies) => { + return proxies.map((proxy) => { + for (const { expr, now } of regex) { + proxy.name = proxy.name + .replace(buildRegex(expr, 'g'), now) + .trim(); + } + return proxy; + }); + }, + }; + } - // delete regex operator - // regex: ['a', 'b', 'c'] - function RegexDeleteOperator(regex) { - const regex_ = regex.map((r) => { - return { - expr: r, - now: '' - }; - }); - return { - name: 'Regex Delete Operator', - func: RegexRenameOperator(regex_).func - }; - } + // delete regex operator + // regex: ['a', 'b', 'c'] + function RegexDeleteOperator(regex) { + const regex_ = regex.map((r) => { + return { + expr: r, + now: '', + }; + }); + return { + name: 'Regex Delete Operator', + func: RegexRenameOperator(regex_).func, + }; + } - // use base64 encoded script to rename - /** Example script + // use base64 encoded script to rename + /** Example script function operator(proxies) { // do something return proxies; @@ -1078,98 +1189,108 @@ const PROXY_PROCESSORS = (function() { 1. This function name should be `operator`! 2. Always declare variables before using them! */ - function ScriptOperator(script, targetPlatform, $arguments) { - return { - name: 'Script Operator', - func: (proxies) => { - let output = proxies; - (function() { - // interface to get internal operators - const $get = (name, args) => { - const item = PROXY_PROCESSORS[name]; - return item(args); - }; - const $process = ApplyProcessor; - eval(script); - output = operator(proxies, targetPlatform); - })(); - return output; - } - }; - } + function ScriptOperator(script, targetPlatform, $arguments) { + return { + name: 'Script Operator', + func: (proxies) => { + let output = proxies; + (function () { + // interface to get internal operators + const $get = (name, args) => { + const item = PROXY_PROCESSORS[name]; + return item(args); + }; + const $process = ApplyProcessor; + eval(script); + output = operator(proxies, targetPlatform); + })(); + return output; + }, + }; + } - /**************************** Filters ***************************************/ - // filter useless proxies - function UselessFilter() { - const KEYWORDS = [ '网址', '流量', '时间', '应急', '过期', 'Bandwidth', 'expire' ]; - return { - name: 'Useless Filter', - func: RegexFilter({ - regex: KEYWORDS, - keep: false - }).func - }; - } + /**************************** Filters ***************************************/ + // filter useless proxies + function UselessFilter() { + const KEYWORDS = [ + '网址', + '流量', + '时间', + '应急', + '过期', + 'Bandwidth', + 'expire', + ]; + return { + name: 'Useless Filter', + func: RegexFilter({ + regex: KEYWORDS, + keep: false, + }).func, + }; + } - // filter by regions - function RegionFilter(regions) { - const REGION_MAP = { - HK: '🇭🇰', - TW: '🇹🇼', - US: '🇺🇸', - SG: '🇸🇬', - JP: '🇯🇵', - UK: '🇬🇧' - }; - return { - name: 'Region Filter', - func: (proxies) => { - // this would be high memory usage - return proxies.map((proxy) => { - const flag = getFlag(proxy.name); - return regions.some((r) => REGION_MAP[r] === flag); - }); - } - }; - } + // filter by regions + function RegionFilter(regions) { + const REGION_MAP = { + HK: '🇭🇰', + TW: '🇹🇼', + US: '🇺🇸', + SG: '🇸🇬', + JP: '🇯🇵', + UK: '🇬🇧', + }; + return { + name: 'Region Filter', + func: (proxies) => { + // this would be high memory usage + return proxies.map((proxy) => { + const flag = getFlag(proxy.name); + return regions.some((r) => REGION_MAP[r] === flag); + }); + }, + }; + } - // filter by regex - function RegexFilter({ regex = [], keep = true }) { - return { - name: 'Regex Filter', - func: (proxies) => { - return proxies.map((proxy) => { - const selected = regex.some((r) => { - return buildRegex(r).test(proxy.name); - }); - return keep ? selected : !selected; - }); - } - }; - } + // filter by regex + function RegexFilter({ regex = [], keep = true }) { + return { + name: 'Regex Filter', + func: (proxies) => { + return proxies.map((proxy) => { + const selected = regex.some((r) => { + return buildRegex(r).test(proxy.name); + }); + return keep ? selected : !selected; + }); + }, + }; + } - function buildRegex(str, ...options) { - options = options.join(''); - if (str.startsWith('(?i)')) { - str = str.substr(4); - return new RegExp(str, 'i' + options); - } else { - return new RegExp(str, options); - } - } + function buildRegex(str, ...options) { + options = options.join(''); + if (str.startsWith('(?i)')) { + str = str.substr(4); + return new RegExp(str, 'i' + options); + } else { + return new RegExp(str, options); + } + } - // filter by proxy types - function TypeFilter(types) { - return { - name: 'Type Filter', - func: (proxies) => { - return proxies.map((proxy) => types.some((t) => proxy.type === t)); - } - }; - } + // filter by proxy types + function TypeFilter(types) { + return { + name: 'Type Filter', + func: (proxies) => { + return proxies.map((proxy) => + types.some((t) => proxy.type === t), + ); + }, + }; + } - // use base64 encoded script to filter proxies - /** + // use base64 encoded script to filter proxies + /** Script Example function func(proxies) { const selected = FULL(proxies.length, true); @@ -1180,587 +1301,711 @@ const PROXY_PROCESSORS = (function() { 1. This function name should be `func`! 2. Always declare variables before using them! */ - function ScriptFilter(script, targetPlatform, $arguments) { - return { - name: 'Script Filter', - func: (proxies) => { - let output = FULL(proxies.length, true); - !(function() { - eval(script); - output = filter(proxies, targetPlatform); - })(); - return output; - } - }; - } + function ScriptFilter(script, targetPlatform, $arguments) { + return { + name: 'Script Filter', + func: (proxies) => { + let output = FULL(proxies.length, true); + !(function () { + eval(script); + output = filter(proxies, targetPlatform); + })(); + return output; + }, + }; + } - return { - 'Useless Filter': UselessFilter, - 'Region Filter': RegionFilter, - 'Regex Filter': RegexFilter, - 'Type Filter': TypeFilter, - 'Script Filter': ScriptFilter, + return { + 'Useless Filter': UselessFilter, + 'Region Filter': RegionFilter, + 'Regex Filter': RegexFilter, + 'Type Filter': TypeFilter, + 'Script Filter': ScriptFilter, - 'Set Property Operator': SetPropertyOperator, - 'Flag Operator': FlagOperator, - 'Sort Operator': SortOperator, - 'Regex Sort Operator': RegexSortOperator, - 'Regex Rename Operator': RegexRenameOperator, - 'Regex Delete Operator': RegexDeleteOperator, - 'Script Operator': ScriptOperator, - 'Handle Duplicate Operator': HandleDuplicateOperator - }; + 'Set Property Operator': SetPropertyOperator, + 'Flag Operator': FlagOperator, + 'Sort Operator': SortOperator, + 'Regex Sort Operator': RegexSortOperator, + 'Regex Rename Operator': RegexRenameOperator, + 'Regex Delete Operator': RegexDeleteOperator, + 'Script Operator': ScriptOperator, + 'Handle Duplicate Operator': HandleDuplicateOperator, + }; })(); -const PROXY_PRODUCERS = (function() { - function QX_Producer() { - const targetPlatform = 'QX'; - const produce = (proxy) => { - let obfs_opts; - let tls_opts; - switch (proxy.type) { - case 'ss': - obfs_opts = ''; - if (proxy.plugin === 'obfs') { - const { host, mode } = proxy['plugin-opts']; - obfs_opts = `,obfs=${mode}${host ? ',obfs-host=' + host : ''}`; - } - if (proxy.plugin === 'v2ray-plugin') { - const { tls, host, path } = proxy['plugin-opts']; - obfs_opts = `,obfs=${tls ? 'wss' : 'ws'}${host ? ',obfs-host=' + host : ''}${path - ? ',obfs-uri=' + path - : ''}`; - } - return `shadowsocks=${proxy.server}:${proxy.port},method=${proxy.cipher},password=${proxy.password}${obfs_opts}${proxy.tfo - ? ',fast-open=true' - : ',fast-open=false'}${proxy.udp ? ',udp-relay=true' : ',udp-relay=false'},tag=${proxy.name}`; - case 'ssr': - return `shadowsocks=${proxy.server}:${proxy.port},method=${proxy.cipher},password=${proxy.password},ssr-protocol=${proxy.protocol}${proxy[ - 'protocol-param' - ] - ? ',ssr-protocol-param=' + proxy['protocol-param'] - : ''}${proxy.obfs ? ',obfs=' + proxy.obfs : ''}${proxy['obfs-param'] - ? ',obfs-host=' + proxy['obfs-param'] - : ''},fast-open=${proxy.tfo || false}${proxy.udp - ? ',udp-relay=true' - : ',udp-relay=false'},tag=${proxy.name}`; - case 'vmess': - obfs_opts = ''; - if (proxy.network === 'ws') { - // websocket - if (proxy.tls) { - // ws-tls - obfs_opts = `,obfs=wss${proxy.sni ? ',obfs-host=' + proxy.sni : ''}${proxy['ws-opts'].path - ? ',obfs-uri=' + proxy['ws-opts'].path - : ''},tls-verification=${proxy['skip-cert-verify'] ? 'false' : 'true'}`; - } else { - // ws - obfs_opts = `,obfs=ws${proxy['ws-opts'].headers.Host - ? ',obfs-host=' + proxy['ws-opts'].headers.Host - : ''}${proxy['ws-opts'].path ? ',obfs-uri=' + proxy['ws-opts'].path : ''}`; - } - } else { - // tcp - if (proxy.tls) { - obfs_opts = `,obfs=over-tls${proxy.sni - ? ',obfs-host=' + proxy.sni - : ''},tls-verification=${proxy['skip-cert-verify'] ? 'false' : 'true'}`; - } - } - let result = `vmess=${proxy.server}:${proxy.port},method=${proxy.cipher === 'auto' - ? 'none' - : proxy.cipher},password=${proxy.uuid}${obfs_opts},fast-open=${proxy.tfo || false}${proxy.udp - ? ',udp-relay=true' - : ',udp-relay=false'}`; - if (proxy.alterId === 0) proxy['vmess-aead'] = true; - if (typeof proxy['vmess-aead'] !== 'undefined') { - result += `,aead=${proxy['vmess-aead']}`; - } - result += `,tag=${proxy.name}`; - return result; - case 'trojan': - return `trojan=${proxy.server}:${proxy.port},password=${proxy.password}${proxy.sni - ? ',tls-host=' + proxy.sni - : ''},over-tls=true,tls-verification=${proxy['skip-cert-verify'] - ? 'false' - : 'true'},fast-open=${proxy.tfo || false}${proxy.udp - ? ',udp-relay=true' - : ',udp-relay=false'},tag=${proxy.name}`; - case 'http': - tls_opts = ''; - if (proxy.tls) { - tls_opts = `,over-tls=true,tls-verification=${proxy['skip-cert-verify'] - ? 'false' - : 'true'}${proxy.sni ? ',tls-host=' + proxy.sni : ''}`; - } - return `http=${proxy.server}:${proxy.port},username=${proxy.username},password=${proxy.password}${tls_opts},fast-open=${proxy.tfo || - false},tag=${proxy.name}`; - } - throw new Error(`Platform ${targetPlatform} does not support proxy type: ${proxy.type}`); - }; - return { produce }; - } +const PROXY_PRODUCERS = (function () { + function QX_Producer() { + const targetPlatform = 'QX'; + const produce = (proxy) => { + let obfs_opts; + let tls_opts; + switch (proxy.type) { + case 'ss': + obfs_opts = ''; + if (proxy.plugin === 'obfs') { + const { host, mode } = proxy['plugin-opts']; + obfs_opts = `,obfs=${mode}${ + host ? ',obfs-host=' + host : '' + }`; + } + if (proxy.plugin === 'v2ray-plugin') { + const { tls, host, path } = proxy['plugin-opts']; + obfs_opts = `,obfs=${tls ? 'wss' : 'ws'}${ + host ? ',obfs-host=' + host : '' + }${path ? ',obfs-uri=' + path : ''}`; + } + return `shadowsocks=${proxy.server}:${proxy.port},method=${ + proxy.cipher + },password=${proxy.password}${obfs_opts}${ + proxy.tfo ? ',fast-open=true' : ',fast-open=false' + }${ + proxy.udp ? ',udp-relay=true' : ',udp-relay=false' + },tag=${proxy.name}`; + case 'ssr': + return `shadowsocks=${proxy.server}:${proxy.port},method=${ + proxy.cipher + },password=${proxy.password},ssr-protocol=${ + proxy.protocol + }${ + proxy['protocol-param'] + ? ',ssr-protocol-param=' + proxy['protocol-param'] + : '' + }${proxy.obfs ? ',obfs=' + proxy.obfs : ''}${ + proxy['obfs-param'] + ? ',obfs-host=' + proxy['obfs-param'] + : '' + },fast-open=${proxy.tfo || false}${ + proxy.udp ? ',udp-relay=true' : ',udp-relay=false' + },tag=${proxy.name}`; + case 'vmess': + obfs_opts = ''; + if (proxy.network === 'ws') { + // websocket + if (proxy.tls) { + // ws-tls + obfs_opts = `,obfs=wss${ + proxy.sni ? ',obfs-host=' + proxy.sni : '' + }${ + proxy['ws-opts'].path + ? ',obfs-uri=' + proxy['ws-opts'].path + : '' + },tls-verification=${ + proxy['skip-cert-verify'] ? 'false' : 'true' + }`; + } else { + // ws + obfs_opts = `,obfs=ws${ + proxy['ws-opts'].headers.Host + ? ',obfs-host=' + + proxy['ws-opts'].headers.Host + : '' + }${ + proxy['ws-opts'].path + ? ',obfs-uri=' + proxy['ws-opts'].path + : '' + }`; + } + } else { + // tcp + if (proxy.tls) { + obfs_opts = `,obfs=over-tls${ + proxy.sni ? ',obfs-host=' + proxy.sni : '' + },tls-verification=${ + proxy['skip-cert-verify'] ? 'false' : 'true' + }`; + } + } + let result = `vmess=${proxy.server}:${proxy.port},method=${ + proxy.cipher === 'auto' ? 'none' : proxy.cipher + },password=${proxy.uuid}${obfs_opts},fast-open=${ + proxy.tfo || false + }${proxy.udp ? ',udp-relay=true' : ',udp-relay=false'}`; + if (proxy.alterId === 0) proxy['vmess-aead'] = true; + if (typeof proxy['vmess-aead'] !== 'undefined') { + result += `,aead=${proxy['vmess-aead']}`; + } + result += `,tag=${proxy.name}`; + return result; + case 'trojan': + return `trojan=${proxy.server}:${proxy.port},password=${ + proxy.password + }${ + proxy.sni ? ',tls-host=' + proxy.sni : '' + },over-tls=true,tls-verification=${ + proxy['skip-cert-verify'] ? 'false' : 'true' + },fast-open=${proxy.tfo || false}${ + proxy.udp ? ',udp-relay=true' : ',udp-relay=false' + },tag=${proxy.name}`; + case 'http': + tls_opts = ''; + if (proxy.tls) { + tls_opts = `,over-tls=true,tls-verification=${ + proxy['skip-cert-verify'] ? 'false' : 'true' + }${proxy.sni ? ',tls-host=' + proxy.sni : ''}`; + } + return `http=${proxy.server}:${proxy.port},username=${ + proxy.username + },password=${proxy.password}${tls_opts},fast-open=${ + proxy.tfo || false + },tag=${proxy.name}`; + } + throw new Error( + `Platform ${targetPlatform} does not support proxy type: ${proxy.type}`, + ); + }; + return { produce }; + } - function Loon_Producer() { - const targetPlatform = 'Loon'; - const produce = (proxy) => { - let obfs_opts = '', - tls_opts = '', - udp_opts = '', - tfo_opts = ''; - if (typeof proxy.udp !== 'undefined') { - udp_opts = proxy.udp ? ',udp=true' : ',udp=false'; - } - tfo_opts = `,fast-open=${proxy.tfo || false}`; + function Loon_Producer() { + const targetPlatform = 'Loon'; + const produce = (proxy) => { + let obfs_opts = '', + tls_opts = '', + udp_opts = '', + tfo_opts = ''; + if (typeof proxy.udp !== 'undefined') { + udp_opts = proxy.udp ? ',udp=true' : ',udp=false'; + } + tfo_opts = `,fast-open=${proxy.tfo || false}`; - switch (proxy.type) { - case 'ss': - obfs_opts = ',,'; - if (proxy.plugin) { - if (proxy.plugin === 'obfs') { - const { mode, host } = proxy['plugin-opts']; - obfs_opts = `,${mode},${host || ''}`; - } else { - throw new Error(`Platform ${targetPlatform} does not support obfs option: ${proxy.obfs}`); - } - } - return `${proxy.name}=shadowsocks,${proxy.server},${proxy.port},${proxy.cipher},"${proxy.password}"${obfs_opts}${udp_opts}${tfo_opts}`; - case 'ssr': - return `${proxy.name}=shadowsocksr,${proxy.server},${proxy.port},${proxy.cipher},"${proxy.password}",${proxy.protocol},{${proxy[ - 'protocol-param' - ] || ''}},${proxy.obfs},{${proxy['obfs-param'] || ''}}${udp_opts}${tfo_opts}`; - case 'vmess': - obfs_opts = ''; - if (proxy.network === 'ws') { - const host = proxy['ws-opts'].headers.Host || proxy.server; - obfs_opts = `,transport:ws,host:${host},path:${proxy['ws-opts'].path || '/'}`; - } else { - obfs_opts = `,transport:tcp`; - } - if (proxy.tls) { - obfs_opts += `${proxy.sni ? ',tls-name:' + proxy.sni : ''},skip-cert-verify:${proxy[ - 'skip-cert-verify' - ] || 'false'}`; - } - let result = `${proxy.name}=vmess,${proxy.server},${proxy.port},${proxy.cipher === 'auto' - ? 'none' - : proxy.cipher},"${proxy.uuid}",over-tls:${proxy.tls || 'false'}${obfs_opts}`; - if (proxy.alterId === 0) proxy['vmess-aead'] = true; - if (typeof proxy['vmess-aead'] !== 'undefined') { - result += `,vmess-aead=${proxy['vmess-aead']}`; - } - return result; - case 'trojan': - return `${proxy.name}=trojan,${proxy.server},${proxy.port},"${proxy.password}"${proxy.sni - ? ',tls-name:' + proxy.sni - : ''},skip-cert-verify:${proxy['skip-cert-verify'] || 'false'}${udp_opts}`; - case 'http': - tls_opts = ''; - const base = `${proxy.name}=${proxy.tls - ? 'http' - : 'https'},${proxy.server},${proxy.port},${proxy.username || ''},${proxy.password || ''}`; - if (proxy.tls) { - // https - tls_opts = `${proxy.sni ? ',tls-name:' + proxy.sni : ''},skip-cert-verify:${proxy[ - 'skip-cert-verify' - ]}`; - return base + tls_opts; - } else return base; - } - throw new Error(`Platform ${targetPlatform} does not support proxy type: ${proxy.type}`); - }; - return { produce }; - } + switch (proxy.type) { + case 'ss': + obfs_opts = ',,'; + if (proxy.plugin) { + if (proxy.plugin === 'obfs') { + const { mode, host } = proxy['plugin-opts']; + obfs_opts = `,${mode},${host || ''}`; + } else { + throw new Error( + `Platform ${targetPlatform} does not support obfs option: ${proxy.obfs}`, + ); + } + } + return `${proxy.name}=shadowsocks,${proxy.server},${proxy.port},${proxy.cipher},"${proxy.password}"${obfs_opts}${udp_opts}${tfo_opts}`; + case 'ssr': + return `${proxy.name}=shadowsocksr,${proxy.server},${ + proxy.port + },${proxy.cipher},"${proxy.password}",${proxy.protocol},{${ + proxy['protocol-param'] || '' + }},${proxy.obfs},{${ + proxy['obfs-param'] || '' + }}${udp_opts}${tfo_opts}`; + case 'vmess': + obfs_opts = ''; + if (proxy.network === 'ws') { + const host = + proxy['ws-opts'].headers.Host || proxy.server; + obfs_opts = `,transport:ws,host:${host},path:${ + proxy['ws-opts'].path || '/' + }`; + } else { + obfs_opts = `,transport:tcp`; + } + if (proxy.tls) { + obfs_opts += `${ + proxy.sni ? ',tls-name:' + proxy.sni : '' + },skip-cert-verify:${ + proxy['skip-cert-verify'] || 'false' + }`; + } + let result = `${proxy.name}=vmess,${proxy.server},${ + proxy.port + },${proxy.cipher === 'auto' ? 'none' : proxy.cipher},"${ + proxy.uuid + }",over-tls:${proxy.tls || 'false'}${obfs_opts}`; + if (proxy.alterId === 0) proxy['vmess-aead'] = true; + if (typeof proxy['vmess-aead'] !== 'undefined') { + result += `,vmess-aead=${proxy['vmess-aead']}`; + } + return result; + case 'trojan': + return `${proxy.name}=trojan,${proxy.server},${ + proxy.port + },"${proxy.password}"${ + proxy.sni ? ',tls-name:' + proxy.sni : '' + },skip-cert-verify:${ + proxy['skip-cert-verify'] || 'false' + }${udp_opts}`; + case 'http': + tls_opts = ''; + const base = `${proxy.name}=${ + proxy.tls ? 'http' : 'https' + },${proxy.server},${proxy.port},${proxy.username || ''},${ + proxy.password || '' + }`; + if (proxy.tls) { + // https + tls_opts = `${ + proxy.sni ? ',tls-name:' + proxy.sni : '' + },skip-cert-verify:${proxy['skip-cert-verify']}`; + return base + tls_opts; + } else return base; + } + throw new Error( + `Platform ${targetPlatform} does not support proxy type: ${proxy.type}`, + ); + }; + return { produce }; + } - function Surge_Producer() { - const targetPlatform = 'Surge'; - const produce = (proxy) => { - let result = ''; - let obfs_opts, tls_opts; - switch (proxy.type) { - case 'ss': - obfs_opts = ''; - if (proxy.plugin) { - const { host, mode } = proxy['plugin-opts']; - if (proxy.plugin === 'obfs') { - obfs_opts = `,obfs=${mode}${host ? ',obfs-host=' + host : ''}`; - } else { - throw new Error(`Platform ${targetPlatform} does not support obfs option: ${proxy.obfs}`); - } - } - result = `${proxy.name}=ss,${proxy.server}, ${proxy.port},encrypt-method=${proxy.cipher},password=${proxy.password}${obfs_opts},tfo=${proxy.tfo || - 'false'},udp-relay=${proxy.udp || 'false'}`; - break; - case 'vmess': - tls_opts = ''; - result = `${proxy.name}=vmess,${proxy.server},${proxy.port},username=${proxy.uuid},tls=${proxy.tls || - 'false'},tfo=${proxy.tfo || 'false'}`; + function Surge_Producer() { + const targetPlatform = 'Surge'; + const produce = (proxy) => { + let result = ''; + let obfs_opts, tls_opts; + switch (proxy.type) { + case 'ss': + obfs_opts = ''; + if (proxy.plugin) { + const { host, mode } = proxy['plugin-opts']; + if (proxy.plugin === 'obfs') { + obfs_opts = `,obfs=${mode}${ + host ? ',obfs-host=' + host : '' + }`; + } else { + throw new Error( + `Platform ${targetPlatform} does not support obfs option: ${proxy.obfs}`, + ); + } + } + result = `${proxy.name}=ss,${proxy.server}, ${ + proxy.port + },encrypt-method=${proxy.cipher},password=${ + proxy.password + }${obfs_opts},tfo=${proxy.tfo || 'false'},udp-relay=${ + proxy.udp || 'false' + }`; + break; + case 'vmess': + tls_opts = ''; + result = `${proxy.name}=vmess,${proxy.server},${ + proxy.port + },username=${proxy.uuid},tls=${proxy.tls || 'false'},tfo=${ + proxy.tfo || 'false' + }`; - if (proxy.alterId === 0) proxy['vmess-aead'] = true; - if (typeof proxy['vmess-aead'] !== 'undefined') { - result += `,vmess-aead=${proxy['vmess-aead']}`; - } - if (proxy.network === 'ws') { - const path = proxy['ws-opts'].path || '/'; - const wsHeaders = Object.entries(proxy['ws-opts'].headers) - .map(([ key, value ]) => `${key}:"${value}"`) - .join('|'); - result += `,ws=true${path ? ',ws-path=' + path : ''}${wsHeaders - ? ',ws-headers=' + wsHeaders - : ''}`; - } - if (proxy.tls) { - result += `${typeof proxy['skip-cert-verify'] !== 'undefined' - ? ',skip-cert-verify=' + proxy['skip-cert-verify'] - : ''}`; - result += proxy.sni ? `,sni=${proxy.sni}` : ''; - } - break; - case 'trojan': - result = `${proxy.name}=trojan,${proxy.server},${proxy.port},password=${proxy.password}${typeof proxy[ - 'skip-cert-verify' - ] !== 'undefined' - ? ',skip-cert-verify=' + proxy['skip-cert-verify'] - : ''}${proxy.sni ? ',sni=' + proxy.sni : ''},tfo=${proxy.tfo || - 'false'},udp-relay=${proxy.udp || 'false'}`; - break; - case 'http': - tls_opts = ', tls=false'; - if (proxy.tls) { - tls_opts = `,tls=true,skip-cert-verify=${proxy['skip-cert-verify']},sni=${proxy.sni}`; - } - result = `${proxy.name}=http, ${proxy.server}, ${proxy.port}${proxy.username - ? ',username=' + proxy.username - : ''}${proxy.password ? ',password=' + proxy.password : ''}${tls_opts},tfo=${proxy.tfo || - 'false'}`; - break; - default: - throw new Error(`Platform ${targetPlatform} does not support proxy type: ${proxy.type}`); - } + if (proxy.alterId === 0) proxy['vmess-aead'] = true; + if (typeof proxy['vmess-aead'] !== 'undefined') { + result += `,vmess-aead=${proxy['vmess-aead']}`; + } + if (proxy.network === 'ws') { + const path = proxy['ws-opts'].path || '/'; + const wsHeaders = Object.entries( + proxy['ws-opts'].headers, + ) + .map(([key, value]) => `${key}:"${value}"`) + .join('|'); + result += `,ws=true${path ? ',ws-path=' + path : ''}${ + wsHeaders ? ',ws-headers=' + wsHeaders : '' + }`; + } + if (proxy.tls) { + result += `${ + typeof proxy['skip-cert-verify'] !== 'undefined' + ? ',skip-cert-verify=' + + proxy['skip-cert-verify'] + : '' + }`; + result += proxy.sni ? `,sni=${proxy.sni}` : ''; + } + break; + case 'trojan': + result = `${proxy.name}=trojan,${proxy.server},${ + proxy.port + },password=${proxy.password}${ + typeof proxy['skip-cert-verify'] !== 'undefined' + ? ',skip-cert-verify=' + proxy['skip-cert-verify'] + : '' + }${proxy.sni ? ',sni=' + proxy.sni : ''},tfo=${ + proxy.tfo || 'false' + },udp-relay=${proxy.udp || 'false'}`; + break; + case 'http': + tls_opts = ', tls=false'; + if (proxy.tls) { + tls_opts = `,tls=true,skip-cert-verify=${proxy['skip-cert-verify']},sni=${proxy.sni}`; + } + result = `${proxy.name}=http, ${proxy.server}, ${ + proxy.port + }${proxy.username ? ',username=' + proxy.username : ''}${ + proxy.password ? ',password=' + proxy.password : '' + }${tls_opts},tfo=${proxy.tfo || 'false'}`; + break; + default: + throw new Error( + `Platform ${targetPlatform} does not support proxy type: ${proxy.type}`, + ); + } - // handle surge hybrid param - result += proxy['surge-hybrid'] !== undefined ? `,hybrid=${proxy['surge-hybrid']}` : ''; - return result; - }; - return { produce }; - } + // handle surge hybrid param + result += + proxy['surge-hybrid'] !== undefined + ? `,hybrid=${proxy['surge-hybrid']}` + : ''; + return result; + }; + return { produce }; + } - function Clash_Producer() { - const type = 'ALL'; - const produce = (proxies) => { - return ( - 'proxies:\n' + - proxies - .map((proxy) => { - delete proxy.supported; - return ' - ' + JSON.stringify(proxy) + '\n'; - }) - .join('') - ); - }; - return { type, produce }; - } + function Clash_Producer() { + const type = 'ALL'; + const produce = (proxies) => { + return ( + 'proxies:\n' + + proxies + .map((proxy) => { + delete proxy.supported; + return ' - ' + JSON.stringify(proxy) + '\n'; + }) + .join('') + ); + }; + return { type, produce }; + } - function URI_Producer() { - const type = 'SINGLE'; - const produce = (proxy) => { - let result = ''; - switch (proxy.type) { - case 'ss': - const userinfo = `${proxy.cipher}:${proxy.password}`; - result = `ss://${Base64.encode(userinfo)}@${proxy.server}:${proxy.port}/`; - if (proxy.plugin) { - result += '?plugin='; - const opts = proxy['plugin-opts']; - switch (proxy.plugin) { - case 'obfs': - result += encodeURIComponent( - `simple-obfs;obfs=${opts.mode}${opts.host ? ';obfs-host=' + opts.host : ''}` - ); - break; - case 'v2ray-plugin': - result += encodeURIComponent( - `v2ray-plugin;obfs=${opts.mode}${opts.host - ? ';obfs-host' + opts.host - : ''}${opts.tls ? ';tls' : ''}` - ); - break; - default: - throw new Error(`Unsupported plugin option: ${proxy.plugin}`); - } - } - result += `#${encodeURIComponent(proxy.name)}`; - break; - case 'ssr': - result = `${proxy.server}:${proxy.port}:${proxy.protocol}:${proxy.cipher}:${proxy.obfs}:${Base64.encode( - proxy.password - )}/`; - result += `?remarks=${Base64.encode(proxy.name)}${proxy['obfs-param'] - ? '&obfsparam=' + Base64.encode(proxy['obfs-param']) - : ''}${proxy['protocol-param'] - ? '&protocolparam=' + Base64.encode(proxy['protocol-param']) - : ''}`; - result = 'ssr://' + Base64.encode(result); - break; - case 'vmess': - // V2RayN URI format - result = { - ps: proxy.name, - add: proxy.server, - port: proxy.port, - id: proxy.uuid, - type: '', - aid: 0, - net: proxy.network || 'tcp', - tls: proxy.tls ? 'tls' : '' - }; - // obfs - if (proxy.network === 'ws') { - result.path = proxy['ws-opts'].path || '/'; - result.host = proxy['ws-opts'].headers.Host || proxy.server; - } - result = 'vmess://' + Base64.encode(JSON.stringify(result)); - break; - case 'trojan': - result = `trojan://${proxy.password}@${proxy.server}:${proxy.port}#${encodeURIComponent( - proxy.name - )}`; - break; - default: - throw new Error(`Cannot handle proxy type: ${proxy.type}`); - } - return result; - }; - return { type, produce }; - } + function URI_Producer() { + const type = 'SINGLE'; + const produce = (proxy) => { + let result = ''; + switch (proxy.type) { + case 'ss': + const userinfo = `${proxy.cipher}:${proxy.password}`; + result = `ss://${Base64.encode(userinfo)}@${proxy.server}:${ + proxy.port + }/`; + if (proxy.plugin) { + result += '?plugin='; + const opts = proxy['plugin-opts']; + switch (proxy.plugin) { + case 'obfs': + result += encodeURIComponent( + `simple-obfs;obfs=${opts.mode}${ + opts.host + ? ';obfs-host=' + opts.host + : '' + }`, + ); + break; + case 'v2ray-plugin': + result += encodeURIComponent( + `v2ray-plugin;obfs=${opts.mode}${ + opts.host + ? ';obfs-host' + opts.host + : '' + }${opts.tls ? ';tls' : ''}`, + ); + break; + default: + throw new Error( + `Unsupported plugin option: ${proxy.plugin}`, + ); + } + } + result += `#${encodeURIComponent(proxy.name)}`; + break; + case 'ssr': + result = `${proxy.server}:${proxy.port}:${proxy.protocol}:${ + proxy.cipher + }:${proxy.obfs}:${Base64.encode(proxy.password)}/`; + result += `?remarks=${Base64.encode(proxy.name)}${ + proxy['obfs-param'] + ? '&obfsparam=' + Base64.encode(proxy['obfs-param']) + : '' + }${ + proxy['protocol-param'] + ? '&protocolparam=' + + Base64.encode(proxy['protocol-param']) + : '' + }`; + result = 'ssr://' + Base64.encode(result); + break; + case 'vmess': + // V2RayN URI format + result = { + ps: proxy.name, + add: proxy.server, + port: proxy.port, + id: proxy.uuid, + type: '', + aid: 0, + net: proxy.network || 'tcp', + tls: proxy.tls ? 'tls' : '', + }; + // obfs + if (proxy.network === 'ws') { + result.path = proxy['ws-opts'].path || '/'; + result.host = + proxy['ws-opts'].headers.Host || proxy.server; + } + result = 'vmess://' + Base64.encode(JSON.stringify(result)); + break; + case 'trojan': + result = `trojan://${proxy.password}@${proxy.server}:${ + proxy.port + }#${encodeURIComponent(proxy.name)}`; + break; + default: + throw new Error(`Cannot handle proxy type: ${proxy.type}`); + } + return result; + }; + return { type, produce }; + } - function JSON_Producer() { - const type = 'ALL'; - const produce = (proxies) => JSON.stringify(proxies, null, 2); - return { type, produce }; - } + function JSON_Producer() { + const type = 'ALL'; + const produce = (proxies) => JSON.stringify(proxies, null, 2); + return { type, produce }; + } - return { - QX: QX_Producer(), - Surge: Surge_Producer(), - Loon: Loon_Producer(), - Clash: Clash_Producer(), - URI: URI_Producer(), - JSON: JSON_Producer() - }; + return { + QX: QX_Producer(), + Surge: Surge_Producer(), + Loon: Loon_Producer(), + Clash: Clash_Producer(), + URI: URI_Producer(), + JSON: JSON_Producer(), + }; })(); -const ProxyUtils = (function() { - function preprocess(raw) { - for (const processor of PROXY_PREPROCESSORS) { - try { - if (processor.test(raw)) { - $.info(`Pre-processor [${processor.name}] activated`); - return processor.parse(raw); - } - } catch (e) { - $.error(`Parser [${processor.name}] failed\n Reason: ${e}`); - } - } - return raw; - } +export const ProxyUtils = (function () { + function preprocess(raw) { + for (const processor of PROXY_PREPROCESSORS) { + try { + if (processor.test(raw)) { + $.info(`Pre-processor [${processor.name}] activated`); + return processor.parse(raw); + } + } catch (e) { + $.error(`Parser [${processor.name}] failed\n Reason: ${e}`); + } + } + return raw; + } - function safeMatch(p, line) { - let patternMatched; - try { - patternMatched = p.test(line); - } catch (err) { - patternMatched = false; - } - return patternMatched; - } + function safeMatch(p, line) { + let patternMatched; + try { + patternMatched = p.test(line); + } catch (err) { + patternMatched = false; + } + return patternMatched; + } - function parse(raw) { - raw = preprocess(raw); - // parse - const lines = raw.split('\n'); - const proxies = []; - let lastParser; + function parse(raw) { + raw = preprocess(raw); + // parse + const lines = raw.split('\n'); + const proxies = []; + let lastParser; - for (let line of lines) { - line = line.trim(); - if (line.length === 0) continue; // skip empty line - let matched = lastParser && safeMatch(lastParser, line); - if (!matched) { - for (const parser of PROXY_PARSERS) { - if (safeMatch(parser, line)) { - lastParser = parser; - matched = true; - $.info(`Proxy parser: ${parser.name} is activated`); - break; - } - } - } - if (!matched) { - $.error(`Failed to find a rule to parse line: \n${line}\n`); - } else { - try { - const proxy = lastParser.parse(line); - if (!proxy) { - $.error(`Parser ${lastParser.name} return nothing for \n${line}\n`); - } - proxies.push(proxy); - } catch (err) { - $.error(`Failed to parse line: \n ${line}\n Reason: ${err.stack}`); - } - } - } + for (let line of lines) { + line = line.trim(); + if (line.length === 0) continue; // skip empty line + let matched = lastParser && safeMatch(lastParser, line); + if (!matched) { + for (const parser of PROXY_PARSERS) { + if (safeMatch(parser, line)) { + lastParser = parser; + matched = true; + $.info(`Proxy parser: ${parser.name} is activated`); + break; + } + } + } + if (!matched) { + $.error(`Failed to find a rule to parse line: \n${line}\n`); + } else { + try { + const proxy = lastParser.parse(line); + if (!proxy) { + $.error( + `Parser ${lastParser.name} return nothing for \n${line}\n`, + ); + } + proxies.push(proxy); + } catch (err) { + $.error( + `Failed to parse line: \n ${line}\n Reason: ${err.stack}`, + ); + } + } + } - return proxies; - } + return proxies; + } - async function process(proxies, operators = [], targetPlatform) { - for (const item of operators) { - // process script - let script; - const $arguments = {}; - if (item.type.indexOf('Script') !== -1) { - const { mode, content } = item.args; - if (mode === 'link') { - const url = content; - // extract link arguments - const rawArgs = url.split('#'); - if (rawArgs.length > 1) { - for (const pair of rawArgs[1].split('&')) { - const key = pair.split('=')[0]; - const value = pair.split('=')[1] || true; - $arguments[key] = value; - } - } + async function process(proxies, operators = [], targetPlatform) { + for (const item of operators) { + // process script + let script; + const $arguments = {}; + if (item.type.indexOf('Script') !== -1) { + const { mode, content } = item.args; + if (mode === 'link') { + const url = content; + // extract link arguments + const rawArgs = url.split('#'); + if (rawArgs.length > 1) { + for (const pair of rawArgs[1].split('&')) { + const key = pair.split('=')[0]; + const value = pair.split('=')[1] || true; + $arguments[key] = value; + } + } - // if this is remote script, download it - try { - script = await download(url.split('#')[0]); - $.info(`Script loaded: >>>\n ${script}`); - } catch (err) { - $.error(`Error when downloading remote script: ${item.args.content}.\n Reason: ${err}`); - // skip the script if download failed. - continue; - } - } else { - script = content; - } - } + // if this is remote script, download it + try { + script = await download(url.split('#')[0]); + $.info(`Script loaded: >>>\n ${script}`); + } catch (err) { + $.error( + `Error when downloading remote script: ${item.args.content}.\n Reason: ${err}`, + ); + // skip the script if download failed. + continue; + } + } else { + script = content; + } + } - if (!PROXY_PROCESSORS[item.type]) { - $.error(`Unknown operator: "${item.type}"`); - continue; - } + if (!PROXY_PROCESSORS[item.type]) { + $.error(`Unknown operator: "${item.type}"`); + continue; + } - $.info(`Applying "${item.type}" with arguments:\n >>> ${JSON.stringify(item.args, null, 2) || 'None'}`); - let processor; - if (item.type.indexOf('Script') !== -1) { - processor = PROXY_PROCESSORS[item.type](script, targetPlatform, $arguments); - } else { - processor = PROXY_PROCESSORS[item.type](item.args); - } - proxies = ApplyProcessor(processor, proxies); - } - return proxies; - } + $.info( + `Applying "${item.type}" with arguments:\n >>> ${ + JSON.stringify(item.args, null, 2) || 'None' + }`, + ); + let processor; + if (item.type.indexOf('Script') !== -1) { + processor = PROXY_PROCESSORS[item.type]( + script, + targetPlatform, + $arguments, + ); + } else { + processor = PROXY_PROCESSORS[item.type](item.args); + } + proxies = ApplyProcessor(processor, proxies); + } + return proxies; + } - function produce(proxies, targetPlatform) { - const producer = PROXY_PRODUCERS[targetPlatform]; - if (!producer) { - throw new Error(`Target platform: ${targetPlatform} is not supported!`); - } + function produce(proxies, targetPlatform) { + const producer = PROXY_PRODUCERS[targetPlatform]; + if (!producer) { + throw new Error( + `Target platform: ${targetPlatform} is not supported!`, + ); + } - // filter unsupported proxies - proxies = proxies.filter((proxy) => !(proxy.supported && proxy.supported[targetPlatform] === false)); + // filter unsupported proxies + proxies = proxies.filter( + (proxy) => + !(proxy.supported && proxy.supported[targetPlatform] === false), + ); - $.info(`Producing proxies for target: ${targetPlatform}`); - if (typeof producer.type === 'undefined' || producer.type === 'SINGLE') { - return proxies - .map((proxy) => { - try { - return producer.produce(proxy); - } catch (err) { - $.error(`Cannot produce proxy: ${JSON.stringify(proxy, null, 2)}\nReason: ${err}`); - return ''; - } - }) - .filter((line) => line.length > 0) - .join('\n'); - } else if (producer.type === 'ALL') { - return producer.produce(proxies); - } - } + $.info(`Producing proxies for target: ${targetPlatform}`); + if ( + typeof producer.type === 'undefined' || + producer.type === 'SINGLE' + ) { + return proxies + .map((proxy) => { + try { + return producer.produce(proxy); + } catch (err) { + $.error( + `Cannot produce proxy: ${JSON.stringify( + proxy, + null, + 2, + )}\nReason: ${err}`, + ); + return ''; + } + }) + .filter((line) => line.length > 0) + .join('\n'); + } else if (producer.type === 'ALL') { + return producer.produce(proxies); + } + } - return { - parse, - process, - produce - }; + return { + parse, + process, + produce, + }; })(); -function ApplyProcessor(processor, objs) { - function ApplyFilter(filter, objs) { - // select proxies - let selected = FULL(objs.length, true); - try { - selected = AND(selected, filter.func(objs)); - } catch (err) { - // print log and skip this filter - console.log(`Cannot apply filter ${filter.name}\n Reason: ${err}`); - } - return objs.filter((_, i) => selected[i]); - } +export function ApplyProcessor(processor, objs) { + function ApplyFilter(filter, objs) { + // select proxies + let selected = FULL(objs.length, true); + try { + selected = AND(selected, filter.func(objs)); + } catch (err) { + // print log and skip this filter + console.log(`Cannot apply filter ${filter.name}\n Reason: ${err}`); + } + return objs.filter((_, i) => selected[i]); + } - function ApplyOperator(operator, objs) { - let output = clone(objs); - try { - const output_ = operator.func(output); - if (output_) output = output_; - } catch (err) { - // print log and skip this operator - console.log(`Cannot apply operator ${operator.name}! Reason: ${err}`); - } - return output; - } + function ApplyOperator(operator, objs) { + let output = clone(objs); + try { + const output_ = operator.func(output); + if (output_) output = output_; + } catch (err) { + // print log and skip this operator + console.log( + `Cannot apply operator ${operator.name}! Reason: ${err}`, + ); + } + return output; + } - if (processor.name.indexOf('Filter') !== -1) { - return ApplyFilter(processor, objs); - } else if (processor.name.indexOf('Operator') !== -1) { - return ApplyOperator(processor, objs); - } + if (processor.name.indexOf('Filter') !== -1) { + return ApplyFilter(processor, objs); + } else if (processor.name.indexOf('Operator') !== -1) { + return ApplyOperator(processor, objs); + } } // shuffle array function shuffle(array) { - let currentIndex = array.length, - temporaryValue, - randomIndex; + let currentIndex = array.length, + temporaryValue, + randomIndex; - // While there remain elements to shuffle... - while (0 !== currentIndex) { - // Pick a remaining element... - randomIndex = Math.floor(Math.random() * currentIndex); - currentIndex -= 1; + // While there remain elements to shuffle... + while (0 !== currentIndex) { + // Pick a remaining element... + randomIndex = Math.floor(Math.random() * currentIndex); + currentIndex -= 1; - // And swap it with the current element. - temporaryValue = array[currentIndex]; - array[currentIndex] = array[randomIndex]; - array[randomIndex] = temporaryValue; - } + // And swap it with the current element. + temporaryValue = array[currentIndex]; + array[currentIndex] = array[randomIndex]; + array[randomIndex] = temporaryValue; + } - return array; + return array; } // deep clone object function clone(object) { - return JSON.parse(JSON.stringify(object)); + return JSON.parse(JSON.stringify(object)); } // remove flag function removeFlag(str) { - return str.replace(/[\uD83C][\uDDE6-\uDDFF][\uD83C][\uDDE6-\uDDFF]/g, '').trim(); + return str + .replace(/[\uD83C][\uDDE6-\uDDFF][\uD83C][\uDDE6-\uDDFF]/g, '') + .trim(); } - -module.exports = { - ProxyUtils, - ApplyProcessor -}; diff --git a/backend/src/core/rule-utils.js b/backend/src/core/rule-utils.js index ae1ac2b..b1f87fd 100644 --- a/backend/src/core/rule-utils.js +++ b/backend/src/core/rule-utils.js @@ -1,293 +1,322 @@ -const $ = require("./app"); +import $ from './app'; const RULE_TYPES_MAPPING = [ - [ /^(DOMAIN|host|HOST)$/, 'DOMAIN' ], - [ /^(DOMAIN-KEYWORD|host-keyword|HOST-KEYWORD)$/, 'DOMAIN-KEYWORD' ], - [ /^(DOMAIN-SUFFIX|host-suffix|HOST-SUFFIX)$/, 'DOMAIN-SUFFIX' ], - [ /^USER-AGENT$/i, 'USER-AGENT' ], - [ /^PROCESS-NAME$/, 'PROCESS-NAME' ], - [ /^(DEST-PORT|DST-PORT)$/, 'DST-PORT' ], - [ /^SRC-IP(-CIDR)?$/, 'SRC-IP' ], - [ /^(IN|SRC)-PORT$/, 'IN-PORT' ], - [ /^PROTOCOL$/, 'PROTOCOL' ], - [ /^IP-CIDR$/i, 'IP-CIDR' ], - [ /^(IP-CIDR6|ip6-cidr|IP6-CIDR)$/ ] + [/^(DOMAIN|host|HOST)$/, 'DOMAIN'], + [/^(DOMAIN-KEYWORD|host-keyword|HOST-KEYWORD)$/, 'DOMAIN-KEYWORD'], + [/^(DOMAIN-SUFFIX|host-suffix|HOST-SUFFIX)$/, 'DOMAIN-SUFFIX'], + [/^USER-AGENT$/i, 'USER-AGENT'], + [/^PROCESS-NAME$/, 'PROCESS-NAME'], + [/^(DEST-PORT|DST-PORT)$/, 'DST-PORT'], + [/^SRC-IP(-CIDR)?$/, 'SRC-IP'], + [/^(IN|SRC)-PORT$/, 'IN-PORT'], + [/^PROTOCOL$/, 'PROTOCOL'], + [/^IP-CIDR$/i, 'IP-CIDR'], + [/^(IP-CIDR6|ip6-cidr|IP6-CIDR)$/], ]; -const RULE_PREPROCESSORS = (function() { - function HTML() { - const name = 'HTML'; - const test = (raw) => /^/.test(raw); - // simply discard HTML - const parse = (_) => ''; - return { name, test, parse }; - } +const RULE_PREPROCESSORS = (function () { + function HTML() { + const name = 'HTML'; + const test = (raw) => /^/.test(raw); + // simply discard HTML + const parse = (_) => ''; + return { name, test, parse }; + } - function ClashProvider() { - const name = 'Clash Provider'; - const test = (raw) => raw.indexOf('payload:') === 0; - const parse = (raw) => { - return raw.replace('payload:', '').replace(/^\s*-\s*/gm, ''); - }; - return { name, test, parse }; - } + function ClashProvider() { + const name = 'Clash Provider'; + const test = (raw) => raw.indexOf('payload:') === 0; + const parse = (raw) => { + return raw.replace('payload:', '').replace(/^\s*-\s*/gm, ''); + }; + return { name, test, parse }; + } - return [ HTML(), ClashProvider() ]; + return [HTML(), ClashProvider()]; })(); -const RULE_PARSERS = (function() { - function AllRuleParser() { - const name = 'Universal Rule Parser'; - const test = () => true; - const parse = (raw) => { - const lines = raw.split('\n'); - const result = []; - for (let line of lines) { - line = line.trim(); - // skip empty line - if (line.length === 0) continue; - // skip comments - if (/\s*#/.test(line)) continue; - try { - const params = line.split(',').map((w) => w.trim()); - let rawType = params[0]; - let matched = false; - for (const item of RULE_TYPES_MAPPING) { - const regex = item[0]; - if (regex.test(rawType)) { - matched = true; - const rule = { - type: item[1], - content: params[1] - }; - if (rule.type === 'IP-CIDR' || rule.type === 'IP-CIDR6') { - rule.options = params.slice(2); - } - result.push(rule); - } - } - if (!matched) throw new Error('Invalid rule type: ' + rawType); - } catch (e) { - console.error(`Failed to parse line: ${line}\n Reason: ${e}`); - } - } - return result; - }; - return { name, test, parse }; - } +const RULE_PARSERS = (function () { + function AllRuleParser() { + const name = 'Universal Rule Parser'; + const test = () => true; + const parse = (raw) => { + const lines = raw.split('\n'); + const result = []; + for (let line of lines) { + line = line.trim(); + // skip empty line + if (line.length === 0) continue; + // skip comments + if (/\s*#/.test(line)) continue; + try { + const params = line.split(',').map((w) => w.trim()); + let rawType = params[0]; + let matched = false; + for (const item of RULE_TYPES_MAPPING) { + const regex = item[0]; + if (regex.test(rawType)) { + matched = true; + const rule = { + type: item[1], + content: params[1], + }; + if ( + rule.type === 'IP-CIDR' || + rule.type === 'IP-CIDR6' + ) { + rule.options = params.slice(2); + } + result.push(rule); + } + } + if (!matched) + throw new Error('Invalid rule type: ' + rawType); + } catch (e) { + console.error( + `Failed to parse line: ${line}\n Reason: ${e}`, + ); + } + } + return result; + }; + return { name, test, parse }; + } - return [ AllRuleParser() ]; + return [AllRuleParser()]; })(); -const RULE_PROCESSORS = (function() { - function RegexFilter({ regex = [], keep = true }) { - return { - name: 'Regex Filter', - func: (rules) => { - return rules.map((rule) => { - const selected = regex.some((r) => { - r = new RegExp(r); - return r.test(rule); - }); - return keep ? selected : !selected; - }); - } - }; - } +const RULE_PROCESSORS = (function () { + function RegexFilter({ regex = [], keep = true }) { + return { + name: 'Regex Filter', + func: (rules) => { + return rules.map((rule) => { + const selected = regex.some((r) => { + r = new RegExp(r); + return r.test(rule); + }); + return keep ? selected : !selected; + }); + }, + }; + } - function TypeFilter(types) { - return { - name: 'Type Filter', - func: (rules) => { - return rules.map((rule) => types.some((t) => rule.type === t)); - } - }; - } + function TypeFilter(types) { + return { + name: 'Type Filter', + func: (rules) => { + return rules.map((rule) => types.some((t) => rule.type === t)); + }, + }; + } - function RemoveDuplicateFilter() { - return { - name: 'Remove Duplicate Filter', - func: (rules) => { - const seen = new Set(); - const result = []; - rules.forEach((rule) => { - const options = rule.options || []; - options.sort(); - const key = `${rule.type},${rule.content},${JSON.stringify(options)}`; - if (!seen.has(key)) { - result.push(rule); - seen.add(key); - } - }); - return result; - } - }; - } + function RemoveDuplicateFilter() { + return { + name: 'Remove Duplicate Filter', + func: (rules) => { + const seen = new Set(); + const result = []; + rules.forEach((rule) => { + const options = rule.options || []; + options.sort(); + const key = `${rule.type},${rule.content},${JSON.stringify( + options, + )}`; + if (!seen.has(key)) { + result.push(rule); + seen.add(key); + } + }); + return result; + }, + }; + } - // regex: [{expr: "string format regex", now: "now"}] - function RegexReplaceOperator(regex) { - return { - name: 'Regex Rename Operator', - func: (rules) => { - return rules.map((rule) => { - for (const { expr, now } of regex) { - rule.content = rule.content.replace(new RegExp(expr, 'g'), now).trim(); - } - return rule; - }); - } - }; - } + // regex: [{expr: "string format regex", now: "now"}] + function RegexReplaceOperator(regex) { + return { + name: 'Regex Rename Operator', + func: (rules) => { + return rules.map((rule) => { + for (const { expr, now } of regex) { + rule.content = rule.content + .replace(new RegExp(expr, 'g'), now) + .trim(); + } + return rule; + }); + }, + }; + } - return { - 'Regex Filter': RegexFilter, - 'Remove Duplicate Filter': RemoveDuplicateFilter, - 'Type Filter': TypeFilter, + return { + 'Regex Filter': RegexFilter, + 'Remove Duplicate Filter': RemoveDuplicateFilter, + 'Type Filter': TypeFilter, - 'Regex Replace Operator': RegexReplaceOperator - }; + 'Regex Replace Operator': RegexReplaceOperator, + }; })(); -const RULE_PRODUCERS = (function() { - function QXFilter() { - const type = 'SINGLE'; - const func = (rule) => { - // skip unsupported rules - const UNSUPPORTED = [ 'URL-REGEX', 'DEST-PORT', 'SRC-IP', 'IN-PORT', 'PROTOCOL' ]; - if (UNSUPPORTED.indexOf(rule.type) !== -1) return null; +const RULE_PRODUCERS = (function () { + function QXFilter() { + const type = 'SINGLE'; + const func = (rule) => { + // skip unsupported rules + const UNSUPPORTED = [ + 'URL-REGEX', + 'DEST-PORT', + 'SRC-IP', + 'IN-PORT', + 'PROTOCOL', + ]; + if (UNSUPPORTED.indexOf(rule.type) !== -1) return null; - const TRANSFORM = { - 'DOMAIN-KEYWORD': 'HOST-KEYWORD', - 'DOMAIN-SUFFIX': 'HOST-SUFFIX', - DOMAIN: 'HOST', - 'IP-CIDR6': 'IP6-CIDR' - }; + const TRANSFORM = { + 'DOMAIN-KEYWORD': 'HOST-KEYWORD', + 'DOMAIN-SUFFIX': 'HOST-SUFFIX', + DOMAIN: 'HOST', + 'IP-CIDR6': 'IP6-CIDR', + }; - // QX does not support the no-resolve option - return `${TRANSFORM[rule.type] || rule.type},${rule.content},SUB-STORE`; - }; - return { type, func }; - } + // QX does not support the no-resolve option + return `${TRANSFORM[rule.type] || rule.type},${ + rule.content + },SUB-STORE`; + }; + return { type, func }; + } - function SurgeRuleSet() { - const type = 'SINGLE'; - const func = (rule) => { - let output = `${rule.type},${rule.content}`; - if (rule.type === 'IP-CIDR' || rule.type === 'IP-CIDR6') { - output += rule.options ? `,${rule.options[0]}` : ''; - } - return output; - }; - return { type, func }; - } + function SurgeRuleSet() { + const type = 'SINGLE'; + const func = (rule) => { + let output = `${rule.type},${rule.content}`; + if (rule.type === 'IP-CIDR' || rule.type === 'IP-CIDR6') { + output += rule.options ? `,${rule.options[0]}` : ''; + } + return output; + }; + return { type, func }; + } - function LoonRules() { - const type = 'SINGLE'; - const func = (rule) => { - // skip unsupported rules - const UNSUPPORTED = [ 'DEST-PORT', 'SRC-IP', 'IN-PORT', 'PROTOCOL' ]; - if (UNSUPPORTED.indexOf(rule.type) !== -1) return null; - return SurgeRuleSet().func(rule); - }; - return { type, func }; - } + function LoonRules() { + const type = 'SINGLE'; + const func = (rule) => { + // skip unsupported rules + const UNSUPPORTED = ['DEST-PORT', 'SRC-IP', 'IN-PORT', 'PROTOCOL']; + if (UNSUPPORTED.indexOf(rule.type) !== -1) return null; + return SurgeRuleSet().func(rule); + }; + return { type, func }; + } - function ClashRuleProvider() { - const type = 'ALL'; - const func = (rules) => { - const TRANSFORM = { - 'DEST-PORT': 'DST-PORT', - 'SRC-IP': 'SRC-IP-CIDR', - 'IN-PORT': 'SRC-PORT' - }; - const conf = { - payload: rules.map((rule) => { - let output = `${TRANSFORM[rule.type] || rule.type},${rule.content}`; - if (rule.type === 'IP-CIDR' || rule.type === 'IP-CIDR6') { - output += rule.options ? `,${rule.options[0]}` : ''; - } - return output; - }) - }; - return YAML.stringify(conf); - }; - return { type, func }; - } + function ClashRuleProvider() { + const type = 'ALL'; + const func = (rules) => { + const TRANSFORM = { + 'DEST-PORT': 'DST-PORT', + 'SRC-IP': 'SRC-IP-CIDR', + 'IN-PORT': 'SRC-PORT', + }; + const conf = { + payload: rules.map((rule) => { + let output = `${TRANSFORM[rule.type] || rule.type},${ + rule.content + }`; + if (rule.type === 'IP-CIDR' || rule.type === 'IP-CIDR6') { + output += rule.options ? `,${rule.options[0]}` : ''; + } + return output; + }), + }; + return YAML.stringify(conf); + }; + return { type, func }; + } - return { - QX: QXFilter(), - Surge: SurgeRuleSet(), - Loon: LoonRules(), - Clash: ClashRuleProvider() - }; + return { + QX: QXFilter(), + Surge: SurgeRuleSet(), + Loon: LoonRules(), + Clash: ClashRuleProvider(), + }; })(); -const RuleUtils = (function() { - function preprocess(raw) { - for (const processor of RULE_PREPROCESSORS) { - try { - if (processor.test(raw)) { - $.info(`Pre-processor [${processor.name}] activated`); - return processor.parse(raw); - } - } catch (e) { - $.error(`Parser [${processor.name}] failed\n Reason: ${e}`); - } - } - return raw; - } +export const RuleUtils = (function () { + function preprocess(raw) { + for (const processor of RULE_PREPROCESSORS) { + try { + if (processor.test(raw)) { + $.info(`Pre-processor [${processor.name}] activated`); + return processor.parse(raw); + } + } catch (e) { + $.error(`Parser [${processor.name}] failed\n Reason: ${e}`); + } + } + return raw; + } - function parse(raw) { - raw = preprocess(raw); - for (const parser of RULE_PARSERS) { - let matched; - try { - matched = parser.test(raw); - } catch (err) { - matched = false; - } - if (matched) { - $.info(`Rule parser [${parser.name}] is activated!`); - return parser.parse(raw); - } - } - } + function parse(raw) { + raw = preprocess(raw); + for (const parser of RULE_PARSERS) { + let matched; + try { + matched = parser.test(raw); + } catch (err) { + matched = false; + } + if (matched) { + $.info(`Rule parser [${parser.name}] is activated!`); + return parser.parse(raw); + } + } + } - async function process(rules, operators) { - for (const item of operators) { - if (!RULE_PROCESSORS[item.type]) { - console.error(`Unknown operator: ${item.type}!`); - continue; - } - const processor = RULE_PROCESSORS[item.type](item.args); - $.info(`Applying "${item.type}" with arguments: \n >>> ${JSON.stringify(item.args) || 'None'}`); - rules = ApplyProcessor(processor, rules); - } - return rules; - } + async function process(rules, operators) { + for (const item of operators) { + if (!RULE_PROCESSORS[item.type]) { + console.error(`Unknown operator: ${item.type}!`); + continue; + } + const processor = RULE_PROCESSORS[item.type](item.args); + $.info( + `Applying "${item.type}" with arguments: \n >>> ${ + JSON.stringify(item.args) || 'None' + }`, + ); + rules = ApplyProcessor(processor, rules); + } + return rules; + } - function produce(rules, targetPlatform) { - const producer = RULE_PRODUCERS[targetPlatform]; - if (!producer) { - throw new Error(`Target platform: ${targetPlatform} is not supported!`); - } - if (typeof producer.type === 'undefined' || producer.type === 'SINGLE') { - return rules - .map((rule) => { - try { - return producer.func(rule); - } catch (err) { - console.log(`ERROR: cannot produce rule: ${JSON.stringify(rule)}\nReason: ${err}`); - return ''; - } - }) - .filter((line) => line.length > 0) - .join('\n'); - } else if (producer.type === 'ALL') { - return producer.func(rules); - } - } + function produce(rules, targetPlatform) { + const producer = RULE_PRODUCERS[targetPlatform]; + if (!producer) { + throw new Error( + `Target platform: ${targetPlatform} is not supported!`, + ); + } + if ( + typeof producer.type === 'undefined' || + producer.type === 'SINGLE' + ) { + return rules + .map((rule) => { + try { + return producer.func(rule); + } catch (err) { + console.log( + `ERROR: cannot produce rule: ${JSON.stringify( + rule, + )}\nReason: ${err}`, + ); + return ''; + } + }) + .filter((line) => line.length > 0) + .join('\n'); + } else if (producer.type === 'ALL') { + return producer.func(rules); + } + } - return { parse, process, produce }; + return { parse, process, produce }; })(); - -module.exports = { - RuleUtils -}; diff --git a/backend/src/facade/artifacts.js b/backend/src/facade/artifacts.js index d4b1667..8e9712c 100644 --- a/backend/src/facade/artifacts.js +++ b/backend/src/facade/artifacts.js @@ -1,355 +1,413 @@ -const $ = require('../core/app'); +import { ProxyUtils } from '../core/proxy-utils'; +import { RuleUtils } from '../core/rule-utils'; +import download from '../utils/download'; +import Gist from '../utils/gist'; +import $ from '../core/app'; -const download = require('../utils/download'); -const Gist = require('../utils/gist'); - -const { ProxyUtils } = require('../core/proxy-utils'); -const { RuleUtils } = require('../core/rule-utils'); -const { SUBS_KEY, ARTIFACTS_KEY, ARTIFACT_REPOSITORY_KEY, COLLECTIONS_KEY, RULES_KEY, SETTINGS_KEY } = require('./constants'); +import { + SUBS_KEY, + ARTIFACTS_KEY, + ARTIFACT_REPOSITORY_KEY, + COLLECTIONS_KEY, + RULES_KEY, + SETTINGS_KEY, +} from './constants'; function register($app) { - // Initialization - if (!$.read(ARTIFACTS_KEY)) $.write({}, ARTIFACTS_KEY); + // Initialization + if (!$.read(ARTIFACTS_KEY)) $.write({}, ARTIFACTS_KEY); - // RESTful APIs - $app.route('/api/artifacts').get(getAllArtifacts).post(createArtifact); + // RESTful APIs + $app.route('/api/artifacts').get(getAllArtifacts).post(createArtifact); - $app.route('/api/artifact/:name').get(getArtifact).patch(updateArtifact).delete(deleteArtifact); + $app.route('/api/artifact/:name') + .get(getArtifact) + .patch(updateArtifact) + .delete(deleteArtifact); - // sync all artifacts - $app.get('/api/cron/sync-artifacts', cronSyncArtifacts); + // sync all artifacts + $app.get('/api/cron/sync-artifacts', cronSyncArtifacts); } async function getArtifact(req, res) { - const name = req.params.name; - const action = req.query.action; - const allArtifacts = $.read(ARTIFACTS_KEY); - const artifact = allArtifacts[name]; + const name = req.params.name; + const action = req.query.action; + const allArtifacts = $.read(ARTIFACTS_KEY); + const artifact = allArtifacts[name]; - if (artifact) { - if (action) { - let item; - switch (artifact.type) { - case 'subscription': - item = $.read(SUBS_KEY)[artifact.source]; - break; - case 'collection': - item = $.read(COLLECTIONS_KEY)[artifact.source]; - break; - case 'rule': - item = $.read(RULES_KEY)[artifact.source]; - break; - } - const output = await produceArtifact({ - type: artifact.type, - item, - platform: artifact.platform - }); - if (action === 'preview') { - res.send(output); - } else if (action === 'sync') { - $.info(`正在上传配置:${artifact.name}\n>>>`); - console.log(JSON.stringify(artifact, null, 2)); - try { - const resp = await syncArtifact({ - [artifact.name]: { content: output } - }); - artifact.updated = new Date().getTime(); - const body = JSON.parse(resp.body); - artifact.url = body.files[artifact.name].raw_url.replace(/\/raw\/[^\/]*\/(.*)/, '/raw/$1'); - $.write(allArtifacts, ARTIFACTS_KEY); - res.json({ - status: 'success' - }); - } catch (err) { - res.status(500).json({ - status: 'failed', - message: err - }); - } - } - } else { - res.json({ - status: 'success', - data: artifact - }); - } - } else { - res.status(404).json({ - status: 'failed', - message: '未找到对应的配置!' - }); - } + if (artifact) { + if (action) { + let item; + switch (artifact.type) { + case 'subscription': + item = $.read(SUBS_KEY)[artifact.source]; + break; + case 'collection': + item = $.read(COLLECTIONS_KEY)[artifact.source]; + break; + case 'rule': + item = $.read(RULES_KEY)[artifact.source]; + break; + } + const output = await produceArtifact({ + type: artifact.type, + item, + platform: artifact.platform, + }); + if (action === 'preview') { + res.send(output); + } else if (action === 'sync') { + $.info(`正在上传配置:${artifact.name}\n>>>`); + console.log(JSON.stringify(artifact, null, 2)); + try { + const resp = await syncArtifact({ + [artifact.name]: { content: output }, + }); + artifact.updated = new Date().getTime(); + const body = JSON.parse(resp.body); + artifact.url = body.files[artifact.name].raw_url.replace( + /\/raw\/[^\/]*\/(.*)/, + '/raw/$1', + ); + $.write(allArtifacts, ARTIFACTS_KEY); + res.json({ + status: 'success', + }); + } catch (err) { + res.status(500).json({ + status: 'failed', + message: err, + }); + } + } + } else { + res.json({ + status: 'success', + data: artifact, + }); + } + } else { + res.status(404).json({ + status: 'failed', + message: '未找到对应的配置!', + }); + } } function createArtifact(req, res) { - const artifact = req.body; - $.info(`正在创建远程配置:${artifact.name}`); - const allArtifacts = $.read(ARTIFACTS_KEY); - if (allArtifacts[artifact.name]) { - res.status(500).json({ - status: 'failed', - message: `远程配置${artifact.name}已存在!` - }); - } else { - if (/^[\w-_.]*$/.test(artifact.name)) { - allArtifacts[artifact.name] = artifact; - $.write(allArtifacts, ARTIFACTS_KEY); - res.status(201).json({ - status: 'success', - data: artifact - }); - } else { - res.status(500).json({ - status: 'failed', - message: `远程配置名称 ${artifact.name} 中含有非法字符!名称中只能包含英文字母、数字、下划线、横杠。` - }); - } - } + const artifact = req.body; + $.info(`正在创建远程配置:${artifact.name}`); + const allArtifacts = $.read(ARTIFACTS_KEY); + if (allArtifacts[artifact.name]) { + res.status(500).json({ + status: 'failed', + message: `远程配置${artifact.name}已存在!`, + }); + } else { + if (/^[\w-_.]*$/.test(artifact.name)) { + allArtifacts[artifact.name] = artifact; + $.write(allArtifacts, ARTIFACTS_KEY); + res.status(201).json({ + status: 'success', + data: artifact, + }); + } else { + res.status(500).json({ + status: 'failed', + message: `远程配置名称 ${artifact.name} 中含有非法字符!名称中只能包含英文字母、数字、下划线、横杠。`, + }); + } + } } function updateArtifact(req, res) { - const allArtifacts = $.read(ARTIFACTS_KEY); - const oldName = req.params.name; - const artifact = allArtifacts[oldName]; - if (artifact) { - $.info(`正在更新远程配置:${artifact.name}`); - const newArtifact = req.body; - if (typeof newArtifact.name !== 'undefined' && !/^[\w-_.]*$/.test(newArtifact.name)) { - res.status(500).json({ - status: 'failed', - message: `远程配置名称 ${newArtifact.name} 中含有非法字符!名称中只能包含英文字母、数字、下划线、横杠。` - }); - } else { - const merged = { - ...artifact, - ...newArtifact - }; - allArtifacts[merged.name] = merged; - if (merged.name !== oldName) delete allArtifacts[oldName]; - $.write(allArtifacts, ARTIFACTS_KEY); - res.json({ - status: 'success', - data: merged - }); - } - } else { - res.status(404).json({ - status: 'failed', - message: '未找到对应的远程配置!' - }); - } + const allArtifacts = $.read(ARTIFACTS_KEY); + const oldName = req.params.name; + const artifact = allArtifacts[oldName]; + if (artifact) { + $.info(`正在更新远程配置:${artifact.name}`); + const newArtifact = req.body; + if ( + typeof newArtifact.name !== 'undefined' && + !/^[\w-_.]*$/.test(newArtifact.name) + ) { + res.status(500).json({ + status: 'failed', + message: `远程配置名称 ${newArtifact.name} 中含有非法字符!名称中只能包含英文字母、数字、下划线、横杠。`, + }); + } else { + const merged = { + ...artifact, + ...newArtifact, + }; + allArtifacts[merged.name] = merged; + if (merged.name !== oldName) delete allArtifacts[oldName]; + $.write(allArtifacts, ARTIFACTS_KEY); + res.json({ + status: 'success', + data: merged, + }); + } + } else { + res.status(404).json({ + status: 'failed', + message: '未找到对应的远程配置!', + }); + } } async function cronSyncArtifacts(_, res) { - $.info('开始同步所有远程配置...'); - const allArtifacts = $.read(ARTIFACTS_KEY); - const files = {}; + $.info('开始同步所有远程配置...'); + const allArtifacts = $.read(ARTIFACTS_KEY); + const files = {}; - try { - await Promise.all( - Object.values(allArtifacts).map(async (artifact) => { - if (artifact.sync) { - $.info(`正在同步云配置:${artifact.name}...`); - let item; - switch (artifact.type) { - case 'subscription': - item = $.read(SUBS_KEY)[artifact.source]; - break; - case 'collection': - item = $.read(COLLECTIONS_KEY)[artifact.source]; - break; - case 'rule': - item = $.read(RULES_KEY)[artifact.source]; - break; - } - const output = await produceArtifact({ - type: artifact.type, - item, - platform: artifact.platform - }); + try { + await Promise.all( + Object.values(allArtifacts).map(async (artifact) => { + if (artifact.sync) { + $.info(`正在同步云配置:${artifact.name}...`); + let item; + switch (artifact.type) { + case 'subscription': + item = $.read(SUBS_KEY)[artifact.source]; + break; + case 'collection': + item = $.read(COLLECTIONS_KEY)[artifact.source]; + break; + case 'rule': + item = $.read(RULES_KEY)[artifact.source]; + break; + } + const output = await produceArtifact({ + type: artifact.type, + item, + platform: artifact.platform, + }); - files[artifact.name] = { - content: output - }; - } - }) - ); + files[artifact.name] = { + content: output, + }; + } + }), + ); - const resp = await syncArtifact(files); - const body = JSON.parse(resp.body); + const resp = await syncArtifact(files); + const body = JSON.parse(resp.body); - for (const artifact of Object.values(allArtifacts)) { - artifact.updated = new Date().getTime(); - // extract real url from gist - artifact.url = body.files[artifact.name].raw_url.replace(/\/raw\/[^\/]*\/(.*)/, '/raw/$1'); - } + for (const artifact of Object.values(allArtifacts)) { + artifact.updated = new Date().getTime(); + // extract real url from gist + artifact.url = body.files[artifact.name].raw_url.replace( + /\/raw\/[^\/]*\/(.*)/, + '/raw/$1', + ); + } - $.write(allArtifacts, ARTIFACTS_KEY); - $.info('全部订阅同步成功!'); - res.status(200).end(); - } catch (err) { - res.status(500).json({ - error: err - }); - $.info(`同步订阅失败,原因:${err}`); - } + $.write(allArtifacts, ARTIFACTS_KEY); + $.info('全部订阅同步成功!'); + res.status(200).end(); + } catch (err) { + res.status(500).json({ + error: err, + }); + $.info(`同步订阅失败,原因:${err}`); + } } async function deleteArtifact(req, res) { - const name = req.params.name; - $.info(`正在删除远程配置:${name}`); - const allArtifacts = $.read(ARTIFACTS_KEY); - try { - const artifact = allArtifacts[name]; - if (!artifact) throw new Error(`远程配置:${name}不存在!`); - if (artifact.updated) { - // delete gist - await syncArtifact({ - filename: name, - content: '' - }); - } - // delete local cache - delete allArtifacts[name]; - $.write(allArtifacts, ARTIFACTS_KEY); - res.json({ - status: 'success' - }); - } catch (err) { - // delete local cache - delete allArtifacts[name]; - $.write(allArtifacts, ARTIFACTS_KEY); - res.status(500).json({ - status: 'failed', - message: `无法删除远程配置:${name}, 原因:${err}` - }); - } + const name = req.params.name; + $.info(`正在删除远程配置:${name}`); + const allArtifacts = $.read(ARTIFACTS_KEY); + try { + const artifact = allArtifacts[name]; + if (!artifact) throw new Error(`远程配置:${name}不存在!`); + if (artifact.updated) { + // delete gist + await syncArtifact({ + filename: name, + content: '', + }); + } + // delete local cache + delete allArtifacts[name]; + $.write(allArtifacts, ARTIFACTS_KEY); + res.json({ + status: 'success', + }); + } catch (err) { + // delete local cache + delete allArtifacts[name]; + $.write(allArtifacts, ARTIFACTS_KEY); + res.status(500).json({ + status: 'failed', + message: `无法删除远程配置:${name}, 原因:${err}`, + }); + } } function getAllArtifacts(req, res) { - const allArtifacts = $.read(ARTIFACTS_KEY); - res.json({ - status: 'success', - data: allArtifacts - }); + const allArtifacts = $.read(ARTIFACTS_KEY); + res.json({ + status: 'success', + data: allArtifacts, + }); } async function syncArtifact(files) { - const { gistToken } = $.read(SETTINGS_KEY); - if (!gistToken) { - return Promise.reject('未设置Gist Token!'); - } - const manager = new Gist({ - token: gistToken, - key: ARTIFACT_REPOSITORY_KEY - }); - return manager.upload(files); + const { gistToken } = $.read(SETTINGS_KEY); + if (!gistToken) { + return Promise.reject('未设置Gist Token!'); + } + const manager = new Gist({ + token: gistToken, + key: ARTIFACT_REPOSITORY_KEY, + }); + return manager.upload(files); } async function produceArtifact( - { type, item, platform, noProcessor } = { - platform: 'JSON', - noProcessor: false - } + { type, item, platform, noProcessor } = { + platform: 'JSON', + noProcessor: false, + }, ) { - if (type === 'subscription') { - const sub = item; - const raw = await download(sub.url, sub.ua); - // parse proxies - let proxies = ProxyUtils.parse(raw); - if (!noProcessor) { - // apply processors - proxies = await ProxyUtils.process(proxies, sub.process || [], platform); - } - // check duplicate - const exist = {}; - for (const proxy of proxies) { - if (exist[proxy.name]) { - $.notify('🌍 『 𝑺𝒖𝒃-𝑺𝒕𝒐𝒓𝒆 』', '⚠️ 订阅包含重复节点!', '请仔细检测配置!', { - 'media-url': - 'https://cdn3.iconfinder.com/data/icons/seo-outline-1/512/25_code_program_programming_develop_bug_search_developer-512.png' - }); - break; - } - exist[proxy.name] = true; - } - // produce - return ProxyUtils.produce(proxies, platform); - } else if (type === 'collection') { - const allSubs = $.read(SUBS_KEY); - const collection = item; - const subs = collection['subscriptions']; - const results = {}; - let processed = 0; + if (type === 'subscription') { + const sub = item; + const raw = await download(sub.url, sub.ua); + // parse proxies + let proxies = ProxyUtils.parse(raw); + if (!noProcessor) { + // apply processors + proxies = await ProxyUtils.process( + proxies, + sub.process || [], + platform, + ); + } + // check duplicate + const exist = {}; + for (const proxy of proxies) { + if (exist[proxy.name]) { + $.notify( + '🌍 『 𝑺𝒖𝒃-𝑺𝒕𝒐𝒓𝒆 』', + '⚠️ 订阅包含重复节点!', + '请仔细检测配置!', + { + 'media-url': + 'https://cdn3.iconfinder.com/data/icons/seo-outline-1/512/25_code_program_programming_develop_bug_search_developer-512.png', + }, + ); + break; + } + exist[proxy.name] = true; + } + // produce + return ProxyUtils.produce(proxies, platform); + } else if (type === 'collection') { + const allSubs = $.read(SUBS_KEY); + const collection = item; + const subs = collection['subscriptions']; + const results = {}; + let processed = 0; - await Promise.all( - subs.map(async (name) => { - const sub = allSubs[name]; - try { - $.info(`正在处理子订阅:${sub.name}...`); - const raw = await download(sub.url, sub.ua); - // parse proxies - let currentProxies = ProxyUtils.parse(raw); - if (!noProcessor) { - // apply processors - currentProxies = await ProxyUtils.process(currentProxies, sub.process || [], platform); - } - results[name] = currentProxies; - processed++; - $.info(`✅ 子订阅:${sub.name}加载成功,进度--${100 * (processed / subs.length).toFixed(1)}% `); - } catch (err) { - processed++; - $.error( - `❌ 处理组合订阅中的子订阅: ${sub.name}时出现错误:${err},该订阅已被跳过!进度--${100 * - (processed / subs.length).toFixed(1)}%` - ); - } - }) - ); + await Promise.all( + subs.map(async (name) => { + const sub = allSubs[name]; + try { + $.info(`正在处理子订阅:${sub.name}...`); + const raw = await download(sub.url, sub.ua); + // parse proxies + let currentProxies = ProxyUtils.parse(raw); + if (!noProcessor) { + // apply processors + currentProxies = await ProxyUtils.process( + currentProxies, + sub.process || [], + platform, + ); + } + results[name] = currentProxies; + processed++; + $.info( + `✅ 子订阅:${sub.name}加载成功,进度--${ + 100 * (processed / subs.length).toFixed(1) + }% `, + ); + } catch (err) { + processed++; + $.error( + `❌ 处理组合订阅中的子订阅: ${ + sub.name + }时出现错误:${err},该订阅已被跳过!进度--${ + 100 * (processed / subs.length).toFixed(1) + }%`, + ); + } + }), + ); - // merge proxies with the original order - let proxies = Array.prototype.concat.apply([], subs.map(name => results[name])); + // merge proxies with the original order + let proxies = Array.prototype.concat.apply( + [], + subs.map((name) => results[name]), + ); - if (!noProcessor) { - // apply own processors - proxies = await ProxyUtils.process(proxies, collection.process || [], platform); - } - if (proxies.length === 0) { - throw new Error(`组合订阅中不含有效节点!`); - } - // check duplicate - const exist = {}; - for (const proxy of proxies) { - if (exist[proxy.name]) { - $.notify('🌍 『 𝑺𝒖𝒃-𝑺𝒕𝒐𝒓𝒆 』', '⚠️ 订阅包含重复节点!', '请仔细检测配置!', { - 'media-url': - 'https://cdn3.iconfinder.com/data/icons/seo-outline-1/512/25_code_program_programming_develop_bug_search_developer-512.png' - }); - break; - } - exist[proxy.name] = true; - } - return ProxyUtils.produce(proxies, platform); - } else if (type === 'rule') { - const rule = item; - let rules = []; - for (let i = 0; i < rule.urls.length; i++) { - const url = rule.urls[i]; - $.info(`正在处理URL:${url},进度--${100 * ((i + 1) / rule.urls.length).toFixed(1)}% `); - try { - const { body } = await download(url); - const currentRules = RuleUtils.parse(body); - rules = rules.concat(currentRules); - } catch (err) { - $.error(`处理分流订阅中的URL: ${url}时出现错误:${err}! 该订阅已被跳过。`); - } - } - // remove duplicates - rules = await RuleUtils.process(rules, [ { type: 'Remove Duplicate Filter' } ]); - // produce output - return RuleUtils.produce(rules, platform); - } + if (!noProcessor) { + // apply own processors + proxies = await ProxyUtils.process( + proxies, + collection.process || [], + platform, + ); + } + if (proxies.length === 0) { + throw new Error(`组合订阅中不含有效节点!`); + } + // check duplicate + const exist = {}; + for (const proxy of proxies) { + if (exist[proxy.name]) { + $.notify( + '🌍 『 𝑺𝒖𝒃-𝑺𝒕𝒐𝒓𝒆 』', + '⚠️ 订阅包含重复节点!', + '请仔细检测配置!', + { + 'media-url': + 'https://cdn3.iconfinder.com/data/icons/seo-outline-1/512/25_code_program_programming_develop_bug_search_developer-512.png', + }, + ); + break; + } + exist[proxy.name] = true; + } + return ProxyUtils.produce(proxies, platform); + } else if (type === 'rule') { + const rule = item; + let rules = []; + for (let i = 0; i < rule.urls.length; i++) { + const url = rule.urls[i]; + $.info( + `正在处理URL:${url},进度--${ + 100 * ((i + 1) / rule.urls.length).toFixed(1) + }% `, + ); + try { + const { body } = await download(url); + const currentRules = RuleUtils.parse(body); + rules = rules.concat(currentRules); + } catch (err) { + $.error( + `处理分流订阅中的URL: ${url}时出现错误:${err}! 该订阅已被跳过。`, + ); + } + } + // remove duplicates + rules = await RuleUtils.process(rules, [ + { type: 'Remove Duplicate Filter' }, + ]); + // produce output + return RuleUtils.produce(rules, platform); + } } -module.exports = { register, produceArtifact }; +export { register, produceArtifact }; diff --git a/backend/src/facade/collections.js b/backend/src/facade/collections.js index df841a3..1503f91 100644 --- a/backend/src/facade/collections.js +++ b/backend/src/facade/collections.js @@ -1,155 +1,166 @@ -const $ = require('../core/app'); -const { SUBS_KEY, COLLECTIONS_KEY } = require('./constants'); -const { getPlatformFromHeaders, getFlowHeaders } = require('./subscriptions'); -const { produceArtifact } = require('./artifacts'); +import { getPlatformFromHeaders, getFlowHeaders } from './subscriptions'; +import { SUBS_KEY, COLLECTIONS_KEY } from './constants'; +import { produceArtifact } from './artifacts'; +import $ from '../core/app'; -function register($app) { - if (!$.read(COLLECTIONS_KEY)) $.write({}, COLLECTIONS_KEY); +export function register($app) { + if (!$.read(COLLECTIONS_KEY)) $.write({}, COLLECTIONS_KEY); - $app.get("/download/collection/:name", downloadCollection); + $app.get('/download/collection/:name', downloadCollection); - $app.route('/api/collection/:name').get(getCollection).patch(updateCollection).delete(deleteCollection); + $app.route('/api/collection/:name') + .get(getCollection) + .patch(updateCollection) + .delete(deleteCollection); - $app.route('/api/collections').get(getAllCollections).post(createCollection); + $app.route('/api/collections') + .get(getAllCollections) + .post(createCollection); } // collection API async function downloadCollection(req, res) { - const { name } = req.params; - const { raw } = req.query || 'false'; - const platform = req.query.target || getPlatformFromHeaders(req.headers) || 'JSON'; + const { name } = req.params; + const { raw } = req.query || 'false'; + const platform = + req.query.target || getPlatformFromHeaders(req.headers) || 'JSON'; - const allCollections = $.read(COLLECTIONS_KEY); - const collection = allCollections[name]; + const allCollections = $.read(COLLECTIONS_KEY); + const collection = allCollections[name]; - $.info(`正在下载组合订阅:${name}`); + $.info(`正在下载组合订阅:${name}`); - // forward flow header from the first subscription in this collection - const allSubs = $.read(SUBS_KEY); - const subs = collection['subscriptions']; - if (subs.length > 0) { - const sub = allSubs[subs[0]]; - const flowInfo = await getFlowHeaders(sub.url); - if (flowInfo) { - res.set('subscription-userinfo', flowInfo); - } - } + // forward flow header from the first subscription in this collection + const allSubs = $.read(SUBS_KEY); + const subs = collection['subscriptions']; + if (subs.length > 0) { + const sub = allSubs[subs[0]]; + const flowInfo = await getFlowHeaders(sub.url); + if (flowInfo) { + res.set('subscription-userinfo', flowInfo); + } + } - if (collection) { - try { - const output = await produceArtifact({ - type: 'collection', - item: collection, - platform, - noProcessor: raw - }); - if (platform === 'JSON') { - res.set('Content-Type', 'application/json;charset=utf-8').send(output); - } else { - res.send(output); - } - } catch (err) { - $.notify(`🌍 『 𝑺𝒖𝒃-𝑺𝒕𝒐𝒓𝒆 』 下载组合订阅失败`, `❌ 下载组合订阅错误:${name}!`, `🤔 原因:${err}`); - res.status(500).json({ - status: 'failed', - message: err - }); - } - } else { - $.notify(`🌍 『 𝑺𝒖𝒃-𝑺𝒕𝒐𝒓𝒆 』 下载组合订阅失败`, `❌ 未找到组合订阅:${name}!`); - res.status(404).json({ - status: 'failed' - }); - } + if (collection) { + try { + const output = await produceArtifact({ + type: 'collection', + item: collection, + platform, + noProcessor: raw, + }); + if (platform === 'JSON') { + res.set('Content-Type', 'application/json;charset=utf-8').send( + output, + ); + } else { + res.send(output); + } + } catch (err) { + $.notify( + `🌍 『 𝑺𝒖𝒃-𝑺𝒕𝒐𝒓𝒆 』 下载组合订阅失败`, + `❌ 下载组合订阅错误:${name}!`, + `🤔 原因:${err}`, + ); + res.status(500).json({ + status: 'failed', + message: err, + }); + } + } else { + $.notify( + `🌍 『 𝑺𝒖𝒃-𝑺𝒕𝒐𝒓𝒆 』 下载组合订阅失败`, + `❌ 未找到组合订阅:${name}!`, + ); + res.status(404).json({ + status: 'failed', + }); + } } function createCollection(req, res) { - const collection = req.body; - $.info(`正在创建组合订阅:${collection.name}`); - const allCol = $.read(COLLECTIONS_KEY); - if (allCol[collection.name]) { - res.status(500).json({ - status: 'failed', - message: `订阅集${collection.name}已存在!` - }); - } - // validate name - if (/^[\w-_]*$/.test(collection.name)) { - allCol[collection.name] = collection; - $.write(allCol, COLLECTIONS_KEY); - res.status(201).json({ - status: 'success', - data: collection - }); - } else { - res.status(500).json({ - status: 'failed', - message: `订阅集名称 ${collection.name} 中含有非法字符!名称中只能包含英文字母、数字、下划线、横杠。` - }); - } + const collection = req.body; + $.info(`正在创建组合订阅:${collection.name}`); + const allCol = $.read(COLLECTIONS_KEY); + if (allCol[collection.name]) { + res.status(500).json({ + status: 'failed', + message: `订阅集${collection.name}已存在!`, + }); + } + // validate name + if (/^[\w-_]*$/.test(collection.name)) { + allCol[collection.name] = collection; + $.write(allCol, COLLECTIONS_KEY); + res.status(201).json({ + status: 'success', + data: collection, + }); + } else { + res.status(500).json({ + status: 'failed', + message: `订阅集名称 ${collection.name} 中含有非法字符!名称中只能包含英文字母、数字、下划线、横杠。`, + }); + } } function getCollection(req, res) { - const { name } = req.params; - const collection = $.read(COLLECTIONS_KEY)[name]; - if (collection) { - res.json({ - status: 'success', - data: collection - }); - } else { - res.status(404).json({ - status: 'failed', - message: `未找到订阅集:${name}!` - }); - } + const { name } = req.params; + const collection = $.read(COLLECTIONS_KEY)[name]; + if (collection) { + res.json({ + status: 'success', + data: collection, + }); + } else { + res.status(404).json({ + status: 'failed', + message: `未找到订阅集:${name}!`, + }); + } } function updateCollection(req, res) { - const { name } = req.params; - let collection = req.body; - const allCol = $.read(COLLECTIONS_KEY); - if (allCol[name]) { - const newCol = { - ...allCol[name], - ...collection - }; - $.info(`正在更新组合订阅:${name}...`); - // allow users to update collection name - delete allCol[name]; - allCol[collection.name || name] = newCol; - $.write(allCol, COLLECTIONS_KEY); - res.json({ - status: 'success', - data: newCol - }); - } else { - res.status(500).json({ - status: 'failed', - message: `订阅集${name}不存在,无法更新!` - }); - } + const { name } = req.params; + let collection = req.body; + const allCol = $.read(COLLECTIONS_KEY); + if (allCol[name]) { + const newCol = { + ...allCol[name], + ...collection, + }; + $.info(`正在更新组合订阅:${name}...`); + // allow users to update collection name + delete allCol[name]; + allCol[collection.name || name] = newCol; + $.write(allCol, COLLECTIONS_KEY); + res.json({ + status: 'success', + data: newCol, + }); + } else { + res.status(500).json({ + status: 'failed', + message: `订阅集${name}不存在,无法更新!`, + }); + } } function deleteCollection(req, res) { - const { name } = req.params; - $.info(`正在删除组合订阅:${name}`); - let allCol = $.read(COLLECTIONS_KEY); - delete allCol[name]; - $.write(allCol, COLLECTIONS_KEY); - res.json({ - status: 'success' - }); + const { name } = req.params; + $.info(`正在删除组合订阅:${name}`); + let allCol = $.read(COLLECTIONS_KEY); + delete allCol[name]; + $.write(allCol, COLLECTIONS_KEY); + res.json({ + status: 'success', + }); } function getAllCollections(req, res) { - const allCols = $.read(COLLECTIONS_KEY); - res.json({ - status: 'success', - data: allCols - }); + const allCols = $.read(COLLECTIONS_KEY); + res.json({ + status: 'success', + data: allCols, + }); } - -module.exports = { - register -}; diff --git a/backend/src/facade/constants.js b/backend/src/facade/constants.js index b709bfc..4ec340c 100644 --- a/backend/src/facade/constants.js +++ b/backend/src/facade/constants.js @@ -1,11 +1,7 @@ -module.exports = { - SETTINGS_KEY: 'settings', - SUBS_KEY: 'subs', - COLLECTIONS_KEY: 'collections', - RULES_KEY: 'rules', - BUILT_IN_KEY: 'builtin', - ARTIFACTS_KEY: 'artifacts', - GIST_BACKUP_KEY: 'Auto Generated Sub-Store Backup', - GIST_BACKUP_FILE_NAME: 'Sub-Store', - ARTIFACT_REPOSITORY_KEY: 'Sub-Store Artifacts Repository' -}; +export const SETTINGS_KEY = 'settings'; +export const SUBS_KEY = 'subs'; +export const COLLECTIONS_KEY = 'collections'; +export const ARTIFACTS_KEY = 'artifacts'; +export const GIST_BACKUP_KEY = 'Auto Generated Sub-Store Backup'; +export const GIST_BACKUP_FILE_NAME = 'Sub-Store'; +export const ARTIFACT_REPOSITORY_KEY = 'Sub-Store Artifacts Repository'; diff --git a/backend/src/facade/index.js b/backend/src/facade/index.js index 0ea5c36..68f8107 100644 --- a/backend/src/facade/index.js +++ b/backend/src/facade/index.js @@ -1,115 +1,120 @@ -const $ = require('../core/app'); -const { ENV } = require('../utils/open-api'); -const { IP_API } = require('../utils/geo'); -const Gist = require('../utils/gist'); -const { SETTINGS_KEY, GIST_BACKUP_KEY, GIST_BACKUP_FILE_NAME } = require('./constants'); +import { + SETTINGS_KEY, + GIST_BACKUP_KEY, + GIST_BACKUP_FILE_NAME, +} from './constants'; +import { ENV } from '../utils/open-api'; +import express from '../utils/express'; +import { IP_API } from '../utils/geo'; +import Gist from '../utils/gist'; +import $ from '../core/app'; -function serve() { - const express = require('../utils/express'); - const $app = express(); +export default function serve() { + const $app = express(); - // register routes - const collections = require('./collections'); - collections.register($app); + // register routes + const collections = require('./collections'); + collections.register($app); - const subscriptions = require('./subscriptions'); - subscriptions.register($app); + const subscriptions = require('./subscriptions'); + subscriptions.register($app); - const settings = require('./settings'); - settings.register($app); + const settings = require('./settings'); + settings.register($app); - const artifacts = require('./artifacts'); - artifacts.register($app); + const artifacts = require('./artifacts'); + artifacts.register($app); - // utils - $app.get('/api/utils/IP_API/:server', IP_API); // IP-API reverse proxy - $app.get('/api/utils/env', getEnv); // get runtime environment - $app.get('/api/utils/backup', gistBackup); // gist backup actions + // utils + $app.get('/api/utils/IP_API/:server', IP_API); // IP-API reverse proxy + $app.get('/api/utils/env', getEnv); // get runtime environment + $app.get('/api/utils/backup', gistBackup); // gist backup actions - // Redirect sub.store to vercel webpage - $app.get('/', async (req, res) => { - // 302 redirect - res.set('location', 'https://sub-store.vercel.app/').status(302).end(); - }); + // Redirect sub.store to vercel webpage + $app.get('/', async (req, res) => { + // 302 redirect + res.set('location', 'https://sub-store.vercel.app/').status(302).end(); + }); - // handle preflight request for QX - if (ENV().isQX) { - $app.options('/', async (req, res) => { - res.status(200).end(); - }); - } + // handle preflight request for QX + if (ENV().isQX) { + $app.options('/', async (req, res) => { + res.status(200).end(); + }); + } - $app.all('/', (_, res) => { - res.send('Hello from sub-store, made with ❤️ by Peng-YM'); - }); + $app.all('/', (_, res) => { + res.send('Hello from sub-store, made with ❤️ by Peng-YM'); + }); - $app.start(); + $app.start(); } function getEnv(req, res) { - const { isNode, isQX, isLoon, isSurge } = ENV(); - let backend = 'Node'; - if (isNode) backend = 'Node'; - if (isQX) backend = 'QX'; - if (isLoon) backend = 'Loon'; - if (isSurge) backend = 'Surge'; - res.json({ - backend - }); + const { isNode, isQX, isLoon, isSurge } = ENV(); + let backend = 'Node'; + if (isNode) backend = 'Node'; + if (isQX) backend = 'QX'; + if (isLoon) backend = 'Loon'; + if (isSurge) backend = 'Surge'; + res.json({ + backend, + }); } async function gistBackup(req, res) { - const { action } = req.query; - // read token - const { gistToken } = $.read(SETTINGS_KEY); - if (!gistToken) { - res.status(500).json({ - status: 'failed', - message: '未找到Gist备份Token!' - }); - } else { - const gist = new Gist({ - token: gistToken, - key: GIST_BACKUP_KEY - }); - try { - let content; - switch (action) { - case 'upload': - // update syncTime. - const settings = $.read(SETTINGS_KEY); - settings.syncTime = new Date().getTime(); - $.write(settings, SETTINGS_KEY); - content = $.read('#sub-store'); - if ($.env.isNode) content = JSON.stringify($.cache, null, ` `); - $.info(`上传备份中...`); - await gist.upload({ [GIST_BACKUP_FILE_NAME]: { content } }); - break; - case 'download': - $.info(`还原备份中...`); - content = await gist.download(GIST_BACKUP_FILE_NAME); - // restore settings - $.write(content, '#sub-store'); - if ($.env.isNode) { - content = JSON.parse(content); - Object.keys(content).forEach((key) => { - $.write(content[key], key); - }); - } - break; - } - res.json({ - status: 'success' - }); - } catch (err) { - const msg = `${action === 'upload' ? '上传' : '下载'}备份失败!${err}`; - $.error(msg); - res.status(500).json({ - status: 'failed', - message: msg - }); - } - } + const { action } = req.query; + // read token + const { gistToken } = $.read(SETTINGS_KEY); + if (!gistToken) { + res.status(500).json({ + status: 'failed', + message: '未找到Gist备份Token!', + }); + } else { + const gist = new Gist({ + token: gistToken, + key: GIST_BACKUP_KEY, + }); + try { + let content; + switch (action) { + case 'upload': + // update syncTime. + const settings = $.read(SETTINGS_KEY); + settings.syncTime = new Date().getTime(); + $.write(settings, SETTINGS_KEY); + content = $.read('#sub-store'); + if ($.env.isNode) + content = JSON.stringify($.cache, null, ` `); + $.info(`上传备份中...`); + await gist.upload({ [GIST_BACKUP_FILE_NAME]: { content } }); + break; + case 'download': + $.info(`还原备份中...`); + content = await gist.download(GIST_BACKUP_FILE_NAME); + // restore settings + $.write(content, '#sub-store'); + if ($.env.isNode) { + content = JSON.parse(content); + Object.keys(content).forEach((key) => { + $.write(content[key], key); + }); + } + break; + } + res.json({ + status: 'success', + }); + } catch (err) { + const msg = `${ + action === 'upload' ? '上传' : '下载' + }备份失败!${err}`; + $.error(msg); + res.status(500).json({ + status: 'failed', + message: msg, + }); + } + } } - -module.exports = serve; diff --git a/backend/src/facade/settings.js b/backend/src/facade/settings.js index 48c2669..56448cd 100644 --- a/backend/src/facade/settings.js +++ b/backend/src/facade/settings.js @@ -1,32 +1,27 @@ -const $ = require('../core/app'); -const { SETTINGS_KEY } = require('./constants'); +import { SETTINGS_KEY } from './constants'; +import $ from '../core/app'; -function register($app) { - if (!$.read(SETTINGS_KEY)) $.write({}, SETTINGS_KEY); - - $app.route('/api/settings').get(getSettings).patch(updateSettings); +export function register($app) { + if (!$.read(SETTINGS_KEY)) $.write({}, SETTINGS_KEY); + $app.route('/api/settings').get(getSettings).patch(updateSettings); } function getSettings(req, res) { - const settings = $.read(SETTINGS_KEY); - res.json(settings); + const settings = $.read(SETTINGS_KEY); + res.json(settings); } function updateSettings(req, res) { - const data = req.body; - const settings = $.read(SETTINGS_KEY); - $.write( - { - ...settings, - ...data - }, - SETTINGS_KEY - ); - res.json({ - status: 'success' - }); + const data = req.body; + const settings = $.read(SETTINGS_KEY); + $.write( + { + ...settings, + ...data, + }, + SETTINGS_KEY, + ); + res.json({ + status: 'success', + }); } - -module.exports = { - register -}; diff --git a/backend/src/facade/subscriptions.js b/backend/src/facade/subscriptions.js index 6165887..fd10aeb 100644 --- a/backend/src/facade/subscriptions.js +++ b/backend/src/facade/subscriptions.js @@ -1,205 +1,216 @@ -const $ = require("../core/app"); -const { produceArtifact } = require('./artifacts'); -const { SUBS_KEY, COLLECTIONS_KEY } = require('./constants'); +import { SUBS_KEY, COLLECTIONS_KEY } from './constants'; +import { produceArtifact } from './artifacts'; +import $ from '../core/app'; -function register($app) { - if (!$.read(SUBS_KEY)) $.write({}, SUBS_KEY); +export function register($app) { + if (!$.read(SUBS_KEY)) $.write({}, SUBS_KEY); - $app.get('/download/:name', downloadSubscription); + $app.get('/download/:name', downloadSubscription); - $app.route('/api/sub/:name').get(getSubscription).patch(updateSubscription).delete(deleteSubscription); + $app.route('/api/sub/:name') + .get(getSubscription) + .patch(updateSubscription) + .delete(deleteSubscription); - $app.route('/api/subs').get(getAllSubscriptions).post(createSubscription); + $app.route('/api/subs').get(getAllSubscriptions).post(createSubscription); } // subscriptions API async function downloadSubscription(req, res) { - const { name } = req.params; - const { raw } = req.query || 'false'; - const platform = req.query.target || getPlatformFromHeaders(req.headers) || 'JSON'; + const { name } = req.params; + const { raw } = req.query || 'false'; + const platform = + req.query.target || getPlatformFromHeaders(req.headers) || 'JSON'; - $.info(`正在下载订阅:${name}`); + $.info(`正在下载订阅:${name}`); - const allSubs = $.read(SUBS_KEY); - const sub = allSubs[name]; - if (sub) { - try { - const output = await produceArtifact({ - type: 'subscription', - item: sub, - platform, - noProcessor: raw - }); + const allSubs = $.read(SUBS_KEY); + const sub = allSubs[name]; + if (sub) { + try { + const output = await produceArtifact({ + type: 'subscription', + item: sub, + platform, + noProcessor: raw, + }); - // forward flow headers - const flowInfo = await getFlowHeaders(sub.url); - if (flowInfo) { - res.set('subscription-userinfo', flowInfo); - } + // forward flow headers + const flowInfo = await getFlowHeaders(sub.url); + if (flowInfo) { + res.set('subscription-userinfo', flowInfo); + } - if (platform === 'JSON') { - res.set('Content-Type', 'application/json;charset=utf-8').send(output); - } else { - res.send(output); - } - } catch (err) { - $.notify(`🌍 『 𝑺𝒖𝒃-𝑺𝒕𝒐𝒓𝒆 』 下载订阅失败`, `❌ 无法下载订阅:${name}!`, `🤔 原因:${JSON.stringify(err)}`); - $.error(JSON.stringify(err)); - res.status(500).json({ - status: 'failed', - message: err - }); - } - } else { - $.notify(`🌍 『 𝑺𝒖𝒃-𝑺𝒕𝒐𝒓𝒆 』 下载订阅失败`, `❌ 未找到订阅:${name}!`); - res.status(404).json({ - status: 'failed' - }); - } + if (platform === 'JSON') { + res.set('Content-Type', 'application/json;charset=utf-8').send( + output, + ); + } else { + res.send(output); + } + } catch (err) { + $.notify( + `🌍 『 𝑺𝒖𝒃-𝑺𝒕𝒐𝒓𝒆 』 下载订阅失败`, + `❌ 无法下载订阅:${name}!`, + `🤔 原因:${JSON.stringify(err)}`, + ); + $.error(JSON.stringify(err)); + res.status(500).json({ + status: 'failed', + message: err, + }); + } + } else { + $.notify(`🌍 『 𝑺𝒖𝒃-𝑺𝒕𝒐𝒓𝒆 』 下载订阅失败`, `❌ 未找到订阅:${name}!`); + res.status(404).json({ + status: 'failed', + }); + } } function createSubscription(req, res) { - const sub = req.body; - const allSubs = $.read(SUBS_KEY); - $.info(`正在创建订阅: ${sub.name}`); - if (allSubs[sub.name]) { - res.status(500).json({ - status: 'failed', - message: `订阅${sub.name}已存在!` - }); - } - // validate name - if (/^[\w-_]*$/.test(sub.name)) { - allSubs[sub.name] = sub; - $.write(allSubs, SUBS_KEY); - res.status(201).json({ - status: 'success', - data: sub - }); - } else { - res.status(500).json({ - status: 'failed', - message: `订阅名称 ${sub.name} 中含有非法字符!名称中只能包含英文字母、数字、下划线、横杠。` - }); - } + const sub = req.body; + const allSubs = $.read(SUBS_KEY); + $.info(`正在创建订阅: ${sub.name}`); + if (allSubs[sub.name]) { + res.status(500).json({ + status: 'failed', + message: `订阅${sub.name}已存在!`, + }); + } + // validate name + if (/^[\w-_]*$/.test(sub.name)) { + allSubs[sub.name] = sub; + $.write(allSubs, SUBS_KEY); + res.status(201).json({ + status: 'success', + data: sub, + }); + } else { + res.status(500).json({ + status: 'failed', + message: `订阅名称 ${sub.name} 中含有非法字符!名称中只能包含英文字母、数字、下划线、横杠。`, + }); + } } function getSubscription(req, res) { - const { name } = req.params; - const sub = $.read(SUBS_KEY)[name]; - if (sub) { - res.json({ - status: 'success', - data: sub - }); - } else { - res.status(404).json({ - status: 'failed', - message: `未找到订阅:${name}!` - }); - } + const { name } = req.params; + const sub = $.read(SUBS_KEY)[name]; + if (sub) { + res.json({ + status: 'success', + data: sub, + }); + } else { + res.status(404).json({ + status: 'failed', + message: `未找到订阅:${name}!`, + }); + } } function updateSubscription(req, res) { - const { name } = req.params; - let sub = req.body; - const allSubs = $.read(SUBS_KEY); - if (allSubs[name]) { - const newSub = { - ...allSubs[name], - ...sub - }; - $.info(`正在更新订阅: ${name}`); - // allow users to update the subscription name - if (name !== sub.name) { - // we need to find out all collections refer to this name - const allCols = $.read(COLLECTIONS_KEY); - for (const k of Object.keys(allCols)) { - const idx = allCols[k].subscriptions.indexOf(name); - if (idx !== -1) { - allCols[k].subscriptions[idx] = sub.name; - } - } - // update subscriptions - delete allSubs[name]; - allSubs[sub.name] = newSub; - } else { - allSubs[name] = newSub; - } - $.write(allSubs, SUBS_KEY); - res.json({ - status: 'success', - data: newSub - }); - } else { - res.status(500).json({ - status: 'failed', - message: `订阅${name}不存在,无法更新!` - }); - } + const { name } = req.params; + let sub = req.body; + const allSubs = $.read(SUBS_KEY); + if (allSubs[name]) { + const newSub = { + ...allSubs[name], + ...sub, + }; + $.info(`正在更新订阅: ${name}`); + // allow users to update the subscription name + if (name !== sub.name) { + // we need to find out all collections refer to this name + const allCols = $.read(COLLECTIONS_KEY); + for (const k of Object.keys(allCols)) { + const idx = allCols[k].subscriptions.indexOf(name); + if (idx !== -1) { + allCols[k].subscriptions[idx] = sub.name; + } + } + // update subscriptions + delete allSubs[name]; + allSubs[sub.name] = newSub; + } else { + allSubs[name] = newSub; + } + $.write(allSubs, SUBS_KEY); + res.json({ + status: 'success', + data: newSub, + }); + } else { + res.status(500).json({ + status: 'failed', + message: `订阅${name}不存在,无法更新!`, + }); + } } function deleteSubscription(req, res) { - const { name } = req.params; - $.info(`删除订阅:${name}...`); - // delete from subscriptions - let allSubs = $.read(SUBS_KEY); - delete allSubs[name]; - $.write(allSubs, SUBS_KEY); - // delete from collections - let allCols = $.read(COLLECTIONS_KEY); - for (const k of Object.keys(allCols)) { - allCols[k].subscriptions = allCols[k].subscriptions.filter((s) => s !== name); - } - $.write(allCols, COLLECTIONS_KEY); - res.json({ - status: 'success' - }); + const { name } = req.params; + $.info(`删除订阅:${name}...`); + // delete from subscriptions + let allSubs = $.read(SUBS_KEY); + delete allSubs[name]; + $.write(allSubs, SUBS_KEY); + // delete from collections + let allCols = $.read(COLLECTIONS_KEY); + for (const k of Object.keys(allCols)) { + allCols[k].subscriptions = allCols[k].subscriptions.filter( + (s) => s !== name, + ); + } + $.write(allCols, COLLECTIONS_KEY); + res.json({ + status: 'success', + }); } function getAllSubscriptions(req, res) { - const allSubs = $.read(SUBS_KEY); - res.json({ - status: 'success', - data: allSubs - }); + const allSubs = $.read(SUBS_KEY); + res.json({ + status: 'success', + data: allSubs, + }); } -async function getFlowHeaders(url) { - const { headers } = await $.http.get({ - url, - headers: { - 'User-Agent': 'Quantumult/1.0.13 (iPhone10,3; iOS 14.0)' - } - }); - const subkey = Object.keys(headers).filter((k) => /SUBSCRIPTION-USERINFO/i.test(k))[0]; - return headers[subkey]; +export async function getFlowHeaders(url) { + const { headers } = await $.http.get({ + url, + headers: { + 'User-Agent': 'Quantumult%20X/1.0.30 (iPhone14,2; iOS 15.6)', + }, + }); + const subkey = Object.keys(headers).filter((k) => + /SUBSCRIPTION-USERINFO/i.test(k), + )[0]; + return headers[subkey]; } -function getPlatformFromHeaders(headers) { - const keys = Object.keys(headers); - let UA = ''; - for (let k of keys) { - if (/USER-AGENT/i.test(k)) { - UA = headers[k]; - break; - } - } - if (UA.indexOf('Quantumult%20X') !== -1) { - return 'QX'; - } else if (UA.indexOf('Surge') !== -1) { - return 'Surge'; - } else if (UA.indexOf('Decar') !== -1 || UA.indexOf('Loon') !== -1) { - return 'Loon'; - } else if (UA.indexOf('Stash') !== -1 || UA.indexOf('Shadowrocket') !== -1) { - return 'Clash'; - } else { - return null; - } +export function getPlatformFromHeaders(headers) { + const keys = Object.keys(headers); + let UA = ''; + for (let k of keys) { + if (/USER-AGENT/i.test(k)) { + UA = headers[k]; + break; + } + } + if (UA.indexOf('Quantumult%20X') !== -1) { + return 'QX'; + } else if (UA.indexOf('Surge') !== -1) { + return 'Surge'; + } else if (UA.indexOf('Decar') !== -1 || UA.indexOf('Loon') !== -1) { + return 'Loon'; + } else if ( + UA.indexOf('Stash') !== -1 || + UA.indexOf('Shadowrocket') !== -1 + ) { + return 'Clash'; + } else { + return null; + } } - -module.exports = { - register, - getPlatformFromHeaders, - getFlowHeaders -}; diff --git a/backend/src/main.js b/backend/src/main.js index c10f3f6..8970fb3 100644 --- a/backend/src/main.js +++ b/backend/src/main.js @@ -12,12 +12,13 @@ */ console.log( - ` + ` ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ 𝑺𝒖𝒃-𝑺𝒕𝒐𝒓𝒆 © 𝑷𝒆𝒏𝒈-𝒀𝑴 ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ -` +`, ); -const serve = require('./facade'); -serve(); \ No newline at end of file +import serve from './facade'; + +serve(); diff --git a/backend/src/utils/download.js b/backend/src/utils/download.js index ecd61dd..d4bf08f 100644 --- a/backend/src/utils/download.js +++ b/backend/src/utils/download.js @@ -1,30 +1,29 @@ -const { HTTP } = require('./open-api'); +import { HTTP } from './open-api'; const cache = new Map(); -async function download(url, ua) { - ua = ua || 'Quantumult%20X/1.0.29 (iPhone14,5; iOS 15.4.1)'; - const id = ua + url; - if (cache.has(id)) { - return cache.get(id); - } +export default async function download(url, ua) { + ua = ua || 'Quantumult%20X/1.0.29 (iPhone14,5; iOS 15.4.1)'; + const id = ua + url; + if (cache.has(id)) { + return cache.get(id); + } - const $http = HTTP({ - headers: { - 'User-Agent': ua - } - }); + const $http = HTTP({ + headers: { + 'User-Agent': ua, + }, + }); - const result = new Promise((resolve, reject) => { - $http.get(url).then((resp) => { - const body = resp.body; - if (body.replace(/\s/g, '').length === 0) reject(new Error('订阅内容为空!')); - else resolve(body); - }); - }); + const result = new Promise((resolve, reject) => { + $http.get(url).then((resp) => { + const body = resp.body; + if (body.replace(/\s/g, '').length === 0) + reject(new Error('订阅内容为空!')); + else resolve(body); + }); + }); - cache[id] = result; - return result; + cache.set(id, result); + return result; } - -module.exports = download; diff --git a/backend/src/utils/express.js b/backend/src/utils/express.js index a4ff237..7182c3f 100644 --- a/backend/src/utils/express.js +++ b/backend/src/utils/express.js @@ -1,275 +1,285 @@ -const $ = require('../core/app'); -const { ENV } = require('./open-api'); +import { ENV } from './open-api'; +import $ from '../core/app'; -function express({ port } = { port: 3000 }) { - const { isNode } = ENV(); - const DEFAULT_HEADERS = { - 'Content-Type': 'text/plain;charset=UTF-8', - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Methods': 'POST,GET,OPTIONS,PATCH,PUT,DELETE', - 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept' - }; +export default function express({ port } = { port: 3000 }) { + const { isNode } = ENV(); + const DEFAULT_HEADERS = { + 'Content-Type': 'text/plain;charset=UTF-8', + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Methods': 'POST,GET,OPTIONS,PATCH,PUT,DELETE', + 'Access-Control-Allow-Headers': + 'Origin, X-Requested-With, Content-Type, Accept', + }; - // node support - if (isNode) { - const express_ = eval(`require("express")`); - const bodyParser = eval(`require("body-parser")`); - const app = express_(); - app.use(bodyParser.json({ verify: rawBodySaver })); - app.use(bodyParser.urlencoded({ verify: rawBodySaver, extended: true })); - app.use(bodyParser.raw({ verify: rawBodySaver, type: '*/*' })); - app.use((_, res, next) => { - res.set(DEFAULT_HEADERS); - next(); - }); + // node support + if (isNode) { + const express_ = eval(`require("express")`); + const bodyParser = eval(`require("body-parser")`); + const app = express_(); + app.use(bodyParser.json({ verify: rawBodySaver })); + app.use( + bodyParser.urlencoded({ verify: rawBodySaver, extended: true }), + ); + app.use(bodyParser.raw({ verify: rawBodySaver, type: '*/*' })); + app.use((_, res, next) => { + res.set(DEFAULT_HEADERS); + next(); + }); - // adapter - app.start = () => { - app.listen(port, () => { - $.log(`Express started on port: ${port}`); - }); - }; - return app; - } + // adapter + app.start = () => { + app.listen(port, () => { + $.log(`Express started on port: ${port}`); + }); + }; + return app; + } - // route handlers - const handlers = []; + // route handlers + const handlers = []; - // http methods - const METHODS_NAMES = [ 'GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS', "HEAD'", 'ALL' ]; + // http methods + const METHODS_NAMES = [ + 'GET', + 'POST', + 'PUT', + 'DELETE', + 'PATCH', + 'OPTIONS', + "HEAD'", + 'ALL', + ]; - // dispatch url to route - const dispatch = (request, start = 0) => { - let { method, url, headers, body } = request; - if (/json/i.test(headers['Content-Type'])) { - body = JSON.parse(body); - } + // dispatch url to route + const dispatch = (request, start = 0) => { + let { method, url, headers, body } = request; + if (/json/i.test(headers['Content-Type'])) { + body = JSON.parse(body); + } - method = method.toUpperCase(); - const { path, query } = extractURL(url); + method = method.toUpperCase(); + const { path, query } = extractURL(url); - // pattern match - let handler = null; - let i; - let longestMatchedPattern = 0; - for (i = start; i < handlers.length; i++) { - if (handlers[i].method === 'ALL' || method === handlers[i].method) { - const { pattern } = handlers[i]; - if (patternMatched(pattern, path)) { - if (pattern.split('/').length > longestMatchedPattern) { - handler = handlers[i]; - longestMatchedPattern = pattern.split('/').length; - } - } - } - } - if (handler) { - // dispatch to next handler - const next = () => { - dispatch(method, url, i); - }; - const req = { - method, - url, - path, - query, - params: extractPathParams(handler.pattern, path), - headers, - body - }; - const res = Response(); - const cb = handler.callback; + // pattern match + let handler = null; + let i; + let longestMatchedPattern = 0; + for (i = start; i < handlers.length; i++) { + if (handlers[i].method === 'ALL' || method === handlers[i].method) { + const { pattern } = handlers[i]; + if (patternMatched(pattern, path)) { + if (pattern.split('/').length > longestMatchedPattern) { + handler = handlers[i]; + longestMatchedPattern = pattern.split('/').length; + } + } + } + } + if (handler) { + // dispatch to next handler + const next = () => { + dispatch(method, url, i); + }; + const req = { + method, + url, + path, + query, + params: extractPathParams(handler.pattern, path), + headers, + body, + }; + const res = Response(); + const cb = handler.callback; - const errFunc = (err) => { - res.status(500).json({ - status: 'failed', - message: `Internal Server Error: ${err}` - }); - }; + const errFunc = (err) => { + res.status(500).json({ + status: 'failed', + message: `Internal Server Error: ${err}`, + }); + }; - if (cb.constructor.name === 'AsyncFunction') { - cb(req, res, next).catch(errFunc); - } else { - try { - cb(req, res, next); - } catch (err) { - errFunc(err); - } - } - } else { - // no route, return 404 - const res = Response(); - res.status(404).json({ - status: 'failed', - message: 'ERROR: 404 not found' - }); - } - }; + if (cb.constructor.name === 'AsyncFunction') { + cb(req, res, next).catch(errFunc); + } else { + try { + cb(req, res, next); + } catch (err) { + errFunc(err); + } + } + } else { + // no route, return 404 + const res = Response(); + res.status(404).json({ + status: 'failed', + message: 'ERROR: 404 not found', + }); + } + }; - const app = {}; + const app = {}; - // attach http methods - METHODS_NAMES.forEach((method) => { - app[method.toLowerCase()] = (pattern, callback) => { - // add handler - handlers.push({ method, pattern, callback }); - }; - }); + // attach http methods + METHODS_NAMES.forEach((method) => { + app[method.toLowerCase()] = (pattern, callback) => { + // add handler + handlers.push({ method, pattern, callback }); + }; + }); - // chainable route - app.route = (pattern) => { - const chainApp = {}; - METHODS_NAMES.forEach((method) => { - chainApp[method.toLowerCase()] = (callback) => { - // add handler - handlers.push({ method, pattern, callback }); - return chainApp; - }; - }); - return chainApp; - }; + // chainable route + app.route = (pattern) => { + const chainApp = {}; + METHODS_NAMES.forEach((method) => { + chainApp[method.toLowerCase()] = (callback) => { + // add handler + handlers.push({ method, pattern, callback }); + return chainApp; + }; + }); + return chainApp; + }; - // start service - app.start = () => { - dispatch($request); - }; + // start service + app.start = () => { + dispatch($request); + }; - return app; + return app; - /************************************************ + /************************************************ Utility Functions *************************************************/ - function rawBodySaver(req, res, buf, encoding) { - if (buf && buf.length) { - req.rawBody = buf.toString(encoding || 'utf8'); - } - } + function rawBodySaver(req, res, buf, encoding) { + if (buf && buf.length) { + req.rawBody = buf.toString(encoding || 'utf8'); + } + } - function Response() { - let statusCode = 200; - const { isQX, isLoon, isSurge } = ENV(); - const headers = DEFAULT_HEADERS; - const STATUS_CODE_MAP = { - 200: 'HTTP/1.1 200 OK', - 201: 'HTTP/1.1 201 Created', - 302: 'HTTP/1.1 302 Found', - 307: 'HTTP/1.1 307 Temporary Redirect', - 308: 'HTTP/1.1 308 Permanent Redirect', - 404: 'HTTP/1.1 404 Not Found', - 500: 'HTTP/1.1 500 Internal Server Error' - }; - return new class { - status(code) { - statusCode = code; - return this; - } + function Response() { + let statusCode = 200; + const { isQX, isLoon, isSurge } = ENV(); + const headers = DEFAULT_HEADERS; + const STATUS_CODE_MAP = { + 200: 'HTTP/1.1 200 OK', + 201: 'HTTP/1.1 201 Created', + 302: 'HTTP/1.1 302 Found', + 307: 'HTTP/1.1 307 Temporary Redirect', + 308: 'HTTP/1.1 308 Permanent Redirect', + 404: 'HTTP/1.1 404 Not Found', + 500: 'HTTP/1.1 500 Internal Server Error', + }; + return new (class { + status(code) { + statusCode = code; + return this; + } - send(body = '') { - const response = { - status: isQX ? STATUS_CODE_MAP[statusCode] : statusCode, - body, - headers - }; - if (isQX) { - $done(response); - } else if (isLoon || isSurge) { - $done({ - response - }); - } - } + send(body = '') { + const response = { + status: isQX ? STATUS_CODE_MAP[statusCode] : statusCode, + body, + headers, + }; + if (isQX) { + $done(response); + } else if (isLoon || isSurge) { + $done({ + response, + }); + } + } - end() { - this.send(); - } + end() { + this.send(); + } - html(data) { - this.set('Content-Type', 'text/html;charset=UTF-8'); - this.send(data); - } + html(data) { + this.set('Content-Type', 'text/html;charset=UTF-8'); + this.send(data); + } - json(data) { - this.set('Content-Type', 'application/json;charset=UTF-8'); - this.send(JSON.stringify(data)); - } + json(data) { + this.set('Content-Type', 'application/json;charset=UTF-8'); + this.send(JSON.stringify(data)); + } - set(key, val) { - headers[key] = val; - return this; - } - }(); - } + set(key, val) { + headers[key] = val; + return this; + } + })(); + } - function patternMatched(pattern, path) { - if (pattern instanceof RegExp && pattern.test(path)) { - return true; - } else { - // root pattern, match all - if (pattern === '/') return true; - // normal string pattern - if (pattern.indexOf(':') === -1) { - const spath = path.split('/'); - const spattern = pattern.split('/'); - for (let i = 0; i < spattern.length; i++) { - if (spath[i] !== spattern[i]) { - return false; - } - } - return true; - } else if (extractPathParams(pattern, path)) { - // string pattern with path parameters - return true; - } - } - return false; - } + function patternMatched(pattern, path) { + if (pattern instanceof RegExp && pattern.test(path)) { + return true; + } else { + // root pattern, match all + if (pattern === '/') return true; + // normal string pattern + if (pattern.indexOf(':') === -1) { + const spath = path.split('/'); + const spattern = pattern.split('/'); + for (let i = 0; i < spattern.length; i++) { + if (spath[i] !== spattern[i]) { + return false; + } + } + return true; + } else if (extractPathParams(pattern, path)) { + // string pattern with path parameters + return true; + } + } + return false; + } - function extractURL(url) { - // extract path - const match = url.match(/https?:\/\/[^\/]+(\/[^?]*)/) || []; - const path = match[1] || '/'; + function extractURL(url) { + // extract path + const match = url.match(/https?:\/\/[^\/]+(\/[^?]*)/) || []; + const path = match[1] || '/'; - // extract query string - const split = url.indexOf('?'); - const query = {}; - if (split !== -1) { - let hashes = url.slice(url.indexOf('?') + 1).split('&'); - for (let i = 0; i < hashes.length; i++) { - hash = hashes[i].split('='); - query[hash[0]] = hash[1]; - } - } - return { - path, - query - }; - } + // extract query string + const split = url.indexOf('?'); + const query = {}; + if (split !== -1) { + let hashes = url.slice(url.indexOf('?') + 1).split('&'); + for (let i = 0; i < hashes.length; i++) { + const hash = hashes[i].split('='); + query[hash[0]] = hash[1]; + } + } + return { + path, + query, + }; + } - function extractPathParams(pattern, path) { - if (pattern.indexOf(':') === -1) { - return null; - } else { - const params = {}; - for (let i = 0, j = 0; i < pattern.length; i++, j++) { - if (pattern[i] === ':') { - let key = []; - let val = []; - while (pattern[++i] !== '/' && i < pattern.length) { - key.push(pattern[i]); - } - while (path[j] !== '/' && j < path.length) { - val.push(path[j++]); - } - params[key.join('')] = val.join(''); - } else { - if (pattern[i] !== path[j]) { - return null; - } - } - } - return params; - } - } + function extractPathParams(pattern, path) { + if (pattern.indexOf(':') === -1) { + return null; + } else { + const params = {}; + for (let i = 0, j = 0; i < pattern.length; i++, j++) { + if (pattern[i] === ':') { + let key = []; + let val = []; + while (pattern[++i] !== '/' && i < pattern.length) { + key.push(pattern[i]); + } + while (path[j] !== '/' && j < path.length) { + val.push(path[j++]); + } + params[key.join('')] = val.join(''); + } else { + if (pattern[i] !== path[j]) { + return null; + } + } + } + return params; + } + } } - -module.exports = express; diff --git a/backend/src/utils/geo.js b/backend/src/utils/geo.js index 8b0f4cd..b84e625 100644 --- a/backend/src/utils/geo.js +++ b/backend/src/utils/geo.js @@ -1,209 +1,319 @@ -const { HTTP } = require('./open-api'); +import { HTTP } from './open-api'; // get proxy flag according to its name -function getFlag(name) { - // flags from @KOP-XIAO: https://github.com/KOP-XIAO/QuantumultX/blob/master/Scripts/resource-parser.js - const flags = { - '🇦🇿': [ '阿塞拜疆' ], - '🇦🇹': [ '奥地利', '奧地利', 'Austria', '维也纳' ], - '🇦🇺': [ 'AU', 'Australia', 'Sydney', '澳大利亚', '澳洲', '墨尔本', '悉尼', '土澳', '京澳', '廣澳', '滬澳', '沪澳', '广澳' ], - '🇧🇪': [ 'BE', '比利時', '比利时' ], - '🇧🇬': [ '保加利亚', '保加利亞', 'Bulgaria' ], - '🇧🇭': [ 'BH', '巴林' ], - '🇧🇩': [ 'BD', '孟加拉' ], - '🇵🇰': [ '巴基斯坦' ], - '🇰🇭': [ '柬埔寨' ], - '🇺🇦': [ '烏克蘭', '乌克兰' ], - '🇭🇷': [ '克罗地亚', 'HR', '克羅地亞' ], - '🇨🇦': [ 'Canada', 'CANADA', 'CAN', 'Waterloo', '加拿大', '蒙特利尔', '温哥华', '楓葉', '枫叶', '滑铁卢', '多伦多', 'CA' ], - '🇨🇭': [ '瑞士', '苏黎世', 'Switzerland', 'Zurich' ], - '🇳🇬': [ '尼日利亚', 'NG', '尼日利亞' ], - '🇨🇿': [ 'Czechia', '捷克' ], - '🇸🇰': [ '斯洛伐克', 'SK' ], - '🇷🇸': [ 'RS', '塞尔维亚' ], - '🇲🇩': [ '摩爾多瓦', 'MD', '摩尔多瓦' ], - '🇩🇪': [ 'DE', 'German', 'GERMAN', '德国', '德國', '法兰克福', '京德', '滬德', '廣德', '沪德', '广德', 'Frankfurt' ], - '🇩🇰': [ 'DK', 'DNK', '丹麦', '丹麥' ], - '🇪🇸': [ 'ES', '西班牙', 'Spain' ], - '🇪🇺': [ 'EU', '欧盟', '欧罗巴' ], - '🇫🇮': [ 'Finland', '芬兰', '芬蘭', '赫尔辛基' ], - '🇫🇷': [ 'FR', 'France', '法国', '法國', '巴黎' ], - '🇬🇧': [ 'UK', 'GB', 'England', 'United Kingdom', '英国', '伦敦', '英', 'London' ], - '🇲🇴': [ 'MO', 'Macao', '澳门', '澳門', 'CTM' ], - '🇰🇿': [ '哈萨克斯坦', '哈萨克' ], - '🇭🇺': [ '匈牙利', 'Hungary' ], - '🇭🇰': [ - 'HK', - 'Hongkong', - 'Hong Kong', - 'HongKong', - 'HONG KONG', - '香港', - '深港', - '沪港', - '呼港', - 'HKT', - 'HKBN', - 'HGC', - 'WTT', - 'CMI', - '穗港', - '京港', - '港' - ], - '🇮🇩': [ 'Indonesia', '印尼', '印度尼西亚', '雅加达' ], - '🇮🇪': [ 'Ireland', 'IRELAND', '爱尔兰', '愛爾蘭', '都柏林' ], - '🇮🇱': [ 'Israel', '以色列' ], - '🇮🇳': [ 'India', 'IND', 'INDIA', '印度', '孟买', 'MFumbai' ], - '🇮🇸': [ 'IS', 'ISL', '冰岛', '冰島' ], - '🇰🇵': [ 'KP', '朝鲜' ], - '🇰🇷': [ 'KR', 'Korea', 'KOR', '韩国', '首尔', '韩', '韓', '春川', 'Chuncheon', 'Seoul' ], - '🇱🇺': [ '卢森堡' ], - '🇱🇻': [ 'Latvia', 'Latvija', '拉脱维亚' ], - '🇲🇽': [ 'MEX', 'MX', '墨西哥' ], - '🇲🇾': [ 'MY', 'Malaysia', 'MALAYSIA', '马来西亚', '大馬', '馬來西亞', '吉隆坡' ], - '🇳🇱': [ 'NL', 'Netherlands', '荷兰', '荷蘭', '尼德蘭', '阿姆斯特丹' ], - '🇳🇵': [ '尼泊尔' ], - '🇵🇭': [ 'PH', 'Philippines', '菲律宾', '菲律賓' ], - '🇵🇷': [ 'PR', '波多黎各' ], - '🇷🇴': [ 'RO', '罗马尼亚' ], - '🇷🇺': [ - 'RU', - 'Russia', - '俄罗斯', - '俄国', - '俄羅斯', - '伯力', - '莫斯科', - '圣彼得堡', - '西伯利亚', - '新西伯利亚', - '京俄', - '杭俄', - '廣俄', - '滬俄', - '广俄', - '沪俄', - 'Moscow' - ], - '🇸🇦': [ '沙特' ], - '🇸🇪': [ 'SE', 'Sweden', '瑞典' ], - '🇲🇹': [ '马耳他' ], - '🇲🇦': [ 'MA', '摩洛哥' ], - '🇸🇬': [ 'SG', 'Singapore', 'SINGAPORE', '新加坡', '狮城', '沪新', '京新', '泉新', '穗新', '深新', '杭新', '广新', '廣新', '滬新' ], - '🇹🇭': [ 'TH', 'Thailand', '泰国', '泰國', '曼谷' ], - '🇹🇷': [ 'TR', 'Turkey', '土耳其', '伊斯坦布尔' ], - '🇹🇼': [ 'TW', 'Taiwan', 'TAIWAN', '台湾', '台北', '台中', '新北', '彰化', 'CHT', '台', 'HINET', 'Taipei' ], - '🇺🇸': [ - 'US', - 'USA', - 'America', - 'United States', - '美国', - '美', - '京美', - '波特兰', - '达拉斯', - '俄勒冈', - '凤凰城', - '费利蒙', - '硅谷', - '矽谷', - '拉斯维加斯', - '洛杉矶', - '圣何塞', - '圣克拉拉', - '西雅图', - '芝加哥', - '沪美', - '哥伦布', - '纽约', - 'Los Angeles', - 'San Jose', - 'Sillicon Valley', - 'Michigan' - ], - '🇻🇳': [ 'VN', '越南', '胡志明市' ], - '🇻🇪': [ 'VE', '委内瑞拉' ], - '🇮🇹': [ 'Italy', 'IT', 'Nachash', '意大利', '米兰', '義大利' ], - '🇿🇦': [ 'South Africa', '南非' ], - '🇦🇪': [ 'United Arab Emirates', '阿联酋', '迪拜', 'AE' ], - '🇧🇷': [ 'BR', 'Brazil', '巴西', '圣保罗' ], - '🇯🇵': [ - 'JP', - 'Japan', - 'JAPAN', - '日本', - '东京', - '大阪', - '埼玉', - '沪日', - '穗日', - '川日', - '中日', - '泉日', - '杭日', - '深日', - '辽日', - '广日', - '大坂', - 'Osaka', - 'Tokyo' - ], - '🇦🇷': [ 'AR', '阿根廷' ], - '🇳🇴': [ 'Norway', '挪威', 'NO' ], - '🇨🇳': [ 'CN', 'China', '回国', '中国', '中國', '江苏', '北京', '上海', '广州', '深圳', '杭州', '徐州', '青岛', '宁波', '镇江', 'back' ], - '🇵🇱': [ 'PL', 'POL', '波兰', '波蘭' ], - '🇨🇱': [ '智利' ], - '🇳🇿': [ '新西蘭', '新西兰' ], - '🇬🇷': [ '希腊', '希臘' ], - '🇪🇬': [ '埃及' ], - '🇨🇾': [ 'CY', '塞浦路斯' ], - '🇨🇷': [ 'CR', '哥斯达黎加' ], - '🇸🇮': [ 'SI', '斯洛文尼亚' ], - '🇱🇹': [ 'LT', '立陶宛' ], - '🇵🇦': [ 'PA', '巴拿马' ], - '🇹🇳': [ 'TN', '突尼斯' ], - '🇮🇲': [ '马恩岛', '馬恩島' ], - '🇧🇾': [ 'BY', '白俄', '白俄罗斯' ], - '🇵🇹': [ '葡萄牙' ], - '🇰🇪': [ 'KE', '肯尼亚' ], - '🇰🇬': [ 'KG', '吉尔吉斯坦' ], - '🇯🇴': [ 'JO', '约旦' ], - '🇺🇾': [ 'UY', '乌拉圭' ], - '🇲🇳': [ '蒙古' ], - '🇮🇷': [ 'IR', '伊朗' ], - '🇵🇪': [ '秘鲁', '祕魯' ], - '🇨🇴': [ '哥伦比亚' ], - '🇪🇪': [ '爱沙尼亚' ], - '🇪🇨': [ 'EC', '厄瓜多尔' ], - '🇲🇰': [ '马其顿', '馬其頓' ], - '🇧🇦': [ '波黑共和国', '波黑' ], - '🇬🇪': [ '格魯吉亞', '格鲁吉亚' ], - '🇦🇱': [ '阿爾巴尼亞', '阿尔巴尼亚' ], - '🏳️‍🌈': [ '流量', '时间', '应急', '过期', 'Bandwidth', 'expire' ] - }; - for (let k of Object.keys(flags)) { - if (flags[k].some((item) => name.indexOf(item) !== -1)) { - return k; - } - } - // no flag found - const oldFlag = (name.match(/[\uD83C][\uDDE6-\uDDFF][\uD83C][\uDDE6-\uDDFF]/) || [])[0]; - return oldFlag || '🏴‍☠️'; +export function getFlag(name) { + // flags from @KOP-XIAO: https://github.com/KOP-XIAO/QuantumultX/blob/master/Scripts/resource-parser.js + const flags = { + '🇦🇿': ['阿塞拜疆'], + '🇦🇹': ['奥地利', '奧地利', 'Austria', '维也纳'], + '🇦🇺': [ + 'AU', + 'Australia', + 'Sydney', + '澳大利亚', + '澳洲', + '墨尔本', + '悉尼', + '土澳', + '京澳', + '廣澳', + '滬澳', + '沪澳', + '广澳', + ], + '🇧🇪': ['BE', '比利時', '比利时'], + '🇧🇬': ['保加利亚', '保加利亞', 'Bulgaria'], + '🇧🇭': ['BH', '巴林'], + '🇧🇩': ['BD', '孟加拉'], + '🇵🇰': ['巴基斯坦'], + '🇰🇭': ['柬埔寨'], + '🇺🇦': ['烏克蘭', '乌克兰'], + '🇭🇷': ['克罗地亚', 'HR', '克羅地亞'], + '🇨🇦': [ + 'Canada', + 'CANADA', + 'CAN', + 'Waterloo', + '加拿大', + '蒙特利尔', + '温哥华', + '楓葉', + '枫叶', + '滑铁卢', + '多伦多', + 'CA', + ], + '🇨🇭': ['瑞士', '苏黎世', 'Switzerland', 'Zurich'], + '🇳🇬': ['尼日利亚', 'NG', '尼日利亞'], + '🇨🇿': ['Czechia', '捷克'], + '🇸🇰': ['斯洛伐克', 'SK'], + '🇷🇸': ['RS', '塞尔维亚'], + '🇲🇩': ['摩爾多瓦', 'MD', '摩尔多瓦'], + '🇩🇪': [ + 'DE', + 'German', + 'GERMAN', + '德国', + '德國', + '法兰克福', + '京德', + '滬德', + '廣德', + '沪德', + '广德', + 'Frankfurt', + ], + '🇩🇰': ['DK', 'DNK', '丹麦', '丹麥'], + '🇪🇸': ['ES', '西班牙', 'Spain'], + '🇪🇺': ['EU', '欧盟', '欧罗巴'], + '🇫🇮': ['Finland', '芬兰', '芬蘭', '赫尔辛基'], + '🇫🇷': ['FR', 'France', '法国', '法國', '巴黎'], + '🇬🇧': [ + 'UK', + 'GB', + 'England', + 'United Kingdom', + '英国', + '伦敦', + '英', + 'London', + ], + '🇲🇴': ['MO', 'Macao', '澳门', '澳門', 'CTM'], + '🇰🇿': ['哈萨克斯坦', '哈萨克'], + '🇭🇺': ['匈牙利', 'Hungary'], + '🇭🇰': [ + 'HK', + 'Hongkong', + 'Hong Kong', + 'HongKong', + 'HONG KONG', + '香港', + '深港', + '沪港', + '呼港', + 'HKT', + 'HKBN', + 'HGC', + 'WTT', + 'CMI', + '穗港', + '京港', + '港', + ], + '🇮🇩': ['Indonesia', '印尼', '印度尼西亚', '雅加达'], + '🇮🇪': ['Ireland', 'IRELAND', '爱尔兰', '愛爾蘭', '都柏林'], + '🇮🇱': ['Israel', '以色列'], + '🇮🇳': ['India', 'IND', 'INDIA', '印度', '孟买', 'MFumbai'], + '🇮🇸': ['IS', 'ISL', '冰岛', '冰島'], + '🇰🇵': ['KP', '朝鲜'], + '🇰🇷': [ + 'KR', + 'Korea', + 'KOR', + '韩国', + '首尔', + '韩', + '韓', + '春川', + 'Chuncheon', + 'Seoul', + ], + '🇱🇺': ['卢森堡'], + '🇱🇻': ['Latvia', 'Latvija', '拉脱维亚'], + '🇲🇽': ['MEX', 'MX', '墨西哥'], + '🇲🇾': [ + 'MY', + 'Malaysia', + 'MALAYSIA', + '马来西亚', + '大馬', + '馬來西亞', + '吉隆坡', + ], + '🇳🇱': ['NL', 'Netherlands', '荷兰', '荷蘭', '尼德蘭', '阿姆斯特丹'], + '🇳🇵': ['尼泊尔'], + '🇵🇭': ['PH', 'Philippines', '菲律宾', '菲律賓'], + '🇵🇷': ['PR', '波多黎各'], + '🇷🇴': ['RO', '罗马尼亚'], + '🇷🇺': [ + 'RU', + 'Russia', + '俄罗斯', + '俄国', + '俄羅斯', + '伯力', + '莫斯科', + '圣彼得堡', + '西伯利亚', + '新西伯利亚', + '京俄', + '杭俄', + '廣俄', + '滬俄', + '广俄', + '沪俄', + 'Moscow', + ], + '🇸🇦': ['沙特'], + '🇸🇪': ['SE', 'Sweden', '瑞典'], + '🇲🇹': ['马耳他'], + '🇲🇦': ['MA', '摩洛哥'], + '🇸🇬': [ + 'SG', + 'Singapore', + 'SINGAPORE', + '新加坡', + '狮城', + '沪新', + '京新', + '泉新', + '穗新', + '深新', + '杭新', + '广新', + '廣新', + '滬新', + ], + '🇹🇭': ['TH', 'Thailand', '泰国', '泰國', '曼谷'], + '🇹🇷': ['TR', 'Turkey', '土耳其', '伊斯坦布尔'], + '🇹🇼': [ + 'TW', + 'Taiwan', + 'TAIWAN', + '台湾', + '台北', + '台中', + '新北', + '彰化', + 'CHT', + '台', + 'HINET', + 'Taipei', + ], + '🇺🇸': [ + 'US', + 'USA', + 'America', + 'United States', + '美国', + '美', + '京美', + '波特兰', + '达拉斯', + '俄勒冈', + '凤凰城', + '费利蒙', + '硅谷', + '矽谷', + '拉斯维加斯', + '洛杉矶', + '圣何塞', + '圣克拉拉', + '西雅图', + '芝加哥', + '沪美', + '哥伦布', + '纽约', + 'Los Angeles', + 'San Jose', + 'Sillicon Valley', + 'Michigan', + ], + '🇻🇳': ['VN', '越南', '胡志明市'], + '🇻🇪': ['VE', '委内瑞拉'], + '🇮🇹': ['Italy', 'IT', 'Nachash', '意大利', '米兰', '義大利'], + '🇿🇦': ['South Africa', '南非'], + '🇦🇪': ['United Arab Emirates', '阿联酋', '迪拜', 'AE'], + '🇧🇷': ['BR', 'Brazil', '巴西', '圣保罗'], + '🇯🇵': [ + 'JP', + 'Japan', + 'JAPAN', + '日本', + '东京', + '大阪', + '埼玉', + '沪日', + '穗日', + '川日', + '中日', + '泉日', + '杭日', + '深日', + '辽日', + '广日', + '大坂', + 'Osaka', + 'Tokyo', + ], + '🇦🇷': ['AR', '阿根廷'], + '🇳🇴': ['Norway', '挪威', 'NO'], + '🇨🇳': [ + 'CN', + 'China', + '回国', + '中国', + '中國', + '江苏', + '北京', + '上海', + '广州', + '深圳', + '杭州', + '徐州', + '青岛', + '宁波', + '镇江', + 'back', + ], + '🇵🇱': ['PL', 'POL', '波兰', '波蘭'], + '🇨🇱': ['智利'], + '🇳🇿': ['新西蘭', '新西兰'], + '🇬🇷': ['希腊', '希臘'], + '🇪🇬': ['埃及'], + '🇨🇾': ['CY', '塞浦路斯'], + '🇨🇷': ['CR', '哥斯达黎加'], + '🇸🇮': ['SI', '斯洛文尼亚'], + '🇱🇹': ['LT', '立陶宛'], + '🇵🇦': ['PA', '巴拿马'], + '🇹🇳': ['TN', '突尼斯'], + '🇮🇲': ['马恩岛', '馬恩島'], + '🇧🇾': ['BY', '白俄', '白俄罗斯'], + '🇵🇹': ['葡萄牙'], + '🇰🇪': ['KE', '肯尼亚'], + '🇰🇬': ['KG', '吉尔吉斯坦'], + '🇯🇴': ['JO', '约旦'], + '🇺🇾': ['UY', '乌拉圭'], + '🇲🇳': ['蒙古'], + '🇮🇷': ['IR', '伊朗'], + '🇵🇪': ['秘鲁', '祕魯'], + '🇨🇴': ['哥伦比亚'], + '🇪🇪': ['爱沙尼亚'], + '🇪🇨': ['EC', '厄瓜多尔'], + '🇲🇰': ['马其顿', '馬其頓'], + '🇧🇦': ['波黑共和国', '波黑'], + '🇬🇪': ['格魯吉亞', '格鲁吉亚'], + '🇦🇱': ['阿爾巴尼亞', '阿尔巴尼亚'], + '🏳️‍🌈': ['流量', '时间', '应急', '过期', 'Bandwidth', 'expire'], + }; + for (let k of Object.keys(flags)) { + if (flags[k].some((item) => name.indexOf(item) !== -1)) { + return k; + } + } + // no flag found + const oldFlag = (name.match( + /[\uD83C][\uDDE6-\uDDFF][\uD83C][\uDDE6-\uDDFF]/, + ) || [])[0]; + return oldFlag || '🏴‍☠️'; } // util API -async function IP_API(req, res) { - const server = decodeURIComponent(req.params.server); - const $http = HTTP(); - const result = await $http - .get(`http://ip-api.com/json/${server}?lang=zh-CN`) - .then((resp) => JSON.parse(resp.body)); - res.json(result); +export async function IP_API(req, res) { + const server = decodeURIComponent(req.params.server); + const $http = HTTP(); + const result = await $http + .get(`http://ip-api.com/json/${server}?lang=zh-CN`) + .then((resp) => JSON.parse(resp.body)); + res.json(result); } - -module.exports = { - getFlag, - IP_API -}; diff --git a/backend/src/utils/gist.js b/backend/src/utils/gist.js index a677c37..0beace2 100644 --- a/backend/src/utils/gist.js +++ b/backend/src/utils/gist.js @@ -1,75 +1,77 @@ -const { HTTP } = require('./open-api'); +import { HTTP } from './open-api'; /** * Gist backup */ -function Gist({ token, key }) { - const http = HTTP({ - baseURL: 'https://api.github.com', - headers: { - Authorization: `token ${token}`, - 'User-Agent': - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/537.36' - }, - events: { - onResponse: (resp) => { - if (/^[45]/.test(String(resp.statusCode))) { - return Promise.reject(`ERROR: ${JSON.parse(resp.body).message}`); - } else { - return resp; - } - } - } - }); +export default function Gist({ token, key }) { + const http = HTTP({ + baseURL: 'https://api.github.com', + headers: { + Authorization: `token ${token}`, + 'User-Agent': + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/537.36', + }, + events: { + onResponse: (resp) => { + if (/^[45]/.test(String(resp.statusCode))) { + return Promise.reject( + `ERROR: ${JSON.parse(resp.body).message}`, + ); + } else { + return resp; + } + }, + }, + }); - async function locate() { - return http.get('/gists').then((response) => { - const gists = JSON.parse(response.body); - for (let g of gists) { - if (g.description === key) { - return g.id; - } - } - return -1; - }); - } + async function locate() { + return http.get('/gists').then((response) => { + const gists = JSON.parse(response.body); + for (let g of gists) { + if (g.description === key) { + return g.id; + } + } + return -1; + }); + } - this.upload = async function(files) { - const id = await locate(); + this.upload = async function (files) { + const id = await locate(); - if (id === -1) { - // create a new gist for backup - return http.post({ - url: '/gists', - body: JSON.stringify({ - description: key, - public: false, - files - }) - }); - } else { - // update an existing gist - return http.patch({ - url: `/gists/${id}`, - body: JSON.stringify({ files }) - }); - } - }; + if (id === -1) { + // create a new gist for backup + return http.post({ + url: '/gists', + body: JSON.stringify({ + description: key, + public: false, + files, + }), + }); + } else { + // update an existing gist + return http.patch({ + url: `/gists/${id}`, + body: JSON.stringify({ files }), + }); + } + }; - this.download = async function(filename) { - const id = await locate(); - if (id === -1) { - return Promise.reject('未找到Gist备份!'); - } else { - try { - const { files } = await http.get(`/gists/${id}`).then((resp) => JSON.parse(resp.body)); - const url = files[filename].raw_url; - return await http.get(url).then((resp) => resp.body); - } catch (err) { - return Promise.reject(err); - } - } - }; + this.download = async function (filename) { + const id = await locate(); + if (id === -1) { + return Promise.reject('未找到Gist备份!'); + } else { + try { + const { files } = await http + .get(`/gists/${id}`) + .then((resp) => JSON.parse(resp.body)); + const url = files[filename].raw_url; + return await http.get(url).then((resp) => resp.body); + } catch (err) { + return Promise.reject(err); + } + } + }; } - -module.exports = Gist; diff --git a/backend/src/utils/logical.js b/backend/src/utils/logical.js index f392db8..c58cc57 100644 --- a/backend/src/utils/logical.js +++ b/backend/src/utils/logical.js @@ -14,9 +14,4 @@ function FULL(length, bool) { return [...Array(length).keys()].map(() => bool); } -module.exports = { - AND, - OR, - NOT, - FULL -} \ No newline at end of file +export { AND, OR, NOT, FULL }; diff --git a/backend/src/utils/open-api.js b/backend/src/utils/open-api.js index e1927d9..c135c5f 100644 --- a/backend/src/utils/open-api.js +++ b/backend/src/utils/open-api.js @@ -1,271 +1,318 @@ -function ENV() { - const isQX = typeof $task !== 'undefined'; - const isLoon = typeof $loon !== 'undefined'; - const isSurge = typeof $httpClient !== 'undefined' && !isLoon; - const isNode = eval(`typeof process !== "undefined"`); - return { isQX, isLoon, isSurge, isNode }; +export function ENV() { + const isQX = typeof $task !== 'undefined'; + const isLoon = typeof $loon !== 'undefined'; + const isSurge = typeof $httpClient !== 'undefined' && !isLoon; + const isNode = eval(`typeof process !== "undefined"`); + return { isQX, isLoon, isSurge, isNode }; } -function HTTP(defaultOptions = { baseURL: '' }) { - const { isQX, isLoon, isSurge, isNode } = ENV(); - const methods = [ 'GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS', 'PATCH' ]; - const URL_REGEX = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/; +export function HTTP(defaultOptions = { baseURL: '' }) { + const { isQX, isLoon, isSurge, isNode } = ENV(); + const methods = [ + 'GET', + 'POST', + 'PUT', + 'DELETE', + 'HEAD', + 'OPTIONS', + 'PATCH', + ]; + const URL_REGEX = + /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/; - function send(method, options) { - options = typeof options === 'string' ? { url: options } : options; - const baseURL = defaultOptions.baseURL; - if (baseURL && !URL_REGEX.test(options.url || '')) { - options.url = baseURL ? baseURL + options.url : options.url; - } - options = { ...defaultOptions, ...options }; - const timeout = options.timeout; - const events = { - ...{ - onRequest: () => {}, - onResponse: (resp) => resp, - onTimeout: () => {} - }, - ...options.events - }; + function send(method, options) { + options = typeof options === 'string' ? { url: options } : options; + const baseURL = defaultOptions.baseURL; + if (baseURL && !URL_REGEX.test(options.url || '')) { + options.url = baseURL ? baseURL + options.url : options.url; + } + options = { ...defaultOptions, ...options }; + const timeout = options.timeout; + const events = { + ...{ + onRequest: () => {}, + onResponse: (resp) => resp, + onTimeout: () => {}, + }, + ...options.events, + }; - events.onRequest(method, options); + events.onRequest(method, options); - let worker; - if (isQX) { - worker = $task.fetch({ - method, - url: options.url, - headers: options.headers, - body: options.body - }); - } else if (isLoon || isSurge || isNode) { - worker = new Promise((resolve, reject) => { - const request = isNode ? eval("require('request')") : $httpClient; - request[method.toLowerCase()](options, (err, response, body) => { - if (err) reject(err); - else - resolve({ - statusCode: response.status || response.statusCode, - headers: response.headers, - body - }); - }); - }); - } + let worker; + if (isQX) { + worker = $task.fetch({ + method, + url: options.url, + headers: options.headers, + body: options.body, + }); + } else if (isLoon || isSurge || isNode) { + worker = new Promise((resolve, reject) => { + const request = isNode + ? eval("require('request')") + : $httpClient; + request[method.toLowerCase()]( + options, + (err, response, body) => { + if (err) reject(err); + else + resolve({ + statusCode: + response.status || response.statusCode, + headers: response.headers, + body, + }); + }, + ); + }); + } - let timeoutid; - const timer = timeout - ? new Promise((_, reject) => { - timeoutid = setTimeout(() => { - events.onTimeout(); - return reject(`${method} URL: ${options.url} exceeds the timeout ${timeout} ms`); - }, timeout); - }) - : null; + let timeoutid; + const timer = timeout + ? new Promise((_, reject) => { + timeoutid = setTimeout(() => { + events.onTimeout(); + return reject( + `${method} URL: ${options.url} exceeds the timeout ${timeout} ms`, + ); + }, timeout); + }) + : null; - return (timer - ? Promise.race([ timer, worker ]).then((res) => { - clearTimeout(timeoutid); - return res; - }) - : worker).then((resp) => events.onResponse(resp)); - } + return ( + timer + ? Promise.race([timer, worker]).then((res) => { + clearTimeout(timeoutid); + return res; + }) + : worker + ).then((resp) => events.onResponse(resp)); + } - const http = {}; - methods.forEach((method) => (http[method.toLowerCase()] = (options) => send(method, options))); - return http; + const http = {}; + methods.forEach( + (method) => + (http[method.toLowerCase()] = (options) => send(method, options)), + ); + return http; } -function API(name = 'untitled', debug = false) { - const { isQX, isLoon, isSurge, isNode } = ENV(); - return new class { - constructor(name, debug) { - this.name = name; - this.debug = debug; +export function API(name = 'untitled', debug = false) { + const { isQX, isLoon, isSurge, isNode } = ENV(); + return new (class { + constructor(name, debug) { + this.name = name; + this.debug = debug; - this.http = HTTP(); - this.env = ENV(); + this.http = HTTP(); + this.env = ENV(); - this.node = (() => { - if (isNode) { - const fs = eval("require('fs')"); + this.node = (() => { + if (isNode) { + const fs = eval("require('fs')"); - return { - fs - }; - } else { - return null; - } - })(); - this.initCache(); + return { + fs, + }; + } else { + return null; + } + })(); + this.initCache(); - const delay = (t, v) => - new Promise(function(resolve) { - setTimeout(resolve.bind(null, v), t); - }); + const delay = (t, v) => + new Promise(function (resolve) { + setTimeout(resolve.bind(null, v), t); + }); - Promise.prototype.delay = function(t) { - return this.then(function(v) { - return delay(t, v); - }); - }; - } + Promise.prototype.delay = function (t) { + return this.then(function (v) { + return delay(t, v); + }); + }; + } - // persistence - // initialize cache - initCache() { - if (isQX) this.cache = JSON.parse($prefs.valueForKey(this.name) || '{}'); - if (isLoon || isSurge) this.cache = JSON.parse($persistentStore.read(this.name) || '{}'); + // persistence + // initialize cache + initCache() { + if (isQX) + this.cache = JSON.parse($prefs.valueForKey(this.name) || '{}'); + if (isLoon || isSurge) + this.cache = JSON.parse( + $persistentStore.read(this.name) || '{}', + ); - if (isNode) { - // create a json for root cache - let fpath = 'root.json'; - if (!this.node.fs.existsSync(fpath)) { - this.node.fs.writeFileSync(fpath, JSON.stringify({}), { flag: 'wx' }, (err) => console.log(err)); - } - this.root = {}; + if (isNode) { + // create a json for root cache + let fpath = 'root.json'; + if (!this.node.fs.existsSync(fpath)) { + this.node.fs.writeFileSync( + fpath, + JSON.stringify({}), + { flag: 'wx' }, + (err) => console.log(err), + ); + } + this.root = {}; - // create a json file with the given name if not exists - fpath = `${this.name}.json`; - if (!this.node.fs.existsSync(fpath)) { - this.node.fs.writeFileSync(fpath, JSON.stringify({}), { flag: 'wx' }, (err) => console.log(err)); - this.cache = {}; - } else { - this.cache = JSON.parse(this.node.fs.readFileSync(`${this.name}.json`)); - } - } - } + // create a json file with the given name if not exists + fpath = `${this.name}.json`; + if (!this.node.fs.existsSync(fpath)) { + this.node.fs.writeFileSync( + fpath, + JSON.stringify({}), + { flag: 'wx' }, + (err) => console.log(err), + ); + this.cache = {}; + } else { + this.cache = JSON.parse( + this.node.fs.readFileSync(`${this.name}.json`), + ); + } + } + } - // store cache - persistCache() { - const data = JSON.stringify(this.cache, null, 2); - if (isQX) $prefs.setValueForKey(data, this.name); - if (isLoon || isSurge) $persistentStore.write(data, this.name); - if (isNode) { - this.node.fs.writeFileSync(`${this.name}.json`, data, { flag: 'w' }, (err) => console.log(err)); - this.node.fs.writeFileSync('root.json', JSON.stringify(this.root, null, 2), { flag: 'w' }, (err) => - console.log(err) - ); - } - } + // store cache + persistCache() { + const data = JSON.stringify(this.cache, null, 2); + if (isQX) $prefs.setValueForKey(data, this.name); + if (isLoon || isSurge) $persistentStore.write(data, this.name); + if (isNode) { + this.node.fs.writeFileSync( + `${this.name}.json`, + data, + { flag: 'w' }, + (err) => console.log(err), + ); + this.node.fs.writeFileSync( + 'root.json', + JSON.stringify(this.root, null, 2), + { flag: 'w' }, + (err) => console.log(err), + ); + } + } - write(data, key) { - this.log(`SET ${key}`); - if (key.indexOf('#') !== -1) { - key = key.substr(1); - if (isSurge || isLoon) { - return $persistentStore.write(data, key); - } - if (isQX) { - return $prefs.setValueForKey(data, key); - } - if (isNode) { - this.root[key] = data; - } - } else { - this.cache[key] = data; - } - this.persistCache(); - } + write(data, key) { + this.log(`SET ${key}`); + if (key.indexOf('#') !== -1) { + key = key.substr(1); + if (isSurge || isLoon) { + return $persistentStore.write(data, key); + } + if (isQX) { + return $prefs.setValueForKey(data, key); + } + if (isNode) { + this.root[key] = data; + } + } else { + this.cache[key] = data; + } + this.persistCache(); + } - read(key) { - this.log(`READ ${key}`); - if (key.indexOf('#') !== -1) { - key = key.substr(1); - if (isSurge || isLoon) { - return $persistentStore.read(key); - } - if (isQX) { - return $prefs.valueForKey(key); - } - if (isNode) { - return this.root[key]; - } - } else { - return this.cache[key]; - } - } + read(key) { + this.log(`READ ${key}`); + if (key.indexOf('#') !== -1) { + key = key.substr(1); + if (isSurge || isLoon) { + return $persistentStore.read(key); + } + if (isQX) { + return $prefs.valueForKey(key); + } + if (isNode) { + return this.root[key]; + } + } else { + return this.cache[key]; + } + } - delete(key) { - this.log(`DELETE ${key}`); - if (key.indexOf('#') !== -1) { - key = key.substr(1); - if (isSurge || isLoon) { - return $persistentStore.write(null, key); - } - if (isQX) { - return $prefs.removeValueForKey(key); - } - if (isNode) { - delete this.root[key]; - } - } else { - delete this.cache[key]; - } - this.persistCache(); - } + delete(key) { + this.log(`DELETE ${key}`); + if (key.indexOf('#') !== -1) { + key = key.substr(1); + if (isSurge || isLoon) { + return $persistentStore.write(null, key); + } + if (isQX) { + return $prefs.removeValueForKey(key); + } + if (isNode) { + delete this.root[key]; + } + } else { + delete this.cache[key]; + } + this.persistCache(); + } - // notification - notify(title, subtitle = '', content = '', options = {}) { - const openURL = options['open-url']; - const mediaURL = options['media-url']; + // notification + notify(title, subtitle = '', content = '', options = {}) { + const openURL = options['open-url']; + const mediaURL = options['media-url']; - if (isQX) $notify(title, subtitle, content, options); - if (isSurge) { - $notification.post(title, subtitle, content + `${mediaURL ? '\n多媒体:' + mediaURL : ''}`, { - url: openURL - }); - } - if (isLoon) { - let opts = {}; - if (openURL) opts['openUrl'] = openURL; - if (mediaURL) opts['mediaUrl'] = mediaURL; - if (JSON.stringify(opts) === '{}') { - $notification.post(title, subtitle, content); - } else { - $notification.post(title, subtitle, content, opts); - } - } - if (isNode) { - const content_ = - content + (openURL ? `\n点击跳转: ${openURL}` : '') + (mediaURL ? `\n多媒体: ${mediaURL}` : ''); - console.log(`${title}\n${subtitle}\n${content_}\n\n`); - } - } + if (isQX) $notify(title, subtitle, content, options); + if (isSurge) { + $notification.post( + title, + subtitle, + content + `${mediaURL ? '\n多媒体:' + mediaURL : ''}`, + { + url: openURL, + }, + ); + } + if (isLoon) { + let opts = {}; + if (openURL) opts['openUrl'] = openURL; + if (mediaURL) opts['mediaUrl'] = mediaURL; + if (JSON.stringify(opts) === '{}') { + $notification.post(title, subtitle, content); + } else { + $notification.post(title, subtitle, content, opts); + } + } + if (isNode) { + const content_ = + content + + (openURL ? `\n点击跳转: ${openURL}` : '') + + (mediaURL ? `\n多媒体: ${mediaURL}` : ''); + console.log(`${title}\n${subtitle}\n${content_}\n\n`); + } + } - // other helper functions - log(msg) { - if (this.debug) console.log(`[${this.name}] LOG: ${msg}`); - } + // other helper functions + log(msg) { + if (this.debug) console.log(`[${this.name}] LOG: ${msg}`); + } - info(msg) { - console.log(`[${this.name}] INFO: ${msg}`); - } + info(msg) { + console.log(`[${this.name}] INFO: ${msg}`); + } - error(msg) { - console.log(`[${this.name}] ERROR: ${msg}`); - } + error(msg) { + console.log(`[${this.name}] ERROR: ${msg}`); + } - wait(millisec) { - return new Promise((resolve) => setTimeout(resolve, millisec)); - } + wait(millisec) { + return new Promise((resolve) => setTimeout(resolve, millisec)); + } - done(value = {}) { - if (isQX || isLoon || isSurge) { - $done(value); - } else if (isNode) { - if (typeof $context !== 'undefined') { - $context.headers = value.headers; - $context.statusCode = value.statusCode; - $context.body = value.body; - } - } - } - }(name, debug); + done(value = {}) { + if (isQX || isLoon || isSurge) { + $done(value); + } else if (isNode) { + if (typeof $context !== 'undefined') { + $context.headers = value.headers; + $context.statusCode = value.statusCode; + $context.body = value.body; + } + } + } + })(name, debug); } - -module.exports = { - HTTP, - ENV, - API -}; diff --git a/backend/sub-store.min.js b/backend/sub-store.min.js index c31b26d..8c342ab 100644 --- a/backend/sub-store.min.js +++ b/backend/sub-store.min.js @@ -5,11 +5,12 @@ * ╚════██║██║ ██║██╔══██╗╚════╝╚════██║ ██║ ██║ ██║██╔══██╗██╔══╝ * ███████║╚██████╔╝██████╔╝ ███████║ ██║ ╚██████╔╝██║ ██║███████╗ * ╚══════╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ - * Advanced Subscription Manager for QX, Loon, Surge and Clash. - * @version: 1.5 + * Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket! + * @updated: 2022/5/24 下午9:18:57 + * @version: 1.5.1 * @author: Peng-YM * @github: https://github.com/Peng-YM/Sub-Store * @documentation: https://www.notion.so/Sub-Store-6259586994d34c11a4ced5c406264b46 */ -!function(){var createModuleFactory=function(e){var t;return function(r){return t||e(t={exports:{},parent:r},t.exports),t.exports}},_$settings_43=createModuleFactory((function(e,t){const{SETTINGS_KEY:r}=_$constants_41;function n(e,t){const n=_$$_36.read(r);t.json(n)}function o(e,t){const n=e.body,o=_$$_36.read(r);_$$_36.write({...o,...n},r),t.json({status:"success"})}e.exports={register:function(e){_$$_36.read(r)||_$$_36.write({},r),e.route("/api/settings").get(n).patch(o)}}})),_$collections_40=createModuleFactory((function(e,t){const{SUBS_KEY:r,COLLECTIONS_KEY:n}=_$constants_41,{getPlatformFromHeaders:o,getFlowHeaders:s}=_$subscriptions_44({}),{produceArtifact:i}=_$artifacts_39({});async function a(e,t){const{name:a}=e.params,{raw:u}=e.query||"false",c=e.query.target||o(e.headers)||"JSON",p=_$$_36.read(n)[a];_$$_36.info("\u6b63\u5728\u4e0b\u8f7d\u7ec4\u5408\u8ba2\u9605\uff1a"+a);const l=_$$_36.read(r),f=p.subscriptions;if(f.length>0){const e=l[f[0]],r=await s(e.url);r&&t.set("subscription-userinfo",r)}if(p)try{const e=await i({type:"collection",item:p,platform:c,noProcessor:u});"JSON"===c?t.set("Content-Type","application/json;charset=utf-8").send(e):t.send(e)}catch(d){_$$_36.notify("\ud83c\udf0d \u300e \ud835\udc7a\ud835\udc96\ud835\udc83-\ud835\udc7a\ud835\udc95\ud835\udc90\ud835\udc93\ud835\udc86 \u300f \u4e0b\u8f7d\u7ec4\u5408\u8ba2\u9605\u5931\u8d25",`\u274c \u4e0b\u8f7d\u7ec4\u5408\u8ba2\u9605\u9519\u8bef\uff1a${a}\uff01`,"\ud83e\udd14 \u539f\u56e0\uff1a"+d),t.status(500).json({status:"failed",message:d})}else _$$_36.notify("\ud83c\udf0d \u300e \ud835\udc7a\ud835\udc96\ud835\udc83-\ud835\udc7a\ud835\udc95\ud835\udc90\ud835\udc93\ud835\udc86 \u300f \u4e0b\u8f7d\u7ec4\u5408\u8ba2\u9605\u5931\u8d25",`\u274c \u672a\u627e\u5230\u7ec4\u5408\u8ba2\u9605\uff1a${a}\uff01`),t.status(404).json({status:"failed"})}function u(e,t){const r=e.body;_$$_36.info("\u6b63\u5728\u521b\u5efa\u7ec4\u5408\u8ba2\u9605\uff1a"+r.name);const o=_$$_36.read(n);o[r.name]&&t.status(500).json({status:"failed",message:`\u8ba2\u9605\u96c6${r.name}\u5df2\u5b58\u5728\uff01`}),/^[\w-_]*$/.test(r.name)?(o[r.name]=r,_$$_36.write(o,n),t.status(201).json({status:"success",data:r})):t.status(500).json({status:"failed",message:`\u8ba2\u9605\u96c6\u540d\u79f0 ${r.name} \u4e2d\u542b\u6709\u975e\u6cd5\u5b57\u7b26\uff01\u540d\u79f0\u4e2d\u53ea\u80fd\u5305\u542b\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u4e0b\u5212\u7ebf\u3001\u6a2a\u6760\u3002`})}function c(e,t){const{name:r}=e.params,o=_$$_36.read(n)[r];o?t.json({status:"success",data:o}):t.status(404).json({status:"failed",message:`\u672a\u627e\u5230\u8ba2\u9605\u96c6\uff1a${r}!`})}function p(e,t){const{name:r}=e.params;let o=e.body;const s=_$$_36.read(n);if(s[r]){const e={...s[r],...o};_$$_36.info(`\u6b63\u5728\u66f4\u65b0\u7ec4\u5408\u8ba2\u9605\uff1a${r}...`),delete s[r],s[o.name||r]=e,_$$_36.write(s,n),t.json({status:"success",data:e})}else t.status(500).json({status:"failed",message:`\u8ba2\u9605\u96c6${r}\u4e0d\u5b58\u5728\uff0c\u65e0\u6cd5\u66f4\u65b0\uff01`})}function l(e,t){const{name:r}=e.params;_$$_36.info("\u6b63\u5728\u5220\u9664\u7ec4\u5408\u8ba2\u9605\uff1a"+r);let o=_$$_36.read(n);delete o[r],_$$_36.write(o,n),t.json({status:"success"})}function f(e,t){const r=_$$_36.read(n);t.json({status:"success",data:r})}e.exports={register:function(e){_$$_36.read(n)||_$$_36.write({},n),e.get("/download/collection/:name",a),e.route("/api/collection/:name").get(c).patch(p).delete(l),e.route("/api/collections").get(f).post(u)}}})),_$subscriptions_44=createModuleFactory((function(e,t){const{produceArtifact:r}=_$artifacts_39({}),{SUBS_KEY:n,COLLECTIONS_KEY:o}=_$constants_41;async function s(e,t){const{name:o}=e.params,{raw:s}=e.query||"false",i=e.query.target||f(e.headers)||"JSON";_$$_36.info("\u6b63\u5728\u4e0b\u8f7d\u8ba2\u9605\uff1a"+o);const a=_$$_36.read(n)[o];if(a)try{const e=await r({type:"subscription",item:a,platform:i,noProcessor:s}),n=await l(a.url);n&&t.set("subscription-userinfo",n),"JSON"===i?t.set("Content-Type","application/json;charset=utf-8").send(e):t.send(e)}catch(u){_$$_36.notify("\ud83c\udf0d \u300e \ud835\udc7a\ud835\udc96\ud835\udc83-\ud835\udc7a\ud835\udc95\ud835\udc90\ud835\udc93\ud835\udc86 \u300f \u4e0b\u8f7d\u8ba2\u9605\u5931\u8d25",`\u274c \u65e0\u6cd5\u4e0b\u8f7d\u8ba2\u9605\uff1a${o}\uff01`,"\ud83e\udd14 \u539f\u56e0\uff1a"+JSON.stringify(u)),_$$_36.error(JSON.stringify(u)),t.status(500).json({status:"failed",message:u})}else _$$_36.notify("\ud83c\udf0d \u300e \ud835\udc7a\ud835\udc96\ud835\udc83-\ud835\udc7a\ud835\udc95\ud835\udc90\ud835\udc93\ud835\udc86 \u300f \u4e0b\u8f7d\u8ba2\u9605\u5931\u8d25",`\u274c \u672a\u627e\u5230\u8ba2\u9605\uff1a${o}\uff01`),t.status(404).json({status:"failed"})}function i(e,t){const r=e.body,o=_$$_36.read(n);_$$_36.info("\u6b63\u5728\u521b\u5efa\u8ba2\u9605\uff1a "+r.name),o[r.name]&&t.status(500).json({status:"failed",message:`\u8ba2\u9605${r.name}\u5df2\u5b58\u5728\uff01`}),/^[\w-_]*$/.test(r.name)?(o[r.name]=r,_$$_36.write(o,n),t.status(201).json({status:"success",data:r})):t.status(500).json({status:"failed",message:`\u8ba2\u9605\u540d\u79f0 ${r.name} \u4e2d\u542b\u6709\u975e\u6cd5\u5b57\u7b26\uff01\u540d\u79f0\u4e2d\u53ea\u80fd\u5305\u542b\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u4e0b\u5212\u7ebf\u3001\u6a2a\u6760\u3002`})}function a(e,t){const{name:r}=e.params,o=_$$_36.read(n)[r];o?t.json({status:"success",data:o}):t.status(404).json({status:"failed",message:`\u672a\u627e\u5230\u8ba2\u9605\uff1a${r}!`})}function u(e,t){const{name:r}=e.params;let s=e.body;const i=_$$_36.read(n);if(i[r]){const e={...i[r],...s};if(_$$_36.info("\u6b63\u5728\u66f4\u65b0\u8ba2\u9605\uff1a "+r),r!==s.name){const t=_$$_36.read(o);for(const e of Object.keys(t)){const n=t[e].subscriptions.indexOf(r);-1!==n&&(t[e].subscriptions[n]=s.name)}delete i[r],i[s.name]=e}else i[r]=e;_$$_36.write(i,n),t.json({status:"success",data:e})}else t.status(500).json({status:"failed",message:`\u8ba2\u9605${r}\u4e0d\u5b58\u5728\uff0c\u65e0\u6cd5\u66f4\u65b0\uff01`})}function c(e,t){const{name:r}=e.params;_$$_36.info(`\u5220\u9664\u8ba2\u9605\uff1a${r}...`);let s=_$$_36.read(n);delete s[r],_$$_36.write(s,n);let i=_$$_36.read(o);for(const n of Object.keys(i))i[n].subscriptions=i[n].subscriptions.filter(e=>e!==r);_$$_36.write(i,o),t.json({status:"success"})}function p(e,t){const r=_$$_36.read(n);t.json({status:"success",data:r})}async function l(e){const{headers:t}=await _$$_36.http.get({url:e,headers:{"User-Agent":"Quantumult/1.0.13 (iPhone10,3; iOS 14.0)"}});return t[Object.keys(t).filter(e=>/SUBSCRIPTION-USERINFO/i.test(e))[0]]}function f(e){const t=Object.keys(e);let r="";for(let n of t)if(/USER-AGENT/i.test(n)){r=e[n];break}return-1!==r.indexOf("Quantumult%20X")?"QX":-1!==r.indexOf("Surge")?"Surge":-1!==r.indexOf("Decar")||-1!==r.indexOf("Loon")?"Loon":-1!==r.indexOf("Stash")||-1!==r.indexOf("Shadowrocket")?"Clash":null}e.exports={register:function(e){_$$_36.read(n)||_$$_36.write({},n),e.get("/download/:name",s),e.route("/api/sub/:name").get(a).patch(u).delete(c),e.route("/api/subs").get(p).post(i)},getPlatformFromHeaders:f,getFlowHeaders:l}})),_$artifacts_39=createModuleFactory((function(e,t){const{ProxyUtils:r}=_$proxyUtils_37,{RuleUtils:n}=_$ruleUtils_38,{SUBS_KEY:o,ARTIFACTS_KEY:s,ARTIFACT_REPOSITORY_KEY:i,COLLECTIONS_KEY:a,RULES_KEY:u,SETTINGS_KEY:c}=_$constants_41;async function p(e,t){const r=e.params.name,n=e.query.action,i=_$$_36.read(s),c=i[r];if(c)if(n){let e;switch(c.type){case"subscription":e=_$$_36.read(o)[c.source];break;case"collection":e=_$$_36.read(a)[c.source];break;case"rule":e=_$$_36.read(u)[c.source]}const r=await g({type:c.type,item:e,platform:c.platform});if("preview"===n)t.send(r);else if("sync"===n){_$$_36.info(`\u6b63\u5728\u4e0a\u4f20\u914d\u7f6e\uff1a${c.name}\n>>>`),console.log(JSON.stringify(c,null,2));try{const e=await m({[c.name]:{content:r}});c.updated=(new Date).getTime();const n=JSON.parse(e.body);c.url=n.files[c.name].raw_url.replace(/\/raw\/[^\/]*\/(.*)/,"/raw/$1"),_$$_36.write(i,s),t.json({status:"success"})}catch(p){t.status(500).json({status:"failed",message:p})}}}else t.json({status:"success",data:c});else t.status(404).json({status:"failed",message:"\u672a\u627e\u5230\u5bf9\u5e94\u7684\u914d\u7f6e\uff01"})}function l(e,t){const r=e.body;_$$_36.info("\u6b63\u5728\u521b\u5efa\u8fdc\u7a0b\u914d\u7f6e\uff1a"+r.name);const n=_$$_36.read(s);n[r.name]?t.status(500).json({status:"failed",message:`\u8fdc\u7a0b\u914d\u7f6e${r.name}\u5df2\u5b58\u5728\uff01`}):/^[\w-_.]*$/.test(r.name)?(n[r.name]=r,_$$_36.write(n,s),t.status(201).json({status:"success",data:r})):t.status(500).json({status:"failed",message:`\u8fdc\u7a0b\u914d\u7f6e\u540d\u79f0 ${r.name} \u4e2d\u542b\u6709\u975e\u6cd5\u5b57\u7b26\uff01\u540d\u79f0\u4e2d\u53ea\u80fd\u5305\u542b\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u4e0b\u5212\u7ebf\u3001\u6a2a\u6760\u3002`})}function f(e,t){const r=_$$_36.read(s),n=e.params.name,o=r[n];if(o){_$$_36.info("\u6b63\u5728\u66f4\u65b0\u8fdc\u7a0b\u914d\u7f6e\uff1a"+o.name);const i=e.body;if(void 0===i.name||/^[\w-_.]*$/.test(i.name)){const e={...o,...i};r[e.name]=e,e.name!==n&&delete r[n],_$$_36.write(r,s),t.json({status:"success",data:e})}else t.status(500).json({status:"failed",message:`\u8fdc\u7a0b\u914d\u7f6e\u540d\u79f0 ${i.name} \u4e2d\u542b\u6709\u975e\u6cd5\u5b57\u7b26\uff01\u540d\u79f0\u4e2d\u53ea\u80fd\u5305\u542b\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u4e0b\u5212\u7ebf\u3001\u6a2a\u6760\u3002`})}else t.status(404).json({status:"failed",message:"\u672a\u627e\u5230\u5bf9\u5e94\u7684\u8fdc\u7a0b\u914d\u7f6e\uff01"})}async function d(e,t){_$$_36.info("\u5f00\u59cb\u540c\u6b65\u6240\u6709\u8fdc\u7a0b\u914d\u7f6e...");const r=_$$_36.read(s),n={};try{await Promise.all(Object.values(r).map(async e=>{if(e.sync){let t;switch(_$$_36.info(`\u6b63\u5728\u540c\u6b65\u4e91\u914d\u7f6e\uff1a${e.name}...`),e.type){case"subscription":t=_$$_36.read(o)[e.source];break;case"collection":t=_$$_36.read(a)[e.source];break;case"rule":t=_$$_36.read(u)[e.source]}const r=await g({type:e.type,item:t,platform:e.platform});n[e.name]={content:r}}}));const e=await m(n),i=JSON.parse(e.body);for(const t of Object.values(r))t.updated=(new Date).getTime(),t.url=i.files[t.name].raw_url.replace(/\/raw\/[^\/]*\/(.*)/,"/raw/$1");_$$_36.write(r,s),_$$_36.info("\u5168\u90e8\u8ba2\u9605\u540c\u6b65\u6210\u529f\uff01"),t.status(200).end()}catch(i){t.status(500).json({error:i}),_$$_36.info("\u540c\u6b65\u8ba2\u9605\u5931\u8d25\uff0c\u539f\u56e0\uff1a"+i)}}async function h(e,t){const r=e.params.name;_$$_36.info("\u6b63\u5728\u5220\u9664\u8fdc\u7a0b\u914d\u7f6e\uff1a"+r);const n=_$$_36.read(s);try{const e=n[r];if(!e)throw new Error(`\u8fdc\u7a0b\u914d\u7f6e\uff1a${r}\u4e0d\u5b58\u5728\uff01`);e.updated&&await m({filename:r,content:""}),delete n[r],_$$_36.write(n,s),t.json({status:"success"})}catch(o){delete n[r],_$$_36.write(n,s),t.status(500).json({status:"failed",message:`\u65e0\u6cd5\u5220\u9664\u8fdc\u7a0b\u914d\u7f6e\uff1a${r}, \u539f\u56e0\uff1a${o}`})}}function _(e,t){const r=_$$_36.read(s);t.json({status:"success",data:r})}async function m(e){const{gistToken:t}=_$$_36.read(c);return t?new _$gist_49({token:t,key:i}).upload(e):Promise.reject("\u672a\u8bbe\u7f6eGist Token\uff01")}async function g({type:e,item:t,platform:s,noProcessor:i}={platform:"JSON",noProcessor:!1}){if("subscription"===e){const e=t,n=await _$download_46(e.url,e.ua);let o=r.parse(n);i||(o=await r.process(o,e.process||[],s));const a={};for(const t of o){if(a[t.name]){_$$_36.notify("\ud83c\udf0d \u300e \ud835\udc7a\ud835\udc96\ud835\udc83-\ud835\udc7a\ud835\udc95\ud835\udc90\ud835\udc93\ud835\udc86 \u300f","\u26a0\ufe0f \u8ba2\u9605\u5305\u542b\u91cd\u590d\u8282\u70b9\uff01","\u8bf7\u4ed4\u7ec6\u68c0\u6d4b\u914d\u7f6e\uff01",{"media-url":"https://cdn3.iconfinder.com/data/icons/seo-outline-1/512/25_code_program_programming_develop_bug_search_developer-512.png"});break}a[t.name]=!0}return r.produce(o,s)}if("collection"===e){const e=_$$_36.read(o),n=t,a=n.subscriptions,u={};let c=0;await Promise.all(a.map(async t=>{const n=e[t];try{_$$_36.info(`\u6b63\u5728\u5904\u7406\u5b50\u8ba2\u9605\uff1a${n.name}...`);const e=await _$download_46(n.url,n.ua);let o=r.parse(e);i||(o=await r.process(o,n.process||[],s)),u[t]=o,c++,_$$_36.info(`\u2705 \u5b50\u8ba2\u9605\uff1a${n.name}\u52a0\u8f7d\u6210\u529f\uff0c\u8fdb\u5ea6--${100*(c/a.length).toFixed(1)}% `)}catch(o){c++,_$$_36.error(`\u274c \u5904\u7406\u7ec4\u5408\u8ba2\u9605\u4e2d\u7684\u5b50\u8ba2\u9605: ${n.name}\u65f6\u51fa\u73b0\u9519\u8bef\uff1a${o}\uff0c\u8be5\u8ba2\u9605\u5df2\u88ab\u8df3\u8fc7\uff01\u8fdb\u5ea6--${100*(c/a.length).toFixed(1)}%`)}}));let p=Array.prototype.concat.apply([],a.map(e=>u[e]));if(i||(p=await r.process(p,n.process||[],s)),0===p.length)throw new Error("\u7ec4\u5408\u8ba2\u9605\u4e2d\u4e0d\u542b\u6709\u6548\u8282\u70b9\uff01");const l={};for(const t of p){if(l[t.name]){_$$_36.notify("\ud83c\udf0d \u300e \ud835\udc7a\ud835\udc96\ud835\udc83-\ud835\udc7a\ud835\udc95\ud835\udc90\ud835\udc93\ud835\udc86 \u300f","\u26a0\ufe0f \u8ba2\u9605\u5305\u542b\u91cd\u590d\u8282\u70b9\uff01","\u8bf7\u4ed4\u7ec6\u68c0\u6d4b\u914d\u7f6e\uff01",{"media-url":"https://cdn3.iconfinder.com/data/icons/seo-outline-1/512/25_code_program_programming_develop_bug_search_developer-512.png"});break}l[t.name]=!0}return r.produce(p,s)}if("rule"===e){const e=t;let r=[];for(let t=0;t2147483647)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return t.__proto__=r.prototype,t}function r(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return s(e)}return n(e,t,r)}function n(t,n,o){if("string"==typeof t)return function(t,n){if("string"==typeof n&&""!==n||(n="utf8"),!r.isEncoding(n))throw new TypeError("Unknown encoding: "+n);var o=0|u(t,n),s=e(o),i=s.write(t,n);return i!==o&&(s=s.slice(0,i)),s}(t,n);if(ArrayBuffer.isView(t))return i(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(k(t,ArrayBuffer)||t&&k(t.buffer,ArrayBuffer))return function(e,t,n){if(t<0||e.byteLength=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+2147483647..toString(16)+" bytes");return 0|e}function u(e,t){if(r.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||k(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var n=e.length,o=arguments.length>2&&!0===arguments[2];if(!o&&0===n)return 0;for(var s=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return I(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return L(e).length;default:if(s)return o?-1:I(e).length;t=(""+t).toLowerCase(),s=!0}}function c(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function p(e,t,n,o,s){if(0===e.length)return-1;if("string"==typeof n?(o=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),x(n=+n)&&(n=s?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(s)return-1;n=e.length-1}else if(n<0){if(!s)return-1;n=0}if("string"==typeof t&&(t=r.from(t,o)),r.isBuffer(t))return 0===t.length?-1:l(e,t,n,o,s);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?s?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):l(e,[t],n,o,s);throw new TypeError("val must be string, number or Buffer")}function l(e,t,r,n,o){var s,i=1,a=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;i=2,a/=2,u/=2,r/=2}function c(e,t){return 1===i?e[t]:e.readUInt16BE(t*i)}if(o){var p=-1;for(s=r;sa&&(r=a-u),s=r;s>=0;s--){for(var l=!0,f=0;fo&&(n=o):n=o;var s=t.length;n>s/2&&(n=s/2);for(var i=0;i>8,o=r%256,s.push(o),s.push(n);return s}(t,e.length-r),e,r,n)}function y(e,t,r){return 0===t&&r===e.length?_$base64Js_1.fromByteArray(e):_$base64Js_1.fromByteArray(e.slice(t,r))}function $(e,t,r){r=Math.min(e.length,r);for(var n=[],o=t;o239?4:c>223?3:c>191?2:1;if(o+l<=r)switch(l){case 1:c<128&&(p=c);break;case 2:128==(192&(s=e[o+1]))&&(u=(31&c)<<6|63&s)>127&&(p=u);break;case 3:s=e[o+1],i=e[o+2],128==(192&s)&&128==(192&i)&&(u=(15&c)<<12|(63&s)<<6|63&i)>2047&&(u<55296||u>57343)&&(p=u);break;case 4:s=e[o+1],i=e[o+2],a=e[o+3],128==(192&s)&&128==(192&i)&&128==(192&a)&&(u=(15&c)<<18|(63&s)<<12|(63&i)<<6|63&a)>65535&&u<1114112&&(p=u)}null===p?(p=65533,l=1):p>65535&&(p-=65536,n.push(p>>>10&1023|55296),p=56320|1023&p),n.push(p),o+=l}return function(e){var t=e.length;if(t<=w)return String.fromCharCode.apply(String,e);for(var r="",n=0;nthis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return A(this,t,r);case"utf8":case"utf-8":return $(this,t,r);case"ascii":return E(this,t,r);case"latin1":case"binary":return S(this,t,r);case"base64":return y(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}.apply(this,arguments)},r.prototype.toLocaleString=r.prototype.toString,r.prototype.equals=function(e){if(!r.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===r.compare(this,e)},r.prototype.inspect=function(){var e="",r=t.INSPECT_MAX_BYTES;return e=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(e+=" ... "),""},r.prototype.compare=function(e,t,n,o,s){if(k(e,Uint8Array)&&(e=r.from(e,e.offset,e.byteLength)),!r.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===o&&(o=0),void 0===s&&(s=this.length),t<0||n>e.length||o<0||s>this.length)throw new RangeError("out of range index");if(o>=s&&t>=n)return 0;if(o>=s)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(s>>>=0)-(o>>>=0),a=(n>>>=0)-(t>>>=0),u=Math.min(i,a),c=this.slice(o,s),p=e.slice(t,n),l=0;l>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var o=this.length-t;if((void 0===r||r>o)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var s=!1;;)switch(n){case"hex":return f(this,e,t,r);case"utf8":case"utf-8":return d(this,e,t,r);case"ascii":return h(this,e,t,r);case"latin1":case"binary":return _(this,e,t,r);case"base64":return m(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return g(this,e,t,r);default:if(s)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),s=!0}},r.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var w=4096;function E(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;oo)&&(r=o);for(var s="",i=t;ir)throw new RangeError("Trying to access beyond buffer length")}function b(e,t,n,o,s,i){if(!r.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>s||te.length)throw new RangeError("Index out of range")}function T(e,t,r,n,o,s){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function R(e,t,r,n,o){return t=+t,r>>>=0,o||T(e,0,r,4),_$ieee754_3.write(e,t,r,n,23,4),r+4}function C(e,t,r,n,o){return t=+t,r>>>=0,o||T(e,0,r,8),_$ieee754_3.write(e,t,r,n,52,8),r+8}r.prototype.slice=function(e,t){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,r||v(e,t,this.length);for(var n=this[e],o=1,s=0;++s>>=0,t>>>=0,r||v(e,t,this.length);for(var n=this[e+--t],o=1;t>0&&(o*=256);)n+=this[e+--t]*o;return n},r.prototype.readUInt8=function(e,t){return e>>>=0,t||v(e,1,this.length),this[e]},r.prototype.readUInt16LE=function(e,t){return e>>>=0,t||v(e,2,this.length),this[e]|this[e+1]<<8},r.prototype.readUInt16BE=function(e,t){return e>>>=0,t||v(e,2,this.length),this[e]<<8|this[e+1]},r.prototype.readUInt32LE=function(e,t){return e>>>=0,t||v(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},r.prototype.readUInt32BE=function(e,t){return e>>>=0,t||v(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},r.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||v(e,t,this.length);for(var n=this[e],o=1,s=0;++s=(o*=128)&&(n-=Math.pow(2,8*t)),n},r.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||v(e,t,this.length);for(var n=t,o=1,s=this[e+--n];n>0&&(o*=256);)s+=this[e+--n]*o;return s>=(o*=128)&&(s-=Math.pow(2,8*t)),s},r.prototype.readInt8=function(e,t){return e>>>=0,t||v(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},r.prototype.readInt16LE=function(e,t){e>>>=0,t||v(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},r.prototype.readInt16BE=function(e,t){e>>>=0,t||v(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},r.prototype.readInt32LE=function(e,t){return e>>>=0,t||v(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},r.prototype.readInt32BE=function(e,t){return e>>>=0,t||v(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},r.prototype.readFloatLE=function(e,t){return e>>>=0,t||v(e,4,this.length),_$ieee754_3.read(this,e,!0,23,4)},r.prototype.readFloatBE=function(e,t){return e>>>=0,t||v(e,4,this.length),_$ieee754_3.read(this,e,!1,23,4)},r.prototype.readDoubleLE=function(e,t){return e>>>=0,t||v(e,8,this.length),_$ieee754_3.read(this,e,!0,52,8)},r.prototype.readDoubleBE=function(e,t){return e>>>=0,t||v(e,8,this.length),_$ieee754_3.read(this,e,!1,52,8)},r.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||b(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,s=0;for(this[t]=255&e;++s>>=0,r>>>=0,n||b(this,e,t,r,Math.pow(2,8*r)-1,0);var o=r-1,s=1;for(this[t+o]=255&e;--o>=0&&(s*=256);)this[t+o]=e/s&255;return t+r},r.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,1,255,0),this[t]=255&e,t+1},r.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},r.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},r.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},r.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},r.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);b(this,e,t,r,o-1,-o)}var s=0,i=1,a=0;for(this[t]=255&e;++s>0)-a&255;return t+r},r.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);b(this,e,t,r,o-1,-o)}var s=r-1,i=1,a=0;for(this[t+s]=255&e;--s>=0&&(i*=256);)e<0&&0===a&&0!==this[t+s+1]&&(a=1),this[t+s]=(e/i>>0)-a&255;return t+r},r.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},r.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},r.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},r.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},r.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||b(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},r.prototype.writeFloatLE=function(e,t,r){return R(this,e,t,!0,r)},r.prototype.writeFloatBE=function(e,t,r){return R(this,e,t,!1,r)},r.prototype.writeDoubleLE=function(e,t,r){return C(this,e,t,!0,r)},r.prototype.writeDoubleBE=function(e,t,r){return C(this,e,t,!1,r)},r.prototype.copy=function(e,t,n,o){if(!r.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),o||0===o||(o=this.length),t>=e.length&&(t=e.length),t||(t=0),o>0&&o=this.length)throw new RangeError("Index out of range");if(o<0)throw new RangeError("sourceEnd out of bounds");o>this.length&&(o=this.length),e.length-t=0;--i)e[i+t]=this[i+n];else Uint8Array.prototype.set.call(e,this.subarray(n,o),t);return s},r.prototype.fill=function(e,t,n,o){if("string"==typeof e){if("string"==typeof t?(o=t,t=0,n=this.length):"string"==typeof n&&(o=n,n=this.length),void 0!==o&&"string"!=typeof o)throw new TypeError("encoding must be a string");if("string"==typeof o&&!r.isEncoding(o))throw new TypeError("Unknown encoding: "+o);if(1===e.length){var s=e.charCodeAt(0);("utf8"===o&&s<128||"latin1"===o)&&(e=s)}}else"number"==typeof e&&(e&=255);if(t<0||this.length>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(i+1===n){(t-=3)>-1&&s.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&s.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&s.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;s.push(r)}else if(r<2048){if((t-=2)<0)break;s.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;s.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return s}function L(e){return _$base64Js_1.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(N,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function P(e,t,r,n){for(var o=0;o=t.length||o>=e.length);++o)t[o+r]=e[o];return o}function k(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function x(e){return e!=e}}).call(this)}).call(this,_$buffer_2({}).Buffer)})),_$express_47=createModuleFactory((function(module,exports){const{ENV:ENV}=_$openApi_51;function express({port:port}={port:3e3}){const{isNode:isNode}=ENV(),DEFAULT_HEADERS={"Content-Type":"text/plain;charset=UTF-8","Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST,GET,OPTIONS,PATCH,PUT,DELETE","Access-Control-Allow-Headers":"Origin, X-Requested-With, Content-Type, Accept"};if(isNode){const express_=eval('require("express")'),bodyParser=eval('require("body-parser")'),app=express_();return app.use(bodyParser.json({verify:rawBodySaver})),app.use(bodyParser.urlencoded({verify:rawBodySaver,extended:!0})),app.use(bodyParser.raw({verify:rawBodySaver,type:"*/*"})),app.use((e,t,r)=>{t.set(DEFAULT_HEADERS),r()}),app.start=()=>{app.listen(port,()=>{_$$_36.log("Express started on port: "+port)})},app}const handlers=[],METHODS_NAMES=["GET","POST","PUT","DELETE","PATCH","OPTIONS","HEAD'","ALL"],dispatch=(e,t=0)=>{let{method:r,url:n,headers:o,body:s}=e;/json/i.test(o["Content-Type"])&&(s=JSON.parse(s)),r=r.toUpperCase();const{path:i,query:a}=extractURL(n);let u,c=null,p=0;for(u=t;up&&(c=handlers[u],p=e.split("/").length)}if(c){const e=()=>{dispatch(r,n,u)},t={method:r,url:n,path:i,query:a,params:extractPathParams(c.pattern,i),headers:o,body:s},p=Response(),f=c.callback,d=e=>{p.status(500).json({status:"failed",message:"Internal Server Error: "+e})};if("AsyncFunction"===f.constructor.name)f(t,p,e).catch(d);else try{f(t,p,e)}catch(l){d(l)}}else Response().status(404).json({status:"failed",message:"ERROR: 404 not found"})},app={};return METHODS_NAMES.forEach(e=>{app[e.toLowerCase()]=(t,r)=>{handlers.push({method:e,pattern:t,callback:r})}}),app.route=e=>{const t={};return METHODS_NAMES.forEach(r=>{t[r.toLowerCase()]=n=>(handlers.push({method:r,pattern:e,callback:n}),t)}),t},app.start=()=>{dispatch($request)},app;function rawBodySaver(e,t,r,n){r&&r.length&&(e.rawBody=r.toString(n||"utf8"))}function Response(){let e=200;const{isQX:t,isLoon:r,isSurge:n}=ENV(),o=DEFAULT_HEADERS,s={200:"HTTP/1.1 200 OK",201:"HTTP/1.1 201 Created",302:"HTTP/1.1 302 Found",307:"HTTP/1.1 307 Temporary Redirect",308:"HTTP/1.1 308 Permanent Redirect",404:"HTTP/1.1 404 Not Found",500:"HTTP/1.1 500 Internal Server Error"};return new class{status(t){return e=t,this}send(i=""){const a={status:t?s[e]:e,body:i,headers:o};t?$done(a):(r||n)&&$done({response:a})}end(){this.send()}html(e){this.set("Content-Type","text/html;charset=UTF-8"),this.send(e)}json(e){this.set("Content-Type","application/json;charset=UTF-8"),this.send(JSON.stringify(e))}set(e,t){return o[e]=t,this}}}function patternMatched(e,t){if(e instanceof RegExp&&e.test(t))return!0;if("/"===e)return!0;if(-1===e.indexOf(":")){const r=t.split("/"),n=e.split("/");for(let e=0;e{},onResponse:e=>e,onTimeout:()=>{},...options.events};let worker,timeoutid;events.onRequest(method,options),isQX?worker=$task.fetch({method:method,url:options.url,headers:options.headers,body:options.body}):(isLoon||isSurge||isNode)&&(worker=new Promise((resolve,reject)=>{const request=isNode?eval("require('request')"):$httpClient;request[method.toLowerCase()](options,(e,t,r)=>{e?reject(e):resolve({statusCode:t.status||t.statusCode,headers:t.headers,body:r})})}));const timer=timeout?new Promise((e,t)=>{timeoutid=setTimeout(()=>(events.onTimeout(),t(`${method} URL: ${options.url} exceeds the timeout ${timeout} ms`)),timeout)}):null;return(timer?Promise.race([timer,worker]).then(e=>(clearTimeout(timeoutid),e)):worker).then(e=>events.onResponse(e))}const http={};return methods.forEach(e=>http[e.toLowerCase()]=t=>send(e,t)),http}function API(name="untitled",debug=!1){const{isQX:isQX,isLoon:isLoon,isSurge:isSurge,isNode:isNode}=ENV();return new class{constructor(name,debug){this.name=name,this.debug=debug,this.http=HTTP(),this.env=ENV(),this.node=(()=>{if(isNode){const fs=eval("require('fs')");return{fs:fs}}return null})(),this.initCache();const delay=(e,t)=>new Promise((function(r){setTimeout(r.bind(null,t),e)}));Promise.prototype.delay=function(e){return this.then((function(t){return delay(e,t)}))}}initCache(){if(isQX&&(this.cache=JSON.parse($prefs.valueForKey(this.name)||"{}")),(isLoon||isSurge)&&(this.cache=JSON.parse($persistentStore.read(this.name)||"{}")),isNode){let e="root.json";this.node.fs.existsSync(e)||this.node.fs.writeFileSync(e,JSON.stringify({}),{flag:"wx"},e=>console.log(e)),this.root={},e=this.name+".json",this.node.fs.existsSync(e)?this.cache=JSON.parse(this.node.fs.readFileSync(this.name+".json")):(this.node.fs.writeFileSync(e,JSON.stringify({}),{flag:"wx"},e=>console.log(e)),this.cache={})}}persistCache(){const e=JSON.stringify(this.cache,null,2);isQX&&$prefs.setValueForKey(e,this.name),(isLoon||isSurge)&&$persistentStore.write(e,this.name),isNode&&(this.node.fs.writeFileSync(this.name+".json",e,{flag:"w"},e=>console.log(e)),this.node.fs.writeFileSync("root.json",JSON.stringify(this.root,null,2),{flag:"w"},e=>console.log(e)))}write(e,t){if(this.log("SET "+t),-1!==t.indexOf("#")){if(t=t.substr(1),isSurge||isLoon)return $persistentStore.write(e,t);if(isQX)return $prefs.setValueForKey(e,t);isNode&&(this.root[t]=e)}else this.cache[t]=e;this.persistCache()}read(e){return this.log("READ "+e),-1===e.indexOf("#")?this.cache[e]:(e=e.substr(1),isSurge||isLoon?$persistentStore.read(e):isQX?$prefs.valueForKey(e):isNode?this.root[e]:void 0)}delete(e){if(this.log("DELETE "+e),-1!==e.indexOf("#")){if(e=e.substr(1),isSurge||isLoon)return $persistentStore.write(null,e);if(isQX)return $prefs.removeValueForKey(e);isNode&&delete this.root[e]}else delete this.cache[e];this.persistCache()}notify(e,t="",r="",n={}){const o=n["open-url"],s=n["media-url"];if(isQX&&$notify(e,t,r,n),isSurge&&$notification.post(e,t,r+""+(s?"\n\u591a\u5a92\u4f53:"+s:""),{url:o}),isLoon){let n={};o&&(n.openUrl=o),s&&(n.mediaUrl=s),"{}"===JSON.stringify(n)?$notification.post(e,t,r):$notification.post(e,t,r,n)}if(isNode){const n=r+(o?"\n\u70b9\u51fb\u8df3\u8f6c: "+o:"")+(s?"\n\u591a\u5a92\u4f53: "+s:"");console.log(`${e}\n${t}\n${n}\n\n`)}}log(e){this.debug&&console.log(`[${this.name}] LOG: ${e}`)}info(e){console.log(`[${this.name}] INFO: ${e}`)}error(e){console.log(`[${this.name}] ERROR: ${e}`)}wait(e){return new Promise(t=>setTimeout(t,e))}done(e={}){isQX||isLoon||isSurge?$done(e):isNode&&"undefined"!=typeof $context&&($context.headers=e.headers,$context.statusCode=e.statusCode,$context.body=e.body)}}(name,debug)}var _$openApi_51={HTTP:HTTP,ENV:ENV,API:API};const{API:__API_36}=_$openApi_51,$=__API_36("sub-store");var _$$_36=$;const{HTTP:__HTTP_48}=_$openApi_51;var _$geo_48={getFlag:function(e){const t={"\ud83c\udde6\ud83c\uddff":["\u963f\u585e\u62dc\u7586"],"\ud83c\udde6\ud83c\uddf9":["\u5965\u5730\u5229","\u5967\u5730\u5229","Austria","\u7ef4\u4e5f\u7eb3"],"\ud83c\udde6\ud83c\uddfa":["AU","Australia","Sydney","\u6fb3\u5927\u5229\u4e9a","\u6fb3\u6d32","\u58a8\u5c14\u672c","\u6089\u5c3c","\u571f\u6fb3","\u4eac\u6fb3","\u5ee3\u6fb3","\u6eec\u6fb3","\u6caa\u6fb3","\u5e7f\u6fb3"],"\ud83c\udde7\ud83c\uddea":["BE","\u6bd4\u5229\u6642","\u6bd4\u5229\u65f6"],"\ud83c\udde7\ud83c\uddec":["\u4fdd\u52a0\u5229\u4e9a","\u4fdd\u52a0\u5229\u4e9e","Bulgaria"],"\ud83c\udde7\ud83c\udded":["BH","\u5df4\u6797"],"\ud83c\udde7\ud83c\udde9":["BD","\u5b5f\u52a0\u62c9"],"\ud83c\uddf5\ud83c\uddf0":["\u5df4\u57fa\u65af\u5766"],"\ud83c\uddf0\ud83c\udded":["\u67ec\u57d4\u5be8"],"\ud83c\uddfa\ud83c\udde6":["\u70cf\u514b\u862d","\u4e4c\u514b\u5170"],"\ud83c\udded\ud83c\uddf7":["\u514b\u7f57\u5730\u4e9a","HR","\u514b\u7f85\u5730\u4e9e"],"\ud83c\udde8\ud83c\udde6":["Canada","CANADA","CAN","Waterloo","\u52a0\u62ff\u5927","\u8499\u7279\u5229\u5c14","\u6e29\u54e5\u534e","\u6953\u8449","\u67ab\u53f6","\u6ed1\u94c1\u5362","\u591a\u4f26\u591a","CA"],"\ud83c\udde8\ud83c\udded":["\u745e\u58eb","\u82cf\u9ece\u4e16","Switzerland","Zurich"],"\ud83c\uddf3\ud83c\uddec":["\u5c3c\u65e5\u5229\u4e9a","NG","\u5c3c\u65e5\u5229\u4e9e"],"\ud83c\udde8\ud83c\uddff":["Czechia","\u6377\u514b"],"\ud83c\uddf8\ud83c\uddf0":["\u65af\u6d1b\u4f10\u514b","SK"],"\ud83c\uddf7\ud83c\uddf8":["RS","\u585e\u5c14\u7ef4\u4e9a"],"\ud83c\uddf2\ud83c\udde9":["\u6469\u723e\u591a\u74e6","MD","\u6469\u5c14\u591a\u74e6"],"\ud83c\udde9\ud83c\uddea":["DE","German","GERMAN","\u5fb7\u56fd","\u5fb7\u570b","\u6cd5\u5170\u514b\u798f","\u4eac\u5fb7","\u6eec\u5fb7","\u5ee3\u5fb7","\u6caa\u5fb7","\u5e7f\u5fb7","Frankfurt"],"\ud83c\udde9\ud83c\uddf0":["DK","DNK","\u4e39\u9ea6","\u4e39\u9ea5"],"\ud83c\uddea\ud83c\uddf8":["ES","\u897f\u73ed\u7259","Spain"],"\ud83c\uddea\ud83c\uddfa":["EU","\u6b27\u76df","\u6b27\u7f57\u5df4"],"\ud83c\uddeb\ud83c\uddee":["Finland","\u82ac\u5170","\u82ac\u862d","\u8d6b\u5c14\u8f9b\u57fa"],"\ud83c\uddeb\ud83c\uddf7":["FR","France","\u6cd5\u56fd","\u6cd5\u570b","\u5df4\u9ece"],"\ud83c\uddec\ud83c\udde7":["UK","GB","England","United Kingdom","\u82f1\u56fd","\u4f26\u6566","\u82f1","London"],"\ud83c\uddf2\ud83c\uddf4":["MO","Macao","\u6fb3\u95e8","\u6fb3\u9580","CTM"],"\ud83c\uddf0\ud83c\uddff":["\u54c8\u8428\u514b\u65af\u5766","\u54c8\u8428\u514b"],"\ud83c\udded\ud83c\uddfa":["\u5308\u7259\u5229","Hungary"],"\ud83c\udded\ud83c\uddf0":["HK","Hongkong","Hong Kong","HongKong","HONG KONG","\u9999\u6e2f","\u6df1\u6e2f","\u6caa\u6e2f","\u547c\u6e2f","HKT","HKBN","HGC","WTT","CMI","\u7a57\u6e2f","\u4eac\u6e2f","\u6e2f"],"\ud83c\uddee\ud83c\udde9":["Indonesia","\u5370\u5c3c","\u5370\u5ea6\u5c3c\u897f\u4e9a","\u96c5\u52a0\u8fbe"],"\ud83c\uddee\ud83c\uddea":["Ireland","IRELAND","\u7231\u5c14\u5170","\u611b\u723e\u862d","\u90fd\u67cf\u6797"],"\ud83c\uddee\ud83c\uddf1":["Israel","\u4ee5\u8272\u5217"],"\ud83c\uddee\ud83c\uddf3":["India","IND","INDIA","\u5370\u5ea6","\u5b5f\u4e70","MFumbai"],"\ud83c\uddee\ud83c\uddf8":["IS","ISL","\u51b0\u5c9b","\u51b0\u5cf6"],"\ud83c\uddf0\ud83c\uddf5":["KP","\u671d\u9c9c"],"\ud83c\uddf0\ud83c\uddf7":["KR","Korea","KOR","\u97e9\u56fd","\u9996\u5c14","\u97e9","\u97d3","\u6625\u5ddd","Chuncheon","Seoul"],"\ud83c\uddf1\ud83c\uddfa":["\u5362\u68ee\u5821"],"\ud83c\uddf1\ud83c\uddfb":["Latvia","Latvija","\u62c9\u8131\u7ef4\u4e9a"],"\ud83c\uddf2\ud83c\uddfd":["MEX","MX","\u58a8\u897f\u54e5"],"\ud83c\uddf2\ud83c\uddfe":["MY","Malaysia","MALAYSIA","\u9a6c\u6765\u897f\u4e9a","\u5927\u99ac","\u99ac\u4f86\u897f\u4e9e","\u5409\u9686\u5761"],"\ud83c\uddf3\ud83c\uddf1":["NL","Netherlands","\u8377\u5170","\u8377\u862d","\u5c3c\u5fb7\u862d","\u963f\u59c6\u65af\u7279\u4e39"],"\ud83c\uddf3\ud83c\uddf5":["\u5c3c\u6cca\u5c14"],"\ud83c\uddf5\ud83c\udded":["PH","Philippines","\u83f2\u5f8b\u5bbe","\u83f2\u5f8b\u8cd3"],"\ud83c\uddf5\ud83c\uddf7":["PR","\u6ce2\u591a\u9ece\u5404"],"\ud83c\uddf7\ud83c\uddf4":["RO","\u7f57\u9a6c\u5c3c\u4e9a"],"\ud83c\uddf7\ud83c\uddfa":["RU","Russia","\u4fc4\u7f57\u65af","\u4fc4\u56fd","\u4fc4\u7f85\u65af","\u4f2f\u529b","\u83ab\u65af\u79d1","\u5723\u5f7c\u5f97\u5821","\u897f\u4f2f\u5229\u4e9a","\u65b0\u897f\u4f2f\u5229\u4e9a","\u4eac\u4fc4","\u676d\u4fc4","\u5ee3\u4fc4","\u6eec\u4fc4","\u5e7f\u4fc4","\u6caa\u4fc4","Moscow"],"\ud83c\uddf8\ud83c\udde6":["\u6c99\u7279"],"\ud83c\uddf8\ud83c\uddea":["SE","Sweden","\u745e\u5178"],"\ud83c\uddf2\ud83c\uddf9":["\u9a6c\u8033\u4ed6"],"\ud83c\uddf2\ud83c\udde6":["MA","\u6469\u6d1b\u54e5"],"\ud83c\uddf8\ud83c\uddec":["SG","Singapore","SINGAPORE","\u65b0\u52a0\u5761","\u72ee\u57ce","\u6caa\u65b0","\u4eac\u65b0","\u6cc9\u65b0","\u7a57\u65b0","\u6df1\u65b0","\u676d\u65b0","\u5e7f\u65b0","\u5ee3\u65b0","\u6eec\u65b0"],"\ud83c\uddf9\ud83c\udded":["TH","Thailand","\u6cf0\u56fd","\u6cf0\u570b","\u66fc\u8c37"],"\ud83c\uddf9\ud83c\uddf7":["TR","Turkey","\u571f\u8033\u5176","\u4f0a\u65af\u5766\u5e03\u5c14"],"\ud83c\uddf9\ud83c\uddfc":["TW","Taiwan","TAIWAN","\u53f0\u6e7e","\u53f0\u5317","\u53f0\u4e2d","\u65b0\u5317","\u5f70\u5316","CHT","\u53f0","HINET","Taipei"],"\ud83c\uddfa\ud83c\uddf8":["US","USA","America","United States","\u7f8e\u56fd","\u7f8e","\u4eac\u7f8e","\u6ce2\u7279\u5170","\u8fbe\u62c9\u65af","\u4fc4\u52d2\u5188","\u51e4\u51f0\u57ce","\u8d39\u5229\u8499","\u7845\u8c37","\u77fd\u8c37","\u62c9\u65af\u7ef4\u52a0\u65af","\u6d1b\u6749\u77f6","\u5723\u4f55\u585e","\u5723\u514b\u62c9\u62c9","\u897f\u96c5\u56fe","\u829d\u52a0\u54e5","\u6caa\u7f8e","\u54e5\u4f26\u5e03","\u7ebd\u7ea6","Los Angeles","San Jose","Sillicon Valley","Michigan"],"\ud83c\uddfb\ud83c\uddf3":["VN","\u8d8a\u5357","\u80e1\u5fd7\u660e\u5e02"],"\ud83c\uddfb\ud83c\uddea":["VE","\u59d4\u5185\u745e\u62c9"],"\ud83c\uddee\ud83c\uddf9":["Italy","IT","Nachash","\u610f\u5927\u5229","\u7c73\u5170","\u7fa9\u5927\u5229"],"\ud83c\uddff\ud83c\udde6":["South Africa","\u5357\u975e"],"\ud83c\udde6\ud83c\uddea":["United Arab Emirates","\u963f\u8054\u914b","\u8fea\u62dc","AE"],"\ud83c\udde7\ud83c\uddf7":["BR","Brazil","\u5df4\u897f","\u5723\u4fdd\u7f57"],"\ud83c\uddef\ud83c\uddf5":["JP","Japan","JAPAN","\u65e5\u672c","\u4e1c\u4eac","\u5927\u962a","\u57fc\u7389","\u6caa\u65e5","\u7a57\u65e5","\u5ddd\u65e5","\u4e2d\u65e5","\u6cc9\u65e5","\u676d\u65e5","\u6df1\u65e5","\u8fbd\u65e5","\u5e7f\u65e5","\u5927\u5742","Osaka","Tokyo"],"\ud83c\udde6\ud83c\uddf7":["AR","\u963f\u6839\u5ef7"],"\ud83c\uddf3\ud83c\uddf4":["Norway","\u632a\u5a01","NO"],"\ud83c\udde8\ud83c\uddf3":["CN","China","\u56de\u56fd","\u4e2d\u56fd","\u4e2d\u570b","\u6c5f\u82cf","\u5317\u4eac","\u4e0a\u6d77","\u5e7f\u5dde","\u6df1\u5733","\u676d\u5dde","\u5f90\u5dde","\u9752\u5c9b","\u5b81\u6ce2","\u9547\u6c5f","back"],"\ud83c\uddf5\ud83c\uddf1":["PL","POL","\u6ce2\u5170","\u6ce2\u862d"],"\ud83c\udde8\ud83c\uddf1":["\u667a\u5229"],"\ud83c\uddf3\ud83c\uddff":["\u65b0\u897f\u862d","\u65b0\u897f\u5170"],"\ud83c\uddec\ud83c\uddf7":["\u5e0c\u814a","\u5e0c\u81d8"],"\ud83c\uddea\ud83c\uddec":["\u57c3\u53ca"],"\ud83c\udde8\ud83c\uddfe":["CY","\u585e\u6d66\u8def\u65af"],"\ud83c\udde8\ud83c\uddf7":["CR","\u54e5\u65af\u8fbe\u9ece\u52a0"],"\ud83c\uddf8\ud83c\uddee":["SI","\u65af\u6d1b\u6587\u5c3c\u4e9a"],"\ud83c\uddf1\ud83c\uddf9":["LT","\u7acb\u9676\u5b9b"],"\ud83c\uddf5\ud83c\udde6":["PA","\u5df4\u62ff\u9a6c"],"\ud83c\uddf9\ud83c\uddf3":["TN","\u7a81\u5c3c\u65af"],"\ud83c\uddee\ud83c\uddf2":["\u9a6c\u6069\u5c9b","\u99ac\u6069\u5cf6"],"\ud83c\udde7\ud83c\uddfe":["BY","\u767d\u4fc4","\u767d\u4fc4\u7f57\u65af"],"\ud83c\uddf5\ud83c\uddf9":["\u8461\u8404\u7259"],"\ud83c\uddf0\ud83c\uddea":["KE","\u80af\u5c3c\u4e9a"],"\ud83c\uddf0\ud83c\uddec":["KG","\u5409\u5c14\u5409\u65af\u5766"],"\ud83c\uddef\ud83c\uddf4":["JO","\u7ea6\u65e6"],"\ud83c\uddfa\ud83c\uddfe":["UY","\u4e4c\u62c9\u572d"],"\ud83c\uddf2\ud83c\uddf3":["\u8499\u53e4"],"\ud83c\uddee\ud83c\uddf7":["IR","\u4f0a\u6717"],"\ud83c\uddf5\ud83c\uddea":["\u79d8\u9c81","\u7955\u9b6f"],"\ud83c\udde8\ud83c\uddf4":["\u54e5\u4f26\u6bd4\u4e9a"],"\ud83c\uddea\ud83c\uddea":["\u7231\u6c99\u5c3c\u4e9a"],"\ud83c\uddea\ud83c\udde8":["EC","\u5384\u74dc\u591a\u5c14"],"\ud83c\uddf2\ud83c\uddf0":["\u9a6c\u5176\u987f","\u99ac\u5176\u9813"],"\ud83c\udde7\ud83c\udde6":["\u6ce2\u9ed1\u5171\u548c\u56fd","\u6ce2\u9ed1"],"\ud83c\uddec\ud83c\uddea":["\u683c\u9b6f\u5409\u4e9e","\u683c\u9c81\u5409\u4e9a"],"\ud83c\udde6\ud83c\uddf1":["\u963f\u723e\u5df4\u5c3c\u4e9e","\u963f\u5c14\u5df4\u5c3c\u4e9a"],"\ud83c\udff3\ufe0f\u200d\ud83c\udf08":["\u6d41\u91cf","\u65f6\u95f4","\u5e94\u6025","\u8fc7\u671f","Bandwidth","expire"]};for(let r of Object.keys(t))if(t[r].some(t=>-1!==e.indexOf(t)))return r;return(e.match(/[\uD83C][\uDDE6-\uDDFF][\uD83C][\uDDE6-\uDDFF]/)||[])[0]||"\ud83c\udff4\u200d\u2620\ufe0f"},IP_API:async function(e,t){const r=decodeURIComponent(e.params.server),n=__HTTP_48(),o=await n.get(`http://ip-api.com/json/${r}?lang=zh-CN`).then(e=>JSON.parse(e.body));t.json(o)}};const{HTTP:__HTTP_49}=_$openApi_51;var _$gist_49=function({token:e,key:t}){const r=__HTTP_49({baseURL:"https://api.github.com",headers:{Authorization:"token "+e,"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/537.36"},events:{onResponse:e=>/^[45]/.test(String(e.statusCode))?Promise.reject("ERROR: "+JSON.parse(e.body).message):e}});async function n(){return r.get("/gists").then(e=>{const r=JSON.parse(e.body);for(let n of r)if(n.description===t)return n.id;return-1})}this.upload=async function(e){const o=await n();return-1===o?r.post({url:"/gists",body:JSON.stringify({description:t,public:!1,files:e})}):r.patch({url:"/gists/"+o,body:JSON.stringify({files:e})})},this.download=async function(e){const t=await n();if(-1===t)return Promise.reject("\u672a\u627e\u5230Gist\u5907\u4efd\uff01");try{const{files:n}=await r.get("/gists/"+t).then(e=>JSON.parse(e.body)),o=n[e].raw_url;return await r.get(o).then(e=>e.body)}catch(o){return Promise.reject(o)}}},_$constants_41={SETTINGS_KEY:"settings",SUBS_KEY:"subs",COLLECTIONS_KEY:"collections",RULES_KEY:"rules",BUILT_IN_KEY:"builtin",ARTIFACTS_KEY:"artifacts",GIST_BACKUP_KEY:"Auto Generated Sub-Store Backup",GIST_BACKUP_FILE_NAME:"Sub-Store",ARTIFACT_REPOSITORY_KEY:"Sub-Store Artifacts Repository"};const{HTTP:__HTTP_46}=_$openApi_51,cache=new Map;var _$download_46=async function(e,t){const r=(t=t||"Quantumult%20X/1.0.29 (iPhone14,5; iOS 15.4.1)")+e;if(cache.has(r))return cache.get(r);const n=__HTTP_46({headers:{"User-Agent":t}}),o=new Promise((t,r)=>{n.get(e).then(e=>{const n=e.body;0===n.replace(/\s/g,"").length?r(new Error("\u8ba2\u9605\u5185\u5bb9\u4e3a\u7a7a\uff01")):t(n)})});return cache[r]=o,o},_$common_7={};function isNothing(e){return null==e}_$common_7.isNothing=isNothing,_$common_7.isObject=function(e){return"object"==typeof e&&null!==e},_$common_7.toArray=function(e){return Array.isArray(e)?e:isNothing(e)?[]:[e]},_$common_7.repeat=function(e,t){var r,n="";for(r=0;r0&&-1==="\0\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(n-1));)if(n-=1,this.position-n>t/2-1){r=" ... ",n+=5;break}for(o="",s=this.position;st/2-1){o=" ... ",s-=5;break}return i=this.buffer.slice(n,s),_$common_7.repeat(" ",e)+r+i+o+"\n"+_$common_7.repeat(" ",e+this.position-n+r.length)+"^"},Mark.prototype.toString=function(e){var t,r="";return this.name&&(r+='in "'+this.name+'" '),r+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet())&&(r+=":\n"+t),r},_$mark_11=Mark;var TYPE_CONSTRUCTOR_OPTIONS=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],YAML_NODE_KINDS=["scalar","sequence","mapping"],_$type_18=function(e,t){var r,n;if(t=t||{},Object.keys(t).forEach((function(t){if(-1===TYPE_CONSTRUCTOR_OPTIONS.indexOf(t))throw new _$exception_9('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')})),this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.defaultStyle=t.defaultStyle||null,this.styleAliases=(r=t.styleAliases||null,n={},null!==r&&Object.keys(r).forEach((function(e){r[e].forEach((function(t){n[String(t)]=e}))})),n),-1===YAML_NODE_KINDS.indexOf(this.kind))throw new _$exception_9('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')},_$schema_12={};function compileList(e,t,r){var n=[];return e.include.forEach((function(e){r=compileList(e,t,r)})),e[t].forEach((function(e){r.forEach((function(t,r){t.tag===e.tag&&t.kind===e.kind&&n.push(r)})),r.push(e)})),r.filter((function(e,t){return-1===n.indexOf(t)}))}function Schema(e){this.include=e.include||[],this.implicit=e.implicit||[],this.explicit=e.explicit||[],this.implicit.forEach((function(e){if(e.loadKind&&"scalar"!==e.loadKind)throw new _$exception_9("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")})),this.compiledImplicit=compileList(this,"implicit",[]),this.compiledExplicit=compileList(this,"explicit",[]),this.compiledTypeMap=function(){var e,t,r={scalar:{},sequence:{},mapping:{},fallback:{}};function n(e){r[e.kind][e.tag]=r.fallback[e.tag]=e}for(e=0,t=arguments.length;e=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0"+e.toString(8):"-0"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),YAML_FLOAT_PATTERN=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),SCIENTIFIC_WITHOUT_DOT=/^[-+]?[0-9]+e/,_$float_21=new _$type_18("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!YAML_FLOAT_PATTERN.test(e)||"_"===e[e.length-1])},construct:function(e){var t,r,n,o;return r="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,o=[],"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===r?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:t.indexOf(":")>=0?(t.split(":").forEach((function(e){o.unshift(parseFloat(e,10))})),t=0,n=1,o.forEach((function(e){t+=e*n,n*=60})),r*t):r*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||_$common_7.isNegativeZero(e))},represent:function(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(_$common_7.isNegativeZero(e))return"-0.0";return r=e.toString(10),SCIENTIFIC_WITHOUT_DOT.test(r)?r.replace("e",".e"):r},defaultStyle:"lowercase"}),_$json_17=new _$schema_12({include:[_$failsafe_16],implicit:[_$null_28,_$bool_20,_$int_22,_$float_21]}),_$core_13=new _$schema_12({include:[_$json_17]}),YAML_DATE_REGEXP=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),YAML_TIMESTAMP_REGEXP=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),_$timestamp_34=new _$type_18("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(e){return null!==e&&(null!==YAML_DATE_REGEXP.exec(e)||null!==YAML_TIMESTAMP_REGEXP.exec(e))},construct:function(e){var t,r,n,o,s,i,a,u,c=0,p=null;if(null===(t=YAML_DATE_REGEXP.exec(e))&&(t=YAML_TIMESTAMP_REGEXP.exec(e)),null===t)throw new Error("Date resolve error");if(r=+t[1],n=+t[2]-1,o=+t[3],!t[4])return new Date(Date.UTC(r,n,o));if(s=+t[4],i=+t[5],a=+t[6],t[7]){for(c=t[7].slice(0,3);c.length<3;)c+="0";c=+c}return t[9]&&(p=6e4*(60*+t[10]+ +(t[11]||0)),"-"===t[9]&&(p=-p)),u=new Date(Date.UTC(r,n,o,s,i,a,c)),p&&u.setTime(u.getTime()-p),u},instanceOf:Date,represent:function(e){return e.toISOString()}}),_$merge_27=new _$type_18("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(e){return"<<"===e||null===e}}),NodeBuffer;try{var _require=require;NodeBuffer=_require("buffer").Buffer}catch(__){}var BASE64_MAP="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",_$binary_19=new _$type_18("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,r,n=0,o=e.length,s=BASE64_MAP;for(r=0;r64)){if(t<0)return!1;n+=6}return n%8==0},construct:function(e){var t,r,n=e.replace(/[\r\n=]/g,""),o=n.length,s=BASE64_MAP,i=0,a=[];for(t=0;t>16&255),a.push(i>>8&255),a.push(255&i)),i=i<<6|s.indexOf(n.charAt(t));return 0==(r=o%4*6)?(a.push(i>>16&255),a.push(i>>8&255),a.push(255&i)):18===r?(a.push(i>>10&255),a.push(i>>2&255)):12===r&&a.push(i>>4&255),NodeBuffer?NodeBuffer.from?NodeBuffer.from(a):new NodeBuffer(a):a},predicate:function(e){return NodeBuffer&&NodeBuffer.isBuffer(e)},represent:function(e){var t,r,n="",o=0,s=e.length,i=BASE64_MAP;for(t=0;t>18&63],n+=i[o>>12&63],n+=i[o>>6&63],n+=i[63&o]),o=(o<<8)+e[t];return 0==(r=s%3)?(n+=i[o>>18&63],n+=i[o>>12&63],n+=i[o>>6&63],n+=i[63&o]):2===r?(n+=i[o>>10&63],n+=i[o>>4&63],n+=i[o<<2&63],n+=i[64]):1===r&&(n+=i[o>>2&63],n+=i[o<<4&63],n+=i[64],n+=i[64]),n}}),_hasOwnProperty=Object.prototype.hasOwnProperty,_toString=Object.prototype.toString,_$omap_29=new _$type_18("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(e){if(null===e)return!0;var t,r,n,o,s,i=[],a=e;for(t=0,r=a.length;t3)return!1;if("/"!==t[t.length-n.length-1])return!1}return!0},construct:function(e){var t=e,r=/\/([gim]*)$/.exec(e),n="";return"/"===t[0]&&(r&&(n=r[1]),t=t.slice(1,t.length-n.length-1)),new RegExp(t,n)},predicate:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},represent:function(e){var t="/"+e.source+"/";return e.global&&(t+="g"),e.multiline&&(t+="m"),e.ignoreCase&&(t+="i"),t}}),esprima;try{var ___require_23=require;esprima=___require_23("esprima")}catch(_){"undefined"!=typeof window&&(esprima=window.esprima)}var _$function_23=new _$type_18("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:function(e){if(null===e)return!1;try{var t="("+e+")",r=esprima.parse(t,{range:!0});return"Program"===r.type&&1===r.body.length&&"ExpressionStatement"===r.body[0].type&&("ArrowFunctionExpression"===r.body[0].expression.type||"FunctionExpression"===r.body[0].expression.type)}catch(n){return!1}},construct:function(e){var t,r="("+e+")",n=esprima.parse(r,{range:!0}),o=[];if("Program"!==n.type||1!==n.body.length||"ExpressionStatement"!==n.body[0].type||"ArrowFunctionExpression"!==n.body[0].expression.type&&"FunctionExpression"!==n.body[0].expression.type)throw new Error("Failed to resolve function");return n.body[0].expression.params.forEach((function(e){o.push(e.name)})),t=n.body[0].expression.body.range,"BlockStatement"===n.body[0].expression.body.type?new Function(o,r.slice(t[0]+1,t[1]-1)):new Function(o,"return "+r.slice(t[0],t[1]))},predicate:function(e){return"[object Function]"===Object.prototype.toString.call(e)},represent:function(e){return e.toString()}}),_$default_full_14=_$schema_12.DEFAULT=new _$schema_12({include:[_$default_safe_15],explicit:[_$undefined_25,_$regexp_24,_$function_23]}),_$loader_10={},___hasOwnProperty_10=Object.prototype.hasOwnProperty,CONTEXT_FLOW_IN=1,CONTEXT_FLOW_OUT=2,CONTEXT_BLOCK_IN=3,CONTEXT_BLOCK_OUT=4,CHOMPING_CLIP=1,CHOMPING_STRIP=2,CHOMPING_KEEP=3,PATTERN_NON_PRINTABLE=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,PATTERN_NON_ASCII_LINE_BREAKS=/[\x85\u2028\u2029]/,PATTERN_FLOW_INDICATORS=/[,\[\]\{\}]/,PATTERN_TAG_HANDLE=/^(?:!|!!|![a-z\-]+!)$/i,PATTERN_TAG_URI=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function _class(e){return Object.prototype.toString.call(e)}function is_EOL(e){return 10===e||13===e}function is_WHITE_SPACE(e){return 9===e||32===e}function is_WS_OR_EOL(e){return 9===e||32===e||10===e||13===e}function is_FLOW_INDICATOR(e){return 44===e||91===e||93===e||123===e||125===e}function fromHexCode(e){var t;return 48<=e&&e<=57?e-48:97<=(t=32|e)&&t<=102?t-97+10:-1}function simpleEscapeSequence(e){return 48===e?"\0":97===e?"\x07":98===e?"\b":116===e||9===e?"\t":110===e?"\n":118===e?"\v":102===e?"\f":114===e?"\r":101===e?"\x1b":32===e?" ":34===e?'"':47===e?"/":92===e?"\\":78===e?"\x85":95===e?"\xa0":76===e?"\u2028":80===e?"\u2029":""}function charFromCodepoint(e){return e<=65535?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10),56320+(e-65536&1023))}for(var simpleEscapeCheck=new Array(256),simpleEscapeMap=new Array(256),i=0;i<256;i++)simpleEscapeCheck[i]=simpleEscapeSequence(i)?1:0,simpleEscapeMap[i]=simpleEscapeSequence(i);function State(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||_$default_full_14,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function generateError(e,t){return new _$exception_9(t,new _$mark_11(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function throwError(e,t){throw generateError(e,t)}function throwWarning(e,t){e.onWarning&&e.onWarning.call(null,generateError(e,t))}var directiveHandlers={YAML:function(e,t,r){var n,o,s;null!==e.version&&throwError(e,"duplication of %YAML directive"),1!==r.length&&throwError(e,"YAML directive accepts exactly one argument"),null===(n=/^([0-9]+)\.([0-9]+)$/.exec(r[0]))&&throwError(e,"ill-formed argument of the YAML directive"),o=parseInt(n[1],10),s=parseInt(n[2],10),1!==o&&throwError(e,"unacceptable YAML version of the document"),e.version=r[0],e.checkLineBreaks=s<2,1!==s&&2!==s&&throwWarning(e,"unsupported YAML version of the document")},TAG:function(e,t,r){var n,o;2!==r.length&&throwError(e,"TAG directive accepts exactly two arguments"),n=r[0],o=r[1],PATTERN_TAG_HANDLE.test(n)||throwError(e,"ill-formed tag handle (first argument) of the TAG directive"),___hasOwnProperty_10.call(e.tagMap,n)&&throwError(e,'there is a previously declared suffix for "'+n+'" tag handle'),PATTERN_TAG_URI.test(o)||throwError(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=o}};function captureSegment(e,t,r,n){var o,s,i,a;if(t1&&(e.result+=_$common_7.repeat("\n",t-1))}function readBlockSequence(e,t){var r,n,o=e.tag,s=e.anchor,i=[],a=!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=i),n=e.input.charCodeAt(e.position);0!==n&&45===n&&is_WS_OR_EOL(e.input.charCodeAt(e.position+1));)if(a=!0,e.position++,skipSeparationSpace(e,!0,-1)&&e.lineIndent<=t)i.push(null),n=e.input.charCodeAt(e.position);else if(r=e.line,composeNode(e,t,CONTEXT_BLOCK_IN,!1,!0),i.push(e.result),skipSeparationSpace(e,!0,-1),n=e.input.charCodeAt(e.position),(e.line===r||e.lineIndent>t)&&0!==n)throwError(e,"bad indentation of a sequence entry");else if(e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndentt)&&(composeNode(e,t,CONTEXT_BLOCK_OUT,!0,o)&&(_?d=e.result:h=e.result),_||(storeMappingPair(e,p,l,f,d,h,s,i),f=d=h=null),skipSeparationSpace(e,!0,-1),a=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==a)throwError(e,"bad indentation of a mapping entry");else if(e.lineIndent=0))break;0===o?throwError(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?throwError(e,"repeat of an indentation width identifier"):(p=t+o-1,c=!0)}if(is_WHITE_SPACE(s)){do{s=e.input.charCodeAt(++e.position)}while(is_WHITE_SPACE(s));if(35===s)do{s=e.input.charCodeAt(++e.position)}while(!is_EOL(s)&&0!==s)}for(;0!==s;){for(readLineBreak(e),e.lineIndent=0,s=e.input.charCodeAt(e.position);(!c||e.lineIndentp&&(p=e.lineIndent),is_EOL(s))l++;else{if(e.lineIndent0){for(o=i,s=0;o>0;o--)(i=fromHexCode(a=e.input.charCodeAt(++e.position)))>=0?s=(s<<4)+i:throwError(e,"expected hexadecimal character");e.result+=charFromCodepoint(s),e.position++}else throwError(e,"unknown escape sequence");r=n=e.position}else is_EOL(a)?(captureSegment(e,r,n,!0),writeFoldedLines(e,skipSeparationSpace(e,!1,t)),r=n=e.position):e.position===e.lineStart&&testDocumentSeparator(e)?throwError(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}throwError(e,"unexpected end of the stream within a double quoted scalar")}(e,l)?_=!0:function(e){var t,r,n;if(42!==(n=e.input.charCodeAt(e.position)))return!1;for(n=e.input.charCodeAt(++e.position),t=e.position;0!==n&&!is_WS_OR_EOL(n)&&!is_FLOW_INDICATOR(n);)n=e.input.charCodeAt(++e.position);return e.position===t&&throwError(e,"name of an alias node must contain at least one character"),r=e.input.slice(t,e.position),___hasOwnProperty_10.call(e.anchorMap,r)||throwError(e,'unidentified alias "'+r+'"'),e.result=e.anchorMap[r],skipSeparationSpace(e,!0,-1),!0}(e)?(_=!0,null===e.tag&&null===e.anchor||throwError(e,"alias node should not have any properties")):function(e,t,r){var n,o,s,i,a,u,c,p,l=e.kind,f=e.result;if(is_WS_OR_EOL(p=e.input.charCodeAt(e.position))||is_FLOW_INDICATOR(p)||35===p||38===p||42===p||33===p||124===p||62===p||39===p||34===p||37===p||64===p||96===p)return!1;if((63===p||45===p)&&(is_WS_OR_EOL(n=e.input.charCodeAt(e.position+1))||r&&is_FLOW_INDICATOR(n)))return!1;for(e.kind="scalar",e.result="",o=s=e.position,i=!1;0!==p;){if(58===p){if(is_WS_OR_EOL(n=e.input.charCodeAt(e.position+1))||r&&is_FLOW_INDICATOR(n))break}else if(35===p){if(is_WS_OR_EOL(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&testDocumentSeparator(e)||r&&is_FLOW_INDICATOR(p))break;if(is_EOL(p)){if(a=e.line,u=e.lineStart,c=e.lineIndent,skipSeparationSpace(e,!1,-1),e.lineIndent>=t){i=!0,p=e.input.charCodeAt(e.position);continue}e.position=s,e.line=a,e.lineStart=u,e.lineIndent=c;break}}i&&(captureSegment(e,o,s,!1),writeFoldedLines(e,e.line-a),o=s=e.position,i=!1),is_WHITE_SPACE(p)||(s=e.position+1),p=e.input.charCodeAt(++e.position)}return captureSegment(e,o,s,!1),!!e.result||(e.kind=l,e.result=f,!1)}(e,l,CONTEXT_FLOW_IN===r)&&(_=!0,null===e.tag&&(e.tag="?")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===d&&(_=a&&readBlockSequence(e,f))),null!==e.tag&&"!"!==e.tag)if("?"===e.tag){for(null!==e.result&&"scalar"!==e.kind&&throwError(e,'unacceptable node kind for ! tag; it should be "scalar", not "'+e.kind+'"'),u=0,c=e.implicitTypes.length;u tag; it should be "'+p.kind+'", not "'+e.kind+'"'),p.resolve(e.result)?(e.result=p.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):throwError(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):throwError(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||_}function readDocument(e){var t,r,n,o,s=e.position,i=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(o=e.input.charCodeAt(e.position))&&(skipSeparationSpace(e,!0,-1),o=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==o));){for(i=!0,o=e.input.charCodeAt(++e.position),t=e.position;0!==o&&!is_WS_OR_EOL(o);)o=e.input.charCodeAt(++e.position);for(n=[],(r=e.input.slice(t,e.position)).length<1&&throwError(e,"directive name must not be less than one character in length");0!==o;){for(;is_WHITE_SPACE(o);)o=e.input.charCodeAt(++e.position);if(35===o){do{o=e.input.charCodeAt(++e.position)}while(0!==o&&!is_EOL(o));break}if(is_EOL(o))break;for(t=e.position;0!==o&&!is_WS_OR_EOL(o);)o=e.input.charCodeAt(++e.position);n.push(e.input.slice(t,e.position))}0!==o&&readLineBreak(e),___hasOwnProperty_10.call(directiveHandlers,r)?directiveHandlers[r](e,r,n):throwWarning(e,'unknown document directive "'+r+'"')}skipSeparationSpace(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,skipSeparationSpace(e,!0,-1)):i&&throwError(e,"directives end mark is expected"),composeNode(e,e.lineIndent-1,CONTEXT_BLOCK_OUT,!1,!0),skipSeparationSpace(e,!0,-1),e.checkLineBreaks&&PATTERN_NON_ASCII_LINE_BREAKS.test(e.input.slice(s,e.position))&&throwWarning(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&testDocumentSeparator(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,skipSeparationSpace(e,!0,-1)):e.position0?e.charCodeAt(s-1):null,d=d&&isPlainSafe(i,a)}else{for(s=0;sn&&" "!==e[f+1],f=s);else if(!isPrintable(i))return STYLE_DOUBLE;a=s>0?e.charCodeAt(s-1):null,d=d&&isPlainSafe(i,a)}p=p||l&&s-f-1>n&&" "!==e[f+1]}return c||p?r>9&&needIndentIndicator(e)?STYLE_DOUBLE:p?STYLE_FOLDED:STYLE_LITERAL:d&&!o(e)?STYLE_PLAIN:STYLE_SINGLE}function writeScalar(e,t,r,n){e.dump=function(){if(0===t.length)return"''";if(!e.noCompatMode&&-1!==DEPRECATED_BOOLEANS_SYNTAX.indexOf(t))return"'"+t+"'";var o=e.indent*Math.max(1,r),s=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o),i=n||e.flowLevel>-1&&r>=e.flowLevel;switch(chooseScalarStyle(t,i,e.indent,s,(function(t){return function(e,t){var r,n;for(r=0,n=e.implicitTypes.length;r"+blockHeader(t,e.indent)+dropEndingNewline(indentString(function(e,t){for(var r,n,o,s=/(\n+)([^\n]*)/g,i=(o=-1!==(o=e.indexOf("\n"))?o:e.length,s.lastIndex=o,foldLine(e.slice(0,o),t)),a="\n"===e[0]||" "===e[0];n=s.exec(e);){var u=n[1],c=n[2];r=" "===c[0],i+=u+(a||r||""===c?"":"\n")+foldLine(c,t),a=r}return i}(t,s),o));case STYLE_DOUBLE:return'"'+function(e){for(var t,r,n,o="",s=0;s=55296&&t<=56319&&(r=e.charCodeAt(s+1))>=56320&&r<=57343?(o+=encodeHex(1024*(t-55296)+r-56320+65536),s++):o+=!(n=ESCAPE_SEQUENCES[t])&&isPrintable(t)?e[s]:n||encodeHex(t);return o}(t)+'"';default:throw new _$exception_9("impossible error: invalid scalar style")}}()}function blockHeader(e,t){var r=needIndentIndicator(e)?String(t):"",n="\n"===e[e.length-1];return r+(!n||"\n"!==e[e.length-2]&&"\n"!==e?n?"":"-":"+")+"\n"}function dropEndingNewline(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function foldLine(e,t){if(""===e||" "===e[0])return e;for(var r,n,o=/ [^ ]/g,s=0,i=0,a=0,u="";r=o.exec(e);)(a=r.index)-s>t&&(n=i>s?i:a,u+="\n"+e.slice(s,n),s=n+1),i=a;return u+="\n",e.length-s>t&&i>s?u+=e.slice(s,i)+"\n"+e.slice(i+1):u+=e.slice(s),u.slice(1)}function detectType(e,t,r){var n,o,s,i,a,u;for(s=0,i=(o=r?e.explicitTypes:e.implicitTypes).length;s tag resolver accepts not "'+u+'" style');n=a.represent[u](t,u)}e.dump=n}return!0}return!1}function writeNode(e,t,r,n,o,s){e.tag=null,e.dump=r,detectType(e,r,!1)||detectType(e,r,!0);var i=___toString_8.call(e.dump);n&&(n=e.flowLevel<0||e.flowLevel>t);var a,u,c="[object Object]"===i||"[object Array]"===i;if(c&&(u=-1!==(a=e.duplicates.indexOf(r))),(null!==e.tag&&"?"!==e.tag||u||2!==e.indent&&t>0)&&(o=!1),u&&e.usedDuplicates[a])e.dump="*ref_"+a;else{if(c&&u&&!e.usedDuplicates[a]&&(e.usedDuplicates[a]=!0),"[object Object]"===i)n&&0!==Object.keys(e.dump).length?(function(e,t,r,n){var o,s,i,a,u,c,p="",l=e.tag,f=Object.keys(r);if(!0===e.sortKeys)f.sort();else if("function"==typeof e.sortKeys)f.sort(e.sortKeys);else if(e.sortKeys)throw new _$exception_9("sortKeys must be a boolean or a function");for(o=0,s=f.length;o1024)&&(e.dump&&CHAR_LINE_FEED===e.dump.charCodeAt(0)?c+="?":c+="? "),c+=e.dump,u&&(c+=generateNextLine(e,t)),writeNode(e,t+1,a,!0,u)&&(e.dump&&CHAR_LINE_FEED===e.dump.charCodeAt(0)?c+=":":c+=": ",p+=c+=e.dump));e.tag=l,e.dump=p||"{}"}(e,t,e.dump,o),u&&(e.dump="&ref_"+a+e.dump)):(function(e,t,r){var n,o,s,i,a,u="",c=e.tag,p=Object.keys(r);for(n=0,o=p.length;n1024&&(a+="? "),a+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),writeNode(e,t,i,!1,!1)&&(u+=a+=e.dump));e.tag=c,e.dump="{"+u+"}"}(e,t,e.dump),u&&(e.dump="&ref_"+a+" "+e.dump));else if("[object Array]"===i){var p=e.noArrayIndent&&t>0?t-1:t;n&&0!==e.dump.length?(function(e,t,r,n){var o,s,i="",a=e.tag;for(o=0,s=r.length;o "+e.dump)}return!0}function getDuplicateReferences(e,t){var r,n,o=[],s=[];for(function e(t,r,n){var o,s,i;if(null!==t&&"object"==typeof t)if(-1!==(s=r.indexOf(t)))-1===n.indexOf(s)&&n.push(s);else if(r.push(t),Array.isArray(t))for(s=0,i=t.length;s0?o-4:o;for(r=0;r>16&255,i[a++]=t>>8&255,i[a++]=255&t;return 2===s&&(t=revLookup[e.charCodeAt(r)]<<2|revLookup[e.charCodeAt(r+1)]>>4,i[a++]=255&t),1===s&&(t=revLookup[e.charCodeAt(r)]<<10|revLookup[e.charCodeAt(r+1)]<<4|revLookup[e.charCodeAt(r+2)]>>2,i[a++]=t>>8&255,i[a++]=255&t),i},fromByteArray:function(e){for(var t,r=e.length,n=r%3,o=[],s=0,i=r-n;si?i:s+16383));return 1===n?(t=e[r-1],o.push(lookup[t>>2]+lookup[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],o.push(lookup[t>>10]+lookup[t>>4&63]+lookup[t<<2&63]+"=")),o.join("")}},lookup=[],revLookup=[],Arr="undefined"!=typeof Uint8Array?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",__i_1=0,len=code.length;__i_10)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function encodeChunk(e,t,r){for(var n,o,s=[],i=t;i>18&63]+lookup[o>>12&63]+lookup[o>>6&63]+lookup[63&o]);return s.join("")}revLookup["-".charCodeAt(0)]=62,revLookup["_".charCodeAt(0)]=63;var _$ieee754_3={read:function(e,t,r,n,o){var s,i,a=8*o-n-1,u=(1<>1,p=-7,l=r?o-1:0,f=r?-1:1,d=e[t+l];for(l+=f,s=d&(1<<-p)-1,d>>=-p,p+=a;p>0;s=256*s+e[t+l],l+=f,p-=8);for(i=s&(1<<-p)-1,s>>=-p,p+=n;p>0;i=256*i+e[t+l],l+=f,p-=8);if(0===s)s=1-c;else{if(s===u)return i?NaN:1/0*(d?-1:1);i+=Math.pow(2,n),s-=c}return(d?-1:1)*i*Math.pow(2,s-n)},write:function(e,t,r,n,o,s){var i,a,u,c=8*s-o-1,p=(1<>1,f=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:s-1,h=n?1:-1,_=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,i=p):(i=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-i))<1&&(i--,u*=2),(t+=i+l>=1?f/u:f*Math.pow(2,1-l))*u>=2&&(i++,u/=2),i+l>=p?(a=0,i=p):i+l>=1?(a=(t*u-1)*Math.pow(2,o),i+=l):(a=t*Math.pow(2,l-1)*Math.pow(2,o),i=0));o>=8;e[r+d]=255&a,d+=h,a/=256,o-=8);for(i=i<0;e[r+d]=255&i,d+=h,i/=256,c-=8);e[r+d-h]|=128*_}},_$base64_4={exports:{}};(function(e,t){(function(){!function(e,t){var r,n;"object"==typeof _$base64_4.exports?_$base64_4.exports=t():"function"==typeof define&&define.amd?define(t):(r=e.Base64,(n=t()).noConflict=function(){return e.Base64=r,n},e.Meteor&&(Base64=n),e.Base64=n)}("undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==e?e:this,(function(){"use strict";var e,r="function"==typeof atob,n="function"==typeof btoa,o="function"==typeof t,s="function"==typeof TextDecoder?new TextDecoder:void 0,i="function"==typeof TextEncoder?new TextEncoder:void 0,a=Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="),u=(e={},a.forEach((function(t,r){return e[t]=r})),e),c=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,p=String.fromCharCode.bind(String),l="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):function(e,t){return void 0===t&&(t=function(e){return e}),new Uint8Array(Array.prototype.slice.call(e,0).map(t))},f=function(e){return e.replace(/=/g,"").replace(/[+\/]/g,(function(e){return"+"==e?"-":"_"}))},d=function(e){return e.replace(/[^A-Za-z0-9\+\/]/g,"")},h=function(e){for(var t,r,n,o,s="",i=e.length%3,u=0;u255||(n=e.charCodeAt(u++))>255||(o=e.charCodeAt(u++))>255)throw new TypeError("invalid character found");s+=a[(t=r<<16|n<<8|o)>>18&63]+a[t>>12&63]+a[t>>6&63]+a[63&t]}return i?s.slice(0,i-3)+"===".substring(i):s},_=n?function(e){return btoa(e)}:o?function(e){return t.from(e,"binary").toString("base64")}:h,m=o?function(e){return t.from(e).toString("base64")}:function(e){for(var t=[],r=0,n=e.length;r>>6)+p(128|63&t):p(224|t>>>12&15)+p(128|t>>>6&63)+p(128|63&t);var t=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return p(240|t>>>18&7)+p(128|t>>>12&63)+p(128|t>>>6&63)+p(128|63&t)},$=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,w=function(e){return e.replace($,y)},E=o?function(e){return t.from(e,"utf8").toString("base64")}:i?function(e){return m(i.encode(e))}:function(e){return _(w(e))},S=function(e,t){return void 0===t&&(t=!1),t?f(E(e)):E(e)},A=function(e){return S(e,!0)},O=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,v=function(e){switch(e.length){case 4:var t=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return p(55296+(t>>>10))+p(56320+(1023&t));case 3:return p((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return p((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},b=function(e){return e.replace(O,v)},T=function(e){if(e=e.replace(/\s+/g,""),!c.test(e))throw new TypeError("malformed base64.");e+="==".slice(2-(3&e.length));for(var t,r,n,o="",s=0;s>16&255):64===n?p(t>>16&255,t>>8&255):p(t>>16&255,t>>8&255,255&t);return o},R=r?function(e){return atob(d(e))}:o?function(e){return t.from(e,"base64").toString("binary")}:T,C=o?function(e){return l(t.from(e,"base64"))}:function(e){return l(R(e),(function(e){return e.charCodeAt(0)}))},N=function(e){return C(L(e))},I=o?function(e){return t.from(e,"base64").toString("utf8")}:s?function(e){return s.decode(C(e))}:function(e){return b(R(e))},L=function(e){return d(e.replace(/[-_]/g,(function(e){return"-"==e?"+":"/"})))},P=function(e){return I(L(e))},k=function(e){return{value:e,enumerable:!1,writable:!0,configurable:!0}},x=function(){var e=function(e,t){return Object.defineProperty(String.prototype,e,k(t))};e("fromBase64",(function(){return P(this)})),e("toBase64",(function(e){return S(this,e)})),e("toBase64URI",(function(){return S(this,!0)})),e("toBase64URL",(function(){return S(this,!0)})),e("toUint8Array",(function(){return N(this)}))},U=function(){var e=function(e,t){return Object.defineProperty(Uint8Array.prototype,e,k(t))};e("toBase64",(function(e){return g(this,e)})),e("toBase64URI",(function(){return g(this,!0)})),e("toBase64URL",(function(){return g(this,!0)}))},F={version:"3.7.2",VERSION:"3.7.2",atob:R,atobPolyfill:T,btoa:_,btoaPolyfill:h,fromBase64:P,toBase64:S,encode:S,encodeURI:A,encodeURL:A,utob:w,btou:b,decode:P,isValid:function(e){if("string"!=typeof e)return!1;var t=e.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(t)||!/[^\s0-9a-zA-Z\-_]/.test(t)},fromUint8Array:g,toUint8Array:N,extendString:x,extendUint8Array:U,extendBuiltins:function(){x(),U()},Base64:{}};return Object.keys(F).forEach((function(e){return F.Base64[e]=F[e]})),F}))}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},_$buffer_2({}).Buffer),_$base64_4=_$base64_4.exports;var _$logical_50={AND:function(...e){return e.reduce((e,t)=>e.map((e,r)=>t[r]&&e))},OR:function(...e){return e.reduce((e,t)=>e.map((e,r)=>t[r]||e))},NOT:function(e){return e.map(e=>!e)},FULL:function(e,t){return[...Array(e).keys()].map(()=>t)}};const{Base64:__Base64_37}=_$base64_4,{AND:AND,FULL:FULL}=_$logical_50,{getFlag:getFlag}=_$geo_48,PROXY_PREPROCESSORS=[{name:"HTML",test:e=>/^/.test(e),parse:e=>""},function(){const e=["dm1lc3M","c3NyOi8v","dHJvamFu","c3M6Ly","c3NkOi8v","c2hhZG93","aHR0c"];return{name:"Base64 Pre-processor",test:function(t){return e.some(e=>-1!==t.indexOf(e))},parse:function(e){return __Base64_37.decode(e)}}}(),{name:"Clash Pre-processor",test:function(e){return/proxies/.test(e)},parse:function(e){return _$staticJsYaml_35.safeLoad(e).proxies.map(e=>JSON.stringify(e)).join("\n")}},{name:"SSD Pre-processor",test:function(e){return 0===e.indexOf("ssd://")},parse:function(e){const t=[];let r=JSON.parse(__Base64_37.decode(e.split("ssd://")[1]));r.traffic_used,r.traffic_total,r.expiry,r.airport;let n=r.port,o=r.encryption,s=r.password,i=r.servers;for(let a=0;a{let[t,o]=e.split("=");if(t=t.trim(),o=o.trim(),-1!==n.indexOf(t)){r.type=t;const e=o.split(":");r.server=e[0],r.port=e[1]}else r[t.trim()]=o.trim()}),r}function t(){return{name:"Loon HTTP Parser",test:e=>/^.*=\s*http/i.test(e.split(",")[0])&&5===e.split(",").length&&-1===e.indexOf("username")&&-1===e.indexOf("password"),parse:e=>{const t=e.split("=")[1].split(","),r={name:e.split("=")[0].trim(),type:"http",server:t[1],port:t[2],tls:"443"===t[2]};return t[3]&&(r.username=t[3]),t[4]&&(r.password=t[4]),r.tls&&(r.sni=t["tls-name"]||r.server,r["skip-cert-verify"]=JSON.parse(t["skip-cert-verify"]||"false")),r}}}function r(e){const t={};t.name=e.split("=")[0].trim();const r=e.split(",");t.server=r[1].trim(),t.port=r[2].trim();for(let n=3;n/^ss:\/\//.test(e),parse:e=>{const t={};let r=e.split("ss://")[1];const n={name:decodeURIComponent(e.split("#")[1]),type:"ss",supported:t},o=(r=r.split("#")[0]).match(/@([^\/]*)(\/|$)/)[1],s=o.lastIndexOf(":");n.server=o.substring(0,s),n.port=o.substring(s+1);const i=__Base64_37.decode(r.split("@")[0]).split(":");if(n.cipher=i[0],n.password=i[1],-1!==r.indexOf("?plugin=")){const e=("plugin="+decodeURIComponent(r.split("?plugin=")[1].split("&")[0])).split(";"),o={};for(const t of e){const[e,r]=t.split("=");e&&(o[e]=r||!0)}switch(o.plugin){case"obfs-local":case"simple-obfs":n.plugin="obfs",n["plugin-opts"]={mode:o.obfs,host:o["obfs-host"]};break;case"v2ray-plugin":n.supported={...t,Loon:!1,Surge:!1},n.obfs="v2ray-plugin",n["plugin-opts"]={mode:"websocket",host:o["obfs-host"],path:o.path||"",tls:o.tls||!1};break;default:throw new Error("Unsupported plugin option: "+o.plugin)}}return n}},function(){const e={Surge:!1};return{name:"URI SSR Parser",test:e=>/^ssr:\/\//.test(e),parse:t=>{let r=(t=__Base64_37.decode(t.split("ssr://")[1])).indexOf(":origin");-1===r&&(r=t.indexOf(":auth_"));const n=t.substring(0,r),o=n.substring(0,n.lastIndexOf(":")),s=n.substring(n.lastIndexOf(":")+1);let i=t.substring(r+1).split("/?")[0].split(":"),a={type:"ssr",server:o,port:s,protocol:i[0],cipher:i[1],obfs:i[2],password:__Base64_37.decode(i[3]),supported:e};const u={};if((t=t.split("/?")[1].split("&")).length>1)for(const e of t){const[t,r]=e.split("=");u[t]=r.trim()}return{...a,name:u.remarks?__Base64_37.decode(u.remarks):a.server,"protocol-param":__Base64_37.decode(u.protoparam||"").replace(/\s/g,""),"obfs-param":__Base64_37.decode(u.obfsparam||"").replace(/\s/g,"")}}}}(),{name:"URI VMess Parser",test:e=>/^vmess:\/\//.test(e),parse:e=>{const t={};e=e.split("vmess://")[1];const r=__Base64_37.decode(e);if(/=\s*vmess/.test(r)){const e=r.split(",").map(e=>e.trim()),t={};for(const r of e)if(-1!==r.indexOf("=")){const[e,n]=r.split("=");t[e.trim()]=n.trim()}const n={name:e[0].split("=")[0].trim(),type:"vmess",server:e[1],port:e[2],cipher:e[3],uuid:e[4].match(/^"(.*)"$/)[1],tls:"over-tls"===t.obfs||"wss"===t.obfs};if(void 0!==t["udp-relay"]&&(n.udp=JSON.parse(t["udp-relay"])),void 0!==t["fast-open"]&&(n.udp=JSON.parse(t["fast-open"])),"ws"===t.obfs||"wss"===t.obfs){n.network="ws",n["ws-opts"].path=(t["obfs-path"]||'"/"').match(/^"(.*)"$/)[1];let e=t["obfs-header"];e&&-1!==e.indexOf("Host")&&(e=e.match(/Host:\s*([a-zA-Z0-9-.]*)/)[1]),n["ws-opts"].headers={Host:e||n.server}}return n.tls&&"false"===t['"tls-verification"']&&(n["skip-cert-verify"]=!0),n.tls&&t["obfs-host"]&&(n.sni=t["obfs-host"]),n}{const e=JSON.parse(r),n={name:e.ps,type:"vmess",server:e.add,port:e.port,cipher:"auto",uuid:e.id,alterId:e.aid||0,tls:"tls"===e.tls||!0===e.tls,supported:t};return"ws"===e.net&&(n.network="ws",n["ws-opts"]={path:e.path,headers:{Host:e.host||e.add}},n.tls&&e.host&&(n.sni=e.host)),!1===e.verify_cert&&(n["skip-cert-verify"]=!0),n}}},{name:"URI Trojan Parser",test:e=>/^trojan:\/\//.test(e),parse:e=>{e=e.split("trojan://")[1];const[t,r]=e.split("@")[1].split("?")[0].split(":"),n=decodeURIComponent(e.split("#")[1].trim());let o=e.split("?"),s=null;return o.length>1&&(o=o[1].split("#")[0].split("&"),s=new Map(o.map(e=>e.split("="))).get("sni")),{name:n||"[Trojan] "+t,type:"trojan",server:t,port:r,password:e.split("@")[0],sni:s,supported:{}}}},{name:"Clash Parser",test:e=>{try{JSON.parse(e)}catch(t){return!1}return!0},parse:e=>JSON.parse(e)},{name:"Surge SS Parser",test:e=>/^.*=\s*ss/.test(e.split(",")[0]),parse:e=>{const t=r(e),n={name:t.name,type:"ss",server:t.server,port:t.port,cipher:t["encrypt-method"],password:t.password,tfo:JSON.parse(t.tfo||"false"),udp:JSON.parse(t["udp-relay"]||"false")};return t.obfs&&(n.plugin="obfs",n["plugin-opts"]={mode:t.obfs,host:t["obfs-host"]}),n}},{name:"Surge VMess Parser",test:e=>/^.*=\s*vmess/.test(e.split(",")[0])&&-1!==e.indexOf("username"),parse:e=>{const t=r(e),n={name:t.name,type:"vmess",server:t.server,port:t.port,uuid:t.username,alterId:0,cipher:"none",tls:JSON.parse(t.tls||"false"),tfo:JSON.parse(t.tfo||"false")};if(n.tls&&(void 0!==t["skip-cert-verify"]&&(n["skip-cert-verify"]=!0===t["skip-cert-verify"]||"1"===t["skip-cert-verify"]),n.sni=t.sni||t.server),JSON.parse(t.ws||"false")){n.network="ws",n["ws-opts"]={path:t["ws-path"]};const e=t["ws-headers"].match(/(,|^|\s)*HOST:\s*(.*?)(,|$)/),r=e?e[2]:n.server;n["ws-opts"].headers={Host:r||t.server}}return n}},{name:"Surge Trojan Parser",test:e=>/^.*=\s*trojan/.test(e.split(",")[0])&&-1!==e.indexOf("sni"),parse:e=>{const t=r(e),n={name:t.name,type:"trojan",server:t.server,port:t.port,password:t.password,sni:t.sni||t.server,tfo:JSON.parse(t.tfo||"false")};return void 0!==t["skip-cert-verify"]&&(n["skip-cert-verify"]=!0===t["skip-cert-verify"]||"1"===t["skip-cert-verify"]),n}},{name:"Surge HTTP Parser",test:e=>/^.*=\s*http/.test(e.split(",")[0])&&!t().test(e),parse:e=>{const t=r(e),n={name:t.name,type:"http",server:t.server,port:t.port,tls:JSON.parse(t.tls||"false"),tfo:JSON.parse(t.tfo||"false")};return n.tls&&(void 0!==t["skip-cert-verify"]&&(n["skip-cert-verify"]=!0===t["skip-cert-verify"]||"1"===t["skip-cert-verify"]),n.sni=t.sni||t.server),t.username&&"none"!==t.username&&(n.username=t.username),t.password&&"none"!==t.password&&(n.password=t.password),n}},{name:"Loon SS Parser",test:e=>"shadowsocks"===e.split(",")[0].split("=")[1].trim().toLowerCase(),parse:e=>{const t=e.split("=")[1].split(","),r={name:e.split("=")[0].trim(),type:"ss",server:t[1],port:t[2],cipher:t[3],password:t[4].replace(/"/g,"")};return t.length>5&&(r.plugin="obfs",r["plugin-opts"]={mode:t[5],host:t[6]}),r}},{name:"Loon SSR Parser",test:e=>"shadowsocksr"===e.split(",")[0].split("=")[1].trim().toLowerCase(),parse:e=>{const t=e.split("=")[1].split(",");return{name:e.split("=")[0].trim(),type:"ssr",server:t[1],port:t[2],cipher:t[3],password:t[4].replace(/"/g,""),protocol:t[5],"protocol-param":t[6].match(/{(.*)}/)[1],supported:{Surge:!1},obfs:t[7],"obfs-param":t[8].match(/{(.*)}/)[1]}}},{name:"Loon VMess Parser",test:e=>/^.*=\s*vmess/i.test(e.split(",")[0])&&-1===e.indexOf("username"),parse:e=>{let t=e.split("=")[1].split(",");const r={name:e.split("=")[0].trim(),type:"vmess",server:t[1],port:t[2],cipher:t[3]||"none",uuid:t[4].replace(/"/g,""),alterId:0};t=t.splice(5);for(const n of t){const[e,r]=n.split(":");t[e]=r}switch(r.tls=JSON.parse(t["over-tls"]||"false"),r.tls&&(r.sni=t["tls-name"]||r.server,r["skip-cert-verify"]=JSON.parse(t["skip-cert-verify"]||"false")),t.transport){case"tcp":break;case"ws":r.network=t.transport,r["ws-opts"]={path:t.path,headers:{Host:t.host}}}return r.tls&&(r["skip-cert-verify"]=JSON.parse(t["skip-cert-verify"]||"false")),r}},{name:"Loon Trojan Parser",test:e=>/^.*=\s*trojan/i.test(e.split(",")[0])&&-1===e.indexOf("password"),parse:e=>{const t=e.split("=")[1].split(","),r={name:e.split("=")[0].trim(),type:"trojan",server:t[1],port:t[2],password:t[3].replace(/"/g,""),sni:t[1],"skip-cert-verify":JSON.parse(t["skip-cert-verify"]||"false")};if(t.length>4){const[n,o]=t[4].split(":");if("tls-name"!==n)throw new Error(`Unknown option ${n} for line: \n${e}`);r.sni=o}return r}},t(),{name:"QX SS Parser",test:e=>/^shadowsocks\s*=/.test(e.split(",")[0].trim())&&-1===e.indexOf("ssr-protocol"),parse:t=>{const r=e(t),n={name:r.tag,type:"ss",server:r.server,port:r.port,cipher:r.method,password:r.password,udp:JSON.parse(r["udp-relay"]||"false"),tfo:JSON.parse(r["fast-open"]||"false"),supported:{}};if(r.obfs)switch(n["plugin-opts"]={host:r["obfs-host"]||n.server},r.obfs){case"http":case"tls":n.plugin="obfs",n["plugin-opts"].mode=r.obfs;break;case"ws":case"wss":n["plugin-opts"]={...n["plugin-opts"],mode:"websocket",path:r["obfs-uri"]||"/",tls:"wss"===r.obfs},n["plugin-opts"].tls&&void 0!==r["tls-verification"]&&(n["plugin-opts"]["skip-cert-verify"]=r["tls-verification"]),n.plugin="v2ray-plugin",n.supported.Surge=!1,n.supported.Loon=!1}return n}},{name:"QX SSR Parser",test:e=>/^shadowsocks\s*=/.test(e.split(",")[0].trim())&&-1!==e.indexOf("ssr-protocol"),parse:t=>{const r=e(t),n={name:r.tag,type:"ssr",server:r.server,port:r.port,cipher:r.method,password:r.password,protocol:r["ssr-protocol"],obfs:"plain","protocol-param":r["ssr-protocol-param"],udp:JSON.parse(r["udp-relay"]||"false"),tfo:JSON.parse(r["fast-open"]||"false"),supported:{Surge:!1}};return r.obfs&&(n.obfs=r.obfs,n["obfs-param"]=r["obfs-host"]),n}},{name:"QX VMess Parser",test:e=>/^vmess\s*=/.test(e.split(",")[0].trim()),parse:t=>{const r=e(t),n={type:"vmess",name:r.tag,server:r.server,port:r.port,cipher:r.method||"none",uuid:r.password,alterId:0,tls:"over-tls"===r.obfs||"wss"===r.obfs,udp:JSON.parse(r["udp-relay"]||"false"),tfo:JSON.parse(r["fast-open"]||"false")};return n.tls&&(n.sni=r["obfs-host"]||r.server,n["skip-cert-verify"]=!JSON.parse(r["tls-verification"]||"true")),"ws"!==r.obfs&&"wss"!==r.obfs||(n.network="ws",n["ws-opts"]={path:r["obfs-uri"],headers:{Host:r["obfs-host"]||r.server}}),n}},{name:"QX Trojan Parser",test:e=>/^trojan\s*=/.test(e.split(",")[0].trim()),parse:t=>{const r=e(t),n={type:"trojan",name:r.tag,server:r.server,port:r.port,password:r.password,sni:r["tls-host"]||r.server,udp:JSON.parse(r["udp-relay"]||"false"),tfo:JSON.parse(r["fast-open"]||"false")};return n["skip-cert-verify"]=!JSON.parse(r["tls-verification"]||"true"),n}},{name:"QX HTTP Parser",test:e=>/^http\s*=/.test(e.split(",")[0].trim()),parse:t=>{const r=e(t),n={type:"http",name:r.tag,server:r.server,port:r.port,tls:JSON.parse(r["over-tls"]||"false"),udp:JSON.parse(r["udp-relay"]||"false"),tfo:JSON.parse(r["fast-open"]||"false")};return r.username&&"none"!==r.username&&(n.username=r.username),r.password&&"none"!==r.password&&(n.password=r.password),n.tls&&(n.sni=r["tls-host"]||n.server,n["skip-cert-verify"]=!JSON.parse(r["tls-verification"]||"true")),n}}]}(),PROXY_PROCESSORS=function(){function SetPropertyOperator({key:e,value:t}){return{name:"Set Property Operator",func:r=>r.map(r=>(r[e]=t,r))}}function FlagOperator(e=!0){return{name:"Flag Operator",func:t=>t.map(t=>{if(e){const e=getFlag(t.name);t.name=removeFlag(t.name),t.name=e+" "+t.name,t.name=t.name.replace(/\ud83c\uddf9\ud83c\uddfc/g,"\ud83c\udde8\ud83c\uddf3")}else t.name=removeFlag(t.name);return t})}}function HandleDuplicateOperator(e){const{action:t,template:r,link:n,position:o}={action:"rename",template:"0 1 2 3 4 5 6 7 8 9",link:"-",position:"back",...e};return{name:"Handle Duplicate Operator",func:e=>{if("delete"===t){const t={};return e.filter(e=>!t[e.name]&&(t[e.name]=!0,!0))}if("rename"===t){const t=r.split(" "),s={};let i=0;e.forEach(e=>{void 0===s[e.name]?s[e.name]=1:s[e.name]++,i=Math.max(s[e.name].toString().length,i)});const a={};return e.map(e=>{if(s[e.name]>1){void 0===a[e.name]&&(a[e.name]=1);let r="",s=a[e.name]++,u=0;for(;s>0;)r=t[s%10]+r,s=parseInt(s/10),u++;for(;u++{switch(e){case"asc":case"desc":return t.sort((t,r)=>(t.name>r.name?1:-1)*("desc"===e?-1:1));case"random":return shuffle(t);default:throw new Error("Unknown sort option: "+e)}}}}function RegexSortOperator(e){return{name:"Regex Sort Operator",func:t=>(e=e.map(e=>buildRegex(e)),t.sort((t,r)=>{const n=getRegexOrder(e,t.name),o=getRegexOrder(e,r.name);return n&&!o?-1:o&&!n?1:n&&o?nt.map(t=>{for(const{expr:r,now:n}of e)t.name=t.name.replace(buildRegex(r,"g"),n).trim();return t})}}function RegexDeleteOperator(e){return{name:"Regex Delete Operator",func:RegexRenameOperator(e.map(e=>({expr:e,now:""}))).func}}function ScriptOperator(script,targetPlatform,$arguments){return{name:"Script Operator",func:proxies=>{let output=proxies;return function(){const $get=(e,t)=>(0,PROXY_PROCESSORS[e])(t),$process=__ApplyProcessor_37;eval(script),output=operator(proxies,targetPlatform)}(),output}}}function UselessFilter(){return{name:"Useless Filter",func:RegexFilter({regex:["\u7f51\u5740","\u6d41\u91cf","\u65f6\u95f4","\u5e94\u6025","\u8fc7\u671f","Bandwidth","expire"],keep:!1}).func}}function RegionFilter(e){const t={HK:"\ud83c\udded\ud83c\uddf0",TW:"\ud83c\uddf9\ud83c\uddfc",US:"\ud83c\uddfa\ud83c\uddf8",SG:"\ud83c\uddf8\ud83c\uddec",JP:"\ud83c\uddef\ud83c\uddf5",UK:"\ud83c\uddec\ud83c\udde7"};return{name:"Region Filter",func:r=>r.map(r=>{const n=getFlag(r.name);return e.some(e=>t[e]===n)})}}function RegexFilter({regex:e=[],keep:t=!0}){return{name:"Regex Filter",func:r=>r.map(r=>{const n=e.some(e=>buildRegex(e).test(r.name));return t?n:!n})}}function buildRegex(e,...t){return t=t.join(""),e.startsWith("(?i)")?(e=e.substr(4),new RegExp(e,"i"+t)):new RegExp(e,t)}function TypeFilter(e){return{name:"Type Filter",func:t=>t.map(t=>e.some(e=>t.type===e))}}function ScriptFilter(script,targetPlatform,$arguments){return{name:"Script Filter",func:proxies=>{let output=FULL(proxies.length,!0);return function(){eval(script),output=filter(proxies,targetPlatform)}(),output}}}return{"Useless Filter":UselessFilter,"Region Filter":RegionFilter,"Regex Filter":RegexFilter,"Type Filter":TypeFilter,"Script Filter":ScriptFilter,"Set Property Operator":SetPropertyOperator,"Flag Operator":FlagOperator,"Sort Operator":SortOperator,"Regex Sort Operator":RegexSortOperator,"Regex Rename Operator":RegexRenameOperator,"Regex Delete Operator":RegexDeleteOperator,"Script Operator":ScriptOperator,"Handle Duplicate Operator":HandleDuplicateOperator}}(),PROXY_PRODUCERS={QX:{produce:e=>{let t,r;switch(e.type){case"ss":if(t="","obfs"===e.plugin){const{host:r,mode:n}=e["plugin-opts"];t=`,obfs=${n}${r?",obfs-host="+r:""}`}if("v2ray-plugin"===e.plugin){const{tls:r,host:n,path:o}=e["plugin-opts"];t=`,obfs=${r?"wss":"ws"}${n?",obfs-host="+n:""}${o?",obfs-uri="+o:""}`}return`shadowsocks=${e.server}:${e.port},method=${e.cipher},password=${e.password}${t}${e.tfo?",fast-open=true":",fast-open=false"}${e.udp?",udp-relay=true":",udp-relay=false"},tag=${e.name}`;case"ssr":return`shadowsocks=${e.server}:${e.port},method=${e.cipher},password=${e.password},ssr-protocol=${e.protocol}${e["protocol-param"]?",ssr-protocol-param="+e["protocol-param"]:""}${e.obfs?",obfs="+e.obfs:""}${e["obfs-param"]?",obfs-host="+e["obfs-param"]:""},fast-open=${e.tfo||!1}${e.udp?",udp-relay=true":",udp-relay=false"},tag=${e.name}`;case"vmess":t="","ws"===e.network?t=e.tls?`,obfs=wss${e.sni?",obfs-host="+e.sni:""}${e["ws-opts"].path?",obfs-uri="+e["ws-opts"].path:""},tls-verification=${e["skip-cert-verify"]?"false":"true"}`:`,obfs=ws${e["ws-opts"].headers.Host?",obfs-host="+e["ws-opts"].headers.Host:""}${e["ws-opts"].path?",obfs-uri="+e["ws-opts"].path:""}`:e.tls&&(t=`,obfs=over-tls${e.sni?",obfs-host="+e.sni:""},tls-verification=${e["skip-cert-verify"]?"false":"true"}`);let n=`vmess=${e.server}:${e.port},method=${"auto"===e.cipher?"none":e.cipher},password=${e.uuid}${t},fast-open=${e.tfo||!1}${e.udp?",udp-relay=true":",udp-relay=false"}`;return 0===e.alterId&&(e["vmess-aead"]=!0),void 0!==e["vmess-aead"]&&(n+=",aead="+e["vmess-aead"]),n+=",tag="+e.name;case"trojan":return`trojan=${e.server}:${e.port},password=${e.password}${e.sni?",tls-host="+e.sni:""},over-tls=true,tls-verification=${e["skip-cert-verify"]?"false":"true"},fast-open=${e.tfo||!1}${e.udp?",udp-relay=true":",udp-relay=false"},tag=${e.name}`;case"http":return r="",e.tls&&(r=`,over-tls=true,tls-verification=${e["skip-cert-verify"]?"false":"true"}${e.sni?",tls-host="+e.sni:""}`),`http=${e.server}:${e.port},username=${e.username},password=${e.password}${r},fast-open=${e.tfo||!1},tag=${e.name}`}throw new Error("Platform QX does not support proxy type: "+e.type)}},Surge:{produce:e=>{let t,r,n="";switch(e.type){case"ss":if(t="",e.plugin){const{host:r,mode:n}=e["plugin-opts"];if("obfs"!==e.plugin)throw new Error("Platform Surge does not support obfs option: "+e.obfs);t=`,obfs=${n}${r?",obfs-host="+r:""}`}n=`${e.name}=ss,${e.server}, ${e.port},encrypt-method=${e.cipher},password=${e.password}${t},tfo=${e.tfo||"false"},udp-relay=${e.udp||"false"}`;break;case"vmess":if(r="",n=`${e.name}=vmess,${e.server},${e.port},username=${e.uuid},tls=${e.tls||"false"},tfo=${e.tfo||"false"}`,0===e.alterId&&(e["vmess-aead"]=!0),void 0!==e["vmess-aead"]&&(n+=",vmess-aead="+e["vmess-aead"]),"ws"===e.network){const t=e["ws-opts"].path||"/",r=Object.entries(e["ws-opts"].headers).map(([e,t])=>`${e}:"${t}"`).join("|");n+=`,ws=true${t?",ws-path="+t:""}${r?",ws-headers="+r:""}`}e.tls&&(n+=void 0!==e["skip-cert-verify"]?",skip-cert-verify="+e["skip-cert-verify"]:"",n+=e.sni?",sni="+e.sni:"");break;case"trojan":n=`${e.name}=trojan,${e.server},${e.port},password=${e.password}${void 0!==e["skip-cert-verify"]?",skip-cert-verify="+e["skip-cert-verify"]:""}${e.sni?",sni="+e.sni:""},tfo=${e.tfo||"false"},udp-relay=${e.udp||"false"}`;break;case"http":r=", tls=false",e.tls&&(r=`,tls=true,skip-cert-verify=${e["skip-cert-verify"]},sni=${e.sni}`),n=`${e.name}=http, ${e.server}, ${e.port}${e.username?",username="+e.username:""}${e.password?",password="+e.password:""}${r},tfo=${e.tfo||"false"}`;break;default:throw new Error("Platform Surge does not support proxy type: "+e.type)}return n+(void 0!==e["surge-hybrid"]?",hybrid="+e["surge-hybrid"]:"")}},Loon:{produce:e=>{let t="",r="",n="",o="";switch(void 0!==e.udp&&(n=e.udp?",udp=true":",udp=false"),o=",fast-open="+(e.tfo||!1),e.type){case"ss":if(t=",,",e.plugin){if("obfs"!==e.plugin)throw new Error("Platform Loon does not support obfs option: "+e.obfs);{const{mode:r,host:n}=e["plugin-opts"];t=`,${r},${n||""}`}}return`${e.name}=shadowsocks,${e.server},${e.port},${e.cipher},"${e.password}"${t}${n}${o}`;case"ssr":return`${e.name}=shadowsocksr,${e.server},${e.port},${e.cipher},"${e.password}",${e.protocol},{${e["protocol-param"]||""}},${e.obfs},{${e["obfs-param"]||""}}${n}${o}`;case"vmess":t="",t="ws"===e.network?`,transport:ws,host:${e["ws-opts"].headers.Host||e.server},path:${e["ws-opts"].path||"/"}`:",transport:tcp",e.tls&&(t+=`${e.sni?",tls-name:"+e.sni:""},skip-cert-verify:${e["skip-cert-verify"]||"false"}`);let s=`${e.name}=vmess,${e.server},${e.port},${"auto"===e.cipher?"none":e.cipher},"${e.uuid}",over-tls:${e.tls||"false"}${t}`;return 0===e.alterId&&(e["vmess-aead"]=!0),void 0!==e["vmess-aead"]&&(s+=",vmess-aead="+e["vmess-aead"]),s;case"trojan":return`${e.name}=trojan,${e.server},${e.port},"${e.password}"${e.sni?",tls-name:"+e.sni:""},skip-cert-verify:${e["skip-cert-verify"]||"false"}${n}`;case"http":r="";const i=`${e.name}=${e.tls?"http":"https"},${e.server},${e.port},${e.username||""},${e.password||""}`;return e.tls?i+(r=`${e.sni?",tls-name:"+e.sni:""},skip-cert-verify:${e["skip-cert-verify"]}`):i}throw new Error("Platform Loon does not support proxy type: "+e.type)}},Clash:{type:"ALL",produce:e=>"proxies:\n"+e.map(e=>(delete e.supported," - "+JSON.stringify(e)+"\n")).join("")},URI:{type:"SINGLE",produce:e=>{let t="";switch(e.type){case"ss":const r=`${e.cipher}:${e.password}`;if(t=`ss://${__Base64_37.encode(r)}@${e.server}:${e.port}/`,e.plugin){t+="?plugin=";const r=e["plugin-opts"];switch(e.plugin){case"obfs":t+=encodeURIComponent(`simple-obfs;obfs=${r.mode}${r.host?";obfs-host="+r.host:""}`);break;case"v2ray-plugin":t+=encodeURIComponent(`v2ray-plugin;obfs=${r.mode}${r.host?";obfs-host"+r.host:""}${r.tls?";tls":""}`);break;default:throw new Error("Unsupported plugin option: "+e.plugin)}}t+="#"+encodeURIComponent(e.name);break;case"ssr":t=`${e.server}:${e.port}:${e.protocol}:${e.cipher}:${e.obfs}:${__Base64_37.encode(e.password)}/`,t+=`?remarks=${__Base64_37.encode(e.name)}${e["obfs-param"]?"&obfsparam="+__Base64_37.encode(e["obfs-param"]):""}${e["protocol-param"]?"&protocolparam="+__Base64_37.encode(e["protocol-param"]):""}`,t="ssr://"+__Base64_37.encode(t);break;case"vmess":t={ps:e.name,add:e.server,port:e.port,id:e.uuid,type:"",aid:0,net:e.network||"tcp",tls:e.tls?"tls":""},"ws"===e.network&&(t.path=e["ws-opts"].path||"/",t.host=e["ws-opts"].headers.Host||e.server),t="vmess://"+__Base64_37.encode(JSON.stringify(t));break;case"trojan":t=`trojan://${e.password}@${e.server}:${e.port}#${encodeURIComponent(e.name)}`;break;default:throw new Error("Cannot handle proxy type: "+e.type)}return t}},JSON:{type:"ALL",produce:e=>JSON.stringify(e,null,2)}},ProxyUtils=function(){function e(e,t){let r;try{r=e.test(t)}catch(n){r=!1}return r}return{parse:function(t){const r=(t=function(e){for(const r of PROXY_PREPROCESSORS)try{if(r.test(e))return _$$_36.info(`Pre-processor [${r.name}] activated`),r.parse(e)}catch(t){_$$_36.error(`Parser [${r.name}] failed\n Reason: ${t}`)}return e}(t)).split("\n"),n=[];let o;for(let i of r){if(0===(i=i.trim()).length)continue;let t=o&&e(o,i);if(!t)for(const r of PROXY_PARSERS)if(e(r,i)){o=r,t=!0,_$$_36.info(`Proxy parser: ${r.name} is activated`);break}if(t)try{const e=o.parse(i);e||_$$_36.error(`Parser ${o.name} return nothing for \n${i}\n`),n.push(e)}catch(s){_$$_36.error(`Failed to parse line: \n ${i}\n Reason: ${s.stack}`)}else _$$_36.error(`Failed to find a rule to parse line: \n${i}\n`)}return n},process:async function(e,t=[],r){for(const o of t){let t;const s={};if(-1!==o.type.indexOf("Script")){const{mode:e,content:r}=o.args;if("link"===e){const e=r,i=e.split("#");if(i.length>1)for(const t of i[1].split("&")){const e=t.split("=")[0],r=t.split("=")[1]||!0;s[e]=r}try{t=await _$download_46(e.split("#")[0]),_$$_36.info("Script loaded: >>>\n "+t)}catch(n){_$$_36.error(`Error when downloading remote script: ${o.args.content}.\n Reason: ${n}`);continue}}else t=r}if(!PROXY_PROCESSORS[o.type]){_$$_36.error(`Unknown operator: "${o.type}"`);continue}let i;_$$_36.info(`Applying "${o.type}" with arguments:\n >>> ${JSON.stringify(o.args,null,2)||"None"}`),e=__ApplyProcessor_37(i=-1!==o.type.indexOf("Script")?PROXY_PROCESSORS[o.type](t,r,s):PROXY_PROCESSORS[o.type](o.args),e)}return e},produce:function(e,t){const r=PROXY_PRODUCERS[t];if(!r)throw new Error(`Target platform: ${t} is not supported!`);return e=e.filter(e=>!(e.supported&&!1===e.supported[t])),_$$_36.info("Producing proxies for target: "+t),void 0===r.type||"SINGLE"===r.type?e.map(e=>{try{return r.produce(e)}catch(t){return _$$_36.error(`Cannot produce proxy: ${JSON.stringify(e,null,2)}\nReason: ${t}`),""}}).filter(e=>e.length>0).join("\n"):"ALL"===r.type?r.produce(e):void 0}}}();function __ApplyProcessor_37(e,t){return-1!==e.name.indexOf("Filter")?function(e,t){let r=FULL(t.length,!0);try{r=AND(r,e.func(t))}catch(n){console.log(`Cannot apply filter ${e.name}\n Reason: ${n}`)}return t.filter((e,t)=>r[t])}(e,t):-1!==e.name.indexOf("Operator")?function(e,t){let r=clone(t);try{const t=e.func(r);t&&(r=t)}catch(n){console.log(`Cannot apply operator ${e.name}! Reason: ${n}`)}return r}(e,t):void 0}function shuffle(e){let t,r,n=e.length;for(;0!==n;)r=Math.floor(Math.random()*n),t=e[n-=1],e[n]=e[r],e[r]=t;return e}function clone(e){return JSON.parse(JSON.stringify(e))}function removeFlag(e){return e.replace(/[\uD83C][\uDDE6-\uDDFF][\uD83C][\uDDE6-\uDDFF]/g,"").trim()}var _$proxyUtils_37={ProxyUtils:ProxyUtils,ApplyProcessor:__ApplyProcessor_37};const RULE_TYPES_MAPPING=[[/^(DOMAIN|host|HOST)$/,"DOMAIN"],[/^(DOMAIN-KEYWORD|host-keyword|HOST-KEYWORD)$/,"DOMAIN-KEYWORD"],[/^(DOMAIN-SUFFIX|host-suffix|HOST-SUFFIX)$/,"DOMAIN-SUFFIX"],[/^USER-AGENT$/i,"USER-AGENT"],[/^PROCESS-NAME$/,"PROCESS-NAME"],[/^(DEST-PORT|DST-PORT)$/,"DST-PORT"],[/^SRC-IP(-CIDR)?$/,"SRC-IP"],[/^(IN|SRC)-PORT$/,"IN-PORT"],[/^PROTOCOL$/,"PROTOCOL"],[/^IP-CIDR$/i,"IP-CIDR"],[/^(IP-CIDR6|ip6-cidr|IP6-CIDR)$/]],RULE_PREPROCESSORS=[{name:"HTML",test:e=>/^/.test(e),parse:e=>""},{name:"Clash Provider",test:e=>0===e.indexOf("payload:"),parse:e=>e.replace("payload:","").replace(/^\s*-\s*/gm,"")}],RULE_PARSERS=[{name:"Universal Rule Parser",test:()=>!0,parse:e=>{const t=e.split("\n"),r=[];for(let o of t)if(0!==(o=o.trim()).length&&!/\s*#/.test(o))try{const e=o.split(",").map(e=>e.trim());let t=e[0],n=!1;for(const o of RULE_TYPES_MAPPING)if(o[0].test(t)){n=!0;const t={type:o[1],content:e[1]};"IP-CIDR"!==t.type&&"IP-CIDR6"!==t.type||(t.options=e.slice(2)),r.push(t)}if(!n)throw new Error("Invalid rule type: "+t)}catch(n){console.error(`Failed to parse line: ${o}\n Reason: ${n}`)}return r}}],RULE_PROCESSORS={"Regex Filter":function({regex:e=[],keep:t=!0}){return{name:"Regex Filter",func:r=>r.map(r=>{const n=e.some(e=>(e=new RegExp(e)).test(r));return t?n:!n})}},"Remove Duplicate Filter":function(){return{name:"Remove Duplicate Filter",func:e=>{const t=new Set,r=[];return e.forEach(e=>{const n=e.options||[];n.sort();const o=`${e.type},${e.content},${JSON.stringify(n)}`;t.has(o)||(r.push(e),t.add(o))}),r}}},"Type Filter":function(e){return{name:"Type Filter",func:t=>t.map(t=>e.some(e=>t.type===e))}},"Regex Replace Operator":function(e){return{name:"Regex Rename Operator",func:t=>t.map(t=>{for(const{expr:r,now:n}of e)t.content=t.content.replace(new RegExp(r,"g"),n).trim();return t})}}},RULE_PRODUCERS={QX:{type:"SINGLE",func:e=>-1!==["URL-REGEX","DEST-PORT","SRC-IP","IN-PORT","PROTOCOL"].indexOf(e.type)?null:`${{"DOMAIN-KEYWORD":"HOST-KEYWORD","DOMAIN-SUFFIX":"HOST-SUFFIX",DOMAIN:"HOST","IP-CIDR6":"IP6-CIDR"}[e.type]||e.type},${e.content},SUB-STORE`},Surge:{type:"SINGLE",func:e=>{let t=`${e.type},${e.content}`;return"IP-CIDR"!==e.type&&"IP-CIDR6"!==e.type||(t+=e.options?","+e.options[0]:""),t}},Loon:{type:"SINGLE",func:e=>-1!==["DEST-PORT","SRC-IP","IN-PORT","PROTOCOL"].indexOf(e.type)?null:(e=>{let t=`${e.type},${e.content}`;return"IP-CIDR"!==e.type&&"IP-CIDR6"!==e.type||(t+=e.options?","+e.options[0]:""),t})(e)},Clash:{type:"ALL",func:e=>{const t={"DEST-PORT":"DST-PORT","SRC-IP":"SRC-IP-CIDR","IN-PORT":"SRC-PORT"},r={payload:e.map(e=>{let r=`${t[e.type]||e.type},${e.content}`;return"IP-CIDR"!==e.type&&"IP-CIDR6"!==e.type||(r+=e.options?","+e.options[0]:""),r})};return YAML.stringify(r)}}},RuleUtils={parse:function(e){e=function(e){for(const r of RULE_PREPROCESSORS)try{if(r.test(e))return _$$_36.info(`Pre-processor [${r.name}] activated`),r.parse(e)}catch(t){_$$_36.error(`Parser [${r.name}] failed\n Reason: ${t}`)}return e}(e);for(const r of RULE_PARSERS){let n;try{n=r.test(e)}catch(t){n=!1}if(n)return _$$_36.info(`Rule parser [${r.name}] is activated!`),r.parse(e)}},process:async function(e,t){for(const r of t){if(!RULE_PROCESSORS[r.type]){console.error(`Unknown operator: ${r.type}!`);continue}const t=RULE_PROCESSORS[r.type](r.args);_$$_36.info(`Applying "${r.type}" with arguments: \n >>> ${JSON.stringify(r.args)||"None"}`),e=ApplyProcessor(t,e)}return e},produce:function(e,t){const r=RULE_PRODUCERS[t];if(!r)throw new Error(`Target platform: ${t} is not supported!`);return void 0===r.type||"SINGLE"===r.type?e.map(e=>{try{return r.func(e)}catch(t){return console.log(`ERROR: cannot produce rule: ${JSON.stringify(e)}\nReason: ${t}`),""}}).filter(e=>e.length>0).join("\n"):"ALL"===r.type?r.func(e):void 0}};var _$ruleUtils_38={RuleUtils:RuleUtils};const{ENV:__ENV_42}=_$openApi_51,{IP_API:IP_API}=_$geo_48,{SETTINGS_KEY:__SETTINGS_KEY_42,GIST_BACKUP_KEY:GIST_BACKUP_KEY,GIST_BACKUP_FILE_NAME:GIST_BACKUP_FILE_NAME}=_$constants_41;function getEnv(e,t){const{isNode:r,isQX:n,isLoon:o,isSurge:s}=__ENV_42();let i="Node";r&&(i="Node"),n&&(i="QX"),o&&(i="Loon"),s&&(i="Surge"),t.json({backend:i})}async function gistBackup(e,t){const{action:r}=e.query,{gistToken:n}=_$$_36.read(__SETTINGS_KEY_42);if(n){const e=new _$gist_49({token:n,key:GIST_BACKUP_KEY});try{let n;switch(r){case"upload":const t=_$$_36.read(__SETTINGS_KEY_42);t.syncTime=(new Date).getTime(),_$$_36.write(t,__SETTINGS_KEY_42),n=_$$_36.read("#sub-store"),_$$_36.env.isNode&&(n=JSON.stringify(_$$_36.cache,null," ")),_$$_36.info("\u4e0a\u4f20\u5907\u4efd\u4e2d..."),await e.upload({[GIST_BACKUP_FILE_NAME]:{content:n}});break;case"download":_$$_36.info("\u8fd8\u539f\u5907\u4efd\u4e2d..."),n=await e.download(GIST_BACKUP_FILE_NAME),_$$_36.write(n,"#sub-store"),_$$_36.env.isNode&&(n=JSON.parse(n),Object.keys(n).forEach(e=>{_$$_36.write(n[e],e)}))}t.json({status:"success"})}catch(o){const e=`${"upload"===r?"\u4e0a\u4f20":"\u4e0b\u8f7d"}\u5907\u4efd\u5931\u8d25\uff01${o}`;_$$_36.error(e),t.status(500).json({status:"failed",message:e})}}else t.status(500).json({status:"failed",message:"\u672a\u627e\u5230Gist\u5907\u4efdToken!"})}var _$facade_42=function(){const e=_$express_47({})();_$collections_40({}).register(e),_$subscriptions_44({}).register(e),_$settings_43({}).register(e),_$artifacts_39({}).register(e),e.get("/api/utils/IP_API/:server",IP_API),e.get("/api/utils/env",getEnv),e.get("/api/utils/backup",gistBackup),e.get("/",async(e,t)=>{t.set("location","https://sub-store.vercel.app/").status(302).end()}),__ENV_42().isQX&&e.options("/",async(e,t)=>{t.status(200).end()}),e.all("/",(e,t)=>{t.send("Hello from sub-store, made with \u2764\ufe0f by Peng-YM")}),e.start()},_$main_45={};console.log("\n\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\n \ud835\udc7a\ud835\udc96\ud835\udc83-\ud835\udc7a\ud835\udc95\ud835\udc90\ud835\udc93\ud835\udc86 \xa9 \ud835\udc77\ud835\udc86\ud835\udc8f\ud835\udc88-\ud835\udc80\ud835\udc74\n\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\n"),_$facade_42()}(); \ No newline at end of file +!function(){var createModuleFactory=function(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}},_$settings_43=createModuleFactory((function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.register=function(t){n.default.read(_$constants_41.SETTINGS_KEY)||n.default.write({},_$constants_41.SETTINGS_KEY),t.route("/api/settings").get(s).patch(c)};var r,n=(r=_$app_36)&&r.__esModule?r:{default:r};function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;e=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:x(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),p}},t}function c(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function u(t){for(var e=1;e0)){t.next=14;break}return _=h[d[0]],t.next=12,(0,o.getFlowHeaders)(_.url);case 12:(y=t.sent)&&r.set("subscription-userinfo",y);case 14:if(!p){t.next=28;break}return t.prev=15,t.next=18,(0,i.produceArtifact)({type:"collection",item:p,platform:f,noProcessor:u});case 18:v=t.sent,"JSON"===f?r.set("Content-Type","application/json;charset=utf-8").send(v):r.send(v),t.next=26;break;case 22:t.prev=22,t.t0=t.catch(15),a.default.notify("\ud83c\udf0d \u300e \ud835\udc7a\ud835\udc96\ud835\udc83-\ud835\udc7a\ud835\udc95\ud835\udc90\ud835\udc93\ud835\udc86 \u300f \u4e0b\u8f7d\u7ec4\u5408\u8ba2\u9605\u5931\u8d25","\u274c \u4e0b\u8f7d\u7ec4\u5408\u8ba2\u9605\u9519\u8bef\uff1a".concat(n,"\uff01"),"\ud83e\udd14 \u539f\u56e0\uff1a".concat(t.t0)),r.status(500).json({status:"failed",message:t.t0});case 26:t.next=30;break;case 28:a.default.notify("\ud83c\udf0d \u300e \ud835\udc7a\ud835\udc96\ud835\udc83-\ud835\udc7a\ud835\udc95\ud835\udc90\ud835\udc93\ud835\udc86 \u300f \u4e0b\u8f7d\u7ec4\u5408\u8ba2\u9605\u5931\u8d25","\u274c \u672a\u627e\u5230\u7ec4\u5408\u8ba2\u9605\uff1a".concat(n,"\uff01")),r.status(404).json({status:"failed"});case 30:case"end":return t.stop()}}),t,null,[[15,22]])})),(h=function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){l(i,n,o,a,s,"next",t)}function s(t){l(i,n,o,a,s,"throw",t)}a(void 0)}))}).apply(this,arguments)}function d(t,e){var r=t.body;a.default.info("\u6b63\u5728\u521b\u5efa\u7ec4\u5408\u8ba2\u9605\uff1a".concat(r.name));var n=a.default.read(_$constants_41.COLLECTIONS_KEY);n[r.name]&&e.status(500).json({status:"failed",message:"\u8ba2\u9605\u96c6".concat(r.name,"\u5df2\u5b58\u5728\uff01")}),/^[\w-_]*$/.test(r.name)?(n[r.name]=r,a.default.write(n,_$constants_41.COLLECTIONS_KEY),e.status(201).json({status:"success",data:r})):e.status(500).json({status:"failed",message:"\u8ba2\u9605\u96c6\u540d\u79f0 ".concat(r.name," \u4e2d\u542b\u6709\u975e\u6cd5\u5b57\u7b26\uff01\u540d\u79f0\u4e2d\u53ea\u80fd\u5305\u542b\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u4e0b\u5212\u7ebf\u3001\u6a2a\u6760\u3002")})}function _(t,e){var r=t.params.name,n=a.default.read(_$constants_41.COLLECTIONS_KEY)[r];n?e.json({status:"success",data:n}):e.status(404).json({status:"failed",message:"\u672a\u627e\u5230\u8ba2\u9605\u96c6\uff1a".concat(r,"!")})}function y(t,e){var r=t.params.name,n=t.body,o=a.default.read(_$constants_41.COLLECTIONS_KEY);if(o[r]){var i=u(u({},o[r]),n);a.default.info("\u6b63\u5728\u66f4\u65b0\u7ec4\u5408\u8ba2\u9605\uff1a".concat(r,"...")),delete o[r],o[n.name||r]=i,a.default.write(o,_$constants_41.COLLECTIONS_KEY),e.json({status:"success",data:i})}else e.status(500).json({status:"failed",message:"\u8ba2\u9605\u96c6".concat(r,"\u4e0d\u5b58\u5728\uff0c\u65e0\u6cd5\u66f4\u65b0\uff01")})}function v(t,e){var r=t.params.name;a.default.info("\u6b63\u5728\u5220\u9664\u7ec4\u5408\u8ba2\u9605\uff1a".concat(r));var n=a.default.read(_$constants_41.COLLECTIONS_KEY);delete n[r],a.default.write(n,_$constants_41.COLLECTIONS_KEY),e.json({status:"success"})}function m(t,e){var r=a.default.read(_$constants_41.COLLECTIONS_KEY);e.json({status:"success",data:r})}})),_$subscriptions_44=createModuleFactory((function(t,e){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.getFlowHeaders=g,e.getPlatformFromHeaders=b,e.register=function(t){i.default.read(_$constants_41.SUBS_KEY)||i.default.write({},_$constants_41.SUBS_KEY),t.get("/download/:name",p),t.route("/api/sub/:name").get(_).patch(y).delete(v),t.route("/api/subs").get(m).post(d)};var n,o=_$artifacts_39({}),i=(n=_$app_36)&&n.__esModule?n:{default:n};function a(){a=function(){return t};var t={},e=Object.prototype,n=e.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(T){u=function(t,e,r){return t[e]=r}}function f(t,e,r,n){var o=e&&e.prototype instanceof h?e:h,i=Object.create(o.prototype),a=new A(n||[]);return i._invoke=function(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=E(a,r);if(s){if(s===p)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(t,e,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===p)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}(t,r,a),i}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(T){return{type:"throw",arg:T}}}t.wrap=f;var p={};function h(){}function d(){}function _(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,m=v&&v(v(x([])));m&&m!==e&&n.call(m,i)&&(y=m);var g=_.prototype=h.prototype=Object.create(y);function w(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function b(t,e){var o;this._invoke=function(i,a){function s(){return new e((function(o,s){!function o(i,a,s,c){var u=l(t[i],t,a);if("throw"!==u.type){var f=u.arg,p=f.value;return p&&"object"==r(p)&&n.call(p,"__await")?e.resolve(p.__await).then((function(t){o("next",t,s,c)}),(function(t){o("throw",t,s,c)})):e.resolve(p).then((function(t){f.value=t,s(f)}),(function(t){return o("throw",t,s,c)}))}c(u.arg)}(i,a,o,s)}))}return o=o?o.then(s,s):s()}}function E(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method))return p;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var n=l(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,p;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,p):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,p)}function S(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(S,this),this.reset(!0)}function x(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:x(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),p}},t}function s(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function c(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:x(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),p}},t}function f(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function l(t){for(var e=1;e>>")),console.log(JSON.stringify(s,null,2)),t.prev=25,t.next=28,O(p({},s.name,{content:f}));case 28:l=t.sent,s.updated=(new Date).getTime(),h=JSON.parse(l.body),s.url=h.files[s.name].raw_url.replace(/\/raw\/[^\/]*\/(.*)/,"/raw/$1"),i.default.write(a,_$constants_41.ARTIFACTS_KEY),r.json({status:"success"}),t.next=39;break;case 36:t.prev=36,t.t1=t.catch(25),r.status(500).json({status:"failed",message:t.t1});case 39:t.next=42;break;case 41:r.json({status:"success",data:s});case 42:t.next=45;break;case 44:r.status(404).json({status:"failed",message:"\u672a\u627e\u5230\u5bf9\u5e94\u7684\u914d\u7f6e\uff01"});case 45:case"end":return t.stop()}}),t,null,[[25,36]])})))).apply(this,arguments)}function v(t,e){var r=t.body;i.default.info("\u6b63\u5728\u521b\u5efa\u8fdc\u7a0b\u914d\u7f6e\uff1a".concat(r.name));var n=i.default.read(_$constants_41.ARTIFACTS_KEY);n[r.name]?e.status(500).json({status:"failed",message:"\u8fdc\u7a0b\u914d\u7f6e".concat(r.name,"\u5df2\u5b58\u5728\uff01")}):/^[\w-_.]*$/.test(r.name)?(n[r.name]=r,i.default.write(n,_$constants_41.ARTIFACTS_KEY),e.status(201).json({status:"success",data:r})):e.status(500).json({status:"failed",message:"\u8fdc\u7a0b\u914d\u7f6e\u540d\u79f0 ".concat(r.name," \u4e2d\u542b\u6709\u975e\u6cd5\u5b57\u7b26\uff01\u540d\u79f0\u4e2d\u53ea\u80fd\u5305\u542b\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u4e0b\u5212\u7ebf\u3001\u6a2a\u6760\u3002")})}function m(t,e){var r=i.default.read(_$constants_41.ARTIFACTS_KEY),n=t.params.name,o=r[n];if(o){i.default.info("\u6b63\u5728\u66f4\u65b0\u8fdc\u7a0b\u914d\u7f6e\uff1a".concat(o.name));var a=t.body;if(void 0===a.name||/^[\w-_.]*$/.test(a.name)){var s=l(l({},o),a);r[s.name]=s,s.name!==n&&delete r[n],i.default.write(r,_$constants_41.ARTIFACTS_KEY),e.json({status:"success",data:s})}else e.status(500).json({status:"failed",message:"\u8fdc\u7a0b\u914d\u7f6e\u540d\u79f0 ".concat(a.name," \u4e2d\u542b\u6709\u975e\u6cd5\u5b57\u7b26\uff01\u540d\u79f0\u4e2d\u53ea\u80fd\u5305\u542b\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u4e0b\u5212\u7ebf\u3001\u6a2a\u6760\u3002")})}else e.status(404).json({status:"failed",message:"\u672a\u627e\u5230\u5bf9\u5e94\u7684\u8fdc\u7a0b\u914d\u7f6e\uff01"})}function g(t,e){return w.apply(this,arguments)}function w(){return(w=d(u().mark((function t(e,r){var n,o,a,s,c,f,l;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i.default.info("\u5f00\u59cb\u540c\u6b65\u6240\u6709\u8fdc\u7a0b\u914d\u7f6e..."),n=i.default.read(_$constants_41.ARTIFACTS_KEY),o={},t.prev=3,t.next=6,Promise.all(Object.values(n).map(function(){var t=d(u().mark((function t(e){var r,n;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e.sync){t.next=15;break}i.default.info("\u6b63\u5728\u540c\u6b65\u4e91\u914d\u7f6e\uff1a".concat(e.name,"...")),t.t0=e.type,t.next="subscription"===t.t0?5:"collection"===t.t0?7:"rule"===t.t0?9:11;break;case 5:return r=i.default.read(_$constants_41.SUBS_KEY)[e.source],t.abrupt("break",11);case 7:return r=i.default.read(_$constants_41.COLLECTIONS_KEY)[e.source],t.abrupt("break",11);case 9:return r=i.default.read(_$constants_41.RULES_KEY)[e.source],t.abrupt("break",11);case 11:return t.next=13,x({type:e.type,item:r,platform:e.platform});case 13:n=t.sent,o[e.name]={content:n};case 15:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()));case 6:return t.next=8,O(o);case 8:for(a=t.sent,s=JSON.parse(a.body),c=0,f=Object.values(n);c0&&void 0!==j[0]?j[0]:{platform:"JSON",noProcessor:!1},r=e.type,o=e.item,a=e.platform,c=e.noProcessor,"subscription"!==r){t.next=34;break}return f=o,t.next=5,(0,n.default)(f.url,f.ua);case 5:if(l=t.sent,p=_$proxyUtils_37.ProxyUtils.parse(l),c){t.next=11;break}return t.next=10,_$proxyUtils_37.ProxyUtils.process(p,f.process||[],a);case 10:p=t.sent;case 11:h={},_=s(p),t.prev=13,_.s();case 15:if((y=_.n()).done){t.next=23;break}if(v=y.value,!h[v.name]){t.next=20;break}return i.default.notify("\ud83c\udf0d \u300e \ud835\udc7a\ud835\udc96\ud835\udc83-\ud835\udc7a\ud835\udc95\ud835\udc90\ud835\udc93\ud835\udc86 \u300f","\u26a0\ufe0f \u8ba2\u9605\u5305\u542b\u91cd\u590d\u8282\u70b9\uff01","\u8bf7\u4ed4\u7ec6\u68c0\u6d4b\u914d\u7f6e\uff01",{"media-url":"https://cdn3.iconfinder.com/data/icons/seo-outline-1/512/25_code_program_programming_develop_bug_search_developer-512.png"}),t.abrupt("break",23);case 20:h[v.name]=!0;case 21:t.next=15;break;case 23:t.next=28;break;case 25:t.prev=25,t.t0=t.catch(13),_.e(t.t0);case 28:return t.prev=28,_.f(),t.finish(28);case 31:return t.abrupt("return",_$proxyUtils_37.ProxyUtils.produce(p,a));case 34:if("collection"!==r){t.next=72;break}return m=i.default.read(_$constants_41.SUBS_KEY),w=(g=o).subscriptions,b={},E=0,t.next=42,Promise.all(w.map(function(){var t=d(u().mark((function t(e){var r,o,s;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=m[e],t.prev=1,i.default.info("\u6b63\u5728\u5904\u7406\u5b50\u8ba2\u9605\uff1a".concat(r.name,"...")),t.next=5,(0,n.default)(r.url,r.ua);case 5:if(o=t.sent,s=_$proxyUtils_37.ProxyUtils.parse(o),c){t.next=11;break}return t.next=10,_$proxyUtils_37.ProxyUtils.process(s,r.process||[],a);case 10:s=t.sent;case 11:b[e]=s,E++,i.default.info("\u2705 \u5b50\u8ba2\u9605\uff1a".concat(r.name,"\u52a0\u8f7d\u6210\u529f\uff0c\u8fdb\u5ea6--").concat(100*(E/w.length).toFixed(1),"% ")),t.next=20;break;case 16:t.prev=16,t.t0=t.catch(1),E++,i.default.error("\u274c \u5904\u7406\u7ec4\u5408\u8ba2\u9605\u4e2d\u7684\u5b50\u8ba2\u9605: ".concat(r.name,"\u65f6\u51fa\u73b0\u9519\u8bef\uff1a").concat(t.t0,"\uff0c\u8be5\u8ba2\u9605\u5df2\u88ab\u8df3\u8fc7\uff01\u8fdb\u5ea6--").concat(100*(E/w.length).toFixed(1),"%"));case 20:case"end":return t.stop()}}),t,null,[[1,16]])})));return function(e){return t.apply(this,arguments)}}()));case 42:if(S=Array.prototype.concat.apply([],w.map((function(t){return b[t]}))),c){t.next=47;break}return t.next=46,_$proxyUtils_37.ProxyUtils.process(S,g.process||[],a);case 46:S=t.sent;case 47:if(0!==S.length){t.next=49;break}throw new Error("\u7ec4\u5408\u8ba2\u9605\u4e2d\u4e0d\u542b\u6709\u6548\u8282\u70b9\uff01");case 49:O={},A=s(S),t.prev=51,A.s();case 53:if((x=A.n()).done){t.next=61;break}if(L=x.value,!O[L.name]){t.next=58;break}return i.default.notify("\ud83c\udf0d \u300e \ud835\udc7a\ud835\udc96\ud835\udc83-\ud835\udc7a\ud835\udc95\ud835\udc90\ud835\udc93\ud835\udc86 \u300f","\u26a0\ufe0f \u8ba2\u9605\u5305\u542b\u91cd\u590d\u8282\u70b9\uff01","\u8bf7\u4ed4\u7ec6\u68c0\u6d4b\u914d\u7f6e\uff01",{"media-url":"https://cdn3.iconfinder.com/data/icons/seo-outline-1/512/25_code_program_programming_develop_bug_search_developer-512.png"}),t.abrupt("break",61);case 58:O[L.name]=!0;case 59:t.next=53;break;case 61:t.next=66;break;case 63:t.prev=63,t.t1=t.catch(51),A.e(t.t1);case 66:return t.prev=66,A.f(),t.finish(66);case 69:return t.abrupt("return",_$proxyUtils_37.ProxyUtils.produce(S,a));case 72:if("rule"!==r){t.next=98;break}T=o,R=[],C=0;case 76:if(!(C2147483647)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return e.__proto__=r.prototype,e}function r(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 i(t)}return n(t,e,r)}function n(e,n,o){if("string"==typeof e)return function(e,n){if("string"==typeof n&&""!==n||(n="utf8"),!r.isEncoding(n))throw new TypeError("Unknown encoding: "+n);var o=0|c(e,n),i=t(o),a=i.write(e,n);return a!==o&&(i=i.slice(0,a)),i}(e,n);if(ArrayBuffer.isView(e))return a(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(I(e,ArrayBuffer)||e&&I(e.buffer,ArrayBuffer))return function(t,e,n){if(e<0||t.byteLength=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+2147483647..toString(16)+" bytes");return 0|t}function c(t,e){if(r.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||I(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 n=t.length,o=arguments.length>2&&!0===arguments[2];if(!o&&0===n)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return k(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return P(t).length;default:if(i)return o?-1:k(t).length;e=(""+e).toLowerCase(),i=!0}}function u(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function f(t,e,n,o,i){if(0===t.length)return-1;if("string"==typeof n?(o=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),j(n=+n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=r.from(e,o)),r.isBuffer(e))return 0===e.length?-1:l(t,e,n,o,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):l(t,[e],n,o,i);throw new TypeError("val must be string, number or Buffer")}function l(t,e,r,n,o){var i,a=1,s=t.length,c=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a=2,s/=2,c/=2,r/=2}function u(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(o){var f=-1;for(i=r;is&&(r=s-c),i=r;i>=0;i--){for(var l=!0,p=0;po&&(n=o):n=o;var i=e.length;n>i/2&&(n=i/2);for(var a=0;a>8,o=r%256,i.push(o),i.push(n);return i}(e,t.length-r),t,r,n)}function m(t,e,r){return 0===e&&r===t.length?_$base64Js_1.fromByteArray(t):_$base64Js_1.fromByteArray(t.slice(e,r))}function g(t,e,r){r=Math.min(t.length,r);for(var n=[],o=e;o239?4:u>223?3:u>191?2:1;if(o+l<=r)switch(l){case 1:u<128&&(f=u);break;case 2:128==(192&(i=t[o+1]))&&(c=(31&u)<<6|63&i)>127&&(f=c);break;case 3:i=t[o+1],a=t[o+2],128==(192&i)&&128==(192&a)&&(c=(15&u)<<12|(63&i)<<6|63&a)>2047&&(c<55296||c>57343)&&(f=c);break;case 4:i=t[o+1],a=t[o+2],s=t[o+3],128==(192&i)&&128==(192&a)&&128==(192&s)&&(c=(15&u)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&c<1114112&&(f=c)}null===f?(f=65533,l=1):f>65535&&(f-=65536,n.push(f>>>10&1023|55296),f=56320|1023&f),n.push(f),o+=l}return function(t){var e=t.length;if(e<=w)return String.fromCharCode.apply(String,t);for(var r="",n=0;nthis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return S(this,e,r);case"utf8":case"utf-8":return g(this,e,r);case"ascii":return b(this,e,r);case"latin1":case"binary":return E(this,e,r);case"base64":return m(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}.apply(this,arguments)},r.prototype.toLocaleString=r.prototype.toString,r.prototype.equals=function(t){if(!r.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===r.compare(this,t)},r.prototype.inspect=function(){var t="",r=e.INSPECT_MAX_BYTES;return t=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(t+=" ... "),""},r.prototype.compare=function(t,e,n,o,i){if(I(t,Uint8Array)&&(t=r.from(t,t.offset,t.byteLength)),!r.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===n&&(n=t?t.length:0),void 0===o&&(o=0),void 0===i&&(i=this.length),e<0||n>t.length||o<0||i>this.length)throw new RangeError("out of range index");if(o>=i&&e>=n)return 0;if(o>=i)return-1;if(e>=n)return 1;if(this===t)return 0;for(var a=(i>>>=0)-(o>>>=0),s=(n>>>=0)-(e>>>=0),c=Math.min(a,s),u=this.slice(o,i),f=t.slice(e,n),l=0;l>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var o=this.length-e;if((void 0===r||r>o)&&(r=o),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return p(this,t,e,r);case"utf8":case"utf-8":return h(this,t,e,r);case"ascii":return d(this,t,e,r);case"latin1":case"binary":return _(this,t,e,r);case"base64":return y(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return v(this,t,e,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},r.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var w=4096;function b(t,e,r){var n="";r=Math.min(t.length,r);for(var o=e;oo)&&(r=o);for(var i="",a=e;ar)throw new RangeError("Trying to access beyond buffer length")}function x(t,e,n,o,i,a){if(!r.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 L(t,e,r,n,o,i){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function T(t,e,r,n,o){return e=+e,r>>>=0,o||L(t,0,r,4),_$ieee754_3.write(t,e,r,n,23,4),r+4}function R(t,e,r,n,o){return e=+e,r>>>=0,o||L(t,0,r,8),_$ieee754_3.write(t,e,r,n,52,8),r+8}r.prototype.slice=function(t,e){var n=this.length;(t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e>>=0,e>>>=0,r||A(t,e,this.length);for(var n=this[t],o=1,i=0;++i>>=0,e>>>=0,r||A(t,e,this.length);for(var n=this[t+--e],o=1;e>0&&(o*=256);)n+=this[t+--e]*o;return n},r.prototype.readUInt8=function(t,e){return t>>>=0,e||A(t,1,this.length),this[t]},r.prototype.readUInt16LE=function(t,e){return t>>>=0,e||A(t,2,this.length),this[t]|this[t+1]<<8},r.prototype.readUInt16BE=function(t,e){return t>>>=0,e||A(t,2,this.length),this[t]<<8|this[t+1]},r.prototype.readUInt32LE=function(t,e){return t>>>=0,e||A(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},r.prototype.readUInt32BE=function(t,e){return t>>>=0,e||A(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},r.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||A(t,e,this.length);for(var n=this[t],o=1,i=0;++i=(o*=128)&&(n-=Math.pow(2,8*e)),n},r.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||A(t,e,this.length);for(var n=e,o=1,i=this[t+--n];n>0&&(o*=256);)i+=this[t+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*e)),i},r.prototype.readInt8=function(t,e){return t>>>=0,e||A(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},r.prototype.readInt16LE=function(t,e){t>>>=0,e||A(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},r.prototype.readInt16BE=function(t,e){t>>>=0,e||A(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},r.prototype.readInt32LE=function(t,e){return t>>>=0,e||A(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},r.prototype.readInt32BE=function(t,e){return t>>>=0,e||A(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},r.prototype.readFloatLE=function(t,e){return t>>>=0,e||A(t,4,this.length),_$ieee754_3.read(this,t,!0,23,4)},r.prototype.readFloatBE=function(t,e){return t>>>=0,e||A(t,4,this.length),_$ieee754_3.read(this,t,!1,23,4)},r.prototype.readDoubleLE=function(t,e){return t>>>=0,e||A(t,8,this.length),_$ieee754_3.read(this,t,!0,52,8)},r.prototype.readDoubleBE=function(t,e){return t>>>=0,e||A(t,8,this.length),_$ieee754_3.read(this,t,!1,52,8)},r.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||x(this,t,e,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[e]=255&t;++i>>=0,r>>>=0,n||x(this,t,e,r,Math.pow(2,8*r)-1,0);var o=r-1,i=1;for(this[e+o]=255&t;--o>=0&&(i*=256);)this[e+o]=t/i&255;return e+r},r.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,1,255,0),this[e]=255&t,e+1},r.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},r.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},r.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||x(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},r.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||x(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},r.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var o=Math.pow(2,8*r-1);x(this,t,e,r,o-1,-o)}var i=0,a=1,s=0;for(this[e]=255&t;++i>0)-s&255;return e+r},r.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var o=Math.pow(2,8*r-1);x(this,t,e,r,o-1,-o)}var i=r-1,a=1,s=0;for(this[e+i]=255&t;--i>=0&&(a*=256);)t<0&&0===s&&0!==this[e+i+1]&&(s=1),this[e+i]=(t/a>>0)-s&255;return e+r},r.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},r.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},r.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||x(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},r.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||x(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},r.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||x(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},r.prototype.writeFloatLE=function(t,e,r){return T(this,t,e,!0,r)},r.prototype.writeFloatBE=function(t,e,r){return T(this,t,e,!1,r)},r.prototype.writeDoubleLE=function(t,e,r){return R(this,t,e,!0,r)},r.prototype.writeDoubleBE=function(t,e,r){return R(this,t,e,!1,r)},r.prototype.copy=function(t,e,n,o){if(!r.isBuffer(t))throw new TypeError("argument should be a Buffer");if(n||(n=0),o||0===o||(o=this.length),e>=t.length&&(e=t.length),e||(e=0),o>0&&o=this.length)throw new RangeError("Index out of range");if(o<0)throw new RangeError("sourceEnd out of bounds");o>this.length&&(o=this.length),t.length-e=0;--a)t[a+e]=this[a+n];else Uint8Array.prototype.set.call(t,this.subarray(n,o),e);return i},r.prototype.fill=function(t,e,n,o){if("string"==typeof t){if("string"==typeof e?(o=e,e=0,n=this.length):"string"==typeof n&&(o=n,n=this.length),void 0!==o&&"string"!=typeof o)throw new TypeError("encoding must be a string");if("string"==typeof o&&!r.isEncoding(o))throw new TypeError("Unknown encoding: "+o);if(1===t.length){var i=t.charCodeAt(0);("utf8"===o&&i<128||"latin1"===o)&&(t=i)}}else"number"==typeof t&&(t&=255);if(e<0||this.length>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(a=e;a55295&&r<57344){if(!o){if(r>56319){(e-=3)>-1&&i.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(e-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(e-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((e-=1)<0)break;i.push(r)}else if(r<2048){if((e-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;i.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;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function P(t){return _$base64Js_1.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(C,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function N(t,e,r,n){for(var o=0;o=e.length||o>=t.length);++o)e[o+r]=t[o];return o}function I(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}}).call(this)}).call(this,_$buffer_2({}).Buffer)})),_$constants_41={};Object.defineProperty(_$constants_41,"__esModule",{value:!0}),_$constants_41.SUBS_KEY=_$constants_41.SETTINGS_KEY=_$constants_41.GIST_BACKUP_KEY=_$constants_41.GIST_BACKUP_FILE_NAME=_$constants_41.COLLECTIONS_KEY=_$constants_41.ARTIFACT_REPOSITORY_KEY=_$constants_41.ARTIFACTS_KEY=void 0,_$constants_41.SETTINGS_KEY="settings",_$constants_41.SUBS_KEY="subs",_$constants_41.COLLECTIONS_KEY="collections",_$constants_41.ARTIFACTS_KEY="artifacts",_$constants_41.GIST_BACKUP_KEY="Auto Generated Sub-Store Backup",_$constants_41.GIST_BACKUP_FILE_NAME="Sub-Store",_$constants_41.ARTIFACT_REPOSITORY_KEY="Sub-Store Artifacts Repository";var _$common_7={};function isNothing(t){return null==t}_$common_7.isNothing=isNothing,_$common_7.isObject=function(t){return"object"==typeof t&&null!==t},_$common_7.toArray=function(t){return Array.isArray(t)?t:isNothing(t)?[]:[t]},_$common_7.repeat=function(t,e){var r,n="";for(r=0;r0&&-1==="\0\r\n\x85\u2028\u2029".indexOf(this.buffer.charAt(n-1));)if(n-=1,this.position-n>e/2-1){r=" ... ",n+=5;break}for(o="",i=this.position;ie/2-1){o=" ... ",i-=5;break}return a=this.buffer.slice(n,i),_$common_7.repeat(" ",t)+r+a+o+"\n"+_$common_7.repeat(" ",t+this.position-n+r.length)+"^"},Mark.prototype.toString=function(t){var e,r="";return this.name&&(r+='in "'+this.name+'" '),r+="at line "+(this.line+1)+", column "+(this.column+1),t||(e=this.getSnippet())&&(r+=":\n"+e),r},_$mark_11=Mark;var TYPE_CONSTRUCTOR_OPTIONS=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],YAML_NODE_KINDS=["scalar","sequence","mapping"],_$type_18=function(t,e){var r,n;if(e=e||{},Object.keys(e).forEach((function(e){if(-1===TYPE_CONSTRUCTOR_OPTIONS.indexOf(e))throw new _$exception_9('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')})),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=(r=e.styleAliases||null,n={},null!==r&&Object.keys(r).forEach((function(t){r[t].forEach((function(e){n[String(e)]=t}))})),n),-1===YAML_NODE_KINDS.indexOf(this.kind))throw new _$exception_9('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')},_$schema_12={};function compileList(t,e,r){var n=[];return t.include.forEach((function(t){r=compileList(t,e,r)})),t[e].forEach((function(t){r.forEach((function(e,r){e.tag===t.tag&&e.kind===t.kind&&n.push(r)})),r.push(t)})),r.filter((function(t,e){return-1===n.indexOf(e)}))}function Schema(t){this.include=t.include||[],this.implicit=t.implicit||[],this.explicit=t.explicit||[],this.implicit.forEach((function(t){if(t.loadKind&&"scalar"!==t.loadKind)throw new _$exception_9("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")})),this.compiledImplicit=compileList(this,"implicit",[]),this.compiledExplicit=compileList(this,"explicit",[]),this.compiledTypeMap=function(){var t,e,r={scalar:{},sequence:{},mapping:{},fallback:{}};function n(t){r[t.kind][t.tag]=r.fallback[t.tag]=t}for(t=0,e=arguments.length;t=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),YAML_FLOAT_PATTERN=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),SCIENTIFIC_WITHOUT_DOT=/^[-+]?[0-9]+e/,_$float_21=new _$type_18("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(t){return null!==t&&!(!YAML_FLOAT_PATTERN.test(t)||"_"===t[t.length-1])},construct:function(t){var e,r,n,o;return r="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,o=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===r?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:e.indexOf(":")>=0?(e.split(":").forEach((function(t){o.unshift(parseFloat(t,10))})),e=0,n=1,o.forEach((function(t){e+=t*n,n*=60})),r*e):r*parseFloat(e,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||_$common_7.isNegativeZero(t))},represent:function(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(_$common_7.isNegativeZero(t))return"-0.0";return r=t.toString(10),SCIENTIFIC_WITHOUT_DOT.test(r)?r.replace("e",".e"):r},defaultStyle:"lowercase"}),_$json_17=new _$schema_12({include:[_$failsafe_16],implicit:[_$null_28,_$bool_20,_$int_22,_$float_21]}),_$core_13=new _$schema_12({include:[_$json_17]}),YAML_DATE_REGEXP=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),YAML_TIMESTAMP_REGEXP=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),_$timestamp_34=new _$type_18("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(t){return null!==t&&(null!==YAML_DATE_REGEXP.exec(t)||null!==YAML_TIMESTAMP_REGEXP.exec(t))},construct:function(t){var e,r,n,o,i,a,s,c,u=0,f=null;if(null===(e=YAML_DATE_REGEXP.exec(t))&&(e=YAML_TIMESTAMP_REGEXP.exec(t)),null===e)throw new Error("Date resolve error");if(r=+e[1],n=+e[2]-1,o=+e[3],!e[4])return new Date(Date.UTC(r,n,o));if(i=+e[4],a=+e[5],s=+e[6],e[7]){for(u=e[7].slice(0,3);u.length<3;)u+="0";u=+u}return e[9]&&(f=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(f=-f)),c=new Date(Date.UTC(r,n,o,i,a,s,u)),f&&c.setTime(c.getTime()-f),c},instanceOf:Date,represent:function(t){return t.toISOString()}}),_$merge_27=new _$type_18("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(t){return"<<"===t||null===t}}),NodeBuffer;try{var _require=require;NodeBuffer=_require("buffer").Buffer}catch(__){}var BASE64_MAP="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",_$binary_19=new _$type_18("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(t){if(null===t)return!1;var e,r,n=0,o=t.length,i=BASE64_MAP;for(r=0;r64)){if(e<0)return!1;n+=6}return n%8==0},construct:function(t){var e,r,n=t.replace(/[\r\n=]/g,""),o=n.length,i=BASE64_MAP,a=0,s=[];for(e=0;e>16&255),s.push(a>>8&255),s.push(255&a)),a=a<<6|i.indexOf(n.charAt(e));return 0==(r=o%4*6)?(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)):18===r?(s.push(a>>10&255),s.push(a>>2&255)):12===r&&s.push(a>>4&255),NodeBuffer?NodeBuffer.from?NodeBuffer.from(s):new NodeBuffer(s):s},predicate:function(t){return NodeBuffer&&NodeBuffer.isBuffer(t)},represent:function(t){var e,r,n="",o=0,i=t.length,a=BASE64_MAP;for(e=0;e>18&63],n+=a[o>>12&63],n+=a[o>>6&63],n+=a[63&o]),o=(o<<8)+t[e];return 0==(r=i%3)?(n+=a[o>>18&63],n+=a[o>>12&63],n+=a[o>>6&63],n+=a[63&o]):2===r?(n+=a[o>>10&63],n+=a[o>>4&63],n+=a[o<<2&63],n+=a[64]):1===r&&(n+=a[o>>2&63],n+=a[o<<4&63],n+=a[64],n+=a[64]),n}}),_hasOwnProperty=Object.prototype.hasOwnProperty,_toString=Object.prototype.toString,_$omap_29=new _$type_18("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(t){if(null===t)return!0;var e,r,n,o,i,a=[],s=t;for(e=0,r=s.length;e3)return!1;if("/"!==e[e.length-n.length-1])return!1}return!0},construct:function(t){var e=t,r=/\/([gim]*)$/.exec(t),n="";return"/"===e[0]&&(r&&(n=r[1]),e=e.slice(1,e.length-n.length-1)),new RegExp(e,n)},predicate:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},represent:function(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}}),esprima;try{var ___require_23=require;esprima=___require_23("esprima")}catch(_){"undefined"!=typeof window&&(esprima=window.esprima)}var _$function_23=new _$type_18("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:function(t){if(null===t)return!1;try{var e="("+t+")",r=esprima.parse(e,{range:!0});return"Program"===r.type&&1===r.body.length&&"ExpressionStatement"===r.body[0].type&&("ArrowFunctionExpression"===r.body[0].expression.type||"FunctionExpression"===r.body[0].expression.type)}catch(n){return!1}},construct:function(t){var e,r="("+t+")",n=esprima.parse(r,{range:!0}),o=[];if("Program"!==n.type||1!==n.body.length||"ExpressionStatement"!==n.body[0].type||"ArrowFunctionExpression"!==n.body[0].expression.type&&"FunctionExpression"!==n.body[0].expression.type)throw new Error("Failed to resolve function");return n.body[0].expression.params.forEach((function(t){o.push(t.name)})),e=n.body[0].expression.body.range,"BlockStatement"===n.body[0].expression.body.type?new Function(o,r.slice(e[0]+1,e[1]-1)):new Function(o,"return "+r.slice(e[0],e[1]))},predicate:function(t){return"[object Function]"===Object.prototype.toString.call(t)},represent:function(t){return t.toString()}}),_$default_full_14=_$schema_12.DEFAULT=new _$schema_12({include:[_$default_safe_15],explicit:[_$undefined_25,_$regexp_24,_$function_23]}),_$loader_10={},___hasOwnProperty_10=Object.prototype.hasOwnProperty,CONTEXT_FLOW_IN=1,CONTEXT_FLOW_OUT=2,CONTEXT_BLOCK_IN=3,CONTEXT_BLOCK_OUT=4,CHOMPING_CLIP=1,CHOMPING_STRIP=2,CHOMPING_KEEP=3,PATTERN_NON_PRINTABLE=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,PATTERN_NON_ASCII_LINE_BREAKS=/[\x85\u2028\u2029]/,PATTERN_FLOW_INDICATORS=/[,\[\]\{\}]/,PATTERN_TAG_HANDLE=/^(?:!|!!|![a-z\-]+!)$/i,PATTERN_TAG_URI=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function _class(t){return Object.prototype.toString.call(t)}function is_EOL(t){return 10===t||13===t}function is_WHITE_SPACE(t){return 9===t||32===t}function is_WS_OR_EOL(t){return 9===t||32===t||10===t||13===t}function is_FLOW_INDICATOR(t){return 44===t||91===t||93===t||123===t||125===t}function fromHexCode(t){var e;return 48<=t&&t<=57?t-48:97<=(e=32|t)&&e<=102?e-97+10:-1}function simpleEscapeSequence(t){return 48===t?"\0":97===t?"\x07":98===t?"\b":116===t||9===t?"\t":110===t?"\n":118===t?"\v":102===t?"\f":114===t?"\r":101===t?"\x1b":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"\x85":95===t?"\xa0":76===t?"\u2028":80===t?"\u2029":""}function charFromCodepoint(t){return t<=65535?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10),56320+(t-65536&1023))}for(var simpleEscapeCheck=new Array(256),simpleEscapeMap=new Array(256),i=0;i<256;i++)simpleEscapeCheck[i]=simpleEscapeSequence(i)?1:0,simpleEscapeMap[i]=simpleEscapeSequence(i);function State(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||_$default_full_14,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function generateError(t,e){return new _$exception_9(e,new _$mark_11(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function throwError(t,e){throw generateError(t,e)}function throwWarning(t,e){t.onWarning&&t.onWarning.call(null,generateError(t,e))}var directiveHandlers={YAML:function(t,e,r){var n,o,i;null!==t.version&&throwError(t,"duplication of %YAML directive"),1!==r.length&&throwError(t,"YAML directive accepts exactly one argument"),null===(n=/^([0-9]+)\.([0-9]+)$/.exec(r[0]))&&throwError(t,"ill-formed argument of the YAML directive"),o=parseInt(n[1],10),i=parseInt(n[2],10),1!==o&&throwError(t,"unacceptable YAML version of the document"),t.version=r[0],t.checkLineBreaks=i<2,1!==i&&2!==i&&throwWarning(t,"unsupported YAML version of the document")},TAG:function(t,e,r){var n,o;2!==r.length&&throwError(t,"TAG directive accepts exactly two arguments"),n=r[0],o=r[1],PATTERN_TAG_HANDLE.test(n)||throwError(t,"ill-formed tag handle (first argument) of the TAG directive"),___hasOwnProperty_10.call(t.tagMap,n)&&throwError(t,'there is a previously declared suffix for "'+n+'" tag handle'),PATTERN_TAG_URI.test(o)||throwError(t,"ill-formed tag prefix (second argument) of the TAG directive"),t.tagMap[n]=o}};function captureSegment(t,e,r,n){var o,i,a,s;if(e1&&(t.result+=_$common_7.repeat("\n",e-1))}function readBlockSequence(t,e){var r,n,o=t.tag,i=t.anchor,a=[],s=!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=a),n=t.input.charCodeAt(t.position);0!==n&&45===n&&is_WS_OR_EOL(t.input.charCodeAt(t.position+1));)if(s=!0,t.position++,skipSeparationSpace(t,!0,-1)&&t.lineIndent<=e)a.push(null),n=t.input.charCodeAt(t.position);else if(r=t.line,composeNode(t,e,CONTEXT_BLOCK_IN,!1,!0),a.push(t.result),skipSeparationSpace(t,!0,-1),n=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&0!==n)throwError(t,"bad indentation of a sequence entry");else if(t.lineIndente?h=1:t.lineIndent===e?h=0:t.lineIndente?h=1:t.lineIndent===e?h=0:t.lineIndente)&&(composeNode(t,e,CONTEXT_BLOCK_OUT,!0,o)&&(_?h=t.result:d=t.result),_||(storeMappingPair(t,f,l,p,h,d,i,a),p=h=d=null),skipSeparationSpace(t,!0,-1),s=t.input.charCodeAt(t.position)),t.lineIndent>e&&0!==s)throwError(t,"bad indentation of a mapping entry");else if(t.lineIndent=0))break;0===o?throwError(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):u?throwError(t,"repeat of an indentation width identifier"):(f=e+o-1,u=!0)}if(is_WHITE_SPACE(i)){do{i=t.input.charCodeAt(++t.position)}while(is_WHITE_SPACE(i));if(35===i)do{i=t.input.charCodeAt(++t.position)}while(!is_EOL(i)&&0!==i)}for(;0!==i;){for(readLineBreak(t),t.lineIndent=0,i=t.input.charCodeAt(t.position);(!u||t.lineIndentf&&(f=t.lineIndent),is_EOL(i))l++;else{if(t.lineIndent0){for(o=a,i=0;o>0;o--)(a=fromHexCode(s=t.input.charCodeAt(++t.position)))>=0?i=(i<<4)+a:throwError(t,"expected hexadecimal character");t.result+=charFromCodepoint(i),t.position++}else throwError(t,"unknown escape sequence");r=n=t.position}else is_EOL(s)?(captureSegment(t,r,n,!0),writeFoldedLines(t,skipSeparationSpace(t,!1,e)),r=n=t.position):t.position===t.lineStart&&testDocumentSeparator(t)?throwError(t,"unexpected end of the document within a double quoted scalar"):(t.position++,n=t.position)}throwError(t,"unexpected end of the stream within a double quoted scalar")}(t,l)?_=!0:function(t){var e,r,n;if(42!==(n=t.input.charCodeAt(t.position)))return!1;for(n=t.input.charCodeAt(++t.position),e=t.position;0!==n&&!is_WS_OR_EOL(n)&&!is_FLOW_INDICATOR(n);)n=t.input.charCodeAt(++t.position);return t.position===e&&throwError(t,"name of an alias node must contain at least one character"),r=t.input.slice(e,t.position),___hasOwnProperty_10.call(t.anchorMap,r)||throwError(t,'unidentified alias "'+r+'"'),t.result=t.anchorMap[r],skipSeparationSpace(t,!0,-1),!0}(t)?(_=!0,null===t.tag&&null===t.anchor||throwError(t,"alias node should not have any properties")):function(t,e,r){var n,o,i,a,s,c,u,f,l=t.kind,p=t.result;if(is_WS_OR_EOL(f=t.input.charCodeAt(t.position))||is_FLOW_INDICATOR(f)||35===f||38===f||42===f||33===f||124===f||62===f||39===f||34===f||37===f||64===f||96===f)return!1;if((63===f||45===f)&&(is_WS_OR_EOL(n=t.input.charCodeAt(t.position+1))||r&&is_FLOW_INDICATOR(n)))return!1;for(t.kind="scalar",t.result="",o=i=t.position,a=!1;0!==f;){if(58===f){if(is_WS_OR_EOL(n=t.input.charCodeAt(t.position+1))||r&&is_FLOW_INDICATOR(n))break}else if(35===f){if(is_WS_OR_EOL(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&testDocumentSeparator(t)||r&&is_FLOW_INDICATOR(f))break;if(is_EOL(f)){if(s=t.line,c=t.lineStart,u=t.lineIndent,skipSeparationSpace(t,!1,-1),t.lineIndent>=e){a=!0,f=t.input.charCodeAt(t.position);continue}t.position=i,t.line=s,t.lineStart=c,t.lineIndent=u;break}}a&&(captureSegment(t,o,i,!1),writeFoldedLines(t,t.line-s),o=i=t.position,a=!1),is_WHITE_SPACE(f)||(i=t.position+1),f=t.input.charCodeAt(++t.position)}return captureSegment(t,o,i,!1),!!t.result||(t.kind=l,t.result=p,!1)}(t,l,CONTEXT_FLOW_IN===r)&&(_=!0,null===t.tag&&(t.tag="?")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===h&&(_=s&&readBlockSequence(t,p))),null!==t.tag&&"!"!==t.tag)if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&throwError(t,'unacceptable node kind for ! tag; it should be "scalar", not "'+t.kind+'"'),c=0,u=t.implicitTypes.length;c tag; it should be "'+f.kind+'", not "'+t.kind+'"'),f.resolve(t.result)?(t.result=f.construct(t.result),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):throwError(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):throwError(t,"unknown tag !<"+t.tag+">");return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||_}function readDocument(t){var e,r,n,o,i=t.position,a=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};0!==(o=t.input.charCodeAt(t.position))&&(skipSeparationSpace(t,!0,-1),o=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==o));){for(a=!0,o=t.input.charCodeAt(++t.position),e=t.position;0!==o&&!is_WS_OR_EOL(o);)o=t.input.charCodeAt(++t.position);for(n=[],(r=t.input.slice(e,t.position)).length<1&&throwError(t,"directive name must not be less than one character in length");0!==o;){for(;is_WHITE_SPACE(o);)o=t.input.charCodeAt(++t.position);if(35===o){do{o=t.input.charCodeAt(++t.position)}while(0!==o&&!is_EOL(o));break}if(is_EOL(o))break;for(e=t.position;0!==o&&!is_WS_OR_EOL(o);)o=t.input.charCodeAt(++t.position);n.push(t.input.slice(e,t.position))}0!==o&&readLineBreak(t),___hasOwnProperty_10.call(directiveHandlers,r)?directiveHandlers[r](t,r,n):throwWarning(t,'unknown document directive "'+r+'"')}skipSeparationSpace(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,skipSeparationSpace(t,!0,-1)):a&&throwError(t,"directives end mark is expected"),composeNode(t,t.lineIndent-1,CONTEXT_BLOCK_OUT,!1,!0),skipSeparationSpace(t,!0,-1),t.checkLineBreaks&&PATTERN_NON_ASCII_LINE_BREAKS.test(t.input.slice(i,t.position))&&throwWarning(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&testDocumentSeparator(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,skipSeparationSpace(t,!0,-1)):t.position0?t.charCodeAt(i-1):null,h=h&&isPlainSafe(a,s)}else{for(i=0;in&&" "!==t[p+1],p=i);else if(!isPrintable(a))return STYLE_DOUBLE;s=i>0?t.charCodeAt(i-1):null,h=h&&isPlainSafe(a,s)}f=f||l&&i-p-1>n&&" "!==t[p+1]}return u||f?r>9&&needIndentIndicator(t)?STYLE_DOUBLE:f?STYLE_FOLDED:STYLE_LITERAL:h&&!o(t)?STYLE_PLAIN:STYLE_SINGLE}function writeScalar(t,e,r,n){t.dump=function(){if(0===e.length)return"''";if(!t.noCompatMode&&-1!==DEPRECATED_BOOLEANS_SYNTAX.indexOf(e))return"'"+e+"'";var o=t.indent*Math.max(1,r),i=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-o),a=n||t.flowLevel>-1&&r>=t.flowLevel;switch(chooseScalarStyle(e,a,t.indent,i,(function(e){return function(t,e){var r,n;for(r=0,n=t.implicitTypes.length;r"+blockHeader(e,t.indent)+dropEndingNewline(indentString(function(t,e){for(var r,n,o,i=/(\n+)([^\n]*)/g,a=(o=-1!==(o=t.indexOf("\n"))?o:t.length,i.lastIndex=o,foldLine(t.slice(0,o),e)),s="\n"===t[0]||" "===t[0];n=i.exec(t);){var c=n[1],u=n[2];r=" "===u[0],a+=c+(s||r||""===u?"":"\n")+foldLine(u,e),s=r}return a}(e,i),o));case STYLE_DOUBLE:return'"'+function(t){for(var e,r,n,o="",i=0;i=55296&&e<=56319&&(r=t.charCodeAt(i+1))>=56320&&r<=57343?(o+=encodeHex(1024*(e-55296)+r-56320+65536),i++):o+=!(n=ESCAPE_SEQUENCES[e])&&isPrintable(e)?t[i]:n||encodeHex(e);return o}(e)+'"';default:throw new _$exception_9("impossible error: invalid scalar style")}}()}function blockHeader(t,e){var r=needIndentIndicator(t)?String(e):"",n="\n"===t[t.length-1];return r+(!n||"\n"!==t[t.length-2]&&"\n"!==t?n?"":"-":"+")+"\n"}function dropEndingNewline(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function foldLine(t,e){if(""===t||" "===t[0])return t;for(var r,n,o=/ [^ ]/g,i=0,a=0,s=0,c="";r=o.exec(t);)(s=r.index)-i>e&&(n=a>i?a:s,c+="\n"+t.slice(i,n),i=n+1),a=s;return c+="\n",t.length-i>e&&a>i?c+=t.slice(i,a)+"\n"+t.slice(a+1):c+=t.slice(i),c.slice(1)}function detectType(t,e,r){var n,o,i,a,s,c;for(i=0,a=(o=r?t.explicitTypes:t.implicitTypes).length;i tag resolver accepts not "'+c+'" style');n=s.represent[c](e,c)}t.dump=n}return!0}return!1}function writeNode(t,e,r,n,o,i){t.tag=null,t.dump=r,detectType(t,r,!1)||detectType(t,r,!0);var a=___toString_8.call(t.dump);n&&(n=t.flowLevel<0||t.flowLevel>e);var s,c,u="[object Object]"===a||"[object Array]"===a;if(u&&(c=-1!==(s=t.duplicates.indexOf(r))),(null!==t.tag&&"?"!==t.tag||c||2!==t.indent&&e>0)&&(o=!1),c&&t.usedDuplicates[s])t.dump="*ref_"+s;else{if(u&&c&&!t.usedDuplicates[s]&&(t.usedDuplicates[s]=!0),"[object Object]"===a)n&&0!==Object.keys(t.dump).length?(function(t,e,r,n){var o,i,a,s,c,u,f="",l=t.tag,p=Object.keys(r);if(!0===t.sortKeys)p.sort();else if("function"==typeof t.sortKeys)p.sort(t.sortKeys);else if(t.sortKeys)throw new _$exception_9("sortKeys must be a boolean or a function");for(o=0,i=p.length;o1024)&&(t.dump&&CHAR_LINE_FEED===t.dump.charCodeAt(0)?u+="?":u+="? "),u+=t.dump,c&&(u+=generateNextLine(t,e)),writeNode(t,e+1,s,!0,c)&&(t.dump&&CHAR_LINE_FEED===t.dump.charCodeAt(0)?u+=":":u+=": ",f+=u+=t.dump));t.tag=l,t.dump=f||"{}"}(t,e,t.dump,o),c&&(t.dump="&ref_"+s+t.dump)):(function(t,e,r){var n,o,i,a,s,c="",u=t.tag,f=Object.keys(r);for(n=0,o=f.length;n1024&&(s+="? "),s+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),writeNode(t,e,a,!1,!1)&&(c+=s+=t.dump));t.tag=u,t.dump="{"+c+"}"}(t,e,t.dump),c&&(t.dump="&ref_"+s+" "+t.dump));else if("[object Array]"===a){var f=t.noArrayIndent&&e>0?e-1:e;n&&0!==t.dump.length?(function(t,e,r,n){var o,i,a="",s=t.tag;for(o=0,i=r.length;o "+t.dump)}return!0}function getDuplicateReferences(t,e){var r,n,o=[],i=[];for(function t(e,r,n){var o,i,a;if(null!==e&&"object"==typeof e)if(-1!==(i=r.indexOf(e)))-1===n.indexOf(i)&&n.push(i);else if(r.push(e),Array.isArray(e))for(i=0,a=e.length;i0?o-4:o;for(r=0;r>16&255,a[s++]=e>>8&255,a[s++]=255&e;return 2===i&&(e=revLookup[t.charCodeAt(r)]<<2|revLookup[t.charCodeAt(r+1)]>>4,a[s++]=255&e),1===i&&(e=revLookup[t.charCodeAt(r)]<<10|revLookup[t.charCodeAt(r+1)]<<4|revLookup[t.charCodeAt(r+2)]>>2,a[s++]=e>>8&255,a[s++]=255&e),a},fromByteArray:function(t){for(var e,r=t.length,n=r%3,o=[],i=0,a=r-n;ia?a:i+16383));return 1===n?(e=t[r-1],o.push(lookup[e>>2]+lookup[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],o.push(lookup[e>>10]+lookup[e>>4&63]+lookup[e<<2&63]+"=")),o.join("")}},lookup=[],revLookup=[],Arr="undefined"!=typeof Uint8Array?Uint8Array:Array,code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",__i_1=0,len=code.length;__i_10)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function encodeChunk(t,e,r){for(var n,o,i=[],a=e;a>18&63]+lookup[o>>12&63]+lookup[o>>6&63]+lookup[63&o]);return i.join("")}revLookup["-".charCodeAt(0)]=62,revLookup["_".charCodeAt(0)]=63;var _$ieee754_3={read:function(t,e,r,n,o){var i,a,s=8*o-n-1,c=(1<>1,f=-7,l=r?o-1:0,p=r?-1:1,h=t[e+l];for(l+=p,i=h&(1<<-f)-1,h>>=-f,f+=s;f>0;i=256*i+t[e+l],l+=p,f-=8);for(a=i&(1<<-f)-1,i>>=-f,f+=n;f>0;a=256*a+t[e+l],l+=p,f-=8);if(0===i)i=1-u;else{if(i===c)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,n),i-=u}return(h?-1:1)*a*Math.pow(2,i-n)},write:function(t,e,r,n,o,i){var a,s,c,u=8*i-o-1,f=(1<>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:i-1,d=n?1:-1,_=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=f):(a=Math.floor(Math.log(e)/Math.LN2),e*(c=Math.pow(2,-a))<1&&(a--,c*=2),(e+=a+l>=1?p/c:p*Math.pow(2,1-l))*c>=2&&(a++,c/=2),a+l>=f?(s=0,a=f):a+l>=1?(s=(e*c-1)*Math.pow(2,o),a+=l):(s=e*Math.pow(2,l-1)*Math.pow(2,o),a=0));o>=8;t[r+h]=255&s,h+=d,s/=256,o-=8);for(a=a<0;t[r+h]=255&a,h+=d,a/=256,u-=8);t[r+h-d]|=128*_}},_$base64_4={exports:{}};(function(t,e){(function(){!function(t,e){var r,n;"object"==typeof _$base64_4.exports?_$base64_4.exports=e():"function"==typeof define&&define.amd?define(e):(r=t.Base64,(n=e()).noConflict=function(){return t.Base64=r,n},t.Meteor&&(Base64=n),t.Base64=n)}("undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t?t:this,(function(){"use strict";var t,r="function"==typeof atob,n="function"==typeof btoa,o="function"==typeof e,i="function"==typeof TextDecoder?new TextDecoder:void 0,a="function"==typeof TextEncoder?new TextEncoder:void 0,s=Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="),c=(t={},s.forEach((function(e,r){return t[e]=r})),t),u=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,f=String.fromCharCode.bind(String),l="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):function(t,e){return void 0===e&&(e=function(t){return t}),new Uint8Array(Array.prototype.slice.call(t,0).map(e))},p=function(t){return t.replace(/=/g,"").replace(/[+\/]/g,(function(t){return"+"==t?"-":"_"}))},h=function(t){return t.replace(/[^A-Za-z0-9\+\/]/g,"")},d=function(t){for(var e,r,n,o,i="",a=t.length%3,c=0;c255||(n=t.charCodeAt(c++))>255||(o=t.charCodeAt(c++))>255)throw new TypeError("invalid character found");i+=s[(e=r<<16|n<<8|o)>>18&63]+s[e>>12&63]+s[e>>6&63]+s[63&e]}return a?i.slice(0,a-3)+"===".substring(a):i},_=n?function(t){return btoa(t)}:o?function(t){return e.from(t,"binary").toString("base64")}:d,y=o?function(t){return e.from(t).toString("base64")}:function(t){for(var e=[],r=0,n=t.length;r>>6)+f(128|63&e):f(224|e>>>12&15)+f(128|e>>>6&63)+f(128|63&e);var e=65536+1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320);return f(240|e>>>18&7)+f(128|e>>>12&63)+f(128|e>>>6&63)+f(128|63&e)},g=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,w=function(t){return t.replace(g,m)},b=o?function(t){return e.from(t,"utf8").toString("base64")}:a?function(t){return y(a.encode(t))}:function(t){return _(w(t))},E=function(t,e){return void 0===e&&(e=!1),e?p(b(t)):b(t)},S=function(t){return E(t,!0)},O=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,A=function(t){switch(t.length){case 4:var e=((7&t.charCodeAt(0))<<18|(63&t.charCodeAt(1))<<12|(63&t.charCodeAt(2))<<6|63&t.charCodeAt(3))-65536;return f(55296+(e>>>10))+f(56320+(1023&e));case 3:return f((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return f((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},x=function(t){return t.replace(O,A)},L=function(t){if(t=t.replace(/\s+/g,""),!u.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(3&t.length));for(var e,r,n,o="",i=0;i>16&255):64===n?f(e>>16&255,e>>8&255):f(e>>16&255,e>>8&255,255&e);return o},T=r?function(t){return atob(h(t))}:o?function(t){return e.from(t,"base64").toString("binary")}:L,R=o?function(t){return l(e.from(t,"base64"))}:function(t){return l(T(t),(function(t){return t.charCodeAt(0)}))},C=function(t){return R(P(t))},k=o?function(t){return e.from(t,"base64").toString("utf8")}:i?function(t){return i.decode(R(t))}:function(t){return x(T(t))},P=function(t){return h(t.replace(/[-_]/g,(function(t){return"-"==t?"+":"/"})))},N=function(t){return k(P(t))},I=function(t){return{value:t,enumerable:!1,writable:!0,configurable:!0}},j=function(){var t=function(t,e){return Object.defineProperty(String.prototype,t,I(e))};t("fromBase64",(function(){return N(this)})),t("toBase64",(function(t){return E(this,t)})),t("toBase64URI",(function(){return E(this,!0)})),t("toBase64URL",(function(){return E(this,!0)})),t("toUint8Array",(function(){return C(this)}))},$=function(){var t=function(t,e){return Object.defineProperty(Uint8Array.prototype,t,I(e))};t("toBase64",(function(t){return v(this,t)})),t("toBase64URI",(function(){return v(this,!0)})),t("toBase64URL",(function(){return v(this,!0)}))},F={version:"3.7.2",VERSION:"3.7.2",atob:T,atobPolyfill:L,btoa:_,btoaPolyfill:d,fromBase64:N,toBase64:E,encode:E,encodeURI:S,encodeURL:S,utob:w,btou:x,decode:N,isValid:function(t){if("string"!=typeof t)return!1;var e=t.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(e)||!/[^\s0-9a-zA-Z\-_]/.test(e)},fromUint8Array:v,toUint8Array:C,extendString:j,extendUint8Array:$,extendBuiltins:function(){j(),$()},Base64:{}};return Object.keys(F).forEach((function(t){return F.Base64[t]=F[t]})),F}))}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},_$buffer_2({}).Buffer),_$base64_4=_$base64_4.exports;var _$logical_50={};function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:{baseURL:""},_ENV=ENV(),isQX=_ENV.isQX,isLoon=_ENV.isLoon,isSurge=_ENV.isSurge,isNode=_ENV.isNode,methods=["GET","POST","PUT","DELETE","HEAD","OPTIONS","PATCH"],URL_REGEX=/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/;function send(method,options){options="string"==typeof options?{url:options}:options;var baseURL=defaultOptions.baseURL;baseURL&&!URL_REGEX.test(options.url||"")&&(options.url=baseURL?baseURL+options.url:options.url),options=_objectSpread(_objectSpread({},defaultOptions),options);var timeout=options.timeout,events=_objectSpread(_objectSpread({},{onRequest:function(){},onResponse:function(t){return t},onTimeout:function(){}}),options.events),worker,timeoutid;events.onRequest(method,options),isQX?worker=$task.fetch({method:method,url:options.url,headers:options.headers,body:options.body}):(isLoon||isSurge||isNode)&&(worker=new Promise((function(resolve,reject){var request=isNode?eval("require('request')"):$httpClient;request[method.toLowerCase()](options,(function(t,e,r){t?reject(t):resolve({statusCode:e.status||e.statusCode,headers:e.headers,body:r})}))})));var timer=timeout?new Promise((function(t,e){timeoutid=setTimeout((function(){return events.onTimeout(),e("".concat(method," URL: ").concat(options.url," exceeds the timeout ").concat(timeout," ms"))}),timeout)})):null;return(timer?Promise.race([timer,worker]).then((function(t){return clearTimeout(timeoutid),t})):worker).then((function(t){return events.onResponse(t)}))}var http={};return methods.forEach((function(t){return http[t.toLowerCase()]=function(e){return send(t,e)}})),http}function API(){var name=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"untitled",debug=arguments.length>1&&void 0!==arguments[1]&&arguments[1],_ENV2=ENV(),isQX=_ENV2.isQX,isLoon=_ENV2.isLoon,isSurge=_ENV2.isSurge,isNode=_ENV2.isNode;return new(function(){function _class(name,debug){_classCallCheck(this,_class),this.name=name,this.debug=debug,this.http=HTTP(),this.env=ENV(),this.node=function(){if(isNode){var fs=eval("require('fs')");return{fs:fs}}return null}(),this.initCache();var delay=function(t,e){return new Promise((function(r){setTimeout(r.bind(null,e),t)}))};Promise.prototype.delay=function(t){return this.then((function(e){return delay(t,e)}))}}return _createClass(_class,[{key:"initCache",value:function(){if(isQX&&(this.cache=JSON.parse($prefs.valueForKey(this.name)||"{}")),(isLoon||isSurge)&&(this.cache=JSON.parse($persistentStore.read(this.name)||"{}")),isNode){var t="root.json";this.node.fs.existsSync(t)||this.node.fs.writeFileSync(t,JSON.stringify({}),{flag:"wx"},(function(t){return console.log(t)})),this.root={},t="".concat(this.name,".json"),this.node.fs.existsSync(t)?this.cache=JSON.parse(this.node.fs.readFileSync("".concat(this.name,".json"))):(this.node.fs.writeFileSync(t,JSON.stringify({}),{flag:"wx"},(function(t){return console.log(t)})),this.cache={})}}},{key:"persistCache",value:function(){var t=JSON.stringify(this.cache,null,2);isQX&&$prefs.setValueForKey(t,this.name),(isLoon||isSurge)&&$persistentStore.write(t,this.name),isNode&&(this.node.fs.writeFileSync("".concat(this.name,".json"),t,{flag:"w"},(function(t){return console.log(t)})),this.node.fs.writeFileSync("root.json",JSON.stringify(this.root,null,2),{flag:"w"},(function(t){return console.log(t)})))}},{key:"write",value:function(t,e){if(this.log("SET ".concat(e)),-1!==e.indexOf("#")){if(e=e.substr(1),isSurge||isLoon)return $persistentStore.write(t,e);if(isQX)return $prefs.setValueForKey(t,e);isNode&&(this.root[e]=t)}else this.cache[e]=t;this.persistCache()}},{key:"read",value:function(t){return this.log("READ ".concat(t)),-1===t.indexOf("#")?this.cache[t]:(t=t.substr(1),isSurge||isLoon?$persistentStore.read(t):isQX?$prefs.valueForKey(t):isNode?this.root[t]:void 0)}},{key:"delete",value:function(t){if(this.log("DELETE ".concat(t)),-1!==t.indexOf("#")){if(t=t.substr(1),isSurge||isLoon)return $persistentStore.write(null,t);if(isQX)return $prefs.removeValueForKey(t);isNode&&delete this.root[t]}else delete this.cache[t];this.persistCache()}},{key:"notify",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=n["open-url"],i=n["media-url"];if(isQX&&$notify(t,e,r,n),isSurge&&$notification.post(t,e,r+"".concat(i?"\n\u591a\u5a92\u4f53:"+i:""),{url:o}),isLoon){var a={};o&&(a.openUrl=o),i&&(a.mediaUrl=i),"{}"===JSON.stringify(a)?$notification.post(t,e,r):$notification.post(t,e,r,a)}if(isNode){var s=r+(o?"\n\u70b9\u51fb\u8df3\u8f6c: ".concat(o):"")+(i?"\n\u591a\u5a92\u4f53: ".concat(i):"");console.log("".concat(t,"\n").concat(e,"\n").concat(s,"\n\n"))}}},{key:"log",value:function(t){this.debug&&console.log("[".concat(this.name,"] LOG: ").concat(t))}},{key:"info",value:function(t){console.log("[".concat(this.name,"] INFO: ").concat(t))}},{key:"error",value:function(t){console.log("[".concat(this.name,"] ERROR: ").concat(t))}},{key:"wait",value:function(t){return new Promise((function(e){return setTimeout(e,t)}))}},{key:"done",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};isQX||isLoon||isSurge?$done(t):isNode&&"undefined"!=typeof $context&&($context.headers=t.headers,$context.statusCode=t.statusCode,$context.body=t.body)}}]),_class}())(name,debug)}Object.defineProperty(_$openApi_51,"__esModule",{value:!0}),_$openApi_51.API=API,_$openApi_51.ENV=ENV,_$openApi_51.HTTP=HTTP;var _$download_46={};function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _regeneratorRuntime(){_regeneratorRuntime=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(x){s=function(t,e,r){return t[e]=r}}function c(t,e,r,n){var o=e&&e.prototype instanceof l?e:l,i=Object.create(o.prototype),a=new S(n||[]);return i._invoke=function(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=w(a,r);if(s){if(s===f)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=u(t,e,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===f)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}(t,r,a),i}function u(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(x){return{type:"throw",arg:x}}}t.wrap=c;var f={};function l(){}function p(){}function h(){}var d={};s(d,o,(function(){return this}));var _=Object.getPrototypeOf,y=_&&_(_(O([])));y&&y!==e&&r.call(y,o)&&(d=y);var v=h.prototype=l.prototype=Object.create(d);function m(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function g(t,e){var n;this._invoke=function(o,i){function a(){return new e((function(n,a){!function n(o,i,a,s){var c=u(t[o],t,i);if("throw"!==c.type){var f=c.arg,l=f.value;return l&&"object"==_typeof(l)&&r.call(l,"__await")?e.resolve(l.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return n("throw",t,a,s)}))}s(c.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function w(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,w(t,e),"throw"===e.method))return f;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var n=u(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,f;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function b(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(b,this),this.reset(!0)}function O(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function asyncGeneratorStep(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(u){return void r(u)}s.done?e(c):Promise.resolve(c).then(n,o)}Object.defineProperty(_$download_46,"__esModule",{value:!0}),_$download_46.default=function(t,e){return _download.apply(this,arguments)};var cache=new Map;function _download(){var t;return t=_regeneratorRuntime().mark((function t(e,r){var n,o,i;return _regeneratorRuntime().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=(r=r||"Quantumult%20X/1.0.29 (iPhone14,5; iOS 15.4.1)")+e,!cache.has(n)){t.next=4;break}return t.abrupt("return",cache.get(n));case 4:return o=(0,_$openApi_51.HTTP)({headers:{"User-Agent":r}}),i=new Promise((function(t,r){o.get(e).then((function(e){var n=e.body;0===n.replace(/\s/g,"").length?r(new Error("\u8ba2\u9605\u5185\u5bb9\u4e3a\u7a7a\uff01")):t(n)}))})),cache.set(n,i),t.abrupt("return",i);case 8:case"end":return t.stop()}}),t)})),(_download=function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){asyncGeneratorStep(i,n,o,a,s,"next",t)}function s(t){asyncGeneratorStep(i,n,o,a,s,"throw",t)}a(void 0)}))}).apply(this,arguments)}var _$geo_48={};function ___typeof_48(t){return(___typeof_48="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ___regeneratorRuntime_48(){___regeneratorRuntime_48=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(x){s=function(t,e,r){return t[e]=r}}function c(t,e,r,n){var o=e&&e.prototype instanceof l?e:l,i=Object.create(o.prototype),a=new S(n||[]);return i._invoke=function(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=w(a,r);if(s){if(s===f)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=u(t,e,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===f)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}(t,r,a),i}function u(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(x){return{type:"throw",arg:x}}}t.wrap=c;var f={};function l(){}function p(){}function h(){}var d={};s(d,o,(function(){return this}));var _=Object.getPrototypeOf,y=_&&_(_(O([])));y&&y!==e&&r.call(y,o)&&(d=y);var v=h.prototype=l.prototype=Object.create(d);function m(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function g(t,e){var n;this._invoke=function(o,i){function a(){return new e((function(n,a){!function n(o,i,a,s){var c=u(t[o],t,i);if("throw"!==c.type){var f=c.arg,l=f.value;return l&&"object"==___typeof_48(l)&&r.call(l,"__await")?e.resolve(l.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return n("throw",t,a,s)}))}s(c.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function w(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,w(t,e),"throw"===e.method))return f;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var n=u(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,f;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function b(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(b,this),this.reset(!0)}function O(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function __asyncGeneratorStep_48(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(u){return void r(u)}s.done?e(c):Promise.resolve(c).then(n,o)}function _IP_API(){var t;return t=___regeneratorRuntime_48().mark((function t(e,r){var n,o,i;return ___regeneratorRuntime_48().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=decodeURIComponent(e.params.server),o=(0,_$openApi_51.HTTP)(),t.next=4,o.get("http://ip-api.com/json/".concat(n,"?lang=zh-CN")).then((function(t){return JSON.parse(t.body)}));case 4:i=t.sent,r.json(i);case 6:case"end":return t.stop()}}),t)})),(_IP_API=function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){__asyncGeneratorStep_48(i,n,o,a,s,"next",t)}function s(t){__asyncGeneratorStep_48(i,n,o,a,s,"throw",t)}a(void 0)}))}).apply(this,arguments)}Object.defineProperty(_$geo_48,"__esModule",{value:!0}),_$geo_48.IP_API=function(t,e){return _IP_API.apply(this,arguments)},_$geo_48.getFlag=function(t){for(var e={"\ud83c\udde6\ud83c\uddff":["\u963f\u585e\u62dc\u7586"],"\ud83c\udde6\ud83c\uddf9":["\u5965\u5730\u5229","\u5967\u5730\u5229","Austria","\u7ef4\u4e5f\u7eb3"],"\ud83c\udde6\ud83c\uddfa":["AU","Australia","Sydney","\u6fb3\u5927\u5229\u4e9a","\u6fb3\u6d32","\u58a8\u5c14\u672c","\u6089\u5c3c","\u571f\u6fb3","\u4eac\u6fb3","\u5ee3\u6fb3","\u6eec\u6fb3","\u6caa\u6fb3","\u5e7f\u6fb3"],"\ud83c\udde7\ud83c\uddea":["BE","\u6bd4\u5229\u6642","\u6bd4\u5229\u65f6"],"\ud83c\udde7\ud83c\uddec":["\u4fdd\u52a0\u5229\u4e9a","\u4fdd\u52a0\u5229\u4e9e","Bulgaria"],"\ud83c\udde7\ud83c\udded":["BH","\u5df4\u6797"],"\ud83c\udde7\ud83c\udde9":["BD","\u5b5f\u52a0\u62c9"],"\ud83c\uddf5\ud83c\uddf0":["\u5df4\u57fa\u65af\u5766"],"\ud83c\uddf0\ud83c\udded":["\u67ec\u57d4\u5be8"],"\ud83c\uddfa\ud83c\udde6":["\u70cf\u514b\u862d","\u4e4c\u514b\u5170"],"\ud83c\udded\ud83c\uddf7":["\u514b\u7f57\u5730\u4e9a","HR","\u514b\u7f85\u5730\u4e9e"],"\ud83c\udde8\ud83c\udde6":["Canada","CANADA","CAN","Waterloo","\u52a0\u62ff\u5927","\u8499\u7279\u5229\u5c14","\u6e29\u54e5\u534e","\u6953\u8449","\u67ab\u53f6","\u6ed1\u94c1\u5362","\u591a\u4f26\u591a","CA"],"\ud83c\udde8\ud83c\udded":["\u745e\u58eb","\u82cf\u9ece\u4e16","Switzerland","Zurich"],"\ud83c\uddf3\ud83c\uddec":["\u5c3c\u65e5\u5229\u4e9a","NG","\u5c3c\u65e5\u5229\u4e9e"],"\ud83c\udde8\ud83c\uddff":["Czechia","\u6377\u514b"],"\ud83c\uddf8\ud83c\uddf0":["\u65af\u6d1b\u4f10\u514b","SK"],"\ud83c\uddf7\ud83c\uddf8":["RS","\u585e\u5c14\u7ef4\u4e9a"],"\ud83c\uddf2\ud83c\udde9":["\u6469\u723e\u591a\u74e6","MD","\u6469\u5c14\u591a\u74e6"],"\ud83c\udde9\ud83c\uddea":["DE","German","GERMAN","\u5fb7\u56fd","\u5fb7\u570b","\u6cd5\u5170\u514b\u798f","\u4eac\u5fb7","\u6eec\u5fb7","\u5ee3\u5fb7","\u6caa\u5fb7","\u5e7f\u5fb7","Frankfurt"],"\ud83c\udde9\ud83c\uddf0":["DK","DNK","\u4e39\u9ea6","\u4e39\u9ea5"],"\ud83c\uddea\ud83c\uddf8":["ES","\u897f\u73ed\u7259","Spain"],"\ud83c\uddea\ud83c\uddfa":["EU","\u6b27\u76df","\u6b27\u7f57\u5df4"],"\ud83c\uddeb\ud83c\uddee":["Finland","\u82ac\u5170","\u82ac\u862d","\u8d6b\u5c14\u8f9b\u57fa"],"\ud83c\uddeb\ud83c\uddf7":["FR","France","\u6cd5\u56fd","\u6cd5\u570b","\u5df4\u9ece"],"\ud83c\uddec\ud83c\udde7":["UK","GB","England","United Kingdom","\u82f1\u56fd","\u4f26\u6566","\u82f1","London"],"\ud83c\uddf2\ud83c\uddf4":["MO","Macao","\u6fb3\u95e8","\u6fb3\u9580","CTM"],"\ud83c\uddf0\ud83c\uddff":["\u54c8\u8428\u514b\u65af\u5766","\u54c8\u8428\u514b"],"\ud83c\udded\ud83c\uddfa":["\u5308\u7259\u5229","Hungary"],"\ud83c\udded\ud83c\uddf0":["HK","Hongkong","Hong Kong","HongKong","HONG KONG","\u9999\u6e2f","\u6df1\u6e2f","\u6caa\u6e2f","\u547c\u6e2f","HKT","HKBN","HGC","WTT","CMI","\u7a57\u6e2f","\u4eac\u6e2f","\u6e2f"],"\ud83c\uddee\ud83c\udde9":["Indonesia","\u5370\u5c3c","\u5370\u5ea6\u5c3c\u897f\u4e9a","\u96c5\u52a0\u8fbe"],"\ud83c\uddee\ud83c\uddea":["Ireland","IRELAND","\u7231\u5c14\u5170","\u611b\u723e\u862d","\u90fd\u67cf\u6797"],"\ud83c\uddee\ud83c\uddf1":["Israel","\u4ee5\u8272\u5217"],"\ud83c\uddee\ud83c\uddf3":["India","IND","INDIA","\u5370\u5ea6","\u5b5f\u4e70","MFumbai"],"\ud83c\uddee\ud83c\uddf8":["IS","ISL","\u51b0\u5c9b","\u51b0\u5cf6"],"\ud83c\uddf0\ud83c\uddf5":["KP","\u671d\u9c9c"],"\ud83c\uddf0\ud83c\uddf7":["KR","Korea","KOR","\u97e9\u56fd","\u9996\u5c14","\u97e9","\u97d3","\u6625\u5ddd","Chuncheon","Seoul"],"\ud83c\uddf1\ud83c\uddfa":["\u5362\u68ee\u5821"],"\ud83c\uddf1\ud83c\uddfb":["Latvia","Latvija","\u62c9\u8131\u7ef4\u4e9a"],"\ud83c\uddf2\ud83c\uddfd":["MEX","MX","\u58a8\u897f\u54e5"],"\ud83c\uddf2\ud83c\uddfe":["MY","Malaysia","MALAYSIA","\u9a6c\u6765\u897f\u4e9a","\u5927\u99ac","\u99ac\u4f86\u897f\u4e9e","\u5409\u9686\u5761"],"\ud83c\uddf3\ud83c\uddf1":["NL","Netherlands","\u8377\u5170","\u8377\u862d","\u5c3c\u5fb7\u862d","\u963f\u59c6\u65af\u7279\u4e39"],"\ud83c\uddf3\ud83c\uddf5":["\u5c3c\u6cca\u5c14"],"\ud83c\uddf5\ud83c\udded":["PH","Philippines","\u83f2\u5f8b\u5bbe","\u83f2\u5f8b\u8cd3"],"\ud83c\uddf5\ud83c\uddf7":["PR","\u6ce2\u591a\u9ece\u5404"],"\ud83c\uddf7\ud83c\uddf4":["RO","\u7f57\u9a6c\u5c3c\u4e9a"],"\ud83c\uddf7\ud83c\uddfa":["RU","Russia","\u4fc4\u7f57\u65af","\u4fc4\u56fd","\u4fc4\u7f85\u65af","\u4f2f\u529b","\u83ab\u65af\u79d1","\u5723\u5f7c\u5f97\u5821","\u897f\u4f2f\u5229\u4e9a","\u65b0\u897f\u4f2f\u5229\u4e9a","\u4eac\u4fc4","\u676d\u4fc4","\u5ee3\u4fc4","\u6eec\u4fc4","\u5e7f\u4fc4","\u6caa\u4fc4","Moscow"],"\ud83c\uddf8\ud83c\udde6":["\u6c99\u7279"],"\ud83c\uddf8\ud83c\uddea":["SE","Sweden","\u745e\u5178"],"\ud83c\uddf2\ud83c\uddf9":["\u9a6c\u8033\u4ed6"],"\ud83c\uddf2\ud83c\udde6":["MA","\u6469\u6d1b\u54e5"],"\ud83c\uddf8\ud83c\uddec":["SG","Singapore","SINGAPORE","\u65b0\u52a0\u5761","\u72ee\u57ce","\u6caa\u65b0","\u4eac\u65b0","\u6cc9\u65b0","\u7a57\u65b0","\u6df1\u65b0","\u676d\u65b0","\u5e7f\u65b0","\u5ee3\u65b0","\u6eec\u65b0"],"\ud83c\uddf9\ud83c\udded":["TH","Thailand","\u6cf0\u56fd","\u6cf0\u570b","\u66fc\u8c37"],"\ud83c\uddf9\ud83c\uddf7":["TR","Turkey","\u571f\u8033\u5176","\u4f0a\u65af\u5766\u5e03\u5c14"],"\ud83c\uddf9\ud83c\uddfc":["TW","Taiwan","TAIWAN","\u53f0\u6e7e","\u53f0\u5317","\u53f0\u4e2d","\u65b0\u5317","\u5f70\u5316","CHT","\u53f0","HINET","Taipei"],"\ud83c\uddfa\ud83c\uddf8":["US","USA","America","United States","\u7f8e\u56fd","\u7f8e","\u4eac\u7f8e","\u6ce2\u7279\u5170","\u8fbe\u62c9\u65af","\u4fc4\u52d2\u5188","\u51e4\u51f0\u57ce","\u8d39\u5229\u8499","\u7845\u8c37","\u77fd\u8c37","\u62c9\u65af\u7ef4\u52a0\u65af","\u6d1b\u6749\u77f6","\u5723\u4f55\u585e","\u5723\u514b\u62c9\u62c9","\u897f\u96c5\u56fe","\u829d\u52a0\u54e5","\u6caa\u7f8e","\u54e5\u4f26\u5e03","\u7ebd\u7ea6","Los Angeles","San Jose","Sillicon Valley","Michigan"],"\ud83c\uddfb\ud83c\uddf3":["VN","\u8d8a\u5357","\u80e1\u5fd7\u660e\u5e02"],"\ud83c\uddfb\ud83c\uddea":["VE","\u59d4\u5185\u745e\u62c9"],"\ud83c\uddee\ud83c\uddf9":["Italy","IT","Nachash","\u610f\u5927\u5229","\u7c73\u5170","\u7fa9\u5927\u5229"],"\ud83c\uddff\ud83c\udde6":["South Africa","\u5357\u975e"],"\ud83c\udde6\ud83c\uddea":["United Arab Emirates","\u963f\u8054\u914b","\u8fea\u62dc","AE"],"\ud83c\udde7\ud83c\uddf7":["BR","Brazil","\u5df4\u897f","\u5723\u4fdd\u7f57"],"\ud83c\uddef\ud83c\uddf5":["JP","Japan","JAPAN","\u65e5\u672c","\u4e1c\u4eac","\u5927\u962a","\u57fc\u7389","\u6caa\u65e5","\u7a57\u65e5","\u5ddd\u65e5","\u4e2d\u65e5","\u6cc9\u65e5","\u676d\u65e5","\u6df1\u65e5","\u8fbd\u65e5","\u5e7f\u65e5","\u5927\u5742","Osaka","Tokyo"],"\ud83c\udde6\ud83c\uddf7":["AR","\u963f\u6839\u5ef7"],"\ud83c\uddf3\ud83c\uddf4":["Norway","\u632a\u5a01","NO"],"\ud83c\udde8\ud83c\uddf3":["CN","China","\u56de\u56fd","\u4e2d\u56fd","\u4e2d\u570b","\u6c5f\u82cf","\u5317\u4eac","\u4e0a\u6d77","\u5e7f\u5dde","\u6df1\u5733","\u676d\u5dde","\u5f90\u5dde","\u9752\u5c9b","\u5b81\u6ce2","\u9547\u6c5f","back"],"\ud83c\uddf5\ud83c\uddf1":["PL","POL","\u6ce2\u5170","\u6ce2\u862d"],"\ud83c\udde8\ud83c\uddf1":["\u667a\u5229"],"\ud83c\uddf3\ud83c\uddff":["\u65b0\u897f\u862d","\u65b0\u897f\u5170"],"\ud83c\uddec\ud83c\uddf7":["\u5e0c\u814a","\u5e0c\u81d8"],"\ud83c\uddea\ud83c\uddec":["\u57c3\u53ca"],"\ud83c\udde8\ud83c\uddfe":["CY","\u585e\u6d66\u8def\u65af"],"\ud83c\udde8\ud83c\uddf7":["CR","\u54e5\u65af\u8fbe\u9ece\u52a0"],"\ud83c\uddf8\ud83c\uddee":["SI","\u65af\u6d1b\u6587\u5c3c\u4e9a"],"\ud83c\uddf1\ud83c\uddf9":["LT","\u7acb\u9676\u5b9b"],"\ud83c\uddf5\ud83c\udde6":["PA","\u5df4\u62ff\u9a6c"],"\ud83c\uddf9\ud83c\uddf3":["TN","\u7a81\u5c3c\u65af"],"\ud83c\uddee\ud83c\uddf2":["\u9a6c\u6069\u5c9b","\u99ac\u6069\u5cf6"],"\ud83c\udde7\ud83c\uddfe":["BY","\u767d\u4fc4","\u767d\u4fc4\u7f57\u65af"],"\ud83c\uddf5\ud83c\uddf9":["\u8461\u8404\u7259"],"\ud83c\uddf0\ud83c\uddea":["KE","\u80af\u5c3c\u4e9a"],"\ud83c\uddf0\ud83c\uddec":["KG","\u5409\u5c14\u5409\u65af\u5766"],"\ud83c\uddef\ud83c\uddf4":["JO","\u7ea6\u65e6"],"\ud83c\uddfa\ud83c\uddfe":["UY","\u4e4c\u62c9\u572d"],"\ud83c\uddf2\ud83c\uddf3":["\u8499\u53e4"],"\ud83c\uddee\ud83c\uddf7":["IR","\u4f0a\u6717"],"\ud83c\uddf5\ud83c\uddea":["\u79d8\u9c81","\u7955\u9b6f"],"\ud83c\udde8\ud83c\uddf4":["\u54e5\u4f26\u6bd4\u4e9a"],"\ud83c\uddea\ud83c\uddea":["\u7231\u6c99\u5c3c\u4e9a"],"\ud83c\uddea\ud83c\udde8":["EC","\u5384\u74dc\u591a\u5c14"],"\ud83c\uddf2\ud83c\uddf0":["\u9a6c\u5176\u987f","\u99ac\u5176\u9813"],"\ud83c\udde7\ud83c\udde6":["\u6ce2\u9ed1\u5171\u548c\u56fd","\u6ce2\u9ed1"],"\ud83c\uddec\ud83c\uddea":["\u683c\u9b6f\u5409\u4e9e","\u683c\u9c81\u5409\u4e9a"],"\ud83c\udde6\ud83c\uddf1":["\u963f\u723e\u5df4\u5c3c\u4e9e","\u963f\u5c14\u5df4\u5c3c\u4e9a"],"\ud83c\udff3\ufe0f\u200d\ud83c\udf08":["\u6d41\u91cf","\u65f6\u95f4","\u5e94\u6025","\u8fc7\u671f","Bandwidth","expire"]},r=0,n=Object.keys(e);r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function __asyncGeneratorStep_37(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(u){return void r(u)}s.done?e(c):Promise.resolve(c).then(n,o)}function _asyncToGenerator(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){__asyncGeneratorStep_37(i,n,o,a,s,"next",t)}function s(t){__asyncGeneratorStep_37(i,n,o,a,s,"throw",t)}a(void 0)}))}}function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_unsupportedIterableToArray(t,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i=[],a=!0,s=!1;try{for(r=r.call(t);!(a=(n=r.next()).done)&&(i.push(n.value),!e||i.length!==e);a=!0);}catch(c){s=!0,o=c}finally{try{a||null==r.return||r.return()}finally{if(s)throw o}}return i}}function _arrayWithHoles(t){if(Array.isArray(t))return t}function __ownKeys_37(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function ___objectSpread_37(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return ___arrayLikeToArray_37(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?___arrayLikeToArray_37(t,e):void 0}}function ___arrayLikeToArray_37(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r/.test(t)},parse:function(t){return""}},(keys=["dm1lc3M","c3NyOi8v","dHJvamFu","c3M6Ly","c3NkOi8v","c2hhZG93","aHR0c"],{name:"Base64 Pre-processor",test:function(t){return keys.some((function(e){return-1!==t.indexOf(e)}))},parse:function(t){return _$base64_4.Base64.decode(t)}}),{name:"Clash Pre-processor",test:function(t){return/proxies/.test(t)},parse:function(t){return(0,_$staticJsYaml_35.safeLoad)(t).proxies.map((function(t){return JSON.stringify(t)})).join("\n")}},{name:"SSD Pre-processor",test:function(t){return 0===t.indexOf("ssd://")},parse:function(t){for(var e=[],r=JSON.parse(_$base64_4.Base64.decode(t.split("ssd://")[1])),n=(r.traffic_used,r.traffic_total,r.expiry,r.airport,r.port),o=r.encryption,i=r.password,a=r.servers,s=0;s1){var u,f=_createForOfIteratorHelper(t);try{for(f.s();!(u=f.n()).done;){var l=_slicedToArray(u.value.split("="),2),p=l[0],h=l[1];c[p]=h.trim()}}catch(d){f.e(d)}finally{f.f()}}return ___objectSpread_37(___objectSpread_37({},s),{},{name:c.remarks?_$base64_4.Base64.decode(c.remarks):s.server,"protocol-param":_$base64_4.Base64.decode(c.protoparam||"").replace(/\s/g,""),"obfs-param":_$base64_4.Base64.decode(c.obfsparam||"").replace(/\s/g,"")})}}),{name:"URI VMess Parser",test:function(t){return/^vmess:\/\//.test(t)},parse:function(t){t=t.split("vmess://")[1];var e=_$base64_4.Base64.decode(t);if(/=\s*vmess/.test(e)){var r,n=e.split(",").map((function(t){return t.trim()})),o={},i=_createForOfIteratorHelper(n);try{for(i.s();!(r=i.n()).done;){var a=r.value;if(-1!==a.indexOf("=")){var s=_slicedToArray(a.split("="),2),c=s[0],u=s[1];o[c.trim()]=u.trim()}}}catch(d){i.e(d)}finally{i.f()}var f={name:n[0].split("=")[0].trim(),type:"vmess",server:n[1],port:n[2],cipher:n[3],uuid:n[4].match(/^"(.*)"$/)[1],tls:"over-tls"===o.obfs||"wss"===o.obfs};if(void 0!==o["udp-relay"]&&(f.udp=JSON.parse(o["udp-relay"])),void 0!==o["fast-open"]&&(f.udp=JSON.parse(o["fast-open"])),"ws"===o.obfs||"wss"===o.obfs){f.network="ws",f["ws-opts"].path=(o["obfs-path"]||'"/"').match(/^"(.*)"$/)[1];var l=o["obfs-header"];l&&-1!==l.indexOf("Host")&&(l=l.match(/Host:\s*([a-zA-Z0-9-.]*)/)[1]),f["ws-opts"].headers={Host:l||f.server}}return f.tls&&"false"===o['"tls-verification"']&&(f["skip-cert-verify"]=!0),f.tls&&o["obfs-host"]&&(f.sni=o["obfs-host"]),f}var p=JSON.parse(e),h={name:p.ps,type:"vmess",server:p.add,port:p.port,cipher:"auto",uuid:p.id,alterId:p.aid||0,tls:"tls"===p.tls||!0===p.tls,supported:{}};return"ws"===p.net&&(h.network="ws",h["ws-opts"]={path:p.path,headers:{Host:p.host||p.add}},h.tls&&p.host&&(h.sni=p.host)),!1===p.verify_cert&&(h["skip-cert-verify"]=!0),h}},{name:"URI Trojan Parser",test:function(t){return/^trojan:\/\//.test(t)},parse:function(t){var e=_slicedToArray((t=t.split("trojan://")[1]).split("@")[1].split("?")[0].split(":"),2),r=e[0],n=e[1],o=decodeURIComponent(t.split("#")[1].trim()),i=t.split("?"),a=null;return i.length>1&&(i=i[1].split("#")[0].split("&"),a=new Map(i.map((function(t){return t.split("=")}))).get("sni")),{name:o||"[Trojan] ".concat(r),type:"trojan",server:r,port:n,password:t.split("@")[0],sni:a,supported:{}}}},{name:"Clash Parser",test:function(t){try{JSON.parse(t)}catch(e){return!1}return!0},parse:function(t){return JSON.parse(t)}},{name:"Surge SS Parser",test:function(t){return/^.*=\s*ss/.test(t.split(",")[0])},parse:function(t){var e=r(t),n={name:e.name,type:"ss",server:e.server,port:e.port,cipher:e["encrypt-method"],password:e.password,tfo:JSON.parse(e.tfo||"false"),udp:JSON.parse(e["udp-relay"]||"false")};return e.obfs&&(n.plugin="obfs",n["plugin-opts"]={mode:e.obfs,host:e["obfs-host"]}),n}},{name:"Surge VMess Parser",test:function(t){return/^.*=\s*vmess/.test(t.split(",")[0])&&-1!==t.indexOf("username")},parse:function(t){var e=r(t),n={name:e.name,type:"vmess",server:e.server,port:e.port,uuid:e.username,alterId:0,cipher:"none",tls:JSON.parse(e.tls||"false"),tfo:JSON.parse(e.tfo||"false")};if(n.tls&&(void 0!==e["skip-cert-verify"]&&(n["skip-cert-verify"]=!0===e["skip-cert-verify"]||"1"===e["skip-cert-verify"]),n.sni=e.sni||e.server),JSON.parse(e.ws||"false")){n.network="ws",n["ws-opts"]={path:e["ws-path"]};var o=e["ws-headers"].match(/(,|^|\s)*HOST:\s*(.*?)(,|$)/),i=o?o[2]:n.server;n["ws-opts"].headers={Host:i||e.server}}return n}},{name:"Surge Trojan Parser",test:function(t){return/^.*=\s*trojan/.test(t.split(",")[0])&&-1!==t.indexOf("sni")},parse:function(t){var e=r(t),n={name:e.name,type:"trojan",server:e.server,port:e.port,password:e.password,sni:e.sni||e.server,tfo:JSON.parse(e.tfo||"false")};return void 0!==e["skip-cert-verify"]&&(n["skip-cert-verify"]=!0===e["skip-cert-verify"]||"1"===e["skip-cert-verify"]),n}},{name:"Surge HTTP Parser",test:function(t){return/^.*=\s*http/.test(t.split(",")[0])&&!e().test(t)},parse:function(t){var e=r(t),n={name:e.name,type:"http",server:e.server,port:e.port,tls:JSON.parse(e.tls||"false"),tfo:JSON.parse(e.tfo||"false")};return n.tls&&(void 0!==e["skip-cert-verify"]&&(n["skip-cert-verify"]=!0===e["skip-cert-verify"]||"1"===e["skip-cert-verify"]),n.sni=e.sni||e.server),e.username&&"none"!==e.username&&(n.username=e.username),e.password&&"none"!==e.password&&(n.password=e.password),n}},{name:"Loon SS Parser",test:function(t){return"shadowsocks"===t.split(",")[0].split("=")[1].trim().toLowerCase()},parse:function(t){var e=t.split("=")[1].split(","),r={name:t.split("=")[0].trim(),type:"ss",server:e[1],port:e[2],cipher:e[3],password:e[4].replace(/"/g,"")};return e.length>5&&(r.plugin="obfs",r["plugin-opts"]={mode:e[5],host:e[6]}),r}},{name:"Loon SSR Parser",test:function(t){return"shadowsocksr"===t.split(",")[0].split("=")[1].trim().toLowerCase()},parse:function(t){var e=t.split("=")[1].split(",");return{name:t.split("=")[0].trim(),type:"ssr",server:e[1],port:e[2],cipher:e[3],password:e[4].replace(/"/g,""),protocol:e[5],"protocol-param":e[6].match(/{(.*)}/)[1],supported:{Surge:!1},obfs:e[7],"obfs-param":e[8].match(/{(.*)}/)[1]}}},{name:"Loon VMess Parser",test:function(t){return/^.*=\s*vmess/i.test(t.split(",")[0])&&-1===t.indexOf("username")},parse:function(t){var e,r=t.split("=")[1].split(","),n={name:t.split("=")[0].trim(),type:"vmess",server:r[1],port:r[2],cipher:r[3]||"none",uuid:r[4].replace(/"/g,""),alterId:0},o=_createForOfIteratorHelper(r=r.splice(5));try{for(o.s();!(e=o.n()).done;){var i=_slicedToArray(e.value.split(":"),2),a=i[0],s=i[1];r[a]=s}}catch(c){o.e(c)}finally{o.f()}switch(n.tls=JSON.parse(r["over-tls"]||"false"),n.tls&&(n.sni=r["tls-name"]||n.server,n["skip-cert-verify"]=JSON.parse(r["skip-cert-verify"]||"false")),r.transport){case"tcp":break;case"ws":n.network=r.transport,n["ws-opts"]={path:r.path,headers:{Host:r.host}}}return n.tls&&(n["skip-cert-verify"]=JSON.parse(r["skip-cert-verify"]||"false")),n}},{name:"Loon Trojan Parser",test:function(t){return/^.*=\s*trojan/i.test(t.split(",")[0])&&-1===t.indexOf("password")},parse:function(t){var e=t.split("=")[1].split(","),r={name:t.split("=")[0].trim(),type:"trojan",server:e[1],port:e[2],password:e[3].replace(/"/g,""),sni:e[1],"skip-cert-verify":JSON.parse(e["skip-cert-verify"]||"false")};if(e.length>4){var n=_slicedToArray(e[4].split(":"),2),o=n[0],i=n[1];if("tls-name"!==o)throw new Error("Unknown option ".concat(o," for line: \n").concat(t));r.sni=i}return r}},e(),{name:"QX SS Parser",test:function(t){return/^shadowsocks\s*=/.test(t.split(",")[0].trim())&&-1===t.indexOf("ssr-protocol")},parse:function(e){var r=t(e),n={name:r.tag,type:"ss",server:r.server,port:r.port,cipher:r.method,password:r.password,udp:JSON.parse(r["udp-relay"]||"false"),tfo:JSON.parse(r["fast-open"]||"false"),supported:{}};if(r.obfs)switch(n["plugin-opts"]={host:r["obfs-host"]||n.server},r.obfs){case"http":case"tls":n.plugin="obfs",n["plugin-opts"].mode=r.obfs;break;case"ws":case"wss":n["plugin-opts"]=___objectSpread_37(___objectSpread_37({},n["plugin-opts"]),{},{mode:"websocket",path:r["obfs-uri"]||"/",tls:"wss"===r.obfs}),n["plugin-opts"].tls&&void 0!==r["tls-verification"]&&(n["plugin-opts"]["skip-cert-verify"]=r["tls-verification"]),n.plugin="v2ray-plugin",n.supported.Surge=!1,n.supported.Loon=!1}return n}},{name:"QX SSR Parser",test:function(t){return/^shadowsocks\s*=/.test(t.split(",")[0].trim())&&-1!==t.indexOf("ssr-protocol")},parse:function(e){var r=t(e),n={name:r.tag,type:"ssr",server:r.server,port:r.port,cipher:r.method,password:r.password,protocol:r["ssr-protocol"],obfs:"plain","protocol-param":r["ssr-protocol-param"],udp:JSON.parse(r["udp-relay"]||"false"),tfo:JSON.parse(r["fast-open"]||"false"),supported:{Surge:!1}};return r.obfs&&(n.obfs=r.obfs,n["obfs-param"]=r["obfs-host"]),n}},{name:"QX VMess Parser",test:function(t){return/^vmess\s*=/.test(t.split(",")[0].trim())},parse:function(e){var r=t(e),n={type:"vmess",name:r.tag,server:r.server,port:r.port,cipher:r.method||"none",uuid:r.password,alterId:0,tls:"over-tls"===r.obfs||"wss"===r.obfs,udp:JSON.parse(r["udp-relay"]||"false"),tfo:JSON.parse(r["fast-open"]||"false")};return n.tls&&(n.sni=r["obfs-host"]||r.server,n["skip-cert-verify"]=!JSON.parse(r["tls-verification"]||"true")),"ws"!==r.obfs&&"wss"!==r.obfs||(n.network="ws",n["ws-opts"]={path:r["obfs-uri"],headers:{Host:r["obfs-host"]||r.server}}),n}},{name:"QX Trojan Parser",test:function(t){return/^trojan\s*=/.test(t.split(",")[0].trim())},parse:function(e){var r=t(e),n={type:"trojan",name:r.tag,server:r.server,port:r.port,password:r.password,sni:r["tls-host"]||r.server,udp:JSON.parse(r["udp-relay"]||"false"),tfo:JSON.parse(r["fast-open"]||"false")};return n["skip-cert-verify"]=!JSON.parse(r["tls-verification"]||"true"),n}},{name:"QX HTTP Parser",test:function(t){return/^http\s*=/.test(t.split(",")[0].trim())},parse:function(e){var r=t(e),n={type:"http",name:r.tag,server:r.server,port:r.port,tls:JSON.parse(r["over-tls"]||"false"),udp:JSON.parse(r["udp-relay"]||"false"),tfo:JSON.parse(r["fast-open"]||"false")};return r.username&&"none"!==r.username&&(n.username=r.username),r.password&&"none"!==r.password&&(n.password=r.password),n.tls&&(n.sni=r["tls-host"]||n.server,n["skip-cert-verify"]=!JSON.parse(r["tls-verification"]||"true")),n}}];var n}(),PROXY_PROCESSORS=function(){function SetPropertyOperator(t){var e=t.key,r=t.value;return{name:"Set Property Operator",func:function(t){return t.map((function(t){return t[e]=r,t}))}}}function FlagOperator(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return{name:"Flag Operator",func:function(e){return e.map((function(e){if(t){var r=(0,_$geo_48.getFlag)(e.name);e.name=removeFlag(e.name),e.name=r+" "+e.name,e.name=e.name.replace(/\ud83c\uddf9\ud83c\uddfc/g,"\ud83c\udde8\ud83c\uddf3")}else e.name=removeFlag(e.name);return e}))}}}function HandleDuplicateOperator(t){var e=___objectSpread_37(___objectSpread_37({},{action:"rename",template:"0 1 2 3 4 5 6 7 8 9",link:"-",position:"back"}),t),r=e.action,n=e.template,o=e.link,i=e.position;return{name:"Handle Duplicate Operator",func:function(t){if("delete"===r){var e={};return t.filter((function(t){return!e[t.name]&&(e[t.name]=!0,!0)}))}if("rename"===r){var a=n.split(" "),s={},c=0;t.forEach((function(t){void 0===s[t.name]?s[t.name]=1:s[t.name]++,c=Math.max(s[t.name].toString().length,c)}));var u={};return t.map((function(t){if(s[t.name]>1){void 0===u[t.name]&&(u[t.name]=1);for(var e="",r=u[t.name]++,n=0;r>0;)e=a[r%10]+e,r=parseInt(r/10),n++;for(;n++0&&void 0!==arguments[0]?arguments[0]:"asc";return{name:"Sort Operator",func:function(e){switch(t){case"asc":case"desc":return e.sort((function(e,r){return(e.name>r.name?1:-1)*("desc"===t?-1:1)}));case"random":return shuffle(e);default:throw new Error("Unknown sort option: "+t)}}}}function RegexSortOperator(t){return{name:"Regex Sort Operator",func:function(e){return t=t.map((function(t){return buildRegex(t)})),e.sort((function(e,r){var n=getRegexOrder(t,e.name),o=getRegexOrder(t,r.name);return n&&!o?-1:o&&!n?1:n&&o?n1?e-1:0),n=1;n1&&void 0!==w[1]?w[1]:[],n=w.length>2?w[2]:void 0,o=_createForOfIteratorHelper(r),t.prev=3,o.s();case 5:if((i=o.n()).done){t.next=38;break}if(a=i.value,s=void 0,c={},-1===a.type.indexOf("Script")){t.next=29;break}if(u=a.args,f=u.mode,l=u.content,"link"!==f){t.next=28;break}if((h=(p=l).split("#")).length>1){d=_createForOfIteratorHelper(h[1].split("&"));try{for(d.s();!(_=d.n()).done;)y=_.value,v=y.split("=")[0],m=y.split("=")[1]||!0,c[v]=m}catch(b){d.e(b)}finally{d.f()}}return t.prev=15,t.next=18,(0,___download_37.default)(p.split("#")[0]);case 18:s=t.sent,_app.default.info("Script loaded: >>>\n ".concat(s)),t.next=26;break;case 22:return t.prev=22,t.t0=t.catch(15),_app.default.error("Error when downloading remote script: ".concat(a.args.content,".\n Reason: ").concat(t.t0)),t.abrupt("continue",36);case 26:t.next=29;break;case 28:s=l;case 29:if(PROXY_PROCESSORS[a.type]){t.next=32;break}return _app.default.error('Unknown operator: "'.concat(a.type,'"')),t.abrupt("continue",36);case 32:_app.default.info('Applying "'.concat(a.type,'" with arguments:\n >>> ').concat(JSON.stringify(a.args,null,2)||"None")),g=void 0,g=-1!==a.type.indexOf("Script")?PROXY_PROCESSORS[a.type](s,n,c):PROXY_PROCESSORS[a.type](a.args),e=__ApplyProcessor_37(g,e);case 36:t.next=5;break;case 38:t.next=43;break;case 40:t.prev=40,t.t1=t.catch(3),o.e(t.t1);case 43:return t.prev=43,o.f(),t.finish(43);case 46:return t.abrupt("return",e);case 47:case"end":return t.stop()}}),t,null,[[3,40,43,46],[15,22]])})))).apply(this,arguments)}return{parse:function(e){e=function(t){var e,r=_createForOfIteratorHelper(PROXY_PREPROCESSORS);try{for(r.s();!(e=r.n()).done;){var n=e.value;try{if(n.test(t))return _app.default.info("Pre-processor [".concat(n.name,"] activated")),n.parse(t)}catch(o){_app.default.error("Parser [".concat(n.name,"] failed\n Reason: ").concat(o))}}}catch(i){r.e(i)}finally{r.f()}return t}(e);var r,n,o=[],i=_createForOfIteratorHelper(e.split("\n"));try{for(i.s();!(n=i.n()).done;){var a=n.value;if(0!==(a=a.trim()).length){var s=r&&t(r,a);if(!s){var c,u=_createForOfIteratorHelper(PROXY_PARSERS);try{for(u.s();!(c=u.n()).done;){var f=c.value;if(t(f,a)){r=f,s=!0,_app.default.info("Proxy parser: ".concat(f.name," is activated"));break}}}catch(p){u.e(p)}finally{u.f()}}if(s)try{var l=r.parse(a);l||_app.default.error("Parser ".concat(r.name," return nothing for \n").concat(a,"\n")),o.push(l)}catch(p){_app.default.error("Failed to parse line: \n ".concat(a,"\n Reason: ").concat(p.stack))}else _app.default.error("Failed to find a rule to parse line: \n".concat(a,"\n"))}}}catch(p){i.e(p)}finally{i.f()}return o},process:function(t){return e.apply(this,arguments)},produce:function(t,e){var r=PROXY_PRODUCERS[e];if(!r)throw new Error("Target platform: ".concat(e," is not supported!"));return t=t.filter((function(t){return!(t.supported&&!1===t.supported[e])})),_app.default.info("Producing proxies for target: ".concat(e)),void 0===r.type||"SINGLE"===r.type?t.map((function(t){try{return r.produce(t)}catch(e){return _app.default.error("Cannot produce proxy: ".concat(JSON.stringify(t,null,2),"\nReason: ").concat(e)),""}})).filter((function(t){return t.length>0})).join("\n"):"ALL"===r.type?r.produce(t):void 0}}}(),keys;function __ApplyProcessor_37(t,e){return-1!==t.name.indexOf("Filter")?function(t,e){var r=(0,_$logical_50.FULL)(e.length,!0);try{r=(0,_$logical_50.AND)(r,t.func(e))}catch(n){console.log("Cannot apply filter ".concat(t.name,"\n Reason: ").concat(n))}return e.filter((function(t,e){return r[e]}))}(t,e):-1!==t.name.indexOf("Operator")?function(t,e){var r=clone(e);try{var n=t.func(r);n&&(r=n)}catch(o){console.log("Cannot apply operator ".concat(t.name,"! Reason: ").concat(o))}return r}(t,e):void 0}function shuffle(t){for(var e,r,n=t.length;0!==n;)r=Math.floor(Math.random()*n),e=t[n-=1],t[n]=t[r],t[r]=e;return t}function clone(t){return JSON.parse(JSON.stringify(t))}function removeFlag(t){return t.replace(/[\uD83C][\uDDE6-\uDDFF][\uD83C][\uDDE6-\uDDFF]/g,"").trim()}_$proxyUtils_37.ProxyUtils=ProxyUtils;var _$ruleUtils_38={};function ___typeof_38(t){return(___typeof_38="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}Object.defineProperty(_$ruleUtils_38,"__esModule",{value:!0}),_$ruleUtils_38.RuleUtils=void 0;var obj,___app_38=(obj=_$app_36)&&obj.__esModule?obj:{default:obj};function ___regeneratorRuntime_38(){___regeneratorRuntime_38=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(x){s=function(t,e,r){return t[e]=r}}function c(t,e,r,n){var o=e&&e.prototype instanceof l?e:l,i=Object.create(o.prototype),a=new S(n||[]);return i._invoke=function(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=w(a,r);if(s){if(s===f)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=u(t,e,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===f)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}(t,r,a),i}function u(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(x){return{type:"throw",arg:x}}}t.wrap=c;var f={};function l(){}function p(){}function h(){}var d={};s(d,o,(function(){return this}));var _=Object.getPrototypeOf,y=_&&_(_(O([])));y&&y!==e&&r.call(y,o)&&(d=y);var v=h.prototype=l.prototype=Object.create(d);function m(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function g(t,e){var n;this._invoke=function(o,i){function a(){return new e((function(n,a){!function n(o,i,a,s){var c=u(t[o],t,i);if("throw"!==c.type){var f=c.arg,l=f.value;return l&&"object"==___typeof_38(l)&&r.call(l,"__await")?e.resolve(l.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(l).then((function(t){f.value=t,a(f)}),(function(t){return n("throw",t,a,s)}))}s(c.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function w(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,w(t,e),"throw"===e.method))return f;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var n=u(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,f;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function b(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(b,this),this.reset(!0)}function O(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function __asyncGeneratorStep_38(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(u){return void r(u)}s.done?e(c):Promise.resolve(c).then(n,o)}function ___createForOfIteratorHelper_38(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return ___arrayLikeToArray_38(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?___arrayLikeToArray_38(t,void 0):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function ___arrayLikeToArray_38(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r/.test(t)},parse:function(t){return""}},{name:"Clash Provider",test:function(t){return 0===t.indexOf("payload:")},parse:function(t){return t.replace("payload:","").replace(/^\s*-\s*/gm,"")}}],RULE_PARSERS=[{name:"Universal Rule Parser",test:function(){return!0},parse:function(t){var e,r=[],n=___createForOfIteratorHelper_38(t.split("\n"));try{for(n.s();!(e=n.n()).done;){var o=e.value;if(0!==(o=o.trim()).length&&!/\s*#/.test(o))try{var i,a=o.split(",").map((function(t){return t.trim()})),s=a[0],c=!1,u=___createForOfIteratorHelper_38(RULE_TYPES_MAPPING);try{for(u.s();!(i=u.n()).done;){var f=i.value;if(f[0].test(s)){c=!0;var l={type:f[1],content:a[1]};"IP-CIDR"!==l.type&&"IP-CIDR6"!==l.type||(l.options=a.slice(2)),r.push(l)}}}catch(p){u.e(p)}finally{u.f()}if(!c)throw new Error("Invalid rule type: "+s)}catch(h){console.error("Failed to parse line: ".concat(o,"\n Reason: ").concat(h))}}}catch(p){n.e(p)}finally{n.f()}return r}}],RULE_PROCESSORS={"Regex Filter":function(t){var e=t.regex,r=void 0===e?[]:e,n=t.keep,o=void 0===n||n;return{name:"Regex Filter",func:function(t){return t.map((function(t){var e=r.some((function(e){return(e=new RegExp(e)).test(t)}));return o?e:!e}))}}},"Remove Duplicate Filter":function(){return{name:"Remove Duplicate Filter",func:function(t){var e=new Set,r=[];return t.forEach((function(t){var n=t.options||[];n.sort();var o="".concat(t.type,",").concat(t.content,",").concat(JSON.stringify(n));e.has(o)||(r.push(t),e.add(o))})),r}}},"Type Filter":function(t){return{name:"Type Filter",func:function(e){return e.map((function(e){return t.some((function(t){return e.type===t}))}))}}},"Regex Replace Operator":function(t){return{name:"Regex Rename Operator",func:function(e){return e.map((function(e){var r,n=___createForOfIteratorHelper_38(t);try{for(n.s();!(r=n.n()).done;){var o=r.value,i=o.expr,a=o.now;e.content=e.content.replace(new RegExp(i,"g"),a).trim()}}catch(s){n.e(s)}finally{n.f()}return e}))}}}},RULE_PRODUCERS={QX:{type:"SINGLE",func:function(t){return-1!==["URL-REGEX","DEST-PORT","SRC-IP","IN-PORT","PROTOCOL"].indexOf(t.type)?null:"".concat({"DOMAIN-KEYWORD":"HOST-KEYWORD","DOMAIN-SUFFIX":"HOST-SUFFIX",DOMAIN:"HOST","IP-CIDR6":"IP6-CIDR"}[t.type]||t.type,",").concat(t.content,",SUB-STORE")}},Surge:{type:"SINGLE",func:function(t){var e="".concat(t.type,",").concat(t.content);return"IP-CIDR"!==t.type&&"IP-CIDR6"!==t.type||(e+=t.options?",".concat(t.options[0]):""),e}},Loon:{type:"SINGLE",func:function(t){return-1!==["DEST-PORT","SRC-IP","IN-PORT","PROTOCOL"].indexOf(t.type)?null:function(t){var e="".concat(t.type,",").concat(t.content);return"IP-CIDR"!==t.type&&"IP-CIDR6"!==t.type||(e+=t.options?",".concat(t.options[0]):""),e}(t)}},Clash:{type:"ALL",func:function(t){var e={"DEST-PORT":"DST-PORT","SRC-IP":"SRC-IP-CIDR","IN-PORT":"SRC-PORT"},r={payload:t.map((function(t){var r="".concat(e[t.type]||t.type,",").concat(t.content);return"IP-CIDR"!==t.type&&"IP-CIDR6"!==t.type||(r+=t.options?",".concat(t.options[0]):""),r}))};return YAML.stringify(r)}}},RuleUtils=function(){function t(){var e;return e=___regeneratorRuntime_38().mark((function t(e,r){var n,o,i,a;return ___regeneratorRuntime_38().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=___createForOfIteratorHelper_38(r),t.prev=1,n.s();case 3:if((o=n.n()).done){t.next=13;break}if(i=o.value,RULE_PROCESSORS[i.type]){t.next=8;break}return console.error("Unknown operator: ".concat(i.type,"!")),t.abrupt("continue",11);case 8:a=RULE_PROCESSORS[i.type](i.args),___app_38.default.info('Applying "'.concat(i.type,'" with arguments: \n >>> ').concat(JSON.stringify(i.args)||"None")),e=ApplyProcessor(a,e);case 11:t.next=3;break;case 13:t.next=18;break;case 15:t.prev=15,t.t0=t.catch(1),n.e(t.t0);case 18:return t.prev=18,n.f(),t.finish(18);case 21:return t.abrupt("return",e);case 22:case"end":return t.stop()}}),t,null,[[1,15,18,21]])})),(t=function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(t){__asyncGeneratorStep_38(i,n,o,a,s,"next",t)}function s(t){__asyncGeneratorStep_38(i,n,o,a,s,"throw",t)}a(void 0)}))}).apply(this,arguments)}return{parse:function(t){t=function(t){var e,r=___createForOfIteratorHelper_38(RULE_PREPROCESSORS);try{for(r.s();!(e=r.n()).done;){var n=e.value;try{if(n.test(t))return ___app_38.default.info("Pre-processor [".concat(n.name,"] activated")),n.parse(t)}catch(o){___app_38.default.error("Parser [".concat(n.name,"] failed\n Reason: ").concat(o))}}}catch(i){r.e(i)}finally{r.f()}return t}(t);var e,r=___createForOfIteratorHelper_38(RULE_PARSERS);try{for(r.s();!(e=r.n()).done;){var n=e.value,o=void 0;try{o=n.test(t)}catch(i){o=!1}if(o)return ___app_38.default.info("Rule parser [".concat(n.name,"] is activated!")),n.parse(t)}}catch(i){r.e(i)}finally{r.f()}},process:function(e,r){return t.apply(this,arguments)},produce:function(t,e){var r=RULE_PRODUCERS[e];if(!r)throw new Error("Target platform: ".concat(e," is not supported!"));return void 0===r.type||"SINGLE"===r.type?t.map((function(t){try{return r.func(t)}catch(e){return console.log("ERROR: cannot produce rule: ".concat(JSON.stringify(t),"\nReason: ").concat(e)),""}})).filter((function(t){return t.length>0})).join("\n"):"ALL"===r.type?r.func(t):void 0}}}();_$ruleUtils_38.RuleUtils=RuleUtils;var _$gist_49={};function ___typeof_49(t){return(___typeof_49="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ___createForOfIteratorHelper_49(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return ___arrayLikeToArray_49(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?___arrayLikeToArray_49(t,void 0):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function ___arrayLikeToArray_49(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function __asyncGeneratorStep_49(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(u){return void r(u)}s.done?e(c):Promise.resolve(c).then(n,o)}function ___asyncToGenerator_49(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){__asyncGeneratorStep_49(i,n,o,a,s,"next",t)}function s(t){__asyncGeneratorStep_49(i,n,o,a,s,"throw",t)}a(void 0)}))}}Object.defineProperty(_$gist_49,"__esModule",{value:!0}),_$gist_49.default=function(t){var e,r,n=t.token,o=t.key,i=(0,_$openApi_51.HTTP)({baseURL:"https://api.github.com",headers:{Authorization:"token ".concat(n),"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/537.36"},events:{onResponse:function(t){return/^[45]/.test(String(t.statusCode))?Promise.reject("ERROR: ".concat(JSON.parse(t.body).message)):t}}});function a(){return s.apply(this,arguments)}function s(){return(s=___asyncToGenerator_49(___regeneratorRuntime_49().mark((function t(){return ___regeneratorRuntime_49().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",i.get("/gists").then((function(t){var e,r=___createForOfIteratorHelper_49(JSON.parse(t.body));try{for(r.s();!(e=r.n()).done;){var n=e.value;if(n.description===o)return n.id}}catch(i){r.e(i)}finally{r.f()}return-1})));case 1:case"end":return t.stop()}}),t)})))).apply(this,arguments)}this.upload=(r=___asyncToGenerator_49(___regeneratorRuntime_49().mark((function t(e){var r;return ___regeneratorRuntime_49().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a();case 2:if(-1!==(r=t.sent)){t.next=7;break}return t.abrupt("return",i.post({url:"/gists",body:JSON.stringify({description:o,public:!1,files:e})}));case 7:return t.abrupt("return",i.patch({url:"/gists/".concat(r),body:JSON.stringify({files:e})}));case 8:case"end":return t.stop()}}),t)}))),function(t){return r.apply(this,arguments)}),this.download=(e=___asyncToGenerator_49(___regeneratorRuntime_49().mark((function t(e){var r,n,o,s;return ___regeneratorRuntime_49().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a();case 2:if(-1!==(r=t.sent)){t.next=7;break}return t.abrupt("return",Promise.reject("\u672a\u627e\u5230Gist\u5907\u4efd\uff01"));case 7:return t.prev=7,t.next=10,i.get("/gists/".concat(r)).then((function(t){return JSON.parse(t.body)}));case 10:return n=t.sent,o=n.files,s=o[e].raw_url,t.next=15,i.get(s).then((function(t){return t.body}));case 15:return t.abrupt("return",t.sent);case 18:return t.prev=18,t.t0=t.catch(7),t.abrupt("return",Promise.reject(t.t0));case 21:case"end":return t.stop()}}),t,null,[[7,18]])}))),function(t){return e.apply(this,arguments)})};var _$express_47={};Object.defineProperty(_$express_47,"__esModule",{value:!0}),_$express_47.default=express;var _app2=___interopRequireDefault_47(_$app_36);function ___interopRequireDefault_47(t){return t&&t.__esModule?t:{default:t}}function ___classCallCheck_47(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function ___defineProperties_47(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{port:3e3},port=_ref.port,_ENV=(0,_$openApi_51.ENV)(),isNode=_ENV.isNode,DEFAULT_HEADERS={"Content-Type":"text/plain;charset=UTF-8","Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST,GET,OPTIONS,PATCH,PUT,DELETE","Access-Control-Allow-Headers":"Origin, X-Requested-With, Content-Type, Accept"};if(isNode){var express_=eval('require("express")'),bodyParser=eval('require("body-parser")'),_app=express_();return _app.use(bodyParser.json({verify:rawBodySaver})),_app.use(bodyParser.urlencoded({verify:rawBodySaver,extended:!0})),_app.use(bodyParser.raw({verify:rawBodySaver,type:"*/*"})),_app.use((function(t,e,r){e.set(DEFAULT_HEADERS),r()})),_app.start=function(){_app.listen(port,(function(){_app2.default.log("Express started on port: ".concat(port))}))},_app}var handlers=[],METHODS_NAMES=["GET","POST","PUT","DELETE","PATCH","OPTIONS","HEAD'","ALL"],dispatch=function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=e.method,o=e.url,i=e.headers,a=e.body;/json/i.test(i["Content-Type"])&&(a=JSON.parse(a)),n=n.toUpperCase();var s,c=extractURL(o),u=c.path,f=c.query,l=null,p=0;for(s=r;sp&&(l=handlers[s],p=h.split("/").length)}if(l){var d=function(){t(n,o,s)},_={method:n,url:o,path:u,query:f,params:extractPathParams(l.pattern,u),headers:i,body:a},y=Response(),v=l.callback,m=function(t){y.status(500).json({status:"failed",message:"Internal Server Error: ".concat(t)})};if("AsyncFunction"===v.constructor.name)v(_,y,d).catch(m);else try{v(_,y,d)}catch(g){m(g)}}else Response().status(404).json({status:"failed",message:"ERROR: 404 not found"})},app={};return METHODS_NAMES.forEach((function(t){app[t.toLowerCase()]=function(e,r){handlers.push({method:t,pattern:e,callback:r})}})),app.route=function(t){var e={};return METHODS_NAMES.forEach((function(r){e[r.toLowerCase()]=function(n){return handlers.push({method:r,pattern:t,callback:n}),e}})),e},app.start=function(){dispatch($request)},app;function rawBodySaver(t,e,r,n){r&&r.length&&(t.rawBody=r.toString(n||"utf8"))}function Response(){var t=200,e=(0,_$openApi_51.ENV)(),r=e.isQX,n=e.isLoon,o=e.isSurge,i=DEFAULT_HEADERS,a={200:"HTTP/1.1 200 OK",201:"HTTP/1.1 201 Created",302:"HTTP/1.1 302 Found",307:"HTTP/1.1 307 Temporary Redirect",308:"HTTP/1.1 308 Permanent Redirect",404:"HTTP/1.1 404 Not Found",500:"HTTP/1.1 500 Internal Server Error"};return new(function(){function e(){___classCallCheck_47(this,e)}return ___createClass_47(e,[{key:"status",value:function(e){return t=e,this}},{key:"send",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",s={status:r?a[t]:t,body:e,headers:i};r?$done(s):(n||o)&&$done({response:s})}},{key:"end",value:function(){this.send()}},{key:"html",value:function(t){this.set("Content-Type","text/html;charset=UTF-8"),this.send(t)}},{key:"json",value:function(t){this.set("Content-Type","application/json;charset=UTF-8"),this.send(JSON.stringify(t))}},{key:"set",value:function(t,e){return i[t]=e,this}}]),e}())}function patternMatched(t,e){if(t instanceof RegExp&&t.test(e))return!0;if("/"===t)return!0;if(-1===t.indexOf(":")){for(var r=e.split("/"),n=t.split("/"),o=0;o=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(s&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),E(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function __asyncGeneratorStep_42(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(u){return void r(u)}s.done?e(c):Promise.resolve(c).then(n,o)}function ___asyncToGenerator_42(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){__asyncGeneratorStep_42(i,n,o,a,s,"next",t)}function s(t){__asyncGeneratorStep_42(i,n,o,a,s,"throw",t)}a(void 0)}))}}function getEnv(t,e){var r=(0,_$openApi_51.ENV)(),n="Node";r.isNode&&(n="Node"),r.isQX&&(n="QX"),r.isLoon&&(n="Loon"),r.isSurge&&(n="Surge"),e.json({backend:n})}function gistBackup(t,e){return _gistBackup.apply(this,arguments)}function _gistBackup(){return(_gistBackup=___asyncToGenerator_42(___regeneratorRuntime_42().mark((function t(e,r){var n,o,i,a,s,c,u;return ___regeneratorRuntime_42().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.query.action,o=___app_42.default.read(_$constants_41.SETTINGS_KEY),i=o.gistToken){t.next=6;break}r.status(500).json({status:"failed",message:"\u672a\u627e\u5230Gist\u5907\u4efdToken!"}),t.next=35;break;case 6:a=new ___gist_42.default({token:i,key:_$constants_41.GIST_BACKUP_KEY}),t.prev=7,t.t0=n,t.next="upload"===t.t0?11:"download"===t.t0?20:27;break;case 11:return(c=___app_42.default.read(_$constants_41.SETTINGS_KEY)).syncTime=(new Date).getTime(),___app_42.default.write(c,_$constants_41.SETTINGS_KEY),s=___app_42.default.read("#sub-store"),___app_42.default.env.isNode&&(s=JSON.stringify(___app_42.default.cache,null," ")),___app_42.default.info("\u4e0a\u4f20\u5907\u4efd\u4e2d..."),t.next=19,a.upload((f={},l=_$constants_41.GIST_BACKUP_FILE_NAME,p={content:s},l in f?Object.defineProperty(f,l,{value:p,enumerable:!0,configurable:!0,writable:!0}):f[l]=p,f));case 19:return t.abrupt("break",27);case 20:return ___app_42.default.info("\u8fd8\u539f\u5907\u4efd\u4e2d..."),t.next=23,a.download(_$constants_41.GIST_BACKUP_FILE_NAME);case 23:return s=t.sent,___app_42.default.write(s,"#sub-store"),___app_42.default.env.isNode&&(s=JSON.parse(s),Object.keys(s).forEach((function(t){___app_42.default.write(s[t],t)}))),t.abrupt("break",27);case 27:r.json({status:"success"}),t.next=35;break;case 30:t.prev=30,t.t1=t.catch(7),u="".concat("upload"===n?"\u4e0a\u4f20":"\u4e0b\u8f7d","\u5907\u4efd\u5931\u8d25\uff01").concat(t.t1),___app_42.default.error(u),r.status(500).json({status:"failed",message:u});case 35:case"end":return t.stop()}var f,l,p}),t,null,[[7,30]])})))).apply(this,arguments)}var _$main_45={},__obj_45,_facade=(__obj_45=_$facade_42)&&__obj_45.__esModule?__obj_45:{default:__obj_45};console.log("\n\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\n \ud835\udc7a\ud835\udc96\ud835\udc83-\ud835\udc7a\ud835\udc95\ud835\udc90\ud835\udc93\ud835\udc86 \xa9 \ud835\udc77\ud835\udc86\ud835\udc8f\ud835\udc88-\ud835\udc80\ud835\udc74\n\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\u2505\n"),(0,_facade.default)()}(); \ No newline at end of file