commit 3624472392a2d97e8e4bb6b068712356f1749d50 Author: sqlnice <472252510@qq.com> Date: Thu May 23 09:41:43 2024 +0800 first commit diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..214388f --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,3 @@ +> 1% +last 2 versions +not dead diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7053c49 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,5 @@ +[*.{js,jsx,ts,tsx,vue}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..17b6be1 --- /dev/null +++ b/.env.development @@ -0,0 +1,6 @@ +/** + * Created by Zhang Haijun on 2018/8/13. + */ +VUE_APP_BASEURL = '/' +VUE_APP_MAPURL = 'http://58.210.9.131:5080' +VUE_APP_MAPTILE = '/SIPGIS/tile-services/TileService/SIPSD_sipmap/MapServer' diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..37b5e55 --- /dev/null +++ b/.env.production @@ -0,0 +1,6 @@ +/** + * Created by Zhang Haijun on 2018/8/13. + */ +VUE_APP_MAPURL = 'http://172.28.76.22' +VUE_APP_MAPTILE = '/SIPGIS/tile-services/TileService/ZNJT_GYYQ/MapServer' +VUE_APP_BASEURL = '/scr-web/' diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..1a93678 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,36 @@ +module.exports = { + root: true, + + env: { + node: true + }, + + extends: [ + 'plugin:vue/essential', + '@vue/standard', + '@vue/typescript' + ], + + parserOptions: { + parser: '@typescript-eslint/parser' + }, + + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-unused-vars': [ + 0, + { + vars: 'all', + args: 'none' + } + ], + semi: 0, + eqeqeq: 0, + 'one-var': 0, + camelcase: 0, + 'no-case-declarations': 0, + 'space-before-function-paren': 0, + 'vue/no-unused-components': 0 + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4e74e95 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules +/screen-web + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md new file mode 100644 index 0000000..6a034a4 --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +# cmp-screen + +## Project setup +``` +yarn install +``` + +### Compiles and hot-reloads for development +``` +yarn serve +``` + +### Compiles and minifies for production +``` +yarn build +``` + +### Lints and fixes files +``` +yarn lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..e955840 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..5f41016 --- /dev/null +++ b/package.json @@ -0,0 +1,69 @@ +{ + "name": "cmp-screen", + "version": "5.6.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "@antv/g6": "3.8.5", + "@antv/l7": "^2.3.7", + "@antv/l7-district": "^2.3.1", + "@antv/l7-maps": "^2.3.7", + "@jiaminghi/data-view": "^2.10.0", + "@turf/turf": "^6.3.0", + "@tweenjs/tween.js": "^18.6.4", + "@vue/composition-api": "^1.0.0-rc.9", + "axios": "^0.21.0", + "cmp-echarts": "2.0.1-5.6-release", + "core-js": "^3.6.5", + "crypto-js": "^4.0.0", + "echarts": "^4.9.0", + "echarts-liquidfill": "^2.0.0", + "element-ui": "^2.14.1", + "heatmapjs": "^2.0.2", + "js-cookie": "^2.2.1", + "leaflet": "^1.7.1", + "lodash-es": "^4.17.15", + "moment": "^2.29.1", + "nprogress": "^0.2.0", + "ol": "^6.5.0", + "ol-echarts": "^2.0.3", + "qs": "^6.9.4", + "stats.js": "^0.17.0", + "three": "0.122.0", + "three-js-csg": "^72.0.0", + "three-orbitcontrols": "^2.110.3", + "vue": "^2.6.11", + "vue-count-to": "^1.0.13", + "vue-router": "^3.2.0", + "vue-seamless-scroll": "^1.1.21", + "vuex": "^3.4.0" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^2.33.0", + "@typescript-eslint/parser": "^2.33.0", + "@vue/cli-plugin-babel": "~4.5.0", + "@vue/cli-plugin-eslint": "~4.5.0", + "@vue/cli-plugin-router": "~4.5.0", + "@vue/cli-plugin-typescript": "~4.5.0", + "@vue/cli-plugin-vuex": "~4.5.0", + "@vue/cli-service": "~4.5.0", + "@vue/eslint-config-standard": "^5.1.2", + "@vue/eslint-config-typescript": "^5.0.2", + "babel-eslint": "^10.1.0", + "compress-webpack-plugin": "^1.0.6", + "eslint": "^6.7.2", + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^4.2.1", + "eslint-plugin-standard": "^4.0.0", + "eslint-plugin-vue": "^6.2.2", + "sass": "^1.26.5", + "sass-loader": "^8.0.2", + "typescript": "^4.2.4", + "vue-template-compiler": "^2.6.11" + } +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..7ad9e66 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,12799 @@ +lockfileVersion: 5.3 + +specifiers: + '@antv/g6': 3.8.5 + '@antv/l7': ^2.3.7 + '@antv/l7-district': ^2.3.1 + '@antv/l7-maps': ^2.3.7 + '@jiaminghi/data-view': ^2.10.0 + '@turf/turf': ^6.3.0 + '@tweenjs/tween.js': ^18.6.4 + '@typescript-eslint/eslint-plugin': ^2.33.0 + '@typescript-eslint/parser': ^2.33.0 + '@vue/cli-plugin-babel': ~4.5.0 + '@vue/cli-plugin-eslint': ~4.5.0 + '@vue/cli-plugin-router': ~4.5.0 + '@vue/cli-plugin-typescript': ~4.5.0 + '@vue/cli-plugin-vuex': ~4.5.0 + '@vue/cli-service': ~4.5.0 + '@vue/composition-api': ^1.0.0-rc.9 + '@vue/eslint-config-standard': ^5.1.2 + '@vue/eslint-config-typescript': ^5.0.2 + axios: ^0.21.0 + babel-eslint: ^10.1.0 + cmp-echarts: 2.0.1-5.6-release + compress-webpack-plugin: ^1.0.6 + core-js: ^3.6.5 + crypto-js: ^4.0.0 + echarts: ^4.9.0 + echarts-liquidfill: ^2.0.0 + element-ui: ^2.14.1 + eslint: ^6.7.2 + eslint-plugin-import: ^2.20.2 + eslint-plugin-node: ^11.1.0 + eslint-plugin-promise: ^4.2.1 + eslint-plugin-standard: ^4.0.0 + eslint-plugin-vue: ^6.2.2 + heatmapjs: ^2.0.2 + js-cookie: ^2.2.1 + leaflet: ^1.7.1 + lodash-es: ^4.17.15 + moment: ^2.29.1 + nprogress: ^0.2.0 + ol: ^6.5.0 + ol-echarts: ^2.0.3 + qs: ^6.9.4 + sass: ^1.26.5 + sass-loader: ^8.0.2 + stats.js: ^0.17.0 + three: 0.122.0 + three-js-csg: ^72.0.0 + three-orbitcontrols: ^2.110.3 + typescript: ^4.2.4 + vue: ^2.6.11 + vue-count-to: ^1.0.13 + vue-router: ^3.2.0 + vue-seamless-scroll: ^1.1.21 + vue-template-compiler: ^2.6.11 + vuex: ^3.4.0 + +dependencies: + '@antv/g6': 3.8.5 + '@antv/l7': 2.3.7 + '@antv/l7-district': 2.3.1_0363a20c2055130599b77b3c65ffe6b3 + '@antv/l7-maps': 2.3.7 + '@jiaminghi/data-view': 2.10.0 + '@turf/turf': 6.3.0 + '@tweenjs/tween.js': 18.6.4 + '@vue/composition-api': 1.0.0-rc.9_vue@2.6.12 + axios: 0.21.0 + cmp-echarts: 2.0.1-5.6-release + core-js: 3.8.0 + crypto-js: 4.0.0 + echarts: 4.9.0 + echarts-liquidfill: 2.0.6_echarts@4.9.0 + element-ui: 2.15.1_vue@2.6.12 + heatmapjs: 2.0.2 + js-cookie: 2.2.1 + leaflet: 1.7.1 + lodash-es: 4.17.15 + moment: 2.29.1 + nprogress: 0.2.0 + ol: 6.5.0 + ol-echarts: 2.0.3_echarts@4.9.0+ol@6.5.0 + qs: 6.9.4 + stats.js: 0.17.0 + three: 0.122.0 + three-js-csg: 72.0.0 + three-orbitcontrols: 2.110.3_three@0.122.0 + vue: 2.6.12 + vue-count-to: 1.0.13 + vue-router: 3.5.1 + vue-seamless-scroll: 1.1.21 + vuex: 3.6.0_vue@2.6.12 + +devDependencies: + '@typescript-eslint/eslint-plugin': 2.34.0_28deb19c9a1505f8eaba25f08813d781 + '@typescript-eslint/parser': 2.34.0_eslint@6.8.0+typescript@4.2.4 + '@vue/cli-plugin-babel': 4.5.9_8ae91920fb9b3c76895c2e8acb765728 + '@vue/cli-plugin-eslint': 4.5.9_6778c0324b153720448c6ab0d5359212 + '@vue/cli-plugin-router': 4.5.9_@vue+cli-service@4.5.9 + '@vue/cli-plugin-typescript': 4.5.13_39528adfb493b7bca2f860161254fc75 + '@vue/cli-plugin-vuex': 4.5.9_@vue+cli-service@4.5.9 + '@vue/cli-service': 4.5.9_78c7ccaaf67bc946810ce1bc44e3e52a + '@vue/eslint-config-standard': 5.1.2_fa13d1400b34f0e8c5b55da32de97275 + '@vue/eslint-config-typescript': 5.1.0_f8b8c2e71389849a7113a6c8d1602ca4 + babel-eslint: 10.1.0_eslint@6.8.0 + compress-webpack-plugin: 1.0.6 + eslint: 6.8.0 + eslint-plugin-import: 2.22.1_eslint@6.8.0 + eslint-plugin-node: 11.1.0_eslint@6.8.0 + eslint-plugin-promise: 4.2.1 + eslint-plugin-standard: 4.1.0_eslint@6.8.0 + eslint-plugin-vue: 6.2.2_eslint@6.8.0 + sass: 1.29.0 + sass-loader: 8.0.2_sass@1.29.0 + typescript: 4.2.4 + vue-template-compiler: 2.6.12 + +packages: + + /@amap/amap-jsapi-loader/0.0.3: + resolution: {integrity: sha512-3Tz50UdmRY2BiONK/mafEQzshYGUinK2hmDlKjYtoJHC/aVydiMOolHENWmP98F603RcrWTM7aLxOFMgesFfug==} + dev: false + + /@ant-design/colors/4.0.5: + resolution: {integrity: sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q==} + dependencies: + tinycolor2: 1.4.2 + dev: false + + /@antv/async-hook/2.1.0: + resolution: {integrity: sha512-q7Rup5jTDAiWh77Xb2vgkCURJGczmU2iWTCkBDq28PuK5KUoenyeGGrFKAVkgqaL663wdpw0Vzn+sYriTfT9hA==} + dependencies: + async: 3.2.0 + dev: false + + /@antv/dom-util/2.0.2: + resolution: {integrity: sha512-i/rh385casRd6OA4rbpbA2jyiwY/w7PtkA+74mH43PiBzOcLpDg1jEWR9dMO0tIqUzHQWWqKNNjmXVubl4GS6g==} + dependencies: + tslib: 1.14.1 + dev: false + + /@antv/event-emitter/0.1.2: + resolution: {integrity: sha512-6C6NJOdoNVptCr5y9BVOhKkCgW7LFs/SpcRyAExUeSjAm0zJqcqNkSIRGsXYhj4PJI+CZICHzGwwiSnIsE68Ug==} + dev: false + + /@antv/g-base/0.5.1: + resolution: {integrity: sha512-gbv+uz/SvzM4/p3PLjAiEZUp6kdzKkCbVWTCdBXB1cvNMttlEzWEB8MOFbEkcIAy7TtjQJJRv8ThI/ngFzU+fg==} + dependencies: + '@antv/event-emitter': 0.1.2 + '@antv/g-math': 0.1.5 + '@antv/matrix-util': 3.1.0-beta.2 + '@antv/path-util': 2.0.8 + '@antv/util': 2.0.9 + '@types/d3-timer': 1.0.10 + d3-ease: 1.0.7 + d3-interpolate: 1.4.0 + d3-timer: 1.0.10 + detect-browser: 5.2.0 + dev: false + + /@antv/g-canvas/0.5.3: + resolution: {integrity: sha512-80k1BbiY05heHKUm4o6IL6KVRZS+uAgzdIF2OaC9grQc6KxrJoK2dCxKpmna3NBHTU9Sm+/rsiGcL7lp7S+ecQ==} + dependencies: + '@antv/g-base': 0.5.1 + '@antv/g-math': 0.1.5 + '@antv/matrix-util': 3.1.0-beta.2 + '@antv/path-util': 2.0.8 + '@antv/util': 2.0.9 + gl-matrix: 3.3.0 + dev: false + + /@antv/g-math/0.1.5: + resolution: {integrity: sha512-29B3p33jzUPIyx1xYfNCexbp7jvahD6bD8FKKyWqfYZHQbvrFfV8ZNUu66RJLfDrl0KaKT6C5whfKs/WrVaflQ==} + dependencies: + '@antv/util': 2.0.9 + gl-matrix: 3.3.0 + dev: false + + /@antv/g-svg/0.5.2: + resolution: {integrity: sha512-T0PYjIM+WX6zv3yUgSkyRcHFq4hlio0MeRGoJR60P5U5MNSdkZnblcu79cpU2i42Z7wBr404Kv1dplCGxC38PA==} + dependencies: + '@antv/g-base': 0.5.1 + '@antv/g-math': 0.1.5 + '@antv/util': 2.0.9 + detect-browser: 5.2.0 + dev: false + + /@antv/g6/3.8.5: + resolution: {integrity: sha512-q+Fomc5ogcdcJ9usgYUVHzB8lFR5XHi4+O1BBFzA4ERgaF255xtrIpP631cD2wjByDq/9MbBCSpFqeOgBg2eOg==} + dependencies: + '@ant-design/colors': 4.0.5 + '@antv/dom-util': 2.0.2 + '@antv/event-emitter': 0.1.2 + '@antv/g-base': 0.5.1 + '@antv/g-canvas': 0.5.3 + '@antv/g-math': 0.1.5 + '@antv/g-svg': 0.5.2 + '@antv/hierarchy': 0.6.6 + '@antv/matrix-util': 2.0.7 + '@antv/path-util': 2.0.8 + '@antv/scale': 0.3.4 + '@antv/util': 2.0.9 + color: 3.1.3 + d3-force: 2.1.1 + dagre: 0.8.5 + insert-css: 2.0.0 + ml-matrix: 6.5.3 + dev: false + + /@antv/gl-matrix/2.7.1: + resolution: {integrity: sha512-oOWcVNlpELIKi9x+Mm1Vwbz8pXfkbJKykoCIOJ/dNK79hSIANbpXJ5d3Rra9/wZqK6MC961B7sybFhPlLraT3Q==} + dev: false + + /@antv/hierarchy/0.6.6: + resolution: {integrity: sha512-ivb9j5aJOogjjU9k7WZXWznevMyqgBbP/Xq2rfXsQFLk4ArABt2ewU6a6jndPOiycGDxppZ8kaYjli70i4HluA==} + dependencies: + '@antv/util': 2.0.9 + dev: false + + /@antv/l7-component/2.3.7: + resolution: {integrity: sha512-Mk3iSP7txogCy1VdZhvgG3yqUSpAHoNmtTr01b9U7mhn+fL15+L9SITtRwHNTs4Oa+f87pvG20F7eea6kMGRaA==} + dependencies: + '@antv/l7-core': 2.3.7 + '@antv/l7-utils': 2.3.7 + '@babel/runtime': 7.12.13 + eventemitter3: 4.0.7 + inversify: 5.0.5 + load-styles: 2.0.0 + dev: false + + /@antv/l7-core/2.3.7: + resolution: {integrity: sha512-tfr+3y8lDcaruBCiHnyKuatkdXIBx4UucXk11aWfUPdt17pDxPVHRaCaiHDn+FGkaTSm+zTDqa4VKNJwqAMZ7A==} + dependencies: + '@antv/async-hook': 2.1.0 + '@antv/l7-utils': 2.3.7 + '@babel/runtime': 7.12.13 + '@mapbox/tiny-sdf': 1.2.2 + ajv: 6.12.6 + element-resize-event: 3.0.3 + eventemitter3: 4.0.7 + gl-matrix: 3.3.0 + hammerjs: 2.0.8 + inversify: 5.0.5 + inversify-inject-decorators: 3.1.0 + lodash: 4.17.20 + merge-json-schemas: 1.0.0 + probe.gl: 3.3.0 + reflect-metadata: 0.1.13 + viewport-mercator-project: 6.2.3 + dev: false + + /@antv/l7-district/2.3.1_0363a20c2055130599b77b3c65ffe6b3: + resolution: {integrity: sha512-ODx5bh1aOUJSk8YQCyuiY6clw3fGxXRXgpCFamH+Y/uVvgHm0yRrNSRsTNCt8IxsbZ7YxKrQ5g+qaqPMqAfK0A==} + peerDependencies: + '@antv/l7': ^2.3.0 + '@antv/l7-maps': ^2.3.0 + dependencies: + '@antv/l7': 2.3.7 + '@antv/l7-maps': 2.3.7 + '@babel/runtime': 7.12.13 + '@turf/circle': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/midpoint': 5.1.5 + '@turf/turf': 5.1.6 + '@types/mapbox-gl': 1.13.0 + eventemitter3: 4.0.7 + geobuf: 3.0.2 + lodash: 4.17.20 + pbf: 3.2.1 + react-dat-gui: 4.0.3 + simplify-geojson: 1.0.4 + transitivePeerDependencies: + - prop-types + - react + - react-dom + dev: false + + /@antv/l7-layers/2.3.7: + resolution: {integrity: sha512-TePrqVFAT/LGci9KdbCtvXgLm8axS9CuGgD5Wbwf0m2BQFB2gPQL8AuzrclgwpqqxnFmV8vJ49bzflXhIvOIfw==} + dependencies: + '@antv/async-hook': 2.1.0 + '@antv/l7-core': 2.3.7 + '@antv/l7-source': 2.3.7 + '@antv/l7-utils': 2.3.7 + '@babel/runtime': 7.12.13 + '@mapbox/martini': 0.2.0 + '@turf/meta': 6.3.0 + d3-array: 1.2.4 + d3-color: 1.4.1 + d3-scale: 2.2.2 + earcut: 2.2.2 + eventemitter3: 4.0.7 + extrude-polyline: 1.0.6 + gl-matrix: 3.3.0 + gl-vec2: 1.3.0 + inversify: 5.0.5 + lodash: 4.17.20 + merge-json-schemas: 1.0.0 + polyline-miter-util: 1.0.1 + reflect-metadata: 0.1.13 + dev: false + + /@antv/l7-map/2.3.7: + resolution: {integrity: sha512-2OMaUv2EoJZDl6VRhxGdDDqXam27JsEspwfAUpwnHrx3zHQTDXYntrhRKwGWcbeM/Fg0jEkcDGSWxSKoKBY3/Q==} + dependencies: + '@antv/l7-utils': 2.3.7 + '@babel/runtime': 7.12.13 + '@mapbox/point-geometry': 0.1.0 + '@mapbox/unitbezier': 0.0.0 + eventemitter3: 4.0.7 + lodash: 4.17.20 + dev: false + + /@antv/l7-maps/2.3.7: + resolution: {integrity: sha512-ANv9YyXeMNoHw7E6mCMqsSGhDn0VfRfuy7DaE47KcR+lF6xV/OoemfABEyGgo2T4SFHsWIQa4dfK0NVJt+/FsQ==} + dependencies: + '@amap/amap-jsapi-loader': 0.0.3 + '@antv/l7-core': 2.3.7 + '@antv/l7-map': 2.3.7 + '@antv/l7-utils': 2.3.7 + '@babel/runtime': 7.12.13 + '@types/amap-js-api': 1.4.9 + '@types/mapbox-gl': 1.13.0 + gl-matrix: 3.3.0 + inversify: 5.0.5 + load-styles: 2.0.0 + mapbox-gl: 1.13.0 + viewport-mercator-project: 6.2.3 + dev: false + + /@antv/l7-renderer/2.3.7: + resolution: {integrity: sha512-tVadRWSt+vGG5abYd6fdAjX8qZgbvBJvvYMZ0TvOxO2iv8Fa2+Hk2LMEr2cKNMSwXxMtdDZG3t3E9qXHlpHBhg==} + dependencies: + '@antv/l7-core': 2.3.7 + '@babel/runtime': 7.12.13 + inversify: 5.0.5 + lodash: 4.17.20 + reflect-metadata: 0.1.13 + regl: 1.7.0 + dev: false + + /@antv/l7-scene/2.3.7: + resolution: {integrity: sha512-728FmYwmrtrXa1AOwpIwxtBkIU0wRduk3kYBjb0qSKRMDUF6wtBp0IenyNju+dWJ0oAKl+10yA52Tt8Wk/cvIA==} + dependencies: + '@antv/l7-component': 2.3.7 + '@antv/l7-core': 2.3.7 + '@antv/l7-maps': 2.3.7 + '@antv/l7-renderer': 2.3.7 + '@antv/l7-utils': 2.3.7 + '@babel/runtime': 7.12.13 + inversify: 5.0.5 + mapbox-gl: 1.13.0 + reflect-metadata: 0.1.13 + dev: false + + /@antv/l7-source/2.3.7: + resolution: {integrity: sha512-McR/xVAvMDHioHc/kG/7Lt8t6jYf7q7oyjosZcangmBFb+AMzoR2YpbbUu/OElu0CtrJwUNwvktBQxF1Zx1BzQ==} + dependencies: + '@antv/async-hook': 2.1.0 + '@antv/l7-core': 2.3.7 + '@antv/l7-utils': 2.3.7 + '@babel/runtime': 7.12.13 + '@mapbox/geojson-rewind': 0.4.1 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + d3-dsv: 1.2.0 + d3-hexbin: 0.2.2 + eventemitter3: 4.0.7 + inversify: 5.0.5 + lodash: 4.17.20 + supercluster: 7.1.2 + dev: false + + /@antv/l7-utils/2.3.7: + resolution: {integrity: sha512-3EuwiO2QIybY07BB0LoAPPdhHvJw8t+UG+DjhwMg64WfQMO+zzgQJ+6vxve8goy2YxUFSgHWBYhUHwXC6Mc7pw==} + dependencies: + '@babel/runtime': 7.12.13 + '@turf/helpers': 6.3.0 + d3-color: 1.4.1 + dev: false + + /@antv/l7/2.3.7: + resolution: {integrity: sha512-8sjIovTze22XGLoS49LYhyiAv/K2TiwgPOzb6Q7yxNQKV9dOoMZQif6kLV92h2jMq0Jm3ShnibfRw3oMJzAJvA==} + dependencies: + '@antv/l7-component': 2.3.7 + '@antv/l7-core': 2.3.7 + '@antv/l7-layers': 2.3.7 + '@antv/l7-maps': 2.3.7 + '@antv/l7-scene': 2.3.7 + '@antv/l7-utils': 2.3.7 + '@babel/runtime': 7.12.13 + dev: false + + /@antv/matrix-util/2.0.7: + resolution: {integrity: sha512-bogifQY8jplWtSTZsPqBOdBlDdkM7IwDqYL8eMYL8OaSyOPCS7l9bnEQjQ9qTAwfCd7wHTuPoCnCpbiR8BYFvQ==} + dependencies: + '@antv/gl-matrix': 2.7.1 + '@antv/util': 2.0.9 + tslib: 1.14.1 + dev: false + + /@antv/matrix-util/3.1.0-beta.2: + resolution: {integrity: sha512-Efwp0ZHxVDK/8RUa/RRWN7HKFHJmjn7Oq5HaNBbCmsxd7JTla3Zsoq1AZrjWMDlq0lplo77urclwI+XIW8NEHw==} + dependencies: + '@antv/util': 2.0.9 + gl-matrix: 3.3.0 + tslib: 1.14.1 + dev: false + + /@antv/path-util/2.0.8: + resolution: {integrity: sha512-g5gt12MY1oEzh/j5XfLNRCfJU7E+Us+2yM5Hqc0y8xeWhb5l013XG5BPV37KmOf6WAys9KNxklNniHCZ6SqCKw==} + dependencies: + '@antv/util': 2.0.9 + tslib: 1.14.1 + dev: false + + /@antv/scale/0.3.4: + resolution: {integrity: sha512-mZaf3MtMoQJtd+KAgTANVbvKpaXVpzLAFbKO/wSKaLFpnWO0bwMVDYzrs+5DZhfEfMbZpP/A7qUZ2/DLh0T3Tg==} + dependencies: + '@antv/util': 2.0.9 + fecha: 4.2.0 + tslib: 2.2.0 + dev: false + + /@antv/util/2.0.9: + resolution: {integrity: sha512-JblWzne7msAPDdxkUhEk8zAz0Wd6igKwqymGbvIeyOydGrhBhGjA3nEayFj4IlG+XixCvGFKsCB4yuFS4glRIA==} + dependencies: + tslib: 1.14.1 + dev: false + + /@babel/code-frame/7.12.13: + resolution: {integrity: sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==} + dependencies: + '@babel/highlight': 7.14.0 + dev: true + + /@babel/compat-data/7.12.7: + resolution: {integrity: sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==} + dev: true + + /@babel/core/7.12.9: + resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.12.13 + '@babel/generator': 7.12.5 + '@babel/helper-module-transforms': 7.12.1 + '@babel/helpers': 7.12.5 + '@babel/parser': 7.12.7 + '@babel/template': 7.12.7 + '@babel/traverse': 7.12.9 + '@babel/types': 7.12.7 + convert-source-map: 1.7.0 + debug: 4.3.1 + gensync: 1.0.0-beta.2 + json5: 2.1.3 + lodash: 4.17.20 + resolve: 1.19.0 + semver: 5.7.1 + source-map: 0.5.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator/7.12.5: + resolution: {integrity: sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==} + dependencies: + '@babel/types': 7.12.7 + jsesc: 2.5.2 + source-map: 0.5.7 + dev: true + + /@babel/helper-annotate-as-pure/7.10.4: + resolution: {integrity: sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==} + dependencies: + '@babel/types': 7.12.7 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor/7.10.4: + resolution: {integrity: sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==} + dependencies: + '@babel/helper-explode-assignable-expression': 7.12.1 + '@babel/types': 7.12.7 + dev: true + + /@babel/helper-compilation-targets/7.12.5_@babel+core@7.12.9: + resolution: {integrity: sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.12.7 + '@babel/core': 7.12.9 + '@babel/helper-validator-option': 7.12.1 + browserslist: 4.14.7 + semver: 5.7.1 + dev: true + + /@babel/helper-create-class-features-plugin/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-function-name': 7.10.4 + '@babel/helper-member-expression-to-functions': 7.12.7 + '@babel/helper-optimise-call-expression': 7.12.7 + '@babel/helper-replace-supers': 7.12.5 + '@babel/helper-split-export-declaration': 7.11.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-create-regexp-features-plugin/7.12.7_@babel+core@7.12.9: + resolution: {integrity: sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.10.4 + regexpu-core: 4.7.1 + dev: true + + /@babel/helper-define-map/7.10.5: + resolution: {integrity: sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==} + dependencies: + '@babel/helper-function-name': 7.10.4 + '@babel/types': 7.12.7 + lodash: 4.17.20 + dev: true + + /@babel/helper-explode-assignable-expression/7.12.1: + resolution: {integrity: sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==} + dependencies: + '@babel/types': 7.12.7 + dev: true + + /@babel/helper-function-name/7.10.4: + resolution: {integrity: sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==} + dependencies: + '@babel/helper-get-function-arity': 7.10.4 + '@babel/template': 7.12.7 + '@babel/types': 7.12.7 + dev: true + + /@babel/helper-get-function-arity/7.10.4: + resolution: {integrity: sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==} + dependencies: + '@babel/types': 7.12.7 + dev: true + + /@babel/helper-hoist-variables/7.10.4: + resolution: {integrity: sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==} + dependencies: + '@babel/types': 7.12.7 + dev: true + + /@babel/helper-member-expression-to-functions/7.12.7: + resolution: {integrity: sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==} + dependencies: + '@babel/types': 7.12.7 + dev: true + + /@babel/helper-module-imports/7.12.5: + resolution: {integrity: sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==} + dependencies: + '@babel/types': 7.12.7 + dev: true + + /@babel/helper-module-transforms/7.12.1: + resolution: {integrity: sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==} + dependencies: + '@babel/helper-module-imports': 7.12.5 + '@babel/helper-replace-supers': 7.12.5 + '@babel/helper-simple-access': 7.12.1 + '@babel/helper-split-export-declaration': 7.11.0 + '@babel/helper-validator-identifier': 7.14.0 + '@babel/template': 7.12.7 + '@babel/traverse': 7.12.9 + '@babel/types': 7.12.7 + lodash: 4.17.20 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-optimise-call-expression/7.12.7: + resolution: {integrity: sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw==} + dependencies: + '@babel/types': 7.12.7 + dev: true + + /@babel/helper-plugin-utils/7.10.4: + resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} + dev: true + + /@babel/helper-remap-async-to-generator/7.12.1: + resolution: {integrity: sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==} + dependencies: + '@babel/helper-annotate-as-pure': 7.10.4 + '@babel/helper-wrap-function': 7.12.3 + '@babel/types': 7.12.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-replace-supers/7.12.5: + resolution: {integrity: sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==} + dependencies: + '@babel/helper-member-expression-to-functions': 7.12.7 + '@babel/helper-optimise-call-expression': 7.12.7 + '@babel/traverse': 7.12.9 + '@babel/types': 7.12.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-simple-access/7.12.1: + resolution: {integrity: sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==} + dependencies: + '@babel/types': 7.12.7 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers/7.12.1: + resolution: {integrity: sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==} + dependencies: + '@babel/types': 7.12.7 + dev: true + + /@babel/helper-split-export-declaration/7.11.0: + resolution: {integrity: sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==} + dependencies: + '@babel/types': 7.12.7 + dev: true + + /@babel/helper-validator-identifier/7.14.0: + resolution: {integrity: sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==} + dev: true + + /@babel/helper-validator-option/7.12.1: + resolution: {integrity: sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==} + dev: true + + /@babel/helper-wrap-function/7.12.3: + resolution: {integrity: sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==} + dependencies: + '@babel/helper-function-name': 7.10.4 + '@babel/template': 7.12.7 + '@babel/traverse': 7.12.9 + '@babel/types': 7.12.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helpers/7.12.5: + resolution: {integrity: sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==} + dependencies: + '@babel/template': 7.12.7 + '@babel/traverse': 7.12.9 + '@babel/types': 7.12.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight/7.14.0: + resolution: {integrity: sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==} + dependencies: + '@babel/helper-validator-identifier': 7.14.0 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser/7.12.7: + resolution: {integrity: sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg==} + engines: {node: '>=6.0.0'} + hasBin: true + dev: true + + /@babel/plugin-proposal-async-generator-functions/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-remap-async-to-generator': 7.12.1 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-properties/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-class-features-plugin': 7.12.1_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-decorators/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-class-features-plugin': 7.12.1_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-decorators': 7.12.1_@babel+core@7.12.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-dynamic-import/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-export-namespace-from/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-json-strings/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-logical-assignment-operators/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-numeric-separator/7.12.7_@babel+core@7.12.9: + resolution: {integrity: sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.12.1_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-optional-catch-binding/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-optional-chaining/7.12.7_@babel+core@7.12.9: + resolution: {integrity: sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-skip-transparent-expression-wrappers': 7.12.1 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-private-methods/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-class-features-plugin': 7.12.1_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-unicode-property-regex/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-regexp-features-plugin': 7.12.7_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.12.9: + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-class-properties/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-decorators/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-ir9YW5daRrTYiy9UJ2TzdNIJEZu8KclVzDcfSt4iEmOtwQ4llPtWInNKJyKnVXp1vE4bbVd5S31M/im3mYMO1w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.12.9: + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.12.9: + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.12.9: + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-jsx/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.12.9: + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.12.9: + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.12.9: + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.9: + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.12.9: + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.12.9: + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-syntax-top-level-await/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-arrow-functions/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-async-to-generator/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-imports': 7.12.5 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-remap-async-to-generator': 7.12.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-block-scoped-functions/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-block-scoping/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-classes/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-annotate-as-pure': 7.10.4 + '@babel/helper-define-map': 7.10.5 + '@babel/helper-function-name': 7.10.4 + '@babel/helper-optimise-call-expression': 7.12.7 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-replace-supers': 7.12.5 + '@babel/helper-split-export-declaration': 7.11.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-computed-properties/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-destructuring/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-dotall-regex/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-regexp-features-plugin': 7.12.7_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-duplicate-keys/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-exponentiation-operator/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.10.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-for-of/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-function-name/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-function-name': 7.10.4 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-literals/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-member-expression-literals/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-modules-amd/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-transforms': 7.12.1 + '@babel/helper-plugin-utils': 7.10.4 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-transforms': 7.12.1 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-simple-access': 7.12.1 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-hoist-variables': 7.10.4 + '@babel/helper-module-transforms': 7.12.1 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-validator-identifier': 7.14.0 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-umd/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-transforms': 7.12.1 + '@babel/helper-plugin-utils': 7.10.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-regexp-features-plugin': 7.12.7_@babel+core@7.12.9 + dev: true + + /@babel/plugin-transform-new-target/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-object-super/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-replace-supers': 7.12.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-parameters/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-property-literals/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-regenerator/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + regenerator-transform: 0.14.5 + dev: true + + /@babel/plugin-transform-reserved-words/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-runtime/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-imports': 7.12.5 + '@babel/helper-plugin-utils': 7.10.4 + resolve: 1.19.0 + semver: 5.7.1 + dev: true + + /@babel/plugin-transform-shorthand-properties/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-spread/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-skip-transparent-expression-wrappers': 7.12.1 + dev: true + + /@babel/plugin-transform-sticky-regex/7.12.7_@babel+core@7.12.9: + resolution: {integrity: sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-template-literals/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-typeof-symbol/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-unicode-escapes/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/plugin-transform-unicode-regex/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-create-regexp-features-plugin': 7.12.7_@babel+core@7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /@babel/preset-env/7.12.7_@babel+core@7.12.9: + resolution: {integrity: sha512-OnNdfAr1FUQg7ksb7bmbKoby4qFOHw6DKWWUNB9KqnnCldxhxJlP+21dpyaWFmf2h0rTbOkXJtAGevY3XW1eew==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.12.7 + '@babel/core': 7.12.9 + '@babel/helper-compilation-targets': 7.12.5_@babel+core@7.12.9 + '@babel/helper-module-imports': 7.12.5 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/helper-validator-option': 7.12.1 + '@babel/plugin-proposal-async-generator-functions': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-proposal-class-properties': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-proposal-dynamic-import': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-proposal-export-namespace-from': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-proposal-json-strings': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-proposal-logical-assignment-operators': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-proposal-numeric-separator': 7.12.7_@babel+core@7.12.9 + '@babel/plugin-proposal-object-rest-spread': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-catch-binding': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-proposal-optional-chaining': 7.12.7_@babel+core@7.12.9 + '@babel/plugin-proposal-private-methods': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-proposal-unicode-property-regex': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.9 + '@babel/plugin-syntax-class-properties': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.9 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.9 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-top-level-await': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-arrow-functions': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-async-to-generator': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoped-functions': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-block-scoping': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-classes': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-computed-properties': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-destructuring': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-dotall-regex': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-duplicate-keys': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-exponentiation-operator': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-for-of': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-function-name': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-literals': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-member-expression-literals': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-modules-amd': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-modules-commonjs': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-modules-systemjs': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-modules-umd': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-named-capturing-groups-regex': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-new-target': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-object-super': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-property-literals': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-regenerator': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-reserved-words': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-shorthand-properties': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-spread': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-sticky-regex': 7.12.7_@babel+core@7.12.9 + '@babel/plugin-transform-template-literals': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-typeof-symbol': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-unicode-escapes': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-unicode-regex': 7.12.1_@babel+core@7.12.9 + '@babel/preset-modules': 0.1.4_@babel+core@7.12.9 + '@babel/types': 7.12.7 + core-js-compat: 3.8.0 + semver: 5.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules/0.1.4_@babel+core@7.12.9: + resolution: {integrity: sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-proposal-unicode-property-regex': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-dotall-regex': 7.12.1_@babel+core@7.12.9 + '@babel/types': 7.12.7 + esutils: 2.0.3 + dev: true + + /@babel/runtime/7.12.13: + resolution: {integrity: sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==} + dependencies: + regenerator-runtime: 0.13.7 + + /@babel/template/7.12.7: + resolution: {integrity: sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==} + dependencies: + '@babel/code-frame': 7.12.13 + '@babel/parser': 7.12.7 + '@babel/types': 7.12.7 + dev: true + + /@babel/traverse/7.12.9: + resolution: {integrity: sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw==} + dependencies: + '@babel/code-frame': 7.12.13 + '@babel/generator': 7.12.5 + '@babel/helper-function-name': 7.10.4 + '@babel/helper-split-export-declaration': 7.11.0 + '@babel/parser': 7.12.7 + '@babel/types': 7.12.7 + debug: 4.3.1 + globals: 11.12.0 + lodash: 4.17.20 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types/7.12.7: + resolution: {integrity: sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==} + dependencies: + '@babel/helper-validator-identifier': 7.14.0 + lodash: 4.17.20 + to-fast-properties: 2.0.0 + dev: true + + /@hapi/address/2.1.4: + resolution: {integrity: sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==} + deprecated: Moved to 'npm install @sideway/address' + dev: true + + /@hapi/bourne/1.3.2: + resolution: {integrity: sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==} + deprecated: This version has been deprecated and is no longer supported or maintained + dev: true + + /@hapi/hoek/8.5.1: + resolution: {integrity: sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==} + deprecated: This version has been deprecated and is no longer supported or maintained + dev: true + + /@hapi/joi/15.1.1: + resolution: {integrity: sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==} + deprecated: Switch to 'npm install joi' + dependencies: + '@hapi/address': 2.1.4 + '@hapi/bourne': 1.3.2 + '@hapi/hoek': 8.5.1 + '@hapi/topo': 3.1.6 + dev: true + + /@hapi/topo/3.1.6: + resolution: {integrity: sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==} + deprecated: This version has been deprecated and is no longer supported or maintained + dependencies: + '@hapi/hoek': 8.5.1 + dev: true + + /@icons/material/0.2.4: + resolution: {integrity: sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==} + peerDependencies: + react: '*' + dev: false + + /@intervolga/optimize-cssnano-plugin/1.0.6_webpack@4.44.2: + resolution: {integrity: sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==} + peerDependencies: + webpack: ^4.0.0 + dependencies: + cssnano: 4.1.10 + cssnano-preset-default: 4.0.7 + postcss: 7.0.35 + webpack: 4.44.2 + dev: true + + /@jiaminghi/bezier-curve/0.0.9: + resolution: {integrity: sha512-u9xJPOEl6Dri2E9FfmJoGxYQY7vYJkURNX04Vj64tdi535tPrpkuf9Sm0lNr3QTKdHQh0DdNRsaa62FLQNQEEw==} + dependencies: + '@babel/runtime': 7.12.13 + dev: false + + /@jiaminghi/c-render/0.4.3: + resolution: {integrity: sha512-FJfzj5hGj7MLqqqI2D7vEzHKbQ1Ynnn7PJKgzsjXaZpJzTqs2Yw5OSeZnm6l7Qj7jyPAP53lFvEQNH4o4j6s+Q==} + dependencies: + '@babel/runtime': 7.12.13 + '@jiaminghi/bezier-curve': 0.0.9 + '@jiaminghi/color': 0.1.1 + '@jiaminghi/transition': 1.1.11 + dev: false + + /@jiaminghi/charts/0.2.18: + resolution: {integrity: sha512-K+HXaOOeWG9OOY1VG6M4mBreeeIAPhb9X+khG651AbnwEwL6G2UtcAQ8GWCq6GzhczcLwwhIhuaHqRygwHC0sA==} + dependencies: + '@babel/runtime': 7.12.13 + '@jiaminghi/c-render': 0.4.3 + dev: false + + /@jiaminghi/color/0.1.1: + resolution: {integrity: sha512-M09+Sb5HGqVim0zo+nG5gU1v+6gXT8ptr0BZR6dMGt83XmCJgnZtO8s7llTW4hLFFFM5co6geZvTekqLpSPAAQ==} + dependencies: + '@babel/runtime': 7.12.13 + dev: false + + /@jiaminghi/data-view/2.10.0: + resolution: {integrity: sha512-Cud2MTiMcqc5k2KWabR/svuVQmXHANqURo+yj40370/LdI/gyUJ6LG203hWXEnT1nMCeiv/SLVmxv3PXLScCeA==} + dependencies: + '@babel/runtime': 7.12.13 + '@jiaminghi/charts': 0.2.18 + dev: false + + /@jiaminghi/transition/1.1.11: + resolution: {integrity: sha512-owBggipoHMikDHHDW5Gc7RZYlVuvxHADiU4bxfjBVkHDAmmck+fCkm46n2JzC3j33hWvP9nSCAeh37t6stgWeg==} + dependencies: + '@babel/runtime': 7.12.13 + dev: false + + /@mapbox/geojson-area/0.2.2: + resolution: {integrity: sha512-bBqqFn1kIbLBfn7Yq1PzzwVkPYQr9lVUeT8Dhd0NL5n76PBuXzOcuLV7GOSbEB1ia8qWxH4COCvFpziEu/yReA==} + dependencies: + wgs84: 0.0.0 + dev: false + + /@mapbox/geojson-rewind/0.4.1: + resolution: {integrity: sha512-mxo2MEr7izA1uOXcDsw99Kgg6xW3P4H2j4n1lmldsgviIelpssvP+jQDivFKOHrOVJDpTTi5oZJvRcHtU9Uufw==} + hasBin: true + dependencies: + '@mapbox/geojson-area': 0.2.2 + concat-stream: 1.6.2 + minimist: 1.2.5 + sharkdown: 0.1.1 + dev: false + + /@mapbox/geojson-rewind/0.5.0: + resolution: {integrity: sha512-73l/qJQgj/T/zO1JXVfuVvvKDgikD/7D/rHAD28S9BG1OTstgmftrmqfCx4U+zQAmtsB6HcDA3a7ymdnJZAQgg==} + hasBin: true + dependencies: + concat-stream: 2.0.0 + minimist: 1.2.5 + dev: false + + /@mapbox/geojson-types/1.0.2: + resolution: {integrity: sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==} + dev: false + + /@mapbox/jsonlint-lines-primitives/2.0.2: + resolution: {integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==} + engines: {node: '>= 0.6'} + dev: false + + /@mapbox/mapbox-gl-style-spec/13.18.1: + resolution: {integrity: sha512-By+CufXEpba7sIUfnpbtVzy5tqrCyFDNssq1k7psxzCL1Xr0y916OSkEH0j7fFilhalVExjoh/mYtxH32tOYqw==} + hasBin: true + dependencies: + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/point-geometry': 0.1.0 + '@mapbox/unitbezier': 0.0.0 + csscolorparser: 1.0.3 + json-stringify-pretty-compact: 2.0.0 + minimist: 1.2.5 + rw: 1.3.3 + sort-object: 0.3.2 + dev: false + + /@mapbox/mapbox-gl-supported/1.5.0_mapbox-gl@1.13.0: + resolution: {integrity: sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==} + peerDependencies: + mapbox-gl: '>=0.32.1 <2.0.0' + dependencies: + mapbox-gl: 1.13.0 + dev: false + + /@mapbox/martini/0.2.0: + resolution: {integrity: sha512-7hFhtkb0KTLEls+TRw/rWayq5EeHtTaErgm/NskVoXmtgAQu/9D299aeyj6mzAR/6XUnYRp2lU+4IcrYRFjVsQ==} + dev: false + + /@mapbox/point-geometry/0.1.0: + resolution: {integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==} + dev: false + + /@mapbox/tiny-sdf/1.2.2: + resolution: {integrity: sha512-GeJdumh5Do1JvnE2QbbLixZmJg6CzOfpzcAuS+qZadWK1Gj+yY/mj7IOVlgXCBg/yDqDmitGwSius+rrTpm8RA==} + dev: false + + /@mapbox/unitbezier/0.0.0: + resolution: {integrity: sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==} + dev: false + + /@mapbox/vector-tile/1.3.1: + resolution: {integrity: sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==} + dependencies: + '@mapbox/point-geometry': 0.1.0 + dev: false + + /@mapbox/whoots-js/3.1.0: + resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==} + engines: {node: '>=6.0.0'} + dev: false + + /@mrmlnc/readdir-enhanced/2.2.1: + resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} + engines: {node: '>=4'} + dependencies: + call-me-maybe: 1.0.1 + glob-to-regexp: 0.3.0 + dev: true + + /@nodelib/fs.stat/1.1.3: + resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} + engines: {node: '>= 6'} + dev: true + + /@probe.gl/stats/3.3.0: + resolution: {integrity: sha512-CV4c3EgallqZTO88u34/u9L5asL0nCVP1BEkb4qcXlh8Qz2Vmygbyjz1ViQsct6rSi2lJ52lo6W0PnlpZJJvcA==} + dependencies: + '@babel/runtime': 7.12.13 + dev: false + + /@soda/friendly-errors-webpack-plugin/1.7.1_webpack@4.44.2: + resolution: {integrity: sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ==} + peerDependencies: + webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 + dependencies: + chalk: 1.1.3 + error-stack-parser: 2.0.6 + string-width: 2.1.1 + webpack: 4.44.2 + dev: true + + /@soda/get-current-script/1.0.2: + resolution: {integrity: sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==} + dev: true + + /@turf/along/5.1.5: + resolution: {integrity: sha512-N7BN1xvj6VWMe3UpjQDdVI0j0oY/EZ0bWgOgBXc4DlJ411uEsKCh6iBv0b2MSxQ3YUXEez3oc5FcgO9eVSs7iQ==} + dependencies: + '@turf/bearing': 5.1.5 + '@turf/destination': 5.1.5 + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + dev: false + + /@turf/along/6.3.0: + resolution: {integrity: sha512-2j0nHp38IuzESyv5/9hLYM2MuUe155Kw390lkQtiLjhRtTeYQNEaRy+uhZhf3/DWrjGULH1HatLc5j0CmiwrJA==} + dependencies: + '@turf/bearing': 6.3.0 + '@turf/destination': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/angle/6.3.0: + resolution: {integrity: sha512-wCWoK+7JKGYPZKYxdWwJJfqm1IQbUdOf4j5SENO6WJryXViM/ogRu2eAEqrmyrMYO84vonMSqiuPEuGoLqo9Xg==} + dependencies: + '@turf/bearing': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/rhumb-bearing': 6.3.0 + dev: false + + /@turf/area/5.1.5: + resolution: {integrity: sha512-lz16gqtvoz+j1jD9y3zj0Z5JnGNd3YfS0h+DQY1EcZymvi75Frm9i5YbEyth0RfxYZeOVufY7YIS3LXbJlI57g==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/area/6.3.0: + resolution: {integrity: sha512-Y1cYyAQ2fk94npdgOeMF4msc2uabHY1m7A7ntixf1I8rkyDd6/iHh1IMy1QsM+VZXAEwDwsXhu+ZFYd3Jkeg4A==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/bbox-clip/5.1.5: + resolution: {integrity: sha512-KP64aoTvjcXxWHeM/Hs25vOQUBJgyJi7DlRVEoZofFJiR1kPnmDQrK7Xj+60lAk5cxuqzFnaPPxUk9Q+3v4p1Q==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + lineclip: 1.1.5 + dev: false + + /@turf/bbox-clip/6.3.0: + resolution: {integrity: sha512-DCFs1MdX3P7SzZiBjT1kWBp4g0cfv8Yn2/Ccq3JP4iVaqNQJujPfe0WwZjjTdXLbLLFTjoxnCJBjy3WZDmLvlw==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/bbox-polygon/5.1.5: + resolution: {integrity: sha512-PKVPF5LABFWZJud8KzzfesLGm5ihiwLbVa54HJjYySe6yqU/cr5q/qcN9TWptynOFhNktG1dr0KXVG0I2FZmfw==} + dependencies: + '@turf/helpers': 5.1.5 + dev: false + + /@turf/bbox-polygon/6.3.0: + resolution: {integrity: sha512-CCyTBM8LzGRu/lReNlgDyjRO8NojtJ7EPPvSl3bdKQbNFsCm25gwe7Y3xsaCkWLNn5g89lQJI9Izf9xdEsENjQ==} + dependencies: + '@turf/helpers': 6.3.0 + dev: false + + /@turf/bbox/5.1.5: + resolution: {integrity: sha512-sYQU4fqsOYYJoD8UndC1n2hy8hV/lGIAmMLKWuzwmPUWqWOuSKWUcoRWDi9mGB0GvQQe/ow2IxZr8UaVaGz3sQ==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/bbox/6.3.0: + resolution: {integrity: sha512-N4ue5Xopu1qieSHP2MA/CJGWHPKaTrVXQJjzHRNcY1vtsO126xbSaJhWUrFc5x5vVkXp0dcucGryO0r5m4o/KA==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/bearing/5.1.5: + resolution: {integrity: sha512-PrvZuJjnXGseB8hUatIjsrK3tgD3wttyRnVYXTbSfXYJZzaOfHDMplgO4lxXQp7diraZhGhCdSlbMvRRXItbUQ==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/bearing/6.3.0: + resolution: {integrity: sha512-apuUm9xN6VQLO33m7F2mmzlm3dHfeesJjMSzh9iehGtgmp1IaVndjdcIvs0ieiwm8bN9UhwXpfPtO3pV0n9SFw==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/bezier-spline/5.1.5: + resolution: {integrity: sha512-Y9NoComaGgFFFe9TWWE/cEMg2+EnBfU1R3112ec2wlx21ygDmFGXs4boOS71WM4ySwm/dbS3wxnbVxs4j68sKw==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/bezier-spline/6.3.0: + resolution: {integrity: sha512-5kJv7zLjuZPhjO8Z/eNT68UHwiDru6ihn2He0VFrnSJQJZI8V/TFXCob7GxncYFlKk7uHru8iMXGxFe3Y3P44w==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/boolean-clockwise/5.1.5: + resolution: {integrity: sha512-FqbmEEOJ4rU4/2t7FKx0HUWmjFEVqR+NJrFP7ymGSjja2SQ7Q91nnBihGuT+yuHHl6ElMjQ3ttsB/eTmyCycxA==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/boolean-clockwise/6.3.0: + resolution: {integrity: sha512-zW0j8uPjBS5QJqNmJIeatTH02E1S7OCuBNBvkoOUPifC/c2xJ120a1r73prBj1zMFr6k3UCjwG9V8whUMxIAYA==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/boolean-contains/5.1.5: + resolution: {integrity: sha512-x2HeEieeE9vBQrTdCuj4swnAXlpKbj9ChxMdDTV479c0m2gVmfea83ocmkj3w+9cvAaS63L8WqFyNVSmkwqljQ==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/boolean-point-in-polygon': 5.1.5 + '@turf/boolean-point-on-line': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/boolean-contains/6.3.0: + resolution: {integrity: sha512-1MW7B5G5tIu1lnAv3pXyFzl75wfBYnbA2GhwHDb4okIXMhloy/r5uIqAZHo0fOXykKVJS/gIfA/MioKIftoTug==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/boolean-point-in-polygon': 6.3.0 + '@turf/boolean-point-on-line': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/boolean-crosses/5.1.5: + resolution: {integrity: sha512-odljvS7INr9k/8yXeyXQVry7GqEaChOmXawP0+SoTfGO3hgptiik59TLU/Yjn/SLFjE2Ul54Ga1jKFSL7vvH0Q==} + dependencies: + '@turf/boolean-point-in-polygon': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/line-intersect': 5.1.5 + '@turf/polygon-to-line': 5.1.5 + dev: false + + /@turf/boolean-crosses/6.3.0: + resolution: {integrity: sha512-ajCuNSSqQPN2p3Y1ERX4E/wEsNn5JANI2uNgGOpVAeNX48prQGCBANcG2FTMMB+WVqq9iIdQ4eB5mEg6I8TS4w==} + dependencies: + '@turf/boolean-point-in-polygon': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/line-intersect': 6.3.0 + '@turf/polygon-to-line': 6.3.0 + dev: false + + /@turf/boolean-disjoint/5.1.6: + resolution: {integrity: sha512-KHvUS6SBNYHBCLIJEJrg04pF5Oy+Fqn8V5G9U+9pti5vI9tyX7Ln2g7RSB7iJ1Cxsz8QAi6OukhXjEF2/8ZpGg==} + dependencies: + '@turf/boolean-point-in-polygon': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/line-intersect': 5.1.5 + '@turf/meta': 5.2.0 + '@turf/polygon-to-line': 5.1.5 + dev: false + + /@turf/boolean-disjoint/6.3.0: + resolution: {integrity: sha512-bVAwAJF05QPH0tf+qjR3kUcCyqTgYcCbXSMgXl6LQF6mSGuOutzNq1gCyRLCOdOcZtw4Oh4dqeP3ykwv8kDibw==} + dependencies: + '@turf/boolean-point-in-polygon': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/line-intersect': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/polygon-to-line': 6.3.0 + dev: false + + /@turf/boolean-equal/5.1.5: + resolution: {integrity: sha512-QEMbhDPV+J8PlRkMlVg6m5oSLaYUpOx2VUhDDekQ73FlpnhFBKRIlidhvHtS6CYnEw8d+/zA3h8Z18B4W4mq9Q==} + dependencies: + '@turf/clean-coords': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + geojson-equality: 0.1.6 + dev: false + + /@turf/boolean-equal/6.3.0: + resolution: {integrity: sha512-eXr3oSHTvJYGyu/v57uNg0tnDHFnu+triwAaXtBh7lozt4d2riU8Ow71B+tjT9mBe/JRFfXIDsBWjbyB37y/6w==} + dependencies: + '@turf/clean-coords': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + geojson-equality: 0.1.6 + dev: false + + /@turf/boolean-intersects/6.3.0: + resolution: {integrity: sha512-2pHOYqHSKDo0rzHTiqwdAaxa+tHLwr4NaTAjOpuN2hipv9bErzGtv3e5IYceJBnT0u4akK17NTn6qAr7/7g2aQ==} + dependencies: + '@turf/boolean-disjoint': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/boolean-overlap/5.1.5: + resolution: {integrity: sha512-lizojgU559KME0G705YAgWVa0B3/tsWNobMzOEWDx/1rABWTojCY4uxw2rFxpOsP++s8JJHrGWXRLh1PbdAvRQ==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/line-intersect': 5.1.5 + '@turf/line-overlap': 5.1.5 + '@turf/meta': 5.2.0 + geojson-equality: 0.1.6 + dev: false + + /@turf/boolean-overlap/6.3.0: + resolution: {integrity: sha512-rWh8JKTqlJ1m27FY8YeWcGoXutLyCVfSi2/8AOkXi2F+36P9GM4tHz19yKY3btbnHJTgSZf1xO2YhX2d0BmNqg==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/line-intersect': 6.3.0 + '@turf/line-overlap': 6.3.0 + '@turf/meta': 6.3.0 + geojson-equality: 0.1.6 + dev: false + + /@turf/boolean-parallel/5.1.5: + resolution: {integrity: sha512-eeuGgDhnas3nJ22A/DD8aiH0kg9dSzbQChIMAqYRPGg3pWNK41aGAbeh5z0GO5N/EVFX1+ga5a0vsPmiRgQB5g==} + dependencies: + '@turf/clean-coords': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/line-segment': 5.1.5 + '@turf/rhumb-bearing': 5.1.5 + dev: false + + /@turf/boolean-parallel/6.3.0: + resolution: {integrity: sha512-p5YcKtVON6fTE3+pffw16QZyg3uXRmZ8CNxZM7lhGrJrPnny7BD2Kz1z2fp+8EElf00kjX2vFbDjDftte4Xh3g==} + dependencies: + '@turf/clean-coords': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/line-segment': 6.3.0 + '@turf/rhumb-bearing': 6.3.0 + dev: false + + /@turf/boolean-point-in-polygon/5.1.5: + resolution: {integrity: sha512-y+gbAhLmsAZH9uYhv+C68pu06mxsGIm3o7l0hzVkc/PXYdbkr+vKe7n7PfSN3xpVA3qoDLKLpCGOqeW8/ThaJA==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/boolean-point-in-polygon/6.3.0: + resolution: {integrity: sha512-NqFSsoE6OwhDK19IllDQRhEQEkF7UVEOlqH9vgS1fGg4T6NcyKvACJs05c9457tL7QSbV9ZS53f2qiLneFL+qg==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/boolean-point-on-line/5.1.5: + resolution: {integrity: sha512-Zf4d28mckV2tYfLWf2iqxQ8eeLZqi2HGimM26mptf1OCEIwc1wfkKgLRRJXMu94Crvd/pJxjRAjoYGcGliP6Vg==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/boolean-point-on-line/6.3.0: + resolution: {integrity: sha512-eScH8sfKJVjfbEX5Hgkt1nA7A8DUoiYD1riUVqTp2xikujrMfnYRjFpL/UAo01v33cPKZlhCXp7NE86bdOSrYg==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/boolean-within/5.1.5: + resolution: {integrity: sha512-CNAtrvm4HiUwV/vhpGhvJzfhV9CN7VhPC5y4tTfQicK82fYY6ifPz0iaNpUOmshU6+TAot/fsVQVgDJ4t7HXcA==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/boolean-point-in-polygon': 5.1.5 + '@turf/boolean-point-on-line': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/boolean-within/6.3.0: + resolution: {integrity: sha512-8XtVbzPp6J+lqZtDWVyIwSyVAVcnuie82ub56JEAhCf9w8FX5Db3qXQ76pFcOyy/woeXLZY/nIR58Q79PusrRw==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/boolean-point-in-polygon': 6.3.0 + '@turf/boolean-point-on-line': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/buffer/5.1.5: + resolution: {integrity: sha512-U3LU0HF/JNFUNabpB5ArpNG6yPla7yR5XPrZvzZRH48vvbr/N0rkSRI0tJFRWTz7ntugVm9X0OD9Y382NTJRhA==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/center': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + '@turf/projection': 5.1.5 + d3-geo: 1.7.1 + turf-jsts: 1.2.3 + dev: false + + /@turf/buffer/6.3.0: + resolution: {integrity: sha512-B0GWgJzmTaaw1GvTd+Df+ToKSYphz9d6hPCOwXbE2vS5DdZryoxBfxQ32LSX/hW/vx7TLf7E4M0VJBb+Sn1DKA==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/center': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/projection': 6.3.0 + d3-geo: 1.7.1 + turf-jsts: 1.2.3 + dev: false + + /@turf/center-mean/5.1.5: + resolution: {integrity: sha512-XdkBXzFUuyCqu5EPlBwgkv8FLA8pIGBnt7xy5cxxhxKOYLMrKqwMPPHPA84TjeQpNti0gH0CVuOk2r1f/Pp8iQ==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/center-mean/6.3.0: + resolution: {integrity: sha512-BZsqThJmc7wUTxPj7/RYztaegPntR2bBFDPTJ/C+qN8lnRhCccCZ81npYunriwMQC1kyXd1BChGMwjFh3jfB+Q==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/center-median/5.1.5: + resolution: {integrity: sha512-M+O6bSNsIDKZ4utk/YzSOIg6W0isjLVWud+TCLWyrDCWTSERlSJlhOaVE1y7cObhG8nYBHvmszqZyoAY6nufQw==} + dependencies: + '@turf/center-mean': 5.1.5 + '@turf/centroid': 5.1.5 + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/center-median/6.3.0: + resolution: {integrity: sha512-jMQzp4YLIPDWKAMpvyRmNOLcoCHy/OMsLIv6odmfBJc6q+5GkulXz4QW61a5o6XZNDkZiYe9f0QgNGaKH+HTWg==} + dependencies: + '@turf/center-mean': 6.3.0 + '@turf/centroid': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/center-of-mass/5.1.5: + resolution: {integrity: sha512-UvI7q6GgW3afCVIDOyTRuLT54v9Xwv65Xudxh4FIT6w7HNU4KUBtTGnx0NuhODZcgvZgWVWVakhmIcHQTMjYYA==} + dependencies: + '@turf/centroid': 5.1.5 + '@turf/convex': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + dev: false + + /@turf/center-of-mass/6.3.0: + resolution: {integrity: sha512-dbiNo4VjNOskK/9hlifmb+cIsFgLqru3m/U1b+btDrliLzrFw3BEeLquZf3IZkOGMpVdIi5/F7IbkrPPz7HgWw==} + dependencies: + '@turf/centroid': 6.3.0 + '@turf/convex': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/center/5.1.5: + resolution: {integrity: sha512-Dy1TvAv2oHKFddZcWqlVsanxurfcZV1Mmb1E+7H7GRKI+fXZTfRjwCdbiZCbO/tPwxt8jWQHWdLHn8E9lecc3A==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/helpers': 5.1.5 + dev: false + + /@turf/center/6.3.0: + resolution: {integrity: sha512-41g/ZYwoBs2PK7tpAHhf4D6llHdRvY827HLXCld5D0IOnzsWPqDk7WnV8P5uq4g/gyH1/WfKQYn5SgfSj4sSfw==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/helpers': 6.3.0 + dev: false + + /@turf/centroid/5.1.5: + resolution: {integrity: sha512-0m9ZAZJB4YXLDxF2fWGqlE/g9Y68cebeWaRNOMN+e6Bti1fz0JKQuaEqJV+J8xOmODPHSMbZZ1SqSDVRgVHP2Q==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/centroid/6.3.0: + resolution: {integrity: sha512-7KTyqhUEqXDoyR/nf/jAXiW8ZVszEnrp5XZkgYyrf2GWdSovSO0iCN1J3bE2jkJv7IWyeDmGYL61GGzuTSZS2Q==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/circle/5.1.5: + resolution: {integrity: sha512-CNaEtvp38Q+TSFJHdzdl5iYNjBFZRluRTFikIuEcennSeMJD60nP0dMubP58TR/QQn541eNDUyED90V4KuOjyQ==} + dependencies: + '@turf/destination': 5.1.5 + '@turf/helpers': 5.1.5 + dev: false + + /@turf/circle/6.3.0: + resolution: {integrity: sha512-5N3J4YQr1efidvPgvtIQYpxb7gBVEoo00IFC0JNH6KqIVBMttFZw3Wsqor34ya91m58A5m6HTiz9Cdm1ktrEdw==} + dependencies: + '@turf/destination': 6.3.0 + '@turf/helpers': 6.3.0 + dev: false + + /@turf/clean-coords/5.1.5: + resolution: {integrity: sha512-xd/iSM0McVUxbu81KCKDqirCsYkKk3EAwpDjYI8vIQ+eKf/MLSdteRcm3PB7wo2y6JcYp4dMGv2cr9IP7V+dXQ==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/clean-coords/6.3.0: + resolution: {integrity: sha512-Ns7+vXHigKTclzqlFrUnXsXjtEWAu2YYurDxD5mrKXcncuisUIoKbFM55ZxeiiBj0ji8c1huR1xSqs8GVxZJJA==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/clone/5.1.5: + resolution: {integrity: sha512-//pITsQ8xUdcQ9pVb4JqXiSqG4dos5Q9N4sYFoWghX21tfOV2dhc5TGqYOhnHrQS7RiKQL1vQ48kIK34gQ5oRg==} + dependencies: + '@turf/helpers': 5.1.5 + dev: false + + /@turf/clone/6.3.0: + resolution: {integrity: sha512-GAgN89/9GCqUKECB1oY2hcTs0K2rZj+a2tY6VfM0ef9wwckuQZCKi+kKGUzhKVrmHee15jKV8n6DY0er8OndKg==} + dependencies: + '@turf/helpers': 6.3.0 + dev: false + + /@turf/clusters-dbscan/5.1.5: + resolution: {integrity: sha512-X3qLLHJkwMuv+xdWQ08NtOc6BgeqCKKSAltyyAZ7iImE65f0C+sW024DfHSbTMsZVXBFst2Q6RQY8RVUf3QBeQ==} + dependencies: + '@turf/clone': 5.1.5 + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + density-clustering: 1.3.0 + dev: false + + /@turf/clusters-dbscan/6.3.0: + resolution: {integrity: sha512-EHWHMEBSGf4dvobfvifMl2G9p9KATP9TSeSf1WY+ajLRPfn3slUPSM9hP+7eisDBgb/tS+wqQNcl7pEoo72pnw==} + dependencies: + '@turf/clone': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + density-clustering: 1.3.0 + dev: false + + /@turf/clusters-kmeans/5.1.5: + resolution: {integrity: sha512-W6raiv9+fRgmJxCvKrpSacbLXzh7beZUk0A1pjF82Fv3CFTrXAJbgAyIbdlmgXezYSXhOT5NMUugnbkUy2oBZw==} + dependencies: + '@turf/clone': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + skmeans: 0.9.7 + dev: false + + /@turf/clusters-kmeans/6.3.0: + resolution: {integrity: sha512-cyHtW5nsOcs1p8l3mflX2805fOxR99FanXCP95U+001S4AwVSgxiOfTg8PUHg9nui2Qcq/PMBRQz80exb2UzyA==} + dependencies: + '@turf/clone': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + skmeans: 0.9.7 + dev: false + + /@turf/clusters/5.1.5: + resolution: {integrity: sha512-+rQe+g66xfbIXz58tveXQCDdE9hzqRJtDVSw5xth92TvCcL4J60ZKN8mHNUSn1ZZvpUHtVPe4dYcbtk5bW8fXQ==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/clusters/6.3.0: + resolution: {integrity: sha512-NIT6LZ/zawt1nN7eC0VEII8J1QUx5qvUahtPKsADxHP27vDJDjnmGvUXvvC0XmibXt/RR9VRM5Rej04yn53g0A==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/collect/5.1.5: + resolution: {integrity: sha512-voFWu6EGPcNuIbAp43yvGf2Ip4/q8TTeWhOSJ2yDEHgOfbAwrNUwUJCclEjcUVsnc7ypKNrFn3/8bmR9tI0NQg==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/boolean-point-in-polygon': 5.1.5 + '@turf/helpers': 5.1.5 + rbush: 2.0.2 + dev: false + + /@turf/collect/6.3.0: + resolution: {integrity: sha512-alkKujZ02m2wYNixYjF4AFSzXTMbewf1QnJRrtog3snJHFN/tZB9iU3ZcwvxOSbO2Zwrw89A90HLe8k7oGUqXw==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/boolean-point-in-polygon': 6.3.0 + '@turf/helpers': 6.3.0 + rbush: 2.0.2 + dev: false + + /@turf/combine/5.1.5: + resolution: {integrity: sha512-/RqmfCvduHquINVyNmzKOcZtZjfaEHMhghgmj8MYnzepN3ro+E2QXoaQGGrQ7nChAvGgWPAvN8EveVSc1MvzPg==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/combine/6.3.0: + resolution: {integrity: sha512-/FKUxUvQhKDDBJ4CTr49rvanYbdrtlsbr+7p6H8Vv0EyfeWqwJ3qA8lRuAjPtK0StviYg2t6XTucvKd/3PPX3Q==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/concave/5.1.5: + resolution: {integrity: sha512-NvR5vmAunmgjEPjNzmvjLRvPcj7C6WuqCf+vu/aqyc4h2c1B/x399bDsSM64iFT+PYesFuoS1ZhJHWivXG8Y5g==} + dependencies: + '@turf/clone': 5.1.5 + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + '@turf/tin': 5.1.5 + topojson-client: 3.1.0 + topojson-server: 3.0.1 + dev: false + + /@turf/concave/6.3.0: + resolution: {integrity: sha512-9BPctrW2Oy9K2jjKv80tR26RQEJjwAAFwgG8JEBK8hSF9zdqa07fzx7Ncj+8hM9+3vF30f2TvQ8yxvoH7HSvXA==} + dependencies: + '@turf/clone': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/tin': 6.3.0 + topojson: 3.0.2 + dev: false + + /@turf/convex/5.1.5: + resolution: {integrity: sha512-ZEk4kIAoYR/mjO3C8rMe2StgmwhdwmbxVvNxg3udeahe2m0ZzbfkRC4HiJAaBgfR4TLJUAEewynESReTPwASBQ==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + concaveman: 1.2.0 + dev: false + + /@turf/convex/6.3.0: + resolution: {integrity: sha512-YpiLKRu1suwbI/knCOd7Fg7LojV6Beonu8gQjCoaPdkBEz0/W3XqNpfWQhcqp+XR10a2g4RK5mi6bUUejToFBw==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + concaveman: 1.2.0 + dev: false + + /@turf/destination/5.1.5: + resolution: {integrity: sha512-EWwZnd4wxUO9d8UWzJt88jQlFf6W/6SE1930MMzzIR9o+RfqhrS/BL1eUDrg5I5drsymf6PZsK0j/V0q6jqkFQ==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/destination/6.3.0: + resolution: {integrity: sha512-aLt3U/XkJWyZW08Ln1qZwBNAGh27yhmYLu892+dBj3gKP6UUiR6ZopXxrBwjBVe00A6k2ktftKDn79qe0hptuw==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/difference/5.1.5: + resolution: {integrity: sha512-hIjiUHS8WiDfnmADQrhh6QcXWc3zNtjIpPQ5g/2NZ3k1mjnOdmGBVObkSJG4WEUNqyj3PKlsZ8W9xnSu+lLF1Q==} + dependencies: + '@turf/area': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + turf-jsts: 1.2.3 + dev: false + + /@turf/difference/6.3.0: + resolution: {integrity: sha512-f4P0ra0jBOFk4HO8n/9FZ3NEmOX7FHCXHy/4Z1RSUUQsUQDCkx6/cyqbi8BCy2ZSDUSCGHV+iPgs4fRphMzCHQ==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + polygon-clipping: 0.15.2 + dev: false + + /@turf/dissolve/5.1.5: + resolution: {integrity: sha512-YcQgyp7pvhyZHCmbqqItVH6vHs43R9N0jzP/LnAG03oMiY4wves/BO1du6VDDbnJSXeRKf1afmY9tRGKYrm9ag==} + dependencies: + '@turf/boolean-overlap': 5.1.5 + '@turf/clone': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/line-intersect': 5.1.5 + '@turf/meta': 5.2.0 + '@turf/union': 5.1.5 + geojson-rbush: 2.1.0 + get-closest: 0.0.4 + dev: false + + /@turf/dissolve/6.3.0: + resolution: {integrity: sha512-DxFH+3MQpBo3rIZSh9gjcdl00ZkyHAEK0DzTLq6JOS4vTHpYvFvDT07j/Vr+9cqfvWrAjGpQg92I8zMzh4XA6Q==} + dependencies: + '@turf/boolean-overlap': 6.3.0 + '@turf/clone': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/line-intersect': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/union': 6.3.0 + geojson-rbush: 3.1.2 + get-closest: 0.0.4 + dev: false + + /@turf/distance-weight/6.3.0: + resolution: {integrity: sha512-o85n4q3WM0L292FV7ZKBtSdTzn20JRqcZSSktkJoxeuQJMHXlstRwviLiF5pTl5oDXO/mRdq6aPecvWkMAaiCQ==} + dependencies: + '@turf/centroid': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/distance/5.1.5: + resolution: {integrity: sha512-sYCAgYZ2MjNKMtx17EijHlK9qHwpA0MuuQWbR4P30LTCl52UlG/reBfV899wKyF3HuDL9ux78IbILwOfeQ4zgA==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/distance/6.3.0: + resolution: {integrity: sha512-basi24ssNFnH3iXPFjp/aNUrukjObiFWoIyDRqKyBJxVwVOwAWvfk4d38QQyBj5nDo5IahYRq/Q+T47/5hSs9w==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/ellipse/5.1.5: + resolution: {integrity: sha512-oVTzEyDOi3d9isgB7Ah+YiOoUKB1eHMtMDXVl1oT+vC/T+6KR2aq+HjjbF11A0cjuh3VhjSWUZaS+2TYY0pu0w==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/rhumb-destination': 5.1.5 + '@turf/transform-rotate': 5.1.5 + dev: false + + /@turf/ellipse/6.3.0: + resolution: {integrity: sha512-r+EvUK+IGgc3shvS/T1Wof2uCptS2fYmtcwMSFHnHjRnmUyrD4YFjPZT7ygxcDB91+UClZ6cdozR6vqBYzPAog==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/rhumb-destination': 6.3.0 + '@turf/transform-rotate': 6.3.0 + dev: false + + /@turf/envelope/5.1.5: + resolution: {integrity: sha512-Mxl5A2euAxq3RZVN65/MVyaO91kzGU8MJXfegPdep6SN4bONDadEp0olwW5qSRf2U3cJ8Jppl089X6AeifD3IA==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/bbox-polygon': 5.1.5 + '@turf/helpers': 5.1.5 + dev: false + + /@turf/envelope/6.3.0: + resolution: {integrity: sha512-9xmDTCogXJsAO0TrARA/lniMSEtAil9HIKXHDJ5N6zlZ2K5wfRdD2zDlqkgDT3t9oSvttSP3ltBf03fjMDt6Wg==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/bbox-polygon': 6.3.0 + '@turf/helpers': 6.3.0 + dev: false + + /@turf/explode/5.1.5: + resolution: {integrity: sha512-v/hC9DB9RKRW9/ZjnKoQelIp08JNa5wew0889465s//tfgY8+JEGkSGMag2L2NnVARWmzI/vlLgMK36qwkyDIA==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/explode/6.3.0: + resolution: {integrity: sha512-J3vOGwf2EJXfh1gifFtxAuuhVYWAMTRQL6jE3h9a8osNLO1nj8JGVxaL6fmJgdZ/A9cFPv1OYUndBzi86UYZvw==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/flatten/5.1.5: + resolution: {integrity: sha512-aagHz5tjHmOtb8eMb5fd10+HJwdlhkhsPql1vRXQNnpv0Q9xL/4SsbvXZ6lPqkRAjiZuy087mvaz+ERml76/jg==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/flatten/6.3.0: + resolution: {integrity: sha512-0V3qxOGqb0NulEpADPCs/+i/AUQuNSChGA4oy/YGicfMHjnMNapZfOVg3LJEAkd/Kqpw2eJjjKe0gaX5aXo/1w==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/flip/5.1.5: + resolution: {integrity: sha512-7+IYM3QQAkV4co3wjEmM726/OkXqUCCHWWyIqrI9hiK+LR628qkoqP1hk6rQ4vZJrAYuvSlK+FZnr24OtgY0cw==} + dependencies: + '@turf/clone': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/flip/6.3.0: + resolution: {integrity: sha512-VTST1oaJFRyHOAbvY9kt8yKKCQt6aXpXeyVQRjhNESzlYLIQlTx3v+lI+eSSu+sc+SX4EDQltB1UdaVk7BIRJg==} + dependencies: + '@turf/clone': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/great-circle/5.1.5: + resolution: {integrity: sha512-k6FWwlt+YCQoD5VS1NybQjriNL7apYHO+tm2HbIFQ85blPUX4IyLppHIFevfD/k+K2bJqhFCze8JNVMBwdrzVw==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/great-circle/6.3.0: + resolution: {integrity: sha512-dpGJcRf2TLzBvVUZa0Eej3edXOQofLcp9qgotqDHK68spqYK8lnrXrdyyqzLlTHx3nxZkHvFUOl1lqj8G4NraQ==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/helpers/5.1.5: + resolution: {integrity: sha512-/lF+JR+qNDHZ8bF9d+Cp58nxtZWJ3sqFe6n3u3Vpj+/0cqkjk4nXKYBSY0azm+GIYB5mWKxUXvuP/m0ZnKj1bw==} + dev: false + + /@turf/helpers/6.3.0: + resolution: {integrity: sha512-kr6KuD4Z0GZ30tblTEvi90rvvVNlKieXuMC8CTzE/rVQb0/f/Cb29zCXxTD7giQTEQY/P2nRW23wEqqyNHulCg==} + dev: false + + /@turf/hex-grid/5.1.5: + resolution: {integrity: sha512-rwDL+DlUyxDNL1aVHIKKCmrt1131ZULF3irExYIO/um6/SwRzsBw+522/RcxD/mg/Shtrpozb6bz8aJJ/3RXHA==} + dependencies: + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/intersect': 5.1.6 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/hex-grid/6.3.0: + resolution: {integrity: sha512-adqOgpBJB+87bjnm5EKVklDuWsYtCrETlLrXpOw4CVyaqYEE2/Mvid25se/0TeGDfvIcnvIQvrApYL5O/sDaMw==} + dependencies: + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/intersect': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/interpolate/5.1.5: + resolution: {integrity: sha512-LfmvtIUWc3NVkqPkX6j3CAIjF7y1LAZqfDd+2Ii+0fN7XOOGMWcb1uiTTAb8zDQjhTsygcUYgaz6mMYDCWYKPg==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/centroid': 5.1.5 + '@turf/clone': 5.1.5 + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/hex-grid': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + '@turf/point-grid': 5.1.5 + '@turf/square-grid': 5.1.5 + '@turf/triangle-grid': 5.1.5 + dev: false + + /@turf/interpolate/6.3.0: + resolution: {integrity: sha512-2gVMSj/Ri8l5KGkCTyTJTqSbZwfWco6tWGMZyG0fqcB61PA6pEedU+TShBOOEKu7eBlpSyHlkS7+uii1bEGUCA==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/centroid': 6.3.0 + '@turf/clone': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/hex-grid': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/point-grid': 6.3.0 + '@turf/square-grid': 6.3.0 + '@turf/triangle-grid': 6.3.0 + dev: false + + /@turf/intersect/5.1.6: + resolution: {integrity: sha512-KXyNv/GXdoGAOy03qZF53rgtXC2tNhF/4jLwTKiVRrBQH6kcEpipGStdJ+QkYIlarQPa8f7I9UlVAB19et4MfQ==} + dependencies: + '@turf/clean-coords': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/truncate': 5.1.5 + turf-jsts: 1.2.3 + dev: false + + /@turf/intersect/6.3.0: + resolution: {integrity: sha512-1YCIkyKjuTlX7HaTjtyE7ZRxLCmcu0BYr6jqoVl7TjyF2NUiNpPm3m4X1ZrSF6MfjIt5NFSGYCdNMEPgREq19w==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + polygon-clipping: 0.15.2 + dev: false + + /@turf/invariant/5.1.5: + resolution: {integrity: sha512-4elbC8GVQ8XxrnWLWpFFXTK3qnzIYzIVtSkJrY9eefA8WNZzwcwT3WGFY3xte4BB48o5oEjihjoJharWRis78w==} + dependencies: + '@turf/helpers': 5.1.5 + dev: false + + /@turf/invariant/5.2.0: + resolution: {integrity: sha512-28RCBGvCYsajVkw2EydpzLdcYyhSA77LovuOvgCJplJWaNVyJYH6BOR3HR9w50MEkPqb/Vc/jdo6I6ermlRtQA==} + dependencies: + '@turf/helpers': 5.1.5 + dev: false + + /@turf/invariant/6.3.0: + resolution: {integrity: sha512-2OFOi9p+QOrcIMySEnr+WlOiKaFZ1bY56jA98YyECewJHfhPFWUBZEhc4nWGRT0ahK08Vus9+gcuBX8QIpCIIw==} + dependencies: + '@turf/helpers': 6.3.0 + dev: false + + /@turf/isobands/5.1.5: + resolution: {integrity: sha512-0n3NPfDYQyqjOch00I4hVCCqjKn9Sm+a8qlWOKbkuhmGa9dCDzsu2bZL0ahT+LjwlS4c8/owQXqe6KE2GWqT1Q==} + dependencies: + '@turf/area': 5.1.5 + '@turf/bbox': 5.1.5 + '@turf/boolean-point-in-polygon': 5.1.5 + '@turf/explode': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + dev: false + + /@turf/isobands/6.3.0: + resolution: {integrity: sha512-Ikk8LyVQJKsLH6nFYKEeUi9sShMVP9S63zy5CPMPvwRhZf0ix59tAEBfnk6DOfd0EzLLmEdfaAM2U0cRhkh9jA==} + dependencies: + '@turf/area': 6.3.0 + '@turf/bbox': 6.3.0 + '@turf/boolean-point-in-polygon': 6.3.0 + '@turf/explode': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + object-assign: 4.1.1 + dev: false + + /@turf/isolines/5.1.5: + resolution: {integrity: sha512-Ehn5pJmiq4hAn2+2jPB2rLt3iF8DDp8zciw9z2pAt5IGVRU/K+x3z4aYG5ra5vbFB/E4G3aHr/X4QPIb9LCJtA==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + dev: false + + /@turf/isolines/6.3.0: + resolution: {integrity: sha512-z5hUIUcSaInGUhrx+vDZcCNWLS3MawzQGfc0TOUVDe03bO5sqUlaNyvx7C09Js4LEzsqqZ1GPIUvFPjePaXaVQ==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + object-assign: 4.1.1 + dev: false + + /@turf/kinks/5.1.5: + resolution: {integrity: sha512-G38sC8/+MYqQpVocT3XahhV42cqEAVJAZwUND9YOfKJZfjUn7FKmWhPURs5py95me48UuI0C0jLLAMzBkUc2nQ==} + dependencies: + '@turf/helpers': 5.1.5 + dev: false + + /@turf/kinks/6.3.0: + resolution: {integrity: sha512-BLWvbl2/fa4SeJzVMbleT6Vo1cmzwmzRfxL2xxMei2jmf6JSvqDoMJFwIHGXrLZXvhOCb1b2C+MhBfhtc7kYkQ==} + dependencies: + '@turf/helpers': 6.3.0 + dev: false + + /@turf/length/5.1.5: + resolution: {integrity: sha512-0ryx68h512wCoNfwyksLdabxEfwkGNTPg61/QiY+QfGFUOUNhHbP+QimViFpwF5hyX7qmroaSHVclLUqyLGRbg==} + dependencies: + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/length/6.3.0: + resolution: {integrity: sha512-91MHtigpV7mbrMW3xyaPVtLWQU3p487t3YHU4vdxih03p+dFI512dX/FtWbd9LNgrtBt4PM1uo1WmafGvfStKA==} + dependencies: + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/line-arc/5.1.5: + resolution: {integrity: sha512-Kz5RX/qRIHVrGNqF3BRlD3ACuuCr0G5lpaVyPjNvN+vA7Q4bEDyWIYeqm3DdTn7X2MXitpTNgr2uvX4WoUy4yA==} + dependencies: + '@turf/circle': 5.1.5 + '@turf/destination': 5.1.5 + '@turf/helpers': 5.1.5 + dev: false + + /@turf/line-arc/6.3.0: + resolution: {integrity: sha512-WAAUgAWGf+U02GhXWrplODyUm3X6LZnYyn4VJQ9BPsKyawfK+NtjP7KsZ1MipIgtixNq3Ceexep0AHGHos4Prw==} + dependencies: + '@turf/circle': 6.3.0 + '@turf/destination': 6.3.0 + '@turf/helpers': 6.3.0 + dev: false + + /@turf/line-chunk/5.1.5: + resolution: {integrity: sha512-mKvTUMahnb3EsYUMI8tQmygsliQkgQ1FZAY915zoTrm+WV246loa+84+h7i5d8W2O8gGJWuY7jQTpM7toTeL5w==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/length': 5.1.5 + '@turf/line-slice-along': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/line-chunk/6.3.0: + resolution: {integrity: sha512-Xfja7H6XEgFPaK37sg7WBb0pIiA9hfjXtF7A1QPrh8z+JFyuVJzveBG2mYvin5UKTwsMKXuby6s4FUvmoEFqjQ==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/length': 6.3.0 + '@turf/line-slice-along': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/line-intersect/5.1.5: + resolution: {integrity: sha512-9DajJbHhJauLI2qVMnqZ7SeFsinFroVICOSUheODk7j5teuwNABuZ2Z6WmKATzEsPkEJ1iVykqB+F9vGMVKB6g==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/line-segment': 5.1.5 + '@turf/meta': 5.2.0 + geojson-rbush: 2.1.0 + dev: false + + /@turf/line-intersect/6.3.0: + resolution: {integrity: sha512-3naxR7XpkPd2vst3Mw6DFry4C9m3o0/f2n/xu5UAyxb88Ie4m2k+1eqkhzMMx/0L+E6iThWpLx7DASM6q6o9ow==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/line-segment': 6.3.0 + '@turf/meta': 6.3.0 + geojson-rbush: 3.1.2 + dev: false + + /@turf/line-offset/5.1.5: + resolution: {integrity: sha512-VccGDgFfBSiCTqrHdQgxD7Rs9lnJmDOJ5gqQRculKPsCNUyRFMYIZud7l2dTs83g66evfOwkZCrTxtSoBY3Jxg==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + dev: false + + /@turf/line-offset/6.3.0: + resolution: {integrity: sha512-yzgmNc/8miyn+pH2ubT4rZb9uAPY6oLqkwmEdzy2fuU4yUFnCNN/nWvYP4acGdgaSfprJd+4MdlLFzWBJxSplw==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/line-overlap/5.1.5: + resolution: {integrity: sha512-hMz3XARXEbfGwLF9WXyErqQjzhZYMKvGQwlPGOoth+2o9Uga9mfWfevduJvozJAE1MKxtFttMjIXMzcShW3O8A==} + dependencies: + '@turf/boolean-point-on-line': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/line-segment': 5.1.5 + '@turf/meta': 5.2.0 + '@turf/nearest-point-on-line': 5.1.5 + geojson-rbush: 2.1.0 + dev: false + + /@turf/line-overlap/6.3.0: + resolution: {integrity: sha512-fVyXfTpr/A+ZXZWG6PbuYz5rAGbTQWyrMZveCl2049SbOXSkVXGjUfpnLaklP0p+adw7eRR0LhZn6FGz9CQaFg==} + dependencies: + '@turf/boolean-point-on-line': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/line-segment': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/nearest-point-on-line': 6.3.0 + deep-equal: 1.1.1 + geojson-rbush: 3.1.2 + dev: false + + /@turf/line-segment/5.1.5: + resolution: {integrity: sha512-wIrRtWuLuLXhnSkqdVG1SDayTU0/CmZf+a+BBhEf0vFIsAedJnrY3a2cbCEvtfuk6ZsAbhOi7/kYiaR/F+rEzg==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + dev: false + + /@turf/line-segment/6.3.0: + resolution: {integrity: sha512-M+aDy83V+E7jYWNaf+b+A88yhnMrJhyg/lhAj6mU6UeB2PbruXB2qgSmmVDSE2dIknOvZZuIWNzEzUI07RO2kw==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/line-slice-along/5.1.5: + resolution: {integrity: sha512-yKvSDtULztLtlPIMowm9l8pS6XLAEpCPmrARZA0sIWFX8XrcSzISBaXZbiMMzg3nxQJMXfGIgWDk10B7+J8Tqw==} + dependencies: + '@turf/bearing': 5.1.5 + '@turf/destination': 5.1.5 + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + dev: false + + /@turf/line-slice-along/6.3.0: + resolution: {integrity: sha512-3s6vGTxGgCTb3Wd1seyir49rRc0GsX6OZXiRP5VdlT3Aq0cuuCNJycgHCH+H8LiYrEQDUhNUWbGljreCH0/JCg==} + dependencies: + '@turf/bearing': 6.3.0 + '@turf/destination': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + dev: false + + /@turf/line-slice/5.1.5: + resolution: {integrity: sha512-Fo+CuD+fj6T702BofHO+rgiXUgzCk0iO2JqMPtttMtgzfKkVTUOQoauMNS1LNNaG/7n/TfKGh5gRCEDRNaNwYA==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/nearest-point-on-line': 5.1.5 + dev: false + + /@turf/line-slice/6.3.0: + resolution: {integrity: sha512-HEgVY7TcoRxh59DCb/7SUlX6x3RJWSEBspIfsxCv+2lhgb3aRekn+aELvr3VeY9fWPCXvOfELBH3PNjMhJMY2Q==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/nearest-point-on-line': 6.3.0 + dev: false + + /@turf/line-split/5.1.5: + resolution: {integrity: sha512-gtUUBwZL3hcSu5MpqHTl68hgAJBNHcr1APDj8E5o6iX5xFX+wvl4ohQXyMs5HOATCI8Iy83wLuggcY6maNw7LQ==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/line-intersect': 5.1.5 + '@turf/line-segment': 5.1.5 + '@turf/meta': 5.2.0 + '@turf/nearest-point-on-line': 5.1.5 + '@turf/square': 5.1.5 + '@turf/truncate': 5.1.5 + geojson-rbush: 2.1.0 + dev: false + + /@turf/line-split/6.3.0: + resolution: {integrity: sha512-Q0nUJ0vczy11piyEz0FaKScFwSQtb1HJ2RPEMCw1coUJhTCB02KBWQLImhYqwsD3uLg+H/fxaJ1Gva6EPWoDNQ==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/line-intersect': 6.3.0 + '@turf/line-segment': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/nearest-point-on-line': 6.3.0 + '@turf/square': 6.3.0 + '@turf/truncate': 6.3.0 + geojson-rbush: 3.1.2 + dev: false + + /@turf/line-to-polygon/5.1.5: + resolution: {integrity: sha512-hGiDAPd6j986kZZLDgEAkVD7O6DmIqHQliBedspoKperPJOUJJzdzSnF6OAWSsxY+j8fWtQnIo5TTqdO/KfamA==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/line-to-polygon/6.3.0: + resolution: {integrity: sha512-754ywhQzcAylVSqQQwlv0TUMC5nCHp4nDle3X48tkHIKcnn4fJkW8O0YNhhQCE8p6NDcs0Ayi4qR0uHLPTzUWQ==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/clone': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/mask/5.1.5: + resolution: {integrity: sha512-2eOuxA3ammZAGsjlsy/H7IpeJxjl3hrgkcKM6kTKRJGft4QyKwCxqQP7RN5j0zIYvAurgs9JOLe/dpd5sE5HXQ==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + '@turf/union': 5.1.5 + rbush: 2.0.2 + dev: false + + /@turf/mask/6.3.0: + resolution: {integrity: sha512-2DbaHvmxz0ueQpGCo+6nXHhLqlmTjzGDkUL/ys6rgWTXj40udKakPwMNa2WrvzqHwowJsXWaWDp2GogRT5foDA==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/union': 6.3.0 + rbush: 2.0.2 + dev: false + + /@turf/meta/5.1.6: + resolution: {integrity: sha512-lv+6LCgoc3LVitQZ4TScN/8a/fcctq8bIoxBTMJVq4aU8xoHeY1851Dq8MCU37EzbH33utkx8/jENaQP+aeElg==} + dependencies: + '@turf/helpers': 5.1.5 + dev: false + + /@turf/meta/5.2.0: + resolution: {integrity: sha512-ZjQ3Ii62X9FjnK4hhdsbT+64AYRpaI8XMBMcyftEOGSmPMUVnkbvuv3C9geuElAXfQU7Zk1oWGOcrGOD9zr78Q==} + dependencies: + '@turf/helpers': 5.1.5 + dev: false + + /@turf/meta/6.3.0: + resolution: {integrity: sha512-qBJjaAJS9H3ap0HlGXyF/Bzfl0qkA9suafX/jnDsZvWMfVLt+s+o6twKrXOGk5t7nnNON2NFRC8+czxpu104EQ==} + dependencies: + '@turf/helpers': 6.3.0 + dev: false + + /@turf/midpoint/5.1.5: + resolution: {integrity: sha512-0pDQAKHyK/zxlvUx3XNxwvqftf4sV32QxnHfqSs4AXaODUGUbPhzAD7aXgDScBeUOVLwpAzFRQfitUvUMTGC6A==} + dependencies: + '@turf/bearing': 5.1.5 + '@turf/destination': 5.1.5 + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + dev: false + + /@turf/midpoint/6.3.0: + resolution: {integrity: sha512-ImiYK5l/QZh5aCynxCyHoaJYn4j1VhorVyw2XihHuwAtebTc+KRaBJpWSD2eJxo3Q3J+QepWMiiMvQFJgQ5uCQ==} + dependencies: + '@turf/bearing': 6.3.0 + '@turf/destination': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + dev: false + + /@turf/moran-index/6.3.0: + resolution: {integrity: sha512-qRsSqmYtvnKiGFbz3aU1up8Q8jY9MCflRdvKeTOJ2E3Z4xOIyOLXOrNvpLIM8CFcLwY06IInMRoaKi/CVOC54g==} + dependencies: + '@turf/distance-weight': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/nearest-point-on-line/5.1.5: + resolution: {integrity: sha512-qT7BLTwToo8cq0oNoz921oLlRPJamyRg/rZgll+kNBadyDPmJI4W66riHcpM9RQcAJ6TPvDveIIBeGJH7iG88w==} + dependencies: + '@turf/bearing': 5.1.5 + '@turf/destination': 5.1.5 + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/line-intersect': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/nearest-point-on-line/6.3.0: + resolution: {integrity: sha512-b4C9Md1VbGn9chMgdSj2grJD4w4t0owEWOKEBwOZfdhrcksyOedVvKB7XqOFdj/8Jitel40EKAC5LQTNu24kEQ==} + dependencies: + '@turf/bearing': 6.3.0 + '@turf/destination': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/line-intersect': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/nearest-point-to-line/5.1.6: + resolution: {integrity: sha512-ZSvDIEiHhifn/vNwLXZI/E8xmEz5yBPqfUR7BVHRZrB1cP7jLhKZvkbidjG//uW8Fr1Ulc+PFOXczLspIcx/lw==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/point-to-line-distance': 5.1.6 + object-assign: 4.1.1 + dev: false + + /@turf/nearest-point-to-line/6.3.0: + resolution: {integrity: sha512-1ut4u1KXHwXc6qdnDLkhTdPUdeHOmdmysMBxnNNFH7UTefi3XfR8BF/NOxNP8g7OKJrZ2vhDeR4PCL5xAsVH5A==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/point-to-line-distance': 6.3.0 + object-assign: 4.1.1 + dev: false + + /@turf/nearest-point/5.1.5: + resolution: {integrity: sha512-tZQXI7OE7keNKK4OvYOJ5gervCEuu2pJ6psu59QW9yhe2Di3Gl+HAdLvVa6RZ8s5Fndr3u0JWKsmxve3fCxc9g==} + dependencies: + '@turf/clone': 5.1.5 + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/nearest-point/6.3.0: + resolution: {integrity: sha512-eovLuWxO2cQaKETbf1OhnWYkRYYgwuDhJAvLU9ZpXnqk2tNE06gt/2C5oJJiSlh4ZksDM8ryHZicswaXrYz+qA==} + dependencies: + '@turf/clone': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/planepoint/5.1.5: + resolution: {integrity: sha512-+Tp+SQ0Db2tqwLbxfXJPysT9IxcOHSMIin2dJb/j3Qn5+g0LRus6rczZl6dWNAIjqBPMawj/V/dZhMu6Q9O9wA==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/planepoint/6.3.0: + resolution: {integrity: sha512-RDfzUiwB3P3bGeRBZf/czZdtQsqUIVQePaAU5ijCqTBdR1V0TuVbRig1WE0XD4j5dM242OEezHJ3Xqgo71Nzww==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/point-grid/5.1.5: + resolution: {integrity: sha512-4ibozguP9YJ297Q7i9e8/ypGSycvt1re2jrPXTxeuZ4/L/NE5B1nOBLG+tw121nMjD+S+v2RWOtqD+FZ3Ga+ew==} + dependencies: + '@turf/boolean-within': 5.1.5 + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/point-grid/6.3.0: + resolution: {integrity: sha512-1ERghdRXtA/5Z/To7X1Y9D1cvej3+ZCZXNZnM/0c+3sAioohjK5IXv2enR23p1ftA6Z3H7wug5IB4YmVzs4MaA==} + dependencies: + '@turf/boolean-within': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/point-on-feature/5.1.5: + resolution: {integrity: sha512-NTcpe5xZjybRh0aTL+7td1cm0s49GGbAt5u8Cdec4W9ix2PsehRcLUbmQIQsODN2kiVyUSpnhECIpsyN5MjX7A==} + dependencies: + '@turf/boolean-point-in-polygon': 5.1.5 + '@turf/center': 5.1.5 + '@turf/explode': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/nearest-point': 5.1.5 + dev: false + + /@turf/point-on-feature/6.3.0: + resolution: {integrity: sha512-zN35KN/IUAgOyVtlEQg1j71U8eoav2JPZOdWlEFHsjYQVm9cF+AKOkvBdm6LQWMWvCtwSqqghwe/zRKvzJPynw==} + dependencies: + '@turf/boolean-point-in-polygon': 6.3.0 + '@turf/center': 6.3.0 + '@turf/explode': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/nearest-point': 6.3.0 + dev: false + + /@turf/point-to-line-distance/5.1.6: + resolution: {integrity: sha512-PE3hiTeeDEi4ZLPtI8XAzFYW9nHo1EVsZGm/4ZVV8jo39d3X1oLVHxY3e1PkCmWwRapXy4QLqvnTQ7nU4wspNw==} + dependencies: + '@turf/bearing': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/projection': 6.3.0 + '@turf/rhumb-bearing': 6.3.0 + '@turf/rhumb-distance': 6.3.0 + dev: false + + /@turf/point-to-line-distance/6.3.0: + resolution: {integrity: sha512-AqCcj4A0GPzKb3w+q+C9ex0r5mC+u+Ee6VN2jY1p25dxBQJNpMZKDE5LcWtaXeD+pAk3ZGmvea8LR5S0AJukxA==} + dependencies: + '@turf/bearing': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/projection': 6.3.0 + '@turf/rhumb-bearing': 6.3.0 + '@turf/rhumb-distance': 6.3.0 + dev: false + + /@turf/points-within-polygon/5.1.5: + resolution: {integrity: sha512-nexe2AHVOY8wEBvs+CYSOp10NyOCkyZ1gkhIfsx0mzU8LPYBxD9ctjlKveheKh4AAldLcFupd/gSCBTKF1JS7A==} + dependencies: + '@turf/boolean-point-in-polygon': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/points-within-polygon/6.3.0: + resolution: {integrity: sha512-ES/tLj5oZR7TBg7FSOy8bypBvXALwl2f36MmQ3AJfK0KvAeQ+mxFXTGslAK3ewL9fVVxWLsmbP9bPLSzWeuPAw==} + dependencies: + '@turf/boolean-point-in-polygon': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/polygon-smooth/6.3.0: + resolution: {integrity: sha512-60aMw3d57DXqdFyWU43c5gHaumCZ9jn6K5GqgeKTfmElIumdSspg9MEIW7d7z6qkPufPY34FczJ9yapMih5SIQ==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/polygon-tangents/5.1.5: + resolution: {integrity: sha512-uoZfKvFhl6rf0+CDWucru9fZ4mJB5Nsg37TS/7emrzjoVxXyOdxc/s1HFCjcKflMue7MjU/gT6AitJyrvdztDg==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/polygon-tangents/6.3.0: + resolution: {integrity: sha512-QEXsXgZKWV3mPPqxERIQ+DzBSvnO0R1c9FsHuHE0F49Cic+CRMPjEpnzQj39cOUQfwPlQl2ThuaKAljlQ5QNMQ==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/boolean-within': 6.3.0 + '@turf/explode': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/nearest-point': 6.3.0 + dev: false + + /@turf/polygon-to-line/5.1.5: + resolution: {integrity: sha512-kVo0owPqyccy5+qZGvaxGvMsYkgueKE2OOgX2UV/HyrXF3uI3TomK1txjApqeFsLvwuSANxesvVbYLrYiIwvGw==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/polygon-to-line/6.3.0: + resolution: {integrity: sha512-KFGlQlGOBayBvELz+tip1zCa3eB8xyZePZUZ3I3OnU7mk0FFzJzvLTmPUc7MupgqORT4LkNGmyKSVWaz38NTig==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/polygonize/5.1.5: + resolution: {integrity: sha512-qzhtuzoOhldqZHm+ZPsWAs9nDpnkcDfsr+I0twmBF+wjAmo0HKiy9++sRQ4kEePpdwbMpF07D/NdZqYdmOJkGQ==} + dependencies: + '@turf/boolean-point-in-polygon': 5.1.5 + '@turf/envelope': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + dev: false + + /@turf/polygonize/6.3.0: + resolution: {integrity: sha512-v1w5ibIJ5to3+nuitVNyukPMMY+z++y3e55TBuot1vkAEyCi538Kc8Qz0eWONPGZKzwYtQtkve2NIp0BBeNd5g==} + dependencies: + '@turf/boolean-point-in-polygon': 6.3.0 + '@turf/envelope': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/projection/5.1.5: + resolution: {integrity: sha512-TWKJDFeEKQhI4Ce1+2PuOSDggn4cnMibqyUoCpIW+4KxUC1R88SE3/SYomqzwxMn00O09glHSycPkGD5JzHd8A==} + dependencies: + '@turf/clone': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/projection/6.3.0: + resolution: {integrity: sha512-IpSs7Q6G6xi47ynVlYYVegPLy6Jc0yo3/DcIm83jaJa4NnzPFXIFZT0v9Fe1N8MraHZqiqaSPbVnJXCGwR12lg==} + dependencies: + '@turf/clone': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/random/5.1.5: + resolution: {integrity: sha512-oitpBwEb6YXqoUkIAOVMK+vrTPxUi2rqITmtTa/FBHr6J8TDwMWq6bufE3Gmgjxsss50O2ITJunOksxrouWGDQ==} + dependencies: + '@turf/helpers': 5.1.5 + dev: false + + /@turf/random/6.3.0: + resolution: {integrity: sha512-jSKNqLCOc/xUPoQp8jZLUYTrtID1PNJV7eLXMbJdHdcYwU7d6dTkrdgI08ZU/Nc4qJv1ZAlWO/xEyKGtC1RgrQ==} + dependencies: + '@turf/helpers': 6.3.0 + dev: false + + /@turf/rectangle-grid/6.3.0: + resolution: {integrity: sha512-XQAjpprUhGA9aoVH8H6lqZb0Dk8SZ2djKAPD6dDplFgrufdmP1Fe1BfbsdBgjyfPrdR7hSffLyEAwC3bhfJo2w==} + dependencies: + '@turf/boolean-intersects': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + dev: false + + /@turf/rewind/5.1.5: + resolution: {integrity: sha512-Gdem7JXNu+G4hMllQHXRFRihJl3+pNl7qY+l4qhQFxq+hiU1cQoVFnyoleIqWKIrdK/i2YubaSwc3SCM7N5mMw==} + dependencies: + '@turf/boolean-clockwise': 5.1.5 + '@turf/clone': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + dev: false + + /@turf/rewind/6.3.0: + resolution: {integrity: sha512-56HwvOZ4r4/wXr8l8zCpdjZ3bxY6Ee7aokuJr/+BlVqikHdRHRx+FJpLGpykZU1YWdO7IiLK7ajX+clYPaqRKg==} + dependencies: + '@turf/boolean-clockwise': 6.3.0 + '@turf/clone': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/rhumb-bearing/5.1.5: + resolution: {integrity: sha512-zXTl2khjwf7mx2D1uPo5vgpGgP4sM2VrKDbJNKyulPu4TO4ELt8x7FsKyCBlRTzzQf284t/xnNcZOfUbkkd70g==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/rhumb-bearing/6.3.0: + resolution: {integrity: sha512-/c/BE3huEUrwN6gx7Bg2FzfJqeU+TWk/slQPDHpbVunlIPbS6L28brqSVD+KXfMG8HQIzynz6Pm4Y+j5Iv4aWA==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/rhumb-destination/5.1.5: + resolution: {integrity: sha512-FdDUCSRfRAfsRmUaWjc76Wk32QYFJ6ckmSt6Ls6nEczO6eg/RgH1atF8CIYwR5ifl0Sk1rQzKiOSbpCyvVwQtw==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/rhumb-destination/6.3.0: + resolution: {integrity: sha512-MaQf5wldfERfn8cjtbkD/6GUurAwD+sjedvDgV/chZ83yx7kXmRgrVMpRSGUbmGQ3Ww8dn38sUCapnM6M07+Rg==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/rhumb-distance/5.1.5: + resolution: {integrity: sha512-AGA/ky5/BJJZtzQqafy2GvJfcUXSzCCrPFp8sDRPSKBoUN4gMBHN15ijDWYYLFoWFFj0urcauVx7chQlHZ/Qfw==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/rhumb-distance/6.3.0: + resolution: {integrity: sha512-wMIQVvznusonnp/POeucFdA4Rubn0NrkcEMdxdcCgFK7OmTz0zU4CEnNONF2IUGkQ5WwoKiuS7MOTQ8OuCjSfQ==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + dev: false + + /@turf/sample/5.1.5: + resolution: {integrity: sha512-EJE8yx+5x7rXejTzwBdOKpvT4tOCS0jwYJfycyTVDuLUSh2rETeYdjy7EeJbofnxm9CRPXqWQMPWIBKWxNTjow==} + dependencies: + '@turf/helpers': 5.1.5 + dev: false + + /@turf/sample/6.3.0: + resolution: {integrity: sha512-CmUkpoLIi+57jxBmYh4KW7S4Vculty84NC2ERNFZrLkVquewVYSppwKsaZtc0Hbap6a1N7hP4C80e2bPzRC4fg==} + dependencies: + '@turf/helpers': 6.3.0 + dev: false + + /@turf/sector/5.1.5: + resolution: {integrity: sha512-dnWVifL3xWTqPPs8mfbbV9muDimNJtxRk4ogrkOLEDQ9ZZ1ALQMtQdYrg7kI3iC+L+LscV37tl+E8bayWyX8YA==} + dependencies: + '@turf/circle': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/line-arc': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/sector/6.3.0: + resolution: {integrity: sha512-bHaDlHzCKEl5G+EEXdMTk3MFC8Yl5QjwrMVakF2Usi0P0c7hp6r10QVOjq9nmn6jvZHTPaiG2A4z9unkWIFxIg==} + dependencies: + '@turf/circle': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/line-arc': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/shortest-path/5.1.5: + resolution: {integrity: sha512-ZGC8kSBj02GKWiI56Z5FNdrZ+fS0xyeOUNrPJWzudAlrv9wKGaRuWoIVRLGBu0j0OuO1HCwggic2c6WV/AhP0A==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/bbox-polygon': 5.1.5 + '@turf/boolean-point-in-polygon': 5.1.5 + '@turf/clean-coords': 5.1.5 + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + '@turf/transform-scale': 5.1.5 + dev: false + + /@turf/shortest-path/6.3.0: + resolution: {integrity: sha512-dc50vcgb6G/nyljCdfxS4T3tGb2f45MkKEFdz6sVTYqjNakPnRoJao8xvInVsf1i2J53dWNU635oZhW9P1nqKg==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/bbox-polygon': 6.3.0 + '@turf/boolean-point-in-polygon': 6.3.0 + '@turf/clean-coords': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/transform-scale': 6.3.0 + dev: false + + /@turf/simplify/5.1.5: + resolution: {integrity: sha512-IuBXEYdGSxbDOK3v949ajaPvs6NhjhTCTbKA6mSGuVbwGS7gzAuRiPSG4K/MvCVuQy3PKpkPcUGD+Uvt2Ov2PQ==} + dependencies: + '@turf/clean-coords': 5.1.5 + '@turf/clone': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/simplify/6.3.0: + resolution: {integrity: sha512-6a+9oKwZpZk3Oohz9koQZGXh1qb+/UgUz2yW2bunjjlKpBdBFhRbEKi0KeprgPGFLLTMjf0tybhO1rFwiz6S1w==} + dependencies: + '@turf/clean-coords': 6.3.0 + '@turf/clone': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/square-grid/5.1.5: + resolution: {integrity: sha512-/pusEL4FmOwNWLcZfIXUyqUe0fOdkfaLO4wLhDlg/ZL1jWr/wZjhVlMU0tQ27kVN6dJTvlzNc9e0JWNw6yt2eQ==} + dependencies: + '@turf/boolean-contains': 5.1.5 + '@turf/boolean-overlap': 5.1.5 + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/intersect': 5.1.6 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/square-grid/6.3.0: + resolution: {integrity: sha512-ZCgThI5hPLJNVErCB9zkJ3w3OpW6BbrOqyrxFbwlYGZrZ6uj52/j8PWQtwnmiqdv0k8+Cbxrap7E6//Oks4jIw==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/rectangle-grid': 6.3.0 + dev: false + + /@turf/square/5.1.5: + resolution: {integrity: sha512-GgP2le9ksoW6vsVef5wFkjmWQiLPTJvcjGXqmoGWT4oMwDpvTJVQ91RBLs8qQbI4KACCQevz94N69klk3ah30Q==} + dependencies: + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + dev: false + + /@turf/square/6.3.0: + resolution: {integrity: sha512-/nRGsV0DlUcOYv+gKAkIADSf+HooNLbOLBTUdhq9Piy3LuAWIXT+Rt5XN+NuNZP+84Al34GA1fR+BxqQ4reh7w==} + dependencies: + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + dev: false + + /@turf/standard-deviational-ellipse/5.1.5: + resolution: {integrity: sha512-GOaxGKeeJAXV1H3Zz2fjQ5XeSbMKz1OkFRlTDBUipiAawe/9qTCF55L87I2ZPnO80B5BaaIT+AN2n0lMcAklzA==} + dependencies: + '@turf/center-mean': 5.1.5 + '@turf/ellipse': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + '@turf/points-within-polygon': 5.1.5 + dev: false + + /@turf/standard-deviational-ellipse/6.3.0: + resolution: {integrity: sha512-e8CeSUv5FLpzlJxiOr9lDtJIY3e/JKW4is+gBO8rMTQNFbWyrqXtzhyTfrwXEPKmaeei1DK9ixxj/oRDna25Hw==} + dependencies: + '@turf/center-mean': 6.3.0 + '@turf/ellipse': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/points-within-polygon': 6.3.0 + dev: false + + /@turf/tag/5.1.5: + resolution: {integrity: sha512-XI3QFpva6tEsRnzFe1tJGdAAWlzjnXZPfJ9EKShTxEW8ZgPzm92b2odjiSAt2KuQusK82ltNfdw5Frlna5xGYQ==} + dependencies: + '@turf/boolean-point-in-polygon': 5.1.5 + '@turf/clone': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/tag/6.3.0: + resolution: {integrity: sha512-3L//rLql+ILeFuZ5L/sPm0f5NcHrNgUnGiB1hSIp3kdhhIIiZUpcktJUbksTvID67JJlP3smfyIQiU++LZW21w==} + dependencies: + '@turf/boolean-point-in-polygon': 6.3.0 + '@turf/clone': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/tesselate/5.1.5: + resolution: {integrity: sha512-Rs/jAij26bcU4OzvFXkWDase1G3kSwyuuKZPFU0t7OmJu7eQJOR12WOZLGcVxd5oBlklo4xPE4EBQUqpQUsQgg==} + dependencies: + '@turf/helpers': 5.1.5 + earcut: 2.2.2 + dev: false + + /@turf/tesselate/6.3.0: + resolution: {integrity: sha512-SkBHJCci/ergp/Y1TIfBRavdEJgFatQDz+ySdggXHT+mBiJEOEia3N+8V89RVOnORXTCDsjzWOWwftCS/J2sKQ==} + dependencies: + '@turf/helpers': 6.3.0 + earcut: 2.2.2 + dev: false + + /@turf/tin/5.1.5: + resolution: {integrity: sha512-lDyCTYKoThBIKmkBxBMupqEpFbvTDAYuZIs8qrWnmux2vntSb8OFGi7ZbGPC6apS2hdVwZZae3YB88Tp+Fg+xw==} + dependencies: + '@turf/helpers': 5.1.5 + dev: false + + /@turf/tin/6.3.0: + resolution: {integrity: sha512-obk9vyzKo3o3Dy4fPlb8IROb9LdMlz4LvKZ63DNtQsxwrWsc+og0EOh2mpvZrCIeoObx3ah5SnuAh14xH4JybA==} + dependencies: + '@turf/helpers': 6.3.0 + dev: false + + /@turf/transform-rotate/5.1.5: + resolution: {integrity: sha512-3QKckeHKPXu5O5vEuT+nkszGDI6aknDD06ePb00+6H2oA7MZj7nj+fVQIJLs41MRb76IyKr4n5NvuKZU6idESA==} + dependencies: + '@turf/centroid': 5.1.5 + '@turf/clone': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + '@turf/rhumb-bearing': 5.1.5 + '@turf/rhumb-destination': 5.1.5 + '@turf/rhumb-distance': 5.1.5 + dev: false + + /@turf/transform-rotate/6.3.0: + resolution: {integrity: sha512-6CPfmDdaXjbBoPeyHkui704vz6MD3MoI09LGRVJ/RIo1uH/OL6RDSlCfLxFtkE33FJ7VV4giczc3LF1UP5Oh9w==} + dependencies: + '@turf/centroid': 6.3.0 + '@turf/clone': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/rhumb-bearing': 6.3.0 + '@turf/rhumb-destination': 6.3.0 + '@turf/rhumb-distance': 6.3.0 + dev: false + + /@turf/transform-scale/5.1.5: + resolution: {integrity: sha512-t1fCZX29ONA7DJiqCKA4YZy0+hCzhppWNOZhglBUv9vKHsWCFYZDUKfFInciaypUInsZyvm8eKxxixBVPdPGsw==} + dependencies: + '@turf/bbox': 5.1.5 + '@turf/center': 5.1.5 + '@turf/centroid': 5.1.5 + '@turf/clone': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + '@turf/rhumb-bearing': 5.1.5 + '@turf/rhumb-destination': 5.1.5 + '@turf/rhumb-distance': 5.1.5 + dev: false + + /@turf/transform-scale/6.3.0: + resolution: {integrity: sha512-UnLWEXAUdZy7JYbylMjYczPUkxXlUK1nMgv7zEzQ+8mczysPVsgB/FDyiexY2bgVEEBMeDqFSHtqLRavXljI0A==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/center': 6.3.0 + '@turf/centroid': 6.3.0 + '@turf/clone': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/rhumb-bearing': 6.3.0 + '@turf/rhumb-destination': 6.3.0 + '@turf/rhumb-distance': 6.3.0 + dev: false + + /@turf/transform-translate/5.1.5: + resolution: {integrity: sha512-GdLFp7I7198oRQt311B8EjiqHupndeMSQ3Zclzki5L/niUrb1ptOIpo+mxSidSy03m+1Q5ylWlENroI1WBcQ3Q==} + dependencies: + '@turf/clone': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + '@turf/meta': 5.2.0 + '@turf/rhumb-destination': 5.1.5 + dev: false + + /@turf/transform-translate/6.3.0: + resolution: {integrity: sha512-ZGAK3T6wdYLOIKr/FHl+i09b1vhPV3XWHw4/M27xA6US2rNcO6/jkLjskdME/3JzJDFmGa8F2vlPqlhtWWoRSw==} + dependencies: + '@turf/clone': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/rhumb-destination': 6.3.0 + dev: false + + /@turf/triangle-grid/5.1.5: + resolution: {integrity: sha512-jmCRcynI80xsVqd+0rv0YxP6mvZn4BAaJv8dwthg2T3WfHB9OD+rNUMohMuUY8HmI0zRT3s/Ypdy2Cdri9u/tw==} + dependencies: + '@turf/distance': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/intersect': 5.1.6 + '@turf/invariant': 5.2.0 + dev: false + + /@turf/triangle-grid/6.3.0: + resolution: {integrity: sha512-2AExXl7pTvRKOyGowuvvUm0tTyLQl+xzvv+mgWgNyg84qQptGN3HFH/QS4quoQdEzOyHNLFHgloNn6cWFX9v4A==} + dependencies: + '@turf/distance': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/intersect': 6.3.0 + dev: false + + /@turf/truncate/5.1.5: + resolution: {integrity: sha512-WjWGsRE6o1vUqULGb/O7O1eK6B4Eu6R/RBZWnF0rH0Os6WVel6tHktkeJdlKwz9WElIEO12wDIu6uKd54t7DDQ==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + dev: false + + /@turf/truncate/6.3.0: + resolution: {integrity: sha512-fvzR3BUODPciEBELLqqAggEEeb1L0d79WZYb9HKaoSB0GKTTgNrEbkTXiiGEjGJ1s1FMqXOEp0DKsLvvb1h4OA==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + dev: false + + /@turf/turf/5.1.6: + resolution: {integrity: sha512-NIjkt5jAbOrom+56ELw9ERZF6qsdf1xAIHyC9/PkDMIOQAxe7FVe2HaqbQ+x88F0q5FaSX4dtpIEf08md6h5/A==} + dependencies: + '@turf/along': 5.1.5 + '@turf/area': 5.1.5 + '@turf/bbox': 5.1.5 + '@turf/bbox-clip': 5.1.5 + '@turf/bbox-polygon': 5.1.5 + '@turf/bearing': 5.1.5 + '@turf/bezier-spline': 5.1.5 + '@turf/boolean-clockwise': 5.1.5 + '@turf/boolean-contains': 5.1.5 + '@turf/boolean-crosses': 5.1.5 + '@turf/boolean-disjoint': 5.1.6 + '@turf/boolean-equal': 5.1.5 + '@turf/boolean-overlap': 5.1.5 + '@turf/boolean-parallel': 5.1.5 + '@turf/boolean-point-in-polygon': 5.1.5 + '@turf/boolean-point-on-line': 5.1.5 + '@turf/boolean-within': 5.1.5 + '@turf/buffer': 5.1.5 + '@turf/center': 5.1.5 + '@turf/center-mean': 5.1.5 + '@turf/center-median': 5.1.5 + '@turf/center-of-mass': 5.1.5 + '@turf/centroid': 5.1.5 + '@turf/circle': 5.1.5 + '@turf/clean-coords': 5.1.5 + '@turf/clone': 5.1.5 + '@turf/clusters': 5.1.5 + '@turf/clusters-dbscan': 5.1.5 + '@turf/clusters-kmeans': 5.1.5 + '@turf/collect': 5.1.5 + '@turf/combine': 5.1.5 + '@turf/concave': 5.1.5 + '@turf/convex': 5.1.5 + '@turf/destination': 5.1.5 + '@turf/difference': 5.1.5 + '@turf/dissolve': 5.1.5 + '@turf/distance': 5.1.5 + '@turf/ellipse': 5.1.5 + '@turf/envelope': 5.1.5 + '@turf/explode': 5.1.5 + '@turf/flatten': 5.1.5 + '@turf/flip': 5.1.5 + '@turf/great-circle': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/hex-grid': 5.1.5 + '@turf/interpolate': 5.1.5 + '@turf/intersect': 5.1.6 + '@turf/invariant': 5.1.5 + '@turf/isobands': 5.1.5 + '@turf/isolines': 5.1.5 + '@turf/kinks': 5.1.5 + '@turf/length': 5.1.5 + '@turf/line-arc': 5.1.5 + '@turf/line-chunk': 5.1.5 + '@turf/line-intersect': 5.1.5 + '@turf/line-offset': 5.1.5 + '@turf/line-overlap': 5.1.5 + '@turf/line-segment': 5.1.5 + '@turf/line-slice': 5.1.5 + '@turf/line-slice-along': 5.1.5 + '@turf/line-split': 5.1.5 + '@turf/line-to-polygon': 5.1.5 + '@turf/mask': 5.1.5 + '@turf/meta': 5.1.6 + '@turf/midpoint': 5.1.5 + '@turf/nearest-point': 5.1.5 + '@turf/nearest-point-on-line': 5.1.5 + '@turf/nearest-point-to-line': 5.1.6 + '@turf/planepoint': 5.1.5 + '@turf/point-grid': 5.1.5 + '@turf/point-on-feature': 5.1.5 + '@turf/point-to-line-distance': 5.1.6 + '@turf/points-within-polygon': 5.1.5 + '@turf/polygon-tangents': 5.1.5 + '@turf/polygon-to-line': 5.1.5 + '@turf/polygonize': 5.1.5 + '@turf/projection': 5.1.5 + '@turf/random': 5.1.5 + '@turf/rewind': 5.1.5 + '@turf/rhumb-bearing': 5.1.5 + '@turf/rhumb-destination': 5.1.5 + '@turf/rhumb-distance': 5.1.5 + '@turf/sample': 5.1.5 + '@turf/sector': 5.1.5 + '@turf/shortest-path': 5.1.5 + '@turf/simplify': 5.1.5 + '@turf/square': 5.1.5 + '@turf/square-grid': 5.1.5 + '@turf/standard-deviational-ellipse': 5.1.5 + '@turf/tag': 5.1.5 + '@turf/tesselate': 5.1.5 + '@turf/tin': 5.1.5 + '@turf/transform-rotate': 5.1.5 + '@turf/transform-scale': 5.1.5 + '@turf/transform-translate': 5.1.5 + '@turf/triangle-grid': 5.1.5 + '@turf/truncate': 5.1.5 + '@turf/union': 5.1.5 + '@turf/unkink-polygon': 5.1.5 + '@turf/voronoi': 5.1.5 + dev: false + + /@turf/turf/6.3.0: + resolution: {integrity: sha512-6CcUammJKsn6mI7/+DlnXqf1iAk5HZ86/wmHIVG6VTmmPBP5drWSjoRUcaiXQADzLLuR9eZ3kl11KEOdvn9DmQ==} + dependencies: + '@turf/along': 6.3.0 + '@turf/angle': 6.3.0 + '@turf/area': 6.3.0 + '@turf/bbox': 6.3.0 + '@turf/bbox-clip': 6.3.0 + '@turf/bbox-polygon': 6.3.0 + '@turf/bearing': 6.3.0 + '@turf/bezier-spline': 6.3.0 + '@turf/boolean-clockwise': 6.3.0 + '@turf/boolean-contains': 6.3.0 + '@turf/boolean-crosses': 6.3.0 + '@turf/boolean-disjoint': 6.3.0 + '@turf/boolean-equal': 6.3.0 + '@turf/boolean-intersects': 6.3.0 + '@turf/boolean-overlap': 6.3.0 + '@turf/boolean-parallel': 6.3.0 + '@turf/boolean-point-in-polygon': 6.3.0 + '@turf/boolean-point-on-line': 6.3.0 + '@turf/boolean-within': 6.3.0 + '@turf/buffer': 6.3.0 + '@turf/center': 6.3.0 + '@turf/center-mean': 6.3.0 + '@turf/center-median': 6.3.0 + '@turf/center-of-mass': 6.3.0 + '@turf/centroid': 6.3.0 + '@turf/circle': 6.3.0 + '@turf/clean-coords': 6.3.0 + '@turf/clone': 6.3.0 + '@turf/clusters': 6.3.0 + '@turf/clusters-dbscan': 6.3.0 + '@turf/clusters-kmeans': 6.3.0 + '@turf/collect': 6.3.0 + '@turf/combine': 6.3.0 + '@turf/concave': 6.3.0 + '@turf/convex': 6.3.0 + '@turf/destination': 6.3.0 + '@turf/difference': 6.3.0 + '@turf/dissolve': 6.3.0 + '@turf/distance': 6.3.0 + '@turf/distance-weight': 6.3.0 + '@turf/ellipse': 6.3.0 + '@turf/envelope': 6.3.0 + '@turf/explode': 6.3.0 + '@turf/flatten': 6.3.0 + '@turf/flip': 6.3.0 + '@turf/great-circle': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/hex-grid': 6.3.0 + '@turf/interpolate': 6.3.0 + '@turf/intersect': 6.3.0 + '@turf/invariant': 6.3.0 + '@turf/isobands': 6.3.0 + '@turf/isolines': 6.3.0 + '@turf/kinks': 6.3.0 + '@turf/length': 6.3.0 + '@turf/line-arc': 6.3.0 + '@turf/line-chunk': 6.3.0 + '@turf/line-intersect': 6.3.0 + '@turf/line-offset': 6.3.0 + '@turf/line-overlap': 6.3.0 + '@turf/line-segment': 6.3.0 + '@turf/line-slice': 6.3.0 + '@turf/line-slice-along': 6.3.0 + '@turf/line-split': 6.3.0 + '@turf/line-to-polygon': 6.3.0 + '@turf/mask': 6.3.0 + '@turf/meta': 6.3.0 + '@turf/midpoint': 6.3.0 + '@turf/moran-index': 6.3.0 + '@turf/nearest-point': 6.3.0 + '@turf/nearest-point-on-line': 6.3.0 + '@turf/nearest-point-to-line': 6.3.0 + '@turf/planepoint': 6.3.0 + '@turf/point-grid': 6.3.0 + '@turf/point-on-feature': 6.3.0 + '@turf/point-to-line-distance': 6.3.0 + '@turf/points-within-polygon': 6.3.0 + '@turf/polygon-smooth': 6.3.0 + '@turf/polygon-tangents': 6.3.0 + '@turf/polygon-to-line': 6.3.0 + '@turf/polygonize': 6.3.0 + '@turf/projection': 6.3.0 + '@turf/random': 6.3.0 + '@turf/rewind': 6.3.0 + '@turf/rhumb-bearing': 6.3.0 + '@turf/rhumb-destination': 6.3.0 + '@turf/rhumb-distance': 6.3.0 + '@turf/sample': 6.3.0 + '@turf/sector': 6.3.0 + '@turf/shortest-path': 6.3.0 + '@turf/simplify': 6.3.0 + '@turf/square': 6.3.0 + '@turf/square-grid': 6.3.0 + '@turf/standard-deviational-ellipse': 6.3.0 + '@turf/tag': 6.3.0 + '@turf/tesselate': 6.3.0 + '@turf/tin': 6.3.0 + '@turf/transform-rotate': 6.3.0 + '@turf/transform-scale': 6.3.0 + '@turf/transform-translate': 6.3.0 + '@turf/triangle-grid': 6.3.0 + '@turf/truncate': 6.3.0 + '@turf/union': 6.3.0 + '@turf/unkink-polygon': 6.3.0 + '@turf/voronoi': 6.3.0 + dev: false + + /@turf/union/5.1.5: + resolution: {integrity: sha512-wBy1ixxC68PpsTeEDebk/EfnbI1Za5dCyY7xFY9NMzrtVEOy0l0lQ5syOsaqY4Ire+dbsDM66p2GGxmefoyIEA==} + dependencies: + '@turf/helpers': 5.1.5 + turf-jsts: 1.2.3 + dev: false + + /@turf/union/6.3.0: + resolution: {integrity: sha512-m8yh13Q5E0Y+YC10+iI/Qq0Txt7UmSIFByc7DfNVlMMGTceqLFa8xGwSVdFuB/d6MWwKuzKonQMl1PUx/Vd2Iw==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + polygon-clipping: 0.15.2 + dev: false + + /@turf/unkink-polygon/5.1.5: + resolution: {integrity: sha512-lzSrgsfSuyxIc4pkE2qyM2dsHxR992e6oItoZAT8G58A2Ef4qc5gRocmXPWZakGx41fQobegSo7wlo4I49wyHg==} + dependencies: + '@turf/area': 5.1.5 + '@turf/boolean-point-in-polygon': 5.1.5 + '@turf/helpers': 5.1.5 + '@turf/meta': 5.2.0 + rbush: 2.0.2 + dev: false + + /@turf/unkink-polygon/6.3.0: + resolution: {integrity: sha512-XBUJkuDEr2R8cHpl+sHtV15J1S28/HCxhAHqfV+As3bTi81KhVhBK9EBwFGYCu9aerVgBK129FjRKXjnTYqtDw==} + dependencies: + '@turf/area': 6.3.0 + '@turf/boolean-point-in-polygon': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + rbush: 2.0.2 + dev: false + + /@turf/voronoi/5.1.5: + resolution: {integrity: sha512-Ad0HZAyYjOpMIZfDGV+Q+30M9PQHIirTyn32kWyTjEI1O6uhL5NOYjzSha4Sr77xOls3hGzKOj+JET7eDtOvsg==} + dependencies: + '@turf/helpers': 5.1.5 + '@turf/invariant': 5.2.0 + d3-voronoi: 1.1.2 + dev: false + + /@turf/voronoi/6.3.0: + resolution: {integrity: sha512-M0C6Kfo+qvKk4veRD7xW1PjMitJ0vqN6F4OOczxyX3tkj/oMyhWg+YbWk7mo/wKdSo9gCvHhnIVNkPsSSaFmyQ==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/invariant': 6.3.0 + d3-voronoi: 1.1.2 + dev: false + + /@tweenjs/tween.js/18.6.4: + resolution: {integrity: sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==} + dev: false + + /@types/amap-js-api/1.4.9: + resolution: {integrity: sha512-g4+JRIKga/HjJHI5LaL//zFrmGF6DZLi5z6Rcpr4uR/c6LUTHA+xPZG2m10tsKfWO9/DybJormyN+aiwm4h1pw==} + dev: false + + /@types/anymatch/1.3.1: + resolution: {integrity: sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==} + dev: true + + /@types/body-parser/1.19.0: + resolution: {integrity: sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==} + dependencies: + '@types/connect': 3.4.33 + '@types/node': 14.14.10 + dev: true + + /@types/connect-history-api-fallback/1.3.3: + resolution: {integrity: sha512-7SxFCd+FLlxCfwVwbyPxbR4khL9aNikJhrorw8nUIOqeuooc9gifBuDQOJw5kzN7i6i3vLn9G8Wde/4QDihpYw==} + dependencies: + '@types/express-serve-static-core': 4.17.14 + '@types/node': 14.14.10 + dev: true + + /@types/connect/3.4.33: + resolution: {integrity: sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==} + dependencies: + '@types/node': 14.14.10 + dev: true + + /@types/d3-timer/1.0.10: + resolution: {integrity: sha512-ZnAbquVqy+4ZjdW0cY6URp+qF/AzTVNda2jYyOzpR2cPT35FTXl78s15Bomph9+ckOiI1TtkljnWkwbIGAb6rg==} + dev: false + + /@types/eslint-visitor-keys/1.0.0: + resolution: {integrity: sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==} + dev: true + + /@types/estree/0.0.45: + resolution: {integrity: sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==} + dev: false + + /@types/express-serve-static-core/4.17.14: + resolution: {integrity: sha512-uFTLwu94TfUFMToXNgRZikwPuZdOtDgs3syBtAIr/OXorL1kJqUJT9qCLnRZ5KBOWfZQikQ2xKgR2tnDj1OgDA==} + dependencies: + '@types/node': 14.14.10 + '@types/qs': 6.9.5 + '@types/range-parser': 1.2.3 + dev: true + + /@types/express/4.17.9: + resolution: {integrity: sha512-SDzEIZInC4sivGIFY4Sz1GG6J9UObPwCInYJjko2jzOf/Imx/dlpume6Xxwj1ORL82tBbmN4cPDIDkLbWHk9hw==} + dependencies: + '@types/body-parser': 1.19.0 + '@types/express-serve-static-core': 4.17.14 + '@types/qs': 6.9.5 + '@types/serve-static': 1.13.8 + dev: true + + /@types/geojson/7946.0.7: + resolution: {integrity: sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ==} + dev: false + + /@types/glob/7.1.3: + resolution: {integrity: sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==} + dependencies: + '@types/minimatch': 3.0.3 + '@types/node': 14.14.10 + dev: true + + /@types/http-proxy-middleware/0.19.3: + resolution: {integrity: sha512-lnBTx6HCOUeIJMLbI/LaL5EmdKLhczJY5oeXZpX/cXE4rRqb3RmV7VcMpiEfYkmTjipv3h7IAyIINe4plEv7cA==} + dependencies: + '@types/connect': 3.4.33 + '@types/http-proxy': 1.17.4 + '@types/node': 14.14.10 + dev: true + + /@types/http-proxy/1.17.4: + resolution: {integrity: sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q==} + dependencies: + '@types/node': 14.14.10 + dev: true + + /@types/json-schema/7.0.7: + resolution: {integrity: sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==} + dev: true + + /@types/json5/0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/mapbox-gl/1.13.0: + resolution: {integrity: sha512-z5YxncrARfKaJXzkhy4qS0cOldMfGIXq5yOPQcU9S12/xjAe3m66scftYlV1E10Em5QGdW2xahBb3CPk/dDcqA==} + dependencies: + '@types/geojson': 7946.0.7 + dev: false + + /@types/mime/2.0.3: + resolution: {integrity: sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==} + dev: true + + /@types/minimatch/3.0.3: + resolution: {integrity: sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==} + dev: true + + /@types/minimist/1.2.1: + resolution: {integrity: sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==} + dev: true + + /@types/node/14.14.10: + resolution: {integrity: sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==} + + /@types/normalize-package-data/2.4.0: + resolution: {integrity: sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==} + dev: true + + /@types/parse-json/4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + dev: true + optional: true + + /@types/q/1.5.4: + resolution: {integrity: sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==} + dev: true + + /@types/qs/6.9.5: + resolution: {integrity: sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ==} + dev: true + + /@types/range-parser/1.2.3: + resolution: {integrity: sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==} + dev: true + + /@types/serve-static/1.13.8: + resolution: {integrity: sha512-MoJhSQreaVoL+/hurAZzIm8wafFR6ajiTM1m4A0kv6AGeVBl4r4pOV8bGFrjjq1sGxDTnCoF8i22o0/aE5XCyA==} + dependencies: + '@types/mime': 2.0.3 + '@types/node': 14.14.10 + dev: true + + /@types/source-list-map/0.1.2: + resolution: {integrity: sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==} + dev: true + + /@types/tapable/1.0.6: + resolution: {integrity: sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==} + dev: true + + /@types/uglify-js/3.11.1: + resolution: {integrity: sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q==} + dependencies: + source-map: 0.6.1 + dev: true + + /@types/webpack-dev-server/3.11.1: + resolution: {integrity: sha512-rIb+LtUkKnh7+oIJm3WiMJONd71Q0lZuqGLcSqhZ5qjN9gV/CNmZe7Bai+brnBPZ/KVYOsr+4bFLiNZwjBicLw==} + dependencies: + '@types/connect-history-api-fallback': 1.3.3 + '@types/express': 4.17.9 + '@types/http-proxy-middleware': 0.19.3 + '@types/serve-static': 1.13.8 + '@types/webpack': 4.41.25 + dev: true + + /@types/webpack-env/1.16.0: + resolution: {integrity: sha512-Fx+NpfOO0CpeYX2g9bkvX8O5qh9wrU1sOF4g8sft4Mu7z+qfe387YlyY8w8daDyDsKY5vUxM0yxkAYnbkRbZEw==} + dev: true + + /@types/webpack-sources/2.0.0: + resolution: {integrity: sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg==} + dependencies: + '@types/node': 14.14.10 + '@types/source-list-map': 0.1.2 + source-map: 0.7.3 + dev: true + + /@types/webpack/4.41.25: + resolution: {integrity: sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ==} + dependencies: + '@types/anymatch': 1.3.1 + '@types/node': 14.14.10 + '@types/tapable': 1.0.6 + '@types/uglify-js': 3.11.1 + '@types/webpack-sources': 2.0.0 + source-map: 0.6.1 + dev: true + + /@typescript-eslint/eslint-plugin/2.34.0_28deb19c9a1505f8eaba25f08813d781: + resolution: {integrity: sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + peerDependencies: + '@typescript-eslint/parser': ^2.0.0 + eslint: ^5.0.0 || ^6.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/experimental-utils': 2.34.0_eslint@6.8.0+typescript@4.2.4 + '@typescript-eslint/parser': 2.34.0_eslint@6.8.0+typescript@4.2.4 + eslint: 6.8.0 + functional-red-black-tree: 1.0.1 + regexpp: 3.1.0 + tsutils: 3.21.0_typescript@4.2.4 + typescript: 4.2.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils/2.34.0_eslint@6.8.0+typescript@4.2.4: + resolution: {integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.7 + '@typescript-eslint/typescript-estree': 2.34.0_typescript@4.2.4 + eslint: 6.8.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser/2.34.0_eslint@6.8.0+typescript@4.2.4: + resolution: {integrity: sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@types/eslint-visitor-keys': 1.0.0 + '@typescript-eslint/experimental-utils': 2.34.0_eslint@6.8.0+typescript@4.2.4 + '@typescript-eslint/typescript-estree': 2.34.0_typescript@4.2.4 + eslint: 6.8.0 + eslint-visitor-keys: 1.3.0 + typescript: 4.2.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree/2.34.0_typescript@4.2.4: + resolution: {integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + debug: 4.3.1 + eslint-visitor-keys: 1.3.0 + glob: 7.1.7 + is-glob: 4.0.1 + lodash: 4.17.20 + semver: 7.3.5 + tsutils: 3.21.0_typescript@4.2.4 + typescript: 4.2.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/babel-helper-vue-jsx-merge-props/1.2.1: + resolution: {integrity: sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==} + dev: true + + /@vue/babel-helper-vue-transform-on/1.0.0-rc.2: + resolution: {integrity: sha512-1+7CwjQ0Kasml6rHoNQUmbISwqLNNfFVBUcZl6QBremUl296ZmLrVQPqJP5pyAAWjZke5bpI1hlj+LVVuT7Jcg==} + dev: true + + /@vue/babel-plugin-jsx/1.0.0-rc.3_@babel+core@7.12.9: + resolution: {integrity: sha512-/Ibq0hoKsidnHWPhgRpjcjYhYcHpqEm2fiKVAPO88OXZNHGwaGgS4yXkC6TDEvlZep4mBDo+2S5T81wpbVh90Q==} + dependencies: + '@babel/helper-module-imports': 7.12.5 + '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 + '@babel/traverse': 7.12.9 + '@babel/types': 7.12.7 + '@vue/babel-helper-vue-transform-on': 1.0.0-rc.2 + camelcase: 6.2.0 + html-tags: 3.1.0 + svg-tags: 1.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@vue/babel-plugin-transform-vue-jsx/1.2.1_@babel+core@7.12.9: + resolution: {integrity: sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-module-imports': 7.12.5 + '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 + '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 + html-tags: 2.0.0 + lodash.kebabcase: 4.1.1 + svg-tags: 1.0.0 + dev: true + + /@vue/babel-preset-app/4.5.9_vue@2.6.12: + resolution: {integrity: sha512-d2H4hFnJsGnZtJAAZIbo1dmQJ2SI1MYix1Tc9/etlnJtCDPRHeCNodCSeuLgDwnoAyT3unzyHmTtaO56KRDuOQ==} + peerDependencies: + vue: ^2 || ^3.0.0-0 + peerDependenciesMeta: + core-js: + optional: true + vue: + optional: true + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-compilation-targets': 7.12.5_@babel+core@7.12.9 + '@babel/helper-module-imports': 7.12.5 + '@babel/plugin-proposal-class-properties': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-proposal-decorators': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-transform-runtime': 7.12.1_@babel+core@7.12.9 + '@babel/preset-env': 7.12.7_@babel+core@7.12.9 + '@babel/runtime': 7.12.13 + '@vue/babel-plugin-jsx': 1.0.0-rc.3_@babel+core@7.12.9 + '@vue/babel-preset-jsx': 1.2.4_@babel+core@7.12.9 + babel-plugin-dynamic-import-node: 2.3.3 + core-js: 3.8.0 + core-js-compat: 3.8.0 + semver: 6.3.0 + vue: 2.6.12 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/babel-preset-jsx/1.2.4_@babel+core@7.12.9: + resolution: {integrity: sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 + '@vue/babel-plugin-transform-vue-jsx': 1.2.1_@babel+core@7.12.9 + '@vue/babel-sugar-composition-api-inject-h': 1.2.1_@babel+core@7.12.9 + '@vue/babel-sugar-composition-api-render-instance': 1.2.4_@babel+core@7.12.9 + '@vue/babel-sugar-functional-vue': 1.2.2_@babel+core@7.12.9 + '@vue/babel-sugar-inject-h': 1.2.2_@babel+core@7.12.9 + '@vue/babel-sugar-v-model': 1.2.3_@babel+core@7.12.9 + '@vue/babel-sugar-v-on': 1.2.3_@babel+core@7.12.9 + dev: true + + /@vue/babel-sugar-composition-api-inject-h/1.2.1_@babel+core@7.12.9: + resolution: {integrity: sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 + dev: true + + /@vue/babel-sugar-composition-api-render-instance/1.2.4_@babel+core@7.12.9: + resolution: {integrity: sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 + dev: true + + /@vue/babel-sugar-functional-vue/1.2.2_@babel+core@7.12.9: + resolution: {integrity: sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 + dev: true + + /@vue/babel-sugar-inject-h/1.2.2_@babel+core@7.12.9: + resolution: {integrity: sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 + dev: true + + /@vue/babel-sugar-v-model/1.2.3_@babel+core@7.12.9: + resolution: {integrity: sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 + '@vue/babel-helper-vue-jsx-merge-props': 1.2.1 + '@vue/babel-plugin-transform-vue-jsx': 1.2.1_@babel+core@7.12.9 + camelcase: 5.3.1 + html-tags: 2.0.0 + svg-tags: 1.0.0 + dev: true + + /@vue/babel-sugar-v-on/1.2.3_@babel+core@7.12.9: + resolution: {integrity: sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 + '@vue/babel-plugin-transform-vue-jsx': 1.2.1_@babel+core@7.12.9 + camelcase: 5.3.1 + dev: true + + /@vue/cli-overlay/4.5.9: + resolution: {integrity: sha512-E2PWv6tCdUz+eEDj2Th2oxiKmzMe02qi0PcxiNaO7oaqggmEOrp1rLgop7DWpiLDBiqUZk2x0vjK/q2Tz8z/eg==} + dev: true + + /@vue/cli-plugin-babel/4.5.9_8ae91920fb9b3c76895c2e8acb765728: + resolution: {integrity: sha512-2tzaJU5yqAfXVhg1aYyd/Yfif6brv+tDZ49D1aOk7ZgMIwH5YUa0yo5HPcPOcmfpoVoNYcpqVYRfyT4EXIYSpg==} + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@vue/babel-preset-app': 4.5.9_vue@2.6.12 + '@vue/cli-service': 4.5.9_78c7ccaaf67bc946810ce1bc44e3e52a + '@vue/cli-shared-utils': 4.5.13 + babel-loader: 8.2.1_fa474cc1763d2be32ce57156dae52dec + cache-loader: 4.1.0_webpack@4.44.2 + thread-loader: 2.1.3_webpack@4.44.2 + webpack: 4.44.2 + transitivePeerDependencies: + - supports-color + - vue + - webpack-cli + - webpack-command + dev: true + + /@vue/cli-plugin-eslint/4.5.9_6778c0324b153720448c6ab0d5359212: + resolution: {integrity: sha512-wTsWRiRWPW5ik4bgtlh4P4h63Zgjsyvqx2FY0kcj+bSAnQGPJ3bKUOMU9KQP5EyNH6pAXMVGh2LEXK9WwJMf1w==} + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + eslint: '>= 1.6.0 < 7.0.0' + dependencies: + '@vue/cli-service': 4.5.9_78c7ccaaf67bc946810ce1bc44e3e52a + '@vue/cli-shared-utils': 4.5.13 + eslint: 6.8.0 + eslint-loader: 2.2.1_eslint@6.8.0+webpack@4.44.2 + globby: 9.2.0 + inquirer: 7.3.3 + webpack: 4.44.2 + yorkie: 2.0.0 + transitivePeerDependencies: + - webpack-cli + - webpack-command + dev: true + + /@vue/cli-plugin-router/4.5.9_@vue+cli-service@4.5.9: + resolution: {integrity: sha512-eBBfbZpQ1sJrdlx8i7iReFxSnuzwmrv+s2OCT3kjBd6uWRqGnD4VihpS4srC7vZLzDQrDplumSn0a93L9Qf3wQ==} + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + dependencies: + '@vue/cli-service': 4.5.9_78c7ccaaf67bc946810ce1bc44e3e52a + '@vue/cli-shared-utils': 4.5.13 + dev: true + + /@vue/cli-plugin-typescript/4.5.13_39528adfb493b7bca2f860161254fc75: + resolution: {integrity: sha512-CpLlIdFNV1gn9uC4Yh6QgWI42uk2x5Z3cb2ScxNSwWsR1vgSdr0/1DdNzoBm68aP8RUtnHHO/HZfPnvXiq42xA==} + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + '@vue/compiler-sfc': ^3.0.0-beta.14 + typescript: '>=2' + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dependencies: + '@types/webpack-env': 1.16.0 + '@vue/cli-service': 4.5.9_78c7ccaaf67bc946810ce1bc44e3e52a + '@vue/cli-shared-utils': 4.5.13 + cache-loader: 4.1.0_webpack@4.44.2 + fork-ts-checker-webpack-plugin: 3.1.1 + globby: 9.2.0 + thread-loader: 2.1.3_webpack@4.44.2 + ts-loader: 6.2.2_typescript@4.2.4 + tslint: 5.20.1_typescript@4.2.4 + typescript: 4.2.4 + webpack: 4.44.2 + yorkie: 2.0.0 + optionalDependencies: + fork-ts-checker-webpack-plugin-v5: /fork-ts-checker-webpack-plugin/5.2.1 + transitivePeerDependencies: + - webpack-cli + - webpack-command + dev: true + + /@vue/cli-plugin-vuex/4.5.9_@vue+cli-service@4.5.9: + resolution: {integrity: sha512-mFNIJhYiJjzCgytkDHX00ROy5Yzl7prkZpUbeDE0biwcLteMf2s3qZVbESOQl6GcviqcfEt2f3tHQQtLNa+OLg==} + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + dependencies: + '@vue/cli-service': 4.5.9_78c7ccaaf67bc946810ce1bc44e3e52a + dev: true + + /@vue/cli-service/4.5.9_78c7ccaaf67bc946810ce1bc44e3e52a: + resolution: {integrity: sha512-E3XlfM0q+UnnjbC9rwLIWNo2umZCRwnlMJY0KOhY1hFvqisGIYzFmQQ4o01KGyTx2BZNMuQg7Kw+BZ5gyM1Wig==} + engines: {node: '>=8'} + hasBin: true + peerDependencies: + '@vue/compiler-sfc': ^3.0.0-beta.14 + less-loader: '*' + pug-plain-loader: '*' + raw-loader: '*' + sass-loader: '*' + stylus-loader: '*' + vue-template-compiler: ^2.0.0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + less-loader: + optional: true + pug-plain-loader: + optional: true + raw-loader: + optional: true + sass-loader: + optional: true + stylus-loader: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@intervolga/optimize-cssnano-plugin': 1.0.6_webpack@4.44.2 + '@soda/friendly-errors-webpack-plugin': 1.7.1_webpack@4.44.2 + '@soda/get-current-script': 1.0.2 + '@types/minimist': 1.2.1 + '@types/webpack': 4.41.25 + '@types/webpack-dev-server': 3.11.1 + '@vue/cli-overlay': 4.5.9 + '@vue/cli-plugin-router': 4.5.9_@vue+cli-service@4.5.9 + '@vue/cli-plugin-vuex': 4.5.9_@vue+cli-service@4.5.9 + '@vue/cli-shared-utils': 4.5.13 + '@vue/component-compiler-utils': 3.2.0 + '@vue/preload-webpack-plugin': 1.1.2_e19cda6b5f21e6c518504c22be752ae4 + '@vue/web-component-wrapper': 1.2.0 + acorn: 7.4.1 + acorn-walk: 7.2.0 + address: 1.1.2 + autoprefixer: 9.8.6 + browserslist: 4.14.7 + cache-loader: 4.1.0_webpack@4.44.2 + case-sensitive-paths-webpack-plugin: 2.3.0 + cli-highlight: 2.1.8 + clipboardy: 2.3.0 + cliui: 6.0.0 + copy-webpack-plugin: 5.1.2_webpack@4.44.2 + css-loader: 3.6.0_webpack@4.44.2 + cssnano: 4.1.10 + debug: 4.3.1 + default-gateway: 5.0.5 + dotenv: 8.2.0 + dotenv-expand: 5.1.0 + file-loader: 4.3.0_webpack@4.44.2 + fs-extra: 7.0.1 + globby: 9.2.0 + hash-sum: 2.0.0 + html-webpack-plugin: 3.2.0_webpack@4.44.2 + launch-editor-middleware: 2.2.1 + lodash.defaultsdeep: 4.6.1 + lodash.mapvalues: 4.6.0 + lodash.transform: 4.6.0 + mini-css-extract-plugin: 0.9.0_webpack@4.44.2 + minimist: 1.2.5 + pnp-webpack-plugin: 1.6.4_typescript@4.2.4 + portfinder: 1.0.28 + postcss-loader: 3.0.0 + sass-loader: 8.0.2_sass@1.29.0 + ssri: 7.1.0 + terser-webpack-plugin: 2.3.8_webpack@4.44.2 + thread-loader: 2.1.3_webpack@4.44.2 + url-loader: 2.3.0_file-loader@4.3.0+webpack@4.44.2 + vue-loader: 15.9.5_e6f9754d45536372aa6e5c6b320144db + vue-style-loader: 4.1.2 + vue-template-compiler: 2.6.12 + webpack: 4.44.2 + webpack-bundle-analyzer: 3.9.0 + webpack-chain: 6.5.1 + webpack-dev-server: 3.11.0_webpack@4.44.2 + webpack-merge: 4.2.2 + optionalDependencies: + vue-loader-v16: /vue-loader/16.8.3_webpack@4.44.2 + transitivePeerDependencies: + - supports-color + - typescript + - webpack-cli + - webpack-command + dev: true + + /@vue/cli-shared-utils/4.5.13: + resolution: {integrity: sha512-HpnOrkLg42RFUsQGMJv26oTG3J3FmKtO2WSRhKIIL+1ok3w9OjGCtA3nMMXN27f9eX14TqO64M36DaiSZ1fSiw==} + dependencies: + '@hapi/joi': 15.1.1 + chalk: 2.4.2 + execa: 1.0.0 + launch-editor: 2.2.1 + lru-cache: 5.1.1 + node-ipc: 9.1.3 + open: 6.4.0 + ora: 3.4.0 + read-pkg: 5.2.0 + request: 2.88.2 + semver: 6.3.0 + strip-ansi: 6.0.0 + dev: true + + /@vue/component-compiler-utils/3.2.0: + resolution: {integrity: sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw==} + dependencies: + consolidate: 0.15.1 + hash-sum: 1.0.2 + lru-cache: 4.1.5 + merge-source-map: 1.1.0 + postcss: 7.0.35 + postcss-selector-parser: 6.0.4 + source-map: 0.6.1 + vue-template-es2015-compiler: 1.9.1 + optionalDependencies: + prettier: 1.19.1 + dev: true + + /@vue/composition-api/1.0.0-rc.9_vue@2.6.12: + resolution: {integrity: sha512-U//BqmGRVaPyZbYsPfRlmCKnnFkhRzUBu7cjrWn4PSwQ5Oh+M0KcYIHlupUd+Qmd8KwaiYiuUpJLncl3wFsrdg==} + peerDependencies: + vue: '>= 2.5 < 3' + dependencies: + tslib: 2.2.0 + vue: 2.6.12 + dev: false + + /@vue/eslint-config-standard/5.1.2_fa13d1400b34f0e8c5b55da32de97275: + resolution: {integrity: sha512-FTz0k77dIrj9r3xskt9jsZyL/YprrLiPRf4m3k7G6dZ5PKuD6OPqYrHR9eduUmHDFpTlRgFpTVQrq+1el9k3QQ==} + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + eslint: '>=6.2.2' + eslint-plugin-import: '>= 2.18.0' + eslint-plugin-node: '>= 9.1.0' + eslint-plugin-promise: '>= 4.2.1' + eslint-plugin-standard: '>= 4.0.0' + eslint-plugin-vue: '>= 6.1.2' + peerDependenciesMeta: + '@vue/cli-service': + optional: true + dependencies: + '@vue/cli-service': 4.5.9_78c7ccaaf67bc946810ce1bc44e3e52a + eslint: 6.8.0 + eslint-config-standard: 14.1.1_3e89b5637fc39c451c2a5fa13c0b3cdf + eslint-import-resolver-node: 0.3.4 + eslint-import-resolver-webpack: 0.12.2_eslint-plugin-import@2.22.1 + eslint-plugin-import: 2.22.1_eslint@6.8.0 + eslint-plugin-node: 11.1.0_eslint@6.8.0 + eslint-plugin-promise: 4.2.1 + eslint-plugin-standard: 4.1.0_eslint@6.8.0 + eslint-plugin-vue: 6.2.2_eslint@6.8.0 + transitivePeerDependencies: + - webpack + dev: true + + /@vue/eslint-config-typescript/5.1.0_f8b8c2e71389849a7113a6c8d1602ca4: + resolution: {integrity: sha512-wFAdPMWegKZOdbQBEWV4/KbOKuX/6Q5db3304kiWNBK+6P7+CoMrsbaKzJFjuAZF7fQR2fJtZT9ciGWVVT//vw==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^2.7.0 + '@typescript-eslint/parser': ^2.7.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + eslint-plugin-vue: ^5.2.3 || ^6.0.0 || ^7.0.0-0 + dependencies: + '@typescript-eslint/eslint-plugin': 2.34.0_28deb19c9a1505f8eaba25f08813d781 + '@typescript-eslint/parser': 2.34.0_eslint@6.8.0+typescript@4.2.4 + eslint: 6.8.0 + eslint-plugin-vue: 6.2.2_eslint@6.8.0 + vue-eslint-parser: 7.1.1_eslint@6.8.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/preload-webpack-plugin/1.1.2_e19cda6b5f21e6c518504c22be752ae4: + resolution: {integrity: sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==} + engines: {node: '>=6.0.0'} + peerDependencies: + html-webpack-plugin: '>=2.26.0' + webpack: '>=4.0.0' + dependencies: + html-webpack-plugin: 3.2.0_webpack@4.44.2 + webpack: 4.44.2 + dev: true + + /@vue/web-component-wrapper/1.2.0: + resolution: {integrity: sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw==} + dev: true + + /@webassemblyjs/ast/1.9.0: + resolution: {integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==} + dependencies: + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 + dev: true + + /@webassemblyjs/floating-point-hex-parser/1.9.0: + resolution: {integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==} + dev: true + + /@webassemblyjs/helper-api-error/1.9.0: + resolution: {integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==} + dev: true + + /@webassemblyjs/helper-buffer/1.9.0: + resolution: {integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==} + dev: true + + /@webassemblyjs/helper-code-frame/1.9.0: + resolution: {integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==} + dependencies: + '@webassemblyjs/wast-printer': 1.9.0 + dev: true + + /@webassemblyjs/helper-fsm/1.9.0: + resolution: {integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==} + dev: true + + /@webassemblyjs/helper-module-context/1.9.0: + resolution: {integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + dev: true + + /@webassemblyjs/helper-wasm-bytecode/1.9.0: + resolution: {integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==} + dev: true + + /@webassemblyjs/helper-wasm-section/1.9.0: + resolution: {integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + dev: true + + /@webassemblyjs/ieee754/1.9.0: + resolution: {integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128/1.9.0: + resolution: {integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==} + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8/1.9.0: + resolution: {integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==} + dev: true + + /@webassemblyjs/wasm-edit/1.9.0: + resolution: {integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/helper-wasm-section': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-opt': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + '@webassemblyjs/wast-printer': 1.9.0 + dev: true + + /@webassemblyjs/wasm-gen/1.9.0: + resolution: {integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 + dev: true + + /@webassemblyjs/wasm-opt/1.9.0: + resolution: {integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + dev: true + + /@webassemblyjs/wasm-parser/1.9.0: + resolution: {integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 + dev: true + + /@webassemblyjs/wast-parser/1.9.0: + resolution: {integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/floating-point-hex-parser': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-code-frame': 1.9.0 + '@webassemblyjs/helper-fsm': 1.9.0 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/wast-printer/1.9.0: + resolution: {integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 + '@xtuc/long': 4.2.2 + dev: true + + /@xtuc/ieee754/1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true + + /@xtuc/long/4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true + + /accepts/1.3.7: + resolution: {integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.27 + negotiator: 0.6.2 + dev: true + + /acorn-jsx/5.3.1_acorn@7.4.1: + resolution: {integrity: sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + dev: true + + /acorn-walk/7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn/6.4.2: + resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + /address/1.1.2: + resolution: {integrity: sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==} + engines: {node: '>= 0.12.0'} + dev: true + + /aggregate-error/3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv-errors/1.0.1_ajv@6.12.6: + resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==} + peerDependencies: + ajv: '>=5.0.0' + dependencies: + ajv: 6.12.6 + dev: true + + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.0 + + /alphanum-sort/1.0.2: + resolution: {integrity: sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==} + dev: true + + /ansi-colors/3.2.4: + resolution: {integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes/4.3.1: + resolution: {integrity: sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.11.0 + dev: true + + /ansi-html/0.0.7: + resolution: {integrity: sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: true + + /ansi-regex/2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-regex/3.0.0: + resolution: {integrity: sha512-wFUFA5bg5dviipbQQ32yOQhl6gcJaJXiHE7dvR8VYPG97+J/GNC5FKGepKdEDUFeXRzDxPF1X/Btc8L+v7oqIQ==} + engines: {node: '>=4'} + dev: true + + /ansi-regex/4.1.0: + resolution: {integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==} + engines: {node: '>=6'} + dev: true + + /ansi-regex/5.0.0: + resolution: {integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==} + engines: {node: '>=8'} + dev: true + + /ansi-styles/2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansicolors/0.2.1: + resolution: {integrity: sha512-tOIuy1/SK/dr94ZA0ckDohKXNeBNqZ4us6PjMVLs5h1w2GBB6uPtOknp2+VF4F/zcy9LI70W+Z+pE2Soajky1w==} + dev: false + + /any-promise/1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + + /anymatch/2.0.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + dev: true + + /anymatch/3.1.1: + resolution: {integrity: sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.0 + dev: true + + /aproba/1.2.0: + resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} + dev: true + + /arch/2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + dev: true + + /argparse/1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /arr-diff/4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + dev: true + + /arr-flatten/1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + dev: true + + /arr-union/3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: true + + /array-find/1.0.0: + resolution: {integrity: sha512-kO/vVCacW9mnpn3WPWbTVlEnOabK2L7LWi2HViURtCM46y1zb6I8UMjx4LgbiqadTgHnLInUronwn3ampNTJtQ==} + dev: true + + /array-flatten/1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: true + + /array-flatten/2.1.2: + resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} + dev: true + + /array-includes/3.1.2: + resolution: {integrity: sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.0 + define-properties: 1.1.3 + es-abstract: 1.18.0-next.1 + get-intrinsic: 1.0.1 + is-string: 1.0.5 + dev: true + + /array-source/0.0.4: + resolution: {integrity: sha512-frNdc+zBn80vipY+GdcJkLEbMWj3xmzArYApmUGxoiV8uAu/ygcs9icPdsGdA26h0MkHUMW6EN2piIvVx+M5Mw==} + dev: false + + /array-union/1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + dependencies: + array-uniq: 1.0.3 + dev: true + + /array-uniq/1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + dev: true + + /array-unique/0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + dev: true + + /array.prototype.flat/1.2.4: + resolution: {integrity: sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.0 + define-properties: 1.1.3 + es-abstract: 1.18.0-next.1 + dev: true + + /as-number/1.0.0: + resolution: {integrity: sha512-HkI/zLo2AbSRO4fqVkmyf3hms0bJDs3iboHqTrNuwTiCRvdYXM7HFhfhB6Dk51anV2LM/IMB83mtK9mHw4FlAg==} + dev: false + + /asn1.js/5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + dependencies: + bn.js: 4.11.9 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + dev: true + + /asn1/0.2.4: + resolution: {integrity: sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus/1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + dev: true + + /assert/1.5.0: + resolution: {integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==} + dependencies: + object-assign: 4.1.1 + util: 0.10.3 + dev: true + + /assign-symbols/1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + dev: true + + /astral-regex/1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + dev: true + + /async-each/1.0.3: + resolution: {integrity: sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==} + dev: true + + /async-limiter/1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + dev: true + + /async-validator/1.8.5: + resolution: {integrity: sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==} + dependencies: + babel-runtime: 6.26.0 + dev: false + + /async/2.4.1: + resolution: {integrity: sha512-l4FGEG4ckq1nC3PSqULdowskm65HBAQfHPG4XH7VLRq0ZKsCWkcfLjVymfLrloqgrvijJrft/mPftclykhTA7w==} + dependencies: + lodash: 4.17.20 + dev: true + + /async/2.6.3: + resolution: {integrity: sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==} + dependencies: + lodash: 4.17.20 + dev: true + + /async/3.2.0: + resolution: {integrity: sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==} + dev: false + + /asynckit/0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /at-least-node/1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: true + optional: true + + /atob/2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: true + + /autoprefixer/9.8.6: + resolution: {integrity: sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==} + hasBin: true + dependencies: + browserslist: 4.14.7 + caniuse-lite: 1.0.30001161 + colorette: 1.2.1 + normalize-range: 0.1.2 + num2fraction: 1.2.2 + postcss: 7.0.35 + postcss-value-parser: 4.1.0 + dev: true + + /aws-sign2/0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + dev: true + + /aws4/1.11.0: + resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} + dev: true + + /axios/0.21.0: + resolution: {integrity: sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==} + deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410 + dependencies: + follow-redirects: 1.13.0 + dev: false + + /babel-code-frame/6.26.0: + resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} + dependencies: + chalk: 1.1.3 + esutils: 2.0.3 + js-tokens: 3.0.2 + dev: true + + /babel-eslint/10.1.0_eslint@6.8.0: + resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} + engines: {node: '>=6'} + deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. + peerDependencies: + eslint: '>= 4.12.1' + dependencies: + '@babel/code-frame': 7.12.13 + '@babel/parser': 7.12.7 + '@babel/traverse': 7.12.9 + '@babel/types': 7.12.7 + eslint: 6.8.0 + eslint-visitor-keys: 1.3.0 + resolve: 1.19.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-helper-vue-jsx-merge-props/2.0.3: + resolution: {integrity: sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==} + dev: false + + /babel-loader/8.2.1_fa474cc1763d2be32ce57156dae52dec: + resolution: {integrity: sha512-dMF8sb2KQ8kJl21GUjkW1HWmcsL39GOV5vnzjqrCzEPNY0S0UfMLnumidiwIajDSBmKhYf5iRW+HXaM4cvCKBw==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.12.9 + find-cache-dir: 2.1.0 + loader-utils: 1.4.0 + make-dir: 2.1.0 + pify: 4.0.1 + schema-utils: 2.7.1 + webpack: 4.44.2 + dev: true + + /babel-plugin-dynamic-import-node/2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + dependencies: + object.assign: 4.1.2 + dev: true + + /babel-runtime/6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + dependencies: + core-js: 2.6.11 + regenerator-runtime: 0.11.1 + dev: false + + /balanced-match/1.0.0: + resolution: {integrity: sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg==} + dev: true + + /base/0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: true + + /base64-js/1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /batch/0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: true + + /bcrypt-pbkdf/1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + dependencies: + tweetnacl: 0.14.5 + dev: true + + /bfj/6.1.2: + resolution: {integrity: sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==} + engines: {node: '>= 6.0.0'} + dependencies: + bluebird: 3.7.2 + check-types: 8.0.3 + hoopy: 0.1.4 + tryer: 1.0.1 + dev: true + + /big.js/3.2.0: + resolution: {integrity: sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==} + dev: true + + /big.js/5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: true + + /binary-extensions/1.13.1: + resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} + engines: {node: '>=0.10.0'} + dev: true + + /binary-extensions/2.1.0: + resolution: {integrity: sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==} + engines: {node: '>=8'} + dev: true + + /bindings/1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + requiresBuild: true + dependencies: + file-uri-to-path: 1.0.0 + dev: true + optional: true + + /bluebird/3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: true + + /bn.js/4.11.9: + resolution: {integrity: sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==} + dev: true + + /bn.js/5.1.3: + resolution: {integrity: sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==} + dev: true + + /body-parser/1.19.0: + resolution: {integrity: sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.0 + content-type: 1.0.4 + debug: 2.6.9 + depd: 1.1.2 + http-errors: 1.7.2 + iconv-lite: 0.4.24 + on-finished: 2.3.0 + qs: 6.7.0 + raw-body: 2.4.0 + type-is: 1.6.18 + dev: true + + /bonjour/3.5.0: + resolution: {integrity: sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==} + dependencies: + array-flatten: 2.1.2 + deep-equal: 1.1.1 + dns-equal: 1.0.0 + dns-txt: 2.0.2 + multicast-dns: 6.2.3 + multicast-dns-service-types: 1.1.0 + dev: true + + /boolbase/1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.0 + concat-map: 0.0.1 + dev: true + + /braces/2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + 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.3 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + dev: true + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /brorand/1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: true + + /browserify-aes/1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-cipher/1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + dev: true + + /browserify-des/1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + dependencies: + cipher-base: 1.0.4 + des.js: 1.0.1 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-rsa/4.1.0: + resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} + dependencies: + bn.js: 5.1.3 + randombytes: 2.1.0 + dev: true + + /browserify-sign/4.2.1: + resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} + dependencies: + bn.js: 5.1.3 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.3 + inherits: 2.0.4 + parse-asn1: 5.1.6 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + dev: true + + /browserify-zlib/0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + dependencies: + pako: 1.0.11 + dev: true + + /browserslist/4.14.7: + resolution: {integrity: sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001161 + colorette: 1.2.1 + electron-to-chromium: 1.3.607 + escalade: 3.1.1 + node-releases: 1.1.67 + dev: true + + /buffer-from/1.1.1: + resolution: {integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==} + + /buffer-indexof/1.1.1: + resolution: {integrity: sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==} + dev: true + + /buffer-json/2.0.0: + resolution: {integrity: sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==} + dev: true + + /buffer-xor/1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: true + + /buffer/4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + dev: true + + /builtin-modules/1.1.1: + resolution: {integrity: sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==} + engines: {node: '>=0.10.0'} + dev: true + + /builtin-status-codes/3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + dev: true + + /bytes/3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: true + + /bytes/3.1.0: + resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==} + engines: {node: '>= 0.8'} + dev: true + + /cacache/12.0.4: + resolution: {integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==} + dependencies: + bluebird: 3.7.2 + chownr: 1.1.4 + figgy-pudding: 3.5.2 + glob: 7.1.7 + graceful-fs: 4.2.6 + infer-owner: 1.0.4 + lru-cache: 5.1.1 + mississippi: 3.0.0 + mkdirp: 0.5.5 + move-concurrently: 1.0.1 + promise-inflight: 1.0.1 + rimraf: 2.7.1 + ssri: 6.0.1 + unique-filename: 1.1.1 + y18n: 4.0.0 + dev: true + + /cacache/13.0.1: + resolution: {integrity: sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==} + engines: {node: '>= 8'} + dependencies: + chownr: 1.1.4 + figgy-pudding: 3.5.2 + fs-minipass: 2.1.0 + glob: 7.1.7 + graceful-fs: 4.2.6 + infer-owner: 1.0.4 + lru-cache: 5.1.1 + minipass: 3.1.3 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 0.5.5 + move-concurrently: 1.0.1 + p-map: 3.0.0 + promise-inflight: 1.0.1 + rimraf: 2.7.1 + ssri: 7.1.0 + unique-filename: 1.1.1 + dev: true + + /cache-base/1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: true + + /cache-loader/4.1.0_webpack@4.44.2: + resolution: {integrity: sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==} + engines: {node: '>= 8.9.0'} + peerDependencies: + webpack: ^4.0.0 + dependencies: + buffer-json: 2.0.0 + find-cache-dir: 3.3.1 + loader-utils: 1.4.0 + mkdirp: 0.5.5 + neo-async: 2.6.2 + schema-utils: 2.7.1 + webpack: 4.44.2 + dev: true + + /call-bind/1.0.0: + resolution: {integrity: sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.0.1 + + /call-me-maybe/1.0.1: + resolution: {integrity: sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==} + dev: true + + /caller-callsite/2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + dependencies: + callsites: 2.0.0 + dev: true + + /caller-path/2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + dependencies: + caller-callsite: 2.0.0 + dev: true + + /callsites/2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + dev: true + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camel-case/3.0.0: + resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + dev: true + + /camelcase/5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase/6.2.0: + resolution: {integrity: sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==} + engines: {node: '>=10'} + dev: true + + /caniuse-api/3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + dependencies: + browserslist: 4.14.7 + caniuse-lite: 1.0.30001161 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: true + + /caniuse-lite/1.0.30001161: + resolution: {integrity: sha512-JharrCDxOqPLBULF9/SPa6yMcBRTjZARJ6sc3cuKrPfyIk64JN6kuMINWqA99Xc8uElMFcROliwtz0n9pYej+g==} + dev: true + + /cardinal/0.4.4: + resolution: {integrity: sha512-3MxV0o9wOpQcobrcSrRpaSxlYkohCcZu0ytOjJUww/Yo/223q4Ecloo7odT+M0SI5kPgb1JhvSaF4EEuVXOLAQ==} + hasBin: true + dependencies: + ansicolors: 0.2.1 + redeyed: 0.4.4 + dev: false + + /case-sensitive-paths-webpack-plugin/2.3.0: + resolution: {integrity: sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==} + engines: {node: '>=4'} + dev: true + + /caseless/0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: true + + /chalk/1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: true + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk/4.1.0: + resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chardet/0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /check-types/8.0.3: + resolution: {integrity: sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==} + dev: true + + /chokidar/2.1.8: + resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + dependencies: + anymatch: 2.0.0 + async-each: 1.0.3 + braces: 2.3.2 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.1 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + dev: true + + /chokidar/3.5.1: + resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.1 + braces: 3.0.2 + glob-parent: 5.1.1 + is-binary-path: 2.1.0 + is-glob: 4.0.1 + normalize-path: 3.0.0 + readdirp: 3.5.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /chownr/1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: true + + /chrome-trace-event/1.0.2: + resolution: {integrity: sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==} + engines: {node: '>=6.0'} + dependencies: + tslib: 1.14.1 + dev: true + + /ci-info/1.6.0: + resolution: {integrity: sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==} + dev: true + + /cipher-base/1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /class-utils/0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: true + + /classnames/2.2.6: + resolution: {integrity: sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==} + dev: false + + /clean-css/4.2.3: + resolution: {integrity: sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==} + engines: {node: '>= 4.0'} + dependencies: + source-map: 0.6.1 + dev: true + + /clean-stack/2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-cursor/2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} + dependencies: + restore-cursor: 2.0.0 + dev: true + + /cli-cursor/3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-highlight/2.1.8: + resolution: {integrity: sha512-mFuTW5UOV3/S0wZE9/1b0EcAM0XOJIhoAWPhWm5voiJ6ugVBkvYBIEL7sbHo9sEtWdEmwDIWab32qpaRI3cfqQ==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + dependencies: + chalk: 4.1.0 + highlight.js: 10.4.0 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 15.4.1 + dev: true + + /cli-spinners/2.5.0: + resolution: {integrity: sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==} + engines: {node: '>=6'} + dev: true + + /cli-width/3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /clipboardy/2.3.0: + resolution: {integrity: sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==} + engines: {node: '>=8'} + dependencies: + arch: 2.2.0 + execa: 1.0.0 + is-wsl: 2.2.0 + dev: true + + /cliui/5.0.0: + resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} + dependencies: + string-width: 3.1.0 + strip-ansi: 5.2.0 + wrap-ansi: 5.1.0 + dev: true + + /cliui/6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.0 + strip-ansi: 6.0.0 + wrap-ansi: 6.2.0 + dev: true + + /clone-deep/4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /clone/1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /cmp-echarts/2.0.1-5.6-release: + resolution: {integrity: sha512-oS7FBOVXqqgcyNgn7X9kjwhw3xw1YAR6k/ivKMVyS7ubPede5wNKG/wxEEDIHN6p8bcFqalLASsUkN+8B0ON3Q==} + dependencies: + '@vue/composition-api': 1.0.0-rc.9_vue@2.6.12 + core-js: 3.8.0 + echarts: 5.3.1 + echarts-liquidfill: 3.1.0_echarts@5.3.1 + element-ui: 2.15.1_vue@2.6.12 + lodash-es: 4.17.21 + vue: 2.6.12 + vue-router: 3.5.1 + dev: false + + /coa/2.0.2: + resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} + engines: {node: '>= 4.0'} + dependencies: + '@types/q': 1.5.4 + chalk: 2.4.2 + q: 1.5.1 + dev: true + + /collection-visit/1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: true + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name/1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /color-string/1.5.4: + resolution: {integrity: sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + /color/3.1.3: + resolution: {integrity: sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==} + dependencies: + color-convert: 1.9.3 + color-string: 1.5.4 + + /colorette/1.2.1: + resolution: {integrity: sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==} + dev: true + + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander/2.17.1: + resolution: {integrity: sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==} + dev: true + + /commander/2.19.0: + resolution: {integrity: sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==} + dev: true + + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + /commondir/1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + + /component-emitter/1.3.0: + resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + dev: true + + /compress-webpack-plugin/1.0.6: + resolution: {integrity: sha512-BEnN7bzKUGHK2pnGr7mo56Tw6rldaJr6CVTR30oL9FHcjdgu//cSTkWwYAT/p+18qF/Dtujtvzs5uVyL5sllsw==} + engines: {node: '>= 4.3 < 5.0.0 || >= 5.10'} + dependencies: + async: 2.4.1 + webpack-sources: 1.4.3 + dev: true + + /compressible/2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.45.0 + dev: true + + /compression/1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.7 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + dev: true + + /comutils/1.1.19: + resolution: {integrity: sha512-JxXB67juILiwhdLwOsYyjUqwWEhHdObI0EClOPk+JDtEuTbac59s0pxGpfCBnNNQ5JommifmcMGneW/4Cg7YWw==} + dev: false + + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /concat-stream/1.4.11: + resolution: {integrity: sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==} + engines: {'0': node >= 0.8} + dependencies: + inherits: 2.0.4 + readable-stream: 1.1.14 + typedarray: 0.0.6 + dev: false + + /concat-stream/1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.1 + inherits: 2.0.4 + readable-stream: 2.3.7 + typedarray: 0.0.6 + + /concat-stream/2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} + dependencies: + buffer-from: 1.1.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + typedarray: 0.0.6 + dev: false + + /concaveman/1.2.0: + resolution: {integrity: sha512-OcqechF2/kubbffomKqjGEkb0ndlYhEbmyg/fxIGqdfYp5AZjD2Kl5hc97Hh3ngEuHU2314Z4KDbxL7qXGWrQQ==} + dependencies: + point-in-polygon: 1.0.1 + rbush: 3.0.1 + robust-predicates: 2.0.4 + tinyqueue: 2.0.3 + dev: false + + /connect-history-api-fallback/1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + engines: {node: '>=0.8'} + dev: true + + /console-browserify/1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + dev: true + + /consolidate/0.15.1: + resolution: {integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==} + engines: {node: '>= 0.10.0'} + dependencies: + bluebird: 3.7.2 + dev: true + + /constants-browserify/1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + dev: true + + /contains-path/0.1.0: + resolution: {integrity: sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==} + engines: {node: '>=0.10.0'} + dev: true + + /content-disposition/0.5.3: + resolution: {integrity: sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /content-type/1.0.4: + resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} + engines: {node: '>= 0.6'} + dev: true + + /convert-source-map/1.7.0: + resolution: {integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /cookie-signature/1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: true + + /cookie/0.4.0: + resolution: {integrity: sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==} + engines: {node: '>= 0.6'} + dev: true + + /copy-concurrently/1.0.5: + resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} + dependencies: + aproba: 1.2.0 + fs-write-stream-atomic: 1.0.10 + iferr: 0.1.5 + mkdirp: 0.5.5 + rimraf: 2.7.1 + run-queue: 1.0.3 + dev: true + + /copy-descriptor/0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + dev: true + + /copy-webpack-plugin/5.1.2_webpack@4.44.2: + resolution: {integrity: sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==} + engines: {node: '>= 6.9.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + cacache: 12.0.4 + find-cache-dir: 2.1.0 + glob-parent: 3.1.0 + globby: 7.1.1 + is-glob: 4.0.1 + loader-utils: 1.4.0 + minimatch: 3.0.4 + normalize-path: 3.0.0 + p-limit: 2.3.0 + schema-utils: 1.0.0 + serialize-javascript: 4.0.0 + webpack: 4.44.2 + webpack-log: 2.0.0 + dev: true + + /core-js-compat/3.8.0: + resolution: {integrity: sha512-o9QKelQSxQMYWHXc/Gc4L8bx/4F7TTraE5rhuN8I7mKBt5dBIUpXpIR3omv70ebr8ST5R3PqbDQr+ZI3+Tt1FQ==} + dependencies: + browserslist: 4.14.7 + semver: 7.0.0 + dev: true + + /core-js/2.6.11: + resolution: {integrity: sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==} + deprecated: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + dev: false + + /core-js/3.8.0: + resolution: {integrity: sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA==} + requiresBuild: true + + /core-util-is/1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + /cosmiconfig/5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.0 + parse-json: 4.0.0 + dev: true + + /cosmiconfig/6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.1.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + optional: true + + /create-ecdh/4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + dependencies: + bn.js: 4.11.9 + elliptic: 6.5.3 + dev: true + + /create-hash/1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: true + + /create-hmac/1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /cross-spawn/5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + + /cross-spawn/6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.1 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypto-browserify/3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.1 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.1 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + dev: true + + /crypto-js/4.0.0: + resolution: {integrity: sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==} + dev: false + + /css-color-names/0.0.4: + resolution: {integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==} + dev: true + + /css-declaration-sorter/4.0.1: + resolution: {integrity: sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==} + engines: {node: '>4'} + dependencies: + postcss: 7.0.35 + timsort: 0.3.0 + dev: true + + /css-loader/3.6.0_webpack@4.44.2: + resolution: {integrity: sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==} + engines: {node: '>= 8.9.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + camelcase: 5.3.1 + cssesc: 3.0.0 + icss-utils: 4.1.1 + loader-utils: 1.4.0 + normalize-path: 3.0.0 + postcss: 7.0.35 + postcss-modules-extract-imports: 2.0.0 + postcss-modules-local-by-default: 3.0.3 + postcss-modules-scope: 2.2.0 + postcss-modules-values: 3.0.0 + postcss-value-parser: 4.1.0 + schema-utils: 2.7.1 + semver: 6.3.0 + webpack: 4.44.2 + dev: true + + /css-select-base-adapter/0.1.1: + resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} + dev: true + + /css-select/1.2.0: + resolution: {integrity: sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==} + dependencies: + boolbase: 1.0.0 + css-what: 2.1.3 + domutils: 1.5.1 + nth-check: 1.0.2 + dev: true + + /css-select/2.1.0: + resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} + dependencies: + boolbase: 1.0.0 + css-what: 3.4.2 + domutils: 1.7.0 + nth-check: 1.0.2 + dev: true + + /css-tree/1.0.0-alpha.37: + resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.4 + source-map: 0.6.1 + dev: true + + /css-tree/1.1.1: + resolution: {integrity: sha512-NVN42M2fjszcUNpDbdkvutgQSlFYsr1z7kqeuCagHnNLBfYor6uP1WL1KrkmdYZ5Y1vTBCIOI/C/+8T98fJ71w==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + + /css-what/2.1.3: + resolution: {integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==} + dev: true + + /css-what/3.4.2: + resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} + engines: {node: '>= 6'} + dev: true + + /csscolorparser/1.0.3: + resolution: {integrity: sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==} + dev: false + + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /cssnano-preset-default/4.0.7: + resolution: {integrity: sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==} + engines: {node: '>=6.9.0'} + dependencies: + css-declaration-sorter: 4.0.1 + cssnano-util-raw-cache: 4.0.1 + postcss: 7.0.35 + postcss-calc: 7.0.5 + postcss-colormin: 4.0.3 + postcss-convert-values: 4.0.1 + postcss-discard-comments: 4.0.2 + postcss-discard-duplicates: 4.0.2 + postcss-discard-empty: 4.0.1 + postcss-discard-overridden: 4.0.1 + postcss-merge-longhand: 4.0.11 + postcss-merge-rules: 4.0.3 + postcss-minify-font-values: 4.0.2 + postcss-minify-gradients: 4.0.2 + postcss-minify-params: 4.0.2 + postcss-minify-selectors: 4.0.2 + postcss-normalize-charset: 4.0.1 + postcss-normalize-display-values: 4.0.2 + postcss-normalize-positions: 4.0.2 + postcss-normalize-repeat-style: 4.0.2 + postcss-normalize-string: 4.0.2 + postcss-normalize-timing-functions: 4.0.2 + postcss-normalize-unicode: 4.0.1 + postcss-normalize-url: 4.0.1 + postcss-normalize-whitespace: 4.0.2 + postcss-ordered-values: 4.1.2 + postcss-reduce-initial: 4.0.3 + postcss-reduce-transforms: 4.0.2 + postcss-svgo: 4.0.2 + postcss-unique-selectors: 4.0.1 + dev: true + + /cssnano-util-get-arguments/4.0.0: + resolution: {integrity: sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==} + engines: {node: '>=6.9.0'} + dev: true + + /cssnano-util-get-match/4.0.0: + resolution: {integrity: sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==} + engines: {node: '>=6.9.0'} + dev: true + + /cssnano-util-raw-cache/4.0.1: + resolution: {integrity: sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.35 + dev: true + + /cssnano-util-same-parent/4.0.1: + resolution: {integrity: sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==} + engines: {node: '>=6.9.0'} + dev: true + + /cssnano/4.1.10: + resolution: {integrity: sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==} + engines: {node: '>=6.9.0'} + dependencies: + cosmiconfig: 5.2.1 + cssnano-preset-default: 4.0.7 + is-resolvable: 1.1.0 + postcss: 7.0.35 + dev: true + + /csso/4.1.1: + resolution: {integrity: sha512-Rvq+e1e0TFB8E8X+8MQjHSY6vtol45s5gxtLI/018UsAn2IBMmwNEZRM/h+HVnAJRHjasLIKKUO3uvoMM28LvA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.1 + dev: true + + /cyclist/1.0.1: + resolution: {integrity: sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==} + dev: true + + /d3-array/1.2.4: + resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} + dev: false + + /d3-collection/1.0.7: + resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==} + dev: false + + /d3-color/1.4.1: + resolution: {integrity: sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==} + dev: false + + /d3-dispatch/2.0.0: + resolution: {integrity: sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==} + dev: false + + /d3-dsv/1.2.0: + resolution: {integrity: sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==} + hasBin: true + dependencies: + commander: 2.20.3 + iconv-lite: 0.4.24 + rw: 1.3.3 + dev: false + + /d3-ease/1.0.7: + resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==} + dev: false + + /d3-force/2.1.1: + resolution: {integrity: sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==} + dependencies: + d3-dispatch: 2.0.0 + d3-quadtree: 2.0.0 + d3-timer: 2.0.0 + dev: false + + /d3-format/1.4.5: + resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==} + dev: false + + /d3-geo/1.7.1: + resolution: {integrity: sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==} + dependencies: + d3-array: 1.2.4 + dev: false + + /d3-hexbin/0.2.2: + resolution: {integrity: sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w==} + dev: false + + /d3-interpolate/1.4.0: + resolution: {integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==} + dependencies: + d3-color: 1.4.1 + dev: false + + /d3-quadtree/2.0.0: + resolution: {integrity: sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==} + dev: false + + /d3-scale/2.2.2: + resolution: {integrity: sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==} + dependencies: + d3-array: 1.2.4 + d3-collection: 1.0.7 + d3-format: 1.4.5 + d3-interpolate: 1.4.0 + d3-time: 1.1.0 + d3-time-format: 2.3.0 + dev: false + + /d3-time-format/2.3.0: + resolution: {integrity: sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==} + dependencies: + d3-time: 1.1.0 + dev: false + + /d3-time/1.1.0: + resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==} + dev: false + + /d3-timer/1.0.10: + resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==} + dev: false + + /d3-timer/2.0.0: + resolution: {integrity: sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==} + dev: false + + /d3-voronoi/1.1.2: + resolution: {integrity: sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==} + dev: false + + /dagre/0.8.5: + resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} + dependencies: + graphlib: 2.1.8 + lodash: 4.17.20 + dev: false + + /dashdash/1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: true + + /de-indent/1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: true + + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + dependencies: + ms: 2.0.0 + dev: true + + /debug/3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + dependencies: + ms: 2.1.2 + dev: true + + /debug/4.3.1: + resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /debug/4.3.1_supports-color@6.1.0: + resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 6.1.0 + dev: true + + /decamelize/1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /decode-uri-component/0.2.0: + resolution: {integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==} + engines: {node: '>=0.10'} + dev: true + + /deep-equal/1.1.1: + resolution: {integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==} + dependencies: + is-arguments: 1.0.4 + is-date-object: 1.0.2 + is-regex: 1.1.1 + object-is: 1.1.3 + object-keys: 1.1.1 + regexp.prototype.flags: 1.3.0 + + /deep-is/0.1.3: + resolution: {integrity: sha512-GtxAN4HvBachZzm4OnWqc45ESpUCMwkYcsjnsPs23FwJbsO+k4t0k9bQCgOmzIlpHO28+WPK/KRbRk0DDHuuDw==} + dev: true + + /deepmerge/1.5.2: + resolution: {integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==} + engines: {node: '>=0.10.0'} + + /deepmerge/4.2.2: + resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + engines: {node: '>=0.10.0'} + dev: true + optional: true + + /default-gateway/4.2.0: + resolution: {integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==} + engines: {node: '>=6'} + dependencies: + execa: 1.0.0 + ip-regex: 2.1.0 + dev: true + + /default-gateway/5.0.5: + resolution: {integrity: sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==} + engines: {node: ^8.12.0 || >=9.7.0} + dependencies: + execa: 3.4.0 + dev: true + + /defaults/1.0.3: + resolution: {integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==} + dependencies: + clone: 1.0.4 + dev: true + + /define-properties/1.1.3: + resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} + engines: {node: '>= 0.4'} + dependencies: + object-keys: 1.1.1 + + /define-property/0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 0.1.6 + dev: true + + /define-property/1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.2 + dev: true + + /define-property/2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.2 + isobject: 3.0.1 + dev: true + + /del/4.1.1: + resolution: {integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==} + engines: {node: '>=6'} + dependencies: + '@types/glob': 7.1.3 + globby: 6.1.0 + is-path-cwd: 2.2.0 + is-path-in-cwd: 2.1.0 + p-map: 2.1.0 + pify: 4.0.1 + rimraf: 2.7.1 + dev: true + + /delayed-stream/1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /density-clustering/1.3.0: + resolution: {integrity: sha512-icpmBubVTwLnsaor9qH/4tG5+7+f61VcqMN3V3pm9sxxSCt2Jcs0zWOgwZW9ARJYaKD3FumIgHiMOcIMRRAzFQ==} + dev: false + + /depd/1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: true + + /des.js/1.0.1: + resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /destroy/1.0.4: + resolution: {integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==} + dev: true + + /detect-browser/5.2.0: + resolution: {integrity: sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==} + dev: false + + /detect-node/2.0.4: + resolution: {integrity: sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==} + dev: true + + /diff/4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /diffie-hellman/5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dependencies: + bn.js: 4.11.9 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dev: true + + /dir-glob/2.2.2: + resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} + engines: {node: '>=4'} + dependencies: + path-type: 3.0.0 + dev: true + + /dns-equal/1.0.0: + resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} + dev: true + + /dns-packet/1.3.1: + resolution: {integrity: sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==} + dependencies: + ip: 1.1.5 + safe-buffer: 5.2.1 + dev: true + + /dns-txt/2.0.2: + resolution: {integrity: sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==} + dependencies: + buffer-indexof: 1.1.1 + dev: true + + /doctrine/1.5.0: + resolution: {integrity: sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + isarray: 1.0.0 + dev: true + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-converter/0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + dependencies: + utila: 0.4.0 + dev: true + + /dom-serializer/0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dependencies: + domelementtype: 2.0.2 + entities: 2.1.0 + dev: true + + /domain-browser/1.2.0: + resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} + engines: {node: '>=0.4', npm: '>=1.2'} + dev: true + + /domelementtype/1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + dev: true + + /domelementtype/2.0.2: + resolution: {integrity: sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==} + dev: true + + /domhandler/2.4.2: + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + dependencies: + domelementtype: 1.3.1 + dev: true + + /domutils/1.5.1: + resolution: {integrity: sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==} + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: true + + /domutils/1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: true + + /dot-prop/5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dependencies: + is-obj: 2.0.0 + dev: true + + /dotenv-expand/5.1.0: + resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} + dev: true + + /dotenv/8.2.0: + resolution: {integrity: sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==} + engines: {node: '>=8'} + dev: true + + /duplexer/0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: true + + /duplexify/3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.7 + stream-shift: 1.0.1 + dev: true + + /earcut/2.2.2: + resolution: {integrity: sha512-eZoZPPJcUHnfRZ0PjLvx2qBordSiO8ofC3vt+qACLM95u+4DovnbYNpQtJh0DNsWj8RnxrQytD4WA8gj5cRIaQ==} + dev: false + + /easy-stack/1.0.1: + resolution: {integrity: sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==} + engines: {node: '>=6.0.0'} + dev: true + + /ecc-jsbn/0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /echarts-liquidfill/2.0.6_echarts@4.9.0: + resolution: {integrity: sha512-p+AH0O9/BtwXMQQyhjJbMZo+GwRAgWG/DCyK5r27PQzpS0UWrgXu57MyEFc0A8Ub3sRuqEu08BuxwHICBkSWSQ==} + peerDependencies: + echarts: ^4.8.0 + zrender: ^4.3.1 + dependencies: + echarts: 4.9.0 + dev: false + + /echarts-liquidfill/3.1.0_echarts@5.3.1: + resolution: {integrity: sha512-5Dlqs/jTsdTUAsd+K5LPLLTgrbbNORUSBQyk8PSy1Mg2zgHDWm83FmvA4s0ooNepCJojFYRITTQ4GU1UUSKYLw==} + peerDependencies: + echarts: ^5.0.1 + dependencies: + echarts: 5.3.1 + dev: false + + /echarts/4.9.0: + resolution: {integrity: sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==} + dependencies: + zrender: 4.3.2 + dev: false + + /echarts/5.3.1: + resolution: {integrity: sha512-nWdlbgX3OVY0hpqncSvp0gDt1FRSKWn7lsWEH+PHmfCuvE0QmSw17pczQvm8AvawnLEkmf1Cts7YwQJZNC0AEQ==} + dependencies: + tslib: 2.3.0 + zrender: 5.3.1 + dev: false + + /ee-first/1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /ejs/2.7.4: + resolution: {integrity: sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + + /electron-to-chromium/1.3.607: + resolution: {integrity: sha512-h2SYNaBnlplGS0YyXl8oJWokfcNxVjJANQfMCsQefG6OSuAuNIeW+A8yGT/ci+xRoBb3k2zq1FrOvkgoKBol8g==} + dev: true + + /element-resize-event/3.0.3: + resolution: {integrity: sha512-vhGNxT87PdZA6Ak4E0QhArwGzNcSPUwSN7n9wCFLeBlY2NNuuiwguQuQIp7P5oB65PLJ892yKcHiqz1xLWeiug==} + dev: false + + /element-ui/2.15.1_vue@2.6.12: + resolution: {integrity: sha512-TqlScAKGH97XndSScUDeEHIzL1x7yg7DvQdKPEOUdiDcyIz3y3FJJBlpHYaJT96FOn1xpIcUZb+I2FJeU9EcrQ==} + peerDependencies: + vue: ^2.5.17 + dependencies: + async-validator: 1.8.5 + babel-helper-vue-jsx-merge-props: 2.0.3 + deepmerge: 1.5.2 + normalize-wheel: 1.0.1 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 1.1.0 + vue: 2.6.12 + dev: false + + /elliptic/6.5.3: + resolution: {integrity: sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==} + dependencies: + bn.js: 4.11.9 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /emoji-regex/7.0.3: + resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + dev: true + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emojis-list/2.1.0: + resolution: {integrity: sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==} + engines: {node: '>= 0.10'} + dev: true + + /emojis-list/3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: true + + /encodeurl/1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + + /end-of-stream/1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true + + /enhanced-resolve/0.9.1: + resolution: {integrity: sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==} + engines: {node: '>=0.6'} + dependencies: + graceful-fs: 4.2.6 + memory-fs: 0.2.0 + tapable: 0.1.10 + dev: true + + /enhanced-resolve/4.5.0: + resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==} + engines: {node: '>=6.9.0'} + dependencies: + graceful-fs: 4.2.6 + memory-fs: 0.5.0 + tapable: 1.1.3 + dev: true + + /entities/1.1.2: + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + dev: true + + /entities/2.1.0: + resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} + dev: true + + /errno/0.1.7: + resolution: {integrity: sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==} + hasBin: true + dependencies: + prr: 1.0.1 + dev: true + + /error-ex/1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /error-stack-parser/2.0.6: + resolution: {integrity: sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==} + dependencies: + stackframe: 1.2.0 + dev: true + + /es-abstract/1.17.7: + resolution: {integrity: sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==} + engines: {node: '>= 0.4'} + dependencies: + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.1 + is-callable: 1.2.2 + is-regex: 1.1.1 + object-inspect: 1.8.0 + object-keys: 1.1.1 + object.assign: 4.1.2 + string.prototype.trimend: 1.0.3 + string.prototype.trimstart: 1.0.3 + + /es-abstract/1.18.0-next.1: + resolution: {integrity: sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==} + engines: {node: '>= 0.4'} + dependencies: + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.1 + is-callable: 1.2.2 + is-negative-zero: 2.0.0 + is-regex: 1.1.1 + object-inspect: 1.8.0 + object-keys: 1.1.1 + object.assign: 4.1.2 + string.prototype.trimend: 1.0.3 + string.prototype.trimstart: 1.0.3 + + /es-to-primitive/1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.2 + is-date-object: 1.0.2 + is-symbol: 1.0.3 + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-html/1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /eslint-config-standard/14.1.1_3e89b5637fc39c451c2a5fa13c0b3cdf: + resolution: {integrity: sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==} + peerDependencies: + eslint: '>=6.2.2' + eslint-plugin-import: '>=2.18.0' + eslint-plugin-node: '>=9.1.0' + eslint-plugin-promise: '>=4.2.1' + eslint-plugin-standard: '>=4.0.0' + dependencies: + eslint: 6.8.0 + eslint-plugin-import: 2.22.1_eslint@6.8.0 + eslint-plugin-node: 11.1.0_eslint@6.8.0 + eslint-plugin-promise: 4.2.1 + eslint-plugin-standard: 4.1.0_eslint@6.8.0 + dev: true + + /eslint-import-resolver-node/0.3.4: + resolution: {integrity: sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==} + dependencies: + debug: 2.6.9 + resolve: 1.19.0 + dev: true + + /eslint-import-resolver-webpack/0.12.2_eslint-plugin-import@2.22.1: + resolution: {integrity: sha512-7Jnm4YAoNNkvqPaZkKdIHsKGmv8/uNnYC5QsXkiSodvX4XEEfH2AKOna98FK52fCDXm3q4HzuX+7pRMKkJ64EQ==} + peerDependencies: + eslint-plugin-import: '>=1.4.0' + webpack: '>=1.11.0' + dependencies: + array-find: 1.0.0 + debug: 2.6.9 + enhanced-resolve: 0.9.1 + eslint-plugin-import: 2.22.1_eslint@6.8.0 + find-root: 1.1.0 + has: 1.0.3 + interpret: 1.4.0 + lodash: 4.17.20 + node-libs-browser: 2.2.1 + resolve: 1.19.0 + semver: 5.7.1 + dev: true + + /eslint-loader/2.2.1_eslint@6.8.0+webpack@4.44.2: + resolution: {integrity: sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==} + deprecated: This loader has been deprecated. Please use eslint-webpack-plugin + peerDependencies: + eslint: '>=1.6.0 <7.0.0' + webpack: '>=2.0.0 <5.0.0' + dependencies: + eslint: 6.8.0 + loader-fs-cache: 1.0.3 + loader-utils: 1.4.0 + object-assign: 4.1.1 + object-hash: 1.3.1 + rimraf: 2.7.1 + webpack: 4.44.2 + dev: true + + /eslint-module-utils/2.6.0: + resolution: {integrity: sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==} + engines: {node: '>=4'} + dependencies: + debug: 2.6.9 + pkg-dir: 2.0.0 + dev: true + + /eslint-plugin-es/3.0.1_eslint@6.8.0: + resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint: 6.8.0 + eslint-utils: 2.1.0 + regexpp: 3.1.0 + dev: true + + /eslint-plugin-import/2.22.1_eslint@6.8.0: + resolution: {integrity: sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 + dependencies: + array-includes: 3.1.2 + array.prototype.flat: 1.2.4 + contains-path: 0.1.0 + debug: 2.6.9 + doctrine: 1.5.0 + eslint: 6.8.0 + eslint-import-resolver-node: 0.3.4 + eslint-module-utils: 2.6.0 + has: 1.0.3 + minimatch: 3.0.4 + object.values: 1.1.1 + read-pkg-up: 2.0.0 + resolve: 1.19.0 + tsconfig-paths: 3.9.0 + dev: true + + /eslint-plugin-node/11.1.0_eslint@6.8.0: + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=5.16.0' + dependencies: + eslint: 6.8.0 + eslint-plugin-es: 3.0.1_eslint@6.8.0 + eslint-utils: 2.1.0 + ignore: 5.1.8 + minimatch: 3.0.4 + resolve: 1.19.0 + semver: 6.3.0 + dev: true + + /eslint-plugin-promise/4.2.1: + resolution: {integrity: sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==} + engines: {node: '>=6'} + dev: true + + /eslint-plugin-standard/4.1.0_eslint@6.8.0: + resolution: {integrity: sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ==} + peerDependencies: + eslint: '>=5.0.0' + dependencies: + eslint: 6.8.0 + dev: true + + /eslint-plugin-vue/6.2.2_eslint@6.8.0: + resolution: {integrity: sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==} + engines: {node: '>=8.10'} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 + dependencies: + eslint: 6.8.0 + natural-compare: 1.4.0 + semver: 5.7.1 + vue-eslint-parser: 7.1.1_eslint@6.8.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-scope/4.0.3: + resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} + engines: {node: '>=4.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-utils/1.4.3: + resolution: {integrity: sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils/2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-visitor-keys/1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true + + /eslint/6.8.0: + resolution: {integrity: sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + hasBin: true + dependencies: + '@babel/code-frame': 7.12.13 + ajv: 6.12.6 + chalk: 2.4.2 + cross-spawn: 6.0.5 + debug: 4.3.1 + doctrine: 3.0.0 + eslint-scope: 5.1.1 + eslint-utils: 1.4.3 + eslint-visitor-keys: 1.3.0 + espree: 6.2.1 + esquery: 1.3.1 + esutils: 2.0.3 + file-entry-cache: 5.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.1 + globals: 12.4.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + inquirer: 7.3.3 + is-glob: 4.0.1 + js-yaml: 3.14.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.3.0 + lodash: 4.17.20 + minimatch: 3.0.4 + mkdirp: 0.5.5 + natural-compare: 1.4.0 + optionator: 0.8.3 + progress: 2.0.3 + regexpp: 2.0.1 + semver: 6.3.0 + strip-ansi: 5.2.0 + strip-json-comments: 3.1.1 + table: 5.4.6 + text-table: 0.2.0 + v8-compile-cache: 2.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/6.2.1: + resolution: {integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==} + engines: {node: '>=6.0.0'} + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.1_acorn@7.4.1 + eslint-visitor-keys: 1.3.0 + dev: true + + /esprima/1.0.4: + resolution: {integrity: sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /esprima/4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery/1.3.1: + resolution: {integrity: sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.2.0 + dev: true + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.2.0 + dev: true + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse/5.2.0: + resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==} + engines: {node: '>=4.0'} + dev: true + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /etag/1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: true + + /event-pubsub/4.3.0: + resolution: {integrity: sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==} + engines: {node: '>=4.0.0'} + dev: true + + /eventemitter3/4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + /events/3.2.0: + resolution: {integrity: sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==} + engines: {node: '>=0.8.x'} + dev: true + + /eventsource/1.0.7: + resolution: {integrity: sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==} + engines: {node: '>=0.12.0'} + dependencies: + original: 1.0.2 + dev: true + + /evp_bytestokey/1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: true + + /execa/0.8.0: + resolution: {integrity: sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==} + engines: {node: '>=4'} + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.3 + strip-eof: 1.0.0 + dev: true + + /execa/1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} + dependencies: + cross-spawn: 6.0.5 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.3 + strip-eof: 1.0.0 + dev: true + + /execa/3.4.0: + resolution: {integrity: sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==} + engines: {node: ^8.12.0 || >=9.7.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.0 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + p-finally: 2.0.1 + signal-exit: 3.0.3 + strip-final-newline: 2.0.0 + dev: true + + /expand-brackets/2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + dev: true + + /express/4.17.1: + resolution: {integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.7 + array-flatten: 1.1.1 + body-parser: 1.19.0 + content-disposition: 0.5.3 + content-type: 1.0.4 + cookie: 0.4.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 1.1.2 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.1.2 + fresh: 0.5.2 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.3.0 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.6 + qs: 6.7.0 + range-parser: 1.2.1 + safe-buffer: 5.1.2 + send: 0.17.1 + serve-static: 1.14.1 + setprototypeof: 1.1.1 + statuses: 1.5.0 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + dev: true + + /extend-shallow/2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: true + + /extend-shallow/3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: true + + /extend/3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /external-editor/3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /extglob/2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + 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.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + dev: true + + /extrude-polyline/1.0.6: + resolution: {integrity: sha512-fcKIanU/v+tcdgG0+xMbS0C2VZ0/CF3qqxSjHiWfWICh0yFBezPr3SsOhgdzwE5E82plG6p1orEsfSqgldpxVg==} + dependencies: + as-number: 1.0.0 + gl-vec2: 1.3.0 + polyline-miter-util: 1.0.1 + dev: false + + /extsprintf/1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + dev: true + + /extsprintf/1.4.0: + resolution: {integrity: sha512-6NW8DZ8pWBc5NbGYUiqqccj9dXnuSzilZYqprdKJBZsQodGH9IyUoFOGxIWVDcBzHMb8ET24aqx9p66tZEWZkA==} + engines: {'0': node >=0.6.0} + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-glob/2.2.7: + resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} + engines: {node: '>=4.0.0'} + dependencies: + '@mrmlnc/readdir-enhanced': 2.2.1 + '@nodelib/fs.stat': 1.1.3 + glob-parent: 3.1.0 + is-glob: 4.0.1 + merge2: 1.4.1 + micromatch: 3.1.10 + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /faye-websocket/0.10.0: + resolution: {integrity: sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==} + engines: {node: '>=0.4.0'} + dependencies: + websocket-driver: 0.7.4 + dev: true + + /faye-websocket/0.11.3: + resolution: {integrity: sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + dev: true + + /fecha/4.2.0: + resolution: {integrity: sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==} + dev: false + + /figgy-pudding/3.5.2: + resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} + dev: true + + /figures/3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache/5.0.1: + resolution: {integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==} + engines: {node: '>=4'} + dependencies: + flat-cache: 2.0.1 + dev: true + + /file-loader/4.3.0_webpack@4.44.2: + resolution: {integrity: sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==} + engines: {node: '>= 8.9.0'} + peerDependencies: + webpack: ^4.0.0 + dependencies: + loader-utils: 1.4.0 + schema-utils: 2.7.1 + webpack: 4.44.2 + dev: true + + /file-source/0.6.1: + resolution: {integrity: sha512-1R1KneL7eTXmXfKxC10V/9NeGOdbsAXJ+lQ//fvvcHUgtaZcZDWNJNblxAoVOyV1cj45pOtUrR3vZTBwqcW8XA==} + dependencies: + stream-source: 0.3.5 + dev: false + + /file-uri-to-path/1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + requiresBuild: true + dev: true + optional: true + + /filesize/3.6.1: + resolution: {integrity: sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==} + engines: {node: '>= 0.4.0'} + dev: true + + /fill-range/4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + dev: true + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /finalhandler/1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + dev: true + + /find-cache-dir/0.1.1: + resolution: {integrity: sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==} + engines: {node: '>=0.10.0'} + dependencies: + commondir: 1.0.1 + mkdirp: 0.5.5 + pkg-dir: 1.0.0 + dev: true + + /find-cache-dir/2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + dev: true + + /find-cache-dir/3.3.1: + resolution: {integrity: sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: true + + /find-root/1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + dev: true + + /find-up/1.1.2: + resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} + engines: {node: '>=0.10.0'} + dependencies: + path-exists: 2.1.0 + pinkie-promise: 2.0.1 + dev: true + + /find-up/2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + dependencies: + locate-path: 2.0.0 + dev: true + + /find-up/3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: true + + /find-up/4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache/2.0.1: + resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} + engines: {node: '>=4'} + dependencies: + flatted: 2.0.2 + rimraf: 2.6.3 + write: 1.0.3 + dev: true + + /flatted/2.0.2: + resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} + dev: true + + /flush-write-stream/1.1.1: + resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /follow-redirects/1.13.0: + resolution: {integrity: sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==} + engines: {node: '>=4.0'} + + /for-in/1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + dev: true + + /forever-agent/0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + dev: true + + /fork-ts-checker-webpack-plugin/3.1.1: + resolution: {integrity: sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==} + engines: {node: '>=6.11.5', yarn: '>=1.0.0'} + dependencies: + babel-code-frame: 6.26.0 + chalk: 2.4.2 + chokidar: 3.5.1 + micromatch: 3.1.10 + minimatch: 3.0.4 + semver: 5.7.1 + tapable: 1.1.3 + worker-rpc: 0.1.1 + dev: true + + /fork-ts-checker-webpack-plugin/5.2.1: + resolution: {integrity: sha512-SVi+ZAQOGbtAsUWrZvGzz38ga2YqjWvca1pXQFUArIVXqli0lLoDQ8uS0wg0kSpcwpZmaW5jVCZXQebkyUQSsw==} + engines: {node: '>=10', yarn: '>=1.0.0'} + requiresBuild: true + dependencies: + '@babel/code-frame': 7.12.13 + '@types/json-schema': 7.0.7 + chalk: 4.1.0 + cosmiconfig: 6.0.0 + deepmerge: 4.2.2 + fs-extra: 9.1.0 + memfs: 3.2.2 + minimatch: 3.0.4 + schema-utils: 2.7.0 + semver: 7.3.5 + tapable: 1.1.3 + dev: true + optional: true + + /form-data/2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.27 + dev: true + + /forwarded/0.1.2: + resolution: {integrity: sha512-Ua9xNhH0b8pwE3yRbFfXJvfdWF0UHNCdeyb2sbi9Ul/M+r3PTdrz7Cv4SCfZRMjmzEM9PhraqfZFbGTIg3OMyA==} + engines: {node: '>= 0.6'} + dev: true + + /fragment-cache/0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + dependencies: + map-cache: 0.2.2 + dev: true + + /fresh/0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: true + + /from2/2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /fs-extra/7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.6 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra/9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.6 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + optional: true + + /fs-minipass/2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.1.3 + dev: true + + /fs-monkey/1.0.3: + resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} + dev: true + optional: true + + /fs-write-stream-atomic/1.0.10: + resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} + dependencies: + graceful-fs: 4.2.6 + iferr: 0.1.5 + imurmurhash: 0.1.4 + readable-stream: 2.3.7 + dev: true + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents/1.2.13: + resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} + engines: {node: '>= 4.0'} + os: [darwin] + deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2. + requiresBuild: true + dependencies: + bindings: 1.5.0 + nan: 2.14.2 + dev: true + optional: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /functional-red-black-tree/1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + + /gensync/1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /geobuf/3.0.2: + resolution: {integrity: sha512-ASgKwEAQQRnyNFHNvpd5uAwstbVYmiTW0Caw3fBb509tNTqXyAAPMyFs5NNihsLZhLxU1j/kjFhkhLWA9djuVg==} + hasBin: true + dependencies: + concat-stream: 2.0.0 + pbf: 3.2.1 + shapefile: 0.6.6 + dev: false + + /geojson-equality/0.1.6: + resolution: {integrity: sha512-TqG8YbqizP3EfwP5Uw4aLu6pKkg6JQK9uq/XZ1lXQntvTHD1BBKJWhNpJ2M0ax6TuWMP3oyx6Oq7FCIfznrgpQ==} + dependencies: + deep-equal: 1.1.1 + dev: false + + /geojson-rbush/2.1.0: + resolution: {integrity: sha512-9HvLGhmAJBYkYYDdPlCrlfkKGwNW3PapiS0xPekdJLobkZE4rjtduKJXsO7+kUr97SsUlz4VtMcPuSIbjjJaQg==} + dependencies: + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + rbush: 3.0.1 + dev: false + + /geojson-rbush/3.1.2: + resolution: {integrity: sha512-grkfdg3HIeTjwTfiJe5FT8+fGU3fABCc+vRJDBwdQz9kkLF0Sbif2gs2JUzjewwgmnvLGy9fInySDeADoNuk7w==} + dependencies: + '@turf/bbox': 6.3.0 + '@turf/helpers': 6.3.0 + '@turf/meta': 6.3.0 + rbush: 2.0.2 + dev: false + + /geojson-vt/3.2.1: + resolution: {integrity: sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==} + dev: false + + /get-caller-file/2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-closest/0.0.4: + resolution: {integrity: sha512-oMgZYUtnPMZB6XieXiUADpRIc5kfD+RPfpiYe9aIlEYGIcOx2mTGgKmUkctlLof/ANleypqOJRhQypbrh33DkA==} + dev: false + + /get-intrinsic/1.0.1: + resolution: {integrity: sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.1 + + /get-stream/3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + dev: true + + /get-stream/4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + dependencies: + pump: 3.0.0 + dev: true + + /get-stream/5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: true + + /get-value/2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + dev: true + + /getpass/0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + dependencies: + assert-plus: 1.0.0 + dev: true + + /gl-matrix/3.3.0: + resolution: {integrity: sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==} + dev: false + + /gl-vec2/1.3.0: + resolution: {integrity: sha512-YiqaAuNsheWmUV0Sa8k94kBB0D6RWjwZztyO+trEYS8KzJ6OQB/4686gdrf59wld4hHFIvaxynO3nRxpk1Ij/A==} + dev: false + + /glob-parent/3.1.0: + resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + dev: true + + /glob-parent/5.1.1: + resolution: {integrity: sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.1 + dev: true + + /glob-to-regexp/0.3.0: + resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} + dev: true + + /glob/7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals/11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals/12.4.0: + resolution: {integrity: sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.8.1 + dev: true + + /globby/6.1.0: + resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} + engines: {node: '>=0.10.0'} + dependencies: + array-union: 1.0.2 + glob: 7.1.7 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + + /globby/7.1.1: + resolution: {integrity: sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==} + engines: {node: '>=4'} + dependencies: + array-union: 1.0.2 + dir-glob: 2.2.2 + glob: 7.1.7 + ignore: 3.3.10 + pify: 3.0.0 + slash: 1.0.0 + dev: true + + /globby/9.2.0: + resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==} + engines: {node: '>=6'} + dependencies: + '@types/glob': 7.1.3 + array-union: 1.0.2 + dir-glob: 2.2.2 + fast-glob: 2.2.7 + glob: 7.1.7 + ignore: 4.0.6 + pify: 4.0.1 + slash: 2.0.0 + dev: true + + /graceful-fs/4.2.6: + resolution: {integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==} + dev: true + + /graphlib/2.1.8: + resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} + dependencies: + lodash: 4.17.20 + dev: false + + /grid-index/1.1.0: + resolution: {integrity: sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==} + dev: false + + /gzip-size/5.1.1: + resolution: {integrity: sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==} + engines: {node: '>=6'} + dependencies: + duplexer: 0.1.2 + pify: 4.0.1 + dev: true + + /hammerjs/2.0.8: + resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==} + engines: {node: '>=0.8.0'} + dev: false + + /handle-thing/2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + dev: true + + /har-schema/2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + dev: true + + /har-validator/5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + dev: true + + /has-ansi/2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-symbols/1.0.1: + resolution: {integrity: sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==} + engines: {node: '>= 0.4'} + + /has-value/0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: true + + /has-value/1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: true + + /has-values/0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + dev: true + + /has-values/1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hash-base/3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + dev: true + + /hash-sum/1.0.2: + resolution: {integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==} + dev: true + + /hash-sum/2.0.0: + resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} + dev: true + + /hash.js/1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /he/1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /heatmapjs/2.0.2: + resolution: {integrity: sha512-1pO/bbn9G1NYhndvjnzLVAQMGBOCk8abMM7QnLOPlIMoxDfG9Uylb68PlZe/0MCT9GuwGGtchXVPLWfoT6HrCw==} + dev: false + + /hex-color-regex/1.1.0: + resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} + dev: true + + /highlight.js/10.4.0: + resolution: {integrity: sha512-EfrUGcQ63oLJbj0J0RI9ebX6TAITbsDBLbsjr881L/X5fMO9+oadKzEF21C7R3ULKG6Gv3uoab2HiqVJa/4+oA==} + deprecated: Potential vulnerability. Please upgrade to @latest + dev: true + + /hmac-drbg/1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /hoopy/0.1.4: + resolution: {integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==} + engines: {node: '>= 6.0.0'} + dev: true + + /hosted-git-info/2.8.8: + resolution: {integrity: sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==} + dev: true + + /hpack.js/2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.7 + wbuf: 1.7.3 + dev: true + + /hsl-regex/1.0.0: + resolution: {integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==} + dev: true + + /hsla-regex/1.0.0: + resolution: {integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==} + dev: true + + /html-comment-regex/1.1.2: + resolution: {integrity: sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==} + dev: true + + /html-entities/1.3.1: + resolution: {integrity: sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==} + dev: true + + /html-minifier/3.5.21: + resolution: {integrity: sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==} + engines: {node: '>=4'} + hasBin: true + dependencies: + camel-case: 3.0.0 + clean-css: 4.2.3 + commander: 2.17.1 + he: 1.2.0 + param-case: 2.1.1 + relateurl: 0.2.7 + uglify-js: 3.4.10 + dev: true + + /html-tags/2.0.0: + resolution: {integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==} + engines: {node: '>=4'} + dev: true + + /html-tags/3.1.0: + resolution: {integrity: sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==} + engines: {node: '>=8'} + dev: true + + /html-webpack-plugin/3.2.0_webpack@4.44.2: + resolution: {integrity: sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==} + engines: {node: '>=6.9'} + deprecated: 3.x is no longer supported + peerDependencies: + webpack: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + dependencies: + html-minifier: 3.5.21 + loader-utils: 0.2.17 + lodash: 4.17.20 + pretty-error: 2.1.2 + tapable: 1.1.3 + toposort: 1.0.7 + util.promisify: 1.0.0 + webpack: 4.44.2 + dev: true + + /htmlparser2/3.10.1: + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /http-deceiver/1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + dev: true + + /http-errors/1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: true + + /http-errors/1.7.2: + resolution: {integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.1 + statuses: 1.5.0 + toidentifier: 1.0.0 + dev: true + + /http-errors/1.7.3: + resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.1.1 + statuses: 1.5.0 + toidentifier: 1.0.0 + dev: true + + /http-parser-js/0.5.2: + resolution: {integrity: sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==} + dev: true + + /http-proxy-middleware/0.19.1: + resolution: {integrity: sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==} + engines: {node: '>=4.0.0'} + dependencies: + http-proxy: 1.18.1 + is-glob: 4.0.1 + lodash: 4.17.20 + micromatch: 3.1.10 + dev: true + + /http-proxy/1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.13.0 + requires-port: 1.0.0 + dev: true + + /http-signature/1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.1 + sshpk: 1.16.1 + dev: true + + /https-browserify/1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + dev: true + + /human-signals/1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + dev: true + + /iconv-lite/0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /icss-utils/4.1.1: + resolution: {integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==} + engines: {node: '>= 6'} + dependencies: + postcss: 7.0.35 + dev: true + + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + /iferr/0.1.5: + resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} + dev: true + + /ignore/3.3.10: + resolution: {integrity: sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==} + dev: true + + /ignore/4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + + /ignore/5.1.8: + resolution: {integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==} + engines: {node: '>= 4'} + dev: true + + /import-cwd/2.1.0: + resolution: {integrity: sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==} + engines: {node: '>=4'} + dependencies: + import-from: 2.1.0 + dev: true + + /import-fresh/2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + dev: true + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-from/2.1.0: + resolution: {integrity: sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==} + engines: {node: '>=4'} + dependencies: + resolve-from: 3.0.0 + dev: true + + /import-local/2.0.0: + resolution: {integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + pkg-dir: 3.0.0 + resolve-cwd: 2.0.0 + dev: true + + /imurmurhash/0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string/4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /indexes-of/1.0.1: + resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} + dev: true + + /infer-owner/1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.1: + resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==} + dev: true + + /inherits/2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: true + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /inquirer/7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} + dependencies: + ansi-escapes: 4.3.1 + chalk: 4.1.0 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.20 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.3 + string-width: 4.2.0 + strip-ansi: 6.0.0 + through: 2.3.8 + dev: true + + /insert-css/2.0.0: + resolution: {integrity: sha512-xGq5ISgcUP5cvGkS2MMFLtPDBtrtQPSFfC6gA6U8wHKqfjTIMZLZNxOItQnoSjdOzlXOLU/yD32RKC4SvjNbtA==} + dev: false + + /internal-ip/4.3.0: + resolution: {integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==} + engines: {node: '>=6'} + dependencies: + default-gateway: 4.2.0 + ipaddr.js: 1.9.1 + dev: true + + /interpret/1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + dev: true + + /inversify-inject-decorators/3.1.0: + resolution: {integrity: sha512-/seBlVp5bXrLQS3DpKEmlgeZL6C7Tf/QITd+IMQrbBBGuCbxb7k3hRAWu9XSreNpFzLgSboz3sClLSEmGwHphw==} + dev: false + + /inversify/5.0.5: + resolution: {integrity: sha512-60QsfPz8NAU/GZqXu8hJ+BhNf/C/c+Hp0eDc6XMIJTxBiP36AQyyQKpBkOVTLWBFDQWYVHpbbEuIsHu9dLuJDA==} + dev: false + + /ip-regex/2.1.0: + resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} + engines: {node: '>=4'} + dev: true + + /ip/1.1.5: + resolution: {integrity: sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==} + dev: true + + /ipaddr.js/1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: true + + /is-absolute-url/2.1.0: + resolution: {integrity: sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-absolute-url/3.0.3: + resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} + engines: {node: '>=8'} + dev: true + + /is-accessor-descriptor/0.1.6: + resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-accessor-descriptor/1.0.0: + resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 6.0.3 + dev: true + + /is-any-array/0.1.0: + resolution: {integrity: sha512-6Kkl1RnvfdkmXM6ZlP+kELGBMA74Nq5pSOm9gIKDaPRe9KQlIJzonrOgq0Jzn/iElB6F2/olpLgWYeVySzrSRg==} + dependencies: + rollup: 1.32.1 + dev: false + + /is-arguments/1.0.4: + resolution: {integrity: sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==} + engines: {node: '>= 0.4'} + + /is-arrayish/0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-arrayish/0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + /is-binary-path/1.0.1: + resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} + engines: {node: '>=0.10.0'} + dependencies: + binary-extensions: 1.13.1 + dev: true + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.1.0 + dev: true + + /is-buffer/1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: true + + /is-callable/1.2.2: + resolution: {integrity: sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==} + engines: {node: '>= 0.4'} + + /is-ci/1.2.1: + resolution: {integrity: sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==} + hasBin: true + dependencies: + ci-info: 1.6.0 + dev: true + + /is-color-stop/1.1.0: + resolution: {integrity: sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==} + dependencies: + css-color-names: 0.0.4 + hex-color-regex: 1.1.0 + hsl-regex: 1.0.0 + hsla-regex: 1.0.0 + rgb-regex: 1.0.1 + rgba-regex: 1.0.0 + dev: true + + /is-core-module/2.1.0: + resolution: {integrity: sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==} + dependencies: + has: 1.0.3 + dev: true + + /is-data-descriptor/0.1.4: + resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-data-descriptor/1.0.0: + resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 6.0.3 + dev: true + + /is-date-object/1.0.2: + resolution: {integrity: sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==} + engines: {node: '>= 0.4'} + + /is-descriptor/0.1.6: + resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} + engines: {node: '>=0.10.0'} + dependencies: + is-accessor-descriptor: 0.1.6 + is-data-descriptor: 0.1.4 + kind-of: 5.1.0 + dev: true + + /is-descriptor/1.0.2: + resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} + engines: {node: '>=0.10.0'} + dependencies: + is-accessor-descriptor: 1.0.0 + is-data-descriptor: 1.0.0 + kind-of: 6.0.3 + dev: true + + /is-directory/0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + dev: true + + /is-docker/2.1.1: + resolution: {integrity: sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-extendable/0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: true + + /is-extendable/1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-object: 2.0.4 + dev: true + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point/2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-glob/3.1.0: + resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-glob/4.0.1: + resolution: {integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-negative-zero/2.0.0: + resolution: {integrity: sha512-Ue/ky+mZLjMl2g4Dl/168JjlCWJtszY/7m0NL1UHrRfMPDx6Dlo8uJ0TfYVWvVv+r9WbmWAEJZTa4mj+jS2Kew==} + engines: {node: '>= 0.4'} + + /is-number/3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-obj/2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + dev: true + + /is-path-cwd/2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + dev: true + + /is-path-in-cwd/2.1.0: + resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==} + engines: {node: '>=6'} + dependencies: + is-path-inside: 2.1.0 + dev: true + + /is-path-inside/2.1.0: + resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==} + engines: {node: '>=6'} + dependencies: + path-is-inside: 1.0.2 + dev: true + + /is-plain-obj/1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-plain-object/2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-regex/1.1.1: + resolution: {integrity: sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.1 + + /is-resolvable/1.1.0: + resolution: {integrity: sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==} + dev: true + + /is-stream/1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-stream/2.0.0: + resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==} + engines: {node: '>=8'} + dev: true + + /is-string/1.0.5: + resolution: {integrity: sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==} + engines: {node: '>= 0.4'} + dev: true + + /is-svg/3.0.0: + resolution: {integrity: sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==} + engines: {node: '>=4'} + dependencies: + html-comment-regex: 1.1.2 + dev: true + + /is-symbol/1.0.3: + resolution: {integrity: sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.1 + + /is-typedarray/1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true + + /is-windows/1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-wsl/1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + dev: true + + /is-wsl/2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.1.1 + dev: true + + /isarray/0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + dev: false + + /isarray/1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isobject/2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + dependencies: + isarray: 1.0.0 + dev: true + + /isobject/3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /isstream/0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + dev: true + + /javascript-stringify/2.0.1: + resolution: {integrity: sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow==} + dev: true + + /jest-worker/25.5.0: + resolution: {integrity: sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==} + engines: {node: '>= 8.3'} + dependencies: + merge-stream: 2.0.0 + supports-color: 7.2.0 + dev: true + + /js-cookie/2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + dev: false + + /js-message/1.0.7: + resolution: {integrity: sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==} + engines: {node: '>=0.6.0'} + dev: true + + /js-queue/2.0.2: + resolution: {integrity: sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==} + engines: {node: '>=1.0.0'} + dependencies: + easy-stack: 1.0.1 + dev: true + + /js-tokens/3.0.2: + resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} + dev: true + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml/3.14.0: + resolution: {integrity: sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /jsbn/0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + dev: true + + /jsesc/0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc/2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-better-errors/1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-schema/0.2.3: + resolution: {integrity: sha512-a3xHnILGMtk+hDOqNwHzF6e2fNbiMrXZvxKQiEv2MlgQP+pjIOzqAmKYD2mDpXYE/44M7g+n9p2bKkYWDUcXCQ==} + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json-stringify-pretty-compact/2.0.0: + resolution: {integrity: sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ==} + dev: false + + /json-stringify-safe/5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true + + /json3/3.3.3: + resolution: {integrity: sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==} + dev: true + + /json5/0.5.1: + resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} + hasBin: true + dev: true + + /json5/1.0.1: + resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} + hasBin: true + dependencies: + minimist: 1.2.5 + dev: true + + /json5/2.1.3: + resolution: {integrity: sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==} + engines: {node: '>=6'} + hasBin: true + dependencies: + minimist: 1.2.5 + dev: true + + /jsonfile/4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.6 + dev: true + + /jsonfile/6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.6 + dev: true + optional: true + + /jsprim/1.4.1: + resolution: {integrity: sha512-4Dj8Rf+fQ+/Pn7C5qeEX02op1WfOss3PKTE9Nsop3Dx+6UPxlm1dr/og7o2cRa5hNN07CACr4NFzRLtj/rjWog==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.2.3 + verror: 1.10.0 + dev: true + + /kdbush/3.0.0: + resolution: {integrity: sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==} + dev: false + + /killable/1.0.1: + resolution: {integrity: sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==} + dev: true + + /kind-of/3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of/4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of/5.1.0: + resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} + engines: {node: '>=0.10.0'} + dev: true + + /kind-of/6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /launch-editor-middleware/2.2.1: + resolution: {integrity: sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==} + dependencies: + launch-editor: 2.2.1 + dev: true + + /launch-editor/2.2.1: + resolution: {integrity: sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==} + dependencies: + chalk: 2.4.2 + shell-quote: 1.7.2 + dev: true + + /leaflet/1.7.1: + resolution: {integrity: sha512-/xwPEBidtg69Q3HlqPdU3DnrXQOvQU/CCHA1tcDQVzOwm91YMYaILjNp7L4Eaw5Z4sOYdbBz6koWyibppd8Zqw==} + dev: false + + /levn/0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true + + /lineclip/1.1.5: + resolution: {integrity: sha512-KlA/wRSjpKl7tS9iRUdlG72oQ7qZ1IlVbVgHwoO10TBR/4gQ86uhKow6nlzMAJJhjCWKto8OeoAzzIzKSmN25A==} + dev: false + + /lines-and-columns/1.1.6: + resolution: {integrity: sha512-8ZmlJFVK9iCmtLz19HpSsR8HaAMWBT284VMNednLwlIMDP2hJDCIhUp0IZ2xUcZ+Ob6BM0VvCSJwzASDM45NLQ==} + dev: true + + /load-json-file/2.0.0: + resolution: {integrity: sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==} + engines: {node: '>=4'} + dependencies: + graceful-fs: 4.2.6 + parse-json: 2.2.0 + pify: 2.3.0 + strip-bom: 3.0.0 + dev: true + + /load-styles/2.0.0: + resolution: {integrity: sha512-bKtTRlB+V8jij88ZoX73whwAbme5VQfmNPiK9KWDSyYevZgy3uwivIPBeM9w5+nyhA2BFFyWMSqPNola9MSn+A==} + dev: false + + /loader-fs-cache/1.0.3: + resolution: {integrity: sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==} + dependencies: + find-cache-dir: 0.1.1 + mkdirp: 0.5.5 + dev: true + + /loader-runner/2.4.0: + resolution: {integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==} + engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} + dev: true + + /loader-utils/0.2.17: + resolution: {integrity: sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==} + dependencies: + big.js: 3.2.0 + emojis-list: 2.1.0 + json5: 0.5.1 + object-assign: 4.1.1 + dev: true + + /loader-utils/1.4.0: + resolution: {integrity: sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==} + engines: {node: '>=4.0.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.1 + dev: true + + /loader-utils/2.0.0: + resolution: {integrity: sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.1.3 + dev: true + optional: true + + /locate-path/2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + dev: true + + /locate-path/3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: true + + /locate-path/5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /lodash-es/4.17.15: + resolution: {integrity: sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==} + dev: false + + /lodash-es/4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + + /lodash.clamp/4.0.3: + resolution: {integrity: sha512-HvzRFWjtcguTW7yd8NJBshuNaCa8aqNFtnswdT7f/cMd/1YKy5Zzoq4W/Oxvnx9l7aeY258uSdDfM793+eLsVg==} + dev: false + + /lodash.clonedeep/4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + dev: false + + /lodash.defaultsdeep/4.6.1: + resolution: {integrity: sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==} + dev: true + + /lodash.isarray/4.0.0: + resolution: {integrity: sha512-V8ViWvoNlXpCrB6Ewaj3ScRXUpmCvqp4tJUxa3dlovuJj/8lp3SND5Kw4v5OeuHgoyw4qJN+gl36qZqp6WYQ6g==} + deprecated: This package is deprecated. Use Array.isArray. + dev: false + + /lodash.isfinite/3.3.2: + resolution: {integrity: sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==} + dev: false + + /lodash.isnil/4.0.0: + resolution: {integrity: sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==} + dev: false + + /lodash.isplainobject/4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: false + + /lodash.isstring/4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + dev: false + + /lodash.isundefined/3.0.1: + resolution: {integrity: sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==} + dev: false + + /lodash.kebabcase/4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + dev: true + + /lodash.mapvalues/4.6.0: + resolution: {integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==} + dev: true + + /lodash.memoize/4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lodash.mergewith/4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + dev: false + + /lodash.result/4.5.2: + resolution: {integrity: sha512-dlgJvozORK2oE4jXzTGIsJz9Vk6huNAINxYYvWc/R44x3/ah/F7OkNwr9c0wO2poh2cbdjS0jF3j8VgyCEOVfw==} + dev: false + + /lodash.set/4.3.2: + resolution: {integrity: sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==} + dev: false + + /lodash.transform/4.6.0: + resolution: {integrity: sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==} + dev: true + + /lodash.uniq/4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + /lodash/4.17.20: + resolution: {integrity: sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==} + + /log-symbols/2.2.0: + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} + dependencies: + chalk: 2.4.2 + dev: true + + /loglevel/1.7.1: + resolution: {integrity: sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==} + engines: {node: '>= 0.6.0'} + dev: true + + /loose-envify/1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false + + /lower-case/1.1.4: + resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} + dev: true + + /lru-cache/4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: true + + /lru-cache/5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /make-dir/2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.1 + dev: true + + /make-dir/3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.0 + dev: true + + /map-cache/0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-visit/1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + dependencies: + object-visit: 1.0.1 + dev: true + + /mapbox-gl/1.13.0: + resolution: {integrity: sha512-g8zlzuJxYJqbOPXT19/UBYpVrcefBQ06F/Cbj0fyEfFnFesDcU3cFTxd75/FZ6Upx2ZEjCsD61CHxrcxZidVpA==} + engines: {node: '>=6.4.0'} + dependencies: + '@mapbox/geojson-rewind': 0.5.0 + '@mapbox/geojson-types': 1.0.2 + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/mapbox-gl-supported': 1.5.0_mapbox-gl@1.13.0 + '@mapbox/point-geometry': 0.1.0 + '@mapbox/tiny-sdf': 1.2.2 + '@mapbox/unitbezier': 0.0.0 + '@mapbox/vector-tile': 1.3.1 + '@mapbox/whoots-js': 3.1.0 + csscolorparser: 1.0.3 + earcut: 2.2.2 + geojson-vt: 3.2.1 + gl-matrix: 3.3.0 + grid-index: 1.1.0 + minimist: 1.2.5 + murmurhash-js: 1.0.0 + pbf: 3.2.1 + potpack: 1.0.1 + quickselect: 2.0.0 + rw: 1.3.3 + supercluster: 7.1.2 + tinyqueue: 2.0.3 + vt-pbf: 3.1.1 + dev: false + + /mapbox-to-css-font/2.4.0: + resolution: {integrity: sha512-v674D0WtpxCXlA6E+sBlG1QJWdUkz/s9qAD91bJSXBGuBL5lL4tJXpoJEftecphCh2SVQCjWMS2vhylc3AIQTg==} + dev: false + + /material-colors/1.2.6: + resolution: {integrity: sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==} + dev: false + + /md5.js/1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /mdn-data/2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: true + + /mdn-data/2.0.4: + resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} + dev: true + + /media-typer/0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: true + + /memfs/3.2.2: + resolution: {integrity: sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.3 + dev: true + optional: true + + /memory-fs/0.2.0: + resolution: {integrity: sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng==} + dev: true + + /memory-fs/0.4.1: + resolution: {integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==} + dependencies: + errno: 0.1.7 + readable-stream: 2.3.7 + dev: true + + /memory-fs/0.5.0: + resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} + engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} + dependencies: + errno: 0.1.7 + readable-stream: 2.3.7 + dev: true + + /merge-descriptors/1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: true + + /merge-json-schemas/1.0.0: + resolution: {integrity: sha512-eXh1Zlx2ptYvPhgNdm+2kPfT40b4jwCa/RVxpjBGj3cgmLvXQBr8H7GPAL/5vIAmwiTpHax0l/ChX7Dp6FoJIA==} + engines: {node: '>=4'} + dependencies: + lodash.isarray: 4.0.0 + lodash.isnil: 4.0.0 + lodash.isplainobject: 4.0.6 + lodash.mergewith: 4.6.2 + lodash.uniq: 4.5.0 + dev: false + + /merge-source-map/1.1.0: + resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} + dependencies: + source-map: 0.6.1 + dev: true + + /merge-stream/2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /methods/1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true + + /microevent.ts/0.1.1: + resolution: {integrity: sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==} + dev: true + + /micromatch/3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + dev: true + + /micromatch/4.0.4: + resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.0 + dev: true + + /miller-rabin/4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + dependencies: + bn.js: 4.11.9 + brorand: 1.1.0 + dev: true + + /mime-db/1.44.0: + resolution: {integrity: sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-db/1.45.0: + resolution: {integrity: sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types/2.1.27: + resolution: {integrity: sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.44.0 + dev: true + + /mime/1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /mime/2.4.6: + resolution: {integrity: sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: true + + /mimic-fn/1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + dev: true + + /mimic-fn/2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mini-css-extract-plugin/0.9.0_webpack@4.44.2: + resolution: {integrity: sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==} + engines: {node: '>= 6.9.0'} + peerDependencies: + webpack: ^4.4.0 + dependencies: + loader-utils: 1.4.0 + normalize-url: 1.9.1 + schema-utils: 1.0.0 + webpack: 4.44.2 + webpack-sources: 1.4.3 + dev: true + + /minimalistic-assert/1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /minimalistic-crypto-utils/1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: true + + /minimatch/3.0.4: + resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist/0.0.5: + resolution: {integrity: sha512-rSJ0cdmCj3qmKdObcnMcWgPVOyaOWlazLhZAJW0s6G6lx1ZEuFkraWmEH5LTvX90btkfHPclQBjvjU7A/kYRFg==} + dev: false + + /minimist/1.2.5: + resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} + + /minipass-collect/1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.1.3 + dev: true + + /minipass-flush/1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.1.3 + dev: true + + /minipass-pipeline/1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + dependencies: + minipass: 3.1.3 + dev: true + + /minipass/3.1.3: + resolution: {integrity: sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: true + + /mississippi/3.0.0: + resolution: {integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==} + engines: {node: '>=4.0.0'} + dependencies: + concat-stream: 1.6.2 + duplexify: 3.7.1 + end-of-stream: 1.4.4 + flush-write-stream: 1.1.1 + from2: 2.3.0 + parallel-transform: 1.2.0 + pump: 3.0.0 + pumpify: 1.5.1 + stream-each: 1.2.3 + through2: 2.0.5 + dev: true + + /mixin-deep/1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: true + + /mkdirp/0.5.5: + resolution: {integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==} + hasBin: true + dependencies: + minimist: 1.2.5 + dev: true + + /ml-array-max/1.2.0: + resolution: {integrity: sha512-3UH7XCdjINxbtBWj1EuHMeI242Q3uLuC4rTpSybBWUpGjnG/BefAFxmTolUCuXDM59mJ/G/re80CQbaVIuMjQA==} + dependencies: + is-any-array: 0.1.0 + dev: false + + /ml-array-min/1.2.0: + resolution: {integrity: sha512-Wgf2+lCndLy1SbeOZSUqlkxD9T1CXPT7CIlNGAZRRQI35wsqvfuNtLNH4qKFx8kNjlq3VGXKOSBHeiXR31vaTA==} + dependencies: + is-any-array: 0.1.0 + dev: false + + /ml-array-rescale/1.3.2: + resolution: {integrity: sha512-kiXwdVCGrer7rLnjR6Q9ZgP6e9rbnmQvYVUMLXyqNg4+zOs+jek8yBupqPZPDr+NvlSE5OuMnfAbP1oA63kHBA==} + dependencies: + is-any-array: 0.1.0 + ml-array-max: 1.2.0 + ml-array-min: 1.2.0 + dev: false + + /ml-matrix/6.5.3: + resolution: {integrity: sha512-wXrn+ccApJ6gHktxmosOzs6B6M0huadahDpcgPYIAJggpqN7CtV4Vd7zpW6Lel/1oM5yCULcrbRJ1A5gF/GYDA==} + dependencies: + ml-array-rescale: 1.3.2 + dev: false + + /moment/2.29.1: + resolution: {integrity: sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==} + dev: false + + /move-concurrently/1.0.1: + resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} + dependencies: + aproba: 1.2.0 + copy-concurrently: 1.0.5 + fs-write-stream-atomic: 1.0.10 + mkdirp: 0.5.5 + rimraf: 2.7.1 + run-queue: 1.0.3 + dev: true + + /ms/2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms/2.1.1: + resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} + dev: true + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /multicast-dns-service-types/1.1.0: + resolution: {integrity: sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==} + dev: true + + /multicast-dns/6.2.3: + resolution: {integrity: sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==} + hasBin: true + dependencies: + dns-packet: 1.3.1 + thunky: 1.1.0 + dev: true + + /murmurhash-js/1.0.0: + resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} + dev: false + + /mute-stream/0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + + /mz/2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /nan/2.14.2: + resolution: {integrity: sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==} + requiresBuild: true + dev: true + optional: true + + /nanomatch/1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + 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.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + dev: true + + /natural-compare/1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /negotiator/0.6.2: + resolution: {integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==} + engines: {node: '>= 0.6'} + dev: true + + /neo-async/2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /nice-try/1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: true + + /no-case/2.3.2: + resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} + dependencies: + lower-case: 1.1.4 + dev: true + + /node-forge/0.10.0: + resolution: {integrity: sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==} + engines: {node: '>= 6.0.0'} + dev: true + + /node-ipc/9.1.3: + resolution: {integrity: sha512-8RS4RZyS/KMKKYG8mrje+cLxwATe9dBCuOiqKFSWND4oOuKytfuKCiR9yinvhoXF/nGdX/WnbywaUee+9U87zA==} + engines: {node: '>=8.0.0'} + dependencies: + event-pubsub: 4.3.0 + js-message: 1.0.7 + js-queue: 2.0.2 + dev: true + + /node-libs-browser/2.2.1: + resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} + dependencies: + assert: 1.5.0 + browserify-zlib: 0.2.0 + buffer: 4.9.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.0 + domain-browser: 1.2.0 + events: 3.2.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 0.0.1 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 2.3.7 + stream-browserify: 2.0.2 + stream-http: 2.8.3 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.0 + url: 0.11.0 + util: 0.11.1 + vm-browserify: 1.1.2 + dev: true + + /node-releases/1.1.67: + resolution: {integrity: sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==} + dev: true + + /normalize-package-data/2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.8 + resolve: 1.19.0 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path/1.0.0: + resolution: {integrity: sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-path/2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + dependencies: + remove-trailing-separator: 1.1.0 + dev: true + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range/0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-url/1.9.1: + resolution: {integrity: sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==} + engines: {node: '>=4'} + dependencies: + object-assign: 4.1.1 + prepend-http: 1.0.4 + query-string: 4.3.4 + sort-keys: 1.1.2 + dev: true + + /normalize-url/3.3.0: + resolution: {integrity: sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==} + engines: {node: '>=6'} + dev: true + + /normalize-wheel/1.0.1: + resolution: {integrity: sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==} + dev: false + + /npm-run-path/2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + dependencies: + path-key: 2.0.1 + dev: true + + /npm-run-path/4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /nprogress/0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + dev: false + + /nth-check/1.0.2: + resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} + dependencies: + boolbase: 1.0.0 + dev: true + + /num2fraction/1.2.2: + resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} + dev: true + + /oauth-sign/0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + dev: true + + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-copy/0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: true + + /object-hash/1.3.1: + resolution: {integrity: sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==} + engines: {node: '>= 0.10.0'} + dev: true + + /object-inspect/1.8.0: + resolution: {integrity: sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==} + + /object-is/1.1.3: + resolution: {integrity: sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.1.3 + es-abstract: 1.18.0-next.1 + + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + /object-visit/1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /object.assign/4.1.2: + resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.0 + define-properties: 1.1.3 + has-symbols: 1.0.1 + object-keys: 1.1.1 + + /object.getownpropertydescriptors/2.1.0: + resolution: {integrity: sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==} + engines: {node: '>= 0.8'} + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.7 + dev: true + + /object.pick/1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /object.values/1.1.1: + resolution: {integrity: sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.7 + function-bind: 1.1.1 + has: 1.0.3 + dev: true + + /obuf/1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: true + + /ol-echarts/2.0.3_echarts@4.9.0+ol@6.5.0: + resolution: {integrity: sha512-+o34T+4Jhskp/ePvqtsKOqQ3t1aTkzhF00Oqw3B8E9uduCsQ9Ju6Cc3Yx9ZNE4Yikpz95MZ/JIMFYUZiC3W7Ig==} + engines: {node: '>= 4.0.0', npm: '>= 3.0.0'} + peerDependencies: + echarts: '>=4.0.1' + ol: '>=5.0.0' + dependencies: + echarts: 4.9.0 + ol: 6.5.0 + dev: false + + /ol-mapbox-style/6.3.1_ol@6.5.0: + resolution: {integrity: sha512-hZsvPVkk1Y+qmifxRX/gCaZJ5Mo04vWj6lbFhXpHDloQquHD3kTY0q8o3xbg4FehucuG7HyQteKWeFJRh3FMww==} + peerDependencies: + ol: ^6.1.0 + dependencies: + '@mapbox/mapbox-gl-style-spec': 13.18.1 + mapbox-to-css-font: 2.4.0 + ol: 6.5.0 + webfont-matcher: 1.1.0 + dev: false + + /ol/6.5.0: + resolution: {integrity: sha512-a5ebahrjF5yCPFle1rc0aHzKp/9A4LlUnjh+S3I+x4EgcvcddDhpOX3WDOs0Pg9/wEElrikHSGEvbeej2Hh4Ug==} + dependencies: + ol-mapbox-style: 6.3.1_ol@6.5.0 + pbf: 3.2.1 + rbush: 3.0.1 + dev: false + + /on-finished/2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /on-headers/1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: true + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime/2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} + dependencies: + mimic-fn: 1.2.0 + dev: true + + /onetime/5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /open/6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + dependencies: + is-wsl: 1.1.0 + dev: true + + /opener/1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + dev: true + + /opn/5.5.0: + resolution: {integrity: sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==} + engines: {node: '>=4'} + dependencies: + is-wsl: 1.1.0 + dev: true + + /optionator/0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.3 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.3 + dev: true + + /ora/3.4.0: + resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} + engines: {node: '>=6'} + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-spinners: 2.5.0 + log-symbols: 2.2.0 + strip-ansi: 5.2.0 + wcwidth: 1.0.1 + dev: true + + /original/1.0.2: + resolution: {integrity: sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==} + dependencies: + url-parse: 1.4.7 + dev: true + + /os-browserify/0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + dev: true + + /os-tmpdir/1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-finally/1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: true + + /p-finally/2.0.1: + resolution: {integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==} + engines: {node: '>=8'} + dev: true + + /p-limit/1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + dependencies: + p-try: 1.0.0 + dev: true + + /p-limit/2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-locate/2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + dependencies: + p-limit: 1.3.0 + dev: true + + /p-locate/3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-map/2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + dev: true + + /p-map/3.0.0: + resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} + engines: {node: '>=8'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-retry/3.0.1: + resolution: {integrity: sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==} + engines: {node: '>=6'} + dependencies: + retry: 0.12.0 + dev: true + + /p-try/1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + dev: true + + /p-try/2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /pako/1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: true + + /parallel-transform/1.2.0: + resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} + dependencies: + cyclist: 1.0.1 + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /param-case/2.1.1: + resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} + dependencies: + no-case: 2.3.2 + dev: true + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-asn1/5.1.6: + resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} + dependencies: + asn1.js: 5.4.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.1 + safe-buffer: 5.2.1 + dev: true + + /parse-json/2.2.0: + resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} + engines: {node: '>=0.10.0'} + dependencies: + error-ex: 1.3.2 + dev: true + + /parse-json/4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + + /parse-json/5.1.0: + resolution: {integrity: sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.12.13 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.1.6 + dev: true + + /parse5-htmlparser2-tree-adapter/6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + dependencies: + parse5: 6.0.1 + dev: true + + /parse5/5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + dev: true + + /parse5/6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: true + + /parseurl/1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + + /pascalcase/0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + dev: true + + /path-browserify/0.0.1: + resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} + dev: true + + /path-dirname/1.0.2: + resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} + dev: true + + /path-exists/2.1.0: + resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} + engines: {node: '>=0.10.0'} + dependencies: + pinkie-promise: 2.0.1 + dev: true + + /path-exists/3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + dev: true + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-is-inside/1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + dev: true + + /path-key/2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: true + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse/1.0.6: + resolution: {integrity: sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==} + dev: true + + /path-source/0.1.3: + resolution: {integrity: sha512-dWRHm5mIw5kw0cs3QZLNmpUWty48f5+5v9nWD2dw3Y0Hf+s01Ag8iJEWV0Sm0kocE8kK27DrIowha03e1YR+Qw==} + dependencies: + array-source: 0.0.4 + file-source: 0.6.1 + dev: false + + /path-to-regexp/0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: true + + /path-type/2.0.0: + resolution: {integrity: sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==} + engines: {node: '>=4'} + dependencies: + pify: 2.3.0 + dev: true + + /path-type/3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: true + + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + optional: true + + /pbf/3.2.1: + resolution: {integrity: sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==} + hasBin: true + dependencies: + ieee754: 1.2.1 + resolve-protobuf-schema: 2.1.0 + dev: false + + /pbkdf2/3.1.1: + resolution: {integrity: sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /performance-now/2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: true + + /picomatch/2.3.0: + resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} + engines: {node: '>=8.6'} + dev: true + + /pify/2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pify/3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: true + + /pify/4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + + /pinkie-promise/2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + dependencies: + pinkie: 2.0.4 + dev: true + + /pinkie/2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + dev: true + + /pkg-dir/1.0.0: + resolution: {integrity: sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==} + engines: {node: '>=0.10.0'} + dependencies: + find-up: 1.1.2 + dev: true + + /pkg-dir/2.0.0: + resolution: {integrity: sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==} + engines: {node: '>=4'} + dependencies: + find-up: 2.1.0 + dev: true + + /pkg-dir/3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + dev: true + + /pkg-dir/4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /pnp-webpack-plugin/1.6.4_typescript@4.2.4: + resolution: {integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==} + engines: {node: '>=6'} + dependencies: + ts-pnp: 1.2.0_typescript@4.2.4 + transitivePeerDependencies: + - typescript + dev: true + + /point-in-polygon/1.0.1: + resolution: {integrity: sha512-7xblajMJtE9xOfDXkZrq98kjnoazmNPfNXqu9XCKk0uhtjImNdTRjkckIWKirtlyUocWU9XyzTyE2y5/E45v5A==} + dev: false + + /polygon-clipping/0.15.2: + resolution: {integrity: sha512-qsUFQSY4nA++1/b76dy0BJGwL0FZAk05Y4hZprctLIhAddE8KUUr3TxIF4sAxIQtjH9xvaBe3raaRQrcSI4wlA==} + dependencies: + splaytree: 3.1.0 + dev: false + + /polyline-miter-util/1.0.1: + resolution: {integrity: sha512-/3u91zz6mBerBZo6qnOJOTjv7EfPhKtsV028jMyj86YpzLRNmCCFfrX7IO9tCEQ2W4x45yc+vKOezjf7u2Nd6Q==} + dependencies: + gl-vec2: 1.3.0 + dev: false + + /portfinder/1.0.28: + resolution: {integrity: sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==} + engines: {node: '>= 0.12.0'} + dependencies: + async: 2.6.3 + debug: 3.2.7 + mkdirp: 0.5.5 + dev: true + + /posix-character-classes/0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + dev: true + + /postcss-calc/7.0.5: + resolution: {integrity: sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==} + dependencies: + postcss: 7.0.35 + postcss-selector-parser: 6.0.4 + postcss-value-parser: 4.1.0 + dev: true + + /postcss-colormin/4.0.3: + resolution: {integrity: sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==} + engines: {node: '>=6.9.0'} + dependencies: + browserslist: 4.14.7 + color: 3.1.3 + has: 1.0.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-convert-values/4.0.1: + resolution: {integrity: sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-discard-comments/4.0.2: + resolution: {integrity: sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-discard-duplicates/4.0.2: + resolution: {integrity: sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-discard-empty/4.0.1: + resolution: {integrity: sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-discard-overridden/4.0.1: + resolution: {integrity: sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-load-config/2.1.2: + resolution: {integrity: sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==} + engines: {node: '>= 4'} + dependencies: + cosmiconfig: 5.2.1 + import-cwd: 2.1.0 + dev: true + + /postcss-loader/3.0.0: + resolution: {integrity: sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==} + engines: {node: '>= 6'} + dependencies: + loader-utils: 1.4.0 + postcss: 7.0.35 + postcss-load-config: 2.1.2 + schema-utils: 1.0.0 + dev: true + + /postcss-merge-longhand/4.0.11: + resolution: {integrity: sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==} + engines: {node: '>=6.9.0'} + dependencies: + css-color-names: 0.0.4 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + stylehacks: 4.0.3 + dev: true + + /postcss-merge-rules/4.0.3: + resolution: {integrity: sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==} + engines: {node: '>=6.9.0'} + dependencies: + browserslist: 4.14.7 + caniuse-api: 3.0.0 + cssnano-util-same-parent: 4.0.1 + postcss: 7.0.35 + postcss-selector-parser: 3.1.2 + vendors: 1.0.4 + dev: true + + /postcss-minify-font-values/4.0.2: + resolution: {integrity: sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-minify-gradients/4.0.2: + resolution: {integrity: sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-arguments: 4.0.0 + is-color-stop: 1.1.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-minify-params/4.0.2: + resolution: {integrity: sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==} + engines: {node: '>=6.9.0'} + dependencies: + alphanum-sort: 1.0.2 + browserslist: 4.14.7 + cssnano-util-get-arguments: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + uniqs: 2.0.0 + dev: true + + /postcss-minify-selectors/4.0.2: + resolution: {integrity: sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==} + engines: {node: '>=6.9.0'} + dependencies: + alphanum-sort: 1.0.2 + has: 1.0.3 + postcss: 7.0.35 + postcss-selector-parser: 3.1.2 + dev: true + + /postcss-modules-extract-imports/2.0.0: + resolution: {integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==} + engines: {node: '>= 6'} + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-modules-local-by-default/3.0.3: + resolution: {integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==} + engines: {node: '>= 6'} + dependencies: + icss-utils: 4.1.1 + postcss: 7.0.35 + postcss-selector-parser: 6.0.4 + postcss-value-parser: 4.1.0 + dev: true + + /postcss-modules-scope/2.2.0: + resolution: {integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==} + engines: {node: '>= 6'} + dependencies: + postcss: 7.0.35 + postcss-selector-parser: 6.0.4 + dev: true + + /postcss-modules-values/3.0.0: + resolution: {integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==} + dependencies: + icss-utils: 4.1.1 + postcss: 7.0.35 + dev: true + + /postcss-normalize-charset/4.0.1: + resolution: {integrity: sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.35 + dev: true + + /postcss-normalize-display-values/4.0.2: + resolution: {integrity: sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-match: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-positions/4.0.2: + resolution: {integrity: sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-arguments: 4.0.0 + has: 1.0.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-repeat-style/4.0.2: + resolution: {integrity: sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-arguments: 4.0.0 + cssnano-util-get-match: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-string/4.0.2: + resolution: {integrity: sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==} + engines: {node: '>=6.9.0'} + dependencies: + has: 1.0.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-timing-functions/4.0.2: + resolution: {integrity: sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-match: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-unicode/4.0.1: + resolution: {integrity: sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==} + engines: {node: '>=6.9.0'} + dependencies: + browserslist: 4.14.7 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-url/4.0.1: + resolution: {integrity: sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==} + engines: {node: '>=6.9.0'} + dependencies: + is-absolute-url: 2.1.0 + normalize-url: 3.3.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-whitespace/4.0.2: + resolution: {integrity: sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-ordered-values/4.1.2: + resolution: {integrity: sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-arguments: 4.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-reduce-initial/4.0.3: + resolution: {integrity: sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==} + engines: {node: '>=6.9.0'} + dependencies: + browserslist: 4.14.7 + caniuse-api: 3.0.0 + has: 1.0.3 + postcss: 7.0.35 + dev: true + + /postcss-reduce-transforms/4.0.2: + resolution: {integrity: sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-match: 4.0.0 + has: 1.0.3 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-selector-parser/3.1.2: + resolution: {integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==} + engines: {node: '>=8'} + dependencies: + dot-prop: 5.3.0 + indexes-of: 1.0.1 + uniq: 1.0.1 + dev: true + + /postcss-selector-parser/6.0.4: + resolution: {integrity: sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + indexes-of: 1.0.1 + uniq: 1.0.1 + util-deprecate: 1.0.2 + dev: true + + /postcss-svgo/4.0.2: + resolution: {integrity: sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==} + engines: {node: '>=6.9.0'} + dependencies: + is-svg: 3.0.0 + postcss: 7.0.35 + postcss-value-parser: 3.3.1 + svgo: 1.3.2 + dev: true + + /postcss-unique-selectors/4.0.1: + resolution: {integrity: sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==} + engines: {node: '>=6.9.0'} + dependencies: + alphanum-sort: 1.0.2 + postcss: 7.0.35 + uniqs: 2.0.0 + dev: true + + /postcss-value-parser/3.3.1: + resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} + dev: true + + /postcss-value-parser/4.1.0: + resolution: {integrity: sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==} + dev: true + + /postcss/7.0.35: + resolution: {integrity: sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==} + engines: {node: '>=6.0.0'} + dependencies: + chalk: 2.4.2 + source-map: 0.6.1 + supports-color: 6.1.0 + dev: true + + /potpack/1.0.1: + resolution: {integrity: sha512-15vItUAbViaYrmaB/Pbw7z6qX2xENbFSTA7Ii4tgbPtasxm5v6ryKhKtL91tpWovDJzTiZqdwzhcFBCwiMVdVw==} + dev: false + + /prelude-ls/1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + dev: true + + /prepend-http/1.0.4: + resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} + engines: {node: '>=0.10.0'} + dev: true + + /prettier/1.19.1: + resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} + engines: {node: '>=4'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /pretty-error/2.1.2: + resolution: {integrity: sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==} + dependencies: + lodash: 4.17.20 + renderkid: 2.0.4 + dev: true + + /probe.gl/3.3.0: + resolution: {integrity: sha512-59E6AEw4N8sU4PKfAl7S2UBYJCOa064WpEFcXfeFOB/36FJtplYY+261DqLjLAvOqRRHiKVEQUBo63PQ3jKeWA==} + dependencies: + '@babel/runtime': 7.12.13 + '@probe.gl/stats': 3.3.0 + dev: false + + /process-nextick-args/2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + /process/0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: true + + /progress/2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /promise-inflight/1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + dev: true + + /prop-types/15.7.2: + resolution: {integrity: sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: false + + /protocol-buffers-schema/3.4.0: + resolution: {integrity: sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA==} + dev: false + + /proxy-addr/2.0.6: + resolution: {integrity: sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.1.2 + ipaddr.js: 1.9.1 + dev: true + + /prr/1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + dev: true + + /pseudomap/1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true + + /psl/1.8.0: + resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} + dev: true + + /public-encrypt/4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + dependencies: + bn.js: 4.11.9 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + parse-asn1: 5.1.6 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /pump/2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pump/3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pumpify/1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + dev: true + + /punycode/1.3.2: + resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} + dev: true + + /punycode/1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + + /q/1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + dev: true + + /qs/6.5.2: + resolution: {integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==} + engines: {node: '>=0.6'} + dev: true + + /qs/6.7.0: + resolution: {integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==} + engines: {node: '>=0.6'} + dev: true + + /qs/6.9.4: + resolution: {integrity: sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==} + engines: {node: '>=0.6'} + dev: false + + /query-string/4.3.4: + resolution: {integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==} + engines: {node: '>=0.10.0'} + dependencies: + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + dev: true + + /querystring-es3/0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + dev: true + + /querystring/0.2.0: + resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: true + + /querystringify/2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + + /quickselect/1.1.1: + resolution: {integrity: sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==} + dev: false + + /quickselect/2.0.0: + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + dev: false + + /randombytes/2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /randomfill/1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /range-parser/1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: true + + /raw-body/2.4.0: + resolution: {integrity: sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.0 + http-errors: 1.7.2 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /rbush/2.0.2: + resolution: {integrity: sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==} + dependencies: + quickselect: 1.1.1 + dev: false + + /rbush/3.0.1: + resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==} + dependencies: + quickselect: 2.0.0 + dev: false + + /react-color/2.19.3: + resolution: {integrity: sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==} + peerDependencies: + react: '*' + dependencies: + '@icons/material': 0.2.4 + lodash: 4.17.20 + lodash-es: 4.17.21 + material-colors: 1.2.6 + prop-types: 15.7.2 + reactcss: 1.2.3 + tinycolor2: 1.4.2 + dev: false + + /react-dat-gui/4.0.3: + resolution: {integrity: sha512-/k78WRbTWAH7vV8Aw4zbAA9ppgwljWuWtPx/Bja1YlYOWKR1MLe7ZZVH6mZ6OK7RM7bsxdhp9KyWYlPrZq6Vnw==} + peerDependencies: + prop-types: ^15.7.2 + react: ^16.0.0 + react-dom: ^16.0.0 + dependencies: + classnames: 2.2.6 + lodash.clamp: 4.0.3 + lodash.clonedeep: 4.5.0 + lodash.isfinite: 3.3.2 + lodash.isstring: 4.0.1 + lodash.isundefined: 3.0.1 + lodash.result: 4.5.2 + lodash.set: 4.3.2 + react-color: 2.19.3 + dev: false + + /react-is/16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: false + + /reactcss/1.2.3: + resolution: {integrity: sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==} + dependencies: + lodash: 4.17.20 + dev: false + + /read-pkg-up/2.0.0: + resolution: {integrity: sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==} + engines: {node: '>=4'} + dependencies: + find-up: 2.1.0 + read-pkg: 2.0.0 + dev: true + + /read-pkg/2.0.0: + resolution: {integrity: sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==} + engines: {node: '>=4'} + dependencies: + load-json-file: 2.0.0 + normalize-package-data: 2.5.0 + path-type: 2.0.0 + dev: true + + /read-pkg/5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.0 + normalize-package-data: 2.5.0 + parse-json: 5.1.0 + type-fest: 0.6.0 + dev: true + + /readable-stream/1.1.14: + resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + dependencies: + core-util-is: 1.0.2 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: false + + /readable-stream/2.3.7: + resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + dependencies: + core-util-is: 1.0.2 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + /readable-stream/3.6.0: + resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + /readdirp/2.2.1: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} + dependencies: + graceful-fs: 4.2.6 + micromatch: 3.1.10 + readable-stream: 2.3.7 + dev: true + + /readdirp/3.5.0: + resolution: {integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.0 + dev: true + + /redeyed/0.4.4: + resolution: {integrity: sha512-pnk1vsaNLu1UAAClKsImKz9HjBvg9i8cbRqTRzJbiCjGF0fZSMqpdcA5W3juO3c4etFvTrabECkq9wjC45ZyxA==} + dependencies: + esprima: 1.0.4 + dev: false + + /reflect-metadata/0.1.13: + resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + dev: false + + /regenerate-unicode-properties/8.2.0: + resolution: {integrity: sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate/1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + + /regenerator-runtime/0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + dev: false + + /regenerator-runtime/0.13.7: + resolution: {integrity: sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==} + + /regenerator-transform/0.14.5: + resolution: {integrity: sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==} + dependencies: + '@babel/runtime': 7.12.13 + dev: true + + /regex-not/1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: true + + /regexp.prototype.flags/1.3.0: + resolution: {integrity: sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.7 + + /regexpp/2.0.1: + resolution: {integrity: sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==} + engines: {node: '>=6.5.0'} + dev: true + + /regexpp/3.1.0: + resolution: {integrity: sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==} + engines: {node: '>=8'} + dev: true + + /regexpu-core/4.7.1: + resolution: {integrity: sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 8.2.0 + regjsgen: 0.5.2 + regjsparser: 0.6.4 + unicode-match-property-ecmascript: 1.0.4 + unicode-match-property-value-ecmascript: 1.2.0 + dev: true + + /regjsgen/0.5.2: + resolution: {integrity: sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==} + dev: true + + /regjsparser/0.6.4: + resolution: {integrity: sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /regl/1.7.0: + resolution: {integrity: sha512-bEAtp/qrtKucxXSJkD4ebopFZYP0q1+3Vb2WECWv/T8yQEgKxDxJ7ztO285tAMaYZVR6mM1GgI6CCn8FROtL1w==} + dev: false + + /relateurl/0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + dev: true + + /remove-trailing-separator/1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + dev: true + + /renderkid/2.0.4: + resolution: {integrity: sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g==} + dependencies: + css-select: 1.2.0 + dom-converter: 0.2.0 + htmlparser2: 3.10.1 + lodash: 4.17.20 + strip-ansi: 3.0.1 + dev: true + + /repeat-element/1.1.3: + resolution: {integrity: sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==} + engines: {node: '>=0.10.0'} + dev: true + + /repeat-string/1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: true + + /request/2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + dependencies: + aws-sign2: 0.7.0 + aws4: 1.11.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.27 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.2 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + dev: true + + /require-directory/2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-main-filename/2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: true + + /requires-port/1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /resize-observer-polyfill/1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + dev: false + + /resolve-cwd/2.0.0: + resolution: {integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==} + engines: {node: '>=4'} + dependencies: + resolve-from: 3.0.0 + dev: true + + /resolve-from/3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + dev: true + + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-protobuf-schema/2.1.0: + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} + dependencies: + protocol-buffers-schema: 3.4.0 + dev: false + + /resolve-url/0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + dev: true + + /resolve/1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + dependencies: + is-core-module: 2.1.0 + path-parse: 1.0.6 + dev: true + + /restore-cursor/2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.3 + dev: true + + /restore-cursor/3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.3 + dev: true + + /ret/0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + dev: true + + /retry/0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: true + + /rgb-regex/1.0.1: + resolution: {integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==} + dev: true + + /rgba-regex/1.0.0: + resolution: {integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==} + dev: true + + /rimraf/2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + dependencies: + glob: 7.1.7 + dev: true + + /rimraf/2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.1.7 + dev: true + + /ripemd160/2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: true + + /robust-predicates/2.0.4: + resolution: {integrity: sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==} + dev: false + + /rollup/1.32.1: + resolution: {integrity: sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==} + hasBin: true + dependencies: + '@types/estree': 0.0.45 + '@types/node': 14.14.10 + acorn: 7.4.1 + dev: false + + /run-async/2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-queue/1.0.3: + resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} + dependencies: + aproba: 1.2.0 + dev: true + + /rw/1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + dev: false + + /rxjs/6.6.3: + resolution: {integrity: sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==} + engines: {npm: '>=2.0.0'} + dependencies: + tslib: 1.14.1 + dev: true + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + /safe-buffer/5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /safe-regex/1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + dependencies: + ret: 0.1.15 + dev: true + + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + /sass-loader/8.0.2_sass@1.29.0: + resolution: {integrity: sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==} + engines: {node: '>= 8.9.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 + sass: ^1.3.0 + webpack: ^4.36.0 || ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + clone-deep: 4.0.1 + loader-utils: 1.4.0 + neo-async: 2.6.2 + sass: 1.29.0 + schema-utils: 2.7.1 + semver: 6.3.0 + dev: true + + /sass/1.29.0: + resolution: {integrity: sha512-ZpwAUFgnvAUCdkjwPREny+17BpUj8nh5Yr6zKPGtLNTLrmtoRYIjm7njP24COhjJldjwW1dcv52Lpf4tNZVVRA==} + engines: {node: '>=8.9.0'} + hasBin: true + dependencies: + chokidar: 3.5.1 + dev: true + + /sax/1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + dev: true + + /schema-utils/1.0.0: + resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-errors: 1.0.1_ajv@6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + + /schema-utils/2.7.0: + resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.7 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + optional: true + + /schema-utils/2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.7 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + + /select-hose/2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + dev: true + + /selfsigned/1.10.8: + resolution: {integrity: sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==} + dependencies: + node-forge: 0.10.0 + dev: true + + /semver/5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + dev: true + + /semver/6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + dev: true + + /semver/7.0.0: + resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} + hasBin: true + dev: true + + /semver/7.3.5: + resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /send/0.17.1: + resolution: {integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.7.3 + mime: 1.6.0 + ms: 2.1.1 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.5.0 + dev: true + + /serialize-javascript/4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + dependencies: + randombytes: 2.1.0 + dev: true + + /serve-index/1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.7 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.27 + parseurl: 1.3.3 + dev: true + + /serve-static/1.14.1: + resolution: {integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.17.1 + dev: true + + /set-blocking/2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: true + + /set-value/2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: true + + /setimmediate/1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: true + + /setprototypeof/1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: true + + /setprototypeof/1.1.1: + resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} + dev: true + + /sha.js/2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /shallow-clone/3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: true + + /shapefile/0.6.6: + resolution: {integrity: sha512-rLGSWeK2ufzCVx05wYd+xrWnOOdSV7xNUW5/XFgx3Bc02hBkpMlrd2F1dDII7/jhWzv0MSyBFh5uJIy9hLdfuw==} + hasBin: true + dependencies: + array-source: 0.0.4 + commander: 2.20.3 + path-source: 0.1.3 + slice-source: 0.4.1 + stream-source: 0.3.5 + text-encoding: 0.6.4 + dev: false + + /sharkdown/0.1.1: + resolution: {integrity: sha512-exwooSpmo5s45lrexgz6Q0rFQM574wYIX3iDZ7RLLqOb7IAoQZu9nxlZODU972g19sR69OIpKP2cpHTzU+PHIg==} + hasBin: true + dependencies: + cardinal: 0.4.4 + minimist: 0.0.5 + split: 0.2.10 + dev: false + + /shebang-command/1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + dev: true + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex/1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: true + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shell-quote/1.7.2: + resolution: {integrity: sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==} + dev: true + + /signal-exit/3.0.3: + resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==} + dev: true + + /simple-swizzle/0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + + /simplify-geojson/1.0.4: + resolution: {integrity: sha512-vBqLzitQ57pFFtiX21QtYxMzRm10bWsTrPVjMGaDGEcDmrEwsIPK5o8FvFHh/xZHNzw947lvDwAFNk4OMhAhVw==} + hasBin: true + dependencies: + concat-stream: 1.4.11 + minimist: 1.2.5 + simplify-geometry: 0.0.2 + dev: false + + /simplify-geometry/0.0.2: + resolution: {integrity: sha512-ZEyrplkqgCqDlL7V8GbbYgTLlcnNF+MWWUdy8s8ZeJru50bnI71rDew/I+HG36QS2mPOYAq1ZjwNXxHJ8XOVBw==} + dev: false + + /skmeans/0.9.7: + resolution: {integrity: sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==} + dev: false + + /slash/1.0.0: + resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} + engines: {node: '>=0.10.0'} + dev: true + + /slash/2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} + dev: true + + /slice-ansi/2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} + dependencies: + ansi-styles: 3.2.1 + astral-regex: 1.0.0 + is-fullwidth-code-point: 2.0.0 + dev: true + + /slice-source/0.4.1: + resolution: {integrity: sha512-YiuPbxpCj4hD9Qs06hGAz/OZhQ0eDuALN0lRWJez0eD/RevzKqGdUx1IOMUnXgpr+sXZLq3g8ERwbAH0bCb8vg==} + dev: false + + /snapdragon-node/2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: true + + /snapdragon-util/3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /snapdragon/0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + dev: true + + /sockjs-client/1.4.0: + resolution: {integrity: sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==} + dependencies: + debug: 3.2.7 + eventsource: 1.0.7 + faye-websocket: 0.11.3 + inherits: 2.0.4 + json3: 3.3.3 + url-parse: 1.4.7 + dev: true + + /sockjs/0.3.20: + resolution: {integrity: sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==} + dependencies: + faye-websocket: 0.10.0 + uuid: 3.4.0 + websocket-driver: 0.6.5 + dev: true + + /sort-asc/0.1.0: + resolution: {integrity: sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw==} + engines: {node: '>=0.10.0'} + dev: false + + /sort-desc/0.1.1: + resolution: {integrity: sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw==} + engines: {node: '>=0.10.0'} + dev: false + + /sort-keys/1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-obj: 1.1.0 + dev: true + + /sort-object/0.3.2: + resolution: {integrity: sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==} + engines: {node: '>=0.10.0'} + dependencies: + sort-asc: 0.1.0 + sort-desc: 0.1.1 + dev: false + + /source-list-map/2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + dev: true + + /source-map-resolve/0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + 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 + dev: true + + /source-map-support/0.5.19: + resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} + dependencies: + buffer-from: 1.1.1 + source-map: 0.6.1 + dev: true + + /source-map-url/0.4.0: + resolution: {integrity: sha512-liJwHPI9x9d9w5WSIjM58MqGmmb7XzNqwdUA3kSBQ4lmDngexlKwawGzK3J1mKXi6+sysoMDlpVyZh9sv5vRfw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + dev: true + + /source-map/0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map/0.7.3: + resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} + engines: {node: '>= 8'} + dev: true + + /spdx-correct/3.1.1: + resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.6 + dev: true + + /spdx-exceptions/2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse/3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.6 + dev: true + + /spdx-license-ids/3.0.6: + resolution: {integrity: sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==} + dev: true + + /spdy-transport/3.0.0_supports-color@6.1.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.1_supports-color@6.1.0 + detect-node: 2.0.4 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.0 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: true + + /spdy/4.0.2_supports-color@6.1.0: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + dependencies: + debug: 4.3.1_supports-color@6.1.0 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0_supports-color@6.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /splaytree/3.1.0: + resolution: {integrity: sha512-gvUGR7xnOy0fLKTCxDeUZYgU/I1Tdf8M/lM1Qrf8L2TIOR5ipZjGk02uYcdv0o2x7WjVRgpm3iS2clLyuVAt0Q==} + dev: false + + /split-string/3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + dev: true + + /split/0.2.10: + resolution: {integrity: sha512-e0pKq+UUH2Xq/sXbYpZBZc3BawsfDZ7dgv+JtRTUPNcvF5CMR4Y9cvJqkMY0MoxWzTHvZuz1beg6pNEKlszPiQ==} + dependencies: + through: 2.3.8 + dev: false + + /sprintf-js/1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /sshpk/1.16.1: + resolution: {integrity: sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.4 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /ssri/6.0.1: + resolution: {integrity: sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==} + dependencies: + figgy-pudding: 3.5.2 + dev: true + + /ssri/7.1.0: + resolution: {integrity: sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==} + engines: {node: '>= 8'} + dependencies: + figgy-pudding: 3.5.2 + minipass: 3.1.3 + dev: true + + /stable/0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + dev: true + + /stackframe/1.2.0: + resolution: {integrity: sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==} + dev: true + + /static-extend/0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: true + + /stats.js/0.17.0: + resolution: {integrity: sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==} + dev: false + + /statuses/1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: true + + /stream-browserify/2.0.2: + resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /stream-each/1.2.3: + resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} + dependencies: + end-of-stream: 1.4.4 + stream-shift: 1.0.1 + dev: true + + /stream-http/2.8.3: + resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.7 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + dev: true + + /stream-shift/1.0.1: + resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + dev: true + + /stream-source/0.3.5: + resolution: {integrity: sha512-ZuEDP9sgjiAwUVoDModftG0JtYiLUV8K4ljYD1VyUMRWtbVf92474o4kuuul43iZ8t/hRuiDAx1dIJSvirrK/g==} + dev: false + + /strict-uri-encode/1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + dev: true + + /string-width/2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + dev: true + + /string-width/3.1.0: + resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} + engines: {node: '>=6'} + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + dev: true + + /string-width/4.2.0: + resolution: {integrity: sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.0 + dev: true + + /string.prototype.trimend/1.0.3: + resolution: {integrity: sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==} + dependencies: + call-bind: 1.0.0 + define-properties: 1.1.3 + + /string.prototype.trimstart/1.0.3: + resolution: {integrity: sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==} + dependencies: + call-bind: 1.0.0 + define-properties: 1.1.3 + + /string_decoder/0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + dev: false + + /string_decoder/1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + + /string_decoder/1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + + /strip-ansi/3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /strip-ansi/4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + dependencies: + ansi-regex: 3.0.0 + dev: true + + /strip-ansi/5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + dependencies: + ansi-regex: 4.1.0 + dev: true + + /strip-ansi/6.0.0: + resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.0 + dev: true + + /strip-bom/3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-eof/1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-final-newline/2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-indent/2.0.0: + resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==} + engines: {node: '>=4'} + dev: true + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /stylehacks/4.0.3: + resolution: {integrity: sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==} + engines: {node: '>=6.9.0'} + dependencies: + browserslist: 4.14.7 + postcss: 7.0.35 + postcss-selector-parser: 3.1.2 + dev: true + + /supercluster/7.1.2: + resolution: {integrity: sha512-bGA0pk3DYMjLTY1h+rbh0imi/I8k/Lg0rzdBGfyQs0Xkiix7jK2GUmH1qSD8+jq6U0Vu382QHr3+rbbiHqdKJA==} + dependencies: + kdbush: 3.0.0 + dev: false + + /supports-color/2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + dev: true + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/6.1.0: + resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} + engines: {node: '>=6'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /svg-tags/1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + dev: true + + /svgo/1.3.2: + resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==} + engines: {node: '>=4.0.0'} + deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. + hasBin: true + dependencies: + chalk: 2.4.2 + coa: 2.0.2 + css-select: 2.1.0 + css-select-base-adapter: 0.1.1 + css-tree: 1.0.0-alpha.37 + csso: 4.1.1 + js-yaml: 3.14.0 + mkdirp: 0.5.5 + object.values: 1.1.1 + sax: 1.2.4 + stable: 0.1.8 + unquote: 1.1.1 + util.promisify: 1.0.1 + dev: true + + /table/5.4.6: + resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} + engines: {node: '>=6.0.0'} + dependencies: + ajv: 6.12.6 + lodash: 4.17.20 + slice-ansi: 2.1.0 + string-width: 3.1.0 + dev: true + + /tapable/0.1.10: + resolution: {integrity: sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==} + engines: {node: '>=0.6'} + dev: true + + /tapable/1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + dev: true + + /terser-webpack-plugin/1.4.5_webpack@4.44.2: + resolution: {integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==} + engines: {node: '>= 6.9.0'} + peerDependencies: + webpack: ^4.0.0 + dependencies: + cacache: 12.0.4 + find-cache-dir: 2.1.0 + is-wsl: 1.1.0 + schema-utils: 1.0.0 + serialize-javascript: 4.0.0 + source-map: 0.6.1 + terser: 4.8.0 + webpack: 4.44.2 + webpack-sources: 1.4.3 + worker-farm: 1.7.0 + dev: true + + /terser-webpack-plugin/2.3.8_webpack@4.44.2: + resolution: {integrity: sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==} + engines: {node: '>= 8.9.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + cacache: 13.0.1 + find-cache-dir: 3.3.1 + jest-worker: 25.5.0 + p-limit: 2.3.0 + schema-utils: 2.7.1 + serialize-javascript: 4.0.0 + source-map: 0.6.1 + terser: 4.8.0 + webpack: 4.44.2 + webpack-sources: 1.4.3 + dev: true + + /terser/4.8.0: + resolution: {integrity: sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + commander: 2.20.3 + source-map: 0.6.1 + source-map-support: 0.5.19 + dev: true + + /text-encoding/0.6.4: + resolution: {integrity: sha512-hJnc6Qg3dWoOMkqP53F0dzRIgtmsAge09kxUIqGrEUS4qr5rWLckGYaQAVr+opBrIMRErGgy6f5aPnyPpyGRfg==} + deprecated: no longer maintained + dev: false + + /text-table/0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thenify-all/1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify/3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /thread-loader/2.1.3_webpack@4.44.2: + resolution: {integrity: sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==} + engines: {node: '>= 6.9.0 <7.0.0 || >= 8.9.0'} + peerDependencies: + webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 + dependencies: + loader-runner: 2.4.0 + loader-utils: 1.4.0 + neo-async: 2.6.2 + webpack: 4.44.2 + dev: true + + /three-js-csg/72.0.0: + resolution: {integrity: sha512-Fr2pWWaHN1PPgjVsA7P2VZOHrMMXebQmJlasxGYebbSwURRwwi/vlayI69D+3qW39eNXQ6j+iO1VEOVC41mVFQ==} + dev: false + + /three-orbitcontrols/2.110.3_three@0.122.0: + resolution: {integrity: sha512-BNNbksJwbN3/MmT0X/gjz5ZCchm7bjk26SUdtJYRxfEYjDfkb/0PeUTHE/KuyJ5vb/owK3mojyy3vcqDx99sRA==} + deprecated: | + three-js exposes real modules now via three/examples/jsm/... + for example to import Orbit, do + import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' + peerDependencies: + three: '>= 0.110.0' + dependencies: + three: 0.122.0 + dev: false + + /three/0.122.0: + resolution: {integrity: sha512-bgYMo0WdaQhf7DhLE8OSNN/rVFO5J4K1A2VeeKqoV4MjjuHjfCP6xLpg8Xedhns7NlEnN3sZ6VJROq19Qyl6Sg==} + dev: false + + /throttle-debounce/1.1.0: + resolution: {integrity: sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==} + engines: {node: '>=4'} + dev: false + + /through/2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + /through2/2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.7 + xtend: 4.0.2 + dev: true + + /thunky/1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + dev: true + + /timers-browserify/2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + dependencies: + setimmediate: 1.0.5 + dev: true + + /timsort/0.3.0: + resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} + dev: true + + /tinycolor2/1.4.2: + resolution: {integrity: sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==} + dev: false + + /tinyqueue/2.0.3: + resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==} + dev: false + + /tmp/0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /to-arraybuffer/1.0.1: + resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} + dev: true + + /to-fast-properties/2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-object-path/0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /to-regex-range/2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: true + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /to-regex/3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: true + + /toidentifier/1.0.0: + resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} + engines: {node: '>=0.6'} + dev: true + + /topojson-client/3.0.0: + resolution: {integrity: sha512-2phZ98wg/iKvsWxbB6JQcq0/N0f+sRx8ZogdvjCg+CjaJdmV0knP0OQwK5XbgnytAPx5lPZk41kiWpgH2w9FHg==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: false + + /topojson-client/3.1.0: + resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: false + + /topojson-server/3.0.0: + resolution: {integrity: sha512-UhhwQk4e2+lwhAVYkja3J5nQHQmKwORDuIQPkMnFFZFcLqWKLQWI3u7fZWtNIXTElBjTYdBUL1kzi1+oS/qDQw==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: false + + /topojson-server/3.0.1: + resolution: {integrity: sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: false + + /topojson-simplify/3.0.2: + resolution: {integrity: sha512-gyYSVRt4jO/0RJXKZQPzTDQRWV+D/nOfiljNUv0HBXslFLtq3yxRHrl7jbrjdbda5Ytdr7M8BZUI4OxU7tnbRQ==} + hasBin: true + dependencies: + commander: 2.20.3 + topojson-client: 3.1.0 + dev: false + + /topojson/3.0.2: + resolution: {integrity: sha512-u3zeuL6WEVL0dmsRn7uHZKc4Ao4gpW3sORUv+N3ezLTvY3JdCuyg0hvpWiIfFw8p/JwVN++SvAsFgcFEeR15rQ==} + deprecated: Use topojson-client, topojson-server or topojson-simplify directly. + hasBin: true + dependencies: + topojson-client: 3.0.0 + topojson-server: 3.0.0 + topojson-simplify: 3.0.2 + dev: false + + /toposort/1.0.7: + resolution: {integrity: sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==} + dev: true + + /tough-cookie/2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.8.0 + punycode: 2.1.1 + dev: true + + /tryer/1.0.1: + resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==} + dev: true + + /ts-loader/6.2.2_typescript@4.2.4: + resolution: {integrity: sha512-HDo5kXZCBml3EUPcc7RlZOV/JGlLHwppTLEHb3SHnr5V7NXD4klMEkrhJe5wgRbaWsSXi+Y1SIBN/K9B6zWGWQ==} + engines: {node: '>=8.6'} + peerDependencies: + typescript: '*' + dependencies: + chalk: 2.4.2 + enhanced-resolve: 4.5.0 + loader-utils: 1.4.0 + micromatch: 4.0.4 + semver: 6.3.0 + typescript: 4.2.4 + dev: true + + /ts-pnp/1.2.0_typescript@4.2.4: + resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} + engines: {node: '>=6'} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 4.2.4 + dev: true + + /tsconfig-paths/3.9.0: + resolution: {integrity: sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.1 + minimist: 1.2.5 + strip-bom: 3.0.0 + dev: true + + /tslib/1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + /tslib/2.2.0: + resolution: {integrity: sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==} + dev: false + + /tslib/2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + dev: false + + /tslint/5.20.1_typescript@4.2.4: + resolution: {integrity: sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==} + engines: {node: '>=4.8.0'} + hasBin: true + peerDependencies: + typescript: '>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev' + dependencies: + '@babel/code-frame': 7.12.13 + builtin-modules: 1.1.1 + chalk: 2.4.2 + commander: 2.20.3 + diff: 4.0.2 + glob: 7.1.7 + js-yaml: 3.14.0 + minimatch: 3.0.4 + mkdirp: 0.5.5 + resolve: 1.19.0 + semver: 5.7.1 + tslib: 1.14.1 + tsutils: 2.29.0_typescript@4.2.4 + typescript: 4.2.4 + dev: true + + /tsutils/2.29.0_typescript@4.2.4: + resolution: {integrity: sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==} + peerDependencies: + typescript: '>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev' + dependencies: + tslib: 1.14.1 + typescript: 4.2.4 + dev: true + + /tsutils/3.21.0_typescript@4.2.4: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.2.4 + dev: true + + /tty-browserify/0.0.0: + resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} + dev: true + + /tunnel-agent/0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /turf-jsts/1.2.3: + resolution: {integrity: sha512-Ja03QIJlPuHt4IQ2FfGex4F4JAr8m3jpaHbFbQrgwr7s7L6U8ocrHiF3J1+wf9jzhGKxvDeaCAnGDot8OjGFyA==} + dev: false + + /tweetnacl/0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + dev: true + + /type-check/0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + dev: true + + /type-fest/0.11.0: + resolution: {integrity: sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==} + engines: {node: '>=8'} + dev: true + + /type-fest/0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest/0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + + /type-is/1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.27 + dev: true + + /typedarray/0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + /typescript/4.2.4: + resolution: {integrity: sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /uglify-js/3.4.10: + resolution: {integrity: sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==} + engines: {node: '>=0.8.0'} + hasBin: true + dependencies: + commander: 2.19.0 + source-map: 0.6.1 + dev: true + + /unicode-canonical-property-names-ecmascript/1.0.4: + resolution: {integrity: sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript/1.0.4: + resolution: {integrity: sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 1.0.4 + unicode-property-aliases-ecmascript: 1.1.0 + dev: true + + /unicode-match-property-value-ecmascript/1.2.0: + resolution: {integrity: sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==} + engines: {node: '>=4'} + dev: true + + /unicode-property-aliases-ecmascript/1.1.0: + resolution: {integrity: sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==} + engines: {node: '>=4'} + dev: true + + /union-value/1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: true + + /uniq/1.0.1: + resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} + dev: true + + /uniqs/2.0.0: + resolution: {integrity: sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==} + dev: true + + /unique-filename/1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + dependencies: + unique-slug: 2.0.2 + dev: true + + /unique-slug/2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + dependencies: + imurmurhash: 0.1.4 + dev: true + + /universalify/0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify/2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + optional: true + + /unpipe/1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + + /unquote/1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + dev: true + + /unset-value/1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: true + + /upath/1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + dev: true + + /upper-case/1.1.3: + resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} + dev: true + + /uri-js/4.4.0: + resolution: {integrity: sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==} + dependencies: + punycode: 2.1.1 + + /urix/0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: true + + /url-loader/2.3.0_file-loader@4.3.0+webpack@4.44.2: + resolution: {integrity: sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==} + engines: {node: '>= 8.9.0'} + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 + peerDependenciesMeta: + file-loader: + optional: true + dependencies: + file-loader: 4.3.0_webpack@4.44.2 + loader-utils: 1.4.0 + mime: 2.4.6 + schema-utils: 2.7.1 + webpack: 4.44.2 + dev: true + + /url-parse/1.4.7: + resolution: {integrity: sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /url/0.11.0: + resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==} + dependencies: + punycode: 1.3.2 + querystring: 0.2.0 + dev: true + + /use/3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + dev: true + + /util-deprecate/1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /util.promisify/1.0.0: + resolution: {integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==} + dependencies: + define-properties: 1.1.3 + object.getownpropertydescriptors: 2.1.0 + dev: true + + /util.promisify/1.0.1: + resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.7 + has-symbols: 1.0.1 + object.getownpropertydescriptors: 2.1.0 + dev: true + + /util/0.10.3: + resolution: {integrity: sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==} + dependencies: + inherits: 2.0.1 + dev: true + + /util/0.11.1: + resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} + dependencies: + inherits: 2.0.3 + dev: true + + /utila/0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + dev: true + + /utils-merge/1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: true + + /uuid/3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: true + + /v8-compile-cache/2.2.0: + resolution: {integrity: sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==} + dev: true + + /validate-npm-package-license/3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + + /vary/1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /vendors/1.0.4: + resolution: {integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==} + dev: true + + /verror/1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.4.0 + dev: true + + /viewport-mercator-project/6.2.3: + resolution: {integrity: sha512-QQb0/qCLlP4DdfbHHSWVYXpghB2wkLIiiZQnoelOB59mXKQSyZVxjreq1S+gaBJFpcGkWEcyVtre0+2y2DTl/Q==} + dependencies: + '@babel/runtime': 7.12.13 + gl-matrix: 3.3.0 + dev: false + + /vm-browserify/1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + dev: true + + /vt-pbf/3.1.1: + resolution: {integrity: sha512-pHjWdrIoxurpmTcbfBWXaPwSmtPAHS105253P1qyEfSTV2HJddqjM+kIHquaT/L6lVJIk9ltTGc0IxR/G47hYA==} + dependencies: + '@mapbox/point-geometry': 0.1.0 + '@mapbox/vector-tile': 1.3.1 + pbf: 3.2.1 + dev: false + + /vue-count-to/1.0.13: + resolution: {integrity: sha512-6R4OVBVNtQTlcbXu6SJ8ENR35M2/CdWt3Jmv57jOUM+1ojiFmjVGvZPH8DfHpMDSA+ITs+EW5V6qthADxeyYOQ==} + dev: false + + /vue-eslint-parser/7.1.1_eslint@6.8.0: + resolution: {integrity: sha512-8FdXi0gieEwh1IprIBafpiJWcApwrU+l2FEj8c1HtHFdNXMd0+2jUSjBVmcQYohf/E72irwAXEXLga6TQcB3FA==} + engines: {node: '>=8.10'} + peerDependencies: + eslint: '>=5.0.0' + dependencies: + debug: 4.3.1 + eslint: 6.8.0 + eslint-scope: 5.1.1 + eslint-visitor-keys: 1.3.0 + espree: 6.2.1 + esquery: 1.3.1 + lodash: 4.17.20 + transitivePeerDependencies: + - supports-color + dev: true + + /vue-hot-reload-api/2.3.4: + resolution: {integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==} + dev: true + + /vue-loader/15.9.5_e6f9754d45536372aa6e5c6b320144db: + resolution: {integrity: sha512-oeMOs2b5o5gRqkxfds10bCx6JeXYTwivRgbb8hzOrcThD2z1+GqEKE3EX9A2SGbsYDf4rXwRg6D5n1w0jO5SwA==} + peerDependencies: + cache-loader: '*' + css-loader: '*' + vue-template-compiler: '*' + webpack: ^3.0.0 || ^4.1.0 || ^5.0.0-0 + peerDependenciesMeta: + cache-loader: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@vue/component-compiler-utils': 3.2.0 + cache-loader: 4.1.0_webpack@4.44.2 + css-loader: 3.6.0_webpack@4.44.2 + hash-sum: 1.0.2 + loader-utils: 1.4.0 + vue-hot-reload-api: 2.3.4 + vue-style-loader: 4.1.2 + vue-template-compiler: 2.6.12 + webpack: 4.44.2 + dev: true + + /vue-loader/16.8.3_webpack@4.44.2: + resolution: {integrity: sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==} + requiresBuild: true + peerDependencies: + webpack: ^4.1.0 || ^5.0.0-0 + dependencies: + chalk: 4.1.0 + hash-sum: 2.0.0 + loader-utils: 2.0.0 + webpack: 4.44.2 + dev: true + optional: true + + /vue-router/3.5.1: + resolution: {integrity: sha512-RRQNLT8Mzr8z7eL4p7BtKvRaTSGdCbTy2+Mm5HTJvLGYSSeG9gDzNasJPP/yOYKLy+/cLG/ftrqq5fvkFwBJEw==} + dev: false + + /vue-seamless-scroll/1.1.21: + resolution: {integrity: sha512-O6n1Ly4Jw8sKaDuibLUX/QEjXRrMX2uHoqqIBBEM/Nyn8pQZpn2VdJDObBtnAS9F0cD8ExDq0mbZgZX6MXzXqQ==} + dependencies: + comutils: 1.1.19 + dev: false + + /vue-style-loader/4.1.2: + resolution: {integrity: sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==} + dependencies: + hash-sum: 1.0.2 + loader-utils: 1.4.0 + dev: true + + /vue-template-compiler/2.6.12: + resolution: {integrity: sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-template-es2015-compiler/1.9.1: + resolution: {integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==} + dev: true + + /vue/2.6.12: + resolution: {integrity: sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==} + dev: false + + /vuex/3.6.0_vue@2.6.12: + resolution: {integrity: sha512-W74OO2vCJPs9/YjNjW8lLbj+jzT24waTo2KShI8jLvJW8OaIkgb3wuAMA7D+ZiUxDOx3ubwSZTaJBip9G8a3aQ==} + peerDependencies: + vue: ^2.0.0 + dependencies: + vue: 2.6.12 + dev: false + + /watchpack-chokidar2/2.0.1: + resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==} + requiresBuild: true + dependencies: + chokidar: 2.1.8 + dev: true + optional: true + + /watchpack/1.7.5: + resolution: {integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==} + dependencies: + graceful-fs: 4.2.6 + neo-async: 2.6.2 + optionalDependencies: + chokidar: 3.5.1 + watchpack-chokidar2: 2.0.1 + dev: true + + /wbuf/1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + dependencies: + minimalistic-assert: 1.0.1 + dev: true + + /wcwidth/1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.3 + dev: true + + /webfont-matcher/1.1.0: + resolution: {integrity: sha512-ov8lMvF9wi4PD7fK2Axn9PQEpO9cYI0fIoGqErwd+wi8xacFFDmX114D5Q2Lw0Wlgmb+Qw/dKI2KTtimrJf85g==} + dev: false + + /webpack-bundle-analyzer/3.9.0: + resolution: {integrity: sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==} + engines: {node: '>= 6.14.4'} + hasBin: true + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + bfj: 6.1.2 + chalk: 2.4.2 + commander: 2.20.3 + ejs: 2.7.4 + express: 4.17.1 + filesize: 3.6.1 + gzip-size: 5.1.1 + lodash: 4.17.20 + mkdirp: 0.5.5 + opener: 1.5.2 + ws: 6.2.1 + dev: true + + /webpack-chain/6.5.1: + resolution: {integrity: sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==} + engines: {node: '>=8'} + dependencies: + deepmerge: 1.5.2 + javascript-stringify: 2.0.1 + dev: true + + /webpack-dev-middleware/3.7.2_webpack@4.44.2: + resolution: {integrity: sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==} + engines: {node: '>= 6'} + peerDependencies: + webpack: ^4.0.0 + dependencies: + memory-fs: 0.4.1 + mime: 2.4.6 + mkdirp: 0.5.5 + range-parser: 1.2.1 + webpack: 4.44.2 + webpack-log: 2.0.0 + dev: true + + /webpack-dev-server/3.11.0_webpack@4.44.2: + resolution: {integrity: sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==} + engines: {node: '>= 6.11.5'} + hasBin: true + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + ansi-html: 0.0.7 + bonjour: 3.5.0 + chokidar: 2.1.8 + compression: 1.7.4 + connect-history-api-fallback: 1.6.0 + debug: 4.3.1_supports-color@6.1.0 + del: 4.1.1 + express: 4.17.1 + html-entities: 1.3.1 + http-proxy-middleware: 0.19.1 + import-local: 2.0.0 + internal-ip: 4.3.0 + ip: 1.1.5 + is-absolute-url: 3.0.3 + killable: 1.0.1 + loglevel: 1.7.1 + opn: 5.5.0 + p-retry: 3.0.1 + portfinder: 1.0.28 + schema-utils: 1.0.0 + selfsigned: 1.10.8 + semver: 6.3.0 + serve-index: 1.9.1 + sockjs: 0.3.20 + sockjs-client: 1.4.0 + spdy: 4.0.2_supports-color@6.1.0 + strip-ansi: 3.0.1 + supports-color: 6.1.0 + url: 0.11.0 + webpack: 4.44.2 + webpack-dev-middleware: 3.7.2_webpack@4.44.2 + webpack-log: 2.0.0 + ws: 6.2.1 + yargs: 13.3.2 + dev: true + + /webpack-log/2.0.0: + resolution: {integrity: sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==} + engines: {node: '>= 6'} + dependencies: + ansi-colors: 3.2.4 + uuid: 3.4.0 + dev: true + + /webpack-merge/4.2.2: + resolution: {integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==} + dependencies: + lodash: 4.17.20 + dev: true + + /webpack-sources/1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + dev: true + + /webpack/4.44.2: + resolution: {integrity: sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==} + engines: {node: '>=6.11.5'} + hasBin: true + peerDependencies: + webpack-cli: '*' + webpack-command: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + webpack-command: + optional: true + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/wasm-edit': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + acorn: 6.4.2 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + chrome-trace-event: 1.0.2 + enhanced-resolve: 4.5.0 + eslint-scope: 4.0.3 + json-parse-better-errors: 1.0.2 + loader-runner: 2.4.0 + loader-utils: 1.4.0 + memory-fs: 0.4.1 + micromatch: 3.1.10 + mkdirp: 0.5.5 + neo-async: 2.6.2 + node-libs-browser: 2.2.1 + schema-utils: 1.0.0 + tapable: 1.1.3 + terser-webpack-plugin: 1.4.5_webpack@4.44.2 + watchpack: 1.7.5 + webpack-sources: 1.4.3 + dev: true + + /websocket-driver/0.6.5: + resolution: {integrity: sha512-oBx6ZM1Gs5q2jwZuSN/Qxyy/fbgomV8+vqsmipaPKB/74hjHlKuM07jNmRhn4qa2AdUwsgxrltq+gaPsHgcl0Q==} + engines: {node: '>=0.6.0'} + dependencies: + websocket-extensions: 0.1.4 + dev: true + + /websocket-driver/0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + dependencies: + http-parser-js: 0.5.2 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: true + + /websocket-extensions/0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: true + + /wgs84/0.0.0: + resolution: {integrity: sha512-ANHlY4Rb5kHw40D0NJ6moaVfOCMrp9Gpd1R/AIQYg2ko4/jzcJ+TVXYYF6kXJqQwITvEZP4yEthjM7U6rYlljQ==} + dev: false + + /which-module/2.0.0: + resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} + dev: true + + /which/1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true + + /worker-farm/1.7.0: + resolution: {integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==} + dependencies: + errno: 0.1.7 + dev: true + + /worker-rpc/0.1.1: + resolution: {integrity: sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==} + dependencies: + microevent.ts: 0.1.1 + dev: true + + /wrap-ansi/5.1.0: + resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} + engines: {node: '>=6'} + dependencies: + ansi-styles: 3.2.1 + string-width: 3.1.0 + strip-ansi: 5.2.0 + dev: true + + /wrap-ansi/6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.0 + strip-ansi: 6.0.0 + dev: true + + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write/1.0.3: + resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} + engines: {node: '>=4'} + dependencies: + mkdirp: 0.5.5 + dev: true + + /ws/6.2.1: + resolution: {integrity: sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==} + dependencies: + async-limiter: 1.0.1 + dev: true + + /xtend/4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: true + + /y18n/4.0.0: + resolution: {integrity: sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==} + dev: true + + /yallist/2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true + + /yallist/3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + optional: true + + /yargs-parser/13.1.2: + resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser/18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs/13.3.2: + resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} + dependencies: + cliui: 5.0.0 + find-up: 3.0.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 3.1.0 + which-module: 2.0.0 + y18n: 4.0.0 + yargs-parser: 13.1.2 + dev: true + + /yargs/15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.0 + which-module: 2.0.0 + y18n: 4.0.0 + yargs-parser: 18.1.3 + dev: true + + /yorkie/2.0.0: + resolution: {integrity: sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==} + engines: {node: '>=4'} + requiresBuild: true + dependencies: + execa: 0.8.0 + is-ci: 1.2.1 + normalize-path: 1.0.0 + strip-indent: 2.0.0 + dev: true + + /zrender/4.3.2: + resolution: {integrity: sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g==} + dev: false + + /zrender/5.3.1: + resolution: {integrity: sha512-7olqIjy0gWfznKr6vgfnGBk7y4UtdMvdwFmK92vVQsQeDPyzkHW1OlrLEKg6GHz1W5ePf0FeN1q2vkl/HFqhXw==} + dependencies: + tslib: 2.3.0 + dev: false diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..2a8a066 --- /dev/null +++ b/public/index.html @@ -0,0 +1,23 @@ + + + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + + + + +
+ + + + \ No newline at end of file diff --git a/public/static/img/bg_login.png b/public/static/img/bg_login.png new file mode 100644 index 0000000..788afba Binary files /dev/null and b/public/static/img/bg_login.png differ diff --git a/public/static/img/jg.png b/public/static/img/jg.png new file mode 100644 index 0000000..bfb9443 Binary files /dev/null and b/public/static/img/jg.png differ diff --git a/public/static/img/login_bg_center.png b/public/static/img/login_bg_center.png new file mode 100644 index 0000000..51a8a50 Binary files /dev/null and b/public/static/img/login_bg_center.png differ diff --git a/public/static/img/logo.png b/public/static/img/logo.png new file mode 100644 index 0000000..777877f Binary files /dev/null and b/public/static/img/logo.png differ diff --git a/public/static/img/resource/center_bg.png b/public/static/img/resource/center_bg.png new file mode 100644 index 0000000..99d68a7 Binary files /dev/null and b/public/static/img/resource/center_bg.png differ diff --git a/public/static/img/resource/desktop.png b/public/static/img/resource/desktop.png new file mode 100644 index 0000000..b8b83e8 Binary files /dev/null and b/public/static/img/resource/desktop.png differ diff --git a/public/static/img/resource/h3c.png b/public/static/img/resource/h3c.png new file mode 100644 index 0000000..06c794a Binary files /dev/null and b/public/static/img/resource/h3c.png differ diff --git a/public/static/img/resource/huawei.png b/public/static/img/resource/huawei.png new file mode 100644 index 0000000..0c236e7 Binary files /dev/null and b/public/static/img/resource/huawei.png differ diff --git a/public/static/img/resource/item_bg.png b/public/static/img/resource/item_bg.png new file mode 100644 index 0000000..fdd3b79 Binary files /dev/null and b/public/static/img/resource/item_bg.png differ diff --git a/public/static/img/resource/sip.png b/public/static/img/resource/sip.png new file mode 100644 index 0000000..f8600ee Binary files /dev/null and b/public/static/img/resource/sip.png differ diff --git a/public/static/img/resource/tianyi.png b/public/static/img/resource/tianyi.png new file mode 100644 index 0000000..3941a97 Binary files /dev/null and b/public/static/img/resource/tianyi.png differ diff --git a/public/static/img/room/air.png b/public/static/img/room/air.png new file mode 100644 index 0000000..62ad9c3 Binary files /dev/null and b/public/static/img/room/air.png differ diff --git a/public/static/img/room/switch.png b/public/static/img/room/switch.png new file mode 100644 index 0000000..c6e6246 Binary files /dev/null and b/public/static/img/room/switch.png differ diff --git a/public/static/img/room/ups.png b/public/static/img/room/ups.png new file mode 100644 index 0000000..6ff1077 Binary files /dev/null and b/public/static/img/room/ups.png differ diff --git a/public/static/img/room_bg_item.png b/public/static/img/room_bg_item.png new file mode 100644 index 0000000..58f1028 Binary files /dev/null and b/public/static/img/room_bg_item.png differ diff --git a/public/static/img/room_title.png b/public/static/img/room_title.png new file mode 100644 index 0000000..25f5ade Binary files /dev/null and b/public/static/img/room_title.png differ diff --git a/public/static/img/shortcut.png b/public/static/img/shortcut.png new file mode 100644 index 0000000..b540384 Binary files /dev/null and b/public/static/img/shortcut.png differ diff --git a/public/static/img/sip/bg.png b/public/static/img/sip/bg.png new file mode 100644 index 0000000..7d47c04 Binary files /dev/null and b/public/static/img/sip/bg.png differ diff --git a/public/static/img/sip/bg_bottom.png b/public/static/img/sip/bg_bottom.png new file mode 100644 index 0000000..6320ab8 Binary files /dev/null and b/public/static/img/sip/bg_bottom.png differ diff --git a/public/static/img/sip/card_bg.png b/public/static/img/sip/card_bg.png new file mode 100644 index 0000000..96c1d06 Binary files /dev/null and b/public/static/img/sip/card_bg.png differ diff --git a/public/static/img/sip/cpu.png b/public/static/img/sip/cpu.png new file mode 100644 index 0000000..f2b2f8f Binary files /dev/null and b/public/static/img/sip/cpu.png differ diff --git a/public/static/img/sip/mem.png b/public/static/img/sip/mem.png new file mode 100644 index 0000000..3ef997b Binary files /dev/null and b/public/static/img/sip/mem.png differ diff --git a/public/static/img/sip/storage.png b/public/static/img/sip/storage.png new file mode 100644 index 0000000..0082662 Binary files /dev/null and b/public/static/img/sip/storage.png differ diff --git a/public/static/img/sip/vm.png b/public/static/img/sip/vm.png new file mode 100644 index 0000000..327621c Binary files /dev/null and b/public/static/img/sip/vm.png differ diff --git a/public/static/img/three_room/air.png b/public/static/img/three_room/air.png new file mode 100644 index 0000000..672ae18 Binary files /dev/null and b/public/static/img/three_room/air.png differ diff --git a/public/static/img/three_room/alarm.png b/public/static/img/three_room/alarm.png new file mode 100644 index 0000000..a4102da Binary files /dev/null and b/public/static/img/three_room/alarm.png differ diff --git a/public/static/img/three_room/crate.jpg b/public/static/img/three_room/crate.jpg new file mode 100644 index 0000000..4026339 Binary files /dev/null and b/public/static/img/three_room/crate.jpg differ diff --git a/public/static/img/three_room/door_in.png b/public/static/img/three_room/door_in.png new file mode 100644 index 0000000..323980b Binary files /dev/null and b/public/static/img/three_room/door_in.png differ diff --git a/public/static/img/three_room/door_out.png b/public/static/img/three_room/door_out.png new file mode 100644 index 0000000..cee9e27 Binary files /dev/null and b/public/static/img/three_room/door_out.png differ diff --git a/public/static/img/three_room/door_top.jpg b/public/static/img/three_room/door_top.jpg new file mode 100644 index 0000000..0972eac Binary files /dev/null and b/public/static/img/three_room/door_top.jpg differ diff --git a/public/static/img/three_room/floor.jpg b/public/static/img/three_room/floor.jpg new file mode 100644 index 0000000..a83f1c3 Binary files /dev/null and b/public/static/img/three_room/floor.jpg differ diff --git a/public/static/img/three_room/item_select.png b/public/static/img/three_room/item_select.png new file mode 100644 index 0000000..167d863 Binary files /dev/null and b/public/static/img/three_room/item_select.png differ diff --git a/public/static/img/three_room/menu_bg.png b/public/static/img/three_room/menu_bg.png new file mode 100644 index 0000000..a334a48 Binary files /dev/null and b/public/static/img/three_room/menu_bg.png differ diff --git a/public/static/img/three_room/poster.jpg b/public/static/img/three_room/poster.jpg new file mode 100644 index 0000000..6ae4599 Binary files /dev/null and b/public/static/img/three_room/poster.jpg differ diff --git a/public/static/img/three_room/poster.png b/public/static/img/three_room/poster.png new file mode 100644 index 0000000..10a7fcc Binary files /dev/null and b/public/static/img/three_room/poster.png differ diff --git a/public/static/img/three_room/rack.png b/public/static/img/three_room/rack.png new file mode 100644 index 0000000..0b5d645 Binary files /dev/null and b/public/static/img/three_room/rack.png differ diff --git a/public/static/img/three_room/rack_door_back.jpg b/public/static/img/three_room/rack_door_back.jpg new file mode 100644 index 0000000..59f2e37 Binary files /dev/null and b/public/static/img/three_room/rack_door_back.jpg differ diff --git a/public/static/img/three_room/rack_door_front.png b/public/static/img/three_room/rack_door_front.png new file mode 100644 index 0000000..81c0256 Binary files /dev/null and b/public/static/img/three_room/rack_door_front.png differ diff --git a/public/static/img/three_room/rack_door_server.png b/public/static/img/three_room/rack_door_server.png new file mode 100644 index 0000000..eb4123b Binary files /dev/null and b/public/static/img/three_room/rack_door_server.png differ diff --git a/public/static/img/three_room/rack_inside.jpg b/public/static/img/three_room/rack_inside.jpg new file mode 100644 index 0000000..917d5a4 Binary files /dev/null and b/public/static/img/three_room/rack_inside.jpg differ diff --git a/public/static/img/three_room/rack_left.jpg b/public/static/img/three_room/rack_left.jpg new file mode 100644 index 0000000..93d81a4 Binary files /dev/null and b/public/static/img/three_room/rack_left.jpg differ diff --git a/public/static/img/three_room/rack_right.jpg b/public/static/img/three_room/rack_right.jpg new file mode 100644 index 0000000..675c13f Binary files /dev/null and b/public/static/img/three_room/rack_right.jpg differ diff --git a/public/static/img/three_room/rack_skin.jpg b/public/static/img/three_room/rack_skin.jpg new file mode 100644 index 0000000..17c0ff9 Binary files /dev/null and b/public/static/img/three_room/rack_skin.jpg differ diff --git a/public/static/img/three_room/server.png b/public/static/img/three_room/server.png new file mode 100644 index 0000000..c725f7a Binary files /dev/null and b/public/static/img/three_room/server.png differ diff --git a/public/static/img/three_room/server1.jpg b/public/static/img/three_room/server1.jpg new file mode 100644 index 0000000..03c616a Binary files /dev/null and b/public/static/img/three_room/server1.jpg differ diff --git a/public/static/img/three_room/server2.jpg b/public/static/img/three_room/server2.jpg new file mode 100644 index 0000000..e4bce2e Binary files /dev/null and b/public/static/img/three_room/server2.jpg differ diff --git a/public/static/img/three_room/server3.jpg b/public/static/img/three_room/server3.jpg new file mode 100644 index 0000000..fdbe5ce Binary files /dev/null and b/public/static/img/three_room/server3.jpg differ diff --git a/public/static/img/three_room/server4.jpg b/public/static/img/three_room/server4.jpg new file mode 100644 index 0000000..154f6d0 Binary files /dev/null and b/public/static/img/three_room/server4.jpg differ diff --git a/public/static/img/three_room/switch.jpg b/public/static/img/three_room/switch.jpg new file mode 100644 index 0000000..085d299 Binary files /dev/null and b/public/static/img/three_room/switch.jpg differ diff --git a/public/static/img/ups.jpg b/public/static/img/ups.jpg new file mode 100644 index 0000000..caac5f9 Binary files /dev/null and b/public/static/img/ups.jpg differ diff --git a/public/static/js/config.js b/public/static/js/config.js new file mode 100644 index 0000000..874027d --- /dev/null +++ b/public/static/js/config.js @@ -0,0 +1,3 @@ +window.configs = { + showLogo: false +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..a5591b6 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/assets/img/animate.gif b/src/assets/img/animate.gif new file mode 100644 index 0000000..c334e8c Binary files /dev/null and b/src/assets/img/animate.gif differ diff --git a/src/assets/img/header.gif b/src/assets/img/header.gif new file mode 100644 index 0000000..780c074 Binary files /dev/null and b/src/assets/img/header.gif differ diff --git a/src/assets/img/list/count.png b/src/assets/img/list/count.png new file mode 100644 index 0000000..ad0225c Binary files /dev/null and b/src/assets/img/list/count.png differ diff --git a/src/assets/img/list/operation.png b/src/assets/img/list/operation.png new file mode 100644 index 0000000..8242127 Binary files /dev/null and b/src/assets/img/list/operation.png differ diff --git a/src/assets/img/list/order.png b/src/assets/img/list/order.png new file mode 100644 index 0000000..1243620 Binary files /dev/null and b/src/assets/img/list/order.png differ diff --git a/src/assets/img/list/resource.png b/src/assets/img/list/resource.png new file mode 100644 index 0000000..0f30ba3 Binary files /dev/null and b/src/assets/img/list/resource.png differ diff --git a/src/assets/img/screen_bg.png b/src/assets/img/screen_bg.png new file mode 100644 index 0000000..7db5259 Binary files /dev/null and b/src/assets/img/screen_bg.png differ diff --git a/src/assets/img/stat_bg.png b/src/assets/img/stat_bg.png new file mode 100644 index 0000000..d7a3987 Binary files /dev/null and b/src/assets/img/stat_bg.png differ diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000..f3d2503 Binary files /dev/null and b/src/assets/logo.png differ diff --git a/src/components/AutoScroll/index.vue b/src/components/AutoScroll/index.vue new file mode 100644 index 0000000..de44cac --- /dev/null +++ b/src/components/AutoScroll/index.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/components/DeviceStatus/index.vue b/src/components/DeviceStatus/index.vue new file mode 100644 index 0000000..d46dc54 --- /dev/null +++ b/src/components/DeviceStatus/index.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/components/FullScreenContainer/index.vue b/src/components/FullScreenContainer/index.vue new file mode 100644 index 0000000..8fb105d --- /dev/null +++ b/src/components/FullScreenContainer/index.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue new file mode 100644 index 0000000..8d2494f --- /dev/null +++ b/src/components/HelloWorld.vue @@ -0,0 +1,59 @@ + + + + + + diff --git a/src/components/NoData/index.vue b/src/components/NoData/index.vue new file mode 100644 index 0000000..fec76a2 --- /dev/null +++ b/src/components/NoData/index.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/components/OverviewState/index.vue b/src/components/OverviewState/index.vue new file mode 100644 index 0000000..4aaa58a --- /dev/null +++ b/src/components/OverviewState/index.vue @@ -0,0 +1,106 @@ + + + diff --git a/src/components/ScreenWrapper/Header.vue b/src/components/ScreenWrapper/Header.vue new file mode 100644 index 0000000..f6e7b9b --- /dev/null +++ b/src/components/ScreenWrapper/Header.vue @@ -0,0 +1,70 @@ + + + + diff --git a/src/components/ScreenWrapper/index.vue b/src/components/ScreenWrapper/index.vue new file mode 100644 index 0000000..a77ba7c --- /dev/null +++ b/src/components/ScreenWrapper/index.vue @@ -0,0 +1,103 @@ + + + + diff --git a/src/components/ScreenWrapper/tools.js b/src/components/ScreenWrapper/tools.js new file mode 100644 index 0000000..19acb77 --- /dev/null +++ b/src/components/ScreenWrapper/tools.js @@ -0,0 +1,27 @@ +export function enableFullScreen() { + const docElm = document.documentElement + // W3C + if (docElm.requestFullscreen) { + docElm.requestFullscreen() + } else if (docElm.mozRequestFullScreen) { + // FireFox + docElm.mozRequestFullScreen() + } else if (docElm.webkitRequestFullScreen) { + // Chrome等 + docElm.webkitRequestFullScreen() + } else if (docElm.msRequestFullscreen) { + // IE11 + document.body.msRequestFullscreen() + } +} +export function disableFullScreen() { + if (document.exitFullscreen) { + document.exitFullscreen() + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen() + } else if (document.webkitCancelFullScreen) { + document.webkitCancelFullScreen() + } else if (document.msExitFullscreen) { + document.msExitFullscreen() + } +} diff --git a/src/components/ScreenWrapper/useHeader.js b/src/components/ScreenWrapper/useHeader.js new file mode 100644 index 0000000..2bc5d26 --- /dev/null +++ b/src/components/ScreenWrapper/useHeader.js @@ -0,0 +1,54 @@ +import { reactive, toRefs, onUnmounted, ref, computed } from '@vue/composition-api' +import moment from 'moment' +import 'moment/locale/zh-cn' +import { enableFullScreen, disableFullScreen } from './tools' +import { getSystemConfigs } from 'services/system' + +export default function (store, code) { + const title = computed(() => { + return store.getters.screenConfigs[code] + }) + const state = reactive({ + currentTime: '' + }) + let timer = null + onUnmounted(() => { + clearInterval(timer) + timer = null + }) + function setTimer() { + const getTime = () => { + const time = moment() + state.currentTime = `${time.format('YYYY年MM月DD日 dddd HH:mm:ss')}`; + } + getTime() + timer = setInterval(() => { + getTime() + }, 1000) + } + setTimer(); + let isFull = false; + function operateScreen() { + if (isFull) { + disableFullScreen() + } else { + enableFullScreen() + } + isFull = !isFull; + } + // 获取logo + const logo = ref(''); + async function getLogo () { + const data = await getSystemConfigs({ codes: 'loginLogo' }); + if (data.success) { + logo.value = data.data.loginLogo; + } + } + if (window.configs?.showLogo) getLogo() + return { + ...toRefs(state), + logo, + title, + operateScreen + } +} diff --git a/src/components/ScrollTable/TableColumn.vue b/src/components/ScrollTable/TableColumn.vue new file mode 100644 index 0000000..1121c0a --- /dev/null +++ b/src/components/ScrollTable/TableColumn.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/components/ScrollTable/index.vue b/src/components/ScrollTable/index.vue new file mode 100644 index 0000000..95e8ecb --- /dev/null +++ b/src/components/ScrollTable/index.vue @@ -0,0 +1,88 @@ + + + diff --git a/src/components/SimpleProgress/index.vue b/src/components/SimpleProgress/index.vue new file mode 100644 index 0000000..ff3df05 --- /dev/null +++ b/src/components/SimpleProgress/index.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/components/Topology/index.vue b/src/components/Topology/index.vue new file mode 100644 index 0000000..c9eb1ec --- /dev/null +++ b/src/components/Topology/index.vue @@ -0,0 +1,172 @@ + + + + diff --git a/src/components/Topology/registerDefault.js b/src/components/Topology/registerDefault.js new file mode 100644 index 0000000..fa9ca34 --- /dev/null +++ b/src/components/Topology/registerDefault.js @@ -0,0 +1,129 @@ +export default function registerDefault( + G6, + nodeType = 'circle', + lineType = 'quadratic' +) { + G6.registerNode( + 'background-animate', + { + afterDraw(cfg, group) { + const r = cfg.size / 2; + const back1 = group.addShape('circle', { + zIndex: -3, + attrs: { + x: 0, + y: 0, + r, + fill: cfg.color, + opacity: 0.6 + }, + name: 'back1-shape' + }); + const back2 = group.addShape('circle', { + zIndex: -2, + attrs: { + x: 0, + y: 0, + r, + fill: cfg.color, + opacity: 0.6 + }, + name: 'back2-shape' + }); + const back3 = group.addShape('circle', { + zIndex: -1, + attrs: { + x: 0, + y: 0, + r, + fill: cfg.color, + opacity: 0.6 + }, + name: 'back3-shape' + }); + group.sort(); // Sort according to the zIndex + back1.animate( + { + // Magnifying and disappearing + r: r + 10, + opacity: 0.1 + }, + { + duration: 3000, + easing: 'easeCubic', + delay: 0, + repeat: true // repeat + } + ); // no delay + back2.animate( + { + // Magnifying and disappearing + r: r + 10, + opacity: 0.1 + }, + { + duration: 3000, + easing: 'easeCubic', + delay: 1000, + repeat: true // repeat + } + ); // 1s delay + back3.animate( + { + // Magnifying and disappearing + r: r + 10, + opacity: 0.1 + }, + { + duration: 3000, + easing: 'easeCubic', + delay: 2000, + repeat: true // repeat + } + ); // 3s delay + } + }, + 'image' + ); + G6.registerEdge( + 'circle-running', + { + afterDraw(cfg, group) { + // 获得当前边的第一个图形,这里是边本身的 path + const shape = group.get('children')[0]; + // 边 path 的起点位置 + const startPoint = shape.getPoint(0); + + // 添加红色 circle 图形 + const circle = group.addShape('circle', { + attrs: { + x: startPoint.x, + y: startPoint.y, + fill: '#29EEF7', + r: 3 + }, + name: 'circle-shape' + }); + + // 对红色圆点添加动画 + circle.animate( + ratio => { + // 每一帧的操作,入参 ratio:这一帧的比例值(Number)。返回值:这一帧需要变化的参数集(Object)。 + // 根据比例值,获得在边 path 上对应比例的位置。 + const tmpPoint = shape.getPoint(ratio); + // 返回需要变化的参数集,这里返回了位置 x 和 y + return { + x: tmpPoint.x, + y: tmpPoint.y + }; + }, + { + repeat: true, // 动画重复 + duration: 3000 // 一次动画的时间长度 + } + ); + } + }, + lineType + ); +} diff --git a/src/components/echarts/BarCharts.vue b/src/components/echarts/BarCharts.vue new file mode 100644 index 0000000..47a7426 --- /dev/null +++ b/src/components/echarts/BarCharts.vue @@ -0,0 +1,76 @@ + + diff --git a/src/components/echarts/BarReverseCharts.vue b/src/components/echarts/BarReverseCharts.vue new file mode 100644 index 0000000..ab9f6b2 --- /dev/null +++ b/src/components/echarts/BarReverseCharts.vue @@ -0,0 +1,60 @@ + + diff --git a/src/components/echarts/LineCharts.vue b/src/components/echarts/LineCharts.vue new file mode 100644 index 0000000..a86ea3e --- /dev/null +++ b/src/components/echarts/LineCharts.vue @@ -0,0 +1,60 @@ + + diff --git a/src/components/echarts/PieCharts.vue b/src/components/echarts/PieCharts.vue new file mode 100644 index 0000000..8cdf64e --- /dev/null +++ b/src/components/echarts/PieCharts.vue @@ -0,0 +1,72 @@ + + diff --git a/src/components/echarts/bar-charts/BarCharts.vue b/src/components/echarts/bar-charts/BarCharts.vue new file mode 100644 index 0000000..5e71d3a --- /dev/null +++ b/src/components/echarts/bar-charts/BarCharts.vue @@ -0,0 +1,191 @@ + + + + diff --git a/src/components/echarts/bar-charts/index.js b/src/components/echarts/bar-charts/index.js new file mode 100644 index 0000000..ef72689 --- /dev/null +++ b/src/components/echarts/bar-charts/index.js @@ -0,0 +1,2 @@ +import BarCharts from './BarCharts.vue'; +export default BarCharts; diff --git a/src/components/echarts/bar-reverse-charts/BarReverseCharts.vue b/src/components/echarts/bar-reverse-charts/BarReverseCharts.vue new file mode 100644 index 0000000..6633e90 --- /dev/null +++ b/src/components/echarts/bar-reverse-charts/BarReverseCharts.vue @@ -0,0 +1,114 @@ + + + diff --git a/src/components/echarts/bar-reverse-charts/index.js b/src/components/echarts/bar-reverse-charts/index.js new file mode 100644 index 0000000..071da89 --- /dev/null +++ b/src/components/echarts/bar-reverse-charts/index.js @@ -0,0 +1,2 @@ +import BarReverseCharts from './BarReverseCharts.vue'; +export default BarReverseCharts; diff --git a/src/components/echarts/defaultSetting.js b/src/components/echarts/defaultSetting.js new file mode 100644 index 0000000..9fbee67 --- /dev/null +++ b/src/components/echarts/defaultSetting.js @@ -0,0 +1,51 @@ +export const legend = { + type: 'scroll', + itemWidth: 12, + itemHeight: 12, + icon: 'roundRect', + padding: [0, 20], + textStyle: { + color: '##999999' + } +}; +export const grid = { + left: 1, + right: 1, + top: 30, + bottom: 1, + containLabel: true +}; +export const yAxis = { + type: 'value', + nameGap: 5, + min: 0, + splitLine: { + lineStyle: { + color: ['#ebebeb'], + type: 'dashed' + } + }, + axisLine: { + lineStyle: { + color: ['#d9d9d9'] + } + }, + axisTick: { + show: false + } +}; +export const xAxis = { + axisLine: { + lineStyle: { + color: ['#d9d9d9'] + } + }, + axisTick: { + show: false + } +}; +export const toolbox = { + feature: { + saveAsImage: {} + } +}; diff --git a/src/components/echarts/gauge-charts/GaugeCharts.vue b/src/components/echarts/gauge-charts/GaugeCharts.vue new file mode 100644 index 0000000..f168dc5 --- /dev/null +++ b/src/components/echarts/gauge-charts/GaugeCharts.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/components/echarts/gauge-charts/index.js b/src/components/echarts/gauge-charts/index.js new file mode 100644 index 0000000..8954883 --- /dev/null +++ b/src/components/echarts/gauge-charts/index.js @@ -0,0 +1,5 @@ +/** + * Created by Zhang Haijun on 2018/6/14. + */ +import GaugeCharts from './GaugeCharts.vue'; +export default GaugeCharts; diff --git a/src/components/echarts/graph-charts/GraphCharts.vue b/src/components/echarts/graph-charts/GraphCharts.vue new file mode 100644 index 0000000..fa64fa2 --- /dev/null +++ b/src/components/echarts/graph-charts/GraphCharts.vue @@ -0,0 +1,106 @@ + + + diff --git a/src/components/echarts/graph-charts/index.js b/src/components/echarts/graph-charts/index.js new file mode 100644 index 0000000..61a85f9 --- /dev/null +++ b/src/components/echarts/graph-charts/index.js @@ -0,0 +1,2 @@ +import GraphCharts from './GraphCharts.vue'; +export default GraphCharts; diff --git a/src/components/echarts/index.scss b/src/components/echarts/index.scss new file mode 100644 index 0000000..193fef6 --- /dev/null +++ b/src/components/echarts/index.scss @@ -0,0 +1,18 @@ +.chart-container { + position: relative; + width: 100%; + height: 100%; + .chart-no-data { + width: 100%; + color: #fff; + position: absolute; + top: 0; + } + .chart { + width: 100%; + height: 100%; + &.hide { + visibility: hidden; + } + } +} \ No newline at end of file diff --git a/src/components/echarts/line-charts/LineCharts.vue b/src/components/echarts/line-charts/LineCharts.vue new file mode 100644 index 0000000..59e0fa9 --- /dev/null +++ b/src/components/echarts/line-charts/LineCharts.vue @@ -0,0 +1,108 @@ + + + diff --git a/src/components/echarts/line-charts/index.js b/src/components/echarts/line-charts/index.js new file mode 100644 index 0000000..4b15e53 --- /dev/null +++ b/src/components/echarts/line-charts/index.js @@ -0,0 +1,2 @@ +import LineCharts from './LineCharts.vue' +export default LineCharts diff --git a/src/components/echarts/liquid-fill-charts/LiquidFillCharts.vue b/src/components/echarts/liquid-fill-charts/LiquidFillCharts.vue new file mode 100644 index 0000000..6e81f55 --- /dev/null +++ b/src/components/echarts/liquid-fill-charts/LiquidFillCharts.vue @@ -0,0 +1,58 @@ + + + diff --git a/src/components/echarts/liquid-fill-charts/index.js b/src/components/echarts/liquid-fill-charts/index.js new file mode 100644 index 0000000..c3a06c4 --- /dev/null +++ b/src/components/echarts/liquid-fill-charts/index.js @@ -0,0 +1,5 @@ +/** + * Created by Zhang Haijun on 2018/6/14. + */ +import LiquidFillCharts from './LiquidFillCharts.vue' +export default LiquidFillCharts diff --git a/src/components/echarts/loop-charts/LoopCharts.vue b/src/components/echarts/loop-charts/LoopCharts.vue new file mode 100644 index 0000000..ee01d96 --- /dev/null +++ b/src/components/echarts/loop-charts/LoopCharts.vue @@ -0,0 +1,137 @@ + + + + diff --git a/src/components/echarts/loop-charts/index.js b/src/components/echarts/loop-charts/index.js new file mode 100644 index 0000000..03772f1 --- /dev/null +++ b/src/components/echarts/loop-charts/index.js @@ -0,0 +1,2 @@ +import LoopCharts from './LoopCharts.vue'; +export default LoopCharts diff --git a/src/components/echarts/map-suzhou/MapCharts.vue b/src/components/echarts/map-suzhou/MapCharts.vue new file mode 100644 index 0000000..65cc3c1 --- /dev/null +++ b/src/components/echarts/map-suzhou/MapCharts.vue @@ -0,0 +1,208 @@ + + + diff --git a/src/components/echarts/map-suzhou/index.js b/src/components/echarts/map-suzhou/index.js new file mode 100644 index 0000000..90e04b0 --- /dev/null +++ b/src/components/echarts/map-suzhou/index.js @@ -0,0 +1,2 @@ +import MapCharts from './MapCharts.vue'; +export default MapCharts diff --git a/src/components/echarts/mixins.js b/src/components/echarts/mixins.js new file mode 100644 index 0000000..80c1645 --- /dev/null +++ b/src/components/echarts/mixins.js @@ -0,0 +1,116 @@ +/** + * Created by Zhang Haijun on 2018/6/8. + */ + +import echarts from 'echarts'; +import theme from './theme/walden'; + +export function getLinerColor (startColor, endColor) { + // 只有一种颜色返回单色 + if (!endColor) return startColor + return new echarts.graphic.LinearGradient( + 0, 0, 1, 1, [{ + offset: 0, + color: startColor + }, + { + offset: 1, + color: endColor + } + ] + ) +} + +export default { + props: { + data: { + type: null + }, + setting: { + type: Object, + default: function () { + return { + fixed: 0 + }; + } + }, + unit: { + type: String, + default: '' + }, + className: { + type: String, + default: 'chart' + }, + dataZoom: { + type: Boolean, + default: false + }, + id: { + type: String, + default: () => { + return new Date().getTime().toString() + Math.random() + } + }, + width: { + type: String, + default: '200px' + }, + height: { + type: String, + default: '300px' + }, + theme: { + type: String + } + }, + data () { + return { + echarts, + chart: null + }; + }, + computed: { + themeColor () { + return { + legendColor: '#fff', + axisColor: '#ccc' + }; + } + }, + mounted () { + this.initChart(); + window.addEventListener('resize', this.resize); + }, + watch: { + themeColor (newVal, oldVal) { + if (newVal.legendColor === oldVal.legendColor) return; + this.updateChart(); + }, + data: function () { + this.updateChart(); + } + }, + beforeDestroy () { + if (!this.chart) { + return; + } + this.chart.dispose(); + this.chart = null; + window.removeEventListener('resize', this.resize); + }, + methods: { + initChart () { + echarts.registerTheme('mytheme', theme); + const target = document.getElementById(this.id); + this.chart = echarts.init(target, 'mytheme', { + devicePixelRatio: 1 + // renderer: 'svg' + }); + this.updateChart(); + }, + resize () { + if (this.chart) this.chart.resize(); + } + } +}; diff --git a/src/components/echarts/multiple-loop-charts/MultipleLoopCharts.vue b/src/components/echarts/multiple-loop-charts/MultipleLoopCharts.vue new file mode 100644 index 0000000..fbe2019 --- /dev/null +++ b/src/components/echarts/multiple-loop-charts/MultipleLoopCharts.vue @@ -0,0 +1,111 @@ + + + diff --git a/src/components/echarts/multiple-loop-charts/index.js b/src/components/echarts/multiple-loop-charts/index.js new file mode 100644 index 0000000..bd5e714 --- /dev/null +++ b/src/components/echarts/multiple-loop-charts/index.js @@ -0,0 +1,2 @@ +import MultipleLoopCharts from './MultipleLoopCharts.vue'; +export default MultipleLoopCharts diff --git a/src/components/echarts/pie-charts/PieCharts.vue b/src/components/echarts/pie-charts/PieCharts.vue new file mode 100644 index 0000000..fed1523 --- /dev/null +++ b/src/components/echarts/pie-charts/PieCharts.vue @@ -0,0 +1,98 @@ + + + + diff --git a/src/components/echarts/pie-charts/index.js b/src/components/echarts/pie-charts/index.js new file mode 100644 index 0000000..5ac1ec6 --- /dev/null +++ b/src/components/echarts/pie-charts/index.js @@ -0,0 +1,2 @@ +import PieCharts from './PieCharts.vue'; +export default PieCharts diff --git a/src/components/echarts/theme/halloween.js b/src/components/echarts/theme/halloween.js new file mode 100644 index 0000000..c70c160 --- /dev/null +++ b/src/components/echarts/theme/halloween.js @@ -0,0 +1,498 @@ +/** + * Created by Zhang Haijun on 2018/6/8. + */ +export default { + color: [ + '#ff715e', + '#ffaf51', + '#ffee51', + '#8c6ac4', + '#715c87' + ], + backgroundColor: 'rgba(64,64,64,0.5)', + textStyle: {}, + title: { + textStyle: { + color: '#ffaf51' + }, + subtextStyle: { + color: '#eeeeee' + } + }, + line: { + itemStyle: { + normal: { + borderWidth: '2' + } + }, + lineStyle: { + normal: { + width: '3' + } + }, + symbolSize: '8', + symbol: 'path://M237.062,81.761L237.062,81.761c-12.144-14.24-25.701-20.1-40.68-19.072 c-10.843,0.747-20.938,5.154-30.257,13.127c-9.51-5.843-19.8-9.227-30.859-10.366c0.521-3.197,1.46-6.306,2.85-9.363 c3.458-7.038,8.907-12.741,16.331-17.296c-5.609-3.384-11.227-6.799-16.854-10.279c-16.257,8.104-25.06,20.601-26.463,38.417 c-7.599,1.705-14.685,4.486-21.247,8.437c-9.164-7.677-18.996-11.917-29.496-12.632c-14.819-0.998-28.467,4.787-40.938,18.827 C6.445,96.182,0,114.867,0,136.242c-0.007,6.371,0.674,12.646,2.053,18.738c4.593,22.785,15.398,41.367,32.558,55.344 c15.43,12.773,29.901,18.023,43.362,16.981c7.074-0.561,13.624-3.977,19.685-10.192c10.534,5.49,20.391,8.217,29.561,8.203 c9.856-0.012,20.236-2.953,31.125-8.898c6.227,6.692,12.966,10.346,20.211,10.933c13.795,1.073,28.614-4.111,44.377-16.84 c17.49-14.104,28.043-32.79,31.796-55.485c0.836-5.624,1.272-11.292,1.272-16.966C255.998,115.814,249.707,96.601,237.062,81.761z M54.795,97.7l40.661,14.496c-4.402,8.811-10.766,13.219-19.06,13.219c-2.542,0-4.917-0.419-7.122-1.274 C58.103,118.38,53.263,109.572,54.795,97.7z M150.613,185.396l-9.156-8.389l-7.619,12.951c-3.391,0.341-6.615,0.514-9.665,0.514 c-4.401,0-8.635-0.263-12.708-0.777l-8.634-14.973l-9.151,9.909c-4.91-2.717-9.15-5.856-12.708-9.413 c-8.81-8.295-13.384-17.959-13.727-28.97c2.877,1.692,7.427,3.461,13.675,5.308l10.636,13.629l9.44-9.852 c4.734,0.702,9.234,1.12,13.466,1.275l10.689,11.498l9.671-11.949c3.559-0.173,7.285-0.515,11.182-1.01l9.924,10.159l10.933-14.227 c5.931-1.351,11.196-2.798,15.771-4.323C179.747,163.538,169.068,176.414,150.613,185.396z M175.258,124.907 c-2.209,0.849-4.66,1.273-7.369,1.273c-8.134,0-14.489-4.415-19.052-13.224l40.905-14.477 C191.105,110.331,186.273,119.141,175.258,124.907z', + smooth: false + }, + radar: { + itemStyle: { + normal: { + borderWidth: '2' + } + }, + lineStyle: { + normal: { + width: '3' + } + }, + symbolSize: '8', + symbol: 'path://M237.062,81.761L237.062,81.761c-12.144-14.24-25.701-20.1-40.68-19.072 c-10.843,0.747-20.938,5.154-30.257,13.127c-9.51-5.843-19.8-9.227-30.859-10.366c0.521-3.197,1.46-6.306,2.85-9.363 c3.458-7.038,8.907-12.741,16.331-17.296c-5.609-3.384-11.227-6.799-16.854-10.279c-16.257,8.104-25.06,20.601-26.463,38.417 c-7.599,1.705-14.685,4.486-21.247,8.437c-9.164-7.677-18.996-11.917-29.496-12.632c-14.819-0.998-28.467,4.787-40.938,18.827 C6.445,96.182,0,114.867,0,136.242c-0.007,6.371,0.674,12.646,2.053,18.738c4.593,22.785,15.398,41.367,32.558,55.344 c15.43,12.773,29.901,18.023,43.362,16.981c7.074-0.561,13.624-3.977,19.685-10.192c10.534,5.49,20.391,8.217,29.561,8.203 c9.856-0.012,20.236-2.953,31.125-8.898c6.227,6.692,12.966,10.346,20.211,10.933c13.795,1.073,28.614-4.111,44.377-16.84 c17.49-14.104,28.043-32.79,31.796-55.485c0.836-5.624,1.272-11.292,1.272-16.966C255.998,115.814,249.707,96.601,237.062,81.761z M54.795,97.7l40.661,14.496c-4.402,8.811-10.766,13.219-19.06,13.219c-2.542,0-4.917-0.419-7.122-1.274 C58.103,118.38,53.263,109.572,54.795,97.7z M150.613,185.396l-9.156-8.389l-7.619,12.951c-3.391,0.341-6.615,0.514-9.665,0.514 c-4.401,0-8.635-0.263-12.708-0.777l-8.634-14.973l-9.151,9.909c-4.91-2.717-9.15-5.856-12.708-9.413 c-8.81-8.295-13.384-17.959-13.727-28.97c2.877,1.692,7.427,3.461,13.675,5.308l10.636,13.629l9.44-9.852 c4.734,0.702,9.234,1.12,13.466,1.275l10.689,11.498l9.671-11.949c3.559-0.173,7.285-0.515,11.182-1.01l9.924,10.159l10.933-14.227 c5.931-1.351,11.196-2.798,15.771-4.323C179.747,163.538,169.068,176.414,150.613,185.396z M175.258,124.907 c-2.209,0.849-4.66,1.273-7.369,1.273c-8.134,0-14.489-4.415-19.052-13.224l40.905-14.477 C191.105,110.331,186.273,119.141,175.258,124.907z', + smooth: false + }, + bar: { + itemStyle: { + normal: { + barBorderWidth: '0', + barBorderColor: '#ccc' + }, + emphasis: { + barBorderWidth: '0', + barBorderColor: '#ccc' + } + } + }, + pie: { + itemStyle: { + normal: { + borderWidth: '0', + borderColor: '#ccc' + }, + emphasis: { + borderWidth: '0', + borderColor: '#ccc' + } + }, + symbol: 'path://M237.062,81.761L237.062,81.761c-12.144-14.24-25.701-20.1-40.68-19.072 c-10.843,0.747-20.938,5.154-30.257,13.127c-9.51-5.843-19.8-9.227-30.859-10.366c0.521-3.197,1.46-6.306,2.85-9.363 c3.458-7.038,8.907-12.741,16.331-17.296c-5.609-3.384-11.227-6.799-16.854-10.279c-16.257,8.104-25.06,20.601-26.463,38.417 c-7.599,1.705-14.685,4.486-21.247,8.437c-9.164-7.677-18.996-11.917-29.496-12.632c-14.819-0.998-28.467,4.787-40.938,18.827 C6.445,96.182,0,114.867,0,136.242c-0.007,6.371,0.674,12.646,2.053,18.738c4.593,22.785,15.398,41.367,32.558,55.344 c15.43,12.773,29.901,18.023,43.362,16.981c7.074-0.561,13.624-3.977,19.685-10.192c10.534,5.49,20.391,8.217,29.561,8.203 c9.856-0.012,20.236-2.953,31.125-8.898c6.227,6.692,12.966,10.346,20.211,10.933c13.795,1.073,28.614-4.111,44.377-16.84 c17.49-14.104,28.043-32.79,31.796-55.485c0.836-5.624,1.272-11.292,1.272-16.966C255.998,115.814,249.707,96.601,237.062,81.761z M54.795,97.7l40.661,14.496c-4.402,8.811-10.766,13.219-19.06,13.219c-2.542,0-4.917-0.419-7.122-1.274 C58.103,118.38,53.263,109.572,54.795,97.7z M150.613,185.396l-9.156-8.389l-7.619,12.951c-3.391,0.341-6.615,0.514-9.665,0.514 c-4.401,0-8.635-0.263-12.708-0.777l-8.634-14.973l-9.151,9.909c-4.91-2.717-9.15-5.856-12.708-9.413 c-8.81-8.295-13.384-17.959-13.727-28.97c2.877,1.692,7.427,3.461,13.675,5.308l10.636,13.629l9.44-9.852 c4.734,0.702,9.234,1.12,13.466,1.275l10.689,11.498l9.671-11.949c3.559-0.173,7.285-0.515,11.182-1.01l9.924,10.159l10.933-14.227 c5.931-1.351,11.196-2.798,15.771-4.323C179.747,163.538,169.068,176.414,150.613,185.396z M175.258,124.907 c-2.209,0.849-4.66,1.273-7.369,1.273c-8.134,0-14.489-4.415-19.052-13.224l40.905-14.477 C191.105,110.331,186.273,119.141,175.258,124.907z' + }, + scatter: { + itemStyle: { + normal: { + borderWidth: '0', + borderColor: '#ccc' + }, + emphasis: { + borderWidth: '0', + borderColor: '#ccc' + } + }, + symbol: 'path://M237.062,81.761L237.062,81.761c-12.144-14.24-25.701-20.1-40.68-19.072 c-10.843,0.747-20.938,5.154-30.257,13.127c-9.51-5.843-19.8-9.227-30.859-10.366c0.521-3.197,1.46-6.306,2.85-9.363 c3.458-7.038,8.907-12.741,16.331-17.296c-5.609-3.384-11.227-6.799-16.854-10.279c-16.257,8.104-25.06,20.601-26.463,38.417 c-7.599,1.705-14.685,4.486-21.247,8.437c-9.164-7.677-18.996-11.917-29.496-12.632c-14.819-0.998-28.467,4.787-40.938,18.827 C6.445,96.182,0,114.867,0,136.242c-0.007,6.371,0.674,12.646,2.053,18.738c4.593,22.785,15.398,41.367,32.558,55.344 c15.43,12.773,29.901,18.023,43.362,16.981c7.074-0.561,13.624-3.977,19.685-10.192c10.534,5.49,20.391,8.217,29.561,8.203 c9.856-0.012,20.236-2.953,31.125-8.898c6.227,6.692,12.966,10.346,20.211,10.933c13.795,1.073,28.614-4.111,44.377-16.84 c17.49-14.104,28.043-32.79,31.796-55.485c0.836-5.624,1.272-11.292,1.272-16.966C255.998,115.814,249.707,96.601,237.062,81.761z M54.795,97.7l40.661,14.496c-4.402,8.811-10.766,13.219-19.06,13.219c-2.542,0-4.917-0.419-7.122-1.274 C58.103,118.38,53.263,109.572,54.795,97.7z M150.613,185.396l-9.156-8.389l-7.619,12.951c-3.391,0.341-6.615,0.514-9.665,0.514 c-4.401,0-8.635-0.263-12.708-0.777l-8.634-14.973l-9.151,9.909c-4.91-2.717-9.15-5.856-12.708-9.413 c-8.81-8.295-13.384-17.959-13.727-28.97c2.877,1.692,7.427,3.461,13.675,5.308l10.636,13.629l9.44-9.852 c4.734,0.702,9.234,1.12,13.466,1.275l10.689,11.498l9.671-11.949c3.559-0.173,7.285-0.515,11.182-1.01l9.924,10.159l10.933-14.227 c5.931-1.351,11.196-2.798,15.771-4.323C179.747,163.538,169.068,176.414,150.613,185.396z M175.258,124.907 c-2.209,0.849-4.66,1.273-7.369,1.273c-8.134,0-14.489-4.415-19.052-13.224l40.905-14.477 C191.105,110.331,186.273,119.141,175.258,124.907z' + }, + boxplot: { + itemStyle: { + normal: { + borderWidth: '0', + borderColor: '#ccc' + }, + emphasis: { + borderWidth: '0', + borderColor: '#ccc' + } + }, + symbol: 'path://M237.062,81.761L237.062,81.761c-12.144-14.24-25.701-20.1-40.68-19.072 c-10.843,0.747-20.938,5.154-30.257,13.127c-9.51-5.843-19.8-9.227-30.859-10.366c0.521-3.197,1.46-6.306,2.85-9.363 c3.458-7.038,8.907-12.741,16.331-17.296c-5.609-3.384-11.227-6.799-16.854-10.279c-16.257,8.104-25.06,20.601-26.463,38.417 c-7.599,1.705-14.685,4.486-21.247,8.437c-9.164-7.677-18.996-11.917-29.496-12.632c-14.819-0.998-28.467,4.787-40.938,18.827 C6.445,96.182,0,114.867,0,136.242c-0.007,6.371,0.674,12.646,2.053,18.738c4.593,22.785,15.398,41.367,32.558,55.344 c15.43,12.773,29.901,18.023,43.362,16.981c7.074-0.561,13.624-3.977,19.685-10.192c10.534,5.49,20.391,8.217,29.561,8.203 c9.856-0.012,20.236-2.953,31.125-8.898c6.227,6.692,12.966,10.346,20.211,10.933c13.795,1.073,28.614-4.111,44.377-16.84 c17.49-14.104,28.043-32.79,31.796-55.485c0.836-5.624,1.272-11.292,1.272-16.966C255.998,115.814,249.707,96.601,237.062,81.761z M54.795,97.7l40.661,14.496c-4.402,8.811-10.766,13.219-19.06,13.219c-2.542,0-4.917-0.419-7.122-1.274 C58.103,118.38,53.263,109.572,54.795,97.7z M150.613,185.396l-9.156-8.389l-7.619,12.951c-3.391,0.341-6.615,0.514-9.665,0.514 c-4.401,0-8.635-0.263-12.708-0.777l-8.634-14.973l-9.151,9.909c-4.91-2.717-9.15-5.856-12.708-9.413 c-8.81-8.295-13.384-17.959-13.727-28.97c2.877,1.692,7.427,3.461,13.675,5.308l10.636,13.629l9.44-9.852 c4.734,0.702,9.234,1.12,13.466,1.275l10.689,11.498l9.671-11.949c3.559-0.173,7.285-0.515,11.182-1.01l9.924,10.159l10.933-14.227 c5.931-1.351,11.196-2.798,15.771-4.323C179.747,163.538,169.068,176.414,150.613,185.396z M175.258,124.907 c-2.209,0.849-4.66,1.273-7.369,1.273c-8.134,0-14.489-4.415-19.052-13.224l40.905-14.477 C191.105,110.331,186.273,119.141,175.258,124.907z' + }, + parallel: { + itemStyle: { + normal: { + borderWidth: '0', + borderColor: '#ccc' + }, + emphasis: { + borderWidth: '0', + borderColor: '#ccc' + } + }, + symbol: 'path://M237.062,81.761L237.062,81.761c-12.144-14.24-25.701-20.1-40.68-19.072 c-10.843,0.747-20.938,5.154-30.257,13.127c-9.51-5.843-19.8-9.227-30.859-10.366c0.521-3.197,1.46-6.306,2.85-9.363 c3.458-7.038,8.907-12.741,16.331-17.296c-5.609-3.384-11.227-6.799-16.854-10.279c-16.257,8.104-25.06,20.601-26.463,38.417 c-7.599,1.705-14.685,4.486-21.247,8.437c-9.164-7.677-18.996-11.917-29.496-12.632c-14.819-0.998-28.467,4.787-40.938,18.827 C6.445,96.182,0,114.867,0,136.242c-0.007,6.371,0.674,12.646,2.053,18.738c4.593,22.785,15.398,41.367,32.558,55.344 c15.43,12.773,29.901,18.023,43.362,16.981c7.074-0.561,13.624-3.977,19.685-10.192c10.534,5.49,20.391,8.217,29.561,8.203 c9.856-0.012,20.236-2.953,31.125-8.898c6.227,6.692,12.966,10.346,20.211,10.933c13.795,1.073,28.614-4.111,44.377-16.84 c17.49-14.104,28.043-32.79,31.796-55.485c0.836-5.624,1.272-11.292,1.272-16.966C255.998,115.814,249.707,96.601,237.062,81.761z M54.795,97.7l40.661,14.496c-4.402,8.811-10.766,13.219-19.06,13.219c-2.542,0-4.917-0.419-7.122-1.274 C58.103,118.38,53.263,109.572,54.795,97.7z M150.613,185.396l-9.156-8.389l-7.619,12.951c-3.391,0.341-6.615,0.514-9.665,0.514 c-4.401,0-8.635-0.263-12.708-0.777l-8.634-14.973l-9.151,9.909c-4.91-2.717-9.15-5.856-12.708-9.413 c-8.81-8.295-13.384-17.959-13.727-28.97c2.877,1.692,7.427,3.461,13.675,5.308l10.636,13.629l9.44-9.852 c4.734,0.702,9.234,1.12,13.466,1.275l10.689,11.498l9.671-11.949c3.559-0.173,7.285-0.515,11.182-1.01l9.924,10.159l10.933-14.227 c5.931-1.351,11.196-2.798,15.771-4.323C179.747,163.538,169.068,176.414,150.613,185.396z M175.258,124.907 c-2.209,0.849-4.66,1.273-7.369,1.273c-8.134,0-14.489-4.415-19.052-13.224l40.905-14.477 C191.105,110.331,186.273,119.141,175.258,124.907z' + }, + sankey: { + itemStyle: { + normal: { + borderWidth: '0', + borderColor: '#ccc' + }, + emphasis: { + borderWidth: '0', + borderColor: '#ccc' + } + }, + symbol: 'path://M237.062,81.761L237.062,81.761c-12.144-14.24-25.701-20.1-40.68-19.072 c-10.843,0.747-20.938,5.154-30.257,13.127c-9.51-5.843-19.8-9.227-30.859-10.366c0.521-3.197,1.46-6.306,2.85-9.363 c3.458-7.038,8.907-12.741,16.331-17.296c-5.609-3.384-11.227-6.799-16.854-10.279c-16.257,8.104-25.06,20.601-26.463,38.417 c-7.599,1.705-14.685,4.486-21.247,8.437c-9.164-7.677-18.996-11.917-29.496-12.632c-14.819-0.998-28.467,4.787-40.938,18.827 C6.445,96.182,0,114.867,0,136.242c-0.007,6.371,0.674,12.646,2.053,18.738c4.593,22.785,15.398,41.367,32.558,55.344 c15.43,12.773,29.901,18.023,43.362,16.981c7.074-0.561,13.624-3.977,19.685-10.192c10.534,5.49,20.391,8.217,29.561,8.203 c9.856-0.012,20.236-2.953,31.125-8.898c6.227,6.692,12.966,10.346,20.211,10.933c13.795,1.073,28.614-4.111,44.377-16.84 c17.49-14.104,28.043-32.79,31.796-55.485c0.836-5.624,1.272-11.292,1.272-16.966C255.998,115.814,249.707,96.601,237.062,81.761z M54.795,97.7l40.661,14.496c-4.402,8.811-10.766,13.219-19.06,13.219c-2.542,0-4.917-0.419-7.122-1.274 C58.103,118.38,53.263,109.572,54.795,97.7z M150.613,185.396l-9.156-8.389l-7.619,12.951c-3.391,0.341-6.615,0.514-9.665,0.514 c-4.401,0-8.635-0.263-12.708-0.777l-8.634-14.973l-9.151,9.909c-4.91-2.717-9.15-5.856-12.708-9.413 c-8.81-8.295-13.384-17.959-13.727-28.97c2.877,1.692,7.427,3.461,13.675,5.308l10.636,13.629l9.44-9.852 c4.734,0.702,9.234,1.12,13.466,1.275l10.689,11.498l9.671-11.949c3.559-0.173,7.285-0.515,11.182-1.01l9.924,10.159l10.933-14.227 c5.931-1.351,11.196-2.798,15.771-4.323C179.747,163.538,169.068,176.414,150.613,185.396z M175.258,124.907 c-2.209,0.849-4.66,1.273-7.369,1.273c-8.134,0-14.489-4.415-19.052-13.224l40.905-14.477 C191.105,110.331,186.273,119.141,175.258,124.907z' + }, + funnel: { + itemStyle: { + normal: { + borderWidth: '0', + borderColor: '#ccc' + }, + emphasis: { + borderWidth: '0', + borderColor: '#ccc' + } + }, + symbol: 'path://M237.062,81.761L237.062,81.761c-12.144-14.24-25.701-20.1-40.68-19.072 c-10.843,0.747-20.938,5.154-30.257,13.127c-9.51-5.843-19.8-9.227-30.859-10.366c0.521-3.197,1.46-6.306,2.85-9.363 c3.458-7.038,8.907-12.741,16.331-17.296c-5.609-3.384-11.227-6.799-16.854-10.279c-16.257,8.104-25.06,20.601-26.463,38.417 c-7.599,1.705-14.685,4.486-21.247,8.437c-9.164-7.677-18.996-11.917-29.496-12.632c-14.819-0.998-28.467,4.787-40.938,18.827 C6.445,96.182,0,114.867,0,136.242c-0.007,6.371,0.674,12.646,2.053,18.738c4.593,22.785,15.398,41.367,32.558,55.344 c15.43,12.773,29.901,18.023,43.362,16.981c7.074-0.561,13.624-3.977,19.685-10.192c10.534,5.49,20.391,8.217,29.561,8.203 c9.856-0.012,20.236-2.953,31.125-8.898c6.227,6.692,12.966,10.346,20.211,10.933c13.795,1.073,28.614-4.111,44.377-16.84 c17.49-14.104,28.043-32.79,31.796-55.485c0.836-5.624,1.272-11.292,1.272-16.966C255.998,115.814,249.707,96.601,237.062,81.761z M54.795,97.7l40.661,14.496c-4.402,8.811-10.766,13.219-19.06,13.219c-2.542,0-4.917-0.419-7.122-1.274 C58.103,118.38,53.263,109.572,54.795,97.7z M150.613,185.396l-9.156-8.389l-7.619,12.951c-3.391,0.341-6.615,0.514-9.665,0.514 c-4.401,0-8.635-0.263-12.708-0.777l-8.634-14.973l-9.151,9.909c-4.91-2.717-9.15-5.856-12.708-9.413 c-8.81-8.295-13.384-17.959-13.727-28.97c2.877,1.692,7.427,3.461,13.675,5.308l10.636,13.629l9.44-9.852 c4.734,0.702,9.234,1.12,13.466,1.275l10.689,11.498l9.671-11.949c3.559-0.173,7.285-0.515,11.182-1.01l9.924,10.159l10.933-14.227 c5.931-1.351,11.196-2.798,15.771-4.323C179.747,163.538,169.068,176.414,150.613,185.396z M175.258,124.907 c-2.209,0.849-4.66,1.273-7.369,1.273c-8.134,0-14.489-4.415-19.052-13.224l40.905-14.477 C191.105,110.331,186.273,119.141,175.258,124.907z' + }, + gauge: { + itemStyle: { + normal: { + borderWidth: '0', + borderColor: '#ccc' + }, + emphasis: { + borderWidth: '0', + borderColor: '#ccc' + } + }, + symbol: 'path://M237.062,81.761L237.062,81.761c-12.144-14.24-25.701-20.1-40.68-19.072 c-10.843,0.747-20.938,5.154-30.257,13.127c-9.51-5.843-19.8-9.227-30.859-10.366c0.521-3.197,1.46-6.306,2.85-9.363 c3.458-7.038,8.907-12.741,16.331-17.296c-5.609-3.384-11.227-6.799-16.854-10.279c-16.257,8.104-25.06,20.601-26.463,38.417 c-7.599,1.705-14.685,4.486-21.247,8.437c-9.164-7.677-18.996-11.917-29.496-12.632c-14.819-0.998-28.467,4.787-40.938,18.827 C6.445,96.182,0,114.867,0,136.242c-0.007,6.371,0.674,12.646,2.053,18.738c4.593,22.785,15.398,41.367,32.558,55.344 c15.43,12.773,29.901,18.023,43.362,16.981c7.074-0.561,13.624-3.977,19.685-10.192c10.534,5.49,20.391,8.217,29.561,8.203 c9.856-0.012,20.236-2.953,31.125-8.898c6.227,6.692,12.966,10.346,20.211,10.933c13.795,1.073,28.614-4.111,44.377-16.84 c17.49-14.104,28.043-32.79,31.796-55.485c0.836-5.624,1.272-11.292,1.272-16.966C255.998,115.814,249.707,96.601,237.062,81.761z M54.795,97.7l40.661,14.496c-4.402,8.811-10.766,13.219-19.06,13.219c-2.542,0-4.917-0.419-7.122-1.274 C58.103,118.38,53.263,109.572,54.795,97.7z M150.613,185.396l-9.156-8.389l-7.619,12.951c-3.391,0.341-6.615,0.514-9.665,0.514 c-4.401,0-8.635-0.263-12.708-0.777l-8.634-14.973l-9.151,9.909c-4.91-2.717-9.15-5.856-12.708-9.413 c-8.81-8.295-13.384-17.959-13.727-28.97c2.877,1.692,7.427,3.461,13.675,5.308l10.636,13.629l9.44-9.852 c4.734,0.702,9.234,1.12,13.466,1.275l10.689,11.498l9.671-11.949c3.559-0.173,7.285-0.515,11.182-1.01l9.924,10.159l10.933-14.227 c5.931-1.351,11.196-2.798,15.771-4.323C179.747,163.538,169.068,176.414,150.613,185.396z M175.258,124.907 c-2.209,0.849-4.66,1.273-7.369,1.273c-8.134,0-14.489-4.415-19.052-13.224l40.905-14.477 C191.105,110.331,186.273,119.141,175.258,124.907z' + }, + candlestick: { + itemStyle: { + normal: { + color: '#ffee51', + color0: '#ffffff', + borderColor: '#ff715e', + borderColor0: '#797fba', + borderWidth: '1' + } + } + }, + graph: { + itemStyle: { + normal: { + borderWidth: '0', + borderColor: '#ccc' + } + }, + lineStyle: { + normal: { + width: '1', + color: '#888888' + } + }, + symbolSize: '8', + symbol: 'path://M237.062,81.761L237.062,81.761c-12.144-14.24-25.701-20.1-40.68-19.072 c-10.843,0.747-20.938,5.154-30.257,13.127c-9.51-5.843-19.8-9.227-30.859-10.366c0.521-3.197,1.46-6.306,2.85-9.363 c3.458-7.038,8.907-12.741,16.331-17.296c-5.609-3.384-11.227-6.799-16.854-10.279c-16.257,8.104-25.06,20.601-26.463,38.417 c-7.599,1.705-14.685,4.486-21.247,8.437c-9.164-7.677-18.996-11.917-29.496-12.632c-14.819-0.998-28.467,4.787-40.938,18.827 C6.445,96.182,0,114.867,0,136.242c-0.007,6.371,0.674,12.646,2.053,18.738c4.593,22.785,15.398,41.367,32.558,55.344 c15.43,12.773,29.901,18.023,43.362,16.981c7.074-0.561,13.624-3.977,19.685-10.192c10.534,5.49,20.391,8.217,29.561,8.203 c9.856-0.012,20.236-2.953,31.125-8.898c6.227,6.692,12.966,10.346,20.211,10.933c13.795,1.073,28.614-4.111,44.377-16.84 c17.49-14.104,28.043-32.79,31.796-55.485c0.836-5.624,1.272-11.292,1.272-16.966C255.998,115.814,249.707,96.601,237.062,81.761z M54.795,97.7l40.661,14.496c-4.402,8.811-10.766,13.219-19.06,13.219c-2.542,0-4.917-0.419-7.122-1.274 C58.103,118.38,53.263,109.572,54.795,97.7z M150.613,185.396l-9.156-8.389l-7.619,12.951c-3.391,0.341-6.615,0.514-9.665,0.514 c-4.401,0-8.635-0.263-12.708-0.777l-8.634-14.973l-9.151,9.909c-4.91-2.717-9.15-5.856-12.708-9.413 c-8.81-8.295-13.384-17.959-13.727-28.97c2.877,1.692,7.427,3.461,13.675,5.308l10.636,13.629l9.44-9.852 c4.734,0.702,9.234,1.12,13.466,1.275l10.689,11.498l9.671-11.949c3.559-0.173,7.285-0.515,11.182-1.01l9.924,10.159l10.933-14.227 c5.931-1.351,11.196-2.798,15.771-4.323C179.747,163.538,169.068,176.414,150.613,185.396z M175.258,124.907 c-2.209,0.849-4.66,1.273-7.369,1.273c-8.134,0-14.489-4.415-19.052-13.224l40.905-14.477 C191.105,110.331,186.273,119.141,175.258,124.907z', + smooth: false, + color: [ + '#ff715e', + '#ffaf51', + '#ffee51', + '#8c6ac4', + '#715c87' + ], + label: { + normal: { + textStyle: { + color: '#333333' + } + } + } + }, + map: { + itemStyle: { + normal: { + areaColor: '#555555', + borderColor: '#999999', + borderWidth: 0.5 + }, + emphasis: { + areaColor: 'rgba(255,175,81,0.5)', + borderColor: '#ffaf51', + borderWidth: 1 + } + }, + label: { + normal: { + textStyle: { + color: '#ffffff' + } + }, + emphasis: { + textStyle: { + color: 'rgb(255,238,81)' + } + } + } + }, + geo: { + itemStyle: { + normal: { + areaColor: '#555555', + borderColor: '#999999', + borderWidth: 0.5 + }, + emphasis: { + areaColor: 'rgba(255,175,81,0.5)', + borderColor: '#ffaf51', + borderWidth: 1 + } + }, + label: { + normal: { + textStyle: { + color: '#ffffff' + } + }, + emphasis: { + textStyle: { + color: 'rgb(255,238,81)' + } + } + } + }, + categoryAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#666666' + } + }, + axisTick: { + show: false, + lineStyle: { + color: '#333' + } + }, + axisLabel: { + show: true, + textStyle: { + color: '#999999' + } + }, + splitLine: { + show: true, + lineStyle: { + color: [ + '#555555' + ] + } + }, + splitArea: { + show: false, + areaStyle: { + color: [ + 'rgba(250,250,250,0.05)', + 'rgba(200,200,200,0.02)' + ] + } + } + }, + valueAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#666666' + } + }, + axisTick: { + show: false, + lineStyle: { + color: '#333' + } + }, + axisLabel: { + show: true, + textStyle: { + color: '#999999' + } + }, + splitLine: { + show: true, + lineStyle: { + color: [ + '#555555' + ] + } + }, + splitArea: { + show: false, + areaStyle: { + color: [ + 'rgba(250,250,250,0.05)', + 'rgba(200,200,200,0.02)' + ] + } + } + }, + logAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#666666' + } + }, + axisTick: { + show: false, + lineStyle: { + color: '#333' + } + }, + axisLabel: { + show: true, + textStyle: { + color: '#999999' + } + }, + splitLine: { + show: true, + lineStyle: { + color: [ + '#555555' + ] + } + }, + splitArea: { + show: false, + areaStyle: { + color: [ + 'rgba(250,250,250,0.05)', + 'rgba(200,200,200,0.02)' + ] + } + } + }, + timeAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#666666' + } + }, + axisTick: { + show: false, + lineStyle: { + color: '#333' + } + }, + axisLabel: { + show: true, + textStyle: { + color: '#999999' + } + }, + splitLine: { + show: true, + lineStyle: { + color: [ + '#555555' + ] + } + }, + splitArea: { + show: false, + areaStyle: { + color: [ + 'rgba(250,250,250,0.05)', + 'rgba(200,200,200,0.02)' + ] + } + } + }, + toolbox: { + iconStyle: { + normal: { + borderColor: '#999999' + }, + emphasis: { + borderColor: '#666666' + } + } + }, + legend: { + textStyle: { + color: '#999999' + } + }, + tooltip: { + axisPointer: { + lineStyle: { + color: '#cccccc', + width: 1 + }, + crossStyle: { + color: '#cccccc', + width: 1 + } + } + }, + timeline: { + lineStyle: { + color: '#ffaf51', + width: 1 + }, + itemStyle: { + normal: { + color: '#ffaf51', + borderWidth: 1 + }, + emphasis: { + color: '#ffaf51' + } + }, + controlStyle: { + normal: { + color: '#ffaf51', + borderColor: '#ffaf51', + borderWidth: 0.5 + }, + emphasis: { + color: '#ffaf51', + borderColor: '#ffaf51', + borderWidth: 0.5 + } + }, + checkpointStyle: { + color: '#ff715e', + borderColor: 'rgba(255,113,94,0.4)' + }, + label: { + normal: { + textStyle: { + color: '#ff715e' + } + }, + emphasis: { + textStyle: { + color: '#ff715e' + } + } + } + }, + visualMap: { + color: [ + '#ff715e', + '#ffee51', + '#797fba' + ] + }, + dataZoom: { + backgroundColor: 'rgba(255,255,255,0)', + dataBackgroundColor: 'rgba(222,222,222,1)', + fillerColor: 'rgba(255,113,94,0.2)', + handleColor: '#cccccc', + handleSize: '100%', + textStyle: { + color: '#999999' + } + }, + markPoint: { + label: { + normal: { + textStyle: { + color: '#333333' + } + }, + emphasis: { + textStyle: { + color: '#333333' + } + } + } + } +}; diff --git a/src/components/echarts/theme/macarons.js b/src/components/echarts/theme/macarons.js new file mode 100644 index 0000000..fda0e28 --- /dev/null +++ b/src/components/echarts/theme/macarons.js @@ -0,0 +1,520 @@ +/** + * Created by Zhang Haijun on 2018/6/8. + */ +export default { + color: [ + '#2ec7c9', + '#b6a2de', + '#5ab1ef', + '#ffb980', + '#d87a80', + '#8d98b3', + '#e5cf0d', + '#97b552', + '#95706d', + '#dc69aa', + '#07a2a4', + '#9a7fd1', + '#588dd5', + '#f5994e', + '#c05050', + '#59678c', + '#c9ab00', + '#7eb00a', + '#6f5553', + '#c14089' + ], + backgroundColor: 'rgba(0,0,0,0)', + textStyle: {}, + title: { + textStyle: { + color: '#008acd' + }, + subtextStyle: { + color: '#aaaaaa' + } + }, + line: { + itemStyle: { + normal: { + borderWidth: 1 + } + }, + lineStyle: { + normal: { + width: 2 + } + }, + symbolSize: 3, + symbol: 'emptyCircle', + smooth: true + }, + radar: { + itemStyle: { + normal: { + borderWidth: 1 + } + }, + lineStyle: { + normal: { + width: 2 + } + }, + symbolSize: 3, + symbol: 'emptyCircle', + smooth: true + }, + bar: { + itemStyle: { + normal: { + barBorderWidth: 0, + barBorderColor: '#ccc' + }, + emphasis: { + barBorderWidth: 0, + barBorderColor: '#ccc' + } + } + }, + pie: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + scatter: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + boxplot: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + parallel: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + sankey: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + funnel: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + gauge: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + candlestick: { + itemStyle: { + normal: { + color: '#d87a80', + color0: '#2ec7c9', + borderColor: '#d87a80', + borderColor0: '#2ec7c9', + borderWidth: 1 + } + } + }, + graph: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + } + }, + lineStyle: { + normal: { + width: 1, + color: '#aaaaaa' + } + }, + symbolSize: 3, + symbol: 'emptyCircle', + smooth: true, + color: [ + '#2ec7c9', + '#b6a2de', + '#5ab1ef', + '#ffb980', + '#d87a80', + '#8d98b3', + '#e5cf0d', + '#97b552', + '#95706d', + '#dc69aa', + '#07a2a4', + '#9a7fd1', + '#588dd5', + '#f5994e', + '#c05050', + '#59678c', + '#c9ab00', + '#7eb00a', + '#6f5553', + '#c14089' + ], + label: { + normal: { + textStyle: { + color: '#eeeeee' + } + } + } + }, + map: { + itemStyle: { + normal: { + areaColor: '#dddddd', + borderColor: '#eeeeee', + borderWidth: 0.5 + }, + emphasis: { + areaColor: 'rgba(254,153,78,1)', + borderColor: '#444444', + borderWidth: 1 + } + }, + label: { + normal: { + textStyle: { + color: '#d87a80' + } + }, + emphasis: { + textStyle: { + color: 'rgb(100,0,0)' + } + } + } + }, + geo: { + itemStyle: { + normal: { + areaColor: '#dddddd', + borderColor: '#eeeeee', + borderWidth: 0.5 + }, + emphasis: { + areaColor: 'rgba(254,153,78,1)', + borderColor: '#444444', + borderWidth: 1 + } + }, + label: { + normal: { + textStyle: { + color: '#d87a80' + } + }, + emphasis: { + textStyle: { + color: 'rgb(100,0,0)' + } + } + } + }, + categoryAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#008acd' + } + }, + axisTick: { + show: true, + lineStyle: { + color: '#333' + } + }, + axisLabel: { + show: true, + textStyle: { + color: '#333' + } + }, + splitLine: { + show: false, + lineStyle: { + color: [ + '#eee' + ] + } + }, + splitArea: { + show: false, + areaStyle: { + color: [ + 'rgba(250,250,250,0.3)', + 'rgba(200,200,200,0.3)' + ] + } + } + }, + valueAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#008acd' + } + }, + axisTick: { + show: true, + lineStyle: { + color: '#333' + } + }, + axisLabel: { + show: true, + textStyle: { + color: '#333' + } + }, + splitLine: { + show: true, + lineStyle: { + color: [ + '#eee' + ] + } + }, + splitArea: { + show: true, + areaStyle: { + color: [ + 'rgba(250,250,250,0.3)', + 'rgba(200,200,200,0.3)' + ] + } + } + }, + logAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#008acd' + } + }, + axisTick: { + show: true, + lineStyle: { + color: '#333' + } + }, + axisLabel: { + show: true, + textStyle: { + color: '#333' + } + }, + splitLine: { + show: true, + lineStyle: { + color: [ + '#eee' + ] + } + }, + splitArea: { + show: true, + areaStyle: { + color: [ + 'rgba(250,250,250,0.3)', + 'rgba(200,200,200,0.3)' + ] + } + } + }, + timeAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#008acd' + } + }, + axisTick: { + show: true, + lineStyle: { + color: '#333' + } + }, + axisLabel: { + show: true, + textStyle: { + color: '#333' + } + }, + splitLine: { + show: true, + lineStyle: { + color: [ + '#eee' + ] + } + }, + splitArea: { + show: false, + areaStyle: { + color: [ + 'rgba(250,250,250,0.3)', + 'rgba(200,200,200,0.3)' + ] + } + } + }, + toolbox: { + iconStyle: { + normal: { + borderColor: '#2ec7c9' + }, + emphasis: { + borderColor: '#18a4a6' + } + } + }, + legend: { + textStyle: { + color: '#333333' + } + }, + tooltip: { + axisPointer: { + lineStyle: { + color: '#008acd', + width: '1' + }, + crossStyle: { + color: '#008acd', + width: '1' + } + } + }, + timeline: { + lineStyle: { + color: '#008acd', + width: 1 + }, + itemStyle: { + normal: { + color: '#008acd', + borderWidth: 1 + }, + emphasis: { + color: '#a9334c' + } + }, + controlStyle: { + normal: { + color: '#008acd', + borderColor: '#008acd', + borderWidth: 0.5 + }, + emphasis: { + color: '#008acd', + borderColor: '#008acd', + borderWidth: 0.5 + } + }, + checkpointStyle: { + color: '#2ec7c9', + borderColor: 'rgba(46,199,201,0.4)' + }, + label: { + normal: { + textStyle: { + color: '#008acd' + } + }, + emphasis: { + textStyle: { + color: '#008acd' + } + } + } + }, + visualMap: { + color: [ + '#5ab1ef', + '#e0ffff' + ] + }, + dataZoom: { + backgroundColor: 'rgba(47,69,84,0)', + dataBackgroundColor: 'rgba(239,239,255,1)', + fillerColor: 'rgba(182,162,222,0.2)', + handleColor: '#008acd', + handleSize: '100%', + textStyle: { + color: '#333333' + } + }, + markPoint: { + label: { + normal: { + textStyle: { + color: '#eeeeee' + } + }, + emphasis: { + textStyle: { + color: '#eeeeee' + } + } + } + } +}; diff --git a/src/components/echarts/theme/walden.js b/src/components/echarts/theme/walden.js new file mode 100644 index 0000000..bf8d6e7 --- /dev/null +++ b/src/components/echarts/theme/walden.js @@ -0,0 +1,485 @@ +/** + * Created by Zhang Haijun on 2018/6/11. + */ +export default { + color: ['#19BE6B', '#2D8CF0', '#696bd8', '#ff6600', '#80848f', '#ff9900', '#f8453f'], + backgroundColor: 'rgba(252,252,252,0)', + textStyle: {}, + title: { + textStyle: { + color: '#666666' + }, + subtextStyle: { + color: '#999999' + } + }, + line: { + itemStyle: { + normal: { + borderWidth: '2' + } + }, + lineStyle: { + normal: { + width: '3' + } + }, + symbolSize: '8', + symbol: 'emptyCircle', + smooth: false + }, + radar: { + itemStyle: { + normal: { + borderWidth: '2' + } + }, + lineStyle: { + normal: { + width: '3' + } + }, + symbolSize: '8', + symbol: 'emptyCircle', + smooth: false + }, + bar: { + itemStyle: { + normal: { + barBorderWidth: 0, + barBorderColor: '#ccc' + }, + emphasis: { + barBorderWidth: 0, + barBorderColor: '#ccc' + } + } + }, + pie: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + scatter: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + boxplot: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + parallel: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + sankey: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + funnel: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + gauge: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + }, + emphasis: { + borderWidth: 0, + borderColor: '#ccc' + } + } + }, + candlestick: { + itemStyle: { + normal: { + color: '#e6a0d2', + color0: 'transparent', + borderColor: '#e6a0d2', + borderColor0: '#3fb1e3', + borderWidth: '2' + } + } + }, + graph: { + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#ccc' + } + }, + lineStyle: { + normal: { + width: '1', + color: '#cccccc' + } + }, + symbolSize: '8', + symbol: 'emptyCircle', + smooth: false, + color: [ + '#3fb1e3', + '#6be6c1', + '#626c91', + '#a0a7e6', + '#c4ebad', + '#96dee8' + ], + label: { + normal: { + textStyle: { + color: '#ffffff' + } + } + } + }, + map: { + itemStyle: { + normal: { + areaColor: '#eeeeee', + borderColor: '#aaaaaa', + borderWidth: 0.5 + }, + emphasis: { + areaColor: 'rgba(63,177,227,0.25)', + borderColor: '#3fb1e3', + borderWidth: 1 + } + }, + label: { + normal: { + textStyle: { + color: '#ffffff' + } + }, + emphasis: { + textStyle: { + color: 'rgb(63,177,227)' + } + } + } + }, + geo: { + itemStyle: { + normal: { + areaColor: '#eeeeee', + borderColor: '#aaaaaa', + borderWidth: 0.5 + }, + emphasis: { + areaColor: 'rgba(63,177,227,0.25)', + borderColor: '#3fb1e3', + borderWidth: 1 + } + }, + label: { + normal: { + textStyle: { + color: '#ffffff' + } + }, + emphasis: { + textStyle: { + color: 'rgb(63,177,227)' + } + } + } + }, + categoryAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#333' + } + }, + axisTick: { + show: true, + lineStyle: { + color: '#333' + } + }, + axisLabel: { + show: true, + textStyle: { + color: '#333' + } + }, + splitLine: { + show: false, + lineStyle: { + color: [ + '#ccc' + ] + } + }, + splitArea: { + show: false, + areaStyle: { + color: [ + 'rgba(250,250,250,0.3)', + 'rgba(200,200,200,0.3)' + ] + } + } + }, + valueAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#333' + } + }, + axisTick: { + show: true, + lineStyle: { + color: '#333' + } + }, + axisLabel: { + show: true, + textStyle: { + color: '#333' + } + }, + splitLine: { + show: true, + lineStyle: { + color: [ + '#ccc' + ] + } + }, + splitArea: { + show: false, + areaStyle: { + color: [ + 'rgba(250,250,250,0.3)', + 'rgba(200,200,200,0.3)' + ] + } + } + }, + logAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#333' + } + }, + axisTick: { + show: true, + lineStyle: { + color: '#333' + } + }, + axisLabel: { + show: true, + textStyle: { + color: '#333' + } + }, + splitLine: { + show: true, + lineStyle: { + color: [ + '#ccc' + ] + } + }, + splitArea: { + show: false, + areaStyle: { + color: [ + 'rgba(250,250,250,0.3)', + 'rgba(200,200,200,0.3)' + ] + } + } + }, + timeAxis: { + axisLine: { + show: true, + lineStyle: { + color: '#333' + } + }, + axisTick: { + show: true, + lineStyle: { + color: '#333' + } + }, + axisLabel: { + show: true, + textStyle: { + color: '#333' + } + }, + splitLine: { + show: true, + lineStyle: { + color: [ + '#ccc' + ] + } + }, + splitArea: { + show: false, + areaStyle: { + color: [ + 'rgba(250,250,250,0.3)', + 'rgba(200,200,200,0.3)' + ] + } + } + }, + toolbox: { + iconStyle: { + normal: { + borderColor: '#999999' + }, + emphasis: { + borderColor: '#666666' + } + } + }, + legend: { + textStyle: { + color: '#999999' + } + }, + tooltip: { + axisPointer: { + lineStyle: { + color: '#cccccc', + width: 1 + }, + crossStyle: { + color: '#cccccc', + width: 1 + } + } + }, + timeline: { + lineStyle: { + color: '#626c91', + width: 1 + }, + itemStyle: { + normal: { + color: '#626c91', + borderWidth: 1 + }, + emphasis: { + color: '#626c91' + } + }, + controlStyle: { + normal: { + color: '#626c91', + borderColor: '#626c91', + borderWidth: 0.5 + }, + emphasis: { + color: '#626c91', + borderColor: '#626c91', + borderWidth: 0.5 + } + }, + checkpointStyle: { + color: '#3fb1e3', + borderColor: 'rgba(63,177,227,0.15)' + }, + label: { + normal: { + textStyle: { + color: '#626c91' + } + }, + emphasis: { + textStyle: { + color: '#626c91' + } + } + } + }, + visualMap: { + color: [ + '#2a99c9', + '#afe8ff' + ] + }, + dataZoom: { + backgroundColor: 'rgba(255,255,255,0)', + dataBackgroundColor: 'rgba(222,222,222,1)', + fillerColor: 'rgba(114,230,212,0.25)', + handleColor: '#cccccc', + handleSize: '100%', + textStyle: { + color: '#999999' + } + }, + markPoint: { + label: { + normal: { + textStyle: { + color: '#ffffff' + } + }, + emphasis: { + textStyle: { + color: '#ffffff' + } + } + } + } +} diff --git a/src/components/index.js b/src/components/index.js new file mode 100644 index 0000000..274da89 --- /dev/null +++ b/src/components/index.js @@ -0,0 +1,38 @@ +/** + * Created by HaijunZhang on 2019/8/1. + */ + +import BarReverseCharts from './echarts/BarReverseCharts.vue' +import BarCharts from './echarts/BarCharts.vue' +import PieCharts from './echarts/PieCharts.vue' +import LineCharts from './echarts/LineCharts.vue' +import FullScreenContainer from './FullScreenContainer' +import ScrollTable from './ScrollTable' +import ScrollTableColumn from './ScrollTable/TableColumn' +import NoData from './NoData' + +const components = { + BarReverseCharts, + BarCharts, + PieCharts, + LineCharts, + FullScreenContainer, + ScrollTable, + ScrollTableColumn, + NoData, + Empty: NoData +} +const install = function (Vue, opts = {}) { + if (install.installed) return; + Object.keys(components).forEach(key => { + Vue.component(key, components[key]); + }); +} +if (typeof window !== 'undefined' && window.Vue) { + install(window.Vue); +} + +export default { + ...components, + install +} diff --git a/src/components/progress/index.vue b/src/components/progress/index.vue new file mode 100644 index 0000000..8079b17 --- /dev/null +++ b/src/components/progress/index.vue @@ -0,0 +1,118 @@ + + + diff --git a/src/config.js b/src/config.js new file mode 100644 index 0000000..92e1f07 --- /dev/null +++ b/src/config.js @@ -0,0 +1,13 @@ +/** + * 启用缓存加载速度会变快,但是数据安全性和实时性降低 + */ +// 是否启用权限本地缓存 +export const enablePermissionStorage = false +// 本地缓存的菜单key值 +export const menuKey = 'cmcMenuData' +// 是否启用用户本地缓存 +export const enableUserStorage = false +// 本地缓存的用户key值 +export const userKey = 'cmcUserData' +// 本地存储的cookie kye值 +export const tokenKey = 'SCREEN_TOKEN' diff --git a/src/css/common.scss b/src/css/common.scss new file mode 100644 index 0000000..1647ca1 --- /dev/null +++ b/src/css/common.scss @@ -0,0 +1,15 @@ +html, +body, +#app { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-size: 14px; + overflow: hidden !important; + font-family: Microsoft YaHei, Hiragino Sans GB; +} + +.iconfont { + font-size: 13px; +} \ No newline at end of file diff --git a/src/css/index.scss b/src/css/index.scss new file mode 100644 index 0000000..11a0dac --- /dev/null +++ b/src/css/index.scss @@ -0,0 +1,2 @@ +@import "./common.scss"; +@import "./layouts.scss"; \ No newline at end of file diff --git a/src/css/layouts.scss b/src/css/layouts.scss new file mode 100644 index 0000000..8942e82 --- /dev/null +++ b/src/css/layouts.scss @@ -0,0 +1,459 @@ +/*边距共有样式*/ + +.text-center { + text-align: center; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.p-none { + padding: 0 !important; +} + +.m-xxs { + margin: 2px 4px; +} + +.m-xs { + margin: 5px; +} + +.m-sm { + margin: 10px; +} + +.m { + margin: 15px; +} + +.m-md { + margin: 20px; +} + +.m-lg { + margin: 30px; +} + +.m-xl { + margin: 50px; +} + +.m-n { + margin: 0 !important; +} + +.m-l-none { + margin-left: 0 !important; +} + +.m-l-xs { + margin-left: 5px; +} + +.m-l-sm { + margin-left: 10px; +} + +.m-l { + margin-left: 15px; +} + +.m-l-md { + margin-left: 20px; +} + +.m-l-lg { + margin-left: 30px; +} + +.m-l-xl { + margin-left: 40px; +} + +.m-l-xxl { + margin-left: 50px; +} + +.m-l-n-xxs { + margin-left: -1px; +} + +.m-l-n-xs { + margin-left: -5px; +} + +.m-l-n-sm { + margin-left: -10px; +} + +.m-l-n { + margin-left: -15px; +} + +.m-l-n-md { + margin-left: -20px; +} + +.m-l-n-lg { + margin-left: -30px; +} + +.m-l-n-xl { + margin-left: -40px; +} + +.m-l-n-xxl { + margin-left: -50px; +} + +.m-t-none { + margin-top: 0 !important; +} + +.m-t-xxs { + margin-top: 1px; +} + +.m-t-xs { + margin-top: 5px !important; +} + +.m-t-sm { + margin-top: 10px !important; +} + +.m-t { + margin-top: 15px; +} + +.m-t-md { + margin-top: 20px; +} + +.m-t-lg { + margin-top: 30px; +} + +.m-t-xl { + margin-top: 40px; +} + +.m-t-xxl { + margin-top: 50px; +} + +.m-t-n-xxs { + margin-top: -1px; +} + +.m-t-n-xs { + margin-top: -5px; +} + +.m-t-n-7 { + margin-top: -7px; +} + +.m-t-n-sm { + margin-top: -10px; +} + +.m-t-n { + margin-top: -15px; +} + +.m-t-n-md { + margin-top: -20px; +} + +.m-t-n-lg { + margin-top: -30px; +} + +.m-t-n-xl { + margin-top: -40px; +} + +.m-t-n-xxl { + margin-top: -50px; +} + +.m-t-n-xxxl { + margin-top: -60px; +} + +.m-r-none { + margin-right: 0 !important; +} + +.m-r-xxs { + margin-right: 1px; +} + +.m-r-xs { + margin-right: 5px; +} + +.m-r-sm { + margin-right: 10px; +} + +.m-r { + margin-right: 15px !important; +} + +.m-r-md { + margin-right: 20px; +} + +.m-r-lg { + margin-right: 30px; +} + +.m-r-xl { + margin-right: 40px; +} + +.m-r-xxl { + margin-right: 50px; +} + +.m-r-n-xxs { + margin-right: -1px; +} + +.m-r-n-xs { + margin-right: -5px; +} + +.m-r-n-sm { + margin-right: -10px; +} + +.m-r-n { + margin-right: -15px; +} + +.m-r-n-md { + margin-right: -20px; +} + +.m-r-n-lg { + margin-right: -30px; +} + +.m-r-n-xl { + margin-right: -40px; +} + +.m-r-n-xxl { + margin-right: -50px; +} + +.m-b-none { + margin-bottom: 0 !important; +} + +.m-b-xxs { + margin-bottom: 1px; +} + +.m-b-xs { + margin-bottom: 5px; +} + +.m-b-sm { + margin-bottom: 10px !important; +} + +.m-b { + margin-bottom: 15px !important; +} + +.m-b-md { + margin-bottom: 20px; +} + +.m-b-lg { + margin-bottom: 30px; +} + +.m-b-xl { + margin-bottom: 40px; +} + +.m-b-xxl { + margin-bottom: 50px; +} + +.m-b-n-xxs { + margin-bottom: -1px; +} + +.m-b-n-xs { + margin-bottom: -5px; +} + +.m-b-n-sm { + margin-bottom: -10px; +} + +.m-b-n { + margin-bottom: -15px; +} + +.m-b-n-md { + margin-bottom: -20px; +} + +.m-b-n-lg { + margin-bottom: -30px; +} + +.m-b-n-xl { + margin-bottom: -40px; +} + +.m-b-n-xxl { + margin-bottom: -50px; +} + + +/*颜色共有样式*/ + +.btn-info { + color: #ffffff !important; + background-color: #497edf; + border-color: #497edf; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #ffffff !important; + background-color: #2059c1; + border-color: #2059c1; +} + +.btn-success { + color: #ffffff !important; + background-color: #27c24c; + border-color: #27c24c; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #ffffff !important; + background-color: #23ad44; + border-color: #20a03f; +} + +.btn-danger { + color: #ffffff !important; + background-color: #f05050; + border-color: #f05050; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #ffffff !important; + background-color: #ee3939; + border-color: #ed2a2a; +} + +.text-info { + color: #00aeef !important; +} + +.text-success { + color: #27c24c !important; +} + +.text-warning { + color: #fad733 !important; +} + +.text-danger { + color: #f05050; +} + +.text-white { + color: #FFF !important; +} + +.text-left { + text-align: left !important; +} + +.text-center { + text-align: center !important; +} + +.text-right { + text-align: right !important; +} + + +/*宽度样式*/ + +.w-xxs { + width: 60px; +} + +.w-xs { + width: 90px; +} + +.w-110 { + width: 110px; +} + +.w-ss { + width: 120px; +} + +.w-sm { + width: 150px; +} + +.w { + width: 200px; +} + +.w-md { + width: 240px; +} + +.w-lg { + width: 280px; +} + +.w-xl { + width: 320px; +} + +.w-xxl { + width: 360px; +} + +.w-full { + width: 100% !important; +} + +.w-auto { + width: auto; +} \ No newline at end of file diff --git a/src/filters/index.js b/src/filters/index.js new file mode 100644 index 0000000..1c93ec1 --- /dev/null +++ b/src/filters/index.js @@ -0,0 +1,28 @@ +export function alarmColorFilter(value) { + const map = { + DANGER: '#F84540', + WARNING: '#FF9900', + NORMAL: '#19BE6B', + INFO: '#2D8CF0' + } + return map[value] +} +export function alarmLevelFilter(value) { + const map = { + DANGER: '致命告警', + WARNING: '严重告警', + NORMAL: '一般告警', + INFO: '告警提示' + } + return map[value] +} +export function healthFilter(value) { + const map = { + 0: '健康', + 1: '严重告警', + 2: '重要告警', + 3: '次要告警', + 4: '提示告警' + } + return map[value] +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..1b0241f --- /dev/null +++ b/src/main.ts @@ -0,0 +1,21 @@ +import Vue from 'vue' +import App from './App.vue' +import router from './router' +import store from './store' +import VueCompositionAPI from '@vue/composition-api' +import ElementUI from 'element-ui' +import 'element-ui/lib/theme-chalk/index.css' +import dataV from '@jiaminghi/data-view' +import CommonComponents from './components' + +Vue.use(VueCompositionAPI) +Vue.use(ElementUI, { size: 'small' }) +Vue.use(dataV) +Vue.use(CommonComponents) +Vue.config.productionTip = false + +new Vue({ + router, + store, + render: h => h(App) +}).$mount('#app') diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..fbbac20 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,78 @@ +import Vue from 'vue' +import Home from 'views/Home.vue' +import VueRouter from 'vue-router' + +Vue.use(VueRouter) + +const routes = [ + { + path: '/login', + name: 'Login', + component: () => import('views/login/login.vue') + }, + { + path: '/sso', + component: () => import('views/login/sso.vue') + }, + { + path: '/', + redirect: '/login', + component: Home, + children: [{ + path: '/screen/list', + component: () => import('views/screen/index.vue') + }, { + path: '/screen/dc', + component: () => import('views/dc_screen/index.vue') + }, + // { + // path: '/screen/room', + // component: () => import('views/room_screen/index.vue') + // }, + { + path: '/screen/resource', + component: () => import('views/resource_screen/index.vue') + }, { + path: '/screen/order', + component: () => import('views/order_screen/index.vue') + }, { + path: '/screen/operation', + component: () => import('views/operation_screen/index.vue') + }, + // { + // path: '/screen/business_network', + // component: () => import('views/business_network_screen/index.vue') + // }, + { + path: '/room/3d/:id', + component: () => import('views/three_room/index.vue') + }, + // { + // path: '/screen/outside', + // component: () => import('views/outside/index.vue') + // }, { + // path: '/screen/dc_build', + // component: () => import('views/dc_screen_build/index.vue') + // }, + { + path: '/screen/count', + component: () => import('views/count_screen/index.vue') + } + // { + // path: '/screen/network', + // component: () => import('views/network_screen/index.vue') + // }, + // { + // path: '/screen/network_iframe', + // component: () => import('views/network_screen/topology.vue') + // } + ] + } +] +const router = new VueRouter({ + mode: 'history', + base: process.env.VUE_APP_BASEURL, + routes +}) + +export default router diff --git a/src/services/room/index.js b/src/services/room/index.js new file mode 100644 index 0000000..b71bedc --- /dev/null +++ b/src/services/room/index.js @@ -0,0 +1,6 @@ +import request from 'utils/request' +export function getHosts (rackId) { + return request.get('/ims/v1/hosts', { + params: { page: 1, rows: 10000, params: JSON.stringify([{ param: { rackId }, sign: 'EQ' }]) } + }) +} diff --git a/src/services/screen/business_network.js b/src/services/screen/business_network.js new file mode 100644 index 0000000..69ec4e5 --- /dev/null +++ b/src/services/screen/business_network.js @@ -0,0 +1,44 @@ +import request from 'utils/request' + +export function getTopoloy (name) { + return request.get('/cos/v1/network', { + params: { name } + }) +} +export function getRooms () { + return request.get('/ims/v1/rooms', { + params: { page: 1, rows: 10000 } + }) +} + +export function getHealthStatus () { + return request.get('/cos/v1/network/switch') +} +export function getMemTop10 () { + return request.get('/cos/v1/network/mem') +} +export function getCpuTop10 () { + return request.get('/cos/v1/network/cpu') +} +export function getPortTop10 () { + return request.get('/cos/v1/network/stream') +} + +export function getNetworkDevice () { + return request.get('/cos/v1/network/focus') +} +export function getAlarmList () { + return request.get('/cos/v1/network/alert') +} + +export function getNodeDetail (id, name) { + return request.get(`/cos/v1/network/nodes/${id}`, { + params: { name } + }) +} + +export function getLinkDetail (id, name) { + return request.get(`/cos/v1/network/edges/${id}`, { + params: { name } + }) +} diff --git a/src/services/screen/cloud_network.js b/src/services/screen/cloud_network.js new file mode 100644 index 0000000..a27f7b2 --- /dev/null +++ b/src/services/screen/cloud_network.js @@ -0,0 +1,42 @@ +import request from 'utils/request' + +export function getOverview (params) { + return request.get('/cos/v1/cloud/network/overview', { + params + }) +} + +export function getResource (params) { + return request.get('/cos/v1/cloud/network/resource', { + params + }) +} + +export function getServerTrend (params) { + return request.get('/cos/v1/cloud/network/server/trend', { + params + }) +} + +export function getTenantResource (params) { + return request.get('/cos/v1/cloud/network/tenants/resource', { + params + }) +} + +export function getProjectResource (params) { + return request.get('/cos/v1/cloud/network/projects/resource', { + params + }) +} + +export function getNetworks () { + return request.get('/cos/v1/cloud/network/links') +} +export function getOrders () { + return request.get('/cos/v1/cloud/network/tickets') +} + +export function getMapRelation () { + return request.get('/cos/v1/cloud/network/map') +} diff --git a/src/services/screen/dc.js b/src/services/screen/dc.js new file mode 100644 index 0000000..f6ca353 --- /dev/null +++ b/src/services/screen/dc.js @@ -0,0 +1,36 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +export function getDcs () { + return request.get('/ims/v1/dcs', { + params: { page: 1, rows: 10000 } + }) +} + +export function getOverview () { + return request.get('/cos/v1/data/center/overview') +} + +export function getUsed () { + return request.get('/cos/v1/data/center/used') +} + +export function getDcOverview () { + return request.get('/cos/v1/data/center') +} + +export function getDcItem (dcId = 0) { + return request.get(`/cos/v1/data/center/${dcId}`) +} + +export function getDcResource (dcId = 0) { + return request.get(`/cos/v1/data/center/${dcId}/resource`, { params: wrapperParams({ time: 'Weeks' }) }) +} + +export function getDcLink (dcId = 0) { + return request.get(`/cos/v1/data/center/${dcId}/links`) +} + +export function getDcList () { + return request.get('/cos/v1/data/center/relation') +} diff --git a/src/services/screen/order.js b/src/services/screen/order.js new file mode 100644 index 0000000..157d01d --- /dev/null +++ b/src/services/screen/order.js @@ -0,0 +1,22 @@ +import request from 'utils/request' + +export function getDashboard(params) { + return request.get('/cos/v1/soa/orders/dashboard', { + params + }) +} +export function getTenantsOrder(params) { + return request.get('/cos/v1/soa/tenants/orders', { + params + }) +} +export function getVendorTypeOrder(params) { + return request.get('/cos/v1/soa/orders/types', { + params + }) +} +export function getVendorOrder(params) { + return request.get('/cos/v1/soa/vendors/orders', { + params + }) +} diff --git a/src/services/screen/outside.js b/src/services/screen/outside.js new file mode 100644 index 0000000..2c8ef02 --- /dev/null +++ b/src/services/screen/outside.js @@ -0,0 +1,62 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +export function getDcs () { + return request.get('/ims/v1/dcs', { + params: { page: 1, rows: 10000 } + }) +} + +export function getMapToken () { + return request.post(`${process.env.VUE_APP_MAPURL}/SIPGIS/auth/jwt/token`, { + username: 'guest', + password: 'guest', + appId: 'BASE-ADMIN' + }, { + headers: { + 'Content-Type': 'application/json', + 'X-HW-ID': 'IOC-GIS-TEST', + 'X-HW-APPKEY': 'rqoH9mXywcFpnJLYMyRjaA==', + options: { + noSeri: true, + ignoreError: true + } + } + }) +} +export const mapUrl = `${process.env.VUE_APP_MAPURL}${process.env.VUE_APP_MAPTILE}` +export function getMapConfig (token) { + return request.get(mapUrl, { + params: { + sipsdToken: token + }, + headers: { + 'Content-Type': 'application/json', + 'X-HW-ID': 'IOC-GIS-TEST', + 'X-HW-APPKEY': 'rqoH9mXywcFpnJLYMyRjaA==', + options: { + noSeri: true, + ignoreError: true + } + } + }) +} + +export function getOverview (dcId) { + return request.get('/cos/v1/external/resource/overview', { params: { dcId } }) +} +export function getVmApplyTrend (dcId) { + return request.get('/cos/v1/external/vms/trend', { params: { dcId } }) +} +export function getResourceApplyTrend (dcId) { + return request.get('/cos/v1/external/resource/trend', { params: { dcId } }) +} +export function getTenantResource (dcId) { + return request.get('/cos/v1/external/tenants/resource', { params: { dcId } }) +} +export function getProjectResource (dcId) { + return request.get('/cos/v1/external/projects/resource', { params: { dcId } }) +} +export function getBusinessResource (dcId) { + return request.get('/cos/v1/external/business/resource', { params: { dcId } }) +} diff --git a/src/services/screen/resource.js b/src/services/screen/resource.js new file mode 100644 index 0000000..3db5436 --- /dev/null +++ b/src/services/screen/resource.js @@ -0,0 +1,56 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +export function getOverview (type) { + return request.get('/cos/v1/cloud/resource/overview', { params: { type } }) +} +export function getPlatformOverview (type) { + return request.get('/cos/v1/cloud/resource', { params: { type } }) +} + +export function getUsed (type) { + return request.get('/cos/v1/cloud/resource/used', { params: { type } }) +} + +export function getVendors () { + return request.get('/cos/v1/cloud/resource/type') +} + +export function getPlatforms (type) { + return request.get('/cos/v1/cloud/resource/platform', { params: wrapperParams({ type }) }) +} + +export function getAlarmPieChart() { + return request.get('/cms/v1/alarms/chart', { + params: { action: 'pieChart' } + }) +} + +export function getResourceApply (type) { + return request.get('/cos/v1/cloud/resource/apply', { params: { type } }) +} + +export function getResourceTrend (type) { + return request.get('/cos/v1/cloud/resource/trend', { params: { type } }) +} + +// 资源利用率TOP5 +export function getResTops(params) { + return request.get('/cms/v1/tops', { + params + }) +} + +export function getVendorTypes() { + return request.get('/cos/v1/cloud/resource/types') +} +export function getHostStatus(type) { + return request.get('/cos/v1/cloud/resource/status', { + params: { type } + }) +} +export function getResourceCount(type) { + return request.get('/cos/v1/cloud/resource/count', { + params: { type } + }) +} diff --git a/src/services/screen/room.js b/src/services/screen/room.js new file mode 100644 index 0000000..76c4df2 --- /dev/null +++ b/src/services/screen/room.js @@ -0,0 +1,46 @@ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +export function getRooms () { + return request.get('/ims/v1/rooms', { + params: { page: 1, rows: 10000 } + }) +} + +export function getRoomDetail (id) { + return request.get(`/ims/v1/rooms/${id}`) +} + +export function getRacks (roomId) { + return request.get('/ims/v1/racks', { + params: { page: 1, rows: 10000, params: JSON.stringify([{ param: { roomId }, sign: 'EQ' }]) } + }) +} + +export function getOverview () { + return request.get('/cos/v1/engine/room/base') +} + +export function getCount (roomId = 0) { + return request.get(`/cos/v1/engine/room/${roomId}/count`) +} + +export function getEquipmentCount (roomId = 0) { + return request.get(`/cos/v1/engine/room/${roomId}/equipments/switch`) +} + +export function getAlarmCount (roomId = 0) { + return request.get(`/cos/v1/engine/room/${roomId}/equipments/alert`) +} + +export function getServerCount (roomId = 0, params = { type: 'cpu' }) { + return request.get(`/cos/v1/engine/room/${roomId}/servers`, { + params + }) +} +export function getDeviceList (roomId = 0) { + return request.get(`/cos/v1/engine/room/${roomId}/equipments/temperature`) +} +export function getAlertList (roomId = 0) { + return request.get(`/cos/v1/engine/room/${roomId}/alert`) +} diff --git a/src/services/screen/task.js b/src/services/screen/task.js new file mode 100644 index 0000000..09315b1 --- /dev/null +++ b/src/services/screen/task.js @@ -0,0 +1,11 @@ +import request from 'utils/request' +const baseUrl = '/cop/v1/tasks' +export function getTaskStat() { + return request.get(`${baseUrl}/stats`) +} +const instanceUrl = '/cop/v1/tasks/instances' +export function getInstance(params) { + return request.get(instanceUrl, { + params + }) +} diff --git a/src/services/system/index.js b/src/services/system/index.js new file mode 100644 index 0000000..e415de4 --- /dev/null +++ b/src/services/system/index.js @@ -0,0 +1,33 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import request from 'utils/request' +import { wrapperParams } from 'utils' + +export function login (params) { + return request.post('/sms/v1/users/login', params) +} +export function logout () { + return request.post('/sms/v1/users/logout') +} +export function getSystemConfigs(params) { + return request.get('/sms/v1/configs', { params }) +} +// 获取token +export function refreshToken (params) { + return request.get('/sms/v1/token', { params }) +} +export function getDictChildren(params) { + return request.get('/sms/v1/dictionaries/children', { params }) +} +// 获取应用信息 +export function getAppInfo (code) { + return request.get('/sms/v1/apps', { + params: { + condition: JSON.stringify({ + condition: 'queryByCode', + code + }) + } + }) +} diff --git a/src/shims-ajax.d.ts b/src/shims-ajax.d.ts new file mode 100644 index 0000000..bb3bd9c --- /dev/null +++ b/src/shims-ajax.d.ts @@ -0,0 +1,21 @@ +import {} from 'axios' +declare module 'axios' { + export interface AxiosInstance { + (config: AxiosRequestConfig): AxiosPromise; + (url: string, config?: AxiosRequestConfig): AxiosPromise; + defaults: AxiosRequestConfig; + interceptors: { + request: AxiosInterceptorManager; + response: AxiosInterceptorManager; + }; + getUri(config?: AxiosRequestConfig): string; + request> (config: AxiosRequestConfig): Promise; + get>(url: string, config?: AxiosRequestConfig): Promise; + delete>(url: string, config?: AxiosRequestConfig): Promise; + head>(url: string, config?: AxiosRequestConfig): Promise; + options>(url: string, config?: AxiosRequestConfig): Promise; + post>(url: string, data?: any, config?: AxiosRequestConfig): Promise; + put>(url: string, data?: any, config?: AxiosRequestConfig): Promise; + patch>(url: string, data?: any, config?: AxiosRequestConfig): Promise; + } +} diff --git a/src/shims-global.d.ts b/src/shims-global.d.ts new file mode 100644 index 0000000..a3da088 --- /dev/null +++ b/src/shims-global.d.ts @@ -0,0 +1,53 @@ +declare module Base { + // ajax请求返回数据格式 + interface IResponseData { + success: boolean + failed: boolean + solution: string + message: string + errorMsg: string + data: T + status: string + } + // list接口返回数据格式 + interface IListData{ + page: number, + pages: number, + total:number, + rows: T[] + } + interface IResponseList extends IResponseData{ + data: IListData + } + // 列表查询传参 + interface IListParams { + page?: number + rows?: number + simple?: boolean + params?: string, + sorter?: string + } + // 模态框打开 + interface IDialog { + visible: boolean + record: T + } + // 搜索配置 + interface ISearchConfig { + label?: string, + value: string, + type: string, + initValue?: string | number, + sign?: string, + data?: T[], + onChange?: { + (val: string, listQuery: any): void + } + } + // 列表 + type IListState = { + list: T[], + total: number, + params: IListParams, + } +} diff --git a/src/shims-tsx.d.ts b/src/shims-tsx.d.ts new file mode 100644 index 0000000..c656c68 --- /dev/null +++ b/src/shims-tsx.d.ts @@ -0,0 +1,13 @@ +import Vue, { VNode } from 'vue' + +declare global { + namespace JSX { + // tslint:disable no-empty-interface + interface Element extends VNode {} + // tslint:disable no-empty-interface + interface ElementClass extends Vue {} + interface IntrinsicElements { + [elem: string]: any + } + } +} diff --git a/src/shims-vue.d.ts b/src/shims-vue.d.ts new file mode 100644 index 0000000..d9f24fa --- /dev/null +++ b/src/shims-vue.d.ts @@ -0,0 +1,4 @@ +declare module '*.vue' { + import Vue from 'vue' + export default Vue +} diff --git a/src/shims.tools.d.ts b/src/shims.tools.d.ts new file mode 100644 index 0000000..439f014 --- /dev/null +++ b/src/shims.tools.d.ts @@ -0,0 +1,2 @@ +declare module '@jiaminghi/data-view' +declare module 'cmp-echarts' diff --git a/src/store/getters.js b/src/store/getters.js new file mode 100644 index 0000000..5f312bf --- /dev/null +++ b/src/store/getters.js @@ -0,0 +1,5 @@ +const getters = { + desktopUrl: state => state.desktopUrl, + screenConfigs: state => state.screenConfigs +} +export default getters diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..d017184 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,42 @@ +import Vue from 'vue' +import Vuex from 'vuex' +import getters from './getters' +import { getSystemConfigs, getDictChildren } from 'services/system' +Vue.use(Vuex) + +export default new Vuex.Store({ + state: { + cmcUrl: null, + screenConfigs: {} + }, + mutations: { + SET_CMC_URL(state, value) { + state.cmcUrl = value + }, + SET_SCREEN_CONFIGS(state, value) { + state.screenConfigs = value + } + }, + actions: { + async GetCmcUrl({ commit }) { + const data = await getSystemConfigs({ codes: 'CmcAddress' }); + if (data.success) { + commit('SET_CMC_URL', data.data.CmcAddress) + } + }, + async GetScreenConfigs({ commit }) { + const data = await getDictChildren({ value: 'SYSTEM_SCREEN' }); + if (data.success) { + const obj = {}; + data.data.forEach(item => { + const { name, value } = item; + obj[value] = name + }) + commit('SET_SCREEN_CONFIGS', obj) + } + } + }, + getters, + modules: { + } +}) diff --git a/src/three/ThreeCore.js b/src/three/ThreeCore.js new file mode 100644 index 0000000..c4677f1 --- /dev/null +++ b/src/three/ThreeCore.js @@ -0,0 +1,202 @@ +import * as THREE from 'three'; +import OrbitControls from 'three-orbitcontrols'; +import TWEEN from '@tweenjs/tween.js'; +import Stats from 'stats.js' +export default class ThreeCore { + constructor(dom, options = {}) { + this.options = options; + const { dev = false } = options; + this.dom = dom; + if (this.scene) return; + this.width = options.width || dom.offsetWidth; + this.height = options.height || dom.offsetHeight; + this.initScene(); + this.initCamera(); + this.initLight(); + this.initThree(dom); + this.initControls(); + // 3d性能监控 + if (dev) this.initStates() + this.animate(); + this.onResize(); + this.init(); + } + + initStates() { + const stats = new Stats(); + this.stats = stats; + stats.showPanel(0); // 0: fps, 1: ms, 2: mb, 3+: custom + document.body.appendChild(stats.dom); + } + + init() {} + + animate() { + this.render(); + this.rafId = requestAnimationFrame(() => this.animate()); + } + + // 获取操作对象 + getOperateObject(event) { + event.preventDefault(); + const { offsetWidth, offsetHeight } = this.dom; + const { left, top } = this.dom.getBoundingClientRect(); + // 页面缩放比例 + const { scale = 1 } = this.options; + const raycaster = new THREE.Raycaster() + const mouse = new THREE.Vector2(); + mouse.x = ((event.clientX - left) / scale / offsetWidth) * 2 - 1; + mouse.y = -((event.clientY - top) / scale / offsetHeight) * 2 + 1; + raycaster.setFromCamera(mouse, this.camera) + // 4、计算射线相机到的对象,可能有多个对象,因此返回的是一个数组,按离相机远近排列 + // 将射线投影到屏幕,如果scene.children里的某个或多个形状相交,则返回这些形状 + // 第二个参数是设置是否递归,默认是false,也就是不递归。当scene里面添加了Group对象的实例时,就需要设置这个参数为true + // 第一个参数不传scene.children也可以,传一个group.children或一个形状数组都可以(这样可以实现一些特别的效果如点击内部的效果) + // 另外,因为返回的是一个数组,所以遍历数组就可以获得所有相交的对象,当元素重叠时,特别有用 + const intersects = raycaster.intersectObjects(this.scene.children, true); + if (intersects.length) { + return intersects[0].object; + } + return null; + } + + onResize() { + window.onresize = () => { + // 设置延迟,因为宽高取得是父元素的,窗口变化时父元素还未完成变化 + setTimeout(() => { + this.width = this.dom.offsetWidth; + this.height = this.dom.offsetHeight; + this.camera.aspect = this.width / this.height; + this.camera.updateProjectionMatrix(); + this.renderer.setSize(this.width, this.height); + }, 1000) + } + } + + // 对材质和集合对象进行释放 + dispose (parent, child) { + function clearMaterial(material) { + if (material.length) { + material.forEach(item => { + // 清除texture + if (item.map) { + item.map.dispose(); + } + item.dispose() + }) + } else { + if (material.map) material.map.dispose(); + material.dispose(); + } + } + if (child.children.length) { + const arr = child.children.filter(x => x); + arr.forEach(a => { + this.dispose(child, a) + }) + } + const typeArr = ['Mesh', 'Sprite', 'Line', 'LineSegments'] + if (typeArr.includes(child.type)) { + clearMaterial(child.material); + child.geometry.dispose(); + } + child.remove(); + parent.remove(child); + } + + // 清除场景对象,threejs不能自动清除,只能通过手动方式,不然会内存溢出 + clearScene() { + const arr = this.scene.children.filter(x => x) + arr.forEach(a => { + this.dispose(this.scene, a); + }); + this.scene.remove(); + this.scene = null; + } + + destory() { + const target = this.dom || document + target.ondblclick = null; + target.onmousemove = null; + window.onresize = null; + this.camera = null; + this.controls = null; + this.clearScene(); + this.clearOther && this.clearOther(); + this.renderer.dispose(); + this.renderer.forceContextLoss(); + this.renderer.content = null; + this.renderer.domElement = null; + cancelAnimationFrame(this.rafId); + this.rafId = null; + console.log('3d销毁', this.renderer.info) + } + + /** + * 创建渲染器对象 + */ + initThree(dom) { + const { background = 0x0D1A34 } = this.options; + this.renderer = new THREE.WebGLRenderer({ + antialias: true, // 抗锯齿:true + alpha: true + }); + this.renderer.setSize(this.width, this.height); // 设置渲染区域尺寸 + // this.renderer.setClearColor(background); // 背景色 + dom.appendChild(this.renderer.domElement); // body元素中插入canvas对象 + } + + /** + * 创建场景对象Scene + */ + initScene() { + this.scene = new THREE.Scene(); + // //添加坐标轴 + // this.scene.add(new THREE.AxesHelper(150)); + } + + /** + * 相机设置 + */ + initCamera() { + const { camera: { VIEW_ANGLE = 45, NEAR = 0.1, FAR = 2000, position: { x = 0, y = 400, z = 1000 } = {} } = {} } = this.options; + const ASPECT = this.width / this.height; + // 创建相机对象 + this.camera = new THREE.PerspectiveCamera(VIEW_ANGLE, ASPECT, NEAR, FAR); + this.camera.position.set(x, y, z); // 设置相机位置 + this.camera.lookAt(this.scene.position); // 设置相机方向(指向的场景对象) + } + + /** + * 光源设置 + */ + initLight() { + const point = new THREE.PointLight(0xffffff); + point.position.set(100, 100, 100); // 点光源位置 + this.scene.add(point); // 点光源添加到场景中 + // //环境光 + const light = new THREE.AmbientLight(0xcccccc); + light.position.set(0, 0, 0); + this.scene.add(light); + } + + // 创建控件对象 + initControls() { + this.controls = new OrbitControls(this.camera, this.renderer.domElement); // 创建控件对象 + this.controls.addEventListener('change', () => this.render()); // 监听鼠标、键盘事件 + } + + render() { + if (!this.scene || !this.camera) return; + // 如果存在,更新时渲染其他数据 + if (typeof this.update === 'function') this.update(); + const { needTween = true } = this.options + needTween && TWEEN.update(); + this.doAnimate && this.doAnimate(); + this.renderer.render(this.scene, this.camera); // 执行渲染操作 + if (this.stats) { + this.stats.begin(); + this.stats.end(); + } + } +} diff --git a/src/three/ThreeRack.js b/src/three/ThreeRack.js new file mode 100644 index 0000000..9003700 --- /dev/null +++ b/src/three/ThreeRack.js @@ -0,0 +1,116 @@ +import * as THREE from 'three'; +import ThreeCore from './ThreeCore' +import { throttle } from 'lodash-es' +import TWEEN from '@tweenjs/tween.js'; +import Rack from './components/Rack'; +import Server from './components//Server'; +import Switch from './components/Switch'; + +export default class Three extends ThreeCore { + init() { + this.bindEvent(); + this.alarmElements = []; + // this.createFloor() + } + + // 关闭机柜门时,将机柜中的服务器收起 + closeAllServer(servers) { + servers.forEach(item => { + item.position.z = 0; + }); + this.updateServerData({}) + } + + findRack() { + const item = this.scene.children.find(item => item.name === 'rackGroup'); + return item; + } + + // 事件绑定 + bindEvent() { + const target = this.dom || document + target.ondblclick = event => { + const obj = this.getOperateObject(event); + if (!obj) return; + // 服务器移出移入 + if (obj.name === 'server') { + const item = obj.parent; + if (item.position.z == 0) { + const rack = this.findRack(); + this.closeAllServer(rack.servers); + new TWEEN.Tween(item.position).to({ + z: item.position.z + 10 + }, 500).easing(TWEEN.Easing.Elastic.Out).start(); + if (this.updateServerData) { + this.updateServerData(item.userData) + } + } else { + new TWEEN.Tween(item.position).to({ + z: item.position.z - 10 + }, 500).easing(TWEEN.Easing.Elastic.Out).start(); + this.updateServerData({}) + } + } + if (typeof obj.dblclick == 'function') { + obj.dblclick(obj); + if (obj.name === 'rack_door') { + const rackGroup = obj.parent; + if (rackGroup.rotation.y === 0) return; + this.closeAllServer(rackGroup.parent.servers); + } + } + }; + } + + createRack(item, config) { + this.rackConfig = { + size: { w: 30, h: 88, d: 30 }, // 尺寸 + position: { px: 0, py: -44, pz: 0 }, + type: 'normal', + ...config + } + const rack = new Rack({ + ...item, + config: this.rackConfig + }); + this.scene.add(rack.rackGroup); + this.rack = rack.rackGroup; + } + + getAlarmElements() { + const rack = this.scene.children.filter(item => item.name === 'rackGroup' && item.userData.isAlarm)[0]; + if (!rack) return; + // const arr = rack.children.filter(item => item.name === 'rackAlarm'); + const arr = []; + rack.servers.forEach(item => { + const cell = item.children.filter(item => item.name === 'rackAlarm'); + arr.push(...cell) + }) + this.alarmElements = arr; + } + + doAnimate = throttle(() => { + this.alarmElements.forEach(item => { + item.visible = !item.visible; + }); + }, 600) + + createServer(servers = [], updateServerData) { + this.updateServerData = updateServerData; + const config = this.rackConfig; + this.rack.servers = []; + servers.forEach(cell => { + let obj = ''; + if (cell.type === 'switch') { + const switchItem = new Switch(config, cell); + obj = switchItem.switchGroup; + } else { + const server = new Server(config, cell, updateServerData); + obj = server.serverGroup; + } + this.scene.add(obj); + this.rack.servers.push(obj) + }); + this.getAlarmElements(); + } +} diff --git a/src/three/ThreeRoom.js b/src/three/ThreeRoom.js new file mode 100644 index 0000000..cce3039 --- /dev/null +++ b/src/three/ThreeRoom.js @@ -0,0 +1,244 @@ +import * as THREE from 'three'; +import ThreeCore from './ThreeCore' +import { throttle } from 'lodash-es' +import Wall from './components/Wall'; +import SimpleRack from './components/SimpleRack'; +import RackUsage from './components/RackUsage'; +import RackCapacity from './components/RackCapacity'; +import Dashboard from './components/Dashboard'; +import TemperatureBoard from './components/TemperatureBoard' +// import Monitor from './components/Monitor'; +import { canvasTxture, generateRacks } from './components/tools'; +import defaultRoom from './data/defaultRoom' + +export default class Three extends ThreeCore { + init() { + this.createFloor(); + this.alarmElements = []; + // const test = new Monitor(this.scene, this.render); + if (this.options.needBindEvent) { + this.bindEvent(); + const { showRackInfo, closeRackInfo } = this.options; + this.showRackInfo = showRackInfo; + this.closeRackInfo = closeRackInfo; + }; + } + + // 获取顶级父元素 + getParent(obj) { + if (obj.parent.type !== 'Scene') { + return this.getParent(obj.parent) + } + return obj; + } + + // 事件绑定 + bindEvent() { + const target = this.dom || document + target.ondblclick = event => { + const obj = this.getOperateObject(event); + if (!obj) return; + // const { position } = this.getParent(obj) + // this.camera.position.set(position.x, position.y, position.z + 100); + // this.camera.lookAt(position) + if (typeof obj.dblclick == 'function') { + obj.dblclick(obj); + } else if (obj.parent && typeof obj.parent.dblclick === 'function') { + obj.parent.dblclick(obj.parent); + } + }; + target.onmousemove = event => { + const obj = this.getOperateObject(event); + if (!obj) return; + if (typeof obj.hover == 'function') { + obj.hover(obj); + } else if (obj.parent && typeof obj.parent.hover === 'function') { + obj.parent.hover(obj.parent); + this.showRackInfo(event, obj.parent); + } else { + this.closeRackInfo(); + } + }; + } + + // 清除事件 + clearOther() { + if (this.temperatureBoard) { + this.temperatureBoard.clear() + } + } + + // 事件移除 + removeEvent() { + const target = this.dom || document; + target.ondblclick = null; + target.onmousemove = null; + } + + // initModel() { + // // FLOOR + // this.createFloor(); + // // 机房长宽高 + // // const test = generateRacks(4, 5, 680, 500, -317, -230); + // // test.forEach(item => { + // // const { position, size } = item; + // // console.log(JSON.stringify({ position, size })) + // // }) + // // this.createPoster(); + // // const test = new Monitor(this.scene, this.render); + // } + + createRoom(configs) { + const { walls = [], airs = [], dashboards = [], marks = [] } = configs || defaultRoom; + // eslint-disable-next-line no-new + new Wall(this.scene, walls); + this.createAir(airs); + dashboards.forEach(item => { + const dashboard = new Dashboard(item, this.scene); + }); + marks.forEach(item => { + this.createMark(item) + }) + } + + createRack(racks) { + const { rackOptions } = this.options; + racks.forEach(item => { + // eslint-disable-next-line no-new + new SimpleRack(item, rackOptions, this.scene); + }); + this.getAlarmElements(); + } + + getAlarmElements() { + this.alarmElements = this.scene.children.filter(item => item.name === 'rackAlarm'); + } + + doAnimate = throttle(() => { + this.alarmElements.forEach(item => { + item.visible = !item.visible; + }); + }, 600) + + // 隐藏展示机柜 + operateRacks(visible) { + this.scene.children.forEach(item => { + if (item.name === 'rackGroup') { + item.visible = visible; + } + }) + } + + // 重置机柜 + resetRack() { + this.clearElement(['rackUsage', 'rackCapacity']); + this.operateRacks(true); + } + + // 移除元素 + clearElement(names = ['rackUsage']) { + const arr = this.scene.children.filter(x => names.includes(x.name)); + arr.forEach(item => this.dispose(this.scene, item)); + } + + // 温度云控制 + operateTemperature() { + console.log(this.renderer.info) + if (this.temperatureBoard) { + const board = this.temperatureBoard.board; + board.visible = !board.visible; + } else { + this.temperatureBoard = new TemperatureBoard({}, this.scene) + } + } + + // 机柜利用率展示 + createRackUsage(racks) { + racks.forEach(item => { + const rack = new RackUsage(item); + this.scene.add(rack.rackUsage); + }); + this.operateRacks(false); + this.clearElement(['rackCapacity']) + } + + // 机柜容量展示 + createRackCapacity(racks) { + racks.forEach(item => { + const rack = new RackCapacity(item); + this.scene.add(rack.rackCapacity); + }); + this.operateRacks(false); + this.clearElement(['rackUsage']) + } + + createAir(airs) { + airs.forEach(item => this.createAirConditioner(item)); + } + + createFloor() { + const texture = new THREE.TextureLoader().load('/scr-web/static/img/three_room/floor.jpg'); + texture.wrapS = texture.wrapT = THREE.RepeatWrapping; + texture.repeat.set(1200 / 500, 1000 / 500); + // FLOOR + const floorMaterial = new THREE.MeshBasicMaterial({ + map: texture, + color: 0xffffff, + side: THREE.DoubleSide + }); + const floorGeometry = new THREE.PlaneGeometry(1200, 1000); + const floor = new THREE.Mesh(floorGeometry, floorMaterial); + // floor.position.x = 0; + // floor.position.y = 0; + // floor.position.z = 0; + + floor.rotation.x = Math.PI / 2; + this.scene.add(floor); + // targetList.push(floor); + + return floor; + } + + createMark(config = {}) { + const { width = 160, text = '区 域 D', height = 60, textConfig = {}, px = 250, py = 2, pz = 0, rx = -Math.PI / 2, ry = 0, rz = Math.PI / 2 } = config; + const material = new THREE.MeshBasicMaterial({ + map: canvasTxture(text, { width, height, font: 'bold 30px SimHei', fillColor: 'rgba(0,0,0,0)', color: '#5c7373', ...textConfig }), + side: THREE.DoubleSide, + transparent: true + }); + const geometry = new THREE.PlaneGeometry(width, height); + const mark = new THREE.Mesh(geometry, material); + mark.position.set(px, py, pz); + mark.rotation.set(rx, ry, rz); + this.scene.add(mark); + } + + createAirConditioner({ w, h, d, px, py, pz, ry = Math.PI / 2 }) { + const texture = new THREE.TextureLoader().load('/scr-web/static/img/three_room/air.png'); + texture.wrapS = texture.wrapT = THREE.RepeatWrapping; + texture.repeat.set(1, 1); + + const geometry = new THREE.BoxGeometry(w, h, d); + // var material = new THREE.MeshBasicMaterial( { map: texture } ); + // Create an array of materials to be used in a cube, one for each side + const materialArray = []; + // order to add materials: x+,x-,y+,y-,z+,z- + materialArray.push(new THREE.MeshBasicMaterial({ color: 0xbbbbbb })); + materialArray.push(new THREE.MeshBasicMaterial({ color: 0xbbbbbb })); + materialArray.push(new THREE.MeshBasicMaterial({ color: 0xbbbbbb })); + materialArray.push(new THREE.MeshBasicMaterial({ color: 0xbbbbbb })); + materialArray.push(new THREE.MeshBasicMaterial({ map: texture })); + materialArray.push(new THREE.MeshBasicMaterial({ color: 0xbbbbbb })); + + const air = new THREE.Mesh(geometry, materialArray); + + air.position.x = px; + air.position.y = py; + air.position.z = pz; + air.rotation.y = ry; + this.scene.add(air); + // targetList.push(air); + + return air; + } +} diff --git a/src/three/components/Alarm.js b/src/three/components/Alarm.js new file mode 100644 index 0000000..f3a469d --- /dev/null +++ b/src/three/components/Alarm.js @@ -0,0 +1,20 @@ +import { Group, TextureLoader, MeshBasicMaterial } from 'three'; +import * as THREE from 'three'; +export default class CreateAlarm { + constructor(options) { + this.createAlarm(options); + } + + // 创建告警 + createAlarm(options) { + const { px, py, pz, sx = 10, sy = 10, sz = 1 } = options + const spriteMaterial = new THREE.SpriteMaterial({ + map: new THREE.TextureLoader().load('/scr-web/static/img/three_room/alarm.png') + }); + const sprite = new THREE.Sprite(spriteMaterial); + sprite.position.set(px, py, pz); + sprite.scale.set(sx, sy, sz); + sprite.name = 'rackAlarm'; + this.sprite = sprite; + } +} diff --git a/src/three/components/Dashboard.js b/src/three/components/Dashboard.js new file mode 100644 index 0000000..ad43eb5 --- /dev/null +++ b/src/three/components/Dashboard.js @@ -0,0 +1,66 @@ +import * as THREE from 'three'; +import TWEEN from '@tweenjs/tween.js'; +const ThreeBSP = require('three-js-csg')(THREE); + +export default class CreateDashboard { + constructor(item, scene) { + this.scene = scene; + this.createFrame(item); + } + + createFrame(item) { + const { w, h, d, px, py, pz, ry = 0, bg = '/scr-web/static/img/list/room.png', color = '#454545', frameWidth = 6 } = item; + const geometry = new THREE.BoxGeometry(w, h, d); + const frame = new THREE.Mesh(geometry, new THREE.MeshBasicMaterial({ + })); + frame.position.x = px; + frame.position.y = py; + frame.position.z = pz; + + frame.rotation.y = ry; + + const wallBsp = new ThreeBSP(frame); + let bsp = wallBsp; + const posterWindow = new THREE.Mesh( + new THREE.BoxGeometry(w - frameWidth, h - frameWidth, d), + new THREE.MeshBasicMaterial() + ); + posterWindow.position.x = px; + posterWindow.position.y = py; + posterWindow.position.z = pz; + + posterWindow.rotation.y = ry; + + // 将两个几何体转换成BSP对象 + const windowBsp = new ThreeBSP(posterWindow); + // 开始计算从bsp_wall减去bsp_window1后的BSP对象 + bsp = wallBsp.subtract(windowBsp); + // 生成计算结果的几何体 + const res = new THREE.Mesh( + bsp.toMesh().geometry, + new THREE.MeshBasicMaterial({ + color + }) + ); + res.position.x = px; + res.position.y = py; + res.position.z = pz; + + res.rotation.y = ry; + // 将几何体添加到场景中 + this.scene.add(res); + this.createPoster(item) + } + + createPoster(item) { + const { w = 77, h = 43, d = 2, px, py, pz, ry = 0, bg = '/scr-web/static/img/list/room.png', frameWidth = 6 } = item; + const material = new THREE.MeshBasicMaterial({ + map: new THREE.TextureLoader().load(bg) + }); + const geometry = new THREE.PlaneGeometry(w - frameWidth, h - frameWidth); + const poster = new THREE.Mesh(geometry, material); + poster.position.set(px, py, pz - 1); + poster.rotation.y = ry + this.scene.add(poster); + } +} diff --git a/src/three/components/Monitor.js b/src/three/components/Monitor.js new file mode 100644 index 0000000..095656f --- /dev/null +++ b/src/three/components/Monitor.js @@ -0,0 +1,26 @@ +import * as THREE from 'three'; +import MTLLoader from '../lib/mtlLoader' +import OBJLoader from '../lib/objLoader' +export default class CreateMonitor { + constructor(scene, render) { + this.scene = scene; + this.render = render; + this.init(); + } + + async init() { + const mtlLoader = new MTLLoader(); + const objLoader = new OBJLoader(); + + mtlLoader.load('/static/model/girl.mtl', materials => { + objLoader.setMaterials(materials); + objLoader.load('/static/model/girl.obj', obj => { + const mesh = obj; + mesh.position.set(0, 100, 300); + mesh.scale.set(100, 100, 100) + this.scene.add(mesh); + // this.render() + }); + }); + } +} diff --git a/src/three/components/Rack.js b/src/three/components/Rack.js new file mode 100644 index 0000000..6505f08 --- /dev/null +++ b/src/three/components/Rack.js @@ -0,0 +1,164 @@ +import { Group, TextureLoader, MeshBasicMaterial } from 'three'; +import * as THREE from 'three'; +import TWEEN from '@tweenjs/tween.js'; +import Alarm from './Alarm' +import { canvasTxture } from './tools'; + +const colorMap = { + danger: 0xf56c6c, + warning: 0xe6a23c, + normal: 0x409eff +}; +export default class CreateRack { + constructor(item, options = {}) { + this.clickRack = options.clickRack; + this.options = options; + this.init(item); + } + + init(item) { + const color = 0x8e8e8e; + const { + config: { + size: { w, h, d }, + position: { px, py, pz, ry = 0 }, + type = 'serverDoor' + } + } = item; + const rackGroup = new Group(); + // rackGroup的平面中心是机柜主体的平面中心 + rackGroup.position.set(px, py, pz); + rackGroup.rotation.y = ry; + rackGroup.name = 'rackGroup'; + rackGroup.userData = item; + const textureSkin = new TextureLoader().load('/scr-web/static/img/three_room/rack_skin.jpg'); + const textureLeft = new TextureLoader().load('/scr-web/static/img/three_room/rack_left.jpg'); + const textureRight = new TextureLoader().load( + '/scr-web/static/img/three_room/rack_right.jpg' + ); + // const rackMatLambert = new MeshLambertMaterial({ + // //设置朗伯材质和贴图 + // color, + // map: textureSkin + // }); + const rackMatBasic = new MeshBasicMaterial({ + // 设置基础材质和贴图 + color, + map: textureSkin + }); + const rackdGeo = new THREE.BoxGeometry(w, 2, d); // 箱主体 底 + const rackd = new THREE.Mesh(rackdGeo, rackMatBasic); + rackd.position.set(0, 1, 0); + + // 箱左侧 + const rackzGeo = new THREE.BoxGeometry(2, h, w); + const rackzMaterials = []; + rackzMaterials.push( + // push顺序:X轴正、反,Y轴正、反,Z轴正、反 + rackMatBasic, + rackMatBasic, + rackMatBasic, + rackMatBasic, + new THREE.MeshBasicMaterial({ + color, + map: textureLeft + }), + rackMatBasic + ); + const rackl = new THREE.Mesh(rackzGeo, rackzMaterials); + rackl.position.set(-w / 2 + 1, h / 2 + 2, 0); + + // 右侧 + const rackyGeo = new THREE.BoxGeometry(2, h, w); // 箱左侧,厚2,高88,长40 + const rackyMaterials = []; + rackyMaterials.push( + rackMatBasic, + rackMatBasic, + rackMatBasic, + rackMatBasic, + new THREE.MeshBasicMaterial({ + color: 0xbebebe, + map: textureRight + }), + rackMatBasic + ); + const rackr = new THREE.Mesh(rackyGeo, rackyMaterials); + rackr.position.set(w / 2 - 1, h / 2 + 2, 0); + // 后板 + const rackhGeo = new THREE.BoxGeometry(w, h, 2); + const rackb = new THREE.Mesh(rackhGeo, rackMatBasic); + rackb.position.set(0, h / 2 + 2, -d / 2 + 1); + + const racksGeo = new THREE.BoxGeometry(w, 2, d); + const racksMaterials = []; + racksMaterials.push( + rackMatBasic, + rackMatBasic, + new THREE.MeshLambertMaterial({ + color, + map: canvasTxture(item.name, { width: 50, height: 40 }) // canvas贴图 + }), + rackMatBasic, + rackMatBasic, + rackMatBasic + ); + const rackt = new THREE.Mesh(racksGeo, racksMaterials); + rackt.position.set(0, h + 2 + 1, 0); + + // 设置机箱门 + const doorGroup = new THREE.Group(); + doorGroup.position.set(w / 2, 0, d / 2); + const doorGeo = new THREE.BoxGeometry(w, h + 4, 1); // 机箱们宽,高,厚 + const mMaterials = []; + const doorColor = 0x474747; + const doorKinMap = { + normal: 'rack_door_front', + serverDoor: 'rack_door_server' + } + mMaterials.push( + new THREE.MeshBasicMaterial({ color: doorColor }), + new THREE.MeshBasicMaterial({ color: doorColor }), + new THREE.MeshBasicMaterial({ color: doorColor }), + new THREE.MeshBasicMaterial({ color: doorColor }), + new THREE.MeshBasicMaterial({ + color, + map: new TextureLoader().load(`/scr-web/static/img/three_room/${doorKinMap[type]}.png`) + }), + new THREE.MeshBasicMaterial({ + color, + map: new TextureLoader().load('/scr-web/static/img/three_room/rack_door_back.jpg') + }) + ); + + const door = new THREE.Mesh(doorGeo, mMaterials); + door.position.set(-15, h / 2 + 1, 0); + door.dblclick = this.operateDoor; + door.name = 'rack_door'; + doorGroup.add(door); + rackGroup.add(rackd, rackt, rackb, rackl, rackr, doorGroup); + if (item.isAlarm) { + const alarm = new Alarm({ px: 0, py: 96, pz: 0 }) + rackGroup.add(alarm.sprite); + } + rackGroup.name = 'rackGroup'; + rackGroup.hover = this.showRackInfo; + rackGroup.dblclick = this.clickRack; + this.rackGroup = rackGroup; + } + + showRackInfo() { + } + + operateDoor(door) { + const item = door.parent; + if (item.rotation.y == 0) { + new TWEEN.Tween(item.rotation).to({ + y: 0.5 * Math.PI + }, 1500).easing(TWEEN.Easing.Elastic.Out).start(); + } else { + new TWEEN.Tween(item.rotation).to({ + y: 0 + }, 300).start(); + } + } +} diff --git a/src/three/components/RackCapacity.js b/src/three/components/RackCapacity.js new file mode 100644 index 0000000..e04ad0a --- /dev/null +++ b/src/three/components/RackCapacity.js @@ -0,0 +1,98 @@ +import { Group, TextureLoader, MeshBasicMaterial } from 'three'; +import * as THREE from 'three'; +import { fill } from 'lodash-es' +const ThreeBSP = require('three-js-csg')(THREE); + +export default class CreateRack { + constructor(item, options = {}) { + this.clickRack = options.clickRack; + this.options = options; + this.init(item); + } + + init(item) { + const { + config: { + size: { w, h, d }, + position: { px, py, pz } + }, + hosts = [] + } = item; + const rackGroup = new Group(); + // rackGroup的平面中心是机柜主体的平面中心 + rackGroup.position.set(px, py, pz); + rackGroup.name = 'rackCapacity'; + rackGroup.userData = item; + const arr = new Array(43) + const pos = fill(arr, 0); + const res = {} + hosts.forEach(cell => { + const { start = 10, height = 2 } = JSON.parse(cell.props || null) || {}; + res[start] = [start, height, 1] // 1表示是服务器 + for (let i = 0; i < height; i++) { + pos[start + i] = 1; + } + }); + let start = 0; let height = 0; + let first = false; + pos.forEach((item, index) => { + if (item === 1 || index === 42) { + if (first === false) return; + first = false; + res[start] = [start, height] + height = 0; + } else + if (item === 0) { + if (!first) { + start = index; + first = true; + } + height++ + } + }); + const result = this.formatData(res); + result.forEach((cell, index) => { + const cube = this.createCube(cell, { + w, d, py, index + }); + rackGroup.add(cube); + }); + this.rackCapacity = rackGroup; + } + + // 生成有序的坐标数组 + formatData(res) { + const keys = Object.keys(res).sort(function(a, b) { + return a - b; + }) + return keys.map(key => res[key]); + } + + getColor(height, isServer) { + if (isServer) return '#fff'; + const colorMap = { + 1: '#BC7070', + 2: '#BC7070', + 3: '#B6B950', + 4: '#AF61C7' + } + return colorMap[height] || '#62CF63' + } + + createCube(cell, config) { + const { w, d, py, index } = config; + + const [start, height, isServer] = cell; + const h = 2 * height; + const y = py + start * 2 + 1 + height + index * 0.4; + const serv2Geo = new THREE.BoxGeometry(w, h, d); // 这里服务器的尺寸要跟机箱尺寸对应好 + const servMat = new THREE.MeshLambertMaterial({ + color: this.getColor(height, isServer), + transparent: true, + opacity: 0.9 + }); + const serverMesh = new THREE.Mesh(serv2Geo, servMat); // 服务器主体 + serverMesh.position.set(0, y, 0); + return serverMesh; + } +} diff --git a/src/three/components/RackCapacity_backup.js b/src/three/components/RackCapacity_backup.js new file mode 100644 index 0000000..f9b8d2c --- /dev/null +++ b/src/three/components/RackCapacity_backup.js @@ -0,0 +1,71 @@ +import { Group, TextureLoader, MeshBasicMaterial } from 'three'; +import * as THREE from 'three'; +const ThreeBSP = require('three-js-csg')(THREE); + +const colorMap = { + 1: '#64CCC7', + 2: '#AD60C5', + 3: '#B6B950', + 4: '#CA6062' +} +export default class CreateRack { + constructor(item, options = {}) { + this.clickRack = options.clickRack; + this.options = options; + this.init(item); + } + + init(item) { + const { + config: { + size: { w, h, d }, + position: { px, py, pz } + }, + hosts = [] + } = item; + const rackGroup = new Group(); + // rackGroup的平面中心是机柜主体的平面中心 + rackGroup.position.set(px, py, pz); + rackGroup.name = 'rackCapacity'; + rackGroup.userData = item; + const rackGeo = new THREE.BoxGeometry(w, h, d); + const base = new THREE.Mesh(rackGeo, new THREE.MeshBasicMaterial({ + })); + base.position.set(0, h / 2 + 1, 0); + let bsp = new ThreeBSP(base); + hosts.forEach(cell => { + const server = this.createServer(cell, { + w, d, py + }); + const serverBsp = new ThreeBSP(server); + bsp = bsp.subtract(serverBsp) + rackGroup.add(server); + }); + const res = new THREE.Mesh( + bsp.toMesh().geometry, + new THREE.MeshLambertMaterial({ + color: '#E3E3E3' + }) + ); + res.position.set(0, h / 2 + 1, 0); + rackGroup.add(res); + this.rackCapacity = rackGroup; + } + + createServer(cell, config) { + const { w, d, py } = config; + + const { start = 10, height = 2 } = JSON.parse(cell.props || null) || {}; + const h = 2 * height; + const y = py + start * 2 + 3.8 + const serv2Geo = new THREE.BoxGeometry(w + 0.2, h, d + 0.2); // 这里服务器的尺寸要跟机箱尺寸对应好 + const servMat = new THREE.MeshBasicMaterial({ + color: colorMap[height], + transparent: true, + opacity: 1 + }); + const serverMesh = new THREE.Mesh(serv2Geo, servMat); // 服务器主体 + serverMesh.position.set(0, y, 0); + return serverMesh; + } +} diff --git a/src/three/components/RackUsage.js b/src/three/components/RackUsage.js new file mode 100644 index 0000000..3b41c3f --- /dev/null +++ b/src/three/components/RackUsage.js @@ -0,0 +1,68 @@ +import { Group, BoxGeometry, EdgesGeometry, LineBasicMaterial, LineSegments, MeshBasicMaterial, Mesh } from 'three'; +import TWEEN from '@tweenjs/tween.js'; +export default class CreateRack { + constructor(item, options = {}) { + this.clickRack = options.clickRack; + this.options = options; + this.init(item); + } + + init(item) { + const { + config: { + size: { w, h, d }, + position: { px, py, pz } + } + } = item; + const rackGroup = new Group(); + // rackGroup的平面中心是机柜主体的平面中心 + rackGroup.position.set(px, py, pz); + rackGroup.name = 'rackUsage'; + rackGroup.userData = item; + const rackGeo = new BoxGeometry(w, h, d); + const edges = new EdgesGeometry(rackGeo); + // 立方体线框,不显示中间的斜线 + const edgesMaterial = new LineBasicMaterial({ + color: 0xB3C2C8 + }); + var line = new LineSegments(edges, edgesMaterial); + line.position.set(0, h / 2 + 1, 0); + rackGroup.add(line); + if (item.usage) { + const cube = this.createCube(item) + rackGroup.add(cube); + } + this.rackUsage = rackGroup; + } + + getCubeColor(usage) { + if (usage > 90) { + return '#F84540' + } else if (usage > 75) { + return '#FF9900' + } else if (usage > 50) { + return '#2D8CF0' + } + return '#19BE6B' + } + + createCube(item) { + const { + config: { + size: { w, h, d } + }, + usage + } = item; + const height = h * usage; + const cubeGeo = new BoxGeometry(w, 1, d); + const cubemate = new MeshBasicMaterial({ + color: this.getCubeColor(usage * 100) + }); + const cube = new Mesh(cubeGeo, cubemate); + cube.position.set(0, height / 2 + 1, 0); + new TWEEN.Tween(cube.scale).to({ + y: height + }, 1000).easing(TWEEN.Easing.Elastic.Out).start(); + return cube; + } +} diff --git a/src/three/components/Server.js b/src/three/components/Server.js new file mode 100644 index 0000000..77d03fc --- /dev/null +++ b/src/three/components/Server.js @@ -0,0 +1,96 @@ +import * as THREE from 'three'; +import Alarm from './Alarm' +export default class CreateServer { + constructor(rackConfig, server, updateServerData) { + this.init(rackConfig, server); + this.updateServerData = updateServerData; + } + + init(rackConfig, server) { + const { + position: { px, pz, ry = 0 }, + size: { w, d } + } = rackConfig; + const color = 0x9ac0cd; + const config = server.threeConfig; + this.h = config.h; + + const serv2Group = new THREE.Group(); + serv2Group.position.set(px, config.y, pz); + serv2Group.rotation.y = ry; + + // 服务器 + const textureServer = new THREE.TextureLoader().load( + '/scr-web/static/img/three_room/rack_inside.jpg' + ); + const serv2Geo = new THREE.BoxGeometry(w - 4, this.h, d - 2); // 这里服务器的尺寸要跟机箱尺寸对应好 + const servMat = new THREE.MeshBasicMaterial({ + color, + map: textureServer + }); + const materials = []; + materials.push( + servMat, + servMat, + servMat, + servMat, + new THREE.MeshBasicMaterial({ + color, + map: new THREE.TextureLoader().load( + `/scr-web/static/img/three_room/server${config.height || 2}.jpg` + ) + }), + servMat + ); + const serverMesh = new THREE.Mesh(serv2Geo, materials); // 服务器主体 + serverMesh.position.set(0, this.h / 2, 0); + serverMesh.name = 'server' + + const smb2Materials = []; + smb2Materials.push( + new THREE.MeshBasicMaterial({ color: 0xffffff }), + new THREE.MeshBasicMaterial({ color: 0xffffff }), + new THREE.MeshBasicMaterial({ color: 0xffffff }), + new THREE.MeshBasicMaterial({ color: 0xffffff }), + new THREE.MeshBasicMaterial({ + map: new THREE.TextureLoader().load( + `/scr-web/static/img/three_room/server${config.height || 2}.jpg` + ) + }), + new THREE.MeshBasicMaterial({ color: 0xffffff }) + ); + serv2Group.add(serverMesh); + if (server.alarm) { + // const alarm = new Alarm({ + // px: 0, + // py: this.h / 2, + // pz: d / 2, + // sx: 5, + // sy: 5 + // }); + const alarm = this.createAlarm({ + px: 0, + py: this.h / 2, + pz: d / 2, + d + }); + serv2Group.add(alarm); + } + serv2Group.userData = server; + this.serverGroup = serv2Group; + } + + createAlarm(options) { + const { px, py, pz } = options; + const w = this.h; + const serv2Geo = new THREE.PlaneGeometry(4, 4); // 这里服务器的尺寸要跟机箱尺寸对应好 + const material = new THREE.MeshBasicMaterial({ + transparent: true, + map: new THREE.TextureLoader().load('/scr-web/static/img/three_room/alarm.png') + }); + const sprite = new THREE.Mesh(serv2Geo, material); + sprite.position.set(px, py, pz); + sprite.name = 'rackAlarm'; + return sprite; + } +} diff --git a/src/three/components/SimpleRack.js b/src/three/components/SimpleRack.js new file mode 100644 index 0000000..41e8122 --- /dev/null +++ b/src/three/components/SimpleRack.js @@ -0,0 +1,79 @@ +import { Group, TextureLoader, MeshBasicMaterial } from 'three'; +import * as THREE from 'three'; +import { canvasTxture } from './tools' +import Alarm from './Alarm' + +const colorMap = { + danger: 0xf56c6c, + warning: 0xe6a23c, + normal: 0x409eff +}; +export default class CreateRack { + constructor(item, options = {}, scene) { + this.clickRack = options.clickRack; + this.options = options; + this.scene = scene; + this.init(item); + } + + init(item) { + // const color = colorMap[item.alarmLevel] || 0x8e8e8e; + const color = 0x8e8e8e; + const { + config: { + size: { w, h, d }, + position: { px, py, pz, ry = 0 } + } + } = item; + const rackGroup = new Group(); + // rackGroup的平面中心是机柜主体的平面中心 + rackGroup.position.set(px, py, pz); + rackGroup.rotation.y = ry; + rackGroup.name = 'rackGroup'; + rackGroup.userData = item; + const textureSkin = new TextureLoader().load('/static/img/three_room/rack_skin.jpg'); + const rackGeo = new THREE.BoxGeometry(w, h, d); + const materials = []; + materials.push( + new THREE.MeshBasicMaterial({ + color, + map: textureSkin + }), + new THREE.MeshBasicMaterial({ + color, + map: textureSkin + }), + new THREE.MeshBasicMaterial({ + color, + map: canvasTxture(item.name, { width: 50, height: 40 }) // canvas贴图 + + }), + new THREE.MeshBasicMaterial({ + color, + map: textureSkin + }), + new THREE.MeshBasicMaterial({ + color, + map: new TextureLoader().load('/static/img/three_room/rack_door_server.png') + }), + new THREE.MeshBasicMaterial({ + color, + map: textureSkin + }) + ); + const rack = new THREE.Mesh(rackGeo, materials); + rack.position.set(0, h / 2 + 1, 0); + rackGroup.add(rack) + if (item.isAlarm) { + const alarm = new Alarm({ + px, + py: 82, + pz + }); + this.scene.add(alarm.sprite) + } + rackGroup.hover = () => {}; + rackGroup.dblclick = this.clickRack; + this.scene.add(rackGroup) + } +} diff --git a/src/three/components/Switch.js b/src/three/components/Switch.js new file mode 100644 index 0000000..b3ae5a6 --- /dev/null +++ b/src/three/components/Switch.js @@ -0,0 +1,48 @@ +import * as THREE from 'three'; +export default class CreateServer { + constructor(rack, cell) { + this.init(rack, cell); + } + + init(rack, cell) { + const { + position: { px, pz, ry }, + size: { w, d } + } = rack; + this.h = cell.h; + + const serv2Group = new THREE.Group(); + serv2Group.position.set(px, cell.y, pz); + serv2Group.rotation.y = ry; + + // 两层的服务器 + const textureServer = new THREE.TextureLoader().load( + '/scr-web/static/img/three_room/rack_inside.jpg' + ); + const serv2Geo = new THREE.BoxGeometry(w - 4, this.h, d - 4); // 这里服务器的尺寸要跟机箱尺寸对应好 + const servMat = new THREE.MeshBasicMaterial({ + color: 0x9ac0cd, + map: textureServer + }); + const server2 = new THREE.Mesh(serv2Geo, servMat); // 服务器主体 + server2.position.set(0, this.h / 2, 0); + + const server2mGeo = new THREE.BoxGeometry(w - 4, this.h, 0.2); // 服务器面板尺寸 + const smb2Materials = []; + smb2Materials.push( + new THREE.MeshBasicMaterial({ color: 0xffffff }), + new THREE.MeshBasicMaterial({ color: 0xffffff }), + new THREE.MeshBasicMaterial({ color: 0xffffff }), + new THREE.MeshBasicMaterial({ color: 0xffffff }), + new THREE.MeshBasicMaterial({ + map: new THREE.TextureLoader().load('/scr-web/static/img/three_room/switch.jpg') + }), + new THREE.MeshBasicMaterial({ color: 0xffffff }) + ); + const server2face = new THREE.Mesh(server2mGeo, smb2Materials); + server2face.name = 'ctr2'; + server2face.position.set(0, this.h / 2, (d - 4 + 0.2) / 2); + serv2Group.add(server2, server2face); + this.switchGroup = serv2Group; + } +} diff --git a/src/three/components/TemperatureBoard.js b/src/three/components/TemperatureBoard.js new file mode 100644 index 0000000..003a07b --- /dev/null +++ b/src/three/components/TemperatureBoard.js @@ -0,0 +1,94 @@ +import heatmap from 'heatmapjs' +import * as THREE from 'three'; + +export default class TemperatureBoard { + constructor(options, scene) { + this.scene = scene; + this.options = options; + this.createBoard(options); + this.timer = null; + } + + createBoard(options) { + const { width = 680, height = 500, position = {} } = options; + const texture = new THREE.CanvasTexture(this.createTemperatureImage()); + texture.needsUpdate = true; + const material = new THREE.MeshBasicMaterial({ + map: texture + // color: 0xffffff, + // side: THREE.DoubleSide + }); + material.map.needsUpdate = true; + material.map.image.needsUpdate = true; + const geometry = new THREE.PlaneGeometry(width, height); + const board = new THREE.Mesh(geometry, material); + const { px = -60, py = 1, pz = 0 } = position; + board.position.x = px; + board.position.y = py; + board.position.z = pz; + + board.rotation.x = -Math.PI / 2; + board.name = 'temperatureBoard'; + this.board = board; + this.scene.add(board); + this.timer = setInterval(() => { + material.map.dispose(); + const texture = new THREE.CanvasTexture(this.createTemperatureImage()); + material.map = texture; + }, 1000 * 5) + } + + clear() { + clearInterval(this.timer); + this.timer = null; + } + + createTemperatureImage() { + const { width = 680, height = 500 } = this.options; + const root = document.getElementById('app'); + const ele = document.createElement('div'); + ele.style.cssText = `width:${width}px;height:${height}px`; + root.appendChild(ele) + const instance = heatmap.create({ + container: ele, + width, + height, + // backgroundColor: 'red', // '#121212' 'rgba(0,102,256,0.2)' + // gradient: { + // 0.5: 'blue', + // 0.8: 'red', + // 0.95: 'white', + // 0.6: 'yellow' + // }, + radius: width / 2, // [0,+∞) + maxOpacity: 1, + minOpacity: 0, + opacity: 0.8 + }); + const data = []; + for (let i = 0; i < 15; i++) { + const x = Math.random() * width; + const y = Math.random() * height; + const value = Math.random() * 100; + data.push({ x, y, value }) + } + instance.setData({ + min: 0, + max: 100, + data + // data: [ + // { x: 0, y: 0, value: 50 }, + // { x: 0, y: 500, value: 50 }, + // { x: 500, y: 0, value: 50 }, + // { x: 500, y: 500, value: 50 }, + // { x: 100, y: 100, value: 80 }, + // { x: 100, y: 400, value: 80 }, + // { x: 400, y: 100, value: 90 }, + // { x: 400, y: 400, value: 80 }, + // { x: 250, y: 250, value: 100 } + // ] + }); + root.removeChild(ele) + return instance._renderer.canvas; + } +} diff --git a/src/three/components/Wall.js b/src/three/components/Wall.js new file mode 100644 index 0000000..bc0a613 --- /dev/null +++ b/src/three/components/Wall.js @@ -0,0 +1,292 @@ +import * as THREE from 'three'; +import TWEEN from '@tweenjs/tween.js'; +const ThreeBSP = require('three-js-csg')(THREE); + +// 墙的厚度 +const wallWidth = 5; +// 隔断宽度 +// 墙颜色 +const wallColor = 0xbbbccc; +export default class CreateWall { + constructor(scene, configs) { + this.scene = scene; + this.doorFrameConfigs = { + h: 4, + bottomH: 1, + d: 10 + }; + this.configs = configs; + this.init(); + } + + init() { + this.configs.forEach(item => { + if (item.type === 'column') { + this.createColumn(item); + } else { + this.createWall(item); + } + }); + } + + createWall(item) { + const { w, h, px, py, pz, ry } = item; + const geometry = new THREE.BoxGeometry(w, h, wallWidth); + const meterials = []; + meterials.push( + // push顺序:X轴正、反,Y轴正、反,Z轴正、反 + new THREE.MeshBasicMaterial({ + color: wallColor + }), + new THREE.MeshBasicMaterial({ + color: wallColor + }), + new THREE.MeshBasicMaterial({ + color: 0xffffff + }), + new THREE.MeshBasicMaterial({ + color: 0xffffff + }), + new THREE.MeshBasicMaterial({ + color: wallColor + }), + new THREE.MeshBasicMaterial({ + color: wallColor + }) + ); + const wall = new THREE.Mesh(geometry, meterials); + wall.position.x = px; + wall.position.y = py; + wall.position.z = pz; + + wall.rotation.y = ry; + + const wallBsp = new ThreeBSP(wall); + let bsp = wallBsp; + // 对窗户进行挖洞处理 + if (item.window) { + this.createGlassWindow(item); + const glassWindow = new THREE.Mesh( + new THREE.BoxGeometry(item.window.w, item.window.h, 5), + new THREE.MeshBasicMaterial() + ); + glassWindow.position.x = item.window.px || item.px; + glassWindow.position.y = item.py; + glassWindow.position.z = item.pz; + + glassWindow.rotation.y = item.ry || 0; + + // 将两个几何体转换成BSP对象 + const windowBsp = new ThreeBSP(glassWindow); + // 开始计算从bsp_wall减去bsp_window1后的BSP对象 + bsp = wallBsp.subtract(windowBsp); + } + // 对门进行挖洞处理 + if (item.doors) { + item.doors.forEach(cell => { + const door = new THREE.Mesh( + new THREE.BoxGeometry(cell.w, cell.h, wallWidth), + new THREE.MeshBasicMaterial() + ); + door.position.x = cell.px; + door.position.y = cell.py || item.py; + door.position.z = cell.pz || item.pz; + door.rotation.y = cell.ry || 0; + const doorBsp = new ThreeBSP(door); + this.createDoor({ + py: item.py, + pz: item.pz, + ...cell + }); + bsp = bsp.subtract(doorBsp); + }); + } + if (item.window || item.doors) { + // 生成计算结果的几何体 + const res = new THREE.Mesh( + bsp.toMesh().geometry, + new THREE.MeshBasicMaterial({ + color: wallColor + }) + ); + res.position.x = px; + res.position.y = py; + res.position.z = pz; + + res.rotation.y = ry; + // 将几何体添加到场景中 + this.scene.add(res); + this.createWallTopWhite(item); + } else { + this.scene.add(wall); + } + } + + // 生成挖洞顶部的白色元素 + createWallTopWhite(item) { + const { w, h, px, pz, ry } = item; + const res = new THREE.Mesh( + new THREE.BoxGeometry(w, 1, wallWidth), + new THREE.MeshBasicMaterial({ + color: 0xffffff + }) + ); + res.position.x = px; + res.position.y = h + 1; + res.position.z = pz; + + res.rotation.y = ry; + // 将几何体添加到场景中 + this.scene.add(res); + } + + createColumn(item) { + const { w, h, px, py, pz } = item; + const geometry = new THREE.BoxGeometry(w, h, w); + const meterial = new THREE.MeshBasicMaterial({ + color: 0xffffff, + opacity: 1, + transparent: true, + side: THREE.DoubleSide + }); + const column = new THREE.Mesh(geometry, meterial); + + column.position.x = px; + column.position.y = py; + column.position.z = pz; + + this.scene.add(column); + } + + createGlassWindow(item) { + const { + px, + py, + pz, + ry, + window: { w, h, px: wpx } + } = item; + const geometry = new THREE.BoxGeometry(w, h, 2); + const ma = new THREE.MeshBasicMaterial({ + color: 0x003333, + opacity: 0.4, + transparent: true, + side: THREE.DoubleSide + }); + const glassW = new THREE.Mesh(geometry, ma); + + glassW.position.x = wpx || px; + glassW.position.y = py; + glassW.position.z = pz; + + glassW.rotation.y = ry; + // 对门进行挖洞处理 + if (item.doors) { + let bsp = new ThreeBSP(glassW); + item.doors.forEach(cell => { + const door = new THREE.Mesh( + new THREE.BoxGeometry(cell.w, cell.h, wallWidth), + new THREE.MeshBasicMaterial() + ); + door.position.x = cell.px; + door.position.y = cell.py || item.py; + door.position.z = cell.pz || item.pz; + door.rotation.y = cell.ry || 0; + const doorBsp = new ThreeBSP(door); + bsp = bsp.subtract(doorBsp); + }); + const res = new THREE.Mesh(bsp.toMesh().geometry, ma); + res.position.x = wpx || px; + res.position.y = py; + res.position.z = pz; + + res.rotation.y = ry; + // 将几何体添加到场景中 + this.scene.add(res); + } else { + this.scene.add(glassW); + } + } + + // 对门进行开门关门操作 + operateDoor(door) { + const item = door.parent; + if (item.rotation.y == 0) { + new TWEEN.Tween(item.rotation) + .to( + { + y: item.rotation.y + Math.PI / 2 + }, + 1500 + ) + .easing(TWEEN.Easing.Elastic.Out) + .start(); + // item.rotation.y = item.rotation.y + Math.PI / 2; + // item.position.x = item.position.x + offset; + // item.position.z = item.position.z + offset; + } else { + new TWEEN.Tween(item.rotation).to({ + y: 0 + }, 300).easing(TWEEN.Easing.Elastic.Out).start(); + } + } + + createDoor(item) { + const { h: dfh, bottomH, d } = this.doorFrameConfigs; + const { w, h, px, py, pz, ry = 0 } = item; + const doorGroup = new THREE.Group(); + // const textureSkin = new THREE.TextureLoader().load( + // "/scr-web/static/img/three_room/door_top.jpg" + // ); + // textureSkin.wrapS = textureSkin.wrapT = THREE.RepeatWrapping; + // textureSkin.repeat.set(1, 1); + const mat = new THREE.MeshBasicMaterial({ + // //设置基础材质和贴图dcdddd + color: 0xc5cfd9 + // map: textureSkin + }); + doorGroup.position.set(px, py, pz); + doorGroup.rotation.y = ry; + const offset = dfh / 2; + // 上 + const doort = new THREE.Mesh(new THREE.BoxGeometry(w, dfh, d), mat); + doort.position.set(0, h / 2 - offset, 0); + // 右 + const doorr = new THREE.Mesh(new THREE.BoxGeometry(dfh, h - 6, d), mat); + doorr.position.set(w / 2 - offset, 0, 0); + // 左 + const doorl = new THREE.Mesh(new THREE.BoxGeometry(dfh, h - 6, d), mat); + doorl.position.set(-w / 2 + offset, 0, 0); + // 下 + const doorb = new THREE.Mesh(new THREE.BoxGeometry(w, 2, d), mat); + doorb.position.set(0, -h / 2 + offset, bottomH); + + const doorRotate = new THREE.Group(); + doorRotate.position.set(w / 2, 0, 0); + const texture = new THREE.TextureLoader().load( + '/scr-web/static/img/three_room/door_out.png' + ); + const geometry = new THREE.BoxGeometry(w - 8, h - 5, 3); + const materialArray = []; + // order to add materials: x+,x-,y+,y-,z+,z- + materialArray.push(new THREE.MeshBasicMaterial({ color: 0xbbbbbb })); + materialArray.push(new THREE.MeshBasicMaterial({ color: 0xbbbbbb })); + materialArray.push(new THREE.MeshBasicMaterial({ color: 0xbbbbbb })); + materialArray.push(new THREE.MeshBasicMaterial({ color: 0xbbbbbb })); + materialArray.push(new THREE.MeshBasicMaterial({ map: texture })); + materialArray.push( + new THREE.MeshBasicMaterial({ + map: new THREE.TextureLoader().load('/scr-web/static/img/three_room/door_in.png') + }) + ); + const door = new THREE.Mesh(geometry, materialArray); + door.position.set(-w / 2, 0, 0); + door.width = w; + door.name = 'door'; + door.dblclick = this.operateDoor; + doorRotate.add(door) + doorGroup.add(doort, doorl, doorr, doorb, doorRotate); + + this.scene.add(doorGroup); + } +} diff --git a/src/three/components/generateRackConfigs.js b/src/three/components/generateRackConfigs.js new file mode 100644 index 0000000..fe7787b --- /dev/null +++ b/src/three/components/generateRackConfigs.js @@ -0,0 +1,188 @@ +// 机房l: 长, w: 宽 h: 高 d: 墙的厚度 separateWidth: 隔断的宽度 +export default function getConfigs(l, w, h, d, separateWidth) { + const py = h / 2 + 1; + const configs = [ + // 后 + { + w: l, + h, + px: 0, + py, + pz: -w / 2, + rx: 0, + ry: 0, + rz: 0 + }, + { + type: 'column', + w: 10, + h, + px: 0, + py, + pz: -w / 2, + rx: 0, + ry: 0, + rz: 0 + }, + // 左 + { + w: w, + h, + px: -l / 2 + d / 2, + py, + pz: 0, + rx: 0, + ry: Math.PI / 2, + rz: 0 + }, + { + type: 'column', + w: 10, + h, + px: -l / 2 + d / 2, + py, + pz: 0, + rx: 0, + ry: 0, + rz: 0 + }, + // 右 + { + w: w, + h, + px: l / 2 - d / 2, + py, + pz: 0, + rx: 0, + ry: Math.PI / 2, + rz: 0 + }, + { + type: 'column', + w: 10, + h, + px: l / 2 - d / 2, + py, + pz: 0, + rx: 0, + ry: 0, + rz: 0 + }, + // 前 + { + w: l, + h, + px: 0, + py, + pz: w / 2, + rx: 0, + ry: 0, + rz: 0, + window: { + w: 300, + h: 60 + }, + doors: [ + { + w: 60, + h: 80, + px: 260 + }, + { + w: 60, + h: 80, + px: -190 + }, + { + w: 60, + h: 80, + px: 190 + } + ] + }, + // // 前左 + // { + // w: separateWidth, + // h, + // px: -l / 2 + separateWidth / 2 + d / 2, + // py: h / 2, + // pz: w / 2, + // rx: 0, + // ry: 0, + // rz: 0 + // }, + // // 前右 + // { + // w: separateWidth, + // h, + // px: l / 2 - separateWidth / 2 - d, + // py: h / 2, + // pz: w / 2, + // rx: 0, + // ry: 0, + // rz: 0 + // }, + // 内左 + { + type: 'glass', + w: w, + h, + px: -l / 2 + separateWidth, + py, + pz: 0, + rx: 0, + ry: Math.PI / 2, + rz: 0, + doors: [ + { + w: 60, + h: 80, + px: -l / 2 + separateWidth, + pz: -60, + ry: Math.PI / 2 + }, + { + w: 60, + h: 80, + pz: 60, + px: -l / 2 + separateWidth, + ry: Math.PI / 2 + } + ] + }, + { + type: 'column', + w: 10, + h, + px: -l / 2 + separateWidth, + py, + pz: -w / 2 + w / 2, + rx: 0, + ry: 0, + rz: 0 + }, + // 左隔断 + { + w: separateWidth, + h, + px: -l / 2 + separateWidth / 2, + py, + pz: -w / 2 + w / 2, + rx: 0, + ry: 0, + rz: 0 + }, + // 内 右 + { + w, + h, + px: l / 2 - separateWidth, + py, + pz: 0, + rx: 0, + ry: Math.PI / 2, + rz: 0 + } + ]; + return configs; +} diff --git a/src/three/components/generateWallConfigs.js b/src/three/components/generateWallConfigs.js new file mode 100644 index 0000000..2b29b55 --- /dev/null +++ b/src/three/components/generateWallConfigs.js @@ -0,0 +1,190 @@ +// 机房l: 长, w: 宽 h: 高 d: 墙的厚度 separateWidth: 隔断的宽度 +export default function getConfigs(l, w, h, d, separateWidth) { + const py = h / 2 + 1; + const configs = [ + // 后 + { + w: l - 220, + h, + px: -110, + py, + pz: -w / 2, + rx: 0, + ry: 0, + rz: 0 + }, + // 后 + { + w: 220, + h, + px: l / 2 - 110, + py, + pz: -w / 2 + 150, + rx: 0, + ry: 0, + rz: 0 + }, + { + w: 150, + h, + px: l / 2 - 220, + py, + pz: -w / 2 + 75, + rx: 0, + rz: 0, + ry: Math.PI / 2 + }, + { + type: 'column', + w: 10, + h, + px: 0, + py, + pz: -w / 2, + rx: 0, + ry: 0, + rz: 0 + }, + // 左 + { + w: w, + h, + px: -l / 2 + d / 2, + py, + pz: 0, + rx: 0, + ry: Math.PI / 2, + rz: 0 + }, + { + type: 'column', + w: 10, + h, + px: -l / 2 + d / 2, + py, + pz: 0, + rx: 0, + ry: 0, + rz: 0 + }, + // 右 + { + w: w - 150, + h, + px: l / 2 - d / 2, + py, + pz: 75, + rx: 0, + ry: Math.PI / 2, + rz: 0 + }, + { + type: 'column', + w: 10, + h, + px: l / 2 - d / 2, + py, + pz: 110, + rx: 0, + ry: 0, + rz: 0 + }, + // 前 + { + w: l, + h, + px: 0, + py, + pz: w / 2, + rx: 0, + ry: 0, + rz: 0, + window: { + w: 890, + h: 80, + px: 50 + }, + doors: [ + { + w: 40, + h: 100, + px: -450 + }, + { + w: 40, + h: 100, + px: -350 + }, + { + w: 40, + h: 100, + px: 380 + } + ] + }, + // 内右 + { + w: w - 150, + h, + px: l / 2 - separateWidth, + py, + pz: 75, + rx: 0, + ry: Math.PI / 2, + window: { + w: w - 20 - 150, + h: h - 20 + }, + doors: [ + { + w: 40, + h: 100, + px: l / 2 - separateWidth, + pz: -220, + ry: -Math.PI / 2 + }, + { + w: 40, + h: 100, + pz: 140, + px: l / 2 - separateWidth, + ry: -Math.PI / 2 + } + ] + }, + { + type: 'column', + w: 10, + h, + px: l / 2 - separateWidth, + py, + pz: 110, + rx: 0, + ry: 0, + rz: 0 + }, + // 右隔断 + { + w: separateWidth, + h, + px: l / 2 - separateWidth / 2, + py, + pz: -w / 2 + w / 2 + 110, + rx: 0, + ry: 0, + rz: 0 + }, + // 内 左 + { + w, + h, + px: -l / 2 + separateWidth, + py, + pz: 0, + rx: 0, + ry: Math.PI / 2, + rz: 0 + } + ]; + return configs; +} diff --git a/src/three/components/tools.js b/src/three/components/tools.js new file mode 100644 index 0000000..9d4469b --- /dev/null +++ b/src/three/components/tools.js @@ -0,0 +1,75 @@ +import { Texture } from 'three'; +export const generateRacks = (rows, cols, l, w, startX, startY) => { + const result = []; + const ySpace = (w - 30 * cols) / (cols + 1); + const yStep = (w - ySpace) / cols; + const y = startY + 30 / 2 + ySpace; + for (let i = 0; i < rows; i++) { + for (let j = 0; j < cols; j++) { + const obj = { + name: 'A', + // servers: [ + // { + // type: 'server3', + // h: 8, + // y: 39 + // }, + // { + // type: 'switch', + // h: 10, + // y: 51 + // } + // ], + size: { w: 30, h: 70, d: 30 }, // 尺寸 + position: { + px: startX + (l / rows) * i, + py: 0, + pz: y + yStep * j, + ry: Math.PI / 2 + } + }; + result.push(obj); + } + } + return result; +}; +export function canvasTxture(str, configs = {}) { + const { width, height, font = '20px SimHei', color = '#00ffff', fillColor = '#777' } = configs; + const canvas = document.createElement('canvas'); + canvas.width = width; + canvas.height = height; + const ctx = canvas.getContext('2d'); + // const g = ctx.createLinearGradient(0, 0, width, height); + // g.addColorStop(0, '#777'); + // g.addColorStop(1, '#777'); + ctx.fillStyle = fillColor; + ctx.fillRect(0, 0, width, height); + ctx.textBaseline = 'top'; + ctx.font = font; + ctx.fillStyle = color; // 编号颜色 + const txtWidth = ctx.measureText(str).width; + ctx.fillText(str, width / 2 - txtWidth / 2, height / 2 - 20 / 2); + const texture = new Texture(canvas); + texture.needsUpdate = true; + return texture; +} +export const generateRackLocation = (l, w, cols, rows) => { + const result = {}; + const LWIDTH = l / (cols + 1); + const WWIDTH = w / (rows + 1); + for (let i = 1; i <= cols; i++) { + for (let j = 1; j <= rows; j++) { + const obj = { + size: { w: 30, h: 70, d: 30 }, // 尺寸 + position: { + px: l / 2 - LWIDTH * i + 50, + py: 0, + pz: w / 2 - WWIDTH * j, + ry: Math.PI / 2 + } + }; + result[`${i},${j}`] = obj; + } + } + return result; +}; diff --git a/src/three/data/defaultRoom.js b/src/three/data/defaultRoom.js new file mode 100644 index 0000000..3e57504 --- /dev/null +++ b/src/three/data/defaultRoom.js @@ -0,0 +1,58 @@ +export default { + walls: [ + { w: 800, h: 100, px: 0, py: 51, pz: -250, rx: 0, ry: 0, rz: 0 }, + { + w: 500, + h: 100, + px: -397.5, + py: 51, + pz: 0, + rx: 0, + ry: 1.5707963267948966, + rz: 0 + }, + { + w: 500, + h: 100, + px: -297.5, + py: 51, + pz: 0, + rx: 0, + ry: 1.5707963267948966, + rz: 0, + window: { w: 480, h: 80 }, + doors: [ + { w: 40, h: 100, px: -297.5, pz: -230, ry: -1.5707963267948966 } + ] + }, + { + w: 500, + h: 100, + px: 397.5, + py: 51, + pz: 0, + rx: 0, + ry: 1.5707963267948966, + rz: 0 + }, + { + w: 800, + h: 100, + px: 0, + py: 51, + pz: 250, + rx: 0, + ry: 0, + rz: 0, + window: { w: 680, h: 80, px: 50 }, + doors: [ + { w: 40, h: 100, px: 380 }, + { w: 40, h: 100, px: -280 } + ] + } + ], + airs: [{ w: 30, h: 80, d: 15, px: -350, py: 41, pz: -150 }, + { w: 30, h: 80, d: 15, px: -350, py: 41, pz: -50 }, + { w: 30, h: 80, d: 15, px: -350, py: 41, pz: 50 }, + { w: 30, h: 80, d: 15, px: -350, py: 41, pz: 150 }] +}; diff --git a/src/three/data/room.js b/src/three/data/room.js new file mode 100644 index 0000000..34ec54e --- /dev/null +++ b/src/three/data/room.js @@ -0,0 +1,44 @@ +export default { + walls: [ + { w: 780, h: 100, px: -110, py: 51, pz: -400, rx: 0, ry: 0, rz: 0 }, + { w: 220, h: 100, px: 390, py: 51, pz: -250, rx: 0, ry: 0, rz: 0 }, + { w: 150, h: 100, px: 280, py: 51, pz: -325, rx: 0, rz: 0, ry: 1.5707963267948966 }, + { type: 'column', w: 10, h: 100, px: -75, py: 51, pz: -400, rx: 0, ry: 0, rz: 0 }, + { w: 800, h: 100, px: -497.5, py: 51, pz: 0, rx: 0, ry: 1.5707963267948966, rz: 0 }, + { type: 'column', w: 10, h: 100, px: -497.5, py: 51, pz: 0, rx: 0, ry: 0, rz: 0 }, + { w: 650, h: 100, px: 497.5, py: 51, pz: 75, rx: 0, ry: 1.5707963267948966, rz: 0 }, + { type: 'column', w: 10, h: 100, px: 497.5, py: 51, pz: 110, rx: 0, ry: 0, rz: 0 }, + { w: 1000, h: 100, px: 0, py: 51, pz: 400, rx: 0, ry: 0, rz: 0, window: { w: 640, h: 80, px: 50 }, doors: [{ w: 40, h: 100, px: -450 }, { w: 40, h: 100, px: -250 }, { w: 40, h: 100, px: 380 }] }, + { w: 650, h: 100, px: 400, py: 51, pz: 75, rx: 0, ry: 1.5707963267948966, window: { w: 630, h: 80 }, doors: [{ w: 40, h: 100, px: 400, pz: -220, ry: -1.5707963267948966 }, { w: 40, h: 100, pz: 135, px: 400, ry: -1.5707963267948966 }] }, + { type: 'column', w: 10, h: 100, px: 400, py: 51, pz: 110, rx: 0, ry: 0, rz: 0 }, { w: 100, h: 100, px: 450, py: 51, pz: 110, rx: 0, ry: 0, rz: 0 }, { w: 800, h: 100, px: -400, py: 51, pz: 0, rx: 0, ry: 1.5707963267948966, rz: 0 }, + { w: 680, h: 100, px: -60, py: 51, pz: -250, rx: 0, ry: 0, rz: 0, window: { w: 660, h: 80 }, doors: [{ w: 40, h: 100, px: -250, ry: 3.141592653589793 }, { w: 40, h: 100, px: -80, ry: 3.141592653589793 }, { w: 40, h: 100, px: 90, ry: 3.141592653589793 }, { w: 40, h: 100, px: 250, ry: 3.141592653589793 }] }, + { w: 680, h: 100, px: -60, py: 51, pz: 250, rx: 0, ry: 0, rz: 0, window: { w: 660, h: 80 }, doors: [{ w: 40, h: 100, px: -250 }, { w: 40, h: 100, px: -80 }, { w: 40, h: 100, px: 90 }, { w: 40, h: 100, px: 250 }] }, + { w: 500, h: 100, px: -230, py: 51, pz: 0, rx: 0, ry: 1.5707963267948966, rz: 0, window: { w: 480, h: 80 } }, + { w: 500, h: 100, px: -60, py: 51, pz: 0, rx: 0, ry: 1.5707963267948966, rz: 0, window: { w: 480, h: 80 } }, + { w: 500, h: 100, px: 110, py: 50, pz: 0, rx: 0, ry: 1.5707963267948966, rz: 0, window: { w: 480, h: 80 } }, + { w: 500, h: 100, px: 280, py: 51, pz: 0, rx: 0, ry: 1.5707963267948966, rz: 0, window: { w: 480, h: 80 } }], + airs: [{ w: 30, h: 80, d: 15, px: -450, py: 41, pz: -250 }, { w: 30, h: 80, d: 15, px: -450, py: 41, pz: -90 }, { w: 30, h: 80, d: 15, px: -450, py: 41, pz: 70 }, { w: 30, h: 80, d: 15, px: -450, py: 41, pz: 230 }], + dashboards: [{ w: 77, h: 43, d: 2, px: -325, py: 65, pz: 405 }, + { w: 77, h: 43, d: 2, px: 450, py: 65, pz: 405, bg: '/scr-web/static/img/list/resource.png' }, + { w: 36, h: 43, d: 1, px: -400, py: 65, pz: 405, bg: '/scr-web/static/img/three_room/poster.jpg', frameWidth: 2, color: '#505058' }, + { w: 36, h: 43, d: 1, px: -395, py: 65, pz: 320, bg: '/scr-web/static/img/three_room/poster.jpg', frameWidth: 2, color: '#505058', ry: 1.5707963267948966 } + ], + marks: [ + { + text: 'D 区 域', + px: 240 + }, + { + text: 'C 区 域', + px: 70 + }, + { + text: 'B 区 域', + px: -100 + }, + { + text: 'A 区 域', + px: -270 + } + ] +} diff --git a/src/three/data/room1.js b/src/three/data/room1.js new file mode 100644 index 0000000..dfd2a03 --- /dev/null +++ b/src/three/data/room1.js @@ -0,0 +1,11 @@ +export default { + walls: [ + { w: 300, h: 100, px: 0, py: 51, pz: -300, rx: 0, ry: 0, rz: 0 }, + { w: 600, h: 100, px: -150, py: 51, pz: 0, rx: 0, rz: 0, ry: 1.5707963267948966 }, + { w: 460, h: 100, px: 150, py: 51, pz: -70, rx: 0, rz: 0, ry: -1.5707963267948966 }, + { w: 150, h: 100, px: -75, py: 51, pz: 300, rx: 0, ry: 0, rz: 0, doors: [{ w: 40, h: 100, px: -75 }] }, + { w: 100, h: 100, px: 0, py: 51, pz: 250, rx: 0, rz: 0, ry: -1.5707963267948966 }, + { w: 160, h: 100, px: 75, py: 51, pz: 180, rx: 0, ry: 0.2617993877991494, rz: 0 } + ], + airs: [{ w: 30, h: 80, d: 15, px: -75, py: 41, pz: -250, ry: 0 }, { w: 30, h: 80, d: 15, px: 75, py: 41, pz: -250, ry: 0 }] +} diff --git a/src/three/lib/mtlLoader.js b/src/three/lib/mtlLoader.js new file mode 100644 index 0000000..646294e --- /dev/null +++ b/src/three/lib/mtlLoader.js @@ -0,0 +1,453 @@ +var THREE = require('three') + +THREE.MTLLoader = function (manager) { + THREE.Loader.call(this, manager); +}; + +THREE.MTLLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), { + + constructor: THREE.MTLLoader, + + /** + * Loads and parses a MTL asset from a URL. + * + * @param {String} url - URL to the MTL file. + * @param {Function} [onLoad] - Callback invoked with the loaded object. + * @param {Function} [onProgress] - Callback for download progress. + * @param {Function} [onError] - Callback for download errors. + * + * @see setPath setResourcePath + * + * @note In order for relative texture references to resolve correctly + * you must call setResourcePath() explicitly prior to load. + */ + load: function (url, onLoad, onProgress, onError) { + var scope = this; + + var path = (this.path === '') ? THREE.LoaderUtils.extractUrlBase(url) : this.path; + + var loader = new THREE.FileLoader(this.manager); + loader.setPath(this.path); + loader.setRequestHeader(this.requestHeader); + loader.setWithCredentials(this.withCredentials); + loader.load(url, function (text) { + try { + onLoad(scope.parse(text, path)); + } catch (e) { + if (onError) { + onError(e); + } else { + console.error(e); + } + + scope.manager.itemError(url); + } + }, onProgress, onError); + }, + + setMaterialOptions: function (value) { + this.materialOptions = value; + return this; + }, + + /** + * Parses a MTL file. + * + * @param {String} text - Content of MTL file + * @return {THREE.MTLLoader.MaterialCreator} + * + * @see setPath setResourcePath + * + * @note In order for relative texture references to resolve correctly + * you must call setResourcePath() explicitly prior to parse. + */ + parse: function (text, path) { + var lines = text.split('\n'); + var info = {}; + var delimiter_pattern = /\s+/; + var materialsInfo = {}; + + for (var i = 0; i < lines.length; i++) { + var line = lines[i]; + line = line.trim(); + + if (line.length === 0 || line.charAt(0) === '#') { + // Blank line or comment ignore + continue; + } + + var pos = line.indexOf(' '); + + var key = (pos >= 0) ? line.substring(0, pos) : line; + key = key.toLowerCase(); + + var value = (pos >= 0) ? line.substring(pos + 1) : ''; + value = value.trim(); + + if (key === 'newmtl') { + // New material + + info = { name: value }; + materialsInfo[value] = info; + } else { + if (key === 'ka' || key === 'kd' || key === 'ks' || key === 'ke') { + var ss = value.split(delimiter_pattern, 3); + info[key] = [parseFloat(ss[0]), parseFloat(ss[1]), parseFloat(ss[2])]; + } else { + info[key] = value; + } + } + } + + var materialCreator = new THREE.MTLLoader.MaterialCreator(this.resourcePath || path, this.materialOptions); + materialCreator.setCrossOrigin(this.crossOrigin); + materialCreator.setManager(this.manager); + materialCreator.setMaterials(materialsInfo); + return materialCreator; + } + +}); + +/** + * Create a new THREE.MTLLoader.MaterialCreator + * @param baseUrl - Url relative to which textures are loaded + * @param options - Set of options on how to construct the materials + * side: Which side to apply the material + * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide + * wrap: What type of wrapping to apply for textures + * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping + * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255 + * Default: false, assumed to be already normalized + * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's + * Default: false + * @constructor + */ + +THREE.MTLLoader.MaterialCreator = function (baseUrl, options) { + this.baseUrl = baseUrl || ''; + this.options = options; + this.materialsInfo = {}; + this.materials = {}; + this.materialsArray = []; + this.nameLookup = {}; + + this.side = (this.options && this.options.side) ? this.options.side : THREE.FrontSide; + this.wrap = (this.options && this.options.wrap) ? this.options.wrap : THREE.RepeatWrapping; +}; + +THREE.MTLLoader.MaterialCreator.prototype = { + + constructor: THREE.MTLLoader.MaterialCreator, + + crossOrigin: 'anonymous', + + setCrossOrigin: function (value) { + this.crossOrigin = value; + return this; + }, + + setManager: function (value) { + this.manager = value; + }, + + setMaterials: function (materialsInfo) { + this.materialsInfo = this.convert(materialsInfo); + this.materials = {}; + this.materialsArray = []; + this.nameLookup = {}; + }, + + convert: function (materialsInfo) { + if (!this.options) return materialsInfo; + + var converted = {}; + + for (var mn in materialsInfo) { + // Convert materials info into normalized form based on options + + var mat = materialsInfo[mn]; + + var covmat = {}; + + converted[mn] = covmat; + + for (var prop in mat) { + var save = true; + var value = mat[prop]; + var lprop = prop.toLowerCase(); + + switch (lprop) { + case 'kd': + case 'ka': + case 'ks': + + // Diffuse color (color under white light) using RGB values + + if (this.options && this.options.normalizeRGB) { + value = [value[0] / 255, value[1] / 255, value[2] / 255]; + } + + if (this.options && this.options.ignoreZeroRGBs) { + if (value[0] === 0 && value[1] === 0 && value[2] === 0) { + // ignore + + save = false; + } + } + + break; + + default: + + break; + } + + if (save) { + covmat[lprop] = value; + } + } + } + + return converted; + }, + + preload: function () { + for (var mn in this.materialsInfo) { + this.create(mn); + } + }, + + getIndex: function (materialName) { + return this.nameLookup[materialName]; + }, + + getAsArray: function () { + var index = 0; + + for (var mn in this.materialsInfo) { + this.materialsArray[index] = this.create(mn); + this.nameLookup[mn] = index; + index++; + } + + return this.materialsArray; + }, + + create: function (materialName) { + if (this.materials[materialName] === undefined) { + this.createMaterial_(materialName); + } + + return this.materials[materialName]; + }, + + createMaterial_: function (materialName) { + // Create material + + var scope = this; + var mat = this.materialsInfo[materialName]; + var params = { + + name: materialName, + side: this.side + + }; + + function resolveURL(baseUrl, url) { + if (typeof url !== 'string' || url === '') { return ''; } + + // Absolute URL + if (/^https?:\/\//i.test(url)) return url; + + return baseUrl + url; + } + + function setMapForType(mapType, value) { + if (params[mapType]) return; // Keep the first encountered texture + + var texParams = scope.getTextureParams(value, params); + var map = scope.loadTexture(resolveURL(scope.baseUrl, texParams.url)); + + map.repeat.copy(texParams.scale); + map.offset.copy(texParams.offset); + + map.wrapS = scope.wrap; + map.wrapT = scope.wrap; + + params[mapType] = map; + } + + for (var prop in mat) { + var value = mat[prop]; + var n; + + if (value === '') continue; + + switch (prop.toLowerCase()) { + // Ns is material specular exponent + + case 'kd': + + // Diffuse color (color under white light) using RGB values + + params.color = new THREE.Color().fromArray(value); + + break; + + case 'ks': + + // Specular color (color when light is reflected from shiny surface) using RGB values + params.specular = new THREE.Color().fromArray(value); + + break; + + case 'ke': + + // Emissive using RGB values + params.emissive = new THREE.Color().fromArray(value); + + break; + + case 'map_kd': + + // Diffuse texture map + + setMapForType('map', value); + + break; + + case 'map_ks': + + // Specular map + + setMapForType('specularMap', value); + + break; + + case 'map_ke': + + // Emissive map + + setMapForType('emissiveMap', value); + + break; + + case 'norm': + + setMapForType('normalMap', value); + + break; + + case 'map_bump': + case 'bump': + + // Bump texture map + + setMapForType('bumpMap', value); + + break; + + case 'map_d': + + // Alpha map + + setMapForType('alphaMap', value); + params.transparent = true; + + break; + + case 'ns': + + // The specular exponent (defines the focus of the specular highlight) + // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000. + + params.shininess = parseFloat(value); + + break; + + case 'd': + n = parseFloat(value); + + if (n < 1) { + params.opacity = n; + params.transparent = true; + } + + break; + + case 'tr': + n = parseFloat(value); + + if (this.options && this.options.invertTrProperty) n = 1 - n; + + if (n > 0) { + params.opacity = 1 - n; + params.transparent = true; + } + + break; + + default: + break; + } + } + + this.materials[materialName] = new THREE.MeshPhongMaterial(params); + return this.materials[materialName]; + }, + + getTextureParams: function (value, matParams) { + var texParams = { + + scale: new THREE.Vector2(1, 1), + offset: new THREE.Vector2(0, 0) + + }; + + var items = value.split(/\s+/); + var pos; + + pos = items.indexOf('-bm'); + + if (pos >= 0) { + matParams.bumpScale = parseFloat(items[pos + 1]); + items.splice(pos, 2); + } + + pos = items.indexOf('-s'); + + if (pos >= 0) { + texParams.scale.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2])); + items.splice(pos, 4); // we expect 3 parameters here! + } + + pos = items.indexOf('-o'); + + if (pos >= 0) { + texParams.offset.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2])); + items.splice(pos, 4); // we expect 3 parameters here! + } + + texParams.url = items.join(' ').trim(); + return texParams; + }, + + loadTexture: function (url, mapping, onLoad, onProgress, onError) { + var texture; + var manager = (this.manager !== undefined) ? this.manager : THREE.DefaultLoadingManager; + var loader = manager.getHandler(url); + + if (loader === null) { + loader = new THREE.TextureLoader(manager); + } + + if (loader.setCrossOrigin) loader.setCrossOrigin(this.crossOrigin); + texture = loader.load(url, onLoad, onProgress, onError); + + if (mapping !== undefined) texture.mapping = mapping; + + return texture; + } + +}; +export default THREE.MTLLoader; diff --git a/src/three/lib/objLoader.js b/src/three/lib/objLoader.js new file mode 100644 index 0000000..505d07b --- /dev/null +++ b/src/three/lib/objLoader.js @@ -0,0 +1,679 @@ +/* eslint-disable no-redeclare */ +var THREE = require('three') + +THREE.OBJLoader = (function () { + // o object_name | g group_name + var object_pattern = /^[og]\s*(.+)?/; + // mtllib file_reference + var material_library_pattern = /^mtllib /; + // usemtl material_name + var material_use_pattern = /^usemtl /; + // usemap map_name + var map_use_pattern = /^usemap /; + + var vA = new THREE.Vector3(); + var vB = new THREE.Vector3(); + var vC = new THREE.Vector3(); + + var ab = new THREE.Vector3(); + var cb = new THREE.Vector3(); + + function ParserState() { + var state = { + objects: [], + object: {}, + + vertices: [], + normals: [], + colors: [], + uvs: [], + + materials: {}, + materialLibraries: [], + + startObject: function (name, fromDeclaration) { + // If the current object (initial from reset) is not from a g/o declaration in the parsed + // file. We need to use it for the first parsed g/o to keep things in sync. + if (this.object && this.object.fromDeclaration === false) { + this.object.name = name; + this.object.fromDeclaration = (fromDeclaration !== false); + return; + } + + var previousMaterial = (this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined); + + if (this.object && typeof this.object._finalize === 'function') { + this.object._finalize(true); + } + + this.object = { + name: name || '', + fromDeclaration: (fromDeclaration !== false), + + geometry: { + vertices: [], + normals: [], + colors: [], + uvs: [], + hasUVIndices: false + }, + materials: [], + smooth: true, + + startMaterial: function (name, libraries) { + var previous = this._finalize(false); + + // New usemtl declaration overwrites an inherited material, except if faces were declared + // after the material, then it must be preserved for proper MultiMaterial continuation. + if (previous && (previous.inherited || previous.groupCount <= 0)) { + this.materials.splice(previous.index, 1); + } + + var material = { + index: this.materials.length, + name: name || '', + mtllib: (Array.isArray(libraries) && libraries.length > 0 ? libraries[libraries.length - 1] : ''), + smooth: (previous !== undefined ? previous.smooth : this.smooth), + groupStart: (previous !== undefined ? previous.groupEnd : 0), + groupEnd: -1, + groupCount: -1, + inherited: false, + + clone: function (index) { + var cloned = { + index: (typeof index === 'number' ? index : this.index), + name: this.name, + mtllib: this.mtllib, + smooth: this.smooth, + groupStart: 0, + groupEnd: -1, + groupCount: -1, + inherited: false + }; + cloned.clone = this.clone.bind(cloned); + return cloned; + } + }; + + this.materials.push(material); + + return material; + }, + + currentMaterial: function () { + if (this.materials.length > 0) { + return this.materials[this.materials.length - 1]; + } + + return undefined; + }, + + _finalize: function (end) { + var lastMultiMaterial = this.currentMaterial(); + if (lastMultiMaterial && lastMultiMaterial.groupEnd === -1) { + lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3; + lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart; + lastMultiMaterial.inherited = false; + } + + // Ignore objects tail materials if no face declarations followed them before a new o/g started. + if (end && this.materials.length > 1) { + for (var mi = this.materials.length - 1; mi >= 0; mi--) { + if (this.materials[mi].groupCount <= 0) { + this.materials.splice(mi, 1); + } + } + } + + // Guarantee at least one empty material, this makes the creation later more straight forward. + if (end && this.materials.length === 0) { + this.materials.push({ + name: '', + smooth: this.smooth + }); + } + + return lastMultiMaterial; + } + }; + + // Inherit previous objects material. + // Spec tells us that a declared material must be set to all objects until a new material is declared. + // If a usemtl declaration is encountered while this new object is being parsed, it will + // overwrite the inherited material. Exception being that there was already face declarations + // to the inherited material, then it will be preserved for proper MultiMaterial continuation. + + if (previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function') { + var declared = previousMaterial.clone(0); + declared.inherited = true; + this.object.materials.push(declared); + } + + this.objects.push(this.object); + }, + + finalize: function () { + if (this.object && typeof this.object._finalize === 'function') { + this.object._finalize(true); + } + }, + + parseVertexIndex: function (value, len) { + var index = parseInt(value, 10); + return (index >= 0 ? index - 1 : index + len / 3) * 3; + }, + + parseNormalIndex: function (value, len) { + var index = parseInt(value, 10); + return (index >= 0 ? index - 1 : index + len / 3) * 3; + }, + + parseUVIndex: function (value, len) { + var index = parseInt(value, 10); + return (index >= 0 ? index - 1 : index + len / 2) * 2; + }, + + addVertex: function (a, b, c) { + var src = this.vertices; + var dst = this.object.geometry.vertices; + + dst.push(src[a + 0], src[a + 1], src[a + 2]); + dst.push(src[b + 0], src[b + 1], src[b + 2]); + dst.push(src[c + 0], src[c + 1], src[c + 2]); + }, + + addVertexPoint: function (a) { + var src = this.vertices; + var dst = this.object.geometry.vertices; + + dst.push(src[a + 0], src[a + 1], src[a + 2]); + }, + + addVertexLine: function (a) { + var src = this.vertices; + var dst = this.object.geometry.vertices; + + dst.push(src[a + 0], src[a + 1], src[a + 2]); + }, + + addNormal: function (a, b, c) { + var src = this.normals; + var dst = this.object.geometry.normals; + + dst.push(src[a + 0], src[a + 1], src[a + 2]); + dst.push(src[b + 0], src[b + 1], src[b + 2]); + dst.push(src[c + 0], src[c + 1], src[c + 2]); + }, + + addFaceNormal: function (a, b, c) { + var src = this.vertices; + var dst = this.object.geometry.normals; + + vA.fromArray(src, a); + vB.fromArray(src, b); + vC.fromArray(src, c); + + cb.subVectors(vC, vB); + ab.subVectors(vA, vB); + cb.cross(ab); + + cb.normalize(); + + dst.push(cb.x, cb.y, cb.z); + dst.push(cb.x, cb.y, cb.z); + dst.push(cb.x, cb.y, cb.z); + }, + + addColor: function (a, b, c) { + var src = this.colors; + var dst = this.object.geometry.colors; + + if (src[a] !== undefined) dst.push(src[a + 0], src[a + 1], src[a + 2]); + if (src[b] !== undefined) dst.push(src[b + 0], src[b + 1], src[b + 2]); + if (src[c] !== undefined) dst.push(src[c + 0], src[c + 1], src[c + 2]); + }, + + addUV: function (a, b, c) { + var src = this.uvs; + var dst = this.object.geometry.uvs; + + dst.push(src[a + 0], src[a + 1]); + dst.push(src[b + 0], src[b + 1]); + dst.push(src[c + 0], src[c + 1]); + }, + + addDefaultUV: function () { + var dst = this.object.geometry.uvs; + + dst.push(0, 0); + dst.push(0, 0); + dst.push(0, 0); + }, + + addUVLine: function (a) { + var src = this.uvs; + var dst = this.object.geometry.uvs; + + dst.push(src[a + 0], src[a + 1]); + }, + + addFace: function (a, b, c, ua, ub, uc, na, nb, nc) { + var vLen = this.vertices.length; + + var ia = this.parseVertexIndex(a, vLen); + var ib = this.parseVertexIndex(b, vLen); + var ic = this.parseVertexIndex(c, vLen); + + this.addVertex(ia, ib, ic); + this.addColor(ia, ib, ic); + + // normals + + if (na !== undefined && na !== '') { + var nLen = this.normals.length; + + ia = this.parseNormalIndex(na, nLen); + ib = this.parseNormalIndex(nb, nLen); + ic = this.parseNormalIndex(nc, nLen); + + this.addNormal(ia, ib, ic); + } else { + this.addFaceNormal(ia, ib, ic); + } + + // uvs + + if (ua !== undefined && ua !== '') { + var uvLen = this.uvs.length; + + ia = this.parseUVIndex(ua, uvLen); + ib = this.parseUVIndex(ub, uvLen); + ic = this.parseUVIndex(uc, uvLen); + + this.addUV(ia, ib, ic); + + this.object.geometry.hasUVIndices = true; + } else { + // add placeholder values (for inconsistent face definitions) + + this.addDefaultUV(); + } + }, + + addPointGeometry: function (vertices) { + this.object.geometry.type = 'Points'; + + var vLen = this.vertices.length; + + for (var vi = 0, l = vertices.length; vi < l; vi++) { + this.addVertexPoint(this.parseVertexIndex(vertices[vi], vLen)); + } + }, + + addLineGeometry: function (vertices, uvs) { + this.object.geometry.type = 'Line'; + + var vLen = this.vertices.length; + var uvLen = this.uvs.length; + + for (var vi = 0, l = vertices.length; vi < l; vi++) { + this.addVertexLine(this.parseVertexIndex(vertices[vi], vLen)); + } + + for (var uvi = 0, l = uvs.length; uvi < l; uvi++) { + this.addUVLine(this.parseUVIndex(uvs[uvi], uvLen)); + } + } + + }; + + state.startObject('', false); + + return state; + } + + // + + function OBJLoader(manager) { + THREE.Loader.call(this, manager); + + this.materials = null; + } + + OBJLoader.prototype = Object.assign(Object.create(THREE.Loader.prototype), { + + constructor: OBJLoader, + + load: function (url, onLoad, onProgress, onError) { + var scope = this; + + var loader = new THREE.FileLoader(this.manager); + loader.setPath(this.path); + loader.setRequestHeader(this.requestHeader); + loader.setWithCredentials(this.withCredentials); + loader.load(url, function (text) { + try { + onLoad(scope.parse(text)); + } catch (e) { + if (onError) { + onError(e); + } else { + console.error(e); + } + + scope.manager.itemError(url); + } + }, onProgress, onError); + }, + + setMaterials: function (materials) { + this.materials = materials; + + return this; + }, + + parse: function (text) { + var state = new ParserState(); + + if (text.indexOf('\r\n') !== -1) { + // This is faster than String.split with regex that splits on both + text = text.replace(/\r\n/g, '\n'); + } + + if (text.indexOf('\\\n') !== -1) { + // join lines separated by a line continuation character (\) + text = text.replace(/\\\n/g, ''); + } + + var lines = text.split('\n'); + var line = '', lineFirstChar = ''; + var lineLength = 0; + var result = []; + + // Faster to just trim left side of the line. Use if available. + var trimLeft = (typeof ''.trimLeft === 'function'); + + for (var i = 0, l = lines.length; i < l; i++) { + line = lines[i]; + + line = trimLeft ? line.trimLeft() : line.trim(); + + lineLength = line.length; + + if (lineLength === 0) continue; + + lineFirstChar = line.charAt(0); + + // @todo invoke passed in handler if any + if (lineFirstChar === '#') continue; + + if (lineFirstChar === 'v') { + var data = line.split(/\s+/); + + switch (data[0]) { + case 'v': + state.vertices.push( + parseFloat(data[1]), + parseFloat(data[2]), + parseFloat(data[3]) + ); + if (data.length >= 7) { + state.colors.push( + parseFloat(data[4]), + parseFloat(data[5]), + parseFloat(data[6]) + + ); + } else { + // if no colors are defined, add placeholders so color and vertex indices match + + state.colors.push(undefined, undefined, undefined); + } + + break; + case 'vn': + state.normals.push( + parseFloat(data[1]), + parseFloat(data[2]), + parseFloat(data[3]) + ); + break; + case 'vt': + state.uvs.push( + parseFloat(data[1]), + parseFloat(data[2]) + ); + break; + } + } else if (lineFirstChar === 'f') { + var lineData = line.substr(1).trim(); + var vertexData = lineData.split(/\s+/); + var faceVertices = []; + + // Parse the face vertex data into an easy to work with format + + for (var j = 0, jl = vertexData.length; j < jl; j++) { + var vertex = vertexData[j]; + + if (vertex.length > 0) { + var vertexParts = vertex.split('/'); + faceVertices.push(vertexParts); + } + } + + // Draw an edge between the first vertex and all subsequent vertices to form an n-gon + + var v1 = faceVertices[0]; + + for (var j = 1, jl = faceVertices.length - 1; j < jl; j++) { + var v2 = faceVertices[j]; + var v3 = faceVertices[j + 1]; + + state.addFace( + v1[0], v2[0], v3[0], + v1[1], v2[1], v3[1], + v1[2], v2[2], v3[2] + ); + } + } else if (lineFirstChar === 'l') { + var lineParts = line.substring(1).trim().split(' '); + var lineVertices = [], lineUVs = []; + + if (line.indexOf('/') === -1) { + lineVertices = lineParts; + } else { + for (var li = 0, llen = lineParts.length; li < llen; li++) { + var parts = lineParts[li].split('/'); + + if (parts[0] !== '') lineVertices.push(parts[0]); + if (parts[1] !== '') lineUVs.push(parts[1]); + } + } + + state.addLineGeometry(lineVertices, lineUVs); + } else if (lineFirstChar === 'p') { + var lineData = line.substr(1).trim(); + var pointData = lineData.split(' '); + + state.addPointGeometry(pointData); + } else if ((result = object_pattern.exec(line)) !== null) { + // o object_name + // or + // g group_name + + // WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869 + // var name = result[ 0 ].substr( 1 ).trim(); + var name = (' ' + result[0].substr(1).trim()).substr(1); + + state.startObject(name); + } else if (material_use_pattern.test(line)) { + // material + + state.object.startMaterial(line.substring(7).trim(), state.materialLibraries); + } else if (material_library_pattern.test(line)) { + // mtl file + + state.materialLibraries.push(line.substring(7).trim()); + } else if (map_use_pattern.test(line)) { + // the line is parsed but ignored since the loader assumes textures are defined MTL files + // (according to https://www.okino.com/conv/imp_wave.htm, 'usemap' is the old-style Wavefront texture reference method) + + console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.'); + } else if (lineFirstChar === 's') { + result = line.split(' '); + + // smooth shading + + // @todo Handle files that have varying smooth values for a set of faces inside one geometry, + // but does not define a usemtl for each face set. + // This should be detected and a dummy material created (later MultiMaterial and geometry groups). + // This requires some care to not create extra material on each smooth value for "normal" obj files. + // where explicit usemtl defines geometry groups. + // Example asset: examples/models/obj/cerberus/Cerberus.obj + + /* + * http://paulbourke.net/dataformats/obj/ + * or + * http://www.cs.utah.edu/~boulos/cs3505/obj_spec.pdf + * + * From chapter "Grouping" Syntax explanation "s group_number": + * "group_number is the smoothing group number. To turn off smoothing groups, use a value of 0 or off. + * Polygonal elements use group numbers to put elements in different smoothing groups. For free-form + * surfaces, smoothing groups are either turned on or off; there is no difference between values greater + * than 0." + */ + if (result.length > 1) { + var value = result[1].trim().toLowerCase(); + state.object.smooth = (value !== '0' && value !== 'off'); + } else { + // ZBrush can produce "s" lines #11707 + state.object.smooth = true; + } + + var material = state.object.currentMaterial(); + if (material) material.smooth = state.object.smooth; + } else { + // Handle null terminated files without exception + if (line === '\0') continue; + + console.warn('THREE.OBJLoader: Unexpected line: "' + line + '"'); + } + } + + state.finalize(); + + var container = new THREE.Group(); + container.materialLibraries = [].concat(state.materialLibraries); + + for (var i = 0, l = state.objects.length; i < l; i++) { + var object = state.objects[i]; + var geometry = object.geometry; + var materials = object.materials; + var isLine = (geometry.type === 'Line'); + var isPoints = (geometry.type === 'Points'); + var hasVertexColors = false; + + // Skip o/g line declarations that did not follow with any faces + if (geometry.vertices.length === 0) continue; + + var buffergeometry = new THREE.BufferGeometry(); + + buffergeometry.setAttribute('position', new THREE.Float32BufferAttribute(geometry.vertices, 3)); + + buffergeometry.setAttribute('normal', new THREE.Float32BufferAttribute(geometry.normals, 3)); + + if (geometry.colors.length > 0) { + hasVertexColors = true; + buffergeometry.setAttribute('color', new THREE.Float32BufferAttribute(geometry.colors, 3)); + } + + if (geometry.hasUVIndices === true) { + buffergeometry.setAttribute('uv', new THREE.Float32BufferAttribute(geometry.uvs, 2)); + } + + // Create materials + + var createdMaterials = []; + + for (var mi = 0, miLen = materials.length; mi < miLen; mi++) { + var sourceMaterial = materials[mi]; + var materialHash = sourceMaterial.name + '_' + sourceMaterial.smooth + '_' + hasVertexColors; + var material = state.materials[materialHash]; + + if (this.materials !== null) { + material = this.materials.create(sourceMaterial.name); + + // mtl etc. loaders probably can't create line materials correctly, copy properties to a line material. + if (isLine && material && !(material instanceof THREE.LineBasicMaterial)) { + var materialLine = new THREE.LineBasicMaterial(); + THREE.Material.prototype.copy.call(materialLine, material); + materialLine.color.copy(material.color); + material = materialLine; + } else if (isPoints && material && !(material instanceof THREE.PointsMaterial)) { + var materialPoints = new THREE.PointsMaterial({ size: 10, sizeAttenuation: false }); + THREE.Material.prototype.copy.call(materialPoints, material); + materialPoints.color.copy(material.color); + materialPoints.map = material.map; + material = materialPoints; + } + } + + if (material === undefined) { + if (isLine) { + material = new THREE.LineBasicMaterial(); + } else if (isPoints) { + material = new THREE.PointsMaterial({ size: 1, sizeAttenuation: false }); + } else { + material = new THREE.MeshPhongMaterial(); + } + + material.name = sourceMaterial.name; + material.flatShading = !sourceMaterial.smooth; + material.vertexColors = hasVertexColors; + + state.materials[materialHash] = material; + } + + createdMaterials.push(material); + } + + // Create mesh + + var mesh; + + if (createdMaterials.length > 1) { + for (var mi = 0, miLen = materials.length; mi < miLen; mi++) { + var sourceMaterial = materials[mi]; + buffergeometry.addGroup(sourceMaterial.groupStart, sourceMaterial.groupCount, mi); + } + + if (isLine) { + mesh = new THREE.LineSegments(buffergeometry, createdMaterials); + } else if (isPoints) { + mesh = new THREE.Points(buffergeometry, createdMaterials); + } else { + mesh = new THREE.Mesh(buffergeometry, createdMaterials); + } + } else { + if (isLine) { + mesh = new THREE.LineSegments(buffergeometry, createdMaterials[0]); + } else if (isPoints) { + mesh = new THREE.Points(buffergeometry, createdMaterials[0]); + } else { + mesh = new THREE.Mesh(buffergeometry, createdMaterials[0]); + } + } + + mesh.name = object.name; + + container.add(mesh); + } + + return container; + } + + }); + + return OBJLoader; +})(); +export default THREE.OBJLoader; diff --git a/src/utils/auth.js b/src/utils/auth.js new file mode 100644 index 0000000..5ef6b3e --- /dev/null +++ b/src/utils/auth.js @@ -0,0 +1,17 @@ +/** + * Created by HaijunZhang on 2018/11/16. + */ +import Cookies from 'js-cookie' +import { tokenKey } from '@/config' + +export function getToken () { + return Cookies.get(tokenKey) +} + +export function setToken (token) { + return Cookies.set(tokenKey, token) +} + +export function removeToken () { + return Cookies.remove(tokenKey) +} diff --git a/src/utils/crypto.js b/src/utils/crypto.js new file mode 100644 index 0000000..2eccfc7 --- /dev/null +++ b/src/utils/crypto.js @@ -0,0 +1,47 @@ +/** + * Created by HaijunZhang on 2018/11/19. + */ +import CryptoJS from 'crypto-js' +// base64解码 +function decryptByBase64 (word) { + const base64string = CryptoJS.enc.Base64.parse(word) + return CryptoJS.enc.Utf8.stringify(base64string) +} + +// base64编码 +function encryptByBase64 (word) { + const src = CryptoJS.enc.Utf8.parse(word) + const base64string = CryptoJS.enc.Base64.stringify(src) + return base64string +} + +const defaultKey = CryptoJS.enc.Utf8.parse(decryptByBase64('Qm9jbG91ZENNUFY1ODchIQ==')) +const iv = CryptoJS.enc.Utf8.parse(decryptByBase64('QmV5b25kQ01QVjU4NyEhIQ==')) +const options = { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 +} + +// 加密方法 +export function encrypt (word, key = defaultKey) { + if (typeof word === 'object') { + word = JSON.stringify(word) + } + const srcs = CryptoJS.enc.Utf8.parse(word) + const encrypted = CryptoJS.AES.encrypt(srcs, key, options) + return encrypted.toString() +} + +// 解密方法 +export function decrypt (word, key = defaultKey) { + const decrypt = CryptoJS.AES.decrypt(word, key, options) + return decrypt.toString(CryptoJS.enc.Utf8) +} + +export default { + encrypt, + decrypt, + encryptByBase64, + decryptByBase64 +} diff --git a/src/utils/index.js b/src/utils/index.js new file mode 100644 index 0000000..0112d43 --- /dev/null +++ b/src/utils/index.js @@ -0,0 +1,30 @@ +/** + * Created by HaijunZhang on 2019/7/23. + */ +import { getToken } from 'utils/auth' + +export function wrapperParams (data) { + return { params: JSON.stringify(data) } +} +export const formatEqParams = params => { + return { page: 1, rows: 1000, params: JSON.stringify([{ param: params, sign: 'EQ' }]) } +} +export const downloadFile = (url, params = {}) => { + let str = '' + Object.keys(params).forEach(item => { + str += `&${item}=${params[item]}` + }) + window.location.href = encodeURI(`/api${url}?token=${getToken()}${str}`) +} +export const getQuery = hash => { + const queryArr = hash.split('?') + if (queryArr.length === 1) { + return {} + } + const query = {} + queryArr[1].split('&').forEach(item => { + const [key, value] = item.split('=') + query[key] = value + }) + return query +} diff --git a/src/utils/rem.js b/src/utils/rem.js new file mode 100644 index 0000000..e15eba7 --- /dev/null +++ b/src/utils/rem.js @@ -0,0 +1,22 @@ +// 设置 rem 函数 +function setRem () { + // PC端 + // 基准大小 + const baseSize = 100; + const basePc = baseSize / 1920; // 表示1920的设计图,使用100PX的默认值 + let vW = window.innerWidth; // 当前窗口的宽度 + const vH = window.innerHeight; // 当前窗口的高度 + // 非正常屏幕下的尺寸换算 + const dueH = vW / 1920 * 1080 + if (vH < dueH) { // 当前屏幕高度小于应有的屏幕高度,就需要根据当前屏幕高度重新计算屏幕宽度 + vW = vH / 1080 * 1920 + } + const rem = vW * basePc; // 以默认比例值乘以当前窗口宽度,得到该宽度下的相应font-size值 + document.documentElement.style.fontSize = rem + 'px'; +} +// 初始化 +setRem(); +// 改变窗口大小时重新设置 rem +window.onresize = function () { + setRem() +}; diff --git a/src/utils/request.js b/src/utils/request.js new file mode 100644 index 0000000..162cb11 --- /dev/null +++ b/src/utils/request.js @@ -0,0 +1,119 @@ +/** + * Created by Zhang Haijun on 2017/8/24. + * axios#request(config) + * axios#get(url[, config]) + * axios#delete(url[, config]) + * axios#head(url[, config]) + * axios#options(url[, config]) + * axios#post(url[, data[, config]]) + * axios#put(url[, data[, config]]) + * axios#patch(url[, data[, config]]) + */ +import axios from 'axios' +import NProgress from 'nprogress' +import qs from 'qs' +import 'nprogress/nprogress.css' +import { Notification, MessageBox } from 'element-ui' +import { getToken } from 'utils/auth' +import store from '@/store' + +const codeMessage = { + 200: '服务器成功返回请求的数据。', + 201: '新建或修改数据成功。', + 202: '一个请求已经进入后台排队(异步任务)。', + 204: '删除数据成功。', + 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。', + 401: '用户没有权限(令牌、用户名、密码错误)。', + 403: '用户得到授权,但是访问是被禁止的。', + 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。', + 406: '请求的格式不可得。', + 410: '请求的资源被永久删除,且不会再得到的。', + 422: '当创建一个对象时,发生一个验证错误。', + 500: '服务器发生错误,请检查服务器。', + 502: '网关错误。', + 503: '服务不可用,服务器暂时过载或维护。', + 504: '网关超时。' +} +const axiosInstance = axios.create({ + baseURL: '/api', + headers: { 'Content-Type': 'application/json', BsmAjaxHeader: true }, + timeout: 20000, + paramsSerializer: params => { + return qs.stringify(params, { arrayFormat: 'indices' }) + } +}) +// 请求完成回调 +const finishCallback = function() { + NProgress.done() +} +// 报错处理 +const handleError = function(response) { + if (!response) return // 容错处理 + const errorText = codeMessage[response.status] || response.statusText + Notification({ + type: 'error', + title: `请求错误 ${response.status}: ${response.config.url}`, + message: errorText + }) + const error = new Error(errorText) + error.name = response.status + error.response = response + throw error +} +axiosInstance.interceptors.request.use( + config => { + const { + headers, + headers: { options = {} } + } = config + NProgress.start() + if (config.method === 'get') { + // 清除get缓存 + config.url = `${config.url}?t=${new Date().getTime()}` + } else if (headers['Content-Type'] === 'application/x-www-form-urlencoded') { + config.data = qs.stringify(config.data || {}) + } + config.headers.token = getToken() + delete config.headers.options + config.options = options; + return config + }, + error => { + return Promise.reject(error) + } +) +axiosInstance.interceptors.response.use( + data => { + // const requestKey = getRequestIdentify(data.config); + // removePending(requestKey); + finishCallback() + const responseData = data.data + const { options } = data.config + if (!responseData.success) { + switch (responseData.status) { + case '402': + location.href = '/#/license' + break + case '401': + case '509': + const { protocol, hostname } = location; + location.href = `${protocol}//${hostname}:60006/#/login` + break + default: + } + if (!options.ignoreError) { + Notification({ + message: responseData.message || responseData.data, + type: 'error' + }) + } + } + return responseData + }, + error => { + finishCallback() + handleError(error.response) + return Promise.reject(error) + } +) +export default axiosInstance diff --git a/src/utils/resolvePath.js b/src/utils/resolvePath.js new file mode 100644 index 0000000..156a9d7 --- /dev/null +++ b/src/utils/resolvePath.js @@ -0,0 +1,13 @@ +/** + * Created by HaijunZhang on 2018/12/10. + */ +import path from 'path' +export function isExternalLink (path) { + return /^(http:|https:|mailto:|tel:)\/\//.test(path) +} +export function resolvePath (basePath, routePath) { + if (isExternalLink(routePath)) { + return routePath + } + return path.resolve(basePath, routePath) +} diff --git a/src/validate/common.js b/src/validate/common.js new file mode 100644 index 0000000..80ad779 --- /dev/null +++ b/src/validate/common.js @@ -0,0 +1,884 @@ +/** + * Created by Zhang Haijun on 2018/1/25. + */ +const trigger = null +export default { + required: { required: true, message: '请输入内容', trigger: trigger }, + number: { type: 'number', trigger: trigger, message: '请输入数字' }, + numberStr: { pattern: /^[0-9]*$/, message: '仅支持由数字组成的字符串', trigger: trigger }, + email: { type: 'email', trigger: trigger, message: '请输入正确的邮箱' }, + code: { pattern: /^[a-zA-Z0-9]*$/, message: '仅支持数字、字母', trigger: trigger }, + name: { pattern: /^[a-zA-Z0-9-_.]*$/, message: '仅支持数字、字母、下划线、中划线、点', trigger: trigger }, + blankName: { pattern: /^[a-zA-Z 0-9-_.]+$/, message: '不可输入中文', trigger: trigger }, + spec: { pattern: /^[0-9]+\/[0-9]+\/[0-9]+$/, message: '请输入长/宽/高,中间以斜杠隔开', trigger: trigger }, + hmcVolumeName: { pattern: /^[a-zA-Z][a-zA-Z0-9_-]*$/, message: '支持数字,字母,下划线,短横线,以字母开头', trigger: trigger }, + startNotNumber: { pattern: /^[a-zA-Z][a-zA-Z0-9-_.]*$/, message: '支持数字,字母,下划线,短横线,点,以字母开头', trigger: trigger }, + vmName: { pattern: /^[a-zA-Z][a-zA-Z0-9]*$/, message: '支持数字,字母,以字母开头', trigger: trigger }, + wwpn: { pattern: /^[A-Fa-f0-9]{16}$/, message: '可取字符0-9、A-F、a-f长度必须是16位', trigger: trigger }, + iScsi: { pattern: /^[iI][qQ][nN].[0-9]{4}-0?[1-9]|1[0-2].[a-zA-Z0-9:.]*$/, message: 'iqn.< yyyy-mm >.< tld.domain.some.host > [:< identifier >]', trigger: trigger }, + cephIqn: { pattern: /^iqn\.[0-9]{4}-(0?[1-9]|1[0-2])\.[-0-9a-z.:]+$/, message: 'iqn.< yyyy-mm >.< tld.domain.some.host > [:< identifier >]', trigger: trigger }, + // 正整数 + positiveInteger: { + validator: (rule, value, callback) => { + if (/^[1-9][0-9]*$/.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正整数')) + } + }, + trigger: trigger + }, + awsRule: { + validator: (rule, value, callback) => { + const reg1 = /^[A-Za-z0-9]+$/ + const reg4 = '-_.:/()#,@$*+=&{}![]' + let flag = true + for (const i in value) { + if (!reg1.test(value[i]) && reg4.indexOf(value[i]) === -1) { + flag = false + break + } + } + if (flag) { + callback() + } else { + callback(new Error('只能由数字、字母、-_.:/()#,@$*+=&{}![]组成')) + } + }, + trigger: trigger + }, + qcloudPassword: { + validator: (rule, value, callback) => { + if (/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,64}$/.test(value)) { + callback() + } else { + callback(new Error('密码至少8位,并包括大小写字母及数字')) + } + }, + trigger: trigger + }, + NumberEmpty: { + validator: (rule, value, callback) => { + const reg = /^[0-9 ]*$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('只能输入数字和空格')) + } + }, + trigger: trigger + }, + dns: { + validator: (rule, value, callback) => { + const reg = /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]))?$/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的DNS')) + } + }, + trigger: trigger + }, + password: { + validator: (rule, value, callback) => { + const reg = /^[\x21-\x7ea-zA-Z0-9_]{1,18}$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('请输入正确的密码格式')) + } + }, + trigger: trigger + }, + complexPassword: { + validator: (rule, value, callback) => { + const reg = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[~!@#¥%&*()$])[a-zA-Z\d~!@#¥%&*()$]{6,12}$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('密码必须由6-12位大小写字母数字和~!@#¥%&*()$组成')) + } + }, + trigger: trigger + }, + // 手机 + mobile: { + validator: (rule, value, callback) => { + const reg = /^(13[0123456789]|14[57]|15[012356789]|18[0123456789]|17[0,3,5-8]|166|198|199)[0-9]{8}$/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的手机号')) + } + }, + trigger: trigger + }, + // 座机 + phone: { + validator: (rule, value, callback) => { + const reg = /^0\d{2,3}-?\d{7,8}|4\d{2,3}-?\d{7,8}$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('请输入正确的座机号')) + } + }, + trigger: trigger + }, + // 手机或者座机 + mobileOrPhone: { + validator: (rule, value, callback) => { + const reg = /(^1[3|4|5|7|6|8|9]\d{9}$)|(^0\d{2,3}-?\d{7,8}$)/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('请输入正确的座机号或者手机号')) + } + }, + trigger: trigger + }, + // 手机或者座机 + mobileOrPhoneNoValue: { + validator: (rule, value, callback) => { + const reg = /(^1[3|4|5|7|6|8|9]\d{9}$)|(^0\d{2,3}-?\d{7,8}$)/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的座机号或者手机号')) + } + }, + trigger: trigger + }, + numTen: { + validator: (rule, value, callback) => { + if (value % 10 == 0) { + callback() + } else { + callback(new Error('请输入10的倍数')) + } + }, + trigger: trigger + }, + // ip地址 + ip: { + validator: (rule, value, callback) => { + const reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的IP地址')) + } + }, + trigger: trigger + }, + mac: { + validator: (rule, value, callback) => { + const reg = /^[A-F0-9]{2}(-[A-F0-9]{2}){5}$|^[A-F0-9]{2}(:[A-F0-9]{2}){5}$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('请输入正确的Mac地址')) + } + }, + trigger: trigger + }, + memory: { + validator: (rule, value, callback) => { + if ((Number(value) % 64) == 0) { + callback() + } else { + callback(new Error('请输入64的倍数')) + } + }, + trigger: trigger + }, + cpu: { + validator: (rule, value, callback) => { + if ((Number(value) % 2) == 0) { + callback() + } else { + callback(new Error('请输入2的倍数')) + } + }, + trigger: trigger + }, + specmemory: { + validator: (rule, value, callback) => { + if ((Number(value) % 2) == 0 || Number(value) == 1) { + callback() + } else { + callback(new Error('请输入2的倍数或者1')) + } + }, + trigger: trigger + }, + gbMemory: { + validator: (rule, value, callback) => { + if (((Number(value) * 1024) % 64) == 0) { + callback() + } else { + callback(new Error('请输入64MB的整数倍')) + } + }, + trigger: trigger + }, + templateMemory: { + validator: (rule, value, callback) => { + if (((Number(value) * 1024) % 16) == 0) { + callback() + } else { + callback(new Error('请输入16MB的整数倍')) + } + }, + trigger: trigger + }, + // 端口号 + port: { + validator: (rule, value, callback) => { + const reg = /^([1-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的端口号')) + } + }, + trigger: trigger + }, + // 腾讯云云主机 + tencentWindowsVm: { + validator: (rule, value, callback) => { + const reg = new RegExp('^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z_!@#$%^&*`~()-+=]+$)(?![0-9_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9_!@#$%^&*`~()-+=]{12,30}$') + if (reg.test(value) && value.length >= 12 && value.length <= 30) { + callback() + } else { + callback(new Error("Windows机器密码需12到30位,至少包括三项([a-z,A-Z],[0-9]和[()`~!@#$%^&*-+=_|{}[]:;',.?/])的特殊符号")) + } + }, + trigger: trigger + }, + tencentLinuxVm: { + validator: (rule, value, callback) => { + const reg = new RegExp('^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z_!@#$%^&*`~()-+=]+$)(?![0-9_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9_!@#$%^&*`~()-+=]{8,16}$') + if (reg.test(value) && value.length >= 8 && value.length <= 16) { + callback() + } else { + callback(new Error("Linux机器密码需8到16位,至少包括三项([a-z,A-Z],[0-9]和[()`~!@#$%^&*-+=_|{}[]:;',.?/])的特殊符号")) + } + }, + trigger: trigger + }, + // 华为云云主机 + huaweiVm: { + validator: (rule, value, callback) => { + const reg = new RegExp('^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z_!@#$%^&*`~()-+=]+$)(?![0-9_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9_!@#$%^&*`~()-+=]{8,30}$') + if (reg.test(value) && value.length >= 8 && value.length <= 26) { + callback() + } else { + callback(new Error("密码需8到26位,至少包括三项([a-z,A-Z],[0-9]和[()`~!@#$%^&*-+=_|{}[]:;',.?/])的特殊符号")) + } + }, + trigger: trigger + }, + // IBM存储新增复制卷 + ibmStorage: { + validator: (rule, value, callback) => { + const reg = new RegExp('^[a-zA-Z]([-_a-zA-Z0-9]{1,64})$') + const reg1 = new RegExp('^[a-zA-Z]+$') + if ((reg.test(value) || reg1.test(value.slice(0, 1))) && value.length >= 1 && value.length <= 64) { + callback() + } else { + callback(new Error('支持数字,字母,下划线,短横线,要求以字母开头')) + } + }, + trigger: trigger + }, + // 子网掩码 + mask: { + validator: (rule, value, callback) => { + const reg = /^(254|252|248|240|224|192|128|0)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('请输入正确的子网掩码')) + } + }, + trigger: trigger + }, + // 英文 + english: { + validator: (rule, value, callback) => { + const reg = /^[a-zA-Z]+$/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入英文')) + } + }, + trigger: trigger + }, + // 中文 + chinese: { + validator: (rule, value, callback) => { + const reg = /^[\u4e00-\u9fa5]*$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('请输入中文')) + } + }, + trigger: trigger + }, + // 非中文 + notChinese: { + validator: (rule, value, callback) => { + const reg = /^[\u4e00-\u9fa5]*$/ + if (value && reg.test(value)) { + callback(new Error('不支持中文字符')) + } else { + callback() + } + }, + trigger: trigger + }, + vmPassword: { + validator: (rule, value, callback) => { + const pattern = '^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_]+$)(?![a-z0-9]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{12,36}$' + if (!value.match(pattern)) { + callback(new Error('同时包含大小写字母,数字或特殊字符任意三项,长度介于12-36字符')) + } else { + callback() + } + }, + trigger: trigger + }, + noChinese: { + validator: (rule, value, callback) => { + const reg = /^[a-zA-Z0-9-_.]*$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('仅支持数字、字母、下划线、中划线、点')) + } + }, + trigger: trigger + }, + azureUser: { + validator: (rule, value, callback) => { + const reg = /^[a-zA-Z][a-zA-Z0-9_-]*$/ + if (reg.test(value) && value.length >= 1 && value.length <= 64) { + callback() + } else { + callback(new Error('仅支持数字、字母、下划线、中划线,且以字母开头')) + } + }, + trigger: trigger + }, + azurePassword: { + validator: (rule, value, callback) => { + const pattern = '^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_]+$)(?![a-z0-9]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{12,72}$' + if (!value.match(pattern)) { + callback(new Error('同时包含大小写字母,数字或特殊字符任意三项,长度介于12-72字符')) + } else { + callback() + } + }, + trigger: trigger + }, + azureVmName: { + validator: (rule, value, callback) => { + const reg = /^[a-zA-Z0-9-]*$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('仅支持数字、大小写字母、中划线')) + } + }, + trigger: trigger + }, + awsAmi: { + validator: (rule, value, callback) => { + const reg = /^[a-zA-Z0-9-+,/.]*$/ + if (reg.test(value) && value.length >= 3 && value.length <= 128) { + callback() + } else { + callback(new Error('仅支持数字、大小写字母、中划线、下划线、句号及/和点,长度介于3-128')) + } + }, + trigger: trigger + }, + hicNoChinese: { + validator: (rule, value, callback) => { + const reg = /^[a-zA-Z0-9-_]*$/ + if (reg.test(value)) { + callback() + } else { + callback(new Error('仅支持数字、字母、下划线、中划线')) + } + }, + trigger: trigger + }, + hostName: { + validator: (rule, value, callback) => { + const pattern = '^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_]+$)(?![a-z0-9]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{8,30}$' + if (!value.match(pattern)) { + callback(new Error('8-30字符,同时包含大写/小写字母,数字或特殊字符三项')) + } else { + callback() + } + }, + trigger: trigger + }, + muchDns: { + validator: (rule, value, callback) => { + if (!value) { + callback() + } else { + let i = '' + let result = '' + let c = '' + for (i = 0; i < value.length; i++) { + c = value.substr(i, 1) + if (c == '\n') { + result = result + '/' + } else if (c != '\r') { + result = result + c + } + } + result = result.split('/') + const reg = /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]))?$/ + result.forEach(function (item) { + if (!reg.test(item)) { + callback(new Error('请按照提示输入')) + } + }) + callback() + } + }, + trigger: trigger + }, + v6MuchDns: { + validator: (rule, value, callback) => { + if (!value) { + callback() + } else { + let i = '' + let result = '' + let c = '' + for (i = 0; i < value.length; i++) { + c = value.substr(i, 1) + if (c == '\n') { + result = result + '/' + } else if (c != '\r') { + result = result + c + } + } + result = result.split('/') + const reg = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/ + result.forEach(function (item) { + if (!reg.test(item)) { + callback(new Error('请按照提示输入')) + } + }) + callback() + } + }, + trigger: trigger + }, + // openstack云主机 + sanforOpVm: { + validator: (rule, value, callback) => { + const reg1 = /^[A-Z]+$/ + const reg2 = /^[a-z]+$/ + const reg3 = /^[0-9]+$/ + const reg4 = "()`~!@#$%^&*_-+=|{}[]:;'<>,.?/" + let index = 0 + for (const i in value) { + if (reg1.test(value[i])) { + index = index + 1 + continue + } + if (reg2.test(value[i])) { + index = index + 1 + continue + } + if (reg3.test(value[i])) { + index = index + 1 + continue + } + if (reg4.indexOf(value[i]) > -1) { + index = index + 1 + continue + } + } + if (index >= 3 && value.length >= 8) { + callback() + } else { + callback(new Error("密码最少8位,至少包括三项([a-z,A-Z],[0-9]和()`~!@#$%^&*_-+=|{}[]:;'<>,.?/)的特殊符号")) + } + }, + trigger: trigger + }, + sanforOpVmName: { + validator: (rule, value, callback) => { + const reg1 = /^[A-Za-z0-9]+$/ + const reg2 = /^[\u4e00-\u9fa5]*$/ + const reg4 = '()[]{}()【】{}@|._-+ ' + let flag = true + for (const i in value) { + if (!reg1.test(value[i]) && !reg2.test(value[i]) && reg4.indexOf(value[i]) === -1) { + flag = false + break + } + } + if (flag && value.length <= 70) { + callback() + } else { + callback(new Error('只能由中文、数字、字母、()[]{}()【】{}@|._-+以及空格组成')) + } + }, + trigger: trigger + }, + routerFilter: { + validator: (rule, value, callback) => { + if (!value) { + callback() + } else { + let i = '' + let result = '' + let c = '' + for (i = 0; i < value.length; i++) { + c = value.substr(i, 1) + if (c == '\n') { + result = result + '|' + } else if (c != '\r') { + result = result + c + } + } + result = result.split('|') + const reg = /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]))$/ + result.forEach(function (item) { + const list = item.split(',') + const listOne = list[0].split('/') + if (!reg.test(listOne[0])) { + callback(new Error('请按照提示输入')) + } + if (parseInt(listOne[1]) < 0 || parseInt(listOne[1]) >= 32) { + callback(new Error('请按照提示输入')) + } + if (!reg.test(list[1])) { + callback(new Error('请按照提示输入')) + } + }) + callback() + } + }, + trigger: trigger + }, + ipPool: { + validator: (rule, value, callback) => { + if (!value) { + callback() + } else { + let i, result = '', c; + const testList = []; + for (i = 0; i < value.length; i++) { + c = value.substr(i, 1) + if (c == '\n') { + result = result + '/' + } else if (c != '\r') { + result = result + c + } + } + result = result.split('/') + result.forEach(function (item) { + item.split('-').forEach(function (t) { + testList.push(t) + }) + }) + if (testList.length % 2 != 0) { + callback(new Error('请按照提示输入')) + } + const reg = /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]))?$/ + testList.forEach(function (item) { + const tet = reg.test(item) + if (!tet) { + callback(new Error('请按照提示输入')) + } + }) + callback() + } + }, + trigger: trigger + }, + v6RouterFilter: { + validator: (rule, value, callback) => { + if (!value) { + callback() + } else { + let i = '' + let result = '' + let c = '' + for (i = 0; i < value.length; i++) { + c = value.substr(i, 1) + if (c == '\n') { + result = result + '|' + } else if (c != '\r') { + result = result + c + } + } + result = result.split('|') + const reg = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/ + result.forEach(function (item) { + const list = item.split(',') + const listOne = list[0].split('/') + if (!reg.test(listOne[0])) { + callback(new Error('请按照提示输入')) + } + if (parseInt(listOne[1]) < 0 || parseInt(listOne[1]) >= 128) { + callback(new Error('请按照提示输入')) + } + if (!reg.test(list[1])) { + callback(new Error('请按照提示输入')) + } + }) + callback() + } + }, + trigger: trigger + }, + v6IpPool: { + validator: (rule, value, callback) => { + if (!value) { + callback() + } else { + let i, result = '', c; + const testList = [] + for (i = 0; i < value.length; i++) { + c = value.substr(i, 1) + if (c == '\n') { + result = result + '/' + } else if (c != '\r') { + result = result + c + } + } + result = result.split('/') + result.forEach(function (item) { + item.split('-').forEach(function (t) { + testList.push(t) + }) + }) + if (testList.length % 2 != 0) { + callback(new Error('请按照提示输入')) + } + const reg = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/ + testList.forEach(function (item) { + const tet = reg.test(item) + if (!tet) { + callback(new Error('请按照提示输入')) + } + }) + callback() + } + }, + trigger: trigger + }, + specialNoChinese: { pattern: /^[\w%\-+._]{1,}$/, message: '不能输入中文和除.+=_空格外的其他特殊字符', trigger: trigger }, + // ipV6校验 + ipV6: { + validator: (rule, value, callback) => { + const reg = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/ + // 另外一种 + // ([a-f0-9]{1,4}(:[a-f0-9]{1,4}){7}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){0,7}::[a-f0-9]{0,4}(:[a-f0-9]{1,4}){0,7}) + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的IP地址')) + } + }, + trigger: trigger + }, + ipV6Cidr: { + validator: (rule, value, callback) => { + const reg = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/ + // 另外一种 + // ([a-f0-9]{1,4}(:[a-f0-9]{1,4}){7}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){0,7}::[a-f0-9]{0,4}(:[a-f0-9]{1,4}){0,7}) + if (value.split('/')) { + const result = value.split('/') + const ret1 = reg.test(result[0]) + if (ret1 && (result[1]) && Number(result[1]) >= 1 && Number(result[1]) <= 128) return callback() + else return callback(new Error('请输入2222::/24类型格式')) + } else { + callback(new Error('请输入2222::/24类型格式')) + } + }, + trigger: trigger + }, + noOnlyNum: { + validator: (rule, value, callback) => { + const pattern = /^\d+$/g + if (value.match(pattern)) { + callback(new Error('内容不能为纯数字')) + } else { + callback() + } + }, + trigger: trigger + }, + headSlash: { pattern: /^\/.{0,}$/, message: '须以/开头', trigger: trigger }, + cidr: { + pattern: /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\/(\d{3}\d{2}|\d{1,2}\d|\d))?$/, + message: '请输入10.12.2.1/24类型格式', + trigger: trigger + }, + ipORcidr: { + validator: (rule, value, callback) => { + const reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/ + const reg1 = /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\/(\d{3}\d{2}|\d{1,2}\d|\d))?$/ + if (reg.test(value) || reg1.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的地址')) + } + }, + trigger: trigger + }, + vlanId: { + validator: (rule, value, callback) => { + if (/^[1-9][0-9]*$/.test(value) && parseInt(value) <= 4095 && parseInt(value) >= 1) { + callback() + } else if (value || value === 0) { + callback(new Error('范围1-4095')) + } else { + callback() + } + }, + trigger: trigger + }, + url: { + validator: (rule, value, callback) => { + const reg = /^(https?:\/\/)([0-9a-z.]+)(:[0-9]+)?([/0-9a-z.]+)?(\?[0-9a-z&=]+)?(#[0-9-a-z]+)?/i + const reg1 = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9]):\d{0,5}$/; + const reg2 = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/ + if (reg.test(value) || reg1.test(value) || reg2.test(value) || !value) { + callback() + } else { + callback(new Error('请输入正确的地址')) + } + }, + trigger: trigger + }, + noChineseSpace: { + validator: (rule, value, callback) => { + if (/[\u4e00-\u9fa5\s]/.test(value)) { + callback(new Error('输入的命令不能包含中文和空格')) + } else { + callback() + } + }, + trigger: trigger + }, + // Int类型最大取值范围,配额输入值 + maxInt: { + pattern: /^(?:[0-9]|[1-9]\d{1,8}|[1-3]\d{0}|21474836[0-3]\d|214748364[0-7])$/, + message: '输入有误,范围是0-2147483647', + trigger: trigger + }, + nginxSet: { + validator: (rule, value, callback) => { + const pattern = new RegExp('[`!@#^&*()|{}\';\',<>?!@#¥……&*()——|{}【】‘;”“\'。,、?]') + if (pattern.test(value)) { + callback(new Error('特殊字符仅支持/ \\ . ~:$=')) + } else { + callback() + } + }, + trigger: trigger + }, + syncedsetsName: { + validator: (rule, value, callback) => { + const pattern1 = /^[\s ]|[ ]$/gi; + const pattern2 = /^[a-zA-Z_][a-zA-Z0-9-_.\s]*$/ + if (!pattern1.test(value) && pattern2.test(value)) { + callback() + } else { + callback(new Error('输入字母、数字、空格、点、中划线和下划线,以字母或下划线开始,首尾不能包含空格')) + } + }, + trigger: trigger + }, + uuid: { + validator: (rule, value, callback) => { + if (!value || (parseInt(value) <= 32767 && parseInt(value) >= 0)) { + callback() + } else { + callback(new Error('范围0-32767')) + } + }, + trigger: trigger + }, + hmcName: { + validator: (rule, value, callback) => { + const regEn = /[`~!@#$%^&*()+<>?:"{}\\,./;'[\]]/im, + regCn = /[·!#¥(——):;“”‘、,|《。》?、【】[\]]/im, + regCN = /^[^\u4e00-\u9fa5]+$/ + if (regEn.test(value) || regCn.test(value) || !regCN.test(value)) { + callback(new Error('不能输入中文和特殊字符')) + } else { + callback() + } + }, + trigger: trigger + }, + huaweiStorageName: { + validator: (rule, value, callback) => { + const reg1 = /^[A-Za-z0-9]+$/ + const reg2 = /^[\u4e00-\u9fa5]*$/ + const reg3 = '._-' + let flag = true + for (const i in value) { + if (!reg1.test(value[i]) && !reg2.test(value[i]) && reg3.indexOf(value[i]) === -1) { + flag = false + break + } + } + function getValLen (value, strlen) { + for (let i = 0; i < value.length; i++) { + if (value.charCodeAt(i) < 27 || value.charCodeAt(i) > 126) { // 中文和中文字符 + strlen += 3; + } else { + strlen++; + } + } + return strlen; + } + if (flag && getValLen(value, 0) <= 31 && getValLen(value, 0) >= 1) { + callback() + } else { + callback(new Error('只能由中文、数字、字母、._-组成,长度为1-31位,中文为3个字符')) + } + }, + trigger: trigger + }, + iscsiClientName: { + validator: (rule, value, callback) => { + const reg = /^[a-zA-Z\d.:@_-]{8,64}$/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('名称8-64个字符,支持大小写字母数字和.:@_-')) + } + }, + trigger: trigger + }, + iscsiClientPassword: { + validator: (rule, value, callback) => { + const reg = /^[a-zA-Z\d/@_-]{6,12}$/ + if (reg.test(value) || !value) { + callback() + } else { + callback(new Error('密码6-12位字符,支持大小写字母数字和/@_-')) + } + }, + trigger: trigger + } +} diff --git a/src/validate/index.js b/src/validate/index.js new file mode 100644 index 0000000..4ae950b --- /dev/null +++ b/src/validate/index.js @@ -0,0 +1,8 @@ +import common from './common' +import software from './software' +import sdn from './sdn' +export default { + ...common, + ...software, + ...sdn +} diff --git a/src/validate/sdn.js b/src/validate/sdn.js new file mode 100644 index 0000000..1877cba --- /dev/null +++ b/src/validate/sdn.js @@ -0,0 +1,103 @@ +const trigger = null +export default { + sdnName: { + validator: (rule, value, callback) => { + const regEn = /[ *<>?:"\\|']/im; + if (regEn.test(value)) { + callback(new Error('不能包含\\:*?”<>’|')) + } else { + callback() + } + }, + trigger: trigger + }, + sdnRouterName: { pattern: /^[a-zA-Z][a-zA-Z0-9_]*$/, message: '字母开头,仅支持数字、字母、下划线', trigger: trigger }, + vrfName: { + validator: (rule, value, callback) => { + const reg1 = /^[\u4e00-\u9fa5?]*$/; // 中文和? + const reg2 = /^".*"$/ // 引号开始结束 + if (!value) { + callback() + } else { + if (reg1.test(value) || value.indexOf('_public_') > -1) { + callback(new Error('不能包含中文,_public_和?,以英文双引号开始和结束时,中间可包含空格,否则不可包含空格')) + } else if (/[\s]/.test(value)) { + if (!reg2.test(value)) { + callback(new Error('不能包含中文,_public_和?,以英文双引号开始和结束时,中间可包含空格,否则不可包含空格')) + } else { + callback() + } + } else { + callback() + } + } + }, + trigger: trigger + }, + CbsByte: { + validator: (rule, value, callback) => { + const number = value === '' ? -1 : Number(value); + if (number < 10000 || number > 4294967295) { + callback(new Error('单位为Bytes时,取值范围为10000-4294967295')) + } else { + callback() + } + }, + trigger: trigger + }, + CbsKByte: { + validator: (rule, value, callback) => { + const number = value === '' ? -1 : Number(value); + if (number < 9 || number > 4194303) { + callback(new Error('单位为Kbytes时,取值范围为9-4194303')) + } else { + callback() + } + }, + trigger: trigger + }, + CirKbps: { + validator: (rule, value, callback) => { + const number = value === '' ? -1 : Number(value); + if (number < 0 || number > 4294967295) { + callback(new Error('单位为Kbps时,取值范围为0-4294967295')) + } else { + callback() + } + }, + trigger: trigger + }, + CirMbps: { + validator: (rule, value, callback) => { + const number = value === '' ? -1 : Number(value); + if (number < 0 || number > 4294967) { + callback(new Error('单位为Mbps时,取值范围为0-4294967')) + } else { + callback() + } + }, + trigger: trigger + }, + CirGbps: { + validator: (rule, value, callback) => { + const number = value === '' ? -1 : Number(value); + if (number < 0 || number > 4294) { + callback(new Error('单位为Gbps时,取值范围为0-4294')) + } else { + callback() + } + }, + trigger: trigger + }, + CirMbyte: { + validator: (rule, value, callback) => { + const number = value === '' ? -1 : Number(value); + if (number < 1 || number > 4095) { + callback(new Error('单位为Mbytes时,取值范围为1-4095')) + } else { + callback() + } + }, + trigger: trigger + } +} diff --git a/src/validate/software.js b/src/validate/software.js new file mode 100644 index 0000000..adb6ab5 --- /dev/null +++ b/src/validate/software.js @@ -0,0 +1,14 @@ +const trigger = null +export default { + datebasePassword: { + validator: (rule, value, callback) => { + const reg = /(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*()+_-]).{8,32}/ + if (!value || reg.test(value)) { + callback() + } else { + callback(new Error('请输入8-32位,必须同时包含大小写字母、数字、特殊字符[!@#$%^&*()+_-]')) + } + }, + trigger: trigger + } +} diff --git a/src/views/Home.vue b/src/views/Home.vue new file mode 100644 index 0000000..d656102 --- /dev/null +++ b/src/views/Home.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/views/business_network_screen/AlarmList.vue b/src/views/business_network_screen/AlarmList.vue new file mode 100644 index 0000000..1b8fd8b --- /dev/null +++ b/src/views/business_network_screen/AlarmList.vue @@ -0,0 +1,112 @@ + + + diff --git a/src/views/business_network_screen/NetworkTable/Progress.vue b/src/views/business_network_screen/NetworkTable/Progress.vue new file mode 100644 index 0000000..99d6db8 --- /dev/null +++ b/src/views/business_network_screen/NetworkTable/Progress.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/views/business_network_screen/NetworkTable/StatusIcon.vue b/src/views/business_network_screen/NetworkTable/StatusIcon.vue new file mode 100644 index 0000000..9bd9cc3 --- /dev/null +++ b/src/views/business_network_screen/NetworkTable/StatusIcon.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/views/business_network_screen/NetworkTable/index.vue b/src/views/business_network_screen/NetworkTable/index.vue new file mode 100644 index 0000000..281ce8c --- /dev/null +++ b/src/views/business_network_screen/NetworkTable/index.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/views/business_network_screen/data.js b/src/views/business_network_screen/data.js new file mode 100644 index 0000000..b1afa30 --- /dev/null +++ b/src/views/business_network_screen/data.js @@ -0,0 +1,134 @@ +export const top5 = { + keys: ['经发委', '投资促进局', '科技和信息化局', '行政审批局', '大数据中心', '经发委', '投资促进局', '科技和信息化局', '行政审批局', '大数据中心'], + values: [{ + name: '', + data: [355, 323, 278, 256, 213, 355, 323, 278, 256, 213] + }] +} +export const top10 = { + keys: ['经发委', '投资促', '科技和', '行政审', '大数据', '经发委', '投资促', '科技和信息化局', '行政审批局', '大数据中心'], + values: [{ + name: '', + data: [355, 323, 278, 256, 213, 355, 323, 278, 256, 213] + }] +} +export const orders = { + keys: ['通用事件服务', '云主机资源', '云桌面', '账号使用变更', '政务内网域名', '公网域名', '政务网资源', '网络权限资源', '通用事件服务', '云主机资源', '云桌面', '账号使用变更', '政务内网域名', '公网域名', '政务网资源', '网络权限资源', '公网域名', '政务网资源', '网络权限资源'], + values: [{ + name: '', + data: [9, 8, 4, 6, 8, 4, 4, 2, 9, 8, 4, 6, 8, 4, 4, 2, 8, 4, 6] + }] +} +export const eventOrders = [{ + name: '电话', + value: 4 +}, { + name: '邮件', + value: 20 +}, { + name: 'APP', + value: 30 +}, { + name: '巡检', + value: 35 +}, { + name: '告警', + value: 10 +}, { + name: '其他', + value: 5 +}] +export const alarmList = [{ + content: '致命告警1 2020-11-18 23:44 交换机1 CPU利用率超95%', + level: 'danger' +}, { + content: '致命告警2 2020-11-18 23:44 交换机1 CPU利用率超95%', + level: 'warning' +}, { + content: '致命告警3 2020-11-18 23:44 交换机1 CPU利用率超95%', + level: 'normal' +}, { + content: '致命告警4 2020-11-18 23:44 交换机1 CPU利用率超95%', + level: 'info' +}, { + content: '致命告警5 2020-11-18 23:44 交换机1 CPU利用率超95%', + level: 'danger' +}, { + content: '致命告警6 2020-11-18 23:44 交换机1 CPU利用率超95%', + level: 'warning' +}, { + content: '致命告警7 2020-11-18 23:44 交换机1 CPU利用率超95%', + level: 'normal' +}, { + content: '致命告警8 2020-11-18 23:44 交换机1 CPU利用率超95%', + level: 'info' +}, { + content: '致命告警9 2020-11-18 23:44 交换机1 CPU利用率超95%', + level: 'danger' +}, { + content: '致命告警10 2020-11-18 23:44 交换机1 CPU利用率超95%', + level: 'warning' +}, { + content: '致命告警11 2020-11-18 23:44 交换机1 CPU利用率超95%', + level: 'normal' +}, { + content: '致命告警12 2020-11-18 23:44 交换机1 CPU利用率超95%', + level: 'info' +}] +export const tableList = [{ + name: 'C00', + type: 64, + ip: '10.255.125.125', + status: 'success', + health: 'success', + cpu: 20, + mem: 75 +}, { + name: 'C00', + type: 64, + ip: '10.255.125.125', + status: 'warning', + health: 'success', + cpu: 51, + mem: 75 +}, { + name: 'C00', + type: 64, + ip: '10.255.125.125', + status: 'danger', + health: 'success', + cpu: 80, + mem: 75 +}, { + name: 'C00', + type: 64, + ip: '10.255.125.125', + status: 'success', + health: 'success', + cpu: 96, + mem: 75 +}, { + name: 'C00', + type: 64, + ip: '10.255.125.125', + status: 'success', + health: 'success', + cpu: 4, + mem: 75 +}, { + name: 'C00', + type: 64, + ip: '10.255.125.125', + status: 'success', + health: 'success', + cpu: 4, + mem: 75 +}, { + name: 'C00', + type: 64, + ip: '10.255.125.125', + status: 'success', + health: 'success', + cpu: 4, + mem: 75 +}] diff --git a/src/views/business_network_screen/index.vue b/src/views/business_network_screen/index.vue new file mode 100644 index 0000000..610734b --- /dev/null +++ b/src/views/business_network_screen/index.vue @@ -0,0 +1,179 @@ + + + diff --git a/src/views/count_screen/OneCenter.vue b/src/views/count_screen/OneCenter.vue new file mode 100644 index 0000000..00a549a --- /dev/null +++ b/src/views/count_screen/OneCenter.vue @@ -0,0 +1,119 @@ + + + diff --git a/src/views/count_screen/ResourceCount.vue b/src/views/count_screen/ResourceCount.vue new file mode 100644 index 0000000..99778ae --- /dev/null +++ b/src/views/count_screen/ResourceCount.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/views/count_screen/index.vue b/src/views/count_screen/index.vue new file mode 100644 index 0000000..b3edfcd --- /dev/null +++ b/src/views/count_screen/index.vue @@ -0,0 +1,238 @@ + + + + diff --git a/src/views/dc_screen/data.js b/src/views/dc_screen/data.js new file mode 100644 index 0000000..196ba82 --- /dev/null +++ b/src/views/dc_screen/data.js @@ -0,0 +1,49 @@ +export const overviewConfigs = [{ + title: '总体情况', + icon: 'el-icon-monitor', + type: 'COUNT', + data: [{ + title: '物理机总数', + className: 'lgreen', + unit: '台', + value: 0 + }, { + title: '云主机总数', + className: 'green', + unit: '台', + value: 0 + }, { + title: '云主机在线', + className: 'purple', + unit: '台', + value: 0 + }, { + title: '链路总数', + className: 'yellow', + unit: '', + value: 0 + }] +}, { + title: '使用情况', + icon: 'el-icon-data-line', + type: 'PROGRESS', + data: [{ + title: 'CPU总量/剩余量', + unit: '核', + color: '#3AE13A', + used: 0, + total: 0 + }, { + title: '内存总量/剩余量', + unit: 'G', + color: '#FFC400', + used: 0, + total: 0 + }, { + title: '存储总量/剩余量', + unit: 'T', + color: '#33A1FF', + used: 0, + total: 0 + }] +}] diff --git a/src/views/dc_screen/index.vue b/src/views/dc_screen/index.vue new file mode 100644 index 0000000..79a7beb --- /dev/null +++ b/src/views/dc_screen/index.vue @@ -0,0 +1,295 @@ + + + + diff --git a/src/views/dc_screen_build/index.vue b/src/views/dc_screen_build/index.vue new file mode 100644 index 0000000..ede9918 --- /dev/null +++ b/src/views/dc_screen_build/index.vue @@ -0,0 +1,250 @@ + + + + diff --git a/src/views/login/login.vue b/src/views/login/login.vue new file mode 100644 index 0000000..0554cce --- /dev/null +++ b/src/views/login/login.vue @@ -0,0 +1,248 @@ + + + + + diff --git a/src/views/login/sso.vue b/src/views/login/sso.vue new file mode 100644 index 0000000..447ccb7 --- /dev/null +++ b/src/views/login/sso.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/views/login/tools.js b/src/views/login/tools.js new file mode 100644 index 0000000..f058fa0 --- /dev/null +++ b/src/views/login/tools.js @@ -0,0 +1,15 @@ +import { setToken } from 'utils/auth' +import { enablePermissionStorage, menuKey, enableUserStorage, userKey } from '@/config' + +export function setLoginData (data) { + const { accountCategory, manager = {}, servicePermissions } = data + if (enableUserStorage) { + localStorage.setItem(userKey, JSON.stringify({ ...manager, accountCategory })) + } + if (enablePermissionStorage) { + localStorage.setItem(menuKey, JSON.stringify(servicePermissions || [])) + } + localStorage.setItem('buttonData', JSON.stringify(data.buttons || [])) + localStorage.removeItem('lockData') + setToken(data.token) +} diff --git a/src/views/network_screen/data.js b/src/views/network_screen/data.js new file mode 100644 index 0000000..af5dff6 --- /dev/null +++ b/src/views/network_screen/data.js @@ -0,0 +1,41 @@ +export default { + nodes: [ + { id: 1, x: 77, y: 86, comboId: 'a', alarmLevel: 1, deviceType: 'switch' }, + { id: 2, x: 177, y: 86, comboId: 'a', alarmLevel: 2, deviceType: 'switch' }, + { id: 3, x: 277, y: 86, comboId: 'a', alarmLevel: 3, deviceType: 'switch' }, + { id: 4, x: 377, y: 86, comboId: 'a', alarmLevel: 4, deviceType: 'switch' }, + { id: 5, x: 721, y: 88, comboId: 'b', deviceType: 'router' }, + { id: 6, x: 721, y: 188, comboId: 'b', deviceType: 'router' }, + { id: 7, x: 1001, y: 88, comboId: 'c', deviceType: 'switch1' }, + { id: 8, x: 1001, y: 188, comboId: 'c', deviceType: 'switch1' }, + { id: 9, x: 1539, y: 74, comboId: 'd', deviceType: 'pc' }, + { id: 10, x: 1539, y: 174, comboId: 'd', deviceType: 'pc' }, + { id: 11, x: 1539, y: 274, comboId: 'd', deviceType: 'pc' }, + { id: 12, x: 1539, y: 374, comboId: 'd', deviceType: 'pc' }, + { id: 13, x: 698, y: 361, comboId: 'e', deviceType: 'router' }, + { id: 14, x: 798, y: 361, comboId: 'e', deviceType: 'router' }, + { id: 15, x: 898, y: 361, comboId: 'e', deviceType: 'router' }, + { id: 16, x: 219, y: 635, comboId: 'f', deviceType: 'router' }, + { id: 17, x: 319, y: 635, comboId: 'f', deviceType: 'router' }, + { id: 18, x: 219, y: 535, comboId: 'f', deviceType: 'switch1' }, + { id: 19, x: 319, y: 535, comboId: 'f', deviceType: 'switch1' }, + { id: 20, x: 179, y: 735, comboId: 'f', deviceType: 'server' }, + { id: 21, x: 279, y: 735, comboId: 'f', deviceType: 'server' }, + { id: 22, x: 379, y: 735, comboId: 'f', deviceType: 'server' }, + { id: 26, x: 582, y: 637, comboId: 'f', deviceType: 'router' }, + { id: 27, x: 706, y: 637, comboId: 'f', deviceType: 'router' }, + { id: 28, x: 599, y: 532, comboId: 'f', deviceType: 'switch1' }, + { id: 29, x: 710, y: 533, comboId: 'f', deviceType: 'switch1' }, + { id: 30, x: 539, y: 738, comboId: 'f', deviceType: 'server' }, + { id: 31, x: 633, y: 743, comboId: 'f', deviceType: 'server' }, + { id: 32, x: 735, y: 741, comboId: 'f', deviceType: 'server' }, + { id: 33, x: 1381, y: 546, comboId: 'g', deviceType: 'router' }, + { id: 34, x: 1481, y: 546, comboId: 'g', deviceType: 'router' }, + { id: 35, x: 1321, y: 746, comboId: 'g', deviceType: 'server' }, + { id: 36, x: 1421, y: 746, comboId: 'g', deviceType: 'server' }, + { id: 37, x: 1521, y: 746, comboId: 'g', deviceType: 'server' }, + { id: 38, x: 1381, y: 646, comboId: 'g', deviceType: 'switch1' }, + { id: 39, x: 1481, y: 646, comboId: 'g', deviceType: 'switch1' }], + edges: [{ source: '1', target: '2' }, { source: '1', target: '13' }, { source: '2', target: '14' }, { source: '3', target: '13' }, { source: '3', target: '4' }, { source: '4', target: '14' }, { source: '4', target: '15' }, { source: '5', target: '6' }, { source: '5', target: '7' }, { source: '5', target: '13' }, { source: '6', target: '8' }, { source: '6', target: '14' }, { source: '7', target: '9' }, { source: '7', target: '10' }, { source: '8', target: '11' }, { source: '8', target: '12' }, { source: '13', target: '14' }, { source: '13', target: '18' }, { source: '13', target: '28' }, { source: '13', target: '33' }, { source: '14', target: '15' }, { source: '14', target: '19' }, { source: '14', target: '29' }, { source: '14', target: '34' }, { source: '18', target: '16' }, { source: '18', target: '19' }, { source: '19', target: '17' }, { source: '16', target: '17' }, { source: '16', target: '20' }, { source: '16', target: '21' }, { source: '16', target: '22' }, { source: '28', target: '29' }, { source: '28', target: '26' }, { source: '29', target: '27' }, { source: '26', target: '27' }, { source: '26', target: '30' }, { source: '26', target: '31' }, { source: '26', target: '32' }, { source: '27', target: '30' }, { source: '27', target: '31' }, { source: '27', target: '32' }, { source: '38', target: '39' }, { source: '33', target: '34' }, { source: '33', target: '38' }, { source: '34', target: '39' }, { source: '38', target: '35' }, { source: '38', target: '36' }, { source: '38', target: '37' }, { source: '39', target: '35' }, { source: '39', target: '36' }, { source: '39', target: '37' }], + combos: [{ id: 'a', label: '云流量审计区' }, { id: 'd', label: '扩容云桌面' }, { id: 'e', label: '核心交换区' }, { id: 'g', label: '扩充计算资源', parentId: 'product' }, { id: 'f', label: '原有计算资源', parentId: 'product' }, { id: 'product', label: '生产集群', main: true }, { id: 'c', label: '外网交换机扩容', parentId: 'kuorong' }, { id: 'b', label: '汇聚交换机扩容', parentId: 'kuorong' }, { id: 'kuorong', main: true }] +} diff --git a/src/views/network_screen/index.vue b/src/views/network_screen/index.vue new file mode 100644 index 0000000..5938512 --- /dev/null +++ b/src/views/network_screen/index.vue @@ -0,0 +1,19 @@ + + + + diff --git a/src/views/network_screen/test.js b/src/views/network_screen/test.js new file mode 100644 index 0000000..ffcdcaf --- /dev/null +++ b/src/views/network_screen/test.js @@ -0,0 +1 @@ +export default { success: true, status: null, message: '查询拓扑图成功', errorMsg: null, data: { nodes: [{ deviceType: '未知', mem: null, ip: '3.1.0.1', x: 565, name: 'H3C S10508-DC1-A06&A08', y: 371, cpu: null, health: '正常', alarmLevel: 0, id: 417, category: '网络设备' }, { mem: null, x: 199, name: '车坊局', y: 290, cpu: null, alarmLevel: 0, id: 471 }, { mem: null, x: 409, name: '玲珑湾', y: 56, cpu: null, alarmLevel: 0, id: 496 }, { mem: null, x: 230, name: '南施街', y: 433, cpu: null, alarmLevel: 0, id: 498 }, { mem: null, x: 578, name: '莲花模块', y: 31, cpu: null, alarmLevel: 0, id: 500 }, { mem: null, x: 762, name: '唯亭开发区', y: 85, cpu: null, alarmLevel: 0, id: 502 }, { mem: null, x: 271, name: '跨塘局-1', y: 150, cpu: null, alarmLevel: 0, id: 504 }, { mem: null, x: 917, name: '东湖大郡', y: 290, cpu: null, alarmLevel: 0, id: 506 }, { mem: null, x: 884, name: '通园路', y: 481, cpu: null, alarmLevel: 0, id: 508 }, { mem: null, x: 748, name: '胜浦机房', y: 597, cpu: null, alarmLevel: 0, id: 510 }, { mem: null, x: 582, name: '唯亭机房', y: 657, cpu: null, alarmLevel: 0, id: 512 }, { mem: null, x: 414, name: '跨塘机房', y: 616, cpu: null, alarmLevel: 0, id: 514 }, { mem: null, x: 219, name: '城东局', y: 211, cpu: null, alarmLevel: 0, id: 516 }], edges: [{ source: '470', target: '417' }, { source: '471', target: '417' }, { source: '495', target: '417' }, { source: '417', target: '516' }, { source: '417', target: '501' }, { source: '417', target: '504' }, { source: '509', target: '417' }, { source: '417', target: '514' }, { source: '503', target: '417' }, { source: '499', target: '417' }, { source: '512', target: '417' }, { source: '513', target: '417' }, { source: '515', target: '417' }, { source: '497', target: '417' }, { source: '498', target: '417' }, { source: '496', target: '417' }, { source: '500', target: '417' }, { source: '502', target: '417' }, { source: '505', target: '417' }, { source: '506', target: '417' }, { source: '507', target: '417' }, { source: '508', target: '417' }, { source: '511', target: '417' }, { source: '510', target: '417' }] }, solution: null, failed: false } diff --git a/src/views/network_screen/topology.vue b/src/views/network_screen/topology.vue new file mode 100644 index 0000000..f2da162 --- /dev/null +++ b/src/views/network_screen/topology.vue @@ -0,0 +1,346 @@ + + + + diff --git a/src/views/operation_screen/CountItem.vue b/src/views/operation_screen/CountItem.vue new file mode 100644 index 0000000..b22559f --- /dev/null +++ b/src/views/operation_screen/CountItem.vue @@ -0,0 +1,106 @@ + + + diff --git a/src/views/operation_screen/data.js b/src/views/operation_screen/data.js new file mode 100644 index 0000000..4d7e6be --- /dev/null +++ b/src/views/operation_screen/data.js @@ -0,0 +1,41 @@ +export const overviewConfigs = [{ + title: '常规作业', + icon: 'el-icon-monitor', + type: 'COUNT', + data: [{ + title: '已发布', + className: 'lgreen', + unit: '个', + value: 0 + }, { + title: '开发中', + className: 'green', + unit: '个', + value: 0 + }, { + title: '审批中', + className: 'purple', + unit: '个', + value: 0 + }] +}, { + title: '定时作业', + icon: 'el-icon-time', + type: 'COUNT', + data: [{ + title: '未激活', + className: 'lgreen', + unit: '个', + value: 0 + }, { + title: '已激活', + className: 'green', + unit: '个', + value: 0 + }, { + title: '暂停中', + className: 'purple', + unit: '个', + value: 0 + }] +}] diff --git a/src/views/operation_screen/index.vue b/src/views/operation_screen/index.vue new file mode 100644 index 0000000..aab61e7 --- /dev/null +++ b/src/views/operation_screen/index.vue @@ -0,0 +1,240 @@ + + + + diff --git a/src/views/order_screen/CountItem.vue b/src/views/order_screen/CountItem.vue new file mode 100644 index 0000000..fb16117 --- /dev/null +++ b/src/views/order_screen/CountItem.vue @@ -0,0 +1,106 @@ + + + diff --git a/src/views/order_screen/index.vue b/src/views/order_screen/index.vue new file mode 100644 index 0000000..715f553 --- /dev/null +++ b/src/views/order_screen/index.vue @@ -0,0 +1,182 @@ + + + + diff --git a/src/views/outside/OutsideCenter.vue b/src/views/outside/OutsideCenter.vue new file mode 100644 index 0000000..4f92b62 --- /dev/null +++ b/src/views/outside/OutsideCenter.vue @@ -0,0 +1,83 @@ + + + + diff --git a/src/views/outside/OutsideCenter1.vue b/src/views/outside/OutsideCenter1.vue new file mode 100644 index 0000000..36fd4d8 --- /dev/null +++ b/src/views/outside/OutsideCenter1.vue @@ -0,0 +1,26 @@ + + + + diff --git a/src/views/outside/components/CenterCount.vue b/src/views/outside/components/CenterCount.vue new file mode 100644 index 0000000..f98a6e3 --- /dev/null +++ b/src/views/outside/components/CenterCount.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/views/outside/components/Header.vue b/src/views/outside/components/Header.vue new file mode 100644 index 0000000..f3520cd --- /dev/null +++ b/src/views/outside/components/Header.vue @@ -0,0 +1,59 @@ + + + + diff --git a/src/views/outside/components/OrderCount.vue b/src/views/outside/components/OrderCount.vue new file mode 100644 index 0000000..300e6f9 --- /dev/null +++ b/src/views/outside/components/OrderCount.vue @@ -0,0 +1,71 @@ + + + diff --git a/src/views/outside/data.js b/src/views/outside/data.js new file mode 100644 index 0000000..a79b644 --- /dev/null +++ b/src/views/outside/data.js @@ -0,0 +1,392 @@ +export default +{ success: true, status: null, message: '查询各数据中心关系成功', errorMsg: null, data: { lines: [{ weight: true, source: '苏州政务数据中心', target: '苏州政务数据中心' }, { weight: true, source: '苏州政务数据中心', target: '苏州国科数据中心' }, { weight: true, source: '苏州政务数据中心', target: '苏州电信数据中心' }, { weight: true, source: '苏州政务数据中心', target: '苏州联通数据中心' }, { weight: true, source: '苏州政务数据中心', target: '昆山联通数据中心' }, { weight: true, source: '苏州政务数据中心', target: '广州灾备数据中心' }], points: [{ leader: true, name: '苏州政务数据中心', id: 3, position: '[0.60, 0.35]' }, { name: '苏州国科数据中心', id: 4, position: '[0.22, 0.48]' }, { name: '苏州电信数据中心', id: 5, position: '[0.59, 0.54]' }, { name: '苏州联通数据中心', id: 6, position: '[0.31, 0.67]' }, { name: '昆山联通数据中心', id: 7, position: '[0.71, 0.79]' }, { name: '广州灾备数据中心', id: 8, position: '[0.11, 0.93]' }] }, solution: null, failed: false } + +export const points = [{ + name: '社会事业局', + coordinate: [0.13, 0.28] +}, +{ + name: '组织部', + coordinate: [0.28, 0.35] +}, { + name: '促进局', + coordinate: [0.36, 0.32] +}, { + name: '党工委', + coordinate: [0.58, 0.26] +}, { + name: '宣传部', + coordinate: [0.67, 0.35] +}, { + name: '环保局', + coordinate: [0.84, 0.35] +}, +{ + name: '金管局', + coordinate: [0.52, 0.41] +}, { + name: '创新局', + coordinate: [0.34, 0.51] +}, { + name: '社保局', + coordinate: [0.30, 0.47] +}, { + name: '规划局', + coordinate: [0.44, 0.49] +}, { + name: '政法委', + coordinate: [0.23, 0.60] +}, +{ + name: '行政审核局', + coordinate: [0.14, 0.65] +}, { + name: '经发委', + coordinate: [0.26, 0.75] +}, { + name: '教育局', + coordinate: [0.43, 0.63] +}, { + name: '工委会', + coordinate: [0.39, 0.78] +}, { + name: '纪工委', + coordinate: [0.54, 0.65] +}, +{ + name: '自贸区协调局', + coordinate: [0.52, 0.82] +}, { + name: '国资办', + coordinate: [0.64, 0.57] +}, { + name: '统战部', + coordinate: [0.64, 0.78] +}, { + name: '市监局', + coordinate: [0.75, 0.55] +}, { + name: '科信局', + coordinate: [0.81, 0.74] +}] +export const dcList = [ + { + id: 1, + name: '政务云', + vm: 256, + mem: 345, + cpu: 236, + disk: 111, + coordinate: [63641.82242120001, 46084.01155038807] + }, + { + id: 2, + name: '华为云', + vm: 256, + mem: 345, + cpu: 236, + disk: 111, + coordinate: [64219.04677438915, 39350.17290732433] + }, + { + id: 3, + name: '天翼云', + vm: 256, + mem: 345, + cpu: 236, + disk: 111, + coordinate: [60995.71651291201, 46481.45811653861] + } +] +export const departList = [ + { + id: 1, + name: '莲花模块', + coordinate: [65107.9281, 42188.9569] + }, + { + id: 2, + name: '斜塘新镇', + coordinate: [65059.8885, 43067.4086] + }, + { + id: 3, + name: '唯亭开发区', + coordinate: [72648.0591, 48377.7925] + }, + { + id: 4, + name: '跨塘局', + coordinate: [60554.7706, 48645.1495] + }, + { + id: 5, + name: '东湖大郡', + coordinate: [63732.4099, + 44311.1893 + ] + }, + { + id: 6, + name: '唯亭北区', + coordinate: [70934.0223, + 50360.1359 + ] + }, + { + id: 7, + name: '通园路', + coordinate: [58025.6981, + 41978.0444 + ] + }, + { + id: 8, + name: '斜搪机房', + coordinate: [65314.1004, + 43183.7428 + ] + }, + { + id: 9, + name: '胜浦机房', + coordinate: [73891.9749, + 43700.9531 + ] + }, + { + id: 10, + name: '汀兰巷', + coordinate: [69489.4969, + 47990.723 + ] + }, + { + id: 11, + name: '唯亭机房', + coordinate: [70654.9036, + 48657.8893 + ] + }, + { + id: 12, + name: '东沙湖机房', + coordinate: [66915.0107, + 47121.98 + ] + }, + { + id: 13, + name: '跨塘机房', + coordinate: [60822.0412, + 48583.6735 + ] + }, + { + id: 14, + name: '苏春工业坊', + coordinate: [71083.0815, + 46947.1462 + ] + }, + { + id: 15, + name: '平门局', + coordinate: [53107.4252, + 46316.0401 + ] + }, + { + id: 16, + name: '南施街', + coordinate: [64532.912, + 46066.7835 + ] + }, + { + id: 17, + name: '北基站', + coordinate: [58563.0253, + 46048.874 + ] + }, + { + id: 18, + name: '车坊局', + coordinate: [66508.2957, + 37204.8392 + ] + }, + { + id: 19, + name: '城东局', + coordinate: [57142.9324, + 41873.7599 + ] + }, + { + id: 20, + name: '玲珑湾', + coordinate: [61513.9581, + 46724.2755 + + ] + }, + { + id: 21, + name: '园区局', + coordinate: [58381.3125, + 44023.7001 + + ] + }, + { + id: 22, + name: '腾飞机房', + coordinate: [58986.4158, + 43889.0269 + ] + } + +] +export const lines = [ + { + coords: [ + [63641.82242120001, 46084.01155038807], + [65107.9281, 42188.9569] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [65059.8885, 43067.4086] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [72648.0591, 48377.7925] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [60554.7706, 48645.1495] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [63732.4099, 44311.1893] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [70934.0223, + 50360.1359 + ] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [58025.6981, + 41978.0444 + ] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [65314.1004, + 43183.7428 + ] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [73891.9749, + 43700.9531 + ] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [69489.4969, + 47990.723 + ] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [70654.9036, + 48657.8893 + ] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [66915.0107, + 47121.98 + ] + ] + }, + + { + coords: [ + [63641.82242120001, 46084.01155038807], + [60822.0412, + 48583.6735 + ] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [71083.0815, + 46947.1462 + ] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [53107.4252, + 46316.0401 + ] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [64532.912, + 46066.7835 + ] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [58563.0253, + 46048.874 + ] + ] + }, + { + coords: [ + [63641.82242120001, 46084.01155038807], + [64219.04677438915, 39350.17290732433] + ] + }, + { + coords: [ + [64219.04677438915, 39350.17290732433], + [63641.82242120001, 46084.01155038807] + ] + } +] diff --git a/src/views/outside/index.vue b/src/views/outside/index.vue new file mode 100644 index 0000000..6d02fb0 --- /dev/null +++ b/src/views/outside/index.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/src/views/outside/lib/colorizr.js b/src/views/outside/lib/colorizr.js new file mode 100644 index 0000000..0ccbb31 --- /dev/null +++ b/src/views/outside/lib/colorizr.js @@ -0,0 +1,87 @@ +/* + * L.TileLayer.Colorizr is a regular tilelayer with mapped colors. + + */ +/* eslint-disable */ +import L from 'leaflet' +// L.TileLayer.Colorizr = +const Colorizr = L.TileLayer.extend({ + + initialize: function (url, options) { + options = L.extend({}, L.TileLayer.prototype.options, { + colorize: function(pixel) { + return pixel; + }, + crossOrigin: true + }, options); + L.TileLayer.prototype.initialize.call(this, url, options); + L.setOptions(this, options); + + this.setColorizr(this.options.colorize); + + this.on('tileload', function(e) { + this._colorize(e.tile); + }); + }, + + setColorizr: function(colorizrFactory) { + if (!colorizrFactory || typeof colorizrFactory !== 'function') { + throw 'The colorize option should be a function and return an object with at least one of "r", "g", "b", or "a" properties. Got:' + + typeof colorizrFactory; + } else { + this.options.colorize = colorizrFactory; + } + + this.redraw(true); + }, + + _createTile: function () { + var tile = L.TileLayer.prototype._createTile.call(this); + tile.crossOrigin = 'Anonymous'; + return tile; + }, + + _colorize: function (img) { + if (img.getAttribute('data-colorized')) { return; } + + img.crossOrigin = ''; + var canvas = document.createElement('canvas'); + canvas.width = img.width; + canvas.height = img.height; + var ctx = canvas.getContext('2d'); + ctx.drawImage(img, 0, 0); + + var imgd = ctx.getImageData(0, 0, canvas.width, canvas.height); + var pix = imgd.data; + + for (var i = 0, n = pix.length; i < n; i += 4) { + // iterate through the pixels + + var pixel = this.options.colorize({ r: pix[i], g: pix[i + 1], b: pix[i + 2], a: pix[i + 3] }); + + if (!pixel || pixel !== Object(pixel) || Object.prototype.toString.call(pixel) === '[object Array]') { + if (i === 0) { + throw 'The colorize option should return an object with at least one of "r", "g", "b", or "a" properties.'; + } + } else { + if (pixel.hasOwnProperty('r') && typeof pixel.r === 'number') { + pix[i] = pixel.r; + } + if (pixel.hasOwnProperty('g')) { + pix[i + 1] = pixel.g; + } + if (pixel.hasOwnProperty('b')) { + pix[i + 2] = pixel.b; + } + if (pixel.hasOwnProperty('a')) { + pix[i + 3] = pixel.a; + } + } + } + + ctx.putImageData(imgd, 0, 0); + img.setAttribute('data-colorized', true); + img.src = canvas.toDataURL(); + } +}); +export default Colorizr diff --git a/src/views/outside/map.vue b/src/views/outside/map.vue new file mode 100644 index 0000000..d257827 --- /dev/null +++ b/src/views/outside/map.vue @@ -0,0 +1,276 @@ +/* eslint-disable no-undef */ + + + + + diff --git a/src/views/outside/map_BACKUP.vue b/src/views/outside/map_BACKUP.vue new file mode 100644 index 0000000..162567d --- /dev/null +++ b/src/views/outside/map_BACKUP.vue @@ -0,0 +1,410 @@ +/* eslint-disable no-undef */ + + + + + + diff --git a/src/views/outside/map_l7.vue b/src/views/outside/map_l7.vue new file mode 100644 index 0000000..c2d5e82 --- /dev/null +++ b/src/views/outside/map_l7.vue @@ -0,0 +1,83 @@ +/* eslint-disable no-undef */ + + + + + diff --git a/src/views/outside/map_leaflet.vue b/src/views/outside/map_leaflet.vue new file mode 100644 index 0000000..08cf671 --- /dev/null +++ b/src/views/outside/map_leaflet.vue @@ -0,0 +1,109 @@ +/* eslint-disable no-undef */ + + + + + + diff --git a/src/views/outside/tools.js b/src/views/outside/tools.js new file mode 100644 index 0000000..a72ba4d --- /dev/null +++ b/src/views/outside/tools.js @@ -0,0 +1,72 @@ + +import { Vector as SourceVec } from 'ol/source' +import VectorLayer from 'ol/layer/Vector'; +import Feature from 'ol/Feature'; +import LineString from 'ol/geom/LineString'; +import Style from 'ol/style/Style' +import Stroke from 'ol/style/Stroke'; +import { asArray } from 'ol/color'; +import GeoJSON from 'ol/format/GeoJSON' +import * as turf from '@turf/turf' +/** + * 创建线 + * @param {经纬度数组} lnglats + * @param {参数,有color颜色,width线的粗细} params + */ + +var turfFormat = new GeoJSON() +function getTurfArcFeature(start, end, opt) { + const [f = 0.8, e = 0.5] = opt; + var line = turf.lineString([ + start, + [start[0] + (end[0] - start[0]) * f, + start[1] + (end[1] - start[1]) * e], + end + ]); + var curved = turf.bezierSpline(line); + const length = turf.length(curved, { units: 'meters' }); + var bF = turfFormat.readFeature(curved); + // bF.getGeometry().transform('EPSG:4326', 'EPSG:3857'); + // bF.setProperties(opt); + bF.set('length', length); + return bF; +} +export function addLineString(list, params) { + if (!params) { + params = {} + } + if (!params.color) { + params.color = '#5DCFDD' + } + if (!params.width) { + params.width = 3 + } + const features = []; + list.forEach(item => { + // 设置源特征 + // const feature = new Feature({ + // geometry: new LineString(item.coords), + // layout: {}, + // name: 'Line' + // }); + const feature = getTurfArcFeature(item.coords[0], item.coords[1], JSON.parse(item.props) || []) + features.push(feature) + }) + // 创建图层源 + const sourceVec = new SourceVec({ + features: features + }) + // 创建图层 + const vercorLayer = new VectorLayer({ + source: sourceVec, + style: new Style({ + stroke: new Stroke({ + width: params.width, + // lineDash: [5], + lineJoin: 'bevel', + color: asArray(params.color) + }) + }) + }) + return { vercorLayer, features } +} diff --git a/src/views/resource_screen/CardCount.vue b/src/views/resource_screen/CardCount.vue new file mode 100644 index 0000000..ec4a70f --- /dev/null +++ b/src/views/resource_screen/CardCount.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/views/resource_screen/PlatformCard.vue b/src/views/resource_screen/PlatformCard.vue new file mode 100644 index 0000000..170a69c --- /dev/null +++ b/src/views/resource_screen/PlatformCard.vue @@ -0,0 +1,159 @@ + + + diff --git a/src/views/resource_screen/data.js b/src/views/resource_screen/data.js new file mode 100644 index 0000000..f22ede5 --- /dev/null +++ b/src/views/resource_screen/data.js @@ -0,0 +1,62 @@ +export const overviewConfigs = [{ + title: '总体情况', + icon: 'el-icon-tickets', + type: 'COUNT', + data: [{ + title: '物理机', + className: 'lgreen', + unit: '台', + value: 0 + }, { + title: '云主机', + className: 'green', + unit: '台', + value: 0 + }, { + title: '云主机在线', + className: 'purple', + unit: '台', + value: 0 + }] +}, { + title: '平台情况', + icon: 'el-icon-monitor', + type: 'COUNT', + data: [{ + title: '私有云', + className: 'lgreen', + unit: '个', + value: 0 + }, { + title: '公有云', + className: 'green', + unit: '个', + value: 0 + }] +}, { + title: '私有云使用情况', + icon: 'el-icon-data-line', + type: 'PROGRESS', + titleStyle: { + fontSize: '14px' + }, + data: [{ + title: 'CPU总量/剩余量', + unit: '核', + color: '#3AE13A', + used: 0, + total: 0 + }, { + title: '内存总量/剩余量', + unit: 'G', + color: '#FFC400', + used: 0, + total: 0 + }, { + title: '存储总量/剩余量', + unit: 'T', + color: '#33A1FF', + used: 0, + total: 0 + }] +}] diff --git a/src/views/resource_screen/index.vue b/src/views/resource_screen/index.vue new file mode 100644 index 0000000..d4e65fd --- /dev/null +++ b/src/views/resource_screen/index.vue @@ -0,0 +1,302 @@ + + + + diff --git a/src/views/resource_screen/utils.js b/src/views/resource_screen/utils.js new file mode 100644 index 0000000..1337c7e --- /dev/null +++ b/src/views/resource_screen/utils.js @@ -0,0 +1,36 @@ + +function getPoint(r, ox, oy, count) { + const point = [] + var radians = (Math.PI / 180) * Math.round(360 / count), // 弧度 + i = 0 + for (; i < count; i++) { + var x = ox + r * Math.sin(radians * i), + y = oy + r * Math.cos(radians * i) + + point.unshift({ x: x - 50, y: y - 50 }) // 为保持数据顺时针 + } + return point +} +const translateX = '200px'; +const rotateY = '-57deg'; +export function generateKeyframes(count) { + const style = document.createElement('style'); + style.setAttribute('type', 'text/css'); + document.head.appendChild(style); + const sheet = style.sheet; + for (let i = 0; i < count; i++) { + const unit = 360 / count * i; + const str = `@keyframes move${i} { + from { + transform: rotateZ(-${unit}deg) translateX(${translateX}) rotateZ(${unit}deg) + rotateY(${rotateY}); + } + to { + transform: rotateZ(${360 - unit}deg) translateX(${translateX}) + rotateZ(${unit - 360}deg) rotateY(${rotateY}); + } + }` + sheet.insertRule(str); + } + return style; +} diff --git a/src/views/room_screen/AlarmList.vue b/src/views/room_screen/AlarmList.vue new file mode 100644 index 0000000..a538308 --- /dev/null +++ b/src/views/room_screen/AlarmList.vue @@ -0,0 +1,88 @@ + + + diff --git a/src/views/room_screen/DeviceTable.vue b/src/views/room_screen/DeviceTable.vue new file mode 100644 index 0000000..d65d2f3 --- /dev/null +++ b/src/views/room_screen/DeviceTable.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/views/room_screen/data.js b/src/views/room_screen/data.js new file mode 100644 index 0000000..1f5e3dd --- /dev/null +++ b/src/views/room_screen/data.js @@ -0,0 +1,21 @@ +export const overviewConfigs = [{ + title: '园区大数据中心信息', + icon: 'el-icon-monitor', + type: 'COUNT', + data: [{ + title: '区域总数', + className: 'lgreen', + unit: '个', + value: 0 + }, { + title: '机柜总数', + className: 'green', + unit: '个', + value: 0 + }, { + title: '负载使用', + className: 'purple', + unit: '%', + value: 0 + }] +}] diff --git a/src/views/room_screen/index.vue b/src/views/room_screen/index.vue new file mode 100644 index 0000000..0692411 --- /dev/null +++ b/src/views/room_screen/index.vue @@ -0,0 +1,261 @@ + + + diff --git a/src/views/screen/index.vue b/src/views/screen/index.vue new file mode 100644 index 0000000..f71d02c --- /dev/null +++ b/src/views/screen/index.vue @@ -0,0 +1,93 @@ + + + + diff --git a/src/views/three_room/AlarmStatusIcon.vue b/src/views/three_room/AlarmStatusIcon.vue new file mode 100644 index 0000000..43d7b81 --- /dev/null +++ b/src/views/three_room/AlarmStatusIcon.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/views/three_room/index.vue b/src/views/three_room/index.vue new file mode 100644 index 0000000..c1de2a5 --- /dev/null +++ b/src/views/three_room/index.vue @@ -0,0 +1,121 @@ + + + + diff --git a/src/views/three_room/rack.vue b/src/views/three_room/rack.vue new file mode 100644 index 0000000..e4b5cf5 --- /dev/null +++ b/src/views/three_room/rack.vue @@ -0,0 +1,297 @@ + + + + diff --git a/src/views/three_room/room.vue b/src/views/three_room/room.vue new file mode 100644 index 0000000..f23e492 --- /dev/null +++ b/src/views/three_room/room.vue @@ -0,0 +1,307 @@ + + + + diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..65434ae --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,40 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "strict": true, + "jsx": "preserve", + "importHelpers": true, + "moduleResolution": "node", + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "sourceMap": true, + "baseUrl": ".", + "types": [ + "webpack-env" + ], + "paths": { + "@/*": [ + "src/*" + ] + }, + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ] + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.vue", + "tests/**/*.ts", + "tests/**/*.tsx" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/types/shims-ajax.d.ts b/types/shims-ajax.d.ts new file mode 100644 index 0000000..bb3bd9c --- /dev/null +++ b/types/shims-ajax.d.ts @@ -0,0 +1,21 @@ +import {} from 'axios' +declare module 'axios' { + export interface AxiosInstance { + (config: AxiosRequestConfig): AxiosPromise; + (url: string, config?: AxiosRequestConfig): AxiosPromise; + defaults: AxiosRequestConfig; + interceptors: { + request: AxiosInterceptorManager; + response: AxiosInterceptorManager; + }; + getUri(config?: AxiosRequestConfig): string; + request> (config: AxiosRequestConfig): Promise; + get>(url: string, config?: AxiosRequestConfig): Promise; + delete>(url: string, config?: AxiosRequestConfig): Promise; + head>(url: string, config?: AxiosRequestConfig): Promise; + options>(url: string, config?: AxiosRequestConfig): Promise; + post>(url: string, data?: any, config?: AxiosRequestConfig): Promise; + put>(url: string, data?: any, config?: AxiosRequestConfig): Promise; + patch>(url: string, data?: any, config?: AxiosRequestConfig): Promise; + } +} diff --git a/types/shims-global.d.ts b/types/shims-global.d.ts new file mode 100644 index 0000000..a3da088 --- /dev/null +++ b/types/shims-global.d.ts @@ -0,0 +1,53 @@ +declare module Base { + // ajax请求返回数据格式 + interface IResponseData { + success: boolean + failed: boolean + solution: string + message: string + errorMsg: string + data: T + status: string + } + // list接口返回数据格式 + interface IListData{ + page: number, + pages: number, + total:number, + rows: T[] + } + interface IResponseList extends IResponseData{ + data: IListData + } + // 列表查询传参 + interface IListParams { + page?: number + rows?: number + simple?: boolean + params?: string, + sorter?: string + } + // 模态框打开 + interface IDialog { + visible: boolean + record: T + } + // 搜索配置 + interface ISearchConfig { + label?: string, + value: string, + type: string, + initValue?: string | number, + sign?: string, + data?: T[], + onChange?: { + (val: string, listQuery: any): void + } + } + // 列表 + type IListState = { + list: T[], + total: number, + params: IListParams, + } +} diff --git a/types/shims-tsx.d.ts b/types/shims-tsx.d.ts new file mode 100644 index 0000000..c656c68 --- /dev/null +++ b/types/shims-tsx.d.ts @@ -0,0 +1,13 @@ +import Vue, { VNode } from 'vue' + +declare global { + namespace JSX { + // tslint:disable no-empty-interface + interface Element extends VNode {} + // tslint:disable no-empty-interface + interface ElementClass extends Vue {} + interface IntrinsicElements { + [elem: string]: any + } + } +} diff --git a/types/shims-vue.d.ts b/types/shims-vue.d.ts new file mode 100644 index 0000000..4736caf --- /dev/null +++ b/types/shims-vue.d.ts @@ -0,0 +1,10 @@ +import Vue from 'vue'; + +declare module '*.vue' { + export default Vue; +} +declare module 'vue/types/vue' { + interface Vue { + $tools: any + } +} diff --git a/types/shims.tools.d.ts b/types/shims.tools.d.ts new file mode 100644 index 0000000..120aa59 --- /dev/null +++ b/types/shims.tools.d.ts @@ -0,0 +1,2 @@ +declare module 'services' +declare module '@jiaminghi/data-view' diff --git a/vue.config.js b/vue.config.js new file mode 100644 index 0000000..9085305 --- /dev/null +++ b/vue.config.js @@ -0,0 +1,94 @@ +/** + * Created by Zhang Haijun on 2018/7/24. + */ +const path = require('path') +const webpack = require('webpack') +const CompressPlugin = require('compress-webpack-plugin') +function resolve (dir) { + return path.join(__dirname, dir) +} +const httpType = 'https://' +const proxyUrl = 'develop.cmp56.com:60006/' // 代理地址设置 +// const proxyUrl = '10.20.51.92:7001' // 代理地址设置 +const publicPath = process.env.NODE_ENV === 'production' ? '/scr-web/' : '/'; +module.exports = { + publicPath, + assetsDir: 'static', + outputDir: 'scr-web', + // 构建时不进行eslint校验 + lintOnSave: process.env.NODE_ENV !== 'production', + // 生产环境禁止source map + productionSourceMap: false, + devServer: { + port: 8083, + overlay: { + warnings: true, + errors: true + }, + proxy: { + '/api/sms/messageService': { + target: 'ws://' + proxyUrl, + changeOrigin: true, + ws: false + }, + '/api': { + target: httpType + proxyUrl, + changeOrigin: true, + ws: false + }, + '/config-files': { + target: httpType + proxyUrl + }, + '/scr-web/static/img': { + target: 'http://localhost:8083', + pathRewrite: { + '^/scr-web/static/img': '/static/img' // rewrite path + } + } + } + }, + configureWebpack: config => { + const plugins = [ + new webpack.ProvidePlugin({ + $: 'jquery', + jQuery: 'jquery' + }) + ] + if (process.env.NODE_ENV === 'production') { + plugins.push( + new CompressPlugin({ + test: /\.js$|\.html$|\.css$/, + threshold: 10240, + deleteOriginalAssets: false + }) + ) + } + return { + plugins + } + }, + chainWebpack: config => { + config.resolve.alias + .set('@', resolve('src')) + .set('assets', resolve('src/assets')) + .set('services', resolve('src/services')) + .set('utils', resolve('src/utils')) + .set('components', resolve('src/components')) + .set('views', resolve('src/views')); + config.module + .rule('fonts') + .use('url-loader') + .loader('url-loader') + .options({ + limit: 4096, // 小于4kb将会被打包成 base64 + fallback: { + loader: 'file-loader', + options: { + name: 'fonts/[name].[hash:8].[ext]', + publicPath + } + } + }) + .end(); + } +}