From ad9a90e2528631e40d449f8b7f0372ab0132537e Mon Sep 17 00:00:00 2001
From: Hoshi <1196756653@qq.com>
Date: Thu, 14 Mar 2024 11:30:18 +0800
Subject: [PATCH] init
---
.editorconfig | 7 +
.eslintrc.js | 19 +
.gitignore | 25 +
.prettierrc | 8 +
Jenkinsfile | 2 +
README.md | 24 +
bak/app.json | 21 +
bak/nginx.conf | 212 +
components.d.ts | 36 +
env.d.ts | 1 +
index.html | 29 +
package.json | 61 +
pnpm-lock.yaml | 5833 +++++++++++++++++
public/config/app.json | 19 +
public/static/loading.css | 1 +
src/App.vue | 45 +
src/assets/logo.png | Bin 0 -> 6849 bytes
src/components/empty/Empty.vue | 49 +
src/components/empty/index.ts | 3 +
src/components/image-cropper/index.vue | 1441 ++++
.../image-cropper/utils/data2blob.js | 19 +
.../image-cropper/utils/effectRipple.js | 42 +
.../image-cropper/utils/language.js | 365 ++
src/components/image-cropper/utils/mimes.js | 7 +
src/components/index.ts | 12 +
src/components/svg-icon/SvgIcon.vue | 35 +
src/components/svg-icon/index.ts | 3 +
src/config.ts | 25 +
src/core/actions.ts | 19 +
src/core/config.ts | 35 +
src/core/register.ts | 50 +
src/css/animate.scss | 22 +
src/css/antd.scss | 28 +
src/css/common-var.scss | 4 +
src/css/common.scss | 509 ++
src/css/element-ui.scss | 135 +
src/css/font.scss | 23 +
src/css/hack.scss | 10 +
src/css/index.scss | 6 +
src/hooks/useSelection.js | 11 +
src/hooks/useTable.ts | 87 +
src/hooks/useWebsocket.ts | 23 +
src/icons/svg/svg-about.svg | 1 +
src/icons/svg/svg-basic-resource.svg | 1 +
src/icons/svg/svg-bill.svg | 1 +
src/icons/svg/svg-business.svg | 1 +
src/icons/svg/svg-compute-resource.svg | 1 +
src/icons/svg/svg-db.svg | 1 +
src/icons/svg/svg-disabled.svg | 1 +
src/icons/svg/svg-dot.svg | 1 +
src/icons/svg/svg-middle.svg | 1 +
src/icons/svg/svg-network-resource.svg | 1 +
src/icons/svg/svg-operate.svg | 1 +
src/icons/svg/svg-ops-analysis.svg | 1 +
src/icons/svg/svg-order.svg | 1 +
src/icons/svg/svg-permission.svg | 1 +
src/icons/svg/svg-port.svg | 1 +
src/icons/svg/svg-product.svg | 1 +
src/icons/svg/svg-repository.svg | 1 +
src/icons/svg/svg-resource-interface.svg | 1 +
src/icons/svg/svg-resource-manage.svg | 1 +
src/icons/svg/svg-resource-monitor.svg | 1 +
src/icons/svg/svg-resource-ops.svg | 1 +
src/icons/svg/svg-screen.svg | 1 +
src/icons/svg/svg-security.svg | 1 +
src/icons/svg/svg-service-ops.svg | 1 +
src/icons/svg/svg-setting.svg | 1 +
src/icons/svg/svg-storage-resource.svg | 1 +
src/icons/svg/svg-task-platform.svg | 1 +
src/layouts/app.vue | 13 +
src/layouts/blank.vue | 7 +
src/layouts/components/Header.vue | 91 +
src/layouts/components/Help.vue | 354 +
src/layouts/components/SiteMessage.vue | 147 +
src/layouts/components/SystemTip.vue | 63 +
.../components/TagsView/ScrollPanel.vue | 139 +
.../components/TagsView/SelectRound.vue | 29 +
src/layouts/components/TagsView/index.vue | 289 +
src/layouts/components/ThirdMenu.vue | 122 +
src/layouts/components/headerMenu.vue | 149 +
src/layouts/components/lockScreen.vue | 94 +
.../components/personal/InfoDialog.vue | 161 +
src/layouts/components/personal/index.vue | 169 +
src/layouts/components/process.vue | 20 +
src/layouts/components/rightContent.vue | 30 +
src/layouts/components/sidebar/BaseMenu.vue | 100 +
src/layouts/components/sidebar/MenuItem.vue | 70 +
src/layouts/components/sidebar/OperateBtn.vue | 59 +
src/layouts/components/sidebar/Sidebar.vue | 126 +
.../components/sidebar/SidebarItem.vue | 90 +
src/layouts/components/sidebar/theme.scss | 15 +
.../components/sidebar/useGlobalStyle.ts | 34 +
src/layouts/components/sidebar/useLink.ts | 20 +
src/layouts/components/sidebar/useOpenKeys.ts | 45 +
src/layouts/components/sidebar/utils.js | 31 +
src/layouts/home.vue | 175 +
src/layouts/redirect.vue | 12 +
src/main.ts | 11 +
src/mixins/getGlobalSocket.js | 10 +
src/mixins/selection.js | 12 +
src/mixins/webSocket.js | 30 +
src/models/user.d.ts | 19 +
src/permission.js | 52 +
src/router/constant.ts | 86 +
src/router/index.ts | 20 +
src/services/index.js | 78 +
src/services/license.js | 26 +
src/services/manager.ts | 56 +
src/services/message.js | 23 +
src/services/user.js | 50 +
src/shims-vue.d.ts | 6 +
src/store/getters.js | 8 +
src/store/index.ts | 10 +
src/store/modules/app.js | 115 +
src/store/modules/permission.js | 180 +
src/store/modules/tagsView.js | 132 +
src/store/utils.js | 14 +
src/types/shims-ajax.d.ts | 21 +
src/types/shims-global.d.ts | 53 +
src/types/shims-tsx.d.ts | 13 +
src/types/shims-vue.d.ts | 10 +
src/types/shims.tools.d.ts | 8 +
src/utils/auth.js | 17 +
src/utils/autoImport.ts | 30 +
src/utils/crypto.js | 45 +
src/utils/day.ts | 6 +
src/utils/index.js | 98 +
src/utils/request.js | 113 +
src/utils/resolvePath.js | 22 +
src/utils/uploadFile.js | 89 +
src/validate/index.ts | 23 +
src/views/about/index.vue | 144 +
src/views/about/logActive.vue | 57 +
src/views/login/lockme.vue | 195 +
src/views/login/login.vue | 237 +
src/views/login/sso.vue | 15 +
src/views/login/tools.ts | 15 +
tsconfig.json | 26 +
tsconfig.vite-config.json | 8 +
vite.config.ts | 112 +
140 files changed, 14282 insertions(+)
create mode 100644 .editorconfig
create mode 100644 .eslintrc.js
create mode 100644 .gitignore
create mode 100644 .prettierrc
create mode 100644 Jenkinsfile
create mode 100644 README.md
create mode 100644 bak/app.json
create mode 100644 bak/nginx.conf
create mode 100644 components.d.ts
create mode 100644 env.d.ts
create mode 100644 index.html
create mode 100644 package.json
create mode 100644 pnpm-lock.yaml
create mode 100644 public/config/app.json
create mode 100644 public/static/loading.css
create mode 100644 src/App.vue
create mode 100644 src/assets/logo.png
create mode 100644 src/components/empty/Empty.vue
create mode 100644 src/components/empty/index.ts
create mode 100644 src/components/image-cropper/index.vue
create mode 100644 src/components/image-cropper/utils/data2blob.js
create mode 100644 src/components/image-cropper/utils/effectRipple.js
create mode 100644 src/components/image-cropper/utils/language.js
create mode 100644 src/components/image-cropper/utils/mimes.js
create mode 100644 src/components/index.ts
create mode 100644 src/components/svg-icon/SvgIcon.vue
create mode 100644 src/components/svg-icon/index.ts
create mode 100644 src/config.ts
create mode 100644 src/core/actions.ts
create mode 100644 src/core/config.ts
create mode 100644 src/core/register.ts
create mode 100644 src/css/animate.scss
create mode 100644 src/css/antd.scss
create mode 100644 src/css/common-var.scss
create mode 100644 src/css/common.scss
create mode 100644 src/css/element-ui.scss
create mode 100644 src/css/font.scss
create mode 100644 src/css/hack.scss
create mode 100644 src/css/index.scss
create mode 100644 src/hooks/useSelection.js
create mode 100644 src/hooks/useTable.ts
create mode 100644 src/hooks/useWebsocket.ts
create mode 100644 src/icons/svg/svg-about.svg
create mode 100644 src/icons/svg/svg-basic-resource.svg
create mode 100644 src/icons/svg/svg-bill.svg
create mode 100644 src/icons/svg/svg-business.svg
create mode 100644 src/icons/svg/svg-compute-resource.svg
create mode 100644 src/icons/svg/svg-db.svg
create mode 100644 src/icons/svg/svg-disabled.svg
create mode 100644 src/icons/svg/svg-dot.svg
create mode 100644 src/icons/svg/svg-middle.svg
create mode 100644 src/icons/svg/svg-network-resource.svg
create mode 100644 src/icons/svg/svg-operate.svg
create mode 100644 src/icons/svg/svg-ops-analysis.svg
create mode 100644 src/icons/svg/svg-order.svg
create mode 100644 src/icons/svg/svg-permission.svg
create mode 100644 src/icons/svg/svg-port.svg
create mode 100644 src/icons/svg/svg-product.svg
create mode 100644 src/icons/svg/svg-repository.svg
create mode 100644 src/icons/svg/svg-resource-interface.svg
create mode 100644 src/icons/svg/svg-resource-manage.svg
create mode 100644 src/icons/svg/svg-resource-monitor.svg
create mode 100644 src/icons/svg/svg-resource-ops.svg
create mode 100644 src/icons/svg/svg-screen.svg
create mode 100644 src/icons/svg/svg-security.svg
create mode 100644 src/icons/svg/svg-service-ops.svg
create mode 100644 src/icons/svg/svg-setting.svg
create mode 100644 src/icons/svg/svg-storage-resource.svg
create mode 100644 src/icons/svg/svg-task-platform.svg
create mode 100644 src/layouts/app.vue
create mode 100644 src/layouts/blank.vue
create mode 100644 src/layouts/components/Header.vue
create mode 100644 src/layouts/components/Help.vue
create mode 100644 src/layouts/components/SiteMessage.vue
create mode 100644 src/layouts/components/SystemTip.vue
create mode 100644 src/layouts/components/TagsView/ScrollPanel.vue
create mode 100644 src/layouts/components/TagsView/SelectRound.vue
create mode 100644 src/layouts/components/TagsView/index.vue
create mode 100644 src/layouts/components/ThirdMenu.vue
create mode 100644 src/layouts/components/headerMenu.vue
create mode 100644 src/layouts/components/lockScreen.vue
create mode 100644 src/layouts/components/personal/InfoDialog.vue
create mode 100644 src/layouts/components/personal/index.vue
create mode 100644 src/layouts/components/process.vue
create mode 100644 src/layouts/components/rightContent.vue
create mode 100644 src/layouts/components/sidebar/BaseMenu.vue
create mode 100644 src/layouts/components/sidebar/MenuItem.vue
create mode 100644 src/layouts/components/sidebar/OperateBtn.vue
create mode 100644 src/layouts/components/sidebar/Sidebar.vue
create mode 100644 src/layouts/components/sidebar/SidebarItem.vue
create mode 100644 src/layouts/components/sidebar/theme.scss
create mode 100644 src/layouts/components/sidebar/useGlobalStyle.ts
create mode 100644 src/layouts/components/sidebar/useLink.ts
create mode 100644 src/layouts/components/sidebar/useOpenKeys.ts
create mode 100644 src/layouts/components/sidebar/utils.js
create mode 100644 src/layouts/home.vue
create mode 100644 src/layouts/redirect.vue
create mode 100644 src/main.ts
create mode 100644 src/mixins/getGlobalSocket.js
create mode 100644 src/mixins/selection.js
create mode 100644 src/mixins/webSocket.js
create mode 100644 src/models/user.d.ts
create mode 100644 src/permission.js
create mode 100644 src/router/constant.ts
create mode 100644 src/router/index.ts
create mode 100644 src/services/index.js
create mode 100644 src/services/license.js
create mode 100644 src/services/manager.ts
create mode 100644 src/services/message.js
create mode 100644 src/services/user.js
create mode 100644 src/shims-vue.d.ts
create mode 100644 src/store/getters.js
create mode 100644 src/store/index.ts
create mode 100644 src/store/modules/app.js
create mode 100644 src/store/modules/permission.js
create mode 100644 src/store/modules/tagsView.js
create mode 100644 src/store/utils.js
create mode 100644 src/types/shims-ajax.d.ts
create mode 100644 src/types/shims-global.d.ts
create mode 100644 src/types/shims-tsx.d.ts
create mode 100644 src/types/shims-vue.d.ts
create mode 100644 src/types/shims.tools.d.ts
create mode 100644 src/utils/auth.js
create mode 100644 src/utils/autoImport.ts
create mode 100644 src/utils/crypto.js
create mode 100644 src/utils/day.ts
create mode 100644 src/utils/index.js
create mode 100644 src/utils/request.js
create mode 100644 src/utils/resolvePath.js
create mode 100644 src/utils/uploadFile.js
create mode 100644 src/validate/index.ts
create mode 100644 src/views/about/index.vue
create mode 100644 src/views/about/logActive.vue
create mode 100644 src/views/login/lockme.vue
create mode 100644 src/views/login/login.vue
create mode 100644 src/views/login/sso.vue
create mode 100644 src/views/login/tools.ts
create mode 100644 tsconfig.json
create mode 100644 tsconfig.vite-config.json
create mode 100644 vite.config.ts
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..c24743d
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,7 @@
+[*.{js,jsx,ts,tsx,vue}]
+indent_style = space
+indent_size = 2
+end_of_line = lf
+trim_trailing_whitespace = true
+insert_final_newline = true
+max_line_length = 100
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..d34ebbd
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,19 @@
+/* eslint-env node */
+require('@rushstack/eslint-patch/modern-module-resolution')
+
+module.exports = {
+ root: true,
+ extends: ['plugin:vue/vue3-essential', 'eslint:recommended', '@vue/eslint-config-typescript/recommended', '@vue/eslint-config-prettier'],
+ env: {
+ 'vue/setup-compiler-macros': true
+ },
+ rules: {
+ '@typescript-eslint/no-explicit-any': 0,
+ 'vue/multi-word-component-names': [
+ 'error',
+ {
+ ignores: ['index', 'home', '404']
+ }
+ ]
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2dbc497
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,25 @@
+.DS_Store
+node_modules
+/main-web
+main-web.tar.gz
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+public/index.html
+public/static/config
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..dc2c8cb
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,8 @@
+{
+ "printWidth": 300,
+ "tabWidth": 2,
+ "singleQuote": true,
+ "semi": false,
+ "endOfLine": "auto",
+ "trailingComma": "none"
+}
\ No newline at end of file
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..9762f20
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,2 @@
+@Library('jgpl') _
+webPipeline()
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..828d94b
--- /dev/null
+++ b/README.md
@@ -0,0 +1,24 @@
+# vue3.0-tpl
+
+## 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/bak/app.json b/bak/app.json
new file mode 100644
index 0000000..e2635c7
--- /dev/null
+++ b/bak/app.json
@@ -0,0 +1,21 @@
+{
+ "deployAddress": "https://10.20.12.56:60003/",
+ "configs": [
+ {
+ "name": "cmp-web"
+ },
+ {
+ "name": "cos-web",
+ "activeRule": ["/cos", "/soa", "/screen", "/personal"]
+ },
+ {
+ "name": "cms-web"
+ },
+ {
+ "name": "sms-web"
+ },
+ {
+ "name": "cop-web"
+ }
+ ]
+}
diff --git a/bak/nginx.conf b/bak/nginx.conf
new file mode 100644
index 0000000..af5f6a5
--- /dev/null
+++ b/bak/nginx.conf
@@ -0,0 +1,212 @@
+user nginx;
+worker_processes auto;
+error_log /var/log/nginx/error.log;
+pid /run/nginx.pid;
+
+# Load dynamic modules. See /usr/share/nginx/README.dynamic.
+include /usr/share/nginx/modules/*.conf;
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
+ '$status $body_bytes_sent "$http_referer" '
+ '"$http_user_agent" "$http_x_forwarded_for"';
+
+ # access_log /var/log/nginx/access.log main;
+
+ sendfile on;
+ tcp_nopush on;
+ tcp_nodelay on;
+ keepalive_timeout 65;
+ types_hash_max_size 2048;
+ add_header X-Frame-Options SAMEORIGIN always;
+ client_max_body_size 20m;
+
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ # Load modular configuration files from the /etc/nginx/conf.d directory.
+ # See http://nginx.org/en/docs/ngx_core_module.html#include
+ # for more information.
+ # include /etc/nginx/conf.d/*.conf;
+
+ upstream gateways {
+ least_conn;
+ server cmp-10-20-12-56:8000;
+ }
+
+
+ map $http_upgrade $connection_upgrade {
+ default upgrade;
+ '' close;
+ }
+
+ gzip on;
+ gzip_min_length 1k;
+ gzip_buffers 4 16k;
+ #gzip_http_version 1.0;
+ gzip_comp_level 7;
+ gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
+ gzip_vary off;
+ gzip_disable "MSIE [1-6]\.";
+ server {
+ listen 60003 ssl;
+ server_name localhost;
+
+ ssl_certificate /etc/nginx/bocloud.crt;
+ ssl_certificate_key /etc/nginx/bocloud.key;
+ ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+ ssl_ciphers HIGH:!aNULL:!MD5;
+ keepalive_timeout 60;
+ add_header Access-Control-Allow-Origin *;
+ add_header Access-Control-Allow-Methods *;
+ add_header Access-Control-Allow-Headers *;
+
+ location / {
+ root /opt/cmp/consoles/cos-web/;
+ index index.html index.htm;
+ try_files $uri $uri/ /index.html;
+ }
+ location ~^/(cmp-web|cms-web|scr-web|sms-web|cop-web|web-common-resource) {
+ root /opt/cmp/consoles/;
+ index index.html index.htm;
+ try_files $uri $uri/ /$1/index.html;
+ }
+ location /api {
+ proxy_pass http://gateways;
+ proxy_connect_timeout 20;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_pass_header X-XSRF-TOKEN;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real_IP $remote_addr;
+ proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
+ proxy_set_header Connection "upgrade";
+ }
+ location /attachment {
+ root /home/cmp/;
+ }
+ location /config-files {
+ root /home/cmp/;
+ }
+ }
+ server {
+ listen 60006 ssl;
+ server_name localhost;
+ ssl_certificate /etc/nginx/bocloud.crt;
+ ssl_certificate_key /etc/nginx/bocloud.key;
+ ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+ ssl_ciphers HIGH:!aNULL:!MD5;
+ keepalive_timeout 60;
+
+
+ location / {
+ root /opt/cmp/consoles/main-web/;
+ index index.html index.htm;
+ try_files $uri $uri/ /index.html;
+ }
+ location ~^/(cmp-web|cms-web|scr-web|sms-web|cop-web)\/(fonts|static\/img) {
+ proxy_pass https://127.0.0.1:60003;
+ }
+ location /web-common-resource {
+ proxy_pass https://127.0.0.1:60003;
+ }
+ location /api/terminal {
+ proxy_pass https://$arg_real_host;
+ proxy_connect_timeout 60;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_pass_header X-XSRF-TOKEN;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real_IP $remote_addr;
+ proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
+ proxy_set_header Connection "upgrade";
+ rewrite "^/api/terminal/(.*)$" /$1 break;
+ }
+ location /api {
+ proxy_pass http://gateways;
+ proxy_connect_timeout 20;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_pass_header X-XSRF-TOKEN;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real_IP $remote_addr;
+ proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
+ proxy_set_header Connection "upgrade";
+ }
+ location /attachment {
+ root /home/cmp/;
+ }
+ location /config-files {
+ root /home/cmp/;
+ }
+ }
+
+
+ server {
+ listen 60008 ssl;
+ server_name localhost;
+ root /opt/cmp/consoles/csc-web/;
+ ssl_certificate /etc/nginx/bocloud.crt;
+ ssl_certificate_key /etc/nginx/bocloud.key;
+ ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+ ssl_ciphers HIGH:!aNULL:!MD5;
+ keepalive_timeout 60;
+
+ location / {
+ root /opt/cmp/consoles/csc-web/;
+ index index.html index.htm;
+ try_files $uri $uri/ /index.html;
+ }
+ location /api {
+ proxy_pass http://gateways;
+ proxy_connect_timeout 60;
+ proxy_http_version 1.1;
+ proxy_pass_header X-XSRF-TOKEN;
+ proxy_redirect http:// https://;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header X-Forwarded-Proto https;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real_IP $remote_addr;
+ proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
+ proxy_set_header Connection "upgrade";
+ }
+ location /web-common-resource {
+ proxy_pass https://127.0.0.1:60003;
+ }
+ location /ticket {
+ proxy_pass https://$arg_host;
+ proxy_connect_timeout 60;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_pass_header X-XSRF-TOKEN;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real_IP $remote_addr;
+ proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
+ proxy_set_header Connection "upgrade";
+ }
+ location /attachment {
+ root /home/cmp/;
+ }
+ location /config-files {
+ root /home/cmp/;
+ }
+ }
+}
+
+
+stream {
+ upstream mon {
+ least_conn;
+ server cmp-10-20-12-56:162;
+ }
+ server {
+ listen 1162 udp reuseport;
+ proxy_pass mon;
+ proxy_timeout 1m;
+ proxy_connect_timeout 60s;
+ }
+}
diff --git a/components.d.ts b/components.d.ts
new file mode 100644
index 0000000..e472236
--- /dev/null
+++ b/components.d.ts
@@ -0,0 +1,36 @@
+// generated by unplugin-vue-components
+// We suggest you to commit this file into source control
+// Read more: https://github.com/vuejs/vue-next/pull/3399
+
+declare module 'vue' {
+ export interface GlobalComponents {
+ ABadge: typeof import('ant-design-vue/es')['Badge']
+ AButton: typeof import('ant-design-vue/es')['Button']
+ ACard: typeof import('ant-design-vue/es')['Card']
+ ACol: typeof import('ant-design-vue/es')['Col']
+ ADropdown: typeof import('ant-design-vue/es')['Dropdown']
+ AEmpty: typeof import('ant-design-vue/es')['Empty']
+ AForm: typeof import('ant-design-vue/es')['Form']
+ AFormItem: typeof import('ant-design-vue/es')['FormItem']
+ AInput: typeof import('ant-design-vue/es')['Input']
+ AInputPassword: typeof import('ant-design-vue/es')['InputPassword']
+ ALayout: typeof import('ant-design-vue/es')['Layout']
+ ALayoutContent: typeof import('ant-design-vue/es')['LayoutContent']
+ ALayoutHeader: typeof import('ant-design-vue/es')['LayoutHeader']
+ ALayoutSider: typeof import('ant-design-vue/es')['LayoutSider']
+ AMenu: typeof import('ant-design-vue/es')['Menu']
+ AMenuItem: typeof import('ant-design-vue/es')['MenuItem']
+ AModal: typeof import('ant-design-vue/es')['Modal']
+ ARow: typeof import('ant-design-vue/es')['Row']
+ ASubMenu: typeof import('ant-design-vue/es')['SubMenu']
+ ASwitch: typeof import('ant-design-vue/es')['Switch']
+ ATextarea: typeof import('ant-design-vue/es')['Textarea']
+ ATooltip: typeof import('ant-design-vue/es')['Tooltip']
+ ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
+ Empty: typeof import('./src/components/empty/Empty.vue')['default']
+ ImageCropper: typeof import('./src/components/image-cropper/index.vue')['default']
+ SvgIcon: typeof import('./src/components/svg-icon/SvgIcon.vue')['default']
+ }
+}
+
+export { }
diff --git a/env.d.ts b/env.d.ts
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ b/env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..d9b27dd
--- /dev/null
+++ b/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+ 混合云管理平台
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..254f472
--- /dev/null
+++ b/package.json
@@ -0,0 +1,61 @@
+{
+ "name": "main-web",
+ "version": "5.6.0",
+ "private": true,
+ "author": "Haijun Zhang ",
+ "scripts": {
+ "serve": "vite",
+ "build": "vue-tsc --noEmit && vite build",
+ "preview": "vite preview",
+ "typecheck": "vue-tsc --noEmit",
+ "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
+ },
+ "dependencies": {
+ "@ant-design/icons-vue": "^6.0.1",
+ "ant-design-vue": "^2.2.8",
+ "axios": "^0.21.1",
+ "clipboard": "^2.0.10",
+ "cmp-socket": "1.0.0",
+ "core-js": "^3.6.5",
+ "crypto-js": "^3.1.9-1",
+ "dayjs": "^1.10.4",
+ "element-plus": "^1.1.0-beta.9",
+ "js-cookie": "^2.2.0",
+ "lodash-es": "^4.17.21",
+ "nprogress": "^0.2.0",
+ "qiankun": "^2.4.6",
+ "qs": "^6.7.0",
+ "vue": "^3.2.29",
+ "vue-router": "^4.0.12",
+ "vuex": "^4.0.0-0"
+ },
+ "devDependencies": {
+ "@commitlint/cli": "^11.0.0",
+ "@commitlint/config-conventional": "^11.0.0",
+ "@rushstack/eslint-patch": "^1.1.0",
+ "@types/js-cookie": "^2.2.4",
+ "@types/lodash-es": "^4.17.4",
+ "@types/node": "^16.11.22",
+ "@types/nprogress": "^0.2.0",
+ "@types/qs": "^6.5.3",
+ "@vitejs/plugin-vue": "^2.2.0",
+ "@vitejs/plugin-vue-jsx": "^1.3.7",
+ "@vue/eslint-config-prettier": "^7.0.0",
+ "@vue/eslint-config-typescript": "^10.0.0",
+ "@vue/tsconfig": "^0.1.3",
+ "eslint": "^8.5.0",
+ "eslint-plugin-vue": "^8.2.0",
+ "husky": "^1.3.1",
+ "less": "^4.1.1",
+ "lint-staged": "^8.1.5",
+ "prettier": "^2.5.1",
+ "sass": "^1.26.5",
+ "svg-sprite-loader": "^6.0.2",
+ "typescript": "~4.5.5",
+ "unplugin-vue-components": "^0.17.18",
+ "vite": "^2.8.3",
+ "vite-plugin-style-import": "1.4.1",
+ "vite-plugin-svg-icons": "^2.0.1",
+ "vue-tsc": "^0.31.1"
+ }
+}
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..c7f0014
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,5833 @@
+lockfileVersion: 5.3
+
+specifiers:
+ '@ant-design/icons-vue': ^6.0.1
+ '@commitlint/cli': ^11.0.0
+ '@commitlint/config-conventional': ^11.0.0
+ '@rushstack/eslint-patch': ^1.1.0
+ '@types/js-cookie': ^2.2.4
+ '@types/lodash-es': ^4.17.4
+ '@types/node': ^16.11.22
+ '@types/nprogress': ^0.2.0
+ '@types/qs': ^6.5.3
+ '@vitejs/plugin-vue': ^2.2.0
+ '@vitejs/plugin-vue-jsx': ^1.3.7
+ '@vue/eslint-config-prettier': ^7.0.0
+ '@vue/eslint-config-typescript': ^10.0.0
+ '@vue/tsconfig': ^0.1.3
+ ant-design-vue: ^2.2.8
+ axios: ^0.21.1
+ clipboard: ^2.0.10
+ cmp-socket: 1.0.0
+ core-js: ^3.6.5
+ crypto-js: ^3.1.9-1
+ dayjs: ^1.10.4
+ element-plus: ^1.1.0-beta.9
+ eslint: ^8.5.0
+ eslint-plugin-vue: ^8.2.0
+ husky: ^1.3.1
+ js-cookie: ^2.2.0
+ less: ^4.1.1
+ lint-staged: ^8.1.5
+ lodash-es: ^4.17.21
+ nprogress: ^0.2.0
+ prettier: ^2.5.1
+ qiankun: ^2.4.6
+ qs: ^6.7.0
+ sass: ^1.26.5
+ svg-sprite-loader: ^6.0.2
+ typescript: ~4.5.5
+ unplugin-vue-components: ^0.17.18
+ vite: ^2.8.3
+ vite-plugin-style-import: 1.4.1
+ vite-plugin-svg-icons: ^2.0.1
+ vue: ^3.2.29
+ vue-router: ^4.0.12
+ vue-tsc: ^0.31.1
+ vuex: ^4.0.0-0
+
+dependencies:
+ '@ant-design/icons-vue': 6.0.1_vue@3.2.31
+ ant-design-vue: 2.2.8_vue@3.2.31
+ axios: 0.21.4
+ clipboard: 2.0.10
+ cmp-socket: 1.0.0
+ core-js: 3.21.1
+ crypto-js: 3.3.0
+ dayjs: 1.10.7
+ element-plus: 1.1.0-beta.24_vue@3.2.31
+ js-cookie: 2.2.1
+ lodash-es: 4.17.21
+ nprogress: 0.2.0
+ qiankun: 2.6.3
+ qs: 6.10.3
+ vue: 3.2.31
+ vue-router: 4.0.12_vue@3.2.31
+ vuex: 4.0.2_vue@3.2.31
+
+devDependencies:
+ '@commitlint/cli': 11.0.0
+ '@commitlint/config-conventional': 11.0.0
+ '@rushstack/eslint-patch': 1.1.0
+ '@types/js-cookie': 2.2.7
+ '@types/lodash-es': 4.17.6
+ '@types/node': 16.11.25
+ '@types/nprogress': 0.2.0
+ '@types/qs': 6.9.7
+ '@vitejs/plugin-vue': 2.2.0_vite@2.8.3+vue@3.2.31
+ '@vitejs/plugin-vue-jsx': 1.3.7
+ '@vue/eslint-config-prettier': 7.0.0_eslint@8.9.0+prettier@2.5.1
+ '@vue/eslint-config-typescript': 10.0.0_cd100ca74b8c3cfb64acbb3ff997764b
+ '@vue/tsconfig': 0.1.3_@types+node@16.11.25
+ eslint: 8.9.0
+ eslint-plugin-vue: 8.4.1_eslint@8.9.0
+ husky: 1.3.1
+ less: 4.1.2
+ lint-staged: 8.2.1
+ prettier: 2.5.1
+ sass: 1.49.8
+ svg-sprite-loader: 6.0.11
+ typescript: 4.5.5
+ unplugin-vue-components: 0.17.18_vite@2.8.3+vue@3.2.31
+ vite: 2.8.3_less@4.1.2+sass@1.49.8
+ vite-plugin-style-import: 1.4.1_vite@2.8.3
+ vite-plugin-svg-icons: 2.0.1_vite@2.8.3
+ vue-tsc: 0.31.4_typescript@4.5.5
+
+packages:
+
+ /@ampproject/remapping/2.1.2:
+ resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.4
+ dev: true
+
+ /@ant-design/colors/5.1.1:
+ resolution: {integrity: sha512-Txy4KpHrp3q4XZdfgOBqLl+lkQIc3tEvHXOimRN1giX1AEC7mGtyrO9p8iRGJ3FLuVMGa2gNEzQyghVymLttKQ==}
+ dependencies:
+ '@ctrl/tinycolor': 3.4.0
+ dev: false
+
+ /@ant-design/icons-svg/4.2.1:
+ resolution: {integrity: sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==}
+ dev: false
+
+ /@ant-design/icons-vue/6.0.1_vue@3.2.31:
+ resolution: {integrity: sha512-HigIgEVV6bbcrz2A92/qDzi/aKWB5EC6b6E1mxMB6aQA7ksiKY+gi4U94TpqyEIIhR23uaDrjufJ+xCZQ+vx6Q==}
+ peerDependencies:
+ vue: '>=3.0.3'
+ dependencies:
+ '@ant-design/colors': 5.1.1
+ '@ant-design/icons-svg': 4.2.1
+ '@types/lodash': 4.14.178
+ lodash: 4.17.21
+ vue: 3.2.31
+ dev: false
+
+ /@antfu/utils/0.4.0:
+ resolution: {integrity: sha512-gqkpvjkgFUu+s3kP+Ly33OKpo5zvVY3FDFhv5BIb98SncS3KD6DNxPfNDjwHIoyXbz1leWo1j8DtRLZ1D2Jv+Q==}
+ dependencies:
+ '@types/throttle-debounce': 2.1.0
+ dev: true
+
+ /@babel/code-frame/7.16.7:
+ resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/highlight': 7.16.10
+ dev: true
+
+ /@babel/compat-data/7.17.0:
+ resolution: {integrity: sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/core/7.17.5:
+ resolution: {integrity: sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@ampproject/remapping': 2.1.2
+ '@babel/code-frame': 7.16.7
+ '@babel/generator': 7.17.3
+ '@babel/helper-compilation-targets': 7.16.7_@babel+core@7.17.5
+ '@babel/helper-module-transforms': 7.16.7
+ '@babel/helpers': 7.17.2
+ '@babel/parser': 7.17.3
+ '@babel/template': 7.16.7
+ '@babel/traverse': 7.17.3
+ '@babel/types': 7.17.0
+ convert-source-map: 1.8.0
+ debug: 4.3.3
+ gensync: 1.0.0-beta.2
+ json5: 2.2.0
+ semver: 6.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/generator/7.17.3:
+ resolution: {integrity: sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.17.0
+ jsesc: 2.5.2
+ source-map: 0.5.7
+ dev: true
+
+ /@babel/helper-annotate-as-pure/7.16.7:
+ resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.17.0
+ dev: true
+
+ /@babel/helper-compilation-targets/7.16.7_@babel+core@7.17.5:
+ resolution: {integrity: sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/compat-data': 7.17.0
+ '@babel/core': 7.17.5
+ '@babel/helper-validator-option': 7.16.7
+ browserslist: 4.19.1
+ semver: 6.3.0
+ dev: true
+
+ /@babel/helper-create-class-features-plugin/7.17.1_@babel+core@7.17.5:
+ resolution: {integrity: sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.17.5
+ '@babel/helper-annotate-as-pure': 7.16.7
+ '@babel/helper-environment-visitor': 7.16.7
+ '@babel/helper-function-name': 7.16.7
+ '@babel/helper-member-expression-to-functions': 7.16.7
+ '@babel/helper-optimise-call-expression': 7.16.7
+ '@babel/helper-replace-supers': 7.16.7
+ '@babel/helper-split-export-declaration': 7.16.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-environment-visitor/7.16.7:
+ resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.17.0
+ dev: true
+
+ /@babel/helper-function-name/7.16.7:
+ resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-get-function-arity': 7.16.7
+ '@babel/template': 7.16.7
+ '@babel/types': 7.17.0
+ dev: true
+
+ /@babel/helper-get-function-arity/7.16.7:
+ resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.17.0
+ dev: true
+
+ /@babel/helper-hoist-variables/7.16.7:
+ resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.17.0
+ dev: true
+
+ /@babel/helper-member-expression-to-functions/7.16.7:
+ resolution: {integrity: sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.17.0
+ dev: true
+
+ /@babel/helper-module-imports/7.16.7:
+ resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.17.0
+ dev: true
+
+ /@babel/helper-module-transforms/7.16.7:
+ resolution: {integrity: sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-environment-visitor': 7.16.7
+ '@babel/helper-module-imports': 7.16.7
+ '@babel/helper-simple-access': 7.16.7
+ '@babel/helper-split-export-declaration': 7.16.7
+ '@babel/helper-validator-identifier': 7.16.7
+ '@babel/template': 7.16.7
+ '@babel/traverse': 7.17.3
+ '@babel/types': 7.17.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-optimise-call-expression/7.16.7:
+ resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.17.0
+ dev: true
+
+ /@babel/helper-plugin-utils/7.16.7:
+ resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-replace-supers/7.16.7:
+ resolution: {integrity: sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-environment-visitor': 7.16.7
+ '@babel/helper-member-expression-to-functions': 7.16.7
+ '@babel/helper-optimise-call-expression': 7.16.7
+ '@babel/traverse': 7.17.3
+ '@babel/types': 7.17.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-simple-access/7.16.7:
+ resolution: {integrity: sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.17.0
+ dev: true
+
+ /@babel/helper-split-export-declaration/7.16.7:
+ resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.17.0
+ dev: true
+
+ /@babel/helper-validator-identifier/7.16.7:
+ resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-validator-option/7.16.7:
+ resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helpers/7.17.2:
+ resolution: {integrity: sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.16.7
+ '@babel/traverse': 7.17.3
+ '@babel/types': 7.17.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/highlight/7.16.10:
+ resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.16.7
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ dev: true
+
+ /@babel/parser/7.17.3:
+ resolution: {integrity: sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.17.5:
+ resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.17.5
+ '@babel/helper-plugin-utils': 7.16.7
+ dev: true
+
+ /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.5:
+ resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.17.5
+ '@babel/helper-plugin-utils': 7.16.7
+ dev: true
+
+ /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.17.5:
+ resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.17.5
+ '@babel/helper-plugin-utils': 7.16.7
+ dev: true
+
+ /@babel/plugin-transform-typescript/7.16.8_@babel+core@7.17.5:
+ resolution: {integrity: sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.17.5
+ '@babel/helper-create-class-features-plugin': 7.17.1_@babel+core@7.17.5
+ '@babel/helper-plugin-utils': 7.16.7
+ '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/runtime/7.17.2:
+ resolution: {integrity: sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ regenerator-runtime: 0.13.9
+
+ /@babel/template/7.16.7:
+ resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.16.7
+ '@babel/parser': 7.17.3
+ '@babel/types': 7.17.0
+ dev: true
+
+ /@babel/traverse/7.17.3:
+ resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.16.7
+ '@babel/generator': 7.17.3
+ '@babel/helper-environment-visitor': 7.16.7
+ '@babel/helper-function-name': 7.16.7
+ '@babel/helper-hoist-variables': 7.16.7
+ '@babel/helper-split-export-declaration': 7.16.7
+ '@babel/parser': 7.17.3
+ '@babel/types': 7.17.0
+ debug: 4.3.3
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/types/7.17.0:
+ resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.16.7
+ to-fast-properties: 2.0.0
+ dev: true
+
+ /@commitlint/cli/11.0.0:
+ resolution: {integrity: sha512-YWZWg1DuqqO5Zjh7vUOeSX76vm0FFyz4y0cpGMFhrhvUi5unc4IVfCXZ6337R9zxuBtmveiRuuhQqnRRer+13g==}
+ engines: {node: '>=v10.22.0'}
+ hasBin: true
+ dependencies:
+ '@babel/runtime': 7.17.2
+ '@commitlint/format': 11.0.0
+ '@commitlint/lint': 11.0.0
+ '@commitlint/load': 11.0.0
+ '@commitlint/read': 11.0.0
+ chalk: 4.1.0
+ core-js: 3.21.1
+ get-stdin: 8.0.0
+ lodash: 4.17.21
+ resolve-from: 5.0.0
+ resolve-global: 1.0.0
+ yargs: 15.4.1
+ dev: true
+
+ /@commitlint/config-conventional/11.0.0:
+ resolution: {integrity: sha512-SNDRsb5gLuDd2PL83yCOQX6pE7gevC79UPFx+GLbLfw6jGnnbO9/tlL76MLD8MOViqGbo7ZicjChO9Gn+7tHhA==}
+ engines: {node: '>=v10.22.0'}
+ dependencies:
+ conventional-changelog-conventionalcommits: 4.6.3
+ dev: true
+
+ /@commitlint/ensure/11.0.0:
+ resolution: {integrity: sha512-/T4tjseSwlirKZdnx4AuICMNNlFvRyPQimbZIOYujp9DSO6XRtOy9NrmvWujwHsq9F5Wb80QWi4WMW6HMaENug==}
+ engines: {node: '>=v10.22.0'}
+ dependencies:
+ '@commitlint/types': 11.0.0
+ lodash: 4.17.21
+ dev: true
+
+ /@commitlint/execute-rule/11.0.0:
+ resolution: {integrity: sha512-g01p1g4BmYlZ2+tdotCavrMunnPFPhTzG1ZiLKTCYrooHRbmvqo42ZZn4QMStUEIcn+jfLb6BRZX3JzIwA1ezQ==}
+ engines: {node: '>=v10.22.0'}
+ dev: true
+
+ /@commitlint/format/11.0.0:
+ resolution: {integrity: sha512-bpBLWmG0wfZH/svzqD1hsGTpm79TKJWcf6EXZllh2J/LSSYKxGlv967lpw0hNojme0sZd4a/97R3qA2QHWWSLg==}
+ engines: {node: '>=v10.22.0'}
+ dependencies:
+ '@commitlint/types': 11.0.0
+ chalk: 4.1.0
+ dev: true
+
+ /@commitlint/is-ignored/11.0.0:
+ resolution: {integrity: sha512-VLHOUBN+sOlkYC4tGuzE41yNPO2w09sQnOpfS+pSPnBFkNUUHawEuA44PLHtDvQgVuYrMAmSWFQpWabMoP5/Xg==}
+ engines: {node: '>=v10.22.0'}
+ dependencies:
+ '@commitlint/types': 11.0.0
+ semver: 7.3.2
+ dev: true
+
+ /@commitlint/lint/11.0.0:
+ resolution: {integrity: sha512-Q8IIqGIHfwKr8ecVZyYh6NtXFmKw4YSEWEr2GJTB/fTZXgaOGtGFZDWOesCZllQ63f1s/oWJYtVv5RAEuwN8BQ==}
+ engines: {node: '>=v10.22.0'}
+ dependencies:
+ '@commitlint/is-ignored': 11.0.0
+ '@commitlint/parse': 11.0.0
+ '@commitlint/rules': 11.0.0
+ '@commitlint/types': 11.0.0
+ dev: true
+
+ /@commitlint/load/11.0.0:
+ resolution: {integrity: sha512-t5ZBrtgvgCwPfxmG811FCp39/o3SJ7L+SNsxFL92OR4WQxPcu6c8taD0CG2lzOHGuRyuMxZ7ps3EbngT2WpiCg==}
+ engines: {node: '>=v10.22.0'}
+ dependencies:
+ '@commitlint/execute-rule': 11.0.0
+ '@commitlint/resolve-extends': 11.0.0
+ '@commitlint/types': 11.0.0
+ chalk: 4.1.0
+ cosmiconfig: 7.0.1
+ lodash: 4.17.21
+ resolve-from: 5.0.0
+ dev: true
+
+ /@commitlint/message/11.0.0:
+ resolution: {integrity: sha512-01ObK/18JL7PEIE3dBRtoMmU6S3ecPYDTQWWhcO+ErA3Ai0KDYqV5VWWEijdcVafNpdeUNrEMigRkxXHQLbyJA==}
+ engines: {node: '>=v10.22.0'}
+ dev: true
+
+ /@commitlint/parse/11.0.0:
+ resolution: {integrity: sha512-DekKQAIYWAXIcyAZ6/PDBJylWJ1BROTfDIzr9PMVxZRxBPc1gW2TG8fLgjZfBP5mc0cuthPkVi91KQQKGri/7A==}
+ engines: {node: '>=v10.22.0'}
+ dependencies:
+ conventional-changelog-angular: 5.0.13
+ conventional-commits-parser: 3.2.4
+ dev: true
+
+ /@commitlint/read/11.0.0:
+ resolution: {integrity: sha512-37V0V91GSv0aDzMzJioKpCoZw6l0shk7+tRG8RkW1GfZzUIytdg3XqJmM+IaIYpaop0m6BbZtfq+idzUwJnw7g==}
+ engines: {node: '>=v10.22.0'}
+ dependencies:
+ '@commitlint/top-level': 11.0.0
+ fs-extra: 9.1.0
+ git-raw-commits: 2.0.11
+ dev: true
+
+ /@commitlint/resolve-extends/11.0.0:
+ resolution: {integrity: sha512-WinU6Uv6L7HDGLqn/To13KM1CWvZ09VHZqryqxXa1OY+EvJkfU734CwnOEeNlSCK7FVLrB4kmodLJtL1dkEpXw==}
+ engines: {node: '>=v10.22.0'}
+ dependencies:
+ import-fresh: 3.3.0
+ lodash: 4.17.21
+ resolve-from: 5.0.0
+ resolve-global: 1.0.0
+ dev: true
+
+ /@commitlint/rules/11.0.0:
+ resolution: {integrity: sha512-2hD9y9Ep5ZfoNxDDPkQadd2jJeocrwC4vJ98I0g8pNYn/W8hS9+/FuNpolREHN8PhmexXbkjrwyQrWbuC0DVaA==}
+ engines: {node: '>=v10.22.0'}
+ dependencies:
+ '@commitlint/ensure': 11.0.0
+ '@commitlint/message': 11.0.0
+ '@commitlint/to-lines': 11.0.0
+ '@commitlint/types': 11.0.0
+ dev: true
+
+ /@commitlint/to-lines/11.0.0:
+ resolution: {integrity: sha512-TIDTB0Y23jlCNubDROUVokbJk6860idYB5cZkLWcRS9tlb6YSoeLn1NLafPlrhhkkkZzTYnlKYzCVrBNVes1iw==}
+ engines: {node: '>=v10.22.0'}
+ dev: true
+
+ /@commitlint/top-level/11.0.0:
+ resolution: {integrity: sha512-O0nFU8o+Ws+py5pfMQIuyxOtfR/kwtr5ybqTvR+C2lUPer2x6lnQU+OnfD7hPM+A+COIUZWx10mYQvkR3MmtAA==}
+ engines: {node: '>=v10.22.0'}
+ dependencies:
+ find-up: 5.0.0
+ dev: true
+
+ /@commitlint/types/11.0.0:
+ resolution: {integrity: sha512-VoNqai1vR5anRF5Tuh/+SWDFk7xi7oMwHrHrbm1BprYXjB2RJsWLhUrStMssDxEl5lW/z3EUdg8RvH/IUBccSQ==}
+ engines: {node: '>=v10.22.0'}
+ dev: true
+
+ /@ctrl/tinycolor/3.4.0:
+ resolution: {integrity: sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /@element-plus/icons/0.0.11:
+ resolution: {integrity: sha512-iKQXSxXu131Ai+I9Ymtcof9WId7kaXvB1+WRfAfpQCW7UiAMYgdNDqb/u0hgTo2Yq3MwC4MWJnNuTBEpG8r7+A==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dev: false
+
+ /@emmetio/abbreviation/2.2.3:
+ resolution: {integrity: sha512-87pltuCPt99aL+y9xS6GPZ+Wmmyhll2WXH73gG/xpGcQ84DRnptBsI2r0BeIQ0EB/SQTOe2ANPqFqj3Rj5FOGA==}
+ dependencies:
+ '@emmetio/scanner': 1.0.0
+ dev: true
+
+ /@emmetio/css-abbreviation/2.1.4:
+ resolution: {integrity: sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==}
+ dependencies:
+ '@emmetio/scanner': 1.0.0
+ dev: true
+
+ /@emmetio/scanner/1.0.0:
+ resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==}
+ dev: true
+
+ /@eslint/eslintrc/1.1.0:
+ resolution: {integrity: sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.3.3
+ espree: 9.3.1
+ globals: 13.12.1
+ ignore: 4.0.6
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@humanwhocodes/config-array/0.9.3:
+ resolution: {integrity: sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==}
+ engines: {node: '>=10.10.0'}
+ dependencies:
+ '@humanwhocodes/object-schema': 1.2.1
+ debug: 4.3.3
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@humanwhocodes/object-schema/1.2.1:
+ resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
+ dev: true
+
+ /@jridgewell/resolve-uri/3.0.5:
+ resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /@jridgewell/sourcemap-codec/1.4.11:
+ resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==}
+ dev: true
+
+ /@jridgewell/trace-mapping/0.3.4:
+ resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.0.5
+ '@jridgewell/sourcemap-codec': 1.4.11
+ dev: true
+
+ /@nodelib/fs.scandir/2.1.5:
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+ dev: true
+
+ /@nodelib/fs.stat/2.0.5:
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /@nodelib/fs.walk/1.2.8:
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.13.0
+ dev: true
+
+ /@popperjs/core/2.11.2:
+ resolution: {integrity: sha512-92FRmppjjqz29VMJ2dn+xdyXZBrMlE42AV6Kq6BwjWV7CNUW1hs2FtxSNLQE+gJhaZ6AAmYuO9y8dshhcBl7vA==}
+ dev: false
+
+ /@rollup/pluginutils/4.1.2:
+ resolution: {integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==}
+ engines: {node: '>= 8.0.0'}
+ dependencies:
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+ dev: true
+
+ /@rushstack/eslint-patch/1.1.0:
+ resolution: {integrity: sha512-JLo+Y592QzIE+q7Dl2pMUtt4q8SKYI5jDrZxrozEQxnGVOyYE+GWK9eLkwTaeN9DDctlaRAQ3TBmzZ1qdLE30A==}
+ dev: true
+
+ /@samverschueren/stream-to-observable/0.3.1_rxjs@6.6.7:
+ resolution: {integrity: sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ rxjs: '*'
+ zen-observable: '*'
+ peerDependenciesMeta:
+ rxjs:
+ optional: true
+ zen-observable:
+ optional: true
+ dependencies:
+ any-observable: 0.3.0
+ rxjs: 6.6.7
+ dev: true
+
+ /@simonwep/pickr/1.8.2:
+ resolution: {integrity: sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==}
+ dependencies:
+ core-js: 3.21.1
+ nanopop: 2.1.0
+ dev: false
+
+ /@trysound/sax/0.2.0:
+ resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
+ engines: {node: '>=10.13.0'}
+ dev: true
+
+ /@types/js-cookie/2.2.7:
+ resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==}
+ dev: true
+
+ /@types/json-schema/7.0.9:
+ resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==}
+ dev: true
+
+ /@types/lodash-es/4.17.6:
+ resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==}
+ dependencies:
+ '@types/lodash': 4.14.178
+ dev: true
+
+ /@types/lodash/4.14.178:
+ resolution: {integrity: sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==}
+
+ /@types/minimist/1.2.2:
+ resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
+ dev: true
+
+ /@types/node/16.11.25:
+ resolution: {integrity: sha512-NrTwfD7L1RTc2qrHQD4RTTy4p0CO2LatKBEKEds3CaVuhoM/+DJzmWZl5f+ikR8cm8F5mfJxK+9rQq07gRiSjQ==}
+ dev: true
+
+ /@types/normalize-package-data/2.4.1:
+ resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
+ dev: true
+
+ /@types/nprogress/0.2.0:
+ resolution: {integrity: sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==}
+ dev: true
+
+ /@types/parse-json/4.0.0:
+ resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
+ dev: true
+
+ /@types/qs/6.9.7:
+ resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==}
+ dev: true
+
+ /@types/svgo/2.6.2:
+ resolution: {integrity: sha512-m1SqMc/EDAZ8v0BBX+NmlYytUXtvrMD2/J9LICwnMvAuJwb0GSmACU3XPvcORqE7ghEJA4Mk6NYzpwhQI/biPw==}
+ dependencies:
+ '@types/node': 16.11.25
+ dev: true
+
+ /@types/throttle-debounce/2.1.0:
+ resolution: {integrity: sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==}
+ dev: true
+
+ /@typescript-eslint/eslint-plugin/5.12.0_c467cf9bb49b295941e83ce479a578b7:
+ resolution: {integrity: sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^5.0.0
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 5.12.0_eslint@8.9.0+typescript@4.5.5
+ '@typescript-eslint/scope-manager': 5.12.0
+ '@typescript-eslint/type-utils': 5.12.0_eslint@8.9.0+typescript@4.5.5
+ '@typescript-eslint/utils': 5.12.0_eslint@8.9.0+typescript@4.5.5
+ debug: 4.3.3
+ eslint: 8.9.0
+ functional-red-black-tree: 1.0.1
+ ignore: 5.2.0
+ regexpp: 3.2.0
+ semver: 7.3.5
+ tsutils: 3.21.0_typescript@4.5.5
+ typescript: 4.5.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/parser/5.12.0_eslint@8.9.0+typescript@4.5.5:
+ resolution: {integrity: sha512-MfSwg9JMBojMUoGjUmX+D2stoQj1CBYTCP0qnnVtu9A+YQXVKNtLjasYh+jozOcrb/wau8TCfWOkQTiOAruBog==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/scope-manager': 5.12.0
+ '@typescript-eslint/types': 5.12.0
+ '@typescript-eslint/typescript-estree': 5.12.0_typescript@4.5.5
+ debug: 4.3.3
+ eslint: 8.9.0
+ typescript: 4.5.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/scope-manager/5.12.0:
+ resolution: {integrity: sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.12.0
+ '@typescript-eslint/visitor-keys': 5.12.0
+ dev: true
+
+ /@typescript-eslint/type-utils/5.12.0_eslint@8.9.0+typescript@4.5.5:
+ resolution: {integrity: sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/utils': 5.12.0_eslint@8.9.0+typescript@4.5.5
+ debug: 4.3.3
+ eslint: 8.9.0
+ tsutils: 3.21.0_typescript@4.5.5
+ typescript: 4.5.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/types/5.12.0:
+ resolution: {integrity: sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: true
+
+ /@typescript-eslint/typescript-estree/5.12.0_typescript@4.5.5:
+ resolution: {integrity: sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 5.12.0
+ '@typescript-eslint/visitor-keys': 5.12.0
+ debug: 4.3.3
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.3.5
+ tsutils: 3.21.0_typescript@4.5.5
+ typescript: 4.5.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/utils/5.12.0_eslint@8.9.0+typescript@4.5.5:
+ resolution: {integrity: sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ '@types/json-schema': 7.0.9
+ '@typescript-eslint/scope-manager': 5.12.0
+ '@typescript-eslint/types': 5.12.0
+ '@typescript-eslint/typescript-estree': 5.12.0_typescript@4.5.5
+ eslint: 8.9.0
+ eslint-scope: 5.1.1
+ eslint-utils: 3.0.0_eslint@8.9.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /@typescript-eslint/visitor-keys/5.12.0:
+ resolution: {integrity: sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.12.0
+ eslint-visitor-keys: 3.3.0
+ dev: true
+
+ /@vitejs/plugin-vue-jsx/1.3.7:
+ resolution: {integrity: sha512-UH+lI/TtBQg1YZeOTBN5yEYvSDNcL2ei8ZgE+0ESX2ULg2xV7rxzw1TB1eHZiMGXOSR8h5AWp/6F1hCcaq8VYA==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ '@babel/core': 7.17.5
+ '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.17.5
+ '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.17.5
+ '@rollup/pluginutils': 4.1.2
+ '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.17.5
+ hash-sum: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vitejs/plugin-vue/2.2.0_vite@2.8.3+vue@3.2.31:
+ resolution: {integrity: sha512-wXigM1EwN2G7rZcwG6kLk9ivvIMhx2363tCEvMBiXcTu5nePM/12hUPVzPb83Uugt6U+zom1gTpJopi/Ow/jwg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ vite: ^2.5.10
+ vue: ^3.2.25
+ dependencies:
+ vite: 2.8.3_less@4.1.2+sass@1.49.8
+ vue: 3.2.31
+ dev: true
+
+ /@volar/code-gen/0.31.4:
+ resolution: {integrity: sha512-ngivMEbBNd19v+EHdLyCJoIGRaoD9J4P20ZgdCEGf2voztja59u3Tilpf9r9ENy/731nG7XncToYm4+c1t/LhA==}
+ dependencies:
+ '@volar/shared': 0.31.4
+ '@volar/source-map': 0.31.4
+ dev: true
+
+ /@volar/html2pug/0.31.4:
+ resolution: {integrity: sha512-+whoP4C34kbCIRyoojZE6luqs7Ep/0YDBD9yEWu82G1ECLIFoujtkZXHbAHiQH8MIs/GwjUmozd85pUGAVQf1w==}
+ dependencies:
+ domelementtype: 2.2.0
+ domhandler: 4.3.0
+ htmlparser2: 7.2.0
+ pug: 3.0.2
+ dev: true
+
+ /@volar/shared/0.31.4:
+ resolution: {integrity: sha512-mKSH4GKFde2t3GVEGibBu84jbCk7O1sccELxTgCGHX7ue4nJqgHup8lXhwyfUOfdJ7eyx9luyDsVuJ4BY3gfeg==}
+ dependencies:
+ upath: 2.0.1
+ vscode-html-languageservice: 4.2.1
+ vscode-jsonrpc: 8.0.0-next.6
+ vscode-uri: 3.0.3
+ dev: true
+
+ /@volar/source-map/0.31.4:
+ resolution: {integrity: sha512-lX/XKKc3ESNt6QArq1T54LSxXvu7ARDctQfkt6qUSNLVR/ccUXwzM+4qiOj39WBbmoDzET33riVYnMXMeGJMvg==}
+ dependencies:
+ '@volar/shared': 0.31.4
+ vscode-languageserver-textdocument: 1.0.4
+ dev: true
+
+ /@volar/transforms/0.31.4:
+ resolution: {integrity: sha512-081QI2zBvdja4XN3eAtIWmBqDkAyDuuK3xP5mD04T9vMrVfy+WKrzB7n3/Zru7z4DiM70Qo5PoTapQ3Xnz9NzQ==}
+ dependencies:
+ '@volar/shared': 0.31.4
+ vscode-languageserver-types: 3.17.0-next.7
+ dev: true
+
+ /@volar/vue-code-gen/0.31.4:
+ resolution: {integrity: sha512-1ypZfzQfH+lV8JcOOKfYMTAmD6OUeBQSDwu7YRHQkuvoSQzPiXXrjupi0DvHrcWR0hQfh4yRnme6I+ChutW69w==}
+ dependencies:
+ '@volar/code-gen': 0.31.4
+ '@volar/shared': 0.31.4
+ '@volar/source-map': 0.31.4
+ '@vue/compiler-core': 3.2.31
+ '@vue/compiler-dom': 3.2.31
+ '@vue/shared': 3.2.31
+ upath: 2.0.1
+ dev: true
+
+ /@vscode/emmet-helper/2.8.4:
+ resolution: {integrity: sha512-lUki5QLS47bz/U8IlG9VQ+1lfxMtxMZENmU5nu4Z71eOD5j9FK0SmYGL5NiVJg9WBWeAU0VxRADMY2Qpq7BfVg==}
+ dependencies:
+ emmet: 2.3.6
+ jsonc-parser: 2.3.1
+ vscode-languageserver-textdocument: 1.0.4
+ vscode-languageserver-types: 3.16.0
+ vscode-nls: 5.0.0
+ vscode-uri: 2.1.2
+ dev: true
+
+ /@vue/babel-helper-vue-transform-on/1.0.2:
+ resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==}
+ dev: true
+
+ /@vue/babel-plugin-jsx/1.1.1_@babel+core@7.17.5:
+ resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==}
+ dependencies:
+ '@babel/helper-module-imports': 7.16.7
+ '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.5
+ '@babel/template': 7.16.7
+ '@babel/traverse': 7.17.3
+ '@babel/types': 7.17.0
+ '@vue/babel-helper-vue-transform-on': 1.0.2
+ camelcase: 6.3.0
+ html-tags: 3.1.0
+ svg-tags: 1.0.0
+ transitivePeerDependencies:
+ - '@babel/core'
+ - supports-color
+ dev: true
+
+ /@vue/compiler-core/3.2.31:
+ resolution: {integrity: sha512-aKno00qoA4o+V/kR6i/pE+aP+esng5siNAVQ422TkBNM6qA4veXiZbSe8OTXHXquEi/f6Akc+nLfB4JGfe4/WQ==}
+ dependencies:
+ '@babel/parser': 7.17.3
+ '@vue/shared': 3.2.31
+ estree-walker: 2.0.2
+ source-map: 0.6.1
+
+ /@vue/compiler-dom/3.2.31:
+ resolution: {integrity: sha512-60zIlFfzIDf3u91cqfqy9KhCKIJgPeqxgveH2L+87RcGU/alT6BRrk5JtUso0OibH3O7NXuNOQ0cDc9beT0wrg==}
+ dependencies:
+ '@vue/compiler-core': 3.2.31
+ '@vue/shared': 3.2.31
+
+ /@vue/compiler-sfc/3.2.31:
+ resolution: {integrity: sha512-748adc9msSPGzXgibHiO6T7RWgfnDcVQD+VVwYgSsyyY8Ans64tALHZANrKtOzvkwznV/F4H7OAod/jIlp/dkQ==}
+ dependencies:
+ '@babel/parser': 7.17.3
+ '@vue/compiler-core': 3.2.31
+ '@vue/compiler-dom': 3.2.31
+ '@vue/compiler-ssr': 3.2.31
+ '@vue/reactivity-transform': 3.2.31
+ '@vue/shared': 3.2.31
+ estree-walker: 2.0.2
+ magic-string: 0.25.7
+ postcss: 8.4.6
+ source-map: 0.6.1
+ dev: false
+
+ /@vue/compiler-ssr/3.2.31:
+ resolution: {integrity: sha512-mjN0rqig+A8TVDnsGPYJM5dpbjlXeHUm2oZHZwGyMYiGT/F4fhJf/cXy8QpjnLQK4Y9Et4GWzHn9PS8AHUnSkw==}
+ dependencies:
+ '@vue/compiler-dom': 3.2.31
+ '@vue/shared': 3.2.31
+ dev: false
+
+ /@vue/devtools-api/6.0.12:
+ resolution: {integrity: sha512-iO/4FIezHKXhiDBdKySCvJVh8/mZPxHpiQrTy+PXVqJZgpTPTdHy4q8GXulaY+UKEagdkBb0onxNQZ0LNiqVhw==}
+ dev: false
+
+ /@vue/eslint-config-prettier/7.0.0_eslint@8.9.0+prettier@2.5.1:
+ resolution: {integrity: sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw==}
+ peerDependencies:
+ eslint: '>= 7.28.0'
+ prettier: '>= 2.0.0'
+ dependencies:
+ eslint: 8.9.0
+ eslint-config-prettier: 8.3.0_eslint@8.9.0
+ eslint-plugin-prettier: 4.0.0_07b422646bb75d3db791621d4fdbc992
+ prettier: 2.5.1
+ dev: true
+
+ /@vue/eslint-config-typescript/10.0.0_cd100ca74b8c3cfb64acbb3ff997764b:
+ resolution: {integrity: sha512-F94cL8ug3FaYXlCfU5/wiGjk1qeadmoBpRGAOBq+qre3Smdupa59dd6ZJrsfRODpsMPyTG7330juMDsUvpZ3Rw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
+ eslint-plugin-vue: ^8.0.1
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 5.12.0_c467cf9bb49b295941e83ce479a578b7
+ '@typescript-eslint/parser': 5.12.0_eslint@8.9.0+typescript@4.5.5
+ eslint: 8.9.0
+ eslint-plugin-vue: 8.4.1_eslint@8.9.0
+ vue-eslint-parser: 8.2.0_eslint@8.9.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /@vue/reactivity-transform/3.2.31:
+ resolution: {integrity: sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==}
+ dependencies:
+ '@babel/parser': 7.17.3
+ '@vue/compiler-core': 3.2.31
+ '@vue/shared': 3.2.31
+ estree-walker: 2.0.2
+ magic-string: 0.25.7
+ dev: false
+
+ /@vue/reactivity/3.2.31:
+ resolution: {integrity: sha512-HVr0l211gbhpEKYr2hYe7hRsV91uIVGFYNHj73njbARVGHQvIojkImKMaZNDdoDZOIkMsBc9a1sMqR+WZwfSCw==}
+ dependencies:
+ '@vue/shared': 3.2.31
+
+ /@vue/runtime-core/3.2.31:
+ resolution: {integrity: sha512-Kcog5XmSY7VHFEMuk4+Gap8gUssYMZ2+w+cmGI6OpZWYOEIcbE0TPzzPHi+8XTzAgx1w/ZxDFcXhZeXN5eKWsA==}
+ dependencies:
+ '@vue/reactivity': 3.2.31
+ '@vue/shared': 3.2.31
+ dev: false
+
+ /@vue/runtime-dom/3.2.31:
+ resolution: {integrity: sha512-N+o0sICVLScUjfLG7u9u5XCjvmsexAiPt17GNnaWHJUfsKed5e85/A3SWgKxzlxx2SW/Hw7RQxzxbXez9PtY3g==}
+ dependencies:
+ '@vue/runtime-core': 3.2.31
+ '@vue/shared': 3.2.31
+ csstype: 2.6.19
+ dev: false
+
+ /@vue/server-renderer/3.2.31_vue@3.2.31:
+ resolution: {integrity: sha512-8CN3Zj2HyR2LQQBHZ61HexF5NReqngLT3oahyiVRfSSvak+oAvVmu8iNLSu6XR77Ili2AOpnAt1y8ywjjqtmkg==}
+ peerDependencies:
+ vue: 3.2.31
+ dependencies:
+ '@vue/compiler-ssr': 3.2.31
+ '@vue/shared': 3.2.31
+ vue: 3.2.31
+ dev: false
+
+ /@vue/shared/3.2.31:
+ resolution: {integrity: sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ==}
+
+ /@vue/tsconfig/0.1.3_@types+node@16.11.25:
+ resolution: {integrity: sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==}
+ peerDependencies:
+ '@types/node': '*'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ dependencies:
+ '@types/node': 16.11.25
+ dev: true
+
+ /@vueuse/core/6.1.0_vue@3.2.31:
+ resolution: {integrity: sha512-6KienU5QOWKuDqvHytep14274IGKyLlACzXjifOrgDQMkqvWZIUnDhpckT/1+O8n8DN59d5wzzICZI/2sfGCyg==}
+ peerDependencies:
+ '@vue/composition-api': ^1.1.0
+ vue: ^2.6.0 || ^3.2.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ vue:
+ optional: true
+ dependencies:
+ '@vueuse/shared': 6.1.0_vue@3.2.31
+ vue: 3.2.31
+ vue-demi: 0.12.1_vue@3.2.31
+ dev: false
+
+ /@vueuse/shared/6.1.0_vue@3.2.31:
+ resolution: {integrity: sha512-teW0TUQryGnEprHeOI6oH8NPVJBirknxksEiNCtdEjIi8W7JSTg8JPO+e1XlGI6ly24NDlDXUDYaHJayiaXjuw==}
+ peerDependencies:
+ '@vue/composition-api': ^1.1.0
+ vue: ^2.6.0 || ^3.2.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ vue:
+ optional: true
+ dependencies:
+ vue: 3.2.31
+ vue-demi: 0.12.1_vue@3.2.31
+ dev: false
+
+ /JSONStream/1.3.5:
+ resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
+ hasBin: true
+ dependencies:
+ jsonparse: 1.3.1
+ through: 2.3.8
+ dev: true
+
+ /acorn-jsx/5.3.2_acorn@8.7.0:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ acorn: 8.7.0
+ dev: true
+
+ /acorn/7.4.1:
+ resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
+ /acorn/8.7.0:
+ resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ 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.1
+ dev: true
+
+ /ansi-escapes/3.2.0:
+ resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==}
+ engines: {node: '>=4'}
+ 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/5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ 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
+
+ /ant-design-vue/2.2.8_vue@3.2.31:
+ resolution: {integrity: sha512-3graq9/gCfJQs6hznrHV6sa9oDmk/D1H3Oo0vLdVpPS/I61fZPk8NEyNKCHpNA6fT2cx6xx9U3QS63uuyikg/Q==}
+ peerDependencies:
+ '@vue/compiler-sfc': '>=3.1.0'
+ vue: '>=3.1.0'
+ dependencies:
+ '@ant-design/icons-vue': 6.0.1_vue@3.2.31
+ '@babel/runtime': 7.17.2
+ '@simonwep/pickr': 1.8.2
+ array-tree-filter: 2.1.0
+ async-validator: 3.5.2
+ dom-align: 1.12.2
+ dom-scroll-into-view: 2.0.1
+ lodash: 4.17.21
+ lodash-es: 4.17.21
+ moment: 2.29.1
+ omit.js: 2.0.2
+ resize-observer-polyfill: 1.5.1
+ scroll-into-view-if-needed: 2.2.29
+ shallow-equal: 1.2.1
+ vue: 3.2.31
+ vue-types: 3.0.2_vue@3.2.31
+ warning: 4.0.3
+ dev: false
+
+ /any-observable/0.3.0:
+ resolution: {integrity: sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /anymatch/3.1.2:
+ resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+ dev: true
+
+ /argparse/1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+ dependencies:
+ sprintf-js: 1.0.3
+ dev: true
+
+ /argparse/2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ 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-ify/1.0.0:
+ resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
+ dev: true
+
+ /array-tree-filter/2.1.0:
+ resolution: {integrity: sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==}
+ 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-union/2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+ 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
+
+ /arrify/1.0.1:
+ resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /asap/2.0.6:
+ resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
+ dev: true
+
+ /assert-never/1.2.1:
+ resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==}
+ dev: true
+
+ /assign-symbols/1.0.0:
+ resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /async-validator/3.5.2:
+ resolution: {integrity: sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ==}
+ dev: false
+
+ /async-validator/4.0.7:
+ resolution: {integrity: sha512-Pj2IR7u8hmUEDOwB++su6baaRi+QvsgajuFB9j95foM1N2gy5HM4z60hfusIO0fBPG5uLAEl6yCJr1jNSVugEQ==}
+ dev: false
+
+ /at-least-node/1.0.0:
+ resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
+ engines: {node: '>= 4.0.0'}
+ dev: true
+
+ /atob/2.1.2:
+ resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
+ engines: {node: '>= 4.5.0'}
+ hasBin: true
+ dev: true
+
+ /axios/0.21.4:
+ resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
+ dependencies:
+ follow-redirects: 1.14.8
+ transitivePeerDependencies:
+ - debug
+ dev: false
+
+ /babel-walk/3.0.0-canary-5:
+ resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@babel/types': 7.17.0
+ dev: true
+
+ /balanced-match/1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ 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
+
+ /big.js/5.2.2:
+ resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
+ dev: true
+
+ /binary-extensions/2.2.0:
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /bluebird/3.7.2:
+ resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
+ 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.2
+ 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.4
+ 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
+
+ /browserslist/4.19.1:
+ resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001312
+ electron-to-chromium: 1.4.71
+ escalade: 3.1.1
+ node-releases: 2.0.2
+ picocolors: 1.0.0
+ 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
+
+ /call-bind/1.0.2:
+ resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
+ dependencies:
+ function-bind: 1.1.1
+ get-intrinsic: 1.1.1
+
+ /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/4.1.2:
+ resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
+ dependencies:
+ pascal-case: 3.1.2
+ tslib: 2.3.1
+ dev: true
+
+ /camelcase-keys/6.2.2:
+ resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
+ engines: {node: '>=8'}
+ dependencies:
+ camelcase: 5.3.1
+ map-obj: 4.3.0
+ quick-lru: 4.0.1
+ dev: true
+
+ /camelcase/5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /camelcase/6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /caniuse-lite/1.0.30001312:
+ resolution: {integrity: sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==}
+ dev: true
+
+ /capital-case/1.0.4:
+ resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.3.1
+ upper-case-first: 2.0.2
+ 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
+
+ /chalk/4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
+ /change-case/4.1.2:
+ resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==}
+ dependencies:
+ camel-case: 4.1.2
+ capital-case: 1.0.4
+ constant-case: 3.0.4
+ dot-case: 3.0.4
+ header-case: 2.0.4
+ no-case: 3.0.4
+ param-case: 3.0.4
+ pascal-case: 3.1.2
+ path-case: 3.0.4
+ sentence-case: 3.0.4
+ snake-case: 3.0.4
+ tslib: 2.3.1
+ dev: true
+
+ /character-parser/2.2.0:
+ resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==}
+ dependencies:
+ is-regex: 1.1.4
+ dev: true
+
+ /chokidar/3.5.3:
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.2
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /ci-info/2.0.0:
+ resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
+ 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
+
+ /cli-cursor/2.1.0:
+ resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==}
+ engines: {node: '>=4'}
+ dependencies:
+ restore-cursor: 2.0.0
+ dev: true
+
+ /cli-truncate/0.2.1:
+ resolution: {integrity: sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ slice-ansi: 0.0.4
+ string-width: 1.0.2
+ dev: true
+
+ /clipboard/2.0.10:
+ resolution: {integrity: sha512-cz3m2YVwFz95qSEbCDi2fzLN/epEN9zXBvfgAoGkvGOJZATMl9gtTDVOtBYkx2ODUJl2kvmud7n32sV2BpYR4g==}
+ dependencies:
+ good-listener: 1.2.2
+ select: 1.1.2
+ tiny-emitter: 2.1.0
+ dev: false
+
+ /cliui/6.0.0:
+ resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 6.2.0
+ dev: true
+
+ /clone/2.1.2:
+ resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
+ engines: {node: '>=0.8'}
+ dev: true
+
+ /cmp-socket/1.0.0:
+ resolution: {integrity: sha512-2TdIGicSanZbxEwENDg77ZmvJhTGvyCUqdbfzcwgXjoLIj0JoAOGgoVfvQTVITo6eiHLmbd3mtHN42cYa0MT0g==}
+ dev: false
+
+ /code-point-at/1.1.0:
+ resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==}
+ engines: {node: '>=0.10.0'}
+ 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
+ dev: true
+
+ /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==}
+ dev: true
+
+ /color-name/1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ dev: true
+
+ /commander/2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+ dev: true
+
+ /commander/7.2.0:
+ resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /compare-func/2.0.0:
+ resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
+ dependencies:
+ array-ify: 1.0.0
+ dot-prop: 5.3.0
+ dev: true
+
+ /component-emitter/1.3.0:
+ resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==}
+ dev: true
+
+ /compute-scroll-into-view/1.0.17:
+ resolution: {integrity: sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==}
+ dev: false
+
+ /concat-map/0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ dev: true
+
+ /constant-case/3.0.4:
+ resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.3.1
+ upper-case: 2.0.2
+ dev: true
+
+ /constantinople/4.0.1:
+ resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==}
+ dependencies:
+ '@babel/parser': 7.17.3
+ '@babel/types': 7.17.0
+ dev: true
+
+ /conventional-changelog-angular/5.0.13:
+ resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==}
+ engines: {node: '>=10'}
+ dependencies:
+ compare-func: 2.0.0
+ q: 1.5.1
+ dev: true
+
+ /conventional-changelog-conventionalcommits/4.6.3:
+ resolution: {integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==}
+ engines: {node: '>=10'}
+ dependencies:
+ compare-func: 2.0.0
+ lodash: 4.17.21
+ q: 1.5.1
+ dev: true
+
+ /conventional-commits-parser/3.2.4:
+ resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ is-text-path: 1.0.1
+ JSONStream: 1.3.5
+ lodash: 4.17.21
+ meow: 8.1.2
+ split2: 3.2.2
+ through2: 4.0.2
+ dev: true
+
+ /convert-source-map/1.8.0:
+ resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==}
+ dependencies:
+ safe-buffer: 5.1.2
+ dev: true
+
+ /copy-anything/2.0.6:
+ resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
+ dependencies:
+ is-what: 3.14.1
+ dev: true
+
+ /copy-descriptor/0.1.1:
+ resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /core-js/3.21.1:
+ resolution: {integrity: sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==}
+ requiresBuild: true
+
+ /cors/2.8.5:
+ resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ object-assign: 4.1.1
+ vary: 1.1.2
+ dev: true
+
+ /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.1
+ parse-json: 4.0.0
+ dev: true
+
+ /cosmiconfig/7.0.1:
+ resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/parse-json': 4.0.0
+ import-fresh: 3.3.0
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ yaml: 1.10.2
+ 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-js/3.3.0:
+ resolution: {integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==}
+ dev: false
+
+ /css-select/4.2.1:
+ resolution: {integrity: sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==}
+ dependencies:
+ boolbase: 1.0.0
+ css-what: 5.1.0
+ domhandler: 4.3.0
+ domutils: 2.8.0
+ nth-check: 2.0.1
+ dev: true
+
+ /css-tree/1.1.3:
+ resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ mdn-data: 2.0.14
+ source-map: 0.6.1
+ dev: true
+
+ /css-what/5.1.0:
+ resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==}
+ engines: {node: '>= 6'}
+ dev: true
+
+ /csso/4.2.0:
+ resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ css-tree: 1.1.3
+ dev: true
+
+ /csstype/2.6.19:
+ resolution: {integrity: sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==}
+ dev: false
+
+ /dargs/7.0.0:
+ resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /date-fns/1.30.1:
+ resolution: {integrity: sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==}
+ dev: true
+
+ /dayjs/1.10.7:
+ resolution: {integrity: sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==}
+ dev: false
+
+ /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.3
+ dev: true
+
+ /debug/4.3.3:
+ resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+ dev: true
+
+ /decamelize-keys/1.1.0:
+ resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ decamelize: 1.2.0
+ map-obj: 1.0.1
+ 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
+
+ /dedent/0.7.0:
+ resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
+ dev: true
+
+ /deep-is/0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ dev: true
+
+ /deepmerge/1.3.2:
+ resolution: {integrity: sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /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/3.0.0:
+ resolution: {integrity: sha512-7yjqSoVSlJzA4t/VUwazuEagGeANEKB3f/aNI//06pfKgwoCb7f6Q1gETN1sZzYaj6chTQ0AhIwDiPdfOjko4A==}
+ engines: {node: '>=4'}
+ dependencies:
+ globby: 6.1.0
+ is-path-cwd: 1.0.0
+ is-path-in-cwd: 1.0.1
+ p-map: 1.2.0
+ pify: 3.0.0
+ rimraf: 2.7.1
+ dev: true
+
+ /delegate/3.2.0:
+ resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==}
+ dev: false
+
+ /dir-glob/3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-type: 4.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
+
+ /doctypes/1.1.0:
+ resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==}
+ dev: true
+
+ /dom-align/1.12.2:
+ resolution: {integrity: sha512-pHuazgqrsTFrGU2WLDdXxCFabkdQDx72ddkraZNih1KsMcN5qsRSTR9O4VJRlwTPCPb5COYg3LOfiMHHcPInHg==}
+ dev: false
+
+ /dom-scroll-into-view/2.0.1:
+ resolution: {integrity: sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==}
+ dev: false
+
+ /dom-serializer/0.2.2:
+ resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==}
+ dependencies:
+ domelementtype: 2.2.0
+ entities: 2.2.0
+ dev: true
+
+ /dom-serializer/1.3.2:
+ resolution: {integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==}
+ dependencies:
+ domelementtype: 2.2.0
+ domhandler: 4.3.0
+ entities: 2.2.0
+ dev: true
+
+ /domelementtype/1.3.1:
+ resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==}
+ dev: true
+
+ /domelementtype/2.2.0:
+ resolution: {integrity: sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==}
+ dev: true
+
+ /domhandler/2.4.2:
+ resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==}
+ dependencies:
+ domelementtype: 1.3.1
+ dev: true
+
+ /domhandler/4.3.0:
+ resolution: {integrity: sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==}
+ engines: {node: '>= 4'}
+ dependencies:
+ domelementtype: 2.2.0
+ dev: true
+
+ /domready/1.0.8:
+ resolution: {integrity: sha512-uIzsOJUNk+AdGE9a6VDeessoMCzF8RrZvJCX/W8QtyfgdR6Uofn/MvRonih3OtCO79b2VDzDOymuiABrQ4z3XA==}
+ 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
+
+ /domutils/2.8.0:
+ resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
+ dependencies:
+ dom-serializer: 1.3.2
+ domelementtype: 2.2.0
+ domhandler: 4.3.0
+ dev: true
+
+ /dot-case/3.0.4:
+ resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.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
+
+ /electron-to-chromium/1.4.71:
+ resolution: {integrity: sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw==}
+ dev: true
+
+ /elegant-spinner/1.0.1:
+ resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /element-plus/1.1.0-beta.24_vue@3.2.31:
+ resolution: {integrity: sha512-dmo61e/D6mwJVacMhxOMSPb5sZPt/FPsuQQfsOs1kJWkhGDmTlny/sZvgIQr1z0zh3pjlJadGAlNS+0nySPMmw==}
+ peerDependencies:
+ vue: ^3.2.0
+ dependencies:
+ '@element-plus/icons': 0.0.11
+ '@popperjs/core': 2.11.2
+ '@vueuse/core': 6.1.0_vue@3.2.31
+ async-validator: 4.0.7
+ dayjs: 1.10.7
+ lodash: 4.17.21
+ memoize-one: 5.2.1
+ normalize-wheel-es: 1.1.1
+ resize-observer-polyfill: 1.5.1
+ vue: 3.2.31
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ dev: false
+
+ /emmet/2.3.6:
+ resolution: {integrity: sha512-pLS4PBPDdxuUAmw7Me7+TcHbykTsBKN/S9XJbUOMFQrNv9MoshzyMFK/R57JBm94/6HSL4vHnDeEmxlC82NQ4A==}
+ dependencies:
+ '@emmetio/abbreviation': 2.2.3
+ '@emmetio/css-abbreviation': 2.1.4
+ dev: true
+
+ /emoji-regex/8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ dev: true
+
+ /emojis-list/3.0.0:
+ resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /end-of-stream/1.4.4:
+ resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+ dependencies:
+ once: 1.4.0
+ dev: true
+
+ /entities/1.1.2:
+ resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==}
+ dev: true
+
+ /entities/2.2.0:
+ resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
+ dev: true
+
+ /entities/3.0.1:
+ resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==}
+ engines: {node: '>=0.12'}
+ dev: true
+
+ /errno/0.1.8:
+ resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ prr: 1.0.1
+ dev: true
+ optional: true
+
+ /error-ex/1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+ dependencies:
+ is-arrayish: 0.2.1
+ dev: true
+
+ /es-module-lexer/0.9.3:
+ resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==}
+ dev: true
+
+ /esbuild-android-arm64/0.14.22:
+ resolution: {integrity: sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-darwin-64/0.14.22:
+ resolution: {integrity: sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-darwin-arm64/0.14.22:
+ resolution: {integrity: sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-freebsd-64/0.14.22:
+ resolution: {integrity: sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-freebsd-arm64/0.14.22:
+ resolution: {integrity: sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-32/0.14.22:
+ resolution: {integrity: sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-64/0.14.22:
+ resolution: {integrity: sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-arm/0.14.22:
+ resolution: {integrity: sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-arm64/0.14.22:
+ resolution: {integrity: sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-mips64le/0.14.22:
+ resolution: {integrity: sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-ppc64le/0.14.22:
+ resolution: {integrity: sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-riscv64/0.14.22:
+ resolution: {integrity: sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-s390x/0.14.22:
+ resolution: {integrity: sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-netbsd-64/0.14.22:
+ resolution: {integrity: sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-openbsd-64/0.14.22:
+ resolution: {integrity: sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-sunos-64/0.14.22:
+ resolution: {integrity: sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-32/0.14.22:
+ resolution: {integrity: sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-64/0.14.22:
+ resolution: {integrity: sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-arm64/0.14.22:
+ resolution: {integrity: sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild/0.14.22:
+ resolution: {integrity: sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ esbuild-android-arm64: 0.14.22
+ esbuild-darwin-64: 0.14.22
+ esbuild-darwin-arm64: 0.14.22
+ esbuild-freebsd-64: 0.14.22
+ esbuild-freebsd-arm64: 0.14.22
+ esbuild-linux-32: 0.14.22
+ esbuild-linux-64: 0.14.22
+ esbuild-linux-arm: 0.14.22
+ esbuild-linux-arm64: 0.14.22
+ esbuild-linux-mips64le: 0.14.22
+ esbuild-linux-ppc64le: 0.14.22
+ esbuild-linux-riscv64: 0.14.22
+ esbuild-linux-s390x: 0.14.22
+ esbuild-netbsd-64: 0.14.22
+ esbuild-openbsd-64: 0.14.22
+ esbuild-sunos-64: 0.14.22
+ esbuild-windows-32: 0.14.22
+ esbuild-windows-64: 0.14.22
+ esbuild-windows-arm64: 0.14.22
+ dev: true
+
+ /escalade/3.1.1:
+ resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /escape-string-regexp/1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+ dev: true
+
+ /escape-string-regexp/4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /eslint-config-prettier/8.3.0_eslint@8.9.0:
+ resolution: {integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=7.0.0'
+ dependencies:
+ eslint: 8.9.0
+ dev: true
+
+ /eslint-plugin-prettier/4.0.0_07b422646bb75d3db791621d4fdbc992:
+ resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==}
+ engines: {node: '>=6.0.0'}
+ peerDependencies:
+ eslint: '>=7.28.0'
+ eslint-config-prettier: '*'
+ prettier: '>=2.0.0'
+ peerDependenciesMeta:
+ eslint-config-prettier:
+ optional: true
+ dependencies:
+ eslint: 8.9.0
+ eslint-config-prettier: 8.3.0_eslint@8.9.0
+ prettier: 2.5.1
+ prettier-linter-helpers: 1.0.0
+ dev: true
+
+ /eslint-plugin-vue/8.4.1_eslint@8.9.0:
+ resolution: {integrity: sha512-nmWOhNmDx9TZ+yP9ZhezTkZUupSHsYA2TocRm+efPSXMOyFrVczVlaIuQcLBjCtI8CbkBiUQ3VcyQsjlIhDrhA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ eslint: 8.9.0
+ eslint-utils: 3.0.0_eslint@8.9.0
+ natural-compare: 1.4.0
+ semver: 7.3.5
+ vue-eslint-parser: 8.2.0_eslint@8.9.0
+ transitivePeerDependencies:
+ - supports-color
+ 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-scope/7.1.1:
+ resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+ dev: true
+
+ /eslint-utils/3.0.0_eslint@8.9.0:
+ resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
+ engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
+ peerDependencies:
+ eslint: '>=5'
+ dependencies:
+ eslint: 8.9.0
+ eslint-visitor-keys: 2.1.0
+ dev: true
+
+ /eslint-visitor-keys/2.1.0:
+ resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /eslint-visitor-keys/3.3.0:
+ resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: true
+
+ /eslint/8.9.0:
+ resolution: {integrity: sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ '@eslint/eslintrc': 1.1.0
+ '@humanwhocodes/config-array': 0.9.3
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.3
+ debug: 4.3.3
+ doctrine: 3.0.0
+ escape-string-regexp: 4.0.0
+ eslint-scope: 7.1.1
+ eslint-utils: 3.0.0_eslint@8.9.0
+ eslint-visitor-keys: 3.3.0
+ espree: 9.3.1
+ esquery: 1.4.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ functional-red-black-tree: 1.0.1
+ glob-parent: 6.0.2
+ globals: 13.12.1
+ ignore: 5.2.0
+ import-fresh: 3.3.0
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ js-yaml: 4.1.0
+ json-stable-stringify-without-jsonify: 1.0.1
+ levn: 0.4.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.1
+ regexpp: 3.2.0
+ strip-ansi: 6.0.1
+ strip-json-comments: 3.1.1
+ text-table: 0.2.0
+ v8-compile-cache: 2.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /espree/9.3.1:
+ resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ acorn: 8.7.0
+ acorn-jsx: 5.3.2_acorn@8.7.0
+ eslint-visitor-keys: 3.3.0
+ dev: true
+
+ /esprima/4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /esquery/1.4.0:
+ resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
+ engines: {node: '>=0.10'}
+ dependencies:
+ estraverse: 5.3.0
+ dev: true
+
+ /esrecurse/4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+ dependencies:
+ estraverse: 5.3.0
+ dev: true
+
+ /estraverse/4.3.0:
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
+ dev: true
+
+ /estraverse/5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+ dev: true
+
+ /estree-walker/2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ /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
+
+ /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.7
+ strip-eof: 1.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
+
+ /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
+
+ /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
+
+ /fast-deep-equal/3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ dev: true
+
+ /fast-diff/1.2.0:
+ resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==}
+ dev: true
+
+ /fast-glob/3.2.11:
+ resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
+ engines: {node: '>=8.6.0'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.4
+ dev: true
+
+ /fast-json-stable-stringify/2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ dev: true
+
+ /fast-levenshtein/2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+ dev: true
+
+ /fastq/1.13.0:
+ resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
+ dependencies:
+ reusify: 1.0.4
+ dev: true
+
+ /figures/1.7.0:
+ resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ object-assign: 4.1.1
+ dev: true
+
+ /figures/2.0.0:
+ resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==}
+ engines: {node: '>=4'}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ dev: true
+
+ /file-entry-cache/6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flat-cache: 3.0.4
+ 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
+
+ /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
+
+ /find-up/5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+ dev: true
+
+ /flat-cache/3.0.4:
+ resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flatted: 3.2.5
+ rimraf: 3.0.2
+ dev: true
+
+ /flatted/3.2.5:
+ resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==}
+ dev: true
+
+ /fn-name/2.0.1:
+ resolution: {integrity: sha512-oIDB1rXf3BUnn00bh2jVM0byuqr94rBh6g7ZfdKcbmp1we2GQtPzKdloyvBXHs+q3fvxB8EqX5ecFba3RwCSjA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /follow-redirects/1.14.8:
+ resolution: {integrity: sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+ dev: false
+
+ /for-in/1.0.2:
+ resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
+ engines: {node: '>=0.10.0'}
+ 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
+
+ /fs-extra/10.0.0:
+ resolution: {integrity: sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ graceful-fs: 4.2.9
+ jsonfile: 6.1.0
+ universalify: 2.0.0
+ 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.9
+ jsonfile: 6.1.0
+ universalify: 2.0.0
+ dev: true
+
+ /fs.realpath/1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ dev: 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
+
+ /g-status/2.0.2:
+ resolution: {integrity: sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==}
+ engines: {node: '>=6'}
+ dependencies:
+ arrify: 1.0.1
+ matcher: 1.1.1
+ simple-git: 1.132.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /gensync/1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /get-caller-file/2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+ dev: true
+
+ /get-intrinsic/1.1.1:
+ resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==}
+ dependencies:
+ function-bind: 1.1.1
+ has: 1.0.3
+ has-symbols: 1.0.2
+
+ /get-own-enumerable-property-symbols/3.0.2:
+ resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
+ dev: true
+
+ /get-stdin/6.0.0:
+ resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /get-stdin/8.0.0:
+ resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /get-stream/4.1.0:
+ resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==}
+ engines: {node: '>=6'}
+ dependencies:
+ pump: 3.0.0
+ dev: true
+
+ /get-value/2.0.6:
+ resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /git-raw-commits/2.0.11:
+ resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ dargs: 7.0.0
+ lodash: 4.17.21
+ meow: 8.1.2
+ split2: 3.2.2
+ through2: 4.0.2
+ dev: true
+
+ /glob-parent/5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
+ /glob-parent/6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
+ /glob/7.2.0:
+ resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: true
+
+ /global-dirs/0.1.1:
+ resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==}
+ engines: {node: '>=4'}
+ dependencies:
+ ini: 1.3.8
+ dev: true
+
+ /globals/11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /globals/13.12.1:
+ resolution: {integrity: sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.20.2
+ dev: true
+
+ /globby/11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.2.11
+ ignore: 5.2.0
+ merge2: 1.4.1
+ slash: 3.0.0
+ 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.2.0
+ object-assign: 4.1.1
+ pify: 2.3.0
+ pinkie-promise: 2.0.1
+ dev: true
+
+ /good-listener/1.2.2:
+ resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==}
+ dependencies:
+ delegate: 3.2.0
+ dev: false
+
+ /graceful-fs/4.2.9:
+ resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==}
+ dev: true
+
+ /hard-rejection/2.1.0:
+ resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
+ engines: {node: '>=6'}
+ 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/1.0.0:
+ resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==}
+ engines: {node: '>=0.10.0'}
+ 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.2:
+ resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==}
+ engines: {node: '>= 0.4'}
+
+ /has-tostringtag/1.0.0:
+ resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.0.2
+ dev: true
+
+ /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-sum/2.0.0:
+ resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==}
+ dev: true
+
+ /he/1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+ dev: true
+
+ /header-case/2.0.4:
+ resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==}
+ dependencies:
+ capital-case: 1.0.4
+ tslib: 2.3.1
+ dev: true
+
+ /hosted-git-info/2.8.9:
+ resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
+ dev: true
+
+ /hosted-git-info/4.1.0:
+ resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
+ engines: {node: '>=10'}
+ dependencies:
+ lru-cache: 6.0.0
+ dev: true
+
+ /html-tags/3.1.0:
+ resolution: {integrity: sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==}
+ engines: {node: '>=8'}
+ 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
+
+ /htmlparser2/7.2.0:
+ resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==}
+ dependencies:
+ domelementtype: 2.2.0
+ domhandler: 4.3.0
+ domutils: 2.8.0
+ entities: 3.0.1
+ dev: true
+
+ /husky/1.3.1:
+ resolution: {integrity: sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==}
+ engines: {node: '>=6'}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ cosmiconfig: 5.2.1
+ execa: 1.0.0
+ find-up: 3.0.0
+ get-stdin: 6.0.0
+ is-ci: 2.0.0
+ pkg-dir: 3.0.0
+ please-upgrade-node: 3.2.0
+ read-pkg: 4.0.1
+ run-node: 1.0.0
+ slash: 2.0.0
+ dev: true
+
+ /iconv-lite/0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+ optional: true
+
+ /ignore/4.0.6:
+ resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /ignore/5.2.0:
+ resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /image-size/0.5.5:
+ resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ dev: true
+
+ /immutable/4.0.0:
+ resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==}
+ 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-html-entry/1.11.1:
+ resolution: {integrity: sha512-O7mCUTwKdYU49/LH6nq1adWPnUlZQpKeGWIEcDq07KTcqP/v0jBLEIVc0oE0Mtlw3CEe0eeKGMyhl6LwfXCV7A==}
+ dependencies:
+ '@babel/runtime': 7.17.2
+ dev: false
+
+ /imurmurhash/0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+ dev: true
+
+ /indent-string/3.2.0:
+ resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /indent-string/4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+ 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.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ dev: true
+
+ /ini/1.3.8:
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+ 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-arrayish/0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+ dev: true
+
+ /is-binary-path/2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.2.0
+ dev: true
+
+ /is-buffer/1.1.6:
+ resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
+ dev: true
+
+ /is-ci/2.0.0:
+ resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==}
+ hasBin: true
+ dependencies:
+ ci-info: 2.0.0
+ dev: true
+
+ /is-core-module/2.8.1:
+ resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==}
+ 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-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-expression/4.0.0:
+ resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==}
+ dependencies:
+ acorn: 7.4.1
+ object-assign: 4.1.1
+ 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/1.0.0:
+ resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ number-is-nan: 1.0.1
+ 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/4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: true
+
+ /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/1.0.1:
+ resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-obj/2.0.0:
+ resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-observable/1.1.0:
+ resolution: {integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==}
+ engines: {node: '>=4'}
+ dependencies:
+ symbol-observable: 1.2.0
+ dev: true
+
+ /is-path-cwd/1.0.0:
+ resolution: {integrity: sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-path-in-cwd/1.0.1:
+ resolution: {integrity: sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-path-inside: 1.0.1
+ dev: true
+
+ /is-path-inside/1.0.1:
+ resolution: {integrity: sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==}
+ engines: {node: '>=0.10.0'}
+ 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-plain-object/3.0.1:
+ resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /is-promise/2.2.2:
+ resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==}
+ dev: true
+
+ /is-regex/1.1.4:
+ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ has-tostringtag: 1.0.0
+ dev: true
+
+ /is-regexp/1.0.0:
+ resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-stream/1.1.0:
+ resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-text-path/1.0.1:
+ resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ text-extensions: 1.9.0
+ dev: true
+
+ /is-what/3.14.1:
+ resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
+ dev: true
+
+ /is-windows/1.0.2:
+ resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /isarray/1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+ dev: true
+
+ /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
+
+ /js-base64/2.6.4:
+ resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==}
+ dev: true
+
+ /js-cookie/2.2.1:
+ resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==}
+ dev: false
+
+ /js-stringify/1.0.2:
+ resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==}
+ dev: true
+
+ /js-tokens/4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ /js-yaml/3.14.1:
+ resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+ dev: true
+
+ /js-yaml/4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+ dependencies:
+ argparse: 2.0.1
+ 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==}
+ dev: true
+
+ /json-stable-stringify-without-jsonify/1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ dev: true
+
+ /json5/1.0.1:
+ resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.5
+ dev: true
+
+ /json5/2.2.0:
+ resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.5
+ dev: true
+
+ /jsonc-parser/2.3.1:
+ resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==}
+ dev: true
+
+ /jsonc-parser/3.0.0:
+ resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==}
+ dev: true
+
+ /jsonfile/6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+ dependencies:
+ universalify: 2.0.0
+ optionalDependencies:
+ graceful-fs: 4.2.9
+ dev: true
+
+ /jsonparse/1.3.1:
+ resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
+ engines: {'0': node >= 0.2.0}
+ dev: true
+
+ /jstransformer/1.0.0:
+ resolution: {integrity: sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==}
+ dependencies:
+ is-promise: 2.2.2
+ promise: 7.3.1
+ 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
+
+ /less/4.1.2:
+ resolution: {integrity: sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ copy-anything: 2.0.6
+ parse-node-version: 1.0.1
+ tslib: 2.3.1
+ optionalDependencies:
+ errno: 0.1.8
+ graceful-fs: 4.2.9
+ image-size: 0.5.5
+ make-dir: 2.1.0
+ mime: 1.6.0
+ needle: 2.9.1
+ source-map: 0.6.1
+ dev: true
+
+ /levn/0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ dev: true
+
+ /lines-and-columns/1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ dev: true
+
+ /lint-staged/8.2.1:
+ resolution: {integrity: sha512-n0tDGR/rTCgQNwXnUf/eWIpPNddGWxC32ANTNYsj2k02iZb7Cz5ox2tytwBu+2r0zDXMEMKw7Y9OD/qsav561A==}
+ hasBin: true
+ dependencies:
+ chalk: 2.4.2
+ commander: 2.20.3
+ cosmiconfig: 5.2.1
+ debug: 3.2.7
+ dedent: 0.7.0
+ del: 3.0.0
+ execa: 1.0.0
+ g-status: 2.0.2
+ is-glob: 4.0.3
+ is-windows: 1.0.2
+ listr: 0.14.3
+ listr-update-renderer: 0.5.0_listr@0.14.3
+ lodash: 4.17.21
+ log-symbols: 2.2.0
+ micromatch: 3.1.10
+ npm-which: 3.0.1
+ p-map: 1.2.0
+ path-is-inside: 1.0.2
+ pify: 3.0.0
+ please-upgrade-node: 3.2.0
+ staged-git-files: 1.1.2
+ string-argv: 0.0.2
+ stringify-object: 3.3.0
+ yup: 0.27.0
+ transitivePeerDependencies:
+ - supports-color
+ - zen-observable
+ dev: true
+
+ /listr-silent-renderer/1.1.1:
+ resolution: {integrity: sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /listr-update-renderer/0.5.0_listr@0.14.3:
+ resolution: {integrity: sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ listr: ^0.14.2
+ dependencies:
+ chalk: 1.1.3
+ cli-truncate: 0.2.1
+ elegant-spinner: 1.0.1
+ figures: 1.7.0
+ indent-string: 3.2.0
+ listr: 0.14.3
+ log-symbols: 1.0.2
+ log-update: 2.3.0
+ strip-ansi: 3.0.1
+ dev: true
+
+ /listr-verbose-renderer/0.5.0:
+ resolution: {integrity: sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==}
+ engines: {node: '>=4'}
+ dependencies:
+ chalk: 2.4.2
+ cli-cursor: 2.1.0
+ date-fns: 1.30.1
+ figures: 2.0.0
+ dev: true
+
+ /listr/0.14.3:
+ resolution: {integrity: sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==}
+ engines: {node: '>=6'}
+ dependencies:
+ '@samverschueren/stream-to-observable': 0.3.1_rxjs@6.6.7
+ is-observable: 1.1.0
+ is-promise: 2.2.2
+ is-stream: 1.1.0
+ listr-silent-renderer: 1.1.1
+ listr-update-renderer: 0.5.0_listr@0.14.3
+ listr-verbose-renderer: 0.5.0
+ p-map: 2.1.0
+ rxjs: 6.6.7
+ transitivePeerDependencies:
+ - zen-observable
+ 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
+
+ /local-pkg/0.4.1:
+ resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==}
+ engines: {node: '>=14'}
+ 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
+
+ /locate-path/6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-locate: 5.0.0
+ dev: true
+
+ /lodash-es/4.17.21:
+ resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
+ dev: false
+
+ /lodash.merge/4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ dev: true
+
+ /lodash/4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ /log-symbols/1.0.2:
+ resolution: {integrity: sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ chalk: 1.1.3
+ dev: true
+
+ /log-symbols/2.2.0:
+ resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==}
+ engines: {node: '>=4'}
+ dependencies:
+ chalk: 2.4.2
+ dev: true
+
+ /log-update/2.3.0:
+ resolution: {integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==}
+ engines: {node: '>=4'}
+ dependencies:
+ ansi-escapes: 3.2.0
+ cli-cursor: 2.1.0
+ wrap-ansi: 3.0.1
+ 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/2.0.2:
+ resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
+ dependencies:
+ tslib: 2.3.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
+
+ /magic-string/0.25.7:
+ resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==}
+ dependencies:
+ sourcemap-codec: 1.4.8
+
+ /make-dir/2.1.0:
+ resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
+ engines: {node: '>=6'}
+ requiresBuild: true
+ dependencies:
+ pify: 4.0.1
+ semver: 5.7.1
+ dev: true
+ optional: true
+
+ /map-cache/0.2.2:
+ resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /map-obj/1.0.1:
+ resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /map-obj/4.3.0:
+ resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
+ engines: {node: '>=8'}
+ 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
+
+ /matcher/1.1.1:
+ resolution: {integrity: sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==}
+ engines: {node: '>=4'}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ dev: true
+
+ /mdn-data/2.0.14:
+ resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
+ dev: true
+
+ /memoize-one/5.2.1:
+ resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==}
+ dev: false
+
+ /meow/8.1.2:
+ resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/minimist': 1.2.2
+ camelcase-keys: 6.2.2
+ decamelize-keys: 1.1.0
+ hard-rejection: 2.1.0
+ minimist-options: 4.1.0
+ normalize-package-data: 3.0.3
+ read-pkg-up: 7.0.1
+ redent: 3.0.0
+ trim-newlines: 3.0.1
+ type-fest: 0.18.1
+ yargs-parser: 20.2.9
+ dev: true
+
+ /merge-options/1.0.1:
+ resolution: {integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==}
+ engines: {node: '>=4'}
+ dependencies:
+ is-plain-obj: 1.1.0
+ dev: true
+
+ /merge2/1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /micromatch/3.1.0:
+ resolution: {integrity: sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-diff: 4.0.0
+ array-unique: 0.3.2
+ braces: 2.3.2
+ define-property: 1.0.0
+ extend-shallow: 2.0.1
+ extglob: 2.0.4
+ fragment-cache: 0.2.1
+ kind-of: 5.1.0
+ 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/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.1
+ dev: true
+
+ /mime/1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /mimic-fn/1.2.0:
+ resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /min-indent/1.0.1:
+ resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /minimatch/3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ dependencies:
+ brace-expansion: 1.1.11
+ dev: true
+
+ /minimist-options/4.1.0:
+ resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
+ engines: {node: '>= 6'}
+ dependencies:
+ arrify: 1.0.1
+ is-plain-obj: 1.1.0
+ kind-of: 6.0.3
+ dev: true
+
+ /minimist/1.2.5:
+ resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
+ dev: true
+
+ /mitt/1.1.2:
+ resolution: {integrity: sha512-3btxP0O9iGADGWAkteQ8mzDtEspZqu4I32y4GZYCV5BrwtzdcRpF4dQgNdJadCrbBx7Lu6Sq9AVrerMHR0Hkmw==}
+ 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
+
+ /moment/2.29.1:
+ resolution: {integrity: sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==}
+ dev: false
+
+ /ms/2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+ dev: true
+
+ /ms/2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+ dev: true
+
+ /ms/2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ dev: true
+
+ /nanoid/3.3.1:
+ resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: 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
+
+ /nanopop/2.1.0:
+ resolution: {integrity: sha512-jGTwpFRexSH+fxappnGQtN9dspgE2ipa1aOjtR24igG0pv6JCxImIAmrLRHX+zUF5+1wtsFVbKyfP51kIGAVNw==}
+ dev: false
+
+ /natural-compare/1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ dev: true
+
+ /needle/2.9.1:
+ resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==}
+ engines: {node: '>= 4.4.x'}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ debug: 3.2.7
+ iconv-lite: 0.4.24
+ sax: 1.2.4
+ dev: true
+ optional: true
+
+ /nice-try/1.0.5:
+ resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
+ dev: true
+
+ /no-case/3.0.4:
+ resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
+ dependencies:
+ lower-case: 2.0.2
+ tslib: 2.3.1
+ dev: true
+
+ /node-releases/2.0.2:
+ resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==}
+ dev: true
+
+ /normalize-package-data/2.5.0:
+ resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.22.0
+ semver: 5.7.1
+ validate-npm-package-license: 3.0.4
+ dev: true
+
+ /normalize-package-data/3.0.3:
+ resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
+ engines: {node: '>=10'}
+ dependencies:
+ hosted-git-info: 4.1.0
+ is-core-module: 2.8.1
+ semver: 7.3.5
+ validate-npm-package-license: 3.0.4
+ dev: true
+
+ /normalize-path/3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /normalize-wheel-es/1.1.1:
+ resolution: {integrity: sha512-157VNH4CngrcsvF8xOVOe22cwniIR3nxSltdctvQeHZj8JttEeOXffK28jucWfWBXs0QNetAumjc1GiInnwX4w==}
+ dev: false
+
+ /npm-path/2.0.4:
+ resolution: {integrity: sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==}
+ engines: {node: '>=0.8'}
+ hasBin: true
+ dependencies:
+ which: 1.3.1
+ dev: true
+
+ /npm-run-path/2.0.2:
+ resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==}
+ engines: {node: '>=4'}
+ dependencies:
+ path-key: 2.0.1
+ dev: true
+
+ /npm-which/3.0.1:
+ resolution: {integrity: sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+ dependencies:
+ commander: 2.20.3
+ npm-path: 2.0.4
+ which: 1.3.1
+ dev: true
+
+ /nprogress/0.2.0:
+ resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
+ dev: false
+
+ /nth-check/2.0.1:
+ resolution: {integrity: sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==}
+ dependencies:
+ boolbase: 1.0.0
+ dev: true
+
+ /number-is-nan/1.0.1:
+ resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /object-assign/4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /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-inspect/1.12.0:
+ resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==}
+ dev: false
+
+ /object-visit/1.0.1:
+ resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isobject: 3.0.1
+ 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
+
+ /omit.js/2.0.2:
+ resolution: {integrity: sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==}
+ dev: false
+
+ /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
+
+ /optionator/0.9.1:
+ resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.3
+ dev: true
+
+ /p-finally/1.0.0:
+ resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /p-limit/2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
+ dependencies:
+ p-try: 2.2.0
+ dev: true
+
+ /p-limit/3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ yocto-queue: 0.1.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-locate/5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-limit: 3.1.0
+ dev: true
+
+ /p-map/1.2.0:
+ resolution: {integrity: sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /p-map/2.1.0:
+ resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /p-try/2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /param-case/3.0.4:
+ resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
+ dependencies:
+ dot-case: 3.0.4
+ tslib: 2.3.1
+ 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-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.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/code-frame': 7.16.7
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+ dev: true
+
+ /parse-node-version/1.0.1:
+ resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
+ engines: {node: '>= 0.10'}
+ dev: true
+
+ /pascal-case/3.1.2:
+ resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.3.1
+ dev: true
+
+ /pascalcase/0.1.1:
+ resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /path-case/3.0.4:
+ resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==}
+ dependencies:
+ dot-case: 3.0.4
+ tslib: 2.3.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.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ dev: true
+
+ /path-type/4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /pathe/0.2.0:
+ resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==}
+ dev: true
+
+ /picocolors/1.0.0:
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+
+ /picomatch/2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ 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
+ optional: 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/3.0.0:
+ resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==}
+ engines: {node: '>=6'}
+ dependencies:
+ find-up: 3.0.0
+ dev: true
+
+ /please-upgrade-node/3.2.0:
+ resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==}
+ dependencies:
+ semver-compare: 1.0.0
+ dev: true
+
+ /posix-character-classes/0.1.1:
+ resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /postcss-prefix-selector/1.14.0_postcss@5.2.18:
+ resolution: {integrity: sha512-8d5fiBQZWMtGWH/7ewEeo6RnBNyT2kLD5wTIfV2oHYqH4hjiofg/rP5X3SUwnqOINzE4mM/K/UOAiNrIaKzd4w==}
+ peerDependencies:
+ postcss: 7.x || 8.x
+ dependencies:
+ postcss: 5.2.18
+ dev: true
+
+ /postcss/5.2.18:
+ resolution: {integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==}
+ engines: {node: '>=0.12'}
+ dependencies:
+ chalk: 1.1.3
+ js-base64: 2.6.4
+ source-map: 0.5.7
+ supports-color: 3.2.3
+ dev: true
+
+ /postcss/8.4.6:
+ resolution: {integrity: sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.1
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+
+ /posthtml-parser/0.2.1:
+ resolution: {integrity: sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==}
+ dependencies:
+ htmlparser2: 3.10.1
+ isobject: 2.1.0
+ dev: true
+
+ /posthtml-rename-id/1.0.12:
+ resolution: {integrity: sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ dev: true
+
+ /posthtml-render/1.4.0:
+ resolution: {integrity: sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /posthtml-svg-mode/1.0.3:
+ resolution: {integrity: sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==}
+ dependencies:
+ merge-options: 1.0.1
+ posthtml: 0.9.2
+ posthtml-parser: 0.2.1
+ posthtml-render: 1.4.0
+ dev: true
+
+ /posthtml/0.9.2:
+ resolution: {integrity: sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ posthtml-parser: 0.2.1
+ posthtml-render: 1.4.0
+ dev: true
+
+ /prelude-ls/1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+ dev: true
+
+ /prettier-linter-helpers/1.0.0:
+ resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ fast-diff: 1.2.0
+ dev: true
+
+ /prettier/2.5.1:
+ resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ dev: true
+
+ /promise/7.3.1:
+ resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==}
+ dependencies:
+ asap: 2.0.6
+ dev: true
+
+ /property-expr/1.5.1:
+ resolution: {integrity: sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==}
+ dev: true
+
+ /prr/1.0.1:
+ resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
+ dev: true
+ optional: true
+
+ /pug-attrs/3.0.0:
+ resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==}
+ dependencies:
+ constantinople: 4.0.1
+ js-stringify: 1.0.2
+ pug-runtime: 3.0.1
+ dev: true
+
+ /pug-code-gen/3.0.2:
+ resolution: {integrity: sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==}
+ dependencies:
+ constantinople: 4.0.1
+ doctypes: 1.1.0
+ js-stringify: 1.0.2
+ pug-attrs: 3.0.0
+ pug-error: 2.0.0
+ pug-runtime: 3.0.1
+ void-elements: 3.1.0
+ with: 7.0.2
+ dev: true
+
+ /pug-error/2.0.0:
+ resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==}
+ dev: true
+
+ /pug-filters/4.0.0:
+ resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==}
+ dependencies:
+ constantinople: 4.0.1
+ jstransformer: 1.0.0
+ pug-error: 2.0.0
+ pug-walk: 2.0.0
+ resolve: 1.22.0
+ dev: true
+
+ /pug-lexer/5.0.1:
+ resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==}
+ dependencies:
+ character-parser: 2.2.0
+ is-expression: 4.0.0
+ pug-error: 2.0.0
+ dev: true
+
+ /pug-linker/4.0.0:
+ resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==}
+ dependencies:
+ pug-error: 2.0.0
+ pug-walk: 2.0.0
+ dev: true
+
+ /pug-load/3.0.0:
+ resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==}
+ dependencies:
+ object-assign: 4.1.1
+ pug-walk: 2.0.0
+ dev: true
+
+ /pug-parser/6.0.0:
+ resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==}
+ dependencies:
+ pug-error: 2.0.0
+ token-stream: 1.0.0
+ dev: true
+
+ /pug-runtime/3.0.1:
+ resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==}
+ dev: true
+
+ /pug-strip-comments/2.0.0:
+ resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==}
+ dependencies:
+ pug-error: 2.0.0
+ dev: true
+
+ /pug-walk/2.0.0:
+ resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==}
+ dev: true
+
+ /pug/3.0.2:
+ resolution: {integrity: sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==}
+ dependencies:
+ pug-code-gen: 3.0.2
+ pug-filters: 4.0.0
+ pug-lexer: 5.0.1
+ pug-linker: 4.0.0
+ pug-load: 3.0.0
+ pug-parser: 6.0.0
+ pug-runtime: 3.0.1
+ pug-strip-comments: 2.0.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
+
+ /punycode/2.1.1:
+ resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /q/1.5.1:
+ resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==}
+ engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
+ dev: true
+
+ /qiankun/2.6.3:
+ resolution: {integrity: sha512-h1NIokwjdt508HNPcWBdzoYFDJvhbpUUlFSa5dDkpJYVCl55iqqHgdyi1YayinmLmr/9s/zD+WQv+A2mbzkMQw==}
+ dependencies:
+ '@babel/runtime': 7.17.2
+ import-html-entry: 1.11.1
+ lodash: 4.17.21
+ single-spa: 5.9.3
+ tslib: 1.14.1
+ dev: false
+
+ /qs/6.10.3:
+ resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==}
+ engines: {node: '>=0.6'}
+ dependencies:
+ side-channel: 1.0.4
+ 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
+
+ /queue-microtask/1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ dev: true
+
+ /quick-lru/4.0.1:
+ resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /read-pkg-up/7.0.1:
+ resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 4.1.0
+ read-pkg: 5.2.0
+ type-fest: 0.8.1
+ dev: true
+
+ /read-pkg/4.0.1:
+ resolution: {integrity: sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==}
+ engines: {node: '>=6'}
+ dependencies:
+ normalize-package-data: 2.5.0
+ parse-json: 4.0.0
+ pify: 3.0.0
+ dev: true
+
+ /read-pkg/5.2.0:
+ resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/normalize-package-data': 2.4.1
+ normalize-package-data: 2.5.0
+ parse-json: 5.2.0
+ type-fest: 0.6.0
+ dev: true
+
+ /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
+ dev: true
+
+ /readdirp/3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.1
+ dev: true
+
+ /redent/3.0.0:
+ resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
+ engines: {node: '>=8'}
+ dependencies:
+ indent-string: 4.0.0
+ strip-indent: 3.0.0
+ dev: true
+
+ /regenerator-runtime/0.13.9:
+ resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==}
+
+ /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
+
+ /regexpp/3.2.0:
+ resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /repeat-element/1.1.4:
+ resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
+ 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
+
+ /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
+
+ /resize-observer-polyfill/1.5.1:
+ resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
+ dev: false
+
+ /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-from/5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /resolve-global/1.0.0:
+ resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==}
+ engines: {node: '>=8'}
+ dependencies:
+ global-dirs: 0.1.1
+ dev: true
+
+ /resolve-url/0.2.1:
+ resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
+ deprecated: https://github.com/lydell/resolve-url#deprecated
+ dev: true
+
+ /resolve/1.22.0:
+ resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.8.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ 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.7
+ dev: true
+
+ /ret/0.1.15:
+ resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
+ engines: {node: '>=0.12'}
+ dev: true
+
+ /reusify/1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ dev: true
+
+ /rimraf/2.7.1:
+ resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
+ hasBin: true
+ dependencies:
+ glob: 7.2.0
+ dev: true
+
+ /rimraf/3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ hasBin: true
+ dependencies:
+ glob: 7.2.0
+ dev: true
+
+ /rollup/2.67.2:
+ resolution: {integrity: sha512-hoEiBWwZtf1QdK3jZIq59L0FJj4Fiv4RplCO4pvCRC86qsoFurWB4hKQIjoRf3WvJmk5UZ9b0y5ton+62fC7Tw==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /run-node/1.0.0:
+ resolution: {integrity: sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /run-parallel/1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ dependencies:
+ queue-microtask: 1.2.3
+ dev: true
+
+ /rxjs/6.6.7:
+ resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==}
+ engines: {npm: '>=2.0.0'}
+ dependencies:
+ tslib: 1.14.1
+ dev: true
+
+ /safe-buffer/5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+ dev: true
+
+ /safe-buffer/5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+ dev: true
+
+ /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==}
+ dev: true
+ optional: true
+
+ /sass/1.49.8:
+ resolution: {integrity: sha512-NoGOjvDDOU9og9oAxhRnap71QaTjjlzrvLnKecUJ3GxhaQBrV6e7gPuSPF28u1OcVAArVojPAe4ZhOXwwC4tGw==}
+ engines: {node: '>=12.0.0'}
+ hasBin: true
+ dependencies:
+ chokidar: 3.5.3
+ immutable: 4.0.0
+ source-map-js: 1.0.2
+ dev: true
+
+ /sax/1.2.4:
+ resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
+ dev: true
+ optional: true
+
+ /scroll-into-view-if-needed/2.2.29:
+ resolution: {integrity: sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==}
+ dependencies:
+ compute-scroll-into-view: 1.0.17
+ dev: false
+
+ /select/1.1.2:
+ resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==}
+ dev: false
+
+ /semver-compare/1.0.0:
+ resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
+ 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.3.2:
+ resolution: {integrity: sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==}
+ engines: {node: '>=10'}
+ 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
+
+ /sentence-case/3.0.4:
+ resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.3.1
+ upper-case-first: 2.0.2
+ 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
+
+ /shallow-equal/1.2.1:
+ resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==}
+ 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
+
+ /side-channel/1.0.4:
+ resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
+ dependencies:
+ call-bind: 1.0.2
+ get-intrinsic: 1.1.1
+ object-inspect: 1.12.0
+ dev: false
+
+ /signal-exit/3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+ dev: true
+
+ /simple-git/1.132.0:
+ resolution: {integrity: sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg==}
+ dependencies:
+ debug: 4.3.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /single-spa/5.9.3:
+ resolution: {integrity: sha512-qMGraRzIBsodV6569Fob4cQ4/yQNrcZ5Achh3SAQDljmqUtjAZ7BAA7GAyO/l5eizb7GtTmVq9Di7ORyKw82CQ==}
+ dev: false
+
+ /slash/2.0.0:
+ resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /slash/3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /slice-ansi/0.0.4:
+ resolution: {integrity: sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /snake-case/3.0.4:
+ resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
+ dependencies:
+ dot-case: 3.0.4
+ tslib: 2.3.1
+ dev: true
+
+ /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
+
+ /source-map-js/1.0.2:
+ resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+ engines: {node: '>=0.10.0'}
+
+ /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.1
+ urix: 0.1.0
+ dev: true
+
+ /source-map-url/0.4.1:
+ resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
+ 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'}
+
+ /sourcemap-codec/1.4.8:
+ resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+
+ /spdx-correct/3.1.1:
+ resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==}
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.11
+ 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.11
+ dev: true
+
+ /spdx-license-ids/3.0.11:
+ resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==}
+ dev: true
+
+ /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
+
+ /split2/3.2.2:
+ resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==}
+ dependencies:
+ readable-stream: 3.6.0
+ dev: true
+
+ /sprintf-js/1.0.3:
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+ dev: true
+
+ /stable/0.1.8:
+ resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
+ dev: true
+
+ /staged-git-files/1.1.2:
+ resolution: {integrity: sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA==}
+ hasBin: true
+ 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
+
+ /strict-uri-encode/1.1.0:
+ resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /string-argv/0.0.2:
+ resolution: {integrity: sha512-p6/Mqq0utTQWUeGMi/m0uBtlLZEwXSY3+mXzeRRqw7fz5ezUb28Wr0R99NlfbWaMmL/jCyT9be4jpn7Yz8IO8w==}
+ engines: {node: '>=0.6.19'}
+ dev: true
+
+ /string-width/1.0.2:
+ resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ code-point-at: 1.1.0
+ is-fullwidth-code-point: 1.0.0
+ strip-ansi: 3.0.1
+ 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/4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+ dev: true
+
+ /string_decoder/1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: true
+
+ /stringify-object/3.3.0:
+ resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
+ engines: {node: '>=4'}
+ dependencies:
+ get-own-enumerable-property-symbols: 3.0.2
+ is-obj: 1.0.1
+ is-regexp: 1.0.0
+ dev: true
+
+ /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/6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-regex: 5.0.1
+ dev: true
+
+ /strip-eof/1.0.0:
+ resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /strip-indent/3.0.0:
+ resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ min-indent: 1.0.1
+ dev: true
+
+ /strip-json-comments/3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /supports-color/2.0.0:
+ resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==}
+ engines: {node: '>=0.8.0'}
+ dev: true
+
+ /supports-color/3.2.3:
+ resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==}
+ engines: {node: '>=0.8.0'}
+ dependencies:
+ has-flag: 1.0.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/7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+ dev: true
+
+ /supports-preserve-symlinks-flag/1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /svg-baker-runtime/1.4.7:
+ resolution: {integrity: sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw==}
+ dependencies:
+ deepmerge: 1.3.2
+ mitt: 1.1.2
+ svg-baker: 1.7.0
+ dev: true
+
+ /svg-baker/1.7.0:
+ resolution: {integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==}
+ dependencies:
+ bluebird: 3.7.2
+ clone: 2.1.2
+ he: 1.2.0
+ image-size: 0.5.5
+ loader-utils: 1.4.0
+ merge-options: 1.0.1
+ micromatch: 3.1.0
+ postcss: 5.2.18
+ postcss-prefix-selector: 1.14.0_postcss@5.2.18
+ posthtml-rename-id: 1.0.12
+ posthtml-svg-mode: 1.0.3
+ query-string: 4.3.4
+ traverse: 0.6.6
+ dev: true
+
+ /svg-sprite-loader/6.0.11:
+ resolution: {integrity: sha512-TedsTf8wsHH6HgdwKjUveDZRC6q5gPloYV8A8/zZaRWP929J7x6TzQ6MvZFl+YYDJuJ0Akyuu/vNVJ+fbPuYXg==}
+ engines: {node: '>=6'}
+ dependencies:
+ bluebird: 3.7.2
+ deepmerge: 1.3.2
+ domready: 1.0.8
+ escape-string-regexp: 1.0.5
+ loader-utils: 1.4.0
+ svg-baker: 1.7.0
+ svg-baker-runtime: 1.4.7
+ url-slug: 2.0.0
+ dev: true
+
+ /svg-tags/1.0.0:
+ resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
+ dev: true
+
+ /svgo/2.8.0:
+ resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ dependencies:
+ '@trysound/sax': 0.2.0
+ commander: 7.2.0
+ css-select: 4.2.1
+ css-tree: 1.1.3
+ csso: 4.2.0
+ picocolors: 1.0.0
+ stable: 0.1.8
+ dev: true
+
+ /symbol-observable/1.2.0:
+ resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /synchronous-promise/2.0.15:
+ resolution: {integrity: sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==}
+ dev: true
+
+ /text-extensions/1.9.0:
+ resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==}
+ engines: {node: '>=0.10'}
+ dev: true
+
+ /text-table/0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+ dev: true
+
+ /through/2.3.8:
+ resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
+ dev: true
+
+ /through2/4.0.2:
+ resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==}
+ dependencies:
+ readable-stream: 3.6.0
+ dev: true
+
+ /tiny-emitter/2.1.0:
+ resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==}
+ dev: false
+
+ /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
+
+ /token-stream/1.0.0:
+ resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==}
+ dev: true
+
+ /toposort/2.0.2:
+ resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==}
+ dev: true
+
+ /traverse/0.6.6:
+ resolution: {integrity: sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==}
+ dev: true
+
+ /trim-newlines/3.0.1:
+ resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /tslib/1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+
+ /tslib/2.3.1:
+ resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==}
+ dev: true
+
+ /tsutils/3.21.0_typescript@4.5.5:
+ 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.5.5
+ dev: true
+
+ /type-check/0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ dev: true
+
+ /type-fest/0.18.1:
+ resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /type-fest/0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+ 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
+
+ /typescript/4.5.5:
+ resolution: {integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+ dev: true
+
+ /unidecode/0.1.8:
+ resolution: {integrity: sha512-SdoZNxCWpN2tXTCrGkPF/0rL2HEq+i2gwRG1ReBvx8/0yTzC3enHfugOf8A9JBShVwwrRIkLX0YcDUGbzjbVCA==}
+ engines: {node: '>= 0.4.12'}
+ 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
+
+ /universalify/2.0.0:
+ resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
+ engines: {node: '>= 10.0.0'}
+ dev: true
+
+ /unplugin-vue-components/0.17.18_vite@2.8.3+vue@3.2.31:
+ resolution: {integrity: sha512-4wvJnSShTXCnZpO1G6h0DlHjBXap0JqzFyU84guMT6EH0shUZZ3TAta4pDa8nNeWAtcJVTF9uQswePq1elhpKQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@babel/parser': ^7.15.8
+ '@babel/traverse': ^7.15.4
+ vue: 2 || 3
+ peerDependenciesMeta:
+ '@babel/parser':
+ optional: true
+ '@babel/traverse':
+ optional: true
+ dependencies:
+ '@antfu/utils': 0.4.0
+ '@rollup/pluginutils': 4.1.2
+ chokidar: 3.5.3
+ debug: 4.3.3
+ fast-glob: 3.2.11
+ local-pkg: 0.4.1
+ magic-string: 0.25.7
+ minimatch: 3.1.2
+ resolve: 1.22.0
+ unplugin: 0.3.2_vite@2.8.3
+ vue: 3.2.31
+ transitivePeerDependencies:
+ - esbuild
+ - rollup
+ - supports-color
+ - vite
+ - webpack
+ dev: true
+
+ /unplugin/0.3.2_vite@2.8.3:
+ resolution: {integrity: sha512-5d0DMYNKZU+S9eZUiBfw6Co32eRg8myUgBPoWSqG/wDFCUE/WznfSsJnZWi1P9l69x4uLJqt2qVq1xW/AsXFrw==}
+ peerDependencies:
+ esbuild: '>=0.13'
+ rollup: ^2.50.0
+ vite: ^2.3.0
+ webpack: 4 || 5
+ peerDependenciesMeta:
+ esbuild:
+ optional: true
+ rollup:
+ optional: true
+ vite:
+ optional: true
+ webpack:
+ optional: true
+ dependencies:
+ vite: 2.8.3_less@4.1.2+sass@1.49.8
+ webpack-virtual-modules: 0.4.3
+ 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/2.0.1:
+ resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /upper-case-first/2.0.2:
+ resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==}
+ dependencies:
+ tslib: 2.3.1
+ dev: true
+
+ /upper-case/2.0.2:
+ resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==}
+ dependencies:
+ tslib: 2.3.1
+ dev: true
+
+ /uri-js/4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ dependencies:
+ punycode: 2.1.1
+ dev: true
+
+ /urix/0.1.0:
+ resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
+ deprecated: Please see https://github.com/lydell/urix#deprecated
+ dev: true
+
+ /url-slug/2.0.0:
+ resolution: {integrity: sha512-aiNmSsVgrjCiJ2+KWPferjT46YFKoE8i0YX04BlMVDue022Xwhg/zYlnZ6V9/mP3p8Wj7LEp0myiTkC/p6sxew==}
+ dependencies:
+ unidecode: 0.1.8
+ 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==}
+ dev: true
+
+ /v8-compile-cache/2.3.0:
+ resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
+ 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
+
+ /vite-plugin-style-import/1.4.1_vite@2.8.3:
+ resolution: {integrity: sha512-lJCRvm7+So0hHdnSJiJPg9gD5mxtL6YY0jmhEph+k7ArpsyvqOh6han2kG5htbWWDZxHkUN9d1BuTFL//yCLLQ==}
+ peerDependencies:
+ vite: '>=2.0.0'
+ dependencies:
+ '@rollup/pluginutils': 4.1.2
+ change-case: 4.1.2
+ debug: 4.3.3
+ es-module-lexer: 0.9.3
+ fs-extra: 10.0.0
+ magic-string: 0.25.7
+ vite: 2.8.3_less@4.1.2+sass@1.49.8
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /vite-plugin-svg-icons/2.0.1_vite@2.8.3:
+ resolution: {integrity: sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==}
+ peerDependencies:
+ vite: '>=2.0.0'
+ dependencies:
+ '@types/svgo': 2.6.2
+ cors: 2.8.5
+ debug: 4.3.3
+ etag: 1.8.1
+ fs-extra: 10.0.0
+ pathe: 0.2.0
+ svg-baker: 1.7.0
+ svgo: 2.8.0
+ vite: 2.8.3_less@4.1.2+sass@1.49.8
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /vite/2.8.3_less@4.1.2+sass@1.49.8:
+ resolution: {integrity: sha512-967klrEiG7HEsN7fQYYVETs5495Iu6GpI7YyxoO5yVTJCRxjV8HhWgNWKgrbazjoOB9DQuztL53/nUoNqHNsWg==}
+ engines: {node: '>=12.2.0'}
+ hasBin: true
+ peerDependencies:
+ less: '*'
+ sass: '*'
+ stylus: '*'
+ peerDependenciesMeta:
+ less:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ dependencies:
+ esbuild: 0.14.22
+ less: 4.1.2
+ postcss: 8.4.6
+ resolve: 1.22.0
+ rollup: 2.67.2
+ sass: 1.49.8
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /void-elements/3.1.0:
+ resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /vscode-css-languageservice/5.1.13:
+ resolution: {integrity: sha512-FA0foqMzMmEoO0WJP+MjoD4dRERhKS+Ag+yBrtmWQDmw2OuZ1R/5FkvI/XdTkCpHmTD9VMczugpHRejQyTXCNQ==}
+ dependencies:
+ vscode-languageserver-textdocument: 1.0.4
+ vscode-languageserver-types: 3.16.0
+ vscode-nls: 5.0.0
+ vscode-uri: 3.0.3
+ dev: true
+
+ /vscode-html-languageservice/4.2.1:
+ resolution: {integrity: sha512-PgaToZVXJ44nFWEBuSINdDgVV6EnpC3MnXBsysR3O5TKcAfywbYeRGRy+Y4dVR7YeUgDvtb+JkJoSkaYC0mxXQ==}
+ dependencies:
+ vscode-languageserver-textdocument: 1.0.4
+ vscode-languageserver-types: 3.16.0
+ vscode-nls: 5.0.0
+ vscode-uri: 3.0.3
+ dev: true
+
+ /vscode-json-languageservice/4.2.0:
+ resolution: {integrity: sha512-XNawv0Vdy/sUK0S+hGf7cq/qsVAbIniGJr89TvZOqMCNJmpgKTy1e8PL1aWW0uy6BfWMG7vxa5lZb3ypuFtuGQ==}
+ dependencies:
+ jsonc-parser: 3.0.0
+ vscode-languageserver-textdocument: 1.0.4
+ vscode-languageserver-types: 3.16.0
+ vscode-nls: 5.0.0
+ vscode-uri: 3.0.3
+ dev: true
+
+ /vscode-jsonrpc/8.0.0-next.6:
+ resolution: {integrity: sha512-6Ld3RYjygn5Ih7CkAtcAwiDQC+rakj2O+PnASfNyYv3sLmm44eJpEKzuPUN30Iy2UB09AZg8T6LBKWTJTEJDVw==}
+ engines: {node: '>=14.0.0'}
+ dev: true
+
+ /vscode-languageserver-protocol/3.17.0-next.14:
+ resolution: {integrity: sha512-iangobY8dL6sFZkOx4OhRPJM9gN0I1caUsOVR+MnPozsqQUtwMXmbIcfaIf0Akp0pd3KhJDPf/tdwRX68QGeeA==}
+ dependencies:
+ vscode-jsonrpc: 8.0.0-next.6
+ vscode-languageserver-types: 3.17.0-next.7
+ dev: true
+
+ /vscode-languageserver-textdocument/1.0.4:
+ resolution: {integrity: sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==}
+ dev: true
+
+ /vscode-languageserver-types/3.16.0:
+ resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==}
+ dev: true
+
+ /vscode-languageserver-types/3.17.0-next.7:
+ resolution: {integrity: sha512-KH4zdG1qBXxoso61ChgpeoZYyHGJo8bV7Jv4I+fwQ1Ryy59JAxoZ9GAbhR5TeeafHctLcg6RFvY3m8Jqfu17cg==}
+ dev: true
+
+ /vscode-nls/5.0.0:
+ resolution: {integrity: sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==}
+ dev: true
+
+ /vscode-pug-languageservice/0.31.4:
+ resolution: {integrity: sha512-StQWV+v1v+an/pGKNPg4YkODFyKeYpUEzaSAoXIUsIoh7O4Nuv6zjd1M/fPxaMSD6Kk+OH/JGE36hbXsKXOz5A==}
+ dependencies:
+ '@volar/code-gen': 0.31.4
+ '@volar/shared': 0.31.4
+ '@volar/source-map': 0.31.4
+ '@volar/transforms': 0.31.4
+ pug-lexer: 5.0.1
+ pug-parser: 6.0.0
+ vscode-languageserver-textdocument: 1.0.4
+ vscode-languageserver-types: 3.17.0-next.7
+ dev: true
+
+ /vscode-typescript-languageservice/0.31.4:
+ resolution: {integrity: sha512-nsnRPEfg9t3oDlwzm3WTAv0p83vceqCuxvRo/+N7hXbmtaO7WMGCMvJx0xyIuUDS4NgaEK31oMR9FnX9JNcEQQ==}
+ dependencies:
+ '@volar/shared': 0.31.4
+ semver: 7.3.5
+ upath: 2.0.1
+ vscode-languageserver-protocol: 3.17.0-next.14
+ vscode-languageserver-textdocument: 1.0.4
+ vscode-nls: 5.0.0
+ dev: true
+
+ /vscode-uri/2.1.2:
+ resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==}
+ dev: true
+
+ /vscode-uri/3.0.3:
+ resolution: {integrity: sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA==}
+ dev: true
+
+ /vscode-vue-languageservice/0.31.4:
+ resolution: {integrity: sha512-Pyvtj5iokBilGDH8KY6bocJh8NcIGoFmUksPOOZKBb+4usEHTBtWw/uoH4hjxWwLszMRQuStkXLMaSKtBIv3gQ==}
+ dependencies:
+ '@volar/code-gen': 0.31.4
+ '@volar/html2pug': 0.31.4
+ '@volar/shared': 0.31.4
+ '@volar/source-map': 0.31.4
+ '@volar/transforms': 0.31.4
+ '@volar/vue-code-gen': 0.31.4
+ '@vscode/emmet-helper': 2.8.4
+ '@vue/reactivity': 3.2.31
+ '@vue/shared': 3.2.31
+ upath: 2.0.1
+ vscode-css-languageservice: 5.1.13
+ vscode-html-languageservice: 4.2.1
+ vscode-json-languageservice: 4.2.0
+ vscode-languageserver-protocol: 3.17.0-next.14
+ vscode-languageserver-textdocument: 1.0.4
+ vscode-pug-languageservice: 0.31.4
+ vscode-typescript-languageservice: 0.31.4
+ dev: true
+
+ /vue-demi/0.12.1_vue@3.2.31:
+ resolution: {integrity: sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^3.0.0-0 || ^2.6.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ dependencies:
+ vue: 3.2.31
+ dev: false
+
+ /vue-eslint-parser/8.2.0_eslint@8.9.0:
+ resolution: {integrity: sha512-hvl8OVT8imlKk/lQyhkshqwQQChzHETcBd5abiO4ePw7ib7QUZLfW+2TUrJHKUvFOCFRJrDin5KJO9OHzB5bRQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '>=6.0.0'
+ dependencies:
+ debug: 4.3.3
+ eslint: 8.9.0
+ eslint-scope: 7.1.1
+ eslint-visitor-keys: 3.3.0
+ espree: 9.3.1
+ esquery: 1.4.0
+ lodash: 4.17.21
+ semver: 7.3.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /vue-router/4.0.12_vue@3.2.31:
+ resolution: {integrity: sha512-CPXvfqe+mZLB1kBWssssTiWg4EQERyqJZes7USiqfW9B5N2x+nHlnsM1D3b5CaJ6qgCvMmYJnz+G0iWjNCvXrg==}
+ peerDependencies:
+ vue: ^3.0.0
+ dependencies:
+ '@vue/devtools-api': 6.0.12
+ vue: 3.2.31
+ dev: false
+
+ /vue-tsc/0.31.4_typescript@4.5.5:
+ resolution: {integrity: sha512-8RnKGmQRo/0rbXkyZmKCOdT62fNWyEaMdS/BDAPE+saGNAniUZsjpOSOjAiLwsQc5qgeI9/mY1W3o4tX7H/7MA==}
+ hasBin: true
+ peerDependencies:
+ typescript: '*'
+ dependencies:
+ '@volar/shared': 0.31.4
+ typescript: 4.5.5
+ vscode-vue-languageservice: 0.31.4
+ dev: true
+
+ /vue-types/3.0.2_vue@3.2.31:
+ resolution: {integrity: sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==}
+ engines: {node: '>=10.15.0'}
+ peerDependencies:
+ vue: ^3.0.0
+ dependencies:
+ is-plain-object: 3.0.1
+ vue: 3.2.31
+ dev: false
+
+ /vue/3.2.31:
+ resolution: {integrity: sha512-odT3W2tcffTiQCy57nOT93INw1auq5lYLLYtWpPYQQYQOOdHiqFct9Xhna6GJ+pJQaF67yZABraH47oywkJgFw==}
+ dependencies:
+ '@vue/compiler-dom': 3.2.31
+ '@vue/compiler-sfc': 3.2.31
+ '@vue/runtime-dom': 3.2.31
+ '@vue/server-renderer': 3.2.31_vue@3.2.31
+ '@vue/shared': 3.2.31
+ dev: false
+
+ /vuex/4.0.2_vue@3.2.31:
+ resolution: {integrity: sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==}
+ peerDependencies:
+ vue: ^3.0.2
+ dependencies:
+ '@vue/devtools-api': 6.0.12
+ vue: 3.2.31
+ dev: false
+
+ /warning/4.0.3:
+ resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==}
+ dependencies:
+ loose-envify: 1.4.0
+ dev: false
+
+ /webpack-virtual-modules/0.4.3:
+ resolution: {integrity: sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==}
+ dev: true
+
+ /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
+
+ /with/7.0.2:
+ resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@babel/parser': 7.17.3
+ '@babel/types': 7.17.0
+ assert-never: 1.2.1
+ babel-walk: 3.0.0-canary-5
+ dev: true
+
+ /word-wrap/1.2.3:
+ resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /wrap-ansi/3.0.1:
+ resolution: {integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ string-width: 2.1.1
+ strip-ansi: 4.0.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.3
+ strip-ansi: 6.0.1
+ dev: true
+
+ /wrappy/1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+ dev: true
+
+ /y18n/4.0.3:
+ resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
+ 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
+
+ /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-parser/20.2.9:
+ resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
+ engines: {node: '>=10'}
+ 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.3
+ which-module: 2.0.0
+ y18n: 4.0.3
+ yargs-parser: 18.1.3
+ dev: true
+
+ /yocto-queue/0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /yup/0.27.0:
+ resolution: {integrity: sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==}
+ dependencies:
+ '@babel/runtime': 7.17.2
+ fn-name: 2.0.1
+ lodash: 4.17.21
+ property-expr: 1.5.1
+ synchronous-promise: 2.0.15
+ toposort: 2.0.2
+ dev: true
diff --git a/public/config/app.json b/public/config/app.json
new file mode 100644
index 0000000..7097a82
--- /dev/null
+++ b/public/config/app.json
@@ -0,0 +1,19 @@
+{
+ "configs": [{
+ "name": "cmp-web"
+ },
+ {
+ "name": "cos-web",
+ "activeRule": ["/cos", "/soa", "/screen", "/personal"]
+ },
+ {
+ "name": "cms-web"
+ },
+ {
+ "name": "sms-web"
+ },
+ {
+ "name": "cop-web"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/public/static/loading.css b/public/static/loading.css
new file mode 100644
index 0000000..b833dba
--- /dev/null
+++ b/public/static/loading.css
@@ -0,0 +1 @@
+.loading{position:absolute;top:0;left:0;text-align:center;line-height:100vh;z-index:10;height:100vh;width:100%;background:#fff}@-webkit-keyframes line-scale-pulse-out{0%{-webkit-transform:scaley(1);transform:scaley(1)}50%{-webkit-transform:scaley(0.4);transform:scaley(0.4)}100%{-webkit-transform:scaley(1);transform:scaley(1)}}@keyframes line-scale-pulse-out{0%{-webkit-transform:scaley(1);transform:scaley(1)}50%{-webkit-transform:scaley(0.4);transform:scaley(0.4)}100%{-webkit-transform:scaley(1);transform:scaley(1)}}.line-scale-pulse-out>div{background-color:#279fcf;width:4px;height:35px;border-radius:2px;margin:2px;-webkit-animation-fill-mode:both;animation-fill-mode:both;display:inline-block;-webkit-animation:line-scale-pulse-out .9s 0s infinite cubic-bezier(.85,.25,.37,.85);animation:line-scale-pulse-out .9s 0s infinite cubic-bezier(.85,.25,.37,.85)}.line-scale-pulse-out>div:nth-child(2),.line-scale-pulse-out>div:nth-child(4){-webkit-animation-delay:.2s!important;animation-delay:.2s!important}.line-scale-pulse-out>div:nth-child(1),.line-scale-pulse-out>div:nth-child(5){-webkit-animation-delay:.4s!important;animation-delay:.4s!important}@-webkit-keyframes line-scale-pulse-out-rapid{0%{-webkit-transform:scaley(1);transform:scaley(1)}80%{-webkit-transform:scaley(0.3);transform:scaley(0.3)}90%{-webkit-transform:scaley(1);transform:scaley(1)}}@keyframes line-scale-pulse-out-rapid{0%{-webkit-transform:scaley(1);transform:scaley(1)}80%{-webkit-transform:scaley(0.3);transform:scaley(0.3)}90%{-webkit-transform:scaley(1);transform:scaley(1)}}.line-scale-pulse-out-rapid>div{background-color:#279fcf;width:4px;height:35px;border-radius:2px;margin:2px;-webkit-animation-fill-mode:both;animation-fill-mode:both;display:inline-block;-webkit-animation:line-scale-pulse-out-rapid .9s 0s infinite cubic-bezier(.11,.49,.38,.78);animation:line-scale-pulse-out-rapid .9s 0s infinite cubic-bezier(.11,.49,.38,.78)}.line-scale-pulse-out-rapid>div:nth-child(2),.line-scale-pulse-out-rapid>div:nth-child(4){-webkit-animation-delay:.25s!important;animation-delay:.25s!important}.line-scale-pulse-out-rapid>div:nth-child(1),.line-scale-pulse-out-rapid>div:nth-child(5){-webkit-animation-delay:.5s!important;animation-delay:.5s!important}
\ No newline at end of file
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..52b6dd6
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/logo.png b/src/assets/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43
GIT binary patch
literal 6849
zcmaKRcUV(fvo}bjDT-7nLI_nlK}sT_69H+`qzVWDA|yaU?}j417wLi^B1KB1SLsC&
zL0ag7$U(XW5YR7p&Ux?sP$d4lvMt8C^+TcQu4F
zQqv!UF!I+kw)c0jhd6+g6oCr9P?7)?!qX1ui*iL{p}sKCAGuJ{{W)0z1pLF|=>h}&
zt(2Lr0Z`2ig8<5i%Zk}cO5Fm=LByqGWaS`oqChZdEFmc`0hSb#gg|Aap^{+WKOYcj
zHjINK)KDG%&s?Mt4CL(T=?;~U@bU2x_mLKN!#GJuK_CzbNw5SMEJorG!}_5;?R>@1
zSl)jns3WlU7^J%=(hUtfmuUCU&C3%8B5C^f5>W2Cy8jW3#{Od{lF1}|?c61##3dzA
zsPlFG;l_FzBK}8>|H_Ru_H#!_7$UH4UKo3lKOA}g1(R&|e@}GINYVzX?q=_WLZCgh
z)L|eJMce`D0EIwgRaNETDsr+?vQknSGAi=7H00r`QnI%oQnFxm`G2umXso9l+8*&Q
z7WqF|$p49js$mdzo^BXpH#gURy=UO;=IMrYc5?@+sR4y_?d*~0^YP7d+y0{}0)zBM
zIKVM(DBvICK#~7N0a+PY6)7;u=dutmNqK3AlsrUU9U`d;msiucB_|8|2kY=(7XA;G
zwDA8AR)VCA#JOkxm#6oHNS^YVuOU;8p$N)2{`;oF|rQ?B~K$%rHDxXs+_G
zF5|-uqHZvSzq}L;5Kcy_P+x0${33}Ofb6+TX&=y;;PkEOpz%+_bCw_{<&~
zeLV|!bP%l1qxywfVr9Z9JI+++EO^x>ZuCK);=$VIG1`kxK8F2M8AdC$iOe3cj1fo(ce4l-9
z7*zKy3={MixvUk=enQE;ED~7tv%qh&3lR<0m??@w{ILF|e#QOyPkFYK!&Up7xWNtL
zOW%1QMC<3o;G9_S1;NkPB6bqbCOjeztEc6TsBM<(q9((JKiH{01+Ud=uw9B@{;(JJ
z-DxI2*{pMq`q1RQc;V8@gYAY44Z!%#W~M9pRxI(R?SJ7sy7em=Z5DbuDlr@*q|25V)($-f}9c#?D%dU^RS<(wz?{P
zFFHtCab*!rl(~j@0(Nadvwg8q|4!}L^>d?0al6}Rrv9$0M#^&@zjbfJy_n!%mVHK4
z6pLRIQ^Uq~dnyy$`ay51Us6WaP%&O;@49m&{G3z7xV3dLtt1VTOMYl3UW~Rm{Eq4m
zF?Zl_v;?7EFx1_+#WFUXxcK78IV)FO>42@cm@}2I%pVbZqQ}3;p;sDIm&knay03a^
zn$5}Q$G!@fTwD$e(x-~aWP0h+4NRz$KlnO_H2c<
z(XX#lPuW_%H#Q+c&(nRyX1-IadKR-%$4FYC0fsCmL9ky3
zKpxyjd^JFR+vg2!=HWf}2Z?@Td`0EG`kU?{8zKrvtsm)|7>pPk9nu@2^z96aU2<#`
z2QhvH5w&V;wER?mopu+nqu*n8p~(%QkwSs&*0eJwa
zMXR05`OSFpfyRb!Y_+H@O%Y
z0=K^y6B8Gcbl?SA)qMP3Z+=C(?8zL@=74R=EVnE?vY!1BQy2@q*RUgRx4yJ$k}MnL
zs!?74QciNb-LcG*&o<9=DSL>1n}ZNd)w1z3-0Pd^4ED1{qd=9|!!N?xnXjM!EuylY
z5=!H>&hSofh8V?Jofyd!h`xDI1fYAuV(sZwwN~{$a}MX^=+0TH*SFp$vyxmUv7C*W
zv^3Gl0+eTFgBi3FVD;$nhcp)ka*4gSskYIqQ&+M}xP9yLAkWzBI^I%zR^l1e?bW_6
zIn{mo{dD=)9@V?s^fa55jh78rP*Ze<3`tRCN4*mpO$@7a^*2B*7N_|A(Ve2VB|)_o
z$=#_=aBkhe(ifX}MLT()@5?OV+~7cXC3r!%{QJxriXo9I%*3q4KT4Xxzyd{
z9;_%=W%q!Vw$Z7F3lUnY+1HZ*lO;4;VR2+i4+D(m#01OYq|L_fbnT;KN<^dkkCwtd
zF7n+O7KvAw8c`JUh6LmeIrk4`F3o|AagKSMK3))_5Cv~y2Bb2!Ibg9BO7Vkz?pAYX
zoI=B}+$R22&IL`NCYUYjrdhwjnMx_v=-Qcx-jmtN>!Zqf|n1^SWrHy
zK|MwJ?Z#^>)rfT5YSY{qjZ&`Fjd;^vv&gF-Yj6$9-Dy$<6zeP4s+78gS2|t%Z309b
z0^fp~ue_}i`U9j!<|qF92_3oB09NqgAoehQ`)<)dSfKoJl_A6Ec#*Mx9Cpd-p#$Ez
z={AM*r-bQs6*z$!*VA4|QE7bf@-4vb?Q+pPKLkY2{yKsw{&udv_2v8{Dbd
zm~8VAv!G~s)`O3|Q6vFUV%8%+?ZSVUa(;fhPNg#vab@J*9XE4#D%)$UU-T5`fwjz!
z6&gA^`OGu6aUk{l*h9eB?opVdrHK>Q@U>&JQ_2pR%}TyOXGq_6s56_`U(WoOaAb+K
zXQr#6H}>a-GYs9^bGP2Y&hSP5gEtW+GVC4=wy0wQk=~%CSXj=GH6q
z-T#s!BV`xZVxm{~jr_ezYRpqqIcXC=Oq`b{lu`Rt(IYr4B91hhVC?yg{ol4WUr3v9
zOAk2LG>CIECZ-WIs0$N}F#eoIUEtZudc7DPYIjzGqDLWk_A4#(LgacooD
z2K4IWs@N`Bddm-{%oy}!k0^i6Yh)uJ1S*90>|bm3TOZxcV|ywHUb(+CeX-o1|LTZM
zwU>dY3R&U)T(}5#Neh?-CWT~@{6Ke@sI)uSuzoah8COy)w)B)aslJmp`WUcjdia-0
zl2Y}&L~XfA`uYQboAJ1;J{XLhYjH){cObH3FDva+^8ioOQy%Z=xyjGLmWMrzfFoH;
zEi3AG`_v+%)&lDJE;iJWJDI@-X9K5O)LD~j*PBe(wu+|%ar~C+LK1+-+lK=t#
z+Xc+J7qp~5q=B~rD!x78)?1+KUIbYr^5rcl&tB-cTtj+e%{gpZZ4G~6r15+d|J(ky
zjg@@UzMW0k9@S#W(1H{u;Nq(7llJbq;;4t$awM;l&(2s+$l!Ay9^Ge|34CVhr7|BG
z?dAR83smef^frq9V(OH+a+ki#q&-7TkWfFM=5bsGbU(8mC;>QTCWL5ydz9s6k@?+V
zcjiH`VI=59P-(-DWXZ~5DH>B^_H~;4$)KUhnmGo*G!Tq8^LjfUDO)lASN*=#AY_yS
zqW9UX(VOCO&p@kHdUUgsBO0KhXxn1sprK5h8}+>IhX(nSXZKwlNsjk^M|RAaqmCZB
zHBolOHYBas@&{PT=R+?d8pZu
zUHfyucQ`(umXSW7o?HQ3H21M`ZJal+%*)SH1B1j6rxTlG3hx1IGJN^M7{$j(9V;MZ
zRKybgVuxKo#XVM+?*yTy{W+XHaU5Jbt-UG33x{u(N-2wmw;zzPH&4DE103HV@ER86
z|FZEmQb|&1s5#`$4!Cm}&`^{(4V}OP$bk`}v6q6rm;P!H)W|2i^e{7lTk2W@jo_9q
z*aw|U7#+g59Fv(5qI`#O-qPj#@_P>PC#I(GSp3DLv7x-dmYK=C7lPF8a)bxb=@)B1
zUZ`EqpXV2dR}B&r`uM}N(TS99ZT0UB%IN|0H%DcVO#T%L_chrgn#m6%x4KE*IMfjX
zJ%4veCEqbXZ`H`F_+fELMC@wuy_ch%t*+Z+1I}wN#C+dRrf2X{1C8=yZ_%Pt6wL_~
zZ2NN-hXOT4P4n$QFO7yYHS-4wF1Xfr-meG9Pn;uK51?hfel`d38k{W)F*|gJLT2#T
z<~>spMu4(mul-8Q3*pf=N4DcI)zzjqAgbE2eOT7~&f1W3VsdD44Ffe;3mJp-V@8UC
z)|qnPc12o~$X-+U@L_lWqv-RtvB~%hLF($%Ew5w>^NR82qC_0FB
z)=hP1-OEx?lLi#jnLzH}a;Nvr@JDO-zQWd}#k^an$Kwml;MrD&)sC5b`s0ZkVyPkb
zt}-jOq^%_9>YZe7Y}PhW{a)c39G`kg(P4@kxjcYfgB4XOOcmezdUI7j-!gs7oAo2o
zx(Ph{G+YZ`a%~kzK!HTAA5NXE-7vOFRr5oqY$rH>WI6SFvWmahFav!CfRMM3%8J&c
z*p+%|-fNS_@QrFr(at!JY9jCg9F-%5{nb5Bo~z@Y9m&SHYV`49GAJjA5h~h4(G!Se
zZmK{Bo7ivCfvl}@A-ptkFGcWXAzj3xfl{evi-OG(TaCn1FAHxRc{}B|x+Ua1D=I6M
z!C^ZIvK6aS_c&(=OQDZfm>O`Nxsw{ta&yiYPA~@e#c%N>>#rq)k6Aru-qD4(D^v)y
z*>Rs;YUbD1S8^D(ps6Jbj0K3wJw>L4m)0e(6Pee3Y?gy9i0^bZO?$*sv+xKV?WBlh
zAp*;v6w!a8;A7sLB*g-^<$Z4L7|5jXxxP1}hQZ<55f9<^KJ>^mKlWSGaLcO0=$jem
zWyZkRwe~u{{tU63DlCaS9$Y4CP4f?+wwa(&1ou)b>72ydrFvm`Rj-0`kBJgK@nd(*Eh!(NC{F-@=FnF&Y!q`7){YsLLHf0_B6aHc#
z>WIuHTyJwIH{BJ4)2RtEauC7Yq7Cytc|S)4^*t8Va3HR
zg=~sN^tp9re@w=GTx$;zOWMjcg-7X3Wk^N$n;&Kf1RgVG2}2L-(0o)54C509C&77i
zrjSi{X*WV=%C17((N^6R4Ya*4#6s_L99RtQ>m(%#nQ#wrRC8Y%yxkH;d!MdY+Tw@r
zjpSnK`;C-U{ATcgaxoEpP0Gf+tx);buOMlK=01D|J+ROu37qc*rD(w`#O=3*O*w9?biwNoq3WN1`&Wp8TvKj3C
z3HR9ssH7a&Vr<6waJrU
zdLg!ieYz%U^bmpn%;(V%%ugMk92&?_XX1K@mwnVSE6!&%P%Wdi7_h`CpScvspMx?N
zQUR>oadnG17#hNc$pkTp+9lW+MBKHRZ~74XWUryd)4yd
zj98$%XmIL4(9OnoeO5Fnyn&fpQ9b0h4e6EHHw*l68j;>(ya`g^S&y2{O8U>1*>4zR
zq*WSI_2o$CHQ?x0!wl9bpx|Cm2+kFMR)oMud1%n2=qn5nE&t@Fgr#=Zv2?}wtEz^T
z9rrj=?IH*qI5{G@Rn&}^Z{+TW}mQeb9=8b<_a`&Cm#n%n~
zU47MvCBsdXFB1+adOO)03+nczfWa#vwk#r{o{dF)QWya9v2nv43Zp3%Ps}($lA02*_g25t;|T{A5snSY?3A
zrRQ~(Ygh_ebltHo1VCbJb*eOAr;4cnlXLvI>*$-#AVsGg6B1r7@;g^L
zFlJ_th0vxO7;-opU@WAFe;<}?!2q?RBrFK5U{*ai@NLKZ^};Ul}beukveh?TQn;$%9=R+DX07m82gP$=}Uo_%&ngV`}Hyv8g{u
z3SWzTGV|cwQuFIs7ZDOqO_fGf8Q`8MwL}eUp>q?4eqCmOTcwQuXtQckPy|4F1on8l
zP*h>d+cH#XQf|+6c|S{7SF(Lg>bR~l(0uY?O{OEVlaxa5@e%T&xju=o1`=OD#qc16
zSvyH*my(dcp6~VqR;o(#@m44Lug@~_qw+HA=mS#Z^4reBy8iV?H~I;{LQWk3aKK8$bLRyt$g?-
+
+
+
+
+ {{ description }}
+
+
+
+
+
+
+
diff --git a/src/components/empty/index.ts b/src/components/empty/index.ts
new file mode 100644
index 0000000..bd524f8
--- /dev/null
+++ b/src/components/empty/index.ts
@@ -0,0 +1,3 @@
+import Empty from './Empty.vue'
+
+export default Empty
diff --git a/src/components/image-cropper/index.vue b/src/components/image-cropper/index.vue
new file mode 100644
index 0000000..72fc4f5
--- /dev/null
+++ b/src/components/image-cropper/index.vue
@@ -0,0 +1,1441 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ lang.hint }}
+ {{ lang.noSupported }}
+
+
+
{{ errorMsg }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ↻
+
+
+
+
+
+
+
{{ lang.preview }}
+
+
+
+
{{ lang.preview }}
+
+
+
+
+
+
+
+
+
+
{{ lang.loading }}
+
+
+
+
{{ errorMsg }}
+
{{ lang.success }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/image-cropper/utils/data2blob.js b/src/components/image-cropper/utils/data2blob.js
new file mode 100644
index 0000000..84e382c
--- /dev/null
+++ b/src/components/image-cropper/utils/data2blob.js
@@ -0,0 +1,19 @@
+/**
+ * database64文件格式转换为2进制
+ *
+ * @param {[String]} data dataURL 的格式为 “data:image/png;base64,****”,逗号之前都是一些说明性的文字,我们只需要逗号之后的就行了
+ * @param {[String]} mime [description]
+ * @return {[blob]} [description]
+ */
+export default function (data, mime) {
+ data = data.split(',')[1]
+ data = window.atob(data)
+ var ia = new Uint8Array(data.length)
+ for (var i = 0; i < data.length; i++) {
+ ia[i] = data.charCodeAt(i)
+ }
+ // canvas.toDataURL 返回的默认格式就是 image/png
+ return new Blob([ia], {
+ type: mime,
+ })
+}
diff --git a/src/components/image-cropper/utils/effectRipple.js b/src/components/image-cropper/utils/effectRipple.js
new file mode 100644
index 0000000..6edc26c
--- /dev/null
+++ b/src/components/image-cropper/utils/effectRipple.js
@@ -0,0 +1,42 @@
+/**
+ * 点击波纹效果
+ *
+ * @param {[event]} e [description]
+ * @param {[Object]} argOpts [description]
+ * @return {[bollean]} [description]
+ */
+export default function (e, argOpts) {
+ const opts = Object.assign(
+ {
+ ele: e.target, // 波纹作用元素
+ type: 'hit', // hit点击位置扩散center中心点扩展
+ bgc: 'rgba(0, 0, 0, 0.15)', // 波纹颜色
+ },
+ argOpts
+ )
+ var target = opts.ele
+ if (target) {
+ const rect = target.getBoundingClientRect()
+ var ripple = target.querySelector('.e-ripple')
+ if (!ripple) {
+ ripple = document.createElement('span')
+ ripple.className = 'e-ripple'
+ ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px'
+ target.appendChild(ripple)
+ } else {
+ ripple.className = 'e-ripple'
+ }
+ switch (opts.type) {
+ case 'center':
+ ripple.style.top = rect.height / 2 - ripple.offsetHeight / 2 + 'px'
+ ripple.style.left = rect.width / 2 - ripple.offsetWidth / 2 + 'px'
+ break
+ default:
+ ripple.style.top = e.pageY - rect.top - ripple.offsetHeight / 2 - document.body.scrollTop + 'px'
+ ripple.style.left = e.pageX - rect.left - ripple.offsetWidth / 2 - document.body.scrollLeft + 'px'
+ }
+ ripple.style.backgroundColor = opts.bgc
+ ripple.className = 'e-ripple z-active'
+ return false
+ }
+}
diff --git a/src/components/image-cropper/utils/language.js b/src/components/image-cropper/utils/language.js
new file mode 100644
index 0000000..65f5bf7
--- /dev/null
+++ b/src/components/image-cropper/utils/language.js
@@ -0,0 +1,365 @@
+export default {
+ zh: {
+ hint: '点击,或拖动图片至此处',
+ loading: '正在上传……',
+ noSupported: '浏览器不支持该功能,请使用IE10以上或其他现在浏览器!',
+ success: '上传成功',
+ fail: '图片上传失败',
+ preview: '预览',
+ btn: {
+ off: '取消',
+ close: '关闭',
+ back: '上一步',
+ save: '保存',
+ },
+ error: {
+ onlyImg: '仅限图片格式',
+ outOfSize: '单文件大小不能超过 ',
+ lowestPx: '图片最低像素为(宽*高):',
+ },
+ },
+ 'zh-tw': {
+ hint: '點擊,或拖動圖片至此處',
+ loading: '正在上傳……',
+ noSupported: '瀏覽器不支持該功能,請使用IE10以上或其他現代瀏覽器!',
+ success: '上傳成功',
+ fail: '圖片上傳失敗',
+ preview: '頭像預覽',
+ btn: {
+ off: '取消',
+ close: '關閉',
+ back: '上一步',
+ save: '保存',
+ },
+ error: {
+ onlyImg: '僅限圖片格式',
+ outOfSize: '單文件大小不能超過 ',
+ lowestPx: '圖片最低像素為(寬*高):',
+ },
+ },
+ en: {
+ hint: 'Click or drag the file here to upload',
+ loading: 'Uploading…',
+ noSupported: 'Browser is not supported, please use IE10+ or other browsers',
+ success: 'Upload success',
+ fail: 'Upload failed',
+ preview: 'Preview',
+ btn: {
+ off: 'Cancel',
+ close: 'Close',
+ back: 'Back',
+ save: 'Save',
+ },
+ error: {
+ onlyImg: 'Image only',
+ outOfSize: 'Image exceeds size limit: ',
+ lowestPx: "Image's size is too low. Expected at least: ",
+ },
+ },
+ ro: {
+ hint: 'Atinge sau trage fișierul aici',
+ loading: 'Se încarcă',
+ noSupported: 'Browser-ul tău nu suportă acest feature. Te rugăm încearcă cu alt browser.',
+ success: 'S-a încărcat cu succes',
+ fail: 'A apărut o problemă la încărcare',
+ preview: 'Previzualizează',
+
+ btn: {
+ off: 'Anulează',
+ close: 'Închide',
+ back: 'Înapoi',
+ save: 'Salvează',
+ },
+
+ error: {
+ onlyImg: 'Doar imagini',
+ outOfSize: 'Imaginea depășește limita de: ',
+ loewstPx: 'Imaginea este prea mică; Minim: ',
+ },
+ },
+ ru: {
+ hint: 'Нажмите, или перетащите файл в это окно',
+ loading: 'Загружаю……',
+ noSupported: 'Ваш браузер не поддерживается, пожалуйста, используйте IE10 + или другие браузеры',
+ success: 'Загрузка выполнена успешно',
+ fail: 'Ошибка загрузки',
+ preview: 'Предпросмотр',
+ btn: {
+ off: 'Отменить',
+ close: 'Закрыть',
+ back: 'Назад',
+ save: 'Сохранить',
+ },
+ error: {
+ onlyImg: 'Только изображения',
+ outOfSize: 'Изображение превышает предельный размер: ',
+ lowestPx: 'Минимальный размер изображения: ',
+ },
+ },
+ 'pt-br': {
+ hint: 'Clique ou arraste o arquivo aqui para carregar',
+ loading: 'Carregando…',
+ noSupported: 'Browser não suportado, use o IE10+ ou outro browser',
+ success: 'Sucesso ao carregar imagem',
+ fail: 'Falha ao carregar imagem',
+ preview: 'Pré-visualizar',
+ btn: {
+ off: 'Cancelar',
+ close: 'Fechar',
+ back: 'Voltar',
+ save: 'Salvar',
+ },
+ error: {
+ onlyImg: 'Apenas imagens',
+ outOfSize: 'A imagem excede o limite de tamanho: ',
+ lowestPx: 'O tamanho da imagem é muito pequeno. Tamanho mínimo: ',
+ },
+ },
+ fr: {
+ hint: 'Cliquez ou glissez le fichier ici.',
+ loading: 'Téléchargement…',
+ noSupported: "Votre navigateur n'est pas supporté. Utilisez IE10 + ou un autre navigateur s'il vous plaît.",
+ success: 'Téléchargement réussit',
+ fail: 'Téléchargement echoué',
+ preview: 'Aperçu',
+ btn: {
+ off: 'Annuler',
+ close: 'Fermer',
+ back: 'Retour',
+ save: 'Enregistrer',
+ },
+ error: {
+ onlyImg: 'Image uniquement',
+ outOfSize: "L'image sélectionnée dépasse la taille maximum: ",
+ lowestPx: "L'image sélectionnée est trop petite. Dimensions attendues: ",
+ },
+ },
+ nl: {
+ hint: 'Klik hier of sleep een afbeelding in dit vlak',
+ loading: 'Uploaden…',
+ noSupported: 'Je browser wordt helaas niet ondersteund. Gebruik IE10+ of een andere browser.',
+ success: 'Upload succesvol',
+ fail: 'Upload mislukt',
+ preview: 'Voorbeeld',
+ btn: {
+ off: 'Annuleren',
+ close: 'Sluiten',
+ back: 'Terug',
+ save: 'Opslaan',
+ },
+ error: {
+ onlyImg: 'Alleen afbeeldingen',
+ outOfSize: 'De afbeelding is groter dan: ',
+ lowestPx: 'De afbeelding is te klein! Minimale afmetingen: ',
+ },
+ },
+ tr: {
+ hint: 'Tıkla veya yüklemek istediğini buraya sürükle',
+ loading: 'Yükleniyor…',
+ noSupported: 'Tarayıcı desteklenmiyor, lütfen IE10+ veya farklı tarayıcı kullanın',
+ success: 'Yükleme başarılı',
+ fail: 'Yüklemede hata oluştu',
+ preview: 'Önizle',
+ btn: {
+ off: 'İptal',
+ close: 'Kapat',
+ back: 'Geri',
+ save: 'Kaydet',
+ },
+ error: {
+ onlyImg: 'Sadece resim',
+ outOfSize: 'Resim yükleme limitini aşıyor: ',
+ lowestPx: 'Resmin boyutu çok küçük. En az olması gereken: ',
+ },
+ },
+ 'es-MX': {
+ hint: 'Selecciona o arrastra una imagen',
+ loading: 'Subiendo...',
+ noSupported: 'Tu navegador no es soportado, por favor usa IE10+ u otros navegadores más recientes',
+ success: 'Subido exitosamente',
+ fail: 'Sucedió un error',
+ preview: 'Vista previa',
+ btn: {
+ off: 'Cancelar',
+ close: 'Cerrar',
+ back: 'Atrás',
+ save: 'Guardar',
+ },
+ error: {
+ onlyImg: 'Únicamente imágenes',
+ outOfSize: 'La imagen excede el tamaño maximo:',
+ lowestPx: 'La imagen es demasiado pequeña. Se espera por lo menos:',
+ },
+ },
+ de: {
+ hint: 'Klick hier oder zieh eine Datei hier rein zum Hochladen',
+ loading: 'Hochladen…',
+ noSupported: 'Browser wird nicht unterstützt, bitte verwende IE10+ oder andere Browser',
+ success: 'Upload erfolgreich',
+ fail: 'Upload fehlgeschlagen',
+ preview: 'Vorschau',
+ btn: {
+ off: 'Abbrechen',
+ close: 'Schließen',
+ back: 'Zurück',
+ save: 'Speichern',
+ },
+ error: {
+ onlyImg: 'Nur Bilder',
+ outOfSize: 'Das Bild ist zu groß: ',
+ lowestPx: 'Das Bild ist zu klein. Mindestens: ',
+ },
+ },
+ ja: {
+ hint: 'クリック・ドラッグしてファイルをアップロード',
+ loading: 'アップロード中...',
+ noSupported: 'このブラウザは対応されていません。IE10+かその他の主要ブラウザをお使いください。',
+ success: 'アップロード成功',
+ fail: 'アップロード失敗',
+ preview: 'プレビュー',
+ btn: {
+ off: 'キャンセル',
+ close: '閉じる',
+ back: '戻る',
+ save: '保存',
+ },
+ error: {
+ onlyImg: '画像のみ',
+ outOfSize: '画像サイズが上限を超えています。上限: ',
+ lowestPx: '画像が小さすぎます。最小サイズ: ',
+ },
+ },
+ ua: {
+ hint: 'Натисніть, або перетягніть файл в це вікно',
+ loading: 'Завантажую……',
+ noSupported: 'Ваш браузер не підтримується, будь ласка скористайтесь IE10 + або іншими браузерами',
+ success: 'Завантаження виконано успішно',
+ fail: 'Помилка завантаження',
+ preview: 'Попередній перегляд',
+ btn: {
+ off: 'Відмінити',
+ close: 'Закрити',
+ back: 'Назад',
+ save: 'Зберегти',
+ },
+ error: {
+ onlyImg: 'Тільки зображення',
+ outOfSize: 'Зображення перевищує граничний розмір: ',
+ lowestPx: 'Мінімальний розмір зображення: ',
+ },
+ },
+ it: {
+ hint: 'Clicca o trascina qui il file per caricarlo',
+ loading: 'Caricamento del file…',
+ noSupported: 'Browser non supportato, per favore usa IE10+ o un altro browser',
+ success: 'Caricamento completato',
+ fail: 'Caricamento fallito',
+ preview: 'Anteprima',
+ btn: {
+ off: 'Annulla',
+ close: 'Chiudi',
+ back: 'Indietro',
+ save: 'Salva',
+ },
+ error: {
+ onlyImg: 'Sono accettate solo immagini',
+ outOfSize: "L'immagine eccede i limiti di dimensione: ",
+ lowestPx: "L'immagine è troppo piccola. Il requisito minimo è: ",
+ },
+ },
+ ar: {
+ hint: 'اضغط أو اسحب الملف هنا للتحميل',
+ loading: 'جاري التحميل...',
+ noSupported: 'المتصفح غير مدعوم ، يرجى استخدام IE10 + أو متصفح أخر',
+ success: 'تم التحميل بنجاح',
+ fail: 'فشل التحميل',
+ preview: 'معاينه',
+ btn: {
+ off: 'إلغاء',
+ close: 'إغلاق',
+ back: 'رجوع',
+ save: 'حفظ',
+ },
+ error: {
+ onlyImg: 'صور فقط',
+ outOfSize: 'تتجاوز الصوره الحجم المحدد: ',
+ lowestPx: 'حجم الصورة صغير جدا. من المتوقع على الأقل: ',
+ },
+ },
+ ug: {
+ hint: 'مەزكۇر دائىرىنى چىكىپ رەسىم تاللاڭ ياكى رەسىمنى سۆرەپ ئەكىرىڭ',
+ loading: 'يوللىنىۋاتىدۇ...',
+ noSupported: 'تور كۆرگۈچ بۇ ئىقتىدارنى قوللىمايدۇ ، يۇقىرى نەشىردىكى تور كۆرگۈچنى ئىشلىتىڭ',
+ success: 'غەلبىلىك بولدى',
+ fail: 'مەغلۇب بولدى',
+ preview: 'ئۈنۈم رەسىم',
+ btn: {
+ off: 'بولدى قىلىش',
+ close: 'تاقاش',
+ back: 'ئالدىنقى قەدەم',
+ save: 'ساقلاش',
+ },
+ error: {
+ onlyImg: 'پەقەت رەسىم فورماتىنىلا قوللايدۇ',
+ outOfSize: 'رەسىم چوڭ - كىچىكلىكى چەكتىن ئىشىپ كەتتى',
+ lowestPx: 'رەسىمنىڭ ئەڭ كىچىك ئۆلچىمى :',
+ },
+ },
+ th: {
+ hint: 'คลิ๊กหรือลากรูปมาที่นี่',
+ loading: 'กำลังอัพโหลด…',
+ noSupported: 'เบราเซอร์ไม่รองรับ, กรุณาใช้ IE เวอร์ชั่น 10 ขึ้นไป หรือใช้เบราเซอร์ตัวอื่น',
+ success: 'อัพโหลดสำเร็จ',
+ fail: 'อัพโหลดล้มเหลว',
+ preview: 'ตัวอย่าง',
+ btn: {
+ off: 'ยกเลิก',
+ close: 'ปิด',
+ back: 'กลับ',
+ save: 'บันทึก',
+ },
+ error: {
+ onlyImg: 'ไฟล์ภาพเท่านั้น',
+ outOfSize: 'ไฟล์ใหญ่เกินกำหนด: ',
+ lowestPx: 'ไฟล์เล็กเกินไป. อย่างน้อยต้องมีขนาด: ',
+ },
+ },
+ mm: {
+ hint: 'ဖိုင်ကို ဤနေရာတွင် နှိပ်၍ (သို့) ဆွဲထည့်၍ တင်ပါ',
+ loading: 'တင်နေသည်…',
+ noSupported: 'ဤဘရောက်ဇာကို အထောက်အပံ့ မပေးပါ၊ ကျေးဇူးပြု၍ IE10+ သို့မဟုတ် အခြား ဘရောက်ဇာ ကို အသုံးပြုပါ',
+ success: 'ဖိုင်တင်နေမှု မပြီးမြောက်ပါ',
+ fail: 'ဖိုင်တင်နေမှု မအောင်မြင်ပါ',
+ preview: 'အစမ်းကြည့်',
+ btn: {
+ off: 'မလုပ်တော့ပါ',
+ close: 'ပိတ်မည်',
+ back: 'နောက်သို့',
+ save: 'သိမ်းမည်',
+ },
+ error: {
+ onlyImg: 'ဓာတ်ပုံ သီးသန့်သာ',
+ outOfSize: 'ဓာတ်ပုံဆိုဒ် ကြီးလွန်းသည် ။ အများဆုံး ဆိုဒ် : ',
+ lowestPx: 'ဓာတ်ပုံဆိုဒ် သေးလွန်းသည်။ အနည်းဆုံး ဆိုဒ် : ',
+ },
+ },
+ se: {
+ hint: 'Klicka eller dra en fil hit för att ladda upp den',
+ loading: 'Laddar upp…',
+ noSupported: 'Din webbläsare stöds inte, vänligen använd IE10+ eller andra webbläsare',
+ success: 'Uppladdning lyckades',
+ fail: 'Uppladdning misslyckades',
+ preview: 'Förhandsgranska',
+ btn: {
+ off: 'Avbryt',
+ close: 'Stäng',
+ back: 'Tillbaka',
+ save: 'Spara',
+ },
+ error: {
+ onlyImg: 'Endast bilder',
+ outOfSize: 'Bilden är större än max-gränsen: ',
+ lowestPx: 'Bilden är för liten. Minimum är: ',
+ },
+ },
+}
diff --git a/src/components/image-cropper/utils/mimes.js b/src/components/image-cropper/utils/mimes.js
new file mode 100644
index 0000000..c44770e
--- /dev/null
+++ b/src/components/image-cropper/utils/mimes.js
@@ -0,0 +1,7 @@
+export default {
+ jpg: 'image/jpeg',
+ png: 'image/png',
+ gif: 'image/gif',
+ svg: 'image/svg+xml',
+ psd: 'image/photoshop',
+}
diff --git a/src/components/index.ts b/src/components/index.ts
new file mode 100644
index 0000000..6a3da47
--- /dev/null
+++ b/src/components/index.ts
@@ -0,0 +1,12 @@
+import Empty from './empty/Empty.vue'
+import SvgIcon from './svg-icon/SvgIcon.vue'
+
+export const components: any = {
+ Empty,
+ SvgIcon
+}
+export default function registerComponent(app: any) {
+ Object.keys(components).forEach((key) => {
+ app.component(key, components[key])
+ })
+}
diff --git a/src/components/svg-icon/SvgIcon.vue b/src/components/svg-icon/SvgIcon.vue
new file mode 100644
index 0000000..a253df2
--- /dev/null
+++ b/src/components/svg-icon/SvgIcon.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/svg-icon/index.ts b/src/components/svg-icon/index.ts
new file mode 100644
index 0000000..adbf9c1
--- /dev/null
+++ b/src/components/svg-icon/index.ts
@@ -0,0 +1,3 @@
+import SvgIcon from './SvgIcon.vue'
+
+export default SvgIcon
diff --git a/src/config.ts b/src/config.ts
new file mode 100644
index 0000000..d6aa3f9
--- /dev/null
+++ b/src/config.ts
@@ -0,0 +1,25 @@
+/**
+ * 启用缓存加载速度会变快,但是数据安全性和实时性降低
+ */
+// 是否启用权限本地缓存
+export const enablePermissionStorage = false
+// 本地缓存的菜单key值
+export const menuKey = 'cmcMenuData'
+// 是否启用用户本地缓存
+export const enableUserStorage = false
+// 本地缓存的用户key值
+export const userKey = 'cmcUserData'
+// 本地存储的cookie kye值
+export const tokenKey = 'CMC_TOKEN'
+// 最大缓存组件实例数
+export const cacheViewMax = 15
+export const formSetting = {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 6 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ }
+}
diff --git a/src/core/actions.ts b/src/core/actions.ts
new file mode 100644
index 0000000..14d7d17
--- /dev/null
+++ b/src/core/actions.ts
@@ -0,0 +1,19 @@
+import { initGlobalState } from 'qiankun'
+import type { MicroAppStateActions } from 'qiankun'
+import store from '@/store'
+
+const initialState = {
+ name: 'main-web',
+ onmessage: (data: any) => console.log(data),
+ userData: null,
+ permissions: null
+}
+const actions: MicroAppStateActions = initGlobalState(initialState)
+
+actions.onGlobalStateChange((state, prev) => {
+ // state: 变更后的状态; prev 变更前的状态
+ // console.log('from:', state.name, 'current:', state, 'pre:', prev)
+ store.commit('SET_ONMESSAGE', state.onmessage)
+})
+
+export default actions
diff --git a/src/core/config.ts b/src/core/config.ts
new file mode 100644
index 0000000..4dffa71
--- /dev/null
+++ b/src/core/config.ts
@@ -0,0 +1,35 @@
+import mainRouter from '@/router/index'
+import axios from 'axios'
+
+export type IAppConfig = {
+ name: string
+ entry?: string
+ activeRule?: string | string[]
+}
+
+export async function getMicroApp() {
+ const { protocol, hostname } = location
+ const prefix = `${protocol}//${hostname}:60003/`
+ const {
+ data: { deployAddress = prefix, configs }
+ }: {
+ data: {
+ configs: IAppConfig[]
+ deployAddress: string
+ }
+ } = await axios.get('/config/app.json')
+ // 应用入口默认为60003端口加应用名称,匹配规则为数组时是根路径(cos)
+ return configs.map((item: IAppConfig) => {
+ const { name, activeRule = `/${name}`, entry = `${deployAddress}${Array.isArray(activeRule) ? '' : `${name}/`}` } = item
+ return {
+ name,
+ entry,
+ container: '#subapp-viewport',
+ activeRule,
+ props: {
+ appPath: entry,
+ mainRouter
+ }
+ }
+ })
+}
diff --git a/src/core/register.ts b/src/core/register.ts
new file mode 100644
index 0000000..eb9f915
--- /dev/null
+++ b/src/core/register.ts
@@ -0,0 +1,50 @@
+import { registerMicroApps, start, addGlobalUncaughtErrorHandler } from 'qiankun'
+import { message } from 'ant-design-vue'
+import NProgress from 'nprogress'
+import store from '@/store'
+import 'nprogress/nprogress.css'
+import './actions'
+import { getMicroApp } from './config'
+
+const startApp = async () => {
+ const apps = await getMicroApp()
+ registerMicroApps(apps, {
+ beforeLoad: [
+ () => {
+ NProgress.start()
+ store.commit('SET_APP_LOADING', true)
+ // console.log('[LifeCycle] before load %c%s', 'color: green;', app.name)
+ return Promise.resolve()
+ }
+ ],
+ afterMount: [
+ () => {
+ NProgress.done()
+ store.commit('SET_APP_LOADING', false)
+ // console.log('[LifeCycle] after mount %c%s', 'color: green;', app.name)
+ return Promise.resolve()
+ }
+ ],
+ afterUnmount: [
+ () => {
+ // console.log('[LifeCycle] after unmount %c%s', 'color: green;', app.name)
+ return Promise.resolve()
+ }
+ ]
+ })
+ start({
+ prefetch: 'all'
+ })
+}
+/**
+ * 添加全局的未捕获异常处理器
+ */
+addGlobalUncaughtErrorHandler((event: Event | string) => {
+ console.error(event)
+ const { message: msg } = event as any
+ // 加载失败时提示
+ if (msg && msg.includes('died in status LOADING_SOURCE_CODE')) {
+ message.error('微应用加载失败,请检查应用是否可运行')
+ }
+})
+export default startApp
diff --git a/src/css/animate.scss b/src/css/animate.scss
new file mode 100644
index 0000000..ab77336
--- /dev/null
+++ b/src/css/animate.scss
@@ -0,0 +1,22 @@
+@keyframes swing {
+ 20% {
+ transform: rotate3d(0, 0, 1, 15deg);
+ }
+ 40% {
+ transform: rotate3d(0, 0, 1, -10deg);
+ }
+ 60% {
+ transform: rotate3d(0, 0, 1, 5deg);
+ }
+ 80% {
+ transform: rotate3d(0, 0, 1, -5deg);
+ }
+ to {
+ transform: rotate3d(0, 0, 1, 0deg);
+ }
+}
+
+.animated {
+ animation-duration: 0.7s;
+ animation-fill-mode: both;
+}
\ No newline at end of file
diff --git a/src/css/antd.scss b/src/css/antd.scss
new file mode 100644
index 0000000..6cc5071
--- /dev/null
+++ b/src/css/antd.scss
@@ -0,0 +1,28 @@
+*,
+*::before,
+*::after {
+ box-sizing: content-box;
+}
+
+.ant-modal-header {
+ .ant-modal-title,
+ .ant-modal-close {
+ color: #010033;
+ font-size: 14px;
+ font-weight: bold;
+ }
+}
+
+.ant-notification-notice-message {
+ word-break: break-all;
+}
+
+// .ant-modal-close {
+// color: #fff;
+// &:hover {
+// color: #fff;
+// }
+// }
+// .ant-modal-footer {
+// background: #f0f3fa;
+// }
\ No newline at end of file
diff --git a/src/css/common-var.scss b/src/css/common-var.scss
new file mode 100644
index 0000000..39daa95
--- /dev/null
+++ b/src/css/common-var.scss
@@ -0,0 +1,4 @@
+/* Color
+-------------------------- */
+
+$--color-primary: #1E54D5;
\ No newline at end of file
diff --git a/src/css/common.scss b/src/css/common.scss
new file mode 100644
index 0000000..44db4c3
--- /dev/null
+++ b/src/css/common.scss
@@ -0,0 +1,509 @@
+html,
+body,
+.main-app,
+#master-container {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ height: 100%;
+ font-size: 14px;
+ overflow-y: hidden !important;
+ font-family: Microsoft YaHei, Hiragino Sans GB;
+}
+
+a {
+ text-decoration: none;
+}
+
+.app-wrapper {
+ position: relative;
+ width: 100%;
+ height: 100%;
+}
+
+.iconfont {
+ font-size: 13px;
+}
+
+
+/*边距共有样式*/
+
+.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 !important;
+}
+
+.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 !important;
+}
+
+.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 !important;
+}
+
+.w-xl {
+ width: 320px;
+}
+
+.w-xxl {
+ width: 360px;
+}
+
+.w-full {
+ width: 100% !important;
+}
+
+.w-auto {
+ width: auto;
+}
+
+.upload-file-btn {
+ position: relative;
+ cursor: pointer;
+}
+
+.upload-file-btn input[type=file] {
+ width: 100%;
+ height: 100%;
+ font-size: 300px;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ cursor: pointer;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ top: 0;
+ position: absolute;
+ padding: 0px;
+ margin: 0px;
+ overflow: hidden;
+}
\ No newline at end of file
diff --git a/src/css/element-ui.scss b/src/css/element-ui.scss
new file mode 100644
index 0000000..60fc9b4
--- /dev/null
+++ b/src/css/element-ui.scss
@@ -0,0 +1,135 @@
+.el-select {
+ width: 100%;
+}
+
+.el-notification__content {
+ word-break: break-word;
+}
+
+.el-cascader {
+ width: 100%;
+}
+
+.el-form-item {
+ margin-bottom: 15px;
+}
+
+.el-button--mini,
+.el-button--mini.is-round {
+ padding: 4px 15px !important;
+}
+
+.el-form-item--mini.el-form-item,
+.el-form-item--small.el-form-item {
+ margin-bottom: 18px;
+}
+
+.el-table .cell {
+ white-space: nowrap;
+}
+
+.el-card {
+ box-shadow: none;
+ border-radius: 0 !important;
+}
+
+.el-tabs--border-card {
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+}
+
+.el-card__header {
+ padding: 10px 20px !important;
+}
+
+.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
+ background-color: rgb(236 245 255) !important;
+ color: rgb(64 158 255);
+}
+
+.el-dialog__headerbtn .el-dialog__close {
+ color: #fff !important;
+}
+
+.el-breadcrumb__inner,
+.el-breadcrumb__inner a {
+ -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1);
+ transition: color .2s cubic-bezier(.645, .045, .355, 1);
+ color: #666 !important;
+ font-weight: normal !important;
+}
+
+.el-progress-bar__inner {
+ max-width: 100%;
+}
+
+.el-progress__text {
+ font-size: 12px !important;
+}
+
+.el-dropdown-link {
+ cursor: pointer;
+ color: #409eff;
+ font-size: 12px;
+}
+
+.el-pagination button,
+.el-pagination span:not([class*=suffix]) {
+ font-size: 12px;
+}
+
+.el-pagination__sizes .el-input .el-input__inner {
+ font-size: 12px;
+}
+
+.el-pager li {
+ font-size: 12px;
+}
+
+.el-input--small {
+ font-size: 13px;
+}
+
+.el-tabs__content {
+ position: static !important;
+}
+
+//menu
+.el-submenu .el-menu-item {
+ height: 48px;
+ line-height: 48px;
+}
+
+.el-menu-item,
+.el-submenu__title {
+ height: 48px;
+ line-height: 48px;
+}
+
+.el-dialog {
+ .el-dialog--middle {
+ width: 60%;
+ }
+ .el-dialog__header {
+ padding: 15px;
+ color: #FFF;
+ background: #21242e;
+ border-bottom: 1px solid #e5e5e5;
+ }
+ .el-dialog__title {
+ color: #FFF !important;
+ }
+ .el-dialog__footer {
+ background: #F0F3FA;
+ padding: 10px;
+ text-align: right;
+ border-top: 1px solid #e5e5e5;
+ }
+ .el-dialog__headerbtn .el-dialog__close {
+ font-weight: bold;
+ color: rgb(235, 213, 221);
+ }
+ .el-dialog__headerbtn .el-dialog__close:hover {
+ color: #fff;
+ }
+}
\ No newline at end of file
diff --git a/src/css/font.scss b/src/css/font.scss
new file mode 100644
index 0000000..b1fc45c
--- /dev/null
+++ b/src/css/font.scss
@@ -0,0 +1,23 @@
+$font-size: 16px;
+$small-font-size: 14px;
+.font-big {
+ font-size: $font-size;
+ .el-menu-item,
+ .el-submenu__title,
+ ul.header-menu li,
+ .el-tabs__item {
+ font-size: $font-size;
+ .iconfont {
+ font-size: $font-size;
+ }
+ }
+ .el-table--mini,
+ .el-table--small,
+ .el-table__expand-icon,
+ .app-levelbar,
+ .el-button--small,
+ .el-dropdown-link,
+ .common-detail .detail-body .basic-info .attr {
+ font-size: $font-size;
+ }
+}
\ No newline at end of file
diff --git a/src/css/hack.scss b/src/css/hack.scss
new file mode 100644
index 0000000..0fb2df6
--- /dev/null
+++ b/src/css/hack.scss
@@ -0,0 +1,10 @@
+@media screen and(-ms-high-contrast:active),
+(-ms-high-contrast:none) {
+ .el-table__header,
+ .el-table__body {
+ width: 100% !important;
+ }
+ /* .basic-form-item{
+ height: 32.76px;
+ } */
+}
\ No newline at end of file
diff --git a/src/css/index.scss b/src/css/index.scss
new file mode 100644
index 0000000..5241dd8
--- /dev/null
+++ b/src/css/index.scss
@@ -0,0 +1,6 @@
+@import './common.scss';
+// @import './element-ui.scss';
+@import './antd.scss';
+@import './hack.scss';
+@import './font.scss';
+@import './animate.scss';
\ No newline at end of file
diff --git a/src/hooks/useSelection.js b/src/hooks/useSelection.js
new file mode 100644
index 0000000..2ba9a94
--- /dev/null
+++ b/src/hooks/useSelection.js
@@ -0,0 +1,11 @@
+import { ref } from '@vue/composition-api'
+export default function () {
+ const selectionIds = ref([])
+ function handleSelectionChange(selections) {
+ selectionIds.value = selections.map((item) => item.id)
+ }
+ return {
+ selectionIds,
+ handleSelectionChange,
+ }
+}
diff --git a/src/hooks/useTable.ts b/src/hooks/useTable.ts
new file mode 100644
index 0000000..656480e
--- /dev/null
+++ b/src/hooks/useTable.ts
@@ -0,0 +1,87 @@
+import { ref, toRefs, reactive } from 'vue'
+// import { MessageBox, Message } from 'element-'
+import { handleSearchParam } from 'cmp-element/utils'
+
+interface IRemoveService {
+ (id: number): Promise
+}
+interface IConfigs {
+ getService: {
+ (params: Base.IListParams): Promise
+ }
+ removeService?: IRemoveService
+ listFormat?: {
+ (data: any): any[]
+ }
+ afterGetList?: {
+ (): void
+ }
+ rows?: number
+ params?: any
+ initParams?: any
+ deleteTipKey?: string
+}
+
+export function useDelete(removeService: IRemoveService, getData: { (): void }, deleteTipKey = 'name') {
+ function handleDelete(record: any) {
+ console.log(record)
+ // MessageBox.confirm(`您确定要删除【${record[deleteTipKey]}】吗?`, '提示', {
+ // confirmButtonClass: 'el-button--danger',
+ // type: 'warning',
+ // })
+ // .then(async () => {
+ // const res = await removeService(record.id)
+ // if (res.success) {
+ // Message.success(res.message)
+ // getData()
+ // }
+ // })
+ // .catch((e: any) => {
+ // console.error(e)
+ // })
+ }
+ return {
+ handleDelete,
+ }
+}
+export default function (configs: IConfigs) {
+ const { getService, removeService, listFormat, rows = 10, params = {}, afterGetList, initParams, deleteTipKey = 'name' } = configs
+ const loading = ref(false)
+ const state: Base.IListState = reactive({
+ list: [],
+ total: 0,
+ params: {
+ page: 1,
+ rows,
+ ...params,
+ },
+ })
+ if (initParams) {
+ state.params.params = handleSearchParam(initParams)
+ }
+ async function getList() {
+ loading.value = true
+ try {
+ const data = await getService(state.params)
+ loading.value = false
+ if (data.success) {
+ if (listFormat) {
+ state.list = listFormat(data.data.rows)
+ } else {
+ state.list = data.data.rows
+ }
+ state.total = data.data.total
+ afterGetList && afterGetList()
+ }
+ } catch (e) {
+ loading.value = false
+ }
+ }
+ const { handleDelete } = useDelete(removeService as IRemoveService, getList, deleteTipKey)
+ return {
+ loading,
+ ...toRefs(state),
+ getList,
+ handleDelete,
+ }
+}
diff --git a/src/hooks/useWebsocket.ts b/src/hooks/useWebsocket.ts
new file mode 100644
index 0000000..f07a39a
--- /dev/null
+++ b/src/hooks/useWebsocket.ts
@@ -0,0 +1,23 @@
+import { onUnmounted } from 'vue'
+import WebSocket from 'cmp-socket'
+import { getToken } from 'utils/auth'
+export default function (onmessage: { (data: any): void }, messageCommonFun?: any) {
+ const protocol = location.protocol === 'http:' ? 'ws' : 'wss'
+ let webSocket = new WebSocket({
+ url: `${protocol}://${location.host}/api/sms/messageService`,
+ commonFun: messageCommonFun,
+ pingMsg: 'HeartBeat',
+ reConnectNum: 5,
+ params: getToken()
+ })
+ if (onmessage && typeof onmessage === 'function') {
+ webSocket.onmessage = onmessage
+ }
+ onUnmounted(() => {
+ webSocket.Destroy()
+ webSocket = null
+ })
+ return {
+ webSocket
+ }
+}
diff --git a/src/icons/svg/svg-about.svg b/src/icons/svg/svg-about.svg
new file mode 100644
index 0000000..06e0426
--- /dev/null
+++ b/src/icons/svg/svg-about.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-basic-resource.svg b/src/icons/svg/svg-basic-resource.svg
new file mode 100644
index 0000000..89ebe8b
--- /dev/null
+++ b/src/icons/svg/svg-basic-resource.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-bill.svg b/src/icons/svg/svg-bill.svg
new file mode 100644
index 0000000..1f1e243
--- /dev/null
+++ b/src/icons/svg/svg-bill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-business.svg b/src/icons/svg/svg-business.svg
new file mode 100644
index 0000000..96a259c
--- /dev/null
+++ b/src/icons/svg/svg-business.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-compute-resource.svg b/src/icons/svg/svg-compute-resource.svg
new file mode 100644
index 0000000..4314add
--- /dev/null
+++ b/src/icons/svg/svg-compute-resource.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-db.svg b/src/icons/svg/svg-db.svg
new file mode 100644
index 0000000..51a8173
--- /dev/null
+++ b/src/icons/svg/svg-db.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-disabled.svg b/src/icons/svg/svg-disabled.svg
new file mode 100644
index 0000000..d74839d
--- /dev/null
+++ b/src/icons/svg/svg-disabled.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-dot.svg b/src/icons/svg/svg-dot.svg
new file mode 100644
index 0000000..1b8463f
--- /dev/null
+++ b/src/icons/svg/svg-dot.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-middle.svg b/src/icons/svg/svg-middle.svg
new file mode 100644
index 0000000..1cb263b
--- /dev/null
+++ b/src/icons/svg/svg-middle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-network-resource.svg b/src/icons/svg/svg-network-resource.svg
new file mode 100644
index 0000000..f452779
--- /dev/null
+++ b/src/icons/svg/svg-network-resource.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-operate.svg b/src/icons/svg/svg-operate.svg
new file mode 100644
index 0000000..bb6f80c
--- /dev/null
+++ b/src/icons/svg/svg-operate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-ops-analysis.svg b/src/icons/svg/svg-ops-analysis.svg
new file mode 100644
index 0000000..26c4eb0
--- /dev/null
+++ b/src/icons/svg/svg-ops-analysis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-order.svg b/src/icons/svg/svg-order.svg
new file mode 100644
index 0000000..a67b375
--- /dev/null
+++ b/src/icons/svg/svg-order.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-permission.svg b/src/icons/svg/svg-permission.svg
new file mode 100644
index 0000000..67182a7
--- /dev/null
+++ b/src/icons/svg/svg-permission.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-port.svg b/src/icons/svg/svg-port.svg
new file mode 100644
index 0000000..b8b5a98
--- /dev/null
+++ b/src/icons/svg/svg-port.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-product.svg b/src/icons/svg/svg-product.svg
new file mode 100644
index 0000000..b2fc579
--- /dev/null
+++ b/src/icons/svg/svg-product.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-repository.svg b/src/icons/svg/svg-repository.svg
new file mode 100644
index 0000000..043a59e
--- /dev/null
+++ b/src/icons/svg/svg-repository.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-resource-interface.svg b/src/icons/svg/svg-resource-interface.svg
new file mode 100644
index 0000000..a440486
--- /dev/null
+++ b/src/icons/svg/svg-resource-interface.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-resource-manage.svg b/src/icons/svg/svg-resource-manage.svg
new file mode 100644
index 0000000..b636fb0
--- /dev/null
+++ b/src/icons/svg/svg-resource-manage.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-resource-monitor.svg b/src/icons/svg/svg-resource-monitor.svg
new file mode 100644
index 0000000..de2fd08
--- /dev/null
+++ b/src/icons/svg/svg-resource-monitor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-resource-ops.svg b/src/icons/svg/svg-resource-ops.svg
new file mode 100644
index 0000000..7631e8d
--- /dev/null
+++ b/src/icons/svg/svg-resource-ops.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-screen.svg b/src/icons/svg/svg-screen.svg
new file mode 100644
index 0000000..1a18939
--- /dev/null
+++ b/src/icons/svg/svg-screen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-security.svg b/src/icons/svg/svg-security.svg
new file mode 100644
index 0000000..649f460
--- /dev/null
+++ b/src/icons/svg/svg-security.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-service-ops.svg b/src/icons/svg/svg-service-ops.svg
new file mode 100644
index 0000000..cd5d63c
--- /dev/null
+++ b/src/icons/svg/svg-service-ops.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-setting.svg b/src/icons/svg/svg-setting.svg
new file mode 100644
index 0000000..c32d709
--- /dev/null
+++ b/src/icons/svg/svg-setting.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-storage-resource.svg b/src/icons/svg/svg-storage-resource.svg
new file mode 100644
index 0000000..f8a773e
--- /dev/null
+++ b/src/icons/svg/svg-storage-resource.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/svg-task-platform.svg b/src/icons/svg/svg-task-platform.svg
new file mode 100644
index 0000000..9e3d0bc
--- /dev/null
+++ b/src/icons/svg/svg-task-platform.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/layouts/app.vue b/src/layouts/app.vue
new file mode 100644
index 0000000..8b4333c
--- /dev/null
+++ b/src/layouts/app.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
+
diff --git a/src/layouts/blank.vue b/src/layouts/blank.vue
new file mode 100644
index 0000000..b312b15
--- /dev/null
+++ b/src/layouts/blank.vue
@@ -0,0 +1,7 @@
+
diff --git a/src/layouts/components/Header.vue b/src/layouts/components/Header.vue
new file mode 100644
index 0000000..e66cdf6
--- /dev/null
+++ b/src/layouts/components/Header.vue
@@ -0,0 +1,91 @@
+/** * Created by HaijunZhang on 2019/12/18. */
+
+
+
+
+
+
+
diff --git a/src/layouts/components/Help.vue b/src/layouts/components/Help.vue
new file mode 100644
index 0000000..944dfcb
--- /dev/null
+++ b/src/layouts/components/Help.vue
@@ -0,0 +1,354 @@
+
+
+
+
+
+
+
+
+ 新手入门
+
+
+
+
+
+
新手指引
+
当前还没有资源接入,可按照下方新手指引完成接入和系统配置,此页面关闭后可在新手指引中查找
+
+
+
管理端
+
+
+
+
{{ key + 1 }}
+
{{ item }}
+
+
+
+
+
+
{{ 6 - key }}
+
{{ item }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/SiteMessage.vue b/src/layouts/components/SiteMessage.vue
new file mode 100644
index 0000000..5f71c53
--- /dev/null
+++ b/src/layouts/components/SiteMessage.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+ 查看更多
+
+
+
+
+ {{ item.name }}
+
+
+ {{ item.content }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/SystemTip.vue b/src/layouts/components/SystemTip.vue
new file mode 100644
index 0000000..95832f0
--- /dev/null
+++ b/src/layouts/components/SystemTip.vue
@@ -0,0 +1,63 @@
+
+ {{ tipText }},为了避免影响您的正常使用,请尽快激活
+
+
+
diff --git a/src/layouts/components/TagsView/ScrollPanel.vue b/src/layouts/components/TagsView/ScrollPanel.vue
new file mode 100644
index 0000000..34f3e22
--- /dev/null
+++ b/src/layouts/components/TagsView/ScrollPanel.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/TagsView/SelectRound.vue b/src/layouts/components/TagsView/SelectRound.vue
new file mode 100644
index 0000000..85bf575
--- /dev/null
+++ b/src/layouts/components/TagsView/SelectRound.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
diff --git a/src/layouts/components/TagsView/index.vue b/src/layouts/components/TagsView/index.vue
new file mode 100644
index 0000000..76ccef3
--- /dev/null
+++ b/src/layouts/components/TagsView/index.vue
@@ -0,0 +1,289 @@
+
+
+
+
+
+ {{ tag.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/ThirdMenu.vue b/src/layouts/components/ThirdMenu.vue
new file mode 100644
index 0000000..80f1d80
--- /dev/null
+++ b/src/layouts/components/ThirdMenu.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
diff --git a/src/layouts/components/headerMenu.vue b/src/layouts/components/headerMenu.vue
new file mode 100644
index 0000000..a515de7
--- /dev/null
+++ b/src/layouts/components/headerMenu.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
diff --git a/src/layouts/components/lockScreen.vue b/src/layouts/components/lockScreen.vue
new file mode 100644
index 0000000..a9eca55
--- /dev/null
+++ b/src/layouts/components/lockScreen.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/personal/InfoDialog.vue b/src/layouts/components/personal/InfoDialog.vue
new file mode 100644
index 0000000..8f6f7d7
--- /dev/null
+++ b/src/layouts/components/personal/InfoDialog.vue
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/personal/index.vue b/src/layouts/components/personal/index.vue
new file mode 100644
index 0000000..c6cb6b7
--- /dev/null
+++ b/src/layouts/components/personal/index.vue
@@ -0,0 +1,169 @@
+
+
+
+
+
{{ userData.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/process.vue b/src/layouts/components/process.vue
new file mode 100644
index 0000000..d52dc97
--- /dev/null
+++ b/src/layouts/components/process.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+ 流程工单
+
+
+ 问题工单
+
+
+
+
+
+
diff --git a/src/layouts/components/rightContent.vue b/src/layouts/components/rightContent.vue
new file mode 100644
index 0000000..cac2ce8
--- /dev/null
+++ b/src/layouts/components/rightContent.vue
@@ -0,0 +1,30 @@
+/** * Created by HaijunZhang on 2019/12/18. */
+
+
+
+
+
+
+
diff --git a/src/layouts/components/sidebar/BaseMenu.vue b/src/layouts/components/sidebar/BaseMenu.vue
new file mode 100644
index 0000000..0d158c7
--- /dev/null
+++ b/src/layouts/components/sidebar/BaseMenu.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
diff --git a/src/layouts/components/sidebar/MenuItem.vue b/src/layouts/components/sidebar/MenuItem.vue
new file mode 100644
index 0000000..c37ac83
--- /dev/null
+++ b/src/layouts/components/sidebar/MenuItem.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/sidebar/OperateBtn.vue b/src/layouts/components/sidebar/OperateBtn.vue
new file mode 100644
index 0000000..6285b4e
--- /dev/null
+++ b/src/layouts/components/sidebar/OperateBtn.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
diff --git a/src/layouts/components/sidebar/Sidebar.vue b/src/layouts/components/sidebar/Sidebar.vue
new file mode 100644
index 0000000..a01843a
--- /dev/null
+++ b/src/layouts/components/sidebar/Sidebar.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+
diff --git a/src/layouts/components/sidebar/SidebarItem.vue b/src/layouts/components/sidebar/SidebarItem.vue
new file mode 100644
index 0000000..39960c7
--- /dev/null
+++ b/src/layouts/components/sidebar/SidebarItem.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/sidebar/theme.scss b/src/layouts/components/sidebar/theme.scss
new file mode 100644
index 0000000..a0abe48
--- /dev/null
+++ b/src/layouts/components/sidebar/theme.scss
@@ -0,0 +1,15 @@
+.sidebar-menu {
+ border: 0;
+ background: inherit;
+ ::v-deep {
+ .el-menu {
+ background: inherit;
+ }
+ .el-menu-item,
+ .el-menu-item i,
+ .el-submenu__title,
+ .el-submenu__title i {
+ color: inherit;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/layouts/components/sidebar/useGlobalStyle.ts b/src/layouts/components/sidebar/useGlobalStyle.ts
new file mode 100644
index 0000000..4e549f5
--- /dev/null
+++ b/src/layouts/components/sidebar/useGlobalStyle.ts
@@ -0,0 +1,34 @@
+import { onUnmounted, computed, unref } from 'vue'
+import { useStore } from 'vuex'
+
+export default function () {
+ const store = useStore()
+ const pageConfigs = computed(() => store.getters.pageConfig)
+ const cssStyle: any = computed(() => {
+ const { menuBgColour, subMenuBgColour, menuFontColour, menuFontSelectColour, menuSelectColour } = pageConfigs.value
+ return {
+ '--czhj-color-background': menuBgColour,
+ '--czhj-color-background-sub': subMenuBgColour,
+ '--czhj-color-text': menuFontColour,
+ '--czhj-color-background-selected': menuSelectColour,
+ '--czhj-color-text-selected': menuFontSelectColour
+ }
+ })
+ const style = document.createElement('style')
+ style.setAttribute('type', 'text/css')
+ function generateCss() {
+ let str = ''
+ Object.keys(unref(cssStyle)).forEach((item: string) => {
+ str += `${item}:${cssStyle.value[item]};`
+ })
+ return str
+ }
+ style.innerHTML = `:root{${generateCss()}}`
+ document.head.appendChild(style)
+ onUnmounted(() => {
+ style && style.remove()
+ })
+ return {
+ style: cssStyle
+ }
+}
diff --git a/src/layouts/components/sidebar/useLink.ts b/src/layouts/components/sidebar/useLink.ts
new file mode 100644
index 0000000..948d1fe
--- /dev/null
+++ b/src/layouts/components/sidebar/useLink.ts
@@ -0,0 +1,20 @@
+import { isExternalLink } from 'utils/resolvePath'
+import { useRouter } from 'vue-router'
+import type { Router } from 'vue-router'
+
+export function openWindow(url: string, opt?: { target?: '_self' | '_blank' }) {
+ const { target = '__blank' } = opt || {}
+ window.open(url, target)
+}
+export function useLink(_router?: Router) {
+ const { push } = _router || useRouter()
+ function goPage(url: string) {
+ if (isExternalLink(url)) {
+ return openWindow(url)
+ }
+ push(url).catch((e) => {
+ console.log(e)
+ })
+ }
+ return goPage
+}
diff --git a/src/layouts/components/sidebar/useOpenKeys.ts b/src/layouts/components/sidebar/useOpenKeys.ts
new file mode 100644
index 0000000..e626de4
--- /dev/null
+++ b/src/layouts/components/sidebar/useOpenKeys.ts
@@ -0,0 +1,45 @@
+import { ref, watch, computed, unref } from 'vue'
+import { useRoute } from 'vue-router'
+import { urlToList } from './utils'
+import { useStore } from 'vuex'
+
+export default function (props: { mainMenu: boolean }) {
+ const route = useRoute()
+ const store = useStore()
+ function getDefaultOpenKeys(path: string) {
+ return urlToList(path)
+ }
+ const { mainMenu } = props
+ const collapsed = computed(() => store.state.app.isCollapsed)
+ const openKeys = ref(getDefaultOpenKeys(route.path))
+ if (mainMenu) {
+ watch(
+ () => route.path,
+ () => {
+ if (unref(collapsed)) return
+ openKeys.value = getDefaultOpenKeys(route.path)
+ }
+ )
+ watch(collapsed, () => {
+ if (!collapsed.value) openKeys.value = getDefaultOpenKeys(route.path)
+ })
+ }
+ // 处理菜单数据,只保持一个子菜单展开
+ const handleOpenChange = (openKey: string[]) => {
+ const result: string[] = []
+ if (openKey.length) {
+ const lastOpenKey = [...openKey].pop() as string
+ openKey.forEach((item) => {
+ // 子菜单打开父菜单也需要展开 || 父菜单展开之前缓存的子菜单数据也要展开
+ if (lastOpenKey.includes(item) || item.includes(lastOpenKey)) {
+ result.push(item)
+ }
+ })
+ }
+ openKeys.value = result
+ }
+ return {
+ openKeys,
+ handleOpenChange,
+ }
+}
diff --git a/src/layouts/components/sidebar/utils.js b/src/layouts/components/sidebar/utils.js
new file mode 100644
index 0000000..075703e
--- /dev/null
+++ b/src/layouts/components/sidebar/utils.js
@@ -0,0 +1,31 @@
+/**
+ * Created by HaijunZhang on 2019/7/5.
+ */
+// 获取菜单数组
+export function getFlatMenuPath(menus) {
+ const paths = []
+ menus.forEach((item) => {
+ paths.push(item.path)
+ if (item.children) {
+ paths.push(...getFlatMenuPath(item.children))
+ }
+ })
+ return paths
+}
+// /userinfo/2144/id => ['/userinfo','/useinfo/2144,'/userindo/2144/id']
+export function urlToList(url) {
+ const urllist = url.split('/').filter((i) => i)
+ return urllist.map((urlItem, index) => {
+ return `/${urllist.slice(0, index + 1).join('/')}`
+ })
+}
+export const getIcon = (icon, iconMap) => {
+ if (iconMap) return iconMap[icon]
+ if (typeof icon !== 'string') return icon
+ // if (icon.indexOf('/') > -1) {
+ // return
+ // }
+ // if (icon.includes('iconfont')) {
+ // return
+ // }
+}
diff --git a/src/layouts/home.vue b/src/layouts/home.vue
new file mode 100644
index 0000000..4604a54
--- /dev/null
+++ b/src/layouts/home.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/redirect.vue b/src/layouts/redirect.vue
new file mode 100644
index 0000000..103fb13
--- /dev/null
+++ b/src/layouts/redirect.vue
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 0000000..4f816c8
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,11 @@
+import { createApp } from 'vue'
+import router from '@/router/index'
+import store from '@/store'
+import '@/permission'
+import App from '@/App.vue'
+import 'virtual:svg-icons-register'
+import startApp from '@/core/register'
+
+const application = createApp(App)
+application.use(store).use(router).mount('#master-container')
+startApp()
diff --git a/src/mixins/getGlobalSocket.js b/src/mixins/getGlobalSocket.js
new file mode 100644
index 0000000..cc9f32b
--- /dev/null
+++ b/src/mixins/getGlobalSocket.js
@@ -0,0 +1,10 @@
+export default {
+ computed: {
+ $webSocket() {
+ return this.$store.state.app.$webSocket
+ }
+ },
+ created() {
+ this.$webSocket.onmessage = this.onmessage
+ }
+}
diff --git a/src/mixins/selection.js b/src/mixins/selection.js
new file mode 100644
index 0000000..a2f2fa0
--- /dev/null
+++ b/src/mixins/selection.js
@@ -0,0 +1,12 @@
+export default {
+ data() {
+ return {
+ selectionIds: [],
+ }
+ },
+ methods: {
+ handleSelectionChange(selections) {
+ this.selectionIds = selections.map((item) => item.id)
+ },
+ },
+}
diff --git a/src/mixins/webSocket.js b/src/mixins/webSocket.js
new file mode 100644
index 0000000..6c89708
--- /dev/null
+++ b/src/mixins/webSocket.js
@@ -0,0 +1,30 @@
+import WebSocket from 'cmp-socket'
+import { getToken } from 'utils/auth'
+
+export default {
+ data() {
+ return {
+ webSocket: '',
+ }
+ },
+ created() {
+ const protocol = location.protocol === 'http:' ? 'ws' : 'wss'
+ this.webSocket = new WebSocket({
+ url: `${protocol}://${location.host}/api/sms/messageService`,
+ commonFun: this.messageCommonFun,
+ pingMsg: 'HeartBeat',
+ reConnectNum: 5,
+ params: getToken(),
+ })
+ if (this.onmessage && typeof this.onmessage === 'function') {
+ this.webSocket.onmessage = this.onmessage
+ }
+ },
+ destroyed() {
+ this.webSocket.Destroy()
+ this.webSocket = null
+ },
+ methods: {
+ messageCommonFun() {},
+ },
+}
diff --git a/src/models/user.d.ts b/src/models/user.d.ts
new file mode 100644
index 0000000..8c082c3
--- /dev/null
+++ b/src/models/user.d.ts
@@ -0,0 +1,19 @@
+export interface IUser {
+ id?: number
+ account: string
+ name: string
+ status: string
+ isManager: boolean
+ sex: boolean
+ password: string
+ email: string
+ mobile: string
+ dingtalk: string
+ wechat: string
+ company: string
+ jobNumber: string
+ tenantId: number
+ remark: string
+ departId: number | undefined
+ departIds: number[]
+}
diff --git a/src/permission.js b/src/permission.js
new file mode 100644
index 0000000..2215e66
--- /dev/null
+++ b/src/permission.js
@@ -0,0 +1,52 @@
+/**
+ * Created by HaijunZhang on 2018/11/12.
+ */
+import store from './store'
+import router from './router'
+import { getToken, setToken } from 'utils/auth'
+import { getQuery } from 'utils'
+import { isEmpty, assign } from 'lodash-es'
+
+const { token } = getQuery(location.hash)
+if (token) {
+ setToken(token)
+}
+
+const whiteList = ['/login', '/404', '/401', '/license', '/sso']
+router.beforeEach(async (to, from, next) => {
+ if (isEmpty(history.state.current)) {
+ assign(history.state, { current: from.fullPath })
+ }
+ if (getToken()) {
+ // 判断用户是否处于登录状态
+ if (to.path === '/login') {
+ // 如果已经登录重定向到主页
+ await store.dispatch('permission/ResetRoutes', false)
+ next('/login')
+ } else {
+ // 为null的场景: 刷新页面或者新开窗口;
+ const addRoutes = store.getters.addRoutes
+ if (addRoutes) {
+ next()
+ } else {
+ try {
+ await store.dispatch('permission/GenerateRoutes')
+ store.dispatch('GetUserInfo')
+ next({ ...to, replace: true })
+ } catch (error) {
+ // remove token and go to login page to re-login
+ await store.dispatch('permission/ResetRoutes', false)
+ next('/login')
+ }
+ }
+ }
+ } else {
+ // 用户没有登录
+ if (whiteList.includes(to.path)) {
+ // 在白名单里直接跳转
+ next()
+ } else {
+ next('/login')
+ }
+ }
+})
diff --git a/src/router/constant.ts b/src/router/constant.ts
new file mode 100644
index 0000000..c85eeeb
--- /dev/null
+++ b/src/router/constant.ts
@@ -0,0 +1,86 @@
+import type { RouteRecordRaw } from 'vue-router'
+import BlankView from '@/layouts/blank.vue'
+
+const routes: RouteRecordRaw[] = [
+ {
+ name: 'Login',
+ path: '/login',
+ component: () => import('views/login/login.vue')
+ },
+ {
+ path: '/sso',
+ component: () => import('views/login/sso.vue')
+ },
+ {
+ name: 'LockMe',
+ path: '/lockme',
+ component: () => import('views/login/lockme.vue')
+ },
+ {
+ name: 'Redirect',
+ path: '/redirect',
+ meta: { noTag: true },
+ component: () => import('@/layouts/redirect.vue')
+ },
+ {
+ path: '/',
+ component: () => import('@/layouts/home.vue'),
+ redirect: '/sms-web/resource_dashboard',
+ meta: {
+ title: '主页'
+ },
+ name: 'Home',
+ children: [
+ {
+ path: '/sms-web/resource_dashboard',
+ meta: {
+ noTag: true,
+ hiddenSide: true
+ },
+ component: BlankView
+ },
+ {
+ path: '/sms-web/redirect',
+ meta: {
+ noTag: true,
+ hiddenSide: true
+ },
+ component: BlankView
+ },
+ {
+ path: '/personal/message',
+ meta: {
+ title: '我的消息'
+ },
+ component: BlankView
+ },
+ {
+ path: '/personal/documents',
+ meta: {
+ title: '帮助中心'
+ },
+ component: BlankView
+ },
+ {
+ path: '/personal/process_order',
+ meta: {
+ title: '流程工单'
+ },
+ component: BlankView
+ },
+ {
+ path: '/personal/service_work_order',
+ meta: {
+ title: '问题工单'
+ },
+ component: BlankView
+ }
+ ]
+ },
+ {
+ path: '/license',
+ name: 'License',
+ component: () => import('@/views/about/index.vue')
+ }
+]
+export default routes
diff --git a/src/router/index.ts b/src/router/index.ts
new file mode 100644
index 0000000..3d7c515
--- /dev/null
+++ b/src/router/index.ts
@@ -0,0 +1,20 @@
+import { createRouter, createWebHistory } from 'vue-router'
+import routes from './constant'
+
+function createRoute() {
+ return createRouter({
+ history: createWebHistory(),
+ routes,
+ })
+}
+const router = createRoute()
+export const asyncRouterMap = {
+ Home: () => import('@/layouts/home.vue'),
+ App: () => import('@/layouts/app.vue'),
+}
+export function resetRouter() {
+ // const newRouter = createRoute();
+ // router.matcher = newRouter.matcher; // reset router
+}
+
+export default router
diff --git a/src/services/index.js b/src/services/index.js
new file mode 100644
index 0000000..65d9069
--- /dev/null
+++ b/src/services/index.js
@@ -0,0 +1,78 @@
+/**
+ * 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 getTokenInfo(params) {
+ return request.post('/sms/v1/sso/token/info', params)
+}
+export function getToken() {
+ return request.post('/sms/v1/sso/check')
+}
+export function getUserInfo() {
+ return request.get('/sms/v1/login/detail')
+}
+export function logout() {
+ return request.post('/sms/v1/users/logout')
+}
+export function getConfig(params) {
+ return request.get('/sms/v1/logo', {
+ params: wrapperParams(params),
+ })
+}
+export function getDict(data) {
+ return request.get('/dict/children', {
+ params: wrapperParams(data),
+ })
+}
+export function getSysconf() {
+ return request.get('/sms/v1/configs')
+}
+export function getSysconfCode(params) {
+ return request.get('/sms/v1/configs', { params })
+}
+export function modifySysconf(data) {
+ return request.put('/sms/v1/configs', wrapperParams(data))
+}
+
+export function syncLdapApi() {
+ return request.post('/sms/v1/configs/syncLdap')
+}
+// 获取首页概览信息
+export function getPortal(params) {
+ return request.get('/ims/v1/portal/platform/stats', { params: wrapperParams(params) })
+}
+export function getServiceQuota(tenantId, data) {
+ return request.get(`/cos/v1/tenants/${tenantId}/quotas`, {
+ params: wrapperParams(data),
+ })
+}
+export function replaceToken(params) {
+ return request.get('/sms/v1/token', { params })
+}
+// 获取用户权限
+export function getUserPermissions() {
+ return request.get('/sms/v1/users/permissions')
+}
+// 获取系统配置信息
+export function getSystemConfigs(params) {
+ return request.get('/sms/v1/configs', { params })
+}
+// 获取树状系统配置信息
+export function getSystemTreeConfigs(params) {
+ return request.get('/sms/v1/configs/tree', { params })
+}
+// 更新系统配置信息
+export function updateSystemConfigs(params) {
+ return request.put('/sms/v1/system-configs', params, {
+ headers: { 'Content-Type': 'multipart/form-data', BsmAjaxHeader: true, options: { noSeri: true } },
+ })
+}
+// 测试连接
+export function testLinkApi(category) {
+ return request.get('/sms/v1/configs/test', { params: { category } })
+}
diff --git a/src/services/license.js b/src/services/license.js
new file mode 100644
index 0000000..e1e8e56
--- /dev/null
+++ b/src/services/license.js
@@ -0,0 +1,26 @@
+/**
+ * Created by HaijunZhang on 2019/7/23.
+ */
+import request from 'utils/request'
+
+const baseUrl = '/sms/v1/config'
+
+export function getStatus(params) {
+ return request.get(`${baseUrl}/status`, {
+ params,
+ })
+}
+export function getSid() {
+ return request.get('/sms/v1/status/sids')
+}
+export function getServer(params) {
+ return request.get(`${baseUrl}/servers`, {
+ params,
+ })
+}
+export function getLicense() {
+ return request.get(`${baseUrl}/license`)
+}
+export function installCaptcha(params) {
+ return request.post('/sms/v1/config/captcha/install', params)
+}
diff --git a/src/services/manager.ts b/src/services/manager.ts
new file mode 100644
index 0000000..5bacd7b
--- /dev/null
+++ b/src/services/manager.ts
@@ -0,0 +1,56 @@
+/* eslint-disable no-undef */
+/**
+ * Created by HaijunZhang on 2019/7/23.
+ */
+import request from 'utils/request'
+import { wrapperParams, downloadFile } from 'utils/index'
+import type { IUser } from '@/models/user'
+
+const baseUrl = '/sms/v1/users'
+export function getUser(params: Base.IListParams) {
+ return request.get>(baseUrl, {
+ params,
+ })
+}
+export function getUserDetail(id: number) {
+ return request.get(`${baseUrl}/${id}`)
+}
+export function createUser(params: IUser) {
+ return request.post(baseUrl, wrapperParams(params))
+}
+export function modifyUser(params: IUser) {
+ return request.put(`${baseUrl}/${params.id}`, wrapperParams(params))
+}
+export function removeUser(id: number) {
+ return request.delete(`${baseUrl}/${id}`)
+}
+
+export function accreditManager(id: number, roleIds: number[]) {
+ return request.patch(`${baseUrl}/${id}/accredit`, roleIds)
+}
+export function resetManager(id: number, password: string) {
+ return request.patch(`${baseUrl}/${id}/reset`, { password })
+}
+export function operateManager(id: number, action: string) {
+ return request.patch(`${baseUrl}/${id}`, { action })
+}
+export function batchOperateManager(ids: number[], action: string) {
+ return request.patch(`${baseUrl}`, { action, ids })
+}
+export function changePassword(id: number, params: { oldPassword: string; password: string }) {
+ return request.patch(`${baseUrl}/${id}/pwd`, params)
+}
+export function checkUser(id: number) {
+ return request.get(`${baseUrl}/${id}/status`)
+}
+export function getRolesByUser(id: number) {
+ return request.get(`${baseUrl}/${id}/roles`)
+}
+export function getTrack(params: Base.IListParams) {
+ return request.get(`${baseUrl}/track`, {
+ params,
+ })
+}
+export function exportUser(params: Base.IListParams) {
+ downloadFile(`${baseUrl}/export`, params)
+}
diff --git a/src/services/message.js b/src/services/message.js
new file mode 100644
index 0000000..2697c89
--- /dev/null
+++ b/src/services/message.js
@@ -0,0 +1,23 @@
+/**
+ * Created by HaijunZhang on 2019/7/23.
+ */
+import request from 'utils/request'
+
+const baseUrl = '/sms/v1/messages'
+export function getMessage(params) {
+ return request.get(baseUrl, {
+ params,
+ })
+}
+export function getMessageStats() {
+ return request.get(`${baseUrl}/stats`)
+}
+export function getMessageDetail(id) {
+ return request.get(`${baseUrl}/${id}`)
+}
+export function removeMessage(id) {
+ return request.delete(`${baseUrl}/${id}`)
+}
+export function readAllMessage(params) {
+ return request.patch(`${baseUrl}`, params)
+}
diff --git a/src/services/user.js b/src/services/user.js
new file mode 100644
index 0000000..35f5758
--- /dev/null
+++ b/src/services/user.js
@@ -0,0 +1,50 @@
+/**
+ * Created by HaijunZhang on 2019/7/23.
+ */
+import request from 'utils/request'
+import { wrapperParams } from 'utils/index'
+
+const baseUrl = '/sms/v1/users'
+export function getUser(params) {
+ return request.get(baseUrl, {
+ params,
+ })
+}
+export function getUserDetail(id) {
+ return request.get(`${baseUrl}/${id}`)
+}
+export function createUser(params) {
+ return request.post(baseUrl, wrapperParams(params))
+}
+export function modifyUser(params) {
+ return request.put(`${baseUrl}/${params.id}`, wrapperParams(params))
+}
+export function removeUser(id) {
+ return request.delete(`${baseUrl}/${id}`)
+}
+export function getManager(id) {
+ return request.get(`/sms/v1/tenants/${id}`)
+}
+/*
+ * action取值为:
+ * lock active reset accredit change
+ */
+export function operateUser(id, action, params) {
+ return request.patch(`${baseUrl}/${id}`, {
+ action,
+ ...wrapperParams(params),
+ })
+}
+export function checkStatus(data) {
+ const { accountCategory, id } = data
+ const url = accountCategory === 'User' ? baseUrl : '/sms/v1/tenants'
+ return request.get(`${url}/${id}/status`)
+}
+export function getRolesByUser(id) {
+ return request.get(`${baseUrl}/${id}/roles`)
+}
+export function getTrack(params) {
+ return request.get(`${baseUrl}/track`, {
+ params,
+ })
+}
diff --git a/src/shims-vue.d.ts b/src/shims-vue.d.ts
new file mode 100644
index 0000000..3804a43
--- /dev/null
+++ b/src/shims-vue.d.ts
@@ -0,0 +1,6 @@
+/* eslint-disable */
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue'
+ const component: DefineComponent<{}, {}, any>
+ export default component
+}
diff --git a/src/store/getters.js b/src/store/getters.js
new file mode 100644
index 0000000..e0cc00c
--- /dev/null
+++ b/src/store/getters.js
@@ -0,0 +1,8 @@
+const getters = {
+ addRoutes: (state) => state.permission.addRoutes,
+ userData: (state) => state.app.userData,
+ pageConfig: (state) => state.app.pageConfig,
+ systemConfig: (state) => state.app.systemConfig,
+ appLoading: (state) => state.app.appLoading,
+}
+export default getters
diff --git a/src/store/index.ts b/src/store/index.ts
new file mode 100644
index 0000000..b48f11f
--- /dev/null
+++ b/src/store/index.ts
@@ -0,0 +1,10 @@
+import { createStore } from 'vuex'
+import getters from './getters'
+import { getModules } from '@/utils/autoImport'
+
+const modulesMap: any = import.meta.globEager('./modules/*.js')
+const modules = getModules(modulesMap)
+export default createStore({
+ modules,
+ getters
+})
diff --git a/src/store/modules/app.js b/src/store/modules/app.js
new file mode 100644
index 0000000..0b13c11
--- /dev/null
+++ b/src/store/modules/app.js
@@ -0,0 +1,115 @@
+/**
+ * Created by Zhang Haijun on 2018/6/15.
+ */
+import { getSystemConfigs, getUserInfo } from 'services'
+import { userKey, enableUserStorage } from '@/config'
+import { setBrowser } from '../utils'
+import actionStore from '@/core/actions'
+
+const state = {
+ isCollapsed: false,
+ sideMenuData: [],
+ pageConfig: {},
+ systemConfig: {},
+ userData: null,
+ operateTime: '',
+ basePath: '',
+ $webSocket: {},
+ expire: false,
+ appLoading: false
+}
+const mutations = {
+ SET_EXPIRE(state, value) {
+ state.expire = value
+ },
+ SET_APP_LOADING(state, value) {
+ state.appLoading = value
+ },
+ SET_OPERATETIME(state) {
+ state.operateTime = new Date().getTime()
+ },
+ SET_WEBSOCKET(state, value) {
+ state.$webSocket = value
+ },
+ SET_ONMESSAGE(state, value) {
+ if (state.$webSocket) {
+ state.$webSocket.onmessage = value
+ }
+ },
+ SET_USERDATA(state, userData = {}) {
+ state.userData = userData
+ actionStore.setGlobalState({
+ userData
+ })
+ },
+ RESET_USER(state) {
+ state.userData = {}
+ if (enableUserStorage) {
+ localStorage.removeItem(userKey)
+ }
+ },
+ TOGGLE_SIDEBAR(state) {
+ state.isCollapsed = !state.isCollapsed
+ },
+ SET_COLLAPSED(state, value) {
+ state.isCollapsed = value
+ },
+ SETTING_SIDE_MENU(state, data) {
+ state.sideMenuData = data
+ },
+ SETTING_BASE_PATH(state, data) {
+ state.basePath = data
+ },
+ SETTING_PAGE_CONFIG(state, data) {
+ const { browserIcon, browserTitle } = data
+ setBrowser(browserIcon, browserTitle)
+ state.pageConfig = data
+ },
+ SETTING_SYSTEM_CONFIG(state, data) {
+ state.systemConfig = data
+ }
+}
+const actions = {
+ async GetUserInfo({ commit, state: { userData } }) {
+ // 如果启用了本地缓存,直接在缓存取数据
+ if (enableUserStorage && !userData) {
+ const userData = JSON.parse(localStorage.getItem(userKey))
+ if (userData) {
+ // 判断下菜单数据是否存在
+ commit('SET_USERDATA', userData)
+ return
+ }
+ }
+ const data = await getUserInfo()
+ if (data.success) {
+ // 云桌面登录与系统登录返回值不同
+ const { portrait, ...others } = data.data.Manager || {}
+ const result = {
+ ...others,
+ portrait: portrait || '/web-common-resource/img/avatar_default.png',
+ accountCategory: data.data.accountCategory
+ }
+ if (enableUserStorage) {
+ localStorage.setItem(userKey, JSON.stringify(result))
+ }
+ commit('SET_USERDATA', result)
+ }
+ },
+ async GetPageConfigs({ commit }) {
+ const data = await getSystemConfigs({ category: '界面配置' })
+ if (data.success) {
+ commit('SETTING_PAGE_CONFIG', data.data)
+ }
+ },
+ async GetSystemConfigs({ commit }) {
+ const data = await getSystemConfigs({ codes: 'pwdStrength,lockScreenTime' })
+ if (data.success) {
+ commit('SETTING_SYSTEM_CONFIG', data.data)
+ }
+ }
+}
+export default {
+ state,
+ mutations,
+ actions
+}
diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js
new file mode 100644
index 0000000..208d1d0
--- /dev/null
+++ b/src/store/modules/permission.js
@@ -0,0 +1,180 @@
+/**
+ * Created by HaijunZhang on 2018/11/12.
+ */
+import { resolvePath } from 'utils/resolvePath'
+import { removeToken } from 'utils/auth'
+import { getUserPermissions } from 'services'
+import BlankView from '@/layouts/blank.vue'
+import router, { resetRouter } from '@/router'
+import { menuKey, enablePermissionStorage } from '@/config'
+import { urlToList } from '../utils'
+import actionStore from '@/core/actions'
+
+const resultRoutes = []
+// 递归获取路由的父元素
+const getParent = (path, routes) => {
+ let res
+ for (const route of routes) {
+ const { path: ph, component } = route
+ // 组件存在并且路径相同
+ if (component && ph === path) {
+ res = route
+ break
+ } else if (route.children) {
+ res = getParent(path, route.children)
+ }
+ }
+ return res
+}
+const createRoute = (item) => {
+ const urlList = urlToList(item.path)
+ // ['/system','/system/configs','/system/configs/page'] -> ['/system/configs', '/system']
+ const resultList = urlList.slice(0, urlList.length - 1).reverse()
+ let t = ''
+ for (const url of resultList) {
+ t = getParent(url, resultRoutes)
+ if (t) break
+ }
+ if (t) {
+ if (t.children) {
+ t.children.push(item)
+ } else {
+ t.children = [item]
+ }
+ router.addRoute(t.name, item)
+ } else {
+ resultRoutes.push(item)
+ router.addRoute('Home', item)
+ }
+}
+// 对异步路由数据进行处理生成路由表
+const handleAsyncRouter = (routes, basePath = '/') => {
+ const res = []
+ routes.forEach((route) => {
+ const { router, component, name, redirect, icon, id, category, meta, params } = route
+ // 生成meta对象
+ const metaCache = {}
+ JSON.parse(meta).forEach((item) => {
+ metaCache[item.key] = item.value
+ })
+ // 生成params对象
+ const paramsCache = {}
+ JSON.parse(params).forEach((item) => {
+ paramsCache[item.key] = item.value
+ })
+ const tmp = {
+ id,
+ path: resolvePath(basePath, route.path),
+ name: router,
+ component,
+ redirect,
+ hidden: category === 'view',
+ meta: {
+ ...metaCache,
+ title: name,
+ icon
+ },
+ params: paramsCache
+ }
+ if (component || redirect) {
+ createRoute({
+ path: resolvePath(basePath, route.path),
+ component: !redirect && BlankView,
+ name: router,
+ redirect: redirect && resolvePath(basePath, redirect),
+ meta: {
+ ...metaCache,
+ title: name,
+ icon
+ },
+ params: paramsCache
+ })
+ }
+ if (route.children) {
+ tmp.children = handleAsyncRouter(route.children, tmp.path)
+ }
+ res.push(tmp)
+ })
+ return res
+}
+const state = {
+ addRoutes: null,
+ buttons: []
+}
+const mutations = {
+ SET_ROUTES: (state, routers) => {
+ state.addRoutes = routers
+ },
+ SET_BUTTONS: (state) => {
+ state.buttons = JSON.parse(localStorage.getItem('buttonData'))
+ }
+}
+const actions = {
+ GenerateRoutes({ commit, state: { addRoutes } }) {
+ return new Promise((resolve) => {
+ const callback = (permissions) => {
+ resultRoutes.length = 0
+ actionStore.setGlobalState({
+ permissions
+ })
+ const asyncRouter = handleAsyncRouter(permissions)
+ commit('SET_ROUTES', asyncRouter)
+ resolve(asyncRouter)
+ }
+ // 如果启用了本地缓存并且刷新界面进入,直接在缓存取数据,因为存在一种情况主动更新数据
+ if (enablePermissionStorage && !addRoutes) {
+ const menuData = JSON.parse(localStorage.getItem(menuKey))
+ if (menuData) {
+ // 判断下菜单数据是否存在
+ callback(menuData)
+ return
+ }
+ }
+ getUserPermissions()
+ .then((data) => {
+ if (data.success) {
+ if (enablePermissionStorage) {
+ localStorage.setItem(menuKey, JSON.stringify(data.data))
+ }
+ callback(data.data)
+ }
+ })
+ .catch((err) => {
+ console.log(err)
+ })
+ })
+ },
+ // 动态更新权限
+ ChangeRoutes({ dispatch }) {
+ return new Promise((resolve) => {
+ resetRouter()
+ dispatch('GenerateRoutes').then(() => {
+ resolve()
+ })
+ })
+ },
+ ResetRoutes({ commit, dispatch }, redirectToLogin = true) {
+ return new Promise((resolve) => {
+ resetRouter()
+ commit('SET_ROUTES', null)
+ if (enablePermissionStorage) {
+ localStorage.removeItem(menuKey)
+ }
+ // 重置用户信息
+ commit('RESET_USER', null, { root: true })
+ // 重置用户信息
+ commit('SETTING_SIDE_MENU', [], { root: true })
+ // 重置标签信息
+ dispatch('tagsView/delAllViews', null, { root: true })
+ removeToken()
+ if (redirectToLogin) window.location.href = '/login'
+ resolve()
+ })
+ }
+}
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
diff --git a/src/store/modules/tagsView.js b/src/store/modules/tagsView.js
new file mode 100644
index 0000000..5e6c650
--- /dev/null
+++ b/src/store/modules/tagsView.js
@@ -0,0 +1,132 @@
+const state = {
+ visitedViews: [],
+ cachedViews: [],
+}
+
+const mutations = {
+ ADD_VISITED_VIEW: (state, view) => {
+ const {
+ meta: { noTag, title },
+ } = view
+ if (noTag || !title) return
+ if (state.visitedViews.some((v) => v.path === view.path)) return
+ state.visitedViews.push({ ...view, title })
+ },
+ ADD_CACHED_VIEW: (state, view) => {
+ if (state.cachedViews.includes(view.name)) return
+ if (view.name && !view.meta.noCache) {
+ state.cachedViews.push(view.name)
+ }
+ },
+
+ DEL_VISITED_VIEW: (state, view) => {
+ for (const [i, v] of state.visitedViews.entries()) {
+ if (v.path === view.path) {
+ state.visitedViews.splice(i, 1)
+ break
+ }
+ }
+ },
+ DEL_CACHED_VIEW: (state, view) => {
+ const index = state.cachedViews.indexOf(view.name)
+ if (index > -1) state.cachedViews.splice(index, 1)
+ },
+
+ DEL_OTHERS_VISITED_VIEWS: (state, view) => {
+ state.visitedViews = state.visitedViews.filter((v) => v.meta.fix || v.path === view.path)
+ },
+ DEL_OTHERS_CACHED_VIEWS: (state, view) => {
+ const index = state.cachedViews.indexOf(view.name)
+ if (index > -1) {
+ state.cachedViews = [view.name]
+ } else {
+ // if index = -1, there is no cached tags
+ state.cachedViews = []
+ }
+ },
+ DEL_LEFT_VISITED_VIEWS: (state, index) => {
+ const left = state.visitedViews.slice(0, index).filter((v) => v.meta.fix)
+ const right = state.visitedViews.slice(index)
+ state.visitedViews = [...left, ...right]
+ },
+ DEL_RIGHT_VISITED_VIEWS: (state, index) => {
+ const left = state.visitedViews.slice(0, index + 1)
+ const right = state.visitedViews.slice(index + 1).filter((v) => v.meta.fix)
+ state.visitedViews = [...left, ...right]
+ },
+ UPDATE_CACHE_VIEWS: (state) => {
+ state.cachedViews = state.visitedViews.filter((v) => !v.meta.noCache && v.name).map((v) => v.name)
+ },
+ DEL_ALL_VISITED_VIEWS: (state) => {
+ // keep fix tags
+ const fixTags = state.visitedViews.filter((tag) => tag.meta.fix)
+ state.visitedViews = fixTags
+ },
+ DEL_ALL_CACHED_VIEWS: (state) => {
+ state.cachedViews = []
+ },
+}
+
+const actions = {
+ addView({ commit }, view) {
+ commit('ADD_VISITED_VIEW', view)
+ commit('ADD_CACHED_VIEW', view)
+ },
+ delView({ commit, state }, view) {
+ return new Promise((resolve) => {
+ commit('DEL_VISITED_VIEW', view)
+ commit('DEL_CACHED_VIEW', view)
+ resolve({
+ visitedViews: [...state.visitedViews],
+ cachedViews: [...state.cachedViews],
+ })
+ })
+ },
+ delOthersViews({ commit, state }, view) {
+ return new Promise((resolve) => {
+ commit('DEL_OTHERS_VISITED_VIEWS', view)
+ commit('DEL_OTHERS_CACHED_VIEWS', view)
+ resolve({
+ visitedViews: [...state.visitedViews],
+ cachedViews: [...state.cachedViews],
+ })
+ })
+ },
+ delLeftViews({ commit, state }, { index }) {
+ return new Promise((resolve) => {
+ commit('DEL_LEFT_VISITED_VIEWS', index)
+ commit('UPDATE_CACHE_VIEWS')
+ resolve({
+ visitedViews: [...state.visitedViews],
+ cachedViews: [...state.cachedViews],
+ })
+ })
+ },
+ delRightViews({ commit, state }, { index }) {
+ return new Promise((resolve) => {
+ commit('DEL_RIGHT_VISITED_VIEWS', index)
+ commit('UPDATE_CACHE_VIEWS')
+ resolve({
+ visitedViews: [...state.visitedViews],
+ cachedViews: [...state.cachedViews],
+ })
+ })
+ },
+ delAllViews({ commit, state }) {
+ return new Promise((resolve) => {
+ commit('DEL_ALL_VISITED_VIEWS')
+ commit('DEL_ALL_CACHED_VIEWS')
+ resolve({
+ visitedViews: [...state.visitedViews],
+ cachedViews: [...state.cachedViews],
+ })
+ })
+ },
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions,
+}
diff --git a/src/store/utils.js b/src/store/utils.js
new file mode 100644
index 0000000..7b3dc0c
--- /dev/null
+++ b/src/store/utils.js
@@ -0,0 +1,14 @@
+export const setBrowser = (icon, title) => {
+ const head = document.getElementsByTagName('head')[0]
+ const linkTag = document.createElement('link')
+ linkTag.href = icon
+ linkTag.setAttribute('rel', 'shortcut icon')
+ linkTag.setAttribute('type', 'image/x-icon')
+ head.appendChild(linkTag)
+ document.title = title
+}
+// /system/configs/page -> [ '/system','/system/configs','/system/configs/page']
+export const urlToList = (url) => {
+ const urllist = url.split('/').filter((i) => i)
+ return urllist.map((urlItem, index) => `/${urllist.slice(0, index + 1).join('/')}`)
+}
diff --git a/src/types/shims-ajax.d.ts b/src/types/shims-ajax.d.ts
new file mode 100644
index 0000000..413445a
--- /dev/null
+++ b/src/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/src/types/shims-global.d.ts b/src/types/shims-global.d.ts
new file mode 100644
index 0000000..40e23da
--- /dev/null
+++ b/src/types/shims-global.d.ts
@@ -0,0 +1,53 @@
+declare namespace 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/types/shims-tsx.d.ts b/src/types/shims-tsx.d.ts
new file mode 100644
index 0000000..c656c68
--- /dev/null
+++ b/src/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/src/types/shims-vue.d.ts b/src/types/shims-vue.d.ts
new file mode 100644
index 0000000..cb609c2
--- /dev/null
+++ b/src/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/src/types/shims.tools.d.ts b/src/types/shims.tools.d.ts
new file mode 100644
index 0000000..a67a3d0
--- /dev/null
+++ b/src/types/shims.tools.d.ts
@@ -0,0 +1,8 @@
+declare module 'cmp-basic'
+declare module 'cmp-echarts'
+declare module 'cmp-element'
+declare module 'cmp-socket'
+declare module 'cmp-element/utils'
+declare module 'vite-plugin-svg-icons'
+declare module 'services'
+declare module 'v-viewer/src/component.vue'
diff --git a/src/utils/auth.js b/src/utils/auth.js
new file mode 100644
index 0000000..5e2f118
--- /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/autoImport.ts b/src/utils/autoImport.ts
new file mode 100644
index 0000000..6bbf23f
--- /dev/null
+++ b/src/utils/autoImport.ts
@@ -0,0 +1,30 @@
+// 同步加载
+export function getModules(files: any) {
+ // 当files为方法时为webapock,为对象时为vite
+ const isWebpack = typeof files === 'function'
+ // 路径包含compoennts的是内置组件不向外暴露
+ const modules = (isWebpack ? files.keys() : Object.keys(files))
+ .filter((item: string) => !item.includes('components'))
+ .reduce((modules: any, modulePath: string) => {
+ // set './app.vue' => 'app'
+ const moduleName = modulePath.replace(/^\.\S*\/(.*)\.\w+$/, '$1')
+ const value = isWebpack ? files(modulePath) : files[modulePath]
+ modules[moduleName] = value.default
+ return modules
+ }, {})
+ return modules
+}
+// 异步加载
+export function getAsyncModules(files: any, asyncImport: any) {
+ // 当files为方法时为webapock,为对象时为vite
+ const isWebpack = typeof files === 'function'
+ const modules = (isWebpack ? files.keys() : Object.keys(files))
+ .filter((item: string) => !item.includes('components'))
+ .reduce((modules: any, modulePath: string) => {
+ // set './app.vue' => 'app'
+ const moduleName = modulePath.replace(/^\.\S*\/(.*)\.\w+$/, '$1')
+ modules[moduleName] = isWebpack ? asyncImport(modulePath) : files[moduleName]
+ return modules
+ }, {})
+ return modules
+}
diff --git a/src/utils/crypto.js b/src/utils/crypto.js
new file mode 100644
index 0000000..af22977
--- /dev/null
+++ b/src/utils/crypto.js
@@ -0,0 +1,45 @@
+/**
+ * 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,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7,
+}
+
+// 加密方法
+export function encrypt(word, key = defaultKey) {
+ const srcs = CryptoJS.enc.Utf8.parse(typeof word === 'object' ? JSON.stringify(word) : word)
+ const encrypted = CryptoJS.AES.encrypt(srcs, key, options)
+ return encrypted.toString()
+}
+
+// 解密方法
+export function decrypt(word, key = defaultKey) {
+ const decryptRes = CryptoJS.AES.decrypt(word, key, options)
+ return decryptRes.toString(CryptoJS.enc.Utf8)
+}
+
+export default {
+ encrypt,
+ decrypt,
+ encryptByBase64,
+ decryptByBase64,
+}
diff --git a/src/utils/day.ts b/src/utils/day.ts
new file mode 100644
index 0000000..37bf2f2
--- /dev/null
+++ b/src/utils/day.ts
@@ -0,0 +1,6 @@
+import dayjs from 'dayjs'
+import 'dayjs/locale/zh-cn'
+
+dayjs.locale('zh-cn')
+
+export default dayjs
diff --git a/src/utils/index.js b/src/utils/index.js
new file mode 100644
index 0000000..1e6e717
--- /dev/null
+++ b/src/utils/index.js
@@ -0,0 +1,98 @@
+/**
+ * Created by HaijunZhang on 2019/7/23.
+ */
+import { getToken } from 'utils/auth'
+import dayjs from './day'
+import Clipboard from 'clipboard'
+
+export function wrapperParams(data) {
+ return data
+ // return { params: JSON.stringify(data) }
+}
+export const copyText = (text, event, successCallback, errorCallback) => {
+ const clipboard = new Clipboard(event.target, {
+ text: () => text
+ })
+ clipboard.on('success', () => {
+ successCallback && successCallback()
+ clipboard.destroy()
+ })
+ clipboard.on('error', () => {
+ errorCallback && errorCallback()
+ clipboard.destroy()
+ })
+ clipboard.onClick(event)
+}
+export const formatEqParams = (params) => ({ page: 1, rows: 9999, 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
+}
+// ip比较大小
+export const compareIp = (ip1, ip2) => {
+ const ip1Arr = ip1.split('.')
+ const ip2Arr = ip2.split('.')
+ let flag
+ for (let i = 0; i < 4; i += 1) {
+ if (Number(ip1Arr[i]) > Number(ip2Arr[i])) {
+ flag = 0
+ break
+ } else if (Number(ip1Arr[i]) < Number(ip2Arr[i])) {
+ flag = 1
+ }
+ }
+ return flag
+}
+export function makeTimeStamp() {
+ return dayjs().format('YYYYMMDDHHmmss')
+}
+export function handleSearchParam(params) {
+ // 设置参数
+ const objParams = {}
+ function setParams(sign, key, value) {
+ if (objParams[sign]) {
+ objParams[sign][key] = value
+ } else {
+ objParams[sign] = {
+ [key]: value
+ }
+ }
+ }
+ // 将参数处理为对象
+ for (const a in params) {
+ const value = params[a]
+ // 对参数进行处理,去除空参数
+ if (value === '' || value === undefined || value === null) continue
+ // 对key值进行处理
+ const [key, sign = 'EQ'] = a.split(':')
+ // 将sign全部转换为大写
+ const signs = sign.toLocaleUpperCase()
+ if (signs === 'RANGE') {
+ const [first, second] = value
+ setParams('GET', key, first)
+ setParams('LET', key, second)
+ continue
+ }
+ setParams(signs, key, value)
+ }
+ const result = []
+ for (const a in objParams) {
+ result.push({ param: objParams[a], sign: a })
+ }
+ return JSON.stringify(result)
+}
diff --git a/src/utils/request.js b/src/utils/request.js
new file mode 100644
index 0000000..059a5a4
--- /dev/null
+++ b/src/utils/request.js
@@ -0,0 +1,113 @@
+/**
+ * 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 } from 'ant-design-vue'
+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) => 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.error({
+ message: `请求错误 ${response.status}: ${response.config.url}`,
+ description: 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) => 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':
+ store.dispatch('permission/ResetRoutes')
+ window.location.href = '/license'
+ break
+ case '401':
+ case '509':
+ store.dispatch('permission/ResetRoutes')
+ break
+ default:
+ }
+ if (!options.ignoreError) {
+ notification.error({
+ message: responseData.message || responseData.data
+ })
+ }
+ }
+ 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..63aca96
--- /dev/null
+++ b/src/utils/resolvePath.js
@@ -0,0 +1,22 @@
+/**
+ * Created by HaijunZhang on 2018/12/10.
+ */
+// import path from 'path';
+import { startsWith } from 'lodash-es'
+
+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);
+ const basePathArr = basePath.split('/')
+ const routePathArr = routePath.split('/')
+ if (startsWith(routePath, '/')) {
+ return routePath
+ }
+ const res = [...basePathArr, ...routePathArr].filter((item) => item)
+ return `/${res.join('/')}`
+}
diff --git a/src/utils/uploadFile.js b/src/utils/uploadFile.js
new file mode 100644
index 0000000..5e4e3d0
--- /dev/null
+++ b/src/utils/uploadFile.js
@@ -0,0 +1,89 @@
+// websocket文件上传
+import { getToken } from './auth'
+
+export default function uploadFile(item, callback, errorCallBack) {
+ const protocol = location.protocol === 'http:' ? 'ws' : 'wss'
+ item.isReady = true
+ const socket = new WebSocket(`${protocol}://${location.host}/api/sms/uploadService`, getToken())
+ let i = 0
+ let startSize = 0
+ let endSize = 0
+ const paragraph = 4 * 1024 * 1024 // 以4MB为一个分片
+ const count = parseInt(item.file.size / paragraph) + 1
+ socket.onopen = function () {
+ item.isUploading = true
+ socket.send(
+ JSON.stringify({
+ filename: item.file.name,
+ upload: 'file',
+ })
+ )
+ // 取消上传
+ item.cancel = function () {
+ item.progress = 0
+ socket.send(
+ JSON.stringify({
+ UPLOAD_CANCEL: 'UPLOAD_CANCEL',
+ })
+ )
+ item.isUploading = false
+ }
+ }
+ socket.onmessage = function (event) {
+ const sendFile = function () {
+ if (startSize < item.file.size) {
+ let blob
+ endSize += paragraph
+ if (item.file.webkitSlice) {
+ blob = item.file.webkitSlice(startSize, endSize)
+ } else if (item.file.mozSlice) {
+ blob = item.file.mozSlice(startSize, endSize)
+ } else {
+ blob = item.file.slice(startSize, endSize)
+ }
+ const reader = new FileReader()
+ reader.readAsArrayBuffer(blob)
+
+ reader.onload = function loaded(evt) {
+ const { result } = evt.target
+ i++
+ const isok = (i / count) * 100
+ item.progress = parseInt(isok)
+ startSize = endSize
+ socket.send(result)
+ }
+ } else {
+ item.progress = 100
+ socket.send(
+ JSON.stringify({
+ sendover: 'sendover',
+ })
+ )
+ }
+ }
+ item.isUploading = true
+ item.isCancel = false
+ const obj = JSON.parse(event.data)
+ if (obj.category == 'UPLOAD_ACK') {
+ item.filePath = obj.content
+ sendFile()
+ } else if (obj.category == 'UPLOAD') {
+ if (obj.content == 'SAVE_FAILURE') {
+ item.isUploading = false
+ errorCallBack(item)
+ } else if (obj.content == 'SAVE_SUCCESS') {
+ sendFile()
+ } else if (obj.content == 'TRUE') {
+ callback(item)
+ item.isReady = true
+ item.isSuccess = true
+ item.isUploading = false
+ socket.close()
+ }
+ } else if (obj.category == 'UPLOAD_CANCEL') {
+ item.progress = 0
+ item.isCancel = true
+ socket.close()
+ }
+ }
+}
diff --git a/src/validate/index.ts b/src/validate/index.ts
new file mode 100644
index 0000000..17afe36
--- /dev/null
+++ b/src/validate/index.ts
@@ -0,0 +1,23 @@
+export const required = { required: true, message: '请输入内容' }
+export const complexPassword = {
+ validator: (rule: any, value: string, callback: any) => {
+ const reg = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[~!@#¥%&*()$])[a-zA-Z\d~!@#¥%&*()$]{6,12}$/
+ if (reg.test(value)) {
+ callback()
+ } else {
+ callback(new Error('密码必须由6-12位大小写字母数字和~!@#¥%&*()$组成'))
+ }
+ }
+}
+export const email = { type: 'email', message: '请输入正确的邮箱' }
+// 手机
+export const mobile = {
+ validator: (rule: any, value: string) => {
+ 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) {
+ return Promise.resolve()
+ } else {
+ return Promise.reject('请输入正确的手机号')
+ }
+ }
+}
diff --git a/src/views/about/index.vue b/src/views/about/index.vue
new file mode 100644
index 0000000..d99e598
--- /dev/null
+++ b/src/views/about/index.vue
@@ -0,0 +1,144 @@
+
+
+ 关于系统
+
+ 授权客户:
+ {{ certData.project }}
+
+
+ 平台版本:
+ {{ certStatusFilter(certData.catalog) }}
+
+
+ 节点数量:
+ {{ certData.node }}
+
+
+ 到期时间:
+ {{ certData.expireDate }}
+
+
+
+
+
+
+ 一键复制
+
+
+
+
+
+
+
+
diff --git a/src/views/about/logActive.vue b/src/views/about/logActive.vue
new file mode 100644
index 0000000..c6fecf2
--- /dev/null
+++ b/src/views/about/logActive.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/login/lockme.vue b/src/views/login/lockme.vue
new file mode 100644
index 0000000..9d3ee76
--- /dev/null
+++ b/src/views/login/lockme.vue
@@ -0,0 +1,195 @@
+
+
+
+
+
{{ userData.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 切换账户
+
+
+
+
{{ currentTime.time }}
+
{{ currentTime.date }}
+
+
+
+
+
+
+
diff --git a/src/views/login/login.vue b/src/views/login/login.vue
new file mode 100644
index 0000000..24d9d2e
--- /dev/null
+++ b/src/views/login/login.vue
@@ -0,0 +1,237 @@
+
+
+
+
+
+
+
+ {{ configs.promotionalTitle }}
+
+
+
+ 账号登录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 登录
+
+
+
{{ configs.copyrightInformation }}
+
+
+
+
+
+
diff --git a/src/views/login/sso.vue b/src/views/login/sso.vue
new file mode 100644
index 0000000..c1d7617
--- /dev/null
+++ b/src/views/login/sso.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/src/views/login/tools.ts b/src/views/login/tools.ts
new file mode 100644
index 0000000..558bb2c
--- /dev/null
+++ b/src/views/login/tools.ts
@@ -0,0 +1,15 @@
+import { setToken } from 'utils/auth'
+import { enablePermissionStorage, menuKey, enableUserStorage, userKey } from '@/config'
+
+export default function setLoginData(data: any) {
+ 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/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..b1cdfdf
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,26 @@
+{
+ "extends": "@vue/tsconfig/tsconfig.web.json",
+ "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
+ "compilerOptions": {
+ "baseUrl": ".",
+ "allowJs": true,
+ "skipLibCheck": true,
+ "paths": {
+ "@/*": ["./src/*"],
+ "services/*": ["src/services/*"],
+ "utils/*": ["src/utils/*"],
+ "components/*": ["src/components/*"],
+ "hooks/*": ["src/hooks/*"],
+ "filters/*": ["src/filters/*"]
+ }
+ },
+
+ "references": [
+ {
+ "path": "./tsconfig.vite-config.json"
+ }
+ ],
+ "exclude": [
+ "node_modules"
+ ]
+}
diff --git a/tsconfig.vite-config.json b/tsconfig.vite-config.json
new file mode 100644
index 0000000..d20d872
--- /dev/null
+++ b/tsconfig.vite-config.json
@@ -0,0 +1,8 @@
+{
+ "extends": "@vue/tsconfig/tsconfig.node.json",
+ "include": ["vite.config.*"],
+ "compilerOptions": {
+ "composite": true,
+ "types": ["node", "vitest"]
+ }
+}
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000..5ec1a16
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,112 @@
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+import vueJsx from '@vitejs/plugin-vue-jsx'
+import path from 'path'
+import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
+import Components from 'unplugin-vue-components/vite'
+import { AntDesignVueResolver, ElementPlusResolver } from 'unplugin-vue-components/resolvers'
+import styleImport from 'vite-plugin-style-import'
+
+function resolve(dir: string) {
+ return path.join(__dirname, dir)
+}
+
+const httpType = 'https://'
+const proxyUrl = 'develop.cmp56.com:60006/' // 代理地址设置
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [
+ vue(),
+ vueJsx(),
+ createSvgIconsPlugin({
+ // Specify the icon folder to be cached
+ iconDirs: [path.resolve(process.cwd(), './src/icons/svg')],
+ // Specify symbolId format
+ symbolId: 'icon-[dir]-[name]'
+ }),
+ Components({
+ resolvers: [AntDesignVueResolver(), ElementPlusResolver()]
+ }),
+ styleImport({
+ libs: [
+ {
+ libraryName: 'ant-design-vue',
+ esModule: true,
+ resolveStyle: (name: string) => {
+ return `ant-design-vue/es/${name}/style/index`
+ }
+ }
+ ]
+ })
+ ],
+ resolve: {
+ alias: {
+ '@': resolve('src'),
+ assets: resolve('src/assets'),
+ services: resolve('src/services'),
+ utils: resolve('src/utils'),
+ interface: resolve('src/interface'),
+ components: resolve('src/components'),
+ hooks: resolve('src/hooks'),
+ filters: resolve('src/filters'),
+ views: resolve('src/views')
+ }
+ },
+ server: {
+ port: 8080,
+ proxy: {
+ // '/api/sms/messageService': {
+ // target: `ws://${proxyUrl}`,
+ // changeOrigin: true,
+ // ws: true
+ // },
+ '/api': {
+ target: httpType + proxyUrl,
+ changeOrigin: true,
+ secure: false
+ },
+ '/config-files': {
+ target: httpType + proxyUrl,
+ secure: false
+ },
+ '/web-common-resource': {
+ target: httpType + proxyUrl,
+ secure: false
+ }
+ }
+ },
+ css: {
+ preprocessorOptions: {
+ scss: {
+ additionalData: '@import "@/css/common-var.scss";',
+ charset: false
+ },
+ less: {
+ javascriptEnabled: true,
+ modifyVars: {
+ 'primary-color': '#1E54D5'
+ },
+ charset: false
+ },
+ postcss: {
+ plugins: [
+ {
+ postcssPlugin: 'internal:charset-removal',
+ AtRule: {
+ charset: (atRule: any) => {
+ if (atRule.name === 'charset') {
+ atRule.remove()
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ build: {
+ outDir: 'main-web',
+ assetsDir: 'static'
+ }
+})