Browse Source

Merge branch 'iteration-create' into dev

lex 1 year ago
parent
commit
e4242a607e
100 changed files with 28055 additions and 32 deletions
  1. 15470 0
      package-lock.json
  2. 5 1
      package.json
  3. BIN
      src/common/images/icon-address.png
  4. BIN
      src/common/images/icon-check-active.png
  5. BIN
      src/common/images/icon-check.png
  6. BIN
      src/common/images/icon_filter.png
  7. 46 0
      src/components/m-dialog/index.module.less
  8. 91 0
      src/components/m-dialog/index.tsx
  9. 3 1
      src/components/m-empty/index.module.less
  10. 1 1
      src/components/m-full-refresh/index.tsx
  11. 19 9
      src/components/m-img-code/index.tsx
  12. 9 4
      src/components/m-protocol/index.module.less
  13. 8 4
      src/components/m-protocol/index.tsx
  14. 7 1
      src/components/m-search/index.tsx
  15. 5833 0
      src/helpers/area.ts
  16. 33 0
      src/helpers/constant.ts
  17. 7 4
      src/helpers/request.ts
  18. 134 0
      src/helpers/storage.ts
  19. 60 6
      src/helpers/utils.ts
  20. 4 0
      src/main.ts
  21. 92 0
      src/router/router-root.ts
  22. 2 0
      src/shims-vue.d.ts
  23. 37 0
      src/state.ts
  24. 10 0
      src/store/index.ts
  25. 89 0
      src/store/modules/student-register-store.ts
  26. 4 0
      src/store/mutation-types.ts
  27. 69 1
      src/styles/index.less
  28. 18 0
      src/views/adapay/pay-center/index.module.less
  29. 94 0
      src/views/adapay/pay-center/index.tsx
  30. 44 0
      src/views/adapay/pay-define/index.module.less
  31. 231 0
      src/views/adapay/pay-define/index.tsx
  32. 55 0
      src/views/adapay/pay-result/index.module.less
  33. 237 0
      src/views/adapay/pay-result/index.tsx
  34. 93 0
      src/views/adapay/payment/index.module.less
  35. 145 0
      src/views/adapay/payment/index.tsx
  36. 196 0
      src/views/adapay/use-coupons/choice-coupon.tsx
  37. 67 0
      src/views/adapay/use-coupons/index.module.less
  38. 213 0
      src/views/adapay/use-coupons/index.tsx
  39. BIN
      src/views/knowledge-library/images/bg.png
  40. BIN
      src/views/knowledge-library/images/exam-fail-bg.png
  41. BIN
      src/views/knowledge-library/images/exam-left-btn.png
  42. BIN
      src/views/knowledge-library/images/exam-pass-bg-p.png
  43. BIN
      src/views/knowledge-library/images/exam-pass-bg.png
  44. BIN
      src/views/knowledge-library/images/exam-right-bg.png
  45. BIN
      src/views/knowledge-library/images/icon-analysis.png
  46. BIN
      src/views/knowledge-library/images/icon-bell.png
  47. BIN
      src/views/knowledge-library/images/icon-button-list.png
  48. BIN
      src/views/knowledge-library/images/icon-count-down.png
  49. BIN
      src/views/knowledge-library/images/icon-edit.png
  50. BIN
      src/views/knowledge-library/images/icon-error.png
  51. BIN
      src/views/knowledge-library/images/icon-pass-check.png
  52. BIN
      src/views/knowledge-library/images/icon-question-nums.png
  53. BIN
      src/views/knowledge-library/images/icon-song.png
  54. BIN
      src/views/knowledge-library/images/icon-success.png
  55. BIN
      src/views/knowledge-library/images/icon-tag.png
  56. BIN
      src/views/knowledge-library/images/icon-timer.png
  57. 4 0
      src/views/knowledge-library/index.module.less
  58. 83 0
      src/views/knowledge-library/index.tsx
  59. 46 0
      src/views/knowledge-library/model/anser-title/index.module.less
  60. 98 0
      src/views/knowledge-library/model/anser-title/index.tsx
  61. 32 0
      src/views/knowledge-library/model/answer-analysis/index.module.less
  62. 70 0
      src/views/knowledge-library/model/answer-analysis/index.tsx
  63. 63 0
      src/views/knowledge-library/model/answer-list/index.module.less
  64. 105 0
      src/views/knowledge-library/model/answer-list/index.tsx
  65. 57 0
      src/views/knowledge-library/model/choice-question/index.module.less
  66. 163 0
      src/views/knowledge-library/model/choice-question/index.tsx
  67. 115 0
      src/views/knowledge-library/model/drag-question/index.module.less
  68. 303 0
      src/views/knowledge-library/model/drag-question/index.tsx
  69. 49 0
      src/views/knowledge-library/model/error-mode/index.module.less
  70. 57 0
      src/views/knowledge-library/model/error-mode/index.tsx
  71. 72 0
      src/views/knowledge-library/model/keep-look-question/index.module.less
  72. 515 0
      src/views/knowledge-library/model/keep-look-question/index.tsx
  73. 62 0
      src/views/knowledge-library/model/play-question/index.module.less
  74. 268 0
      src/views/knowledge-library/model/play-question/index.tsx
  75. 81 0
      src/views/knowledge-library/model/result-finish/index.module.less
  76. 65 0
      src/views/knowledge-library/model/result-finish/index.tsx
  77. BIN
      src/views/knowledge-library/model/unit-audio/images/icon-audio.png
  78. BIN
      src/views/knowledge-library/model/unit-audio/images/icon-pause.png
  79. BIN
      src/views/knowledge-library/model/unit-audio/images/icon-play.png
  80. 41 0
      src/views/knowledge-library/model/unit-audio/index.module.less
  81. 88 0
      src/views/knowledge-library/model/unit-audio/index.tsx
  82. 37 0
      src/views/knowledge-library/unit.ts
  83. BIN
      src/views/payment-result/images/icon_close.png
  84. BIN
      src/views/payment-result/images/icon_refunding.png
  85. BIN
      src/views/payment-result/images/icon_success.png
  86. BIN
      src/views/payment-result/images/icon_tradeing.png
  87. 157 0
      src/views/payment-result/index.module.less
  88. 204 0
      src/views/payment-result/index.tsx
  89. 91 0
      src/views/student-register/component/addres.tsx
  90. 68 0
      src/views/student-register/component/address.module.less
  91. 410 0
      src/views/student-register/component/apply.tsx
  92. 311 0
      src/views/student-register/component/order.tsx
  93. 768 0
      src/views/student-register/component/payment.tsx
  94. 50 0
      src/views/student-register/component/user-auth.module.less
  95. 96 0
      src/views/student-register/component/user-auth.tsx
  96. BIN
      src/views/student-register/digital-tools/images/1.png
  97. BIN
      src/views/student-register/digital-tools/images/2.png
  98. BIN
      src/views/student-register/digital-tools/images/icon-video.png
  99. BIN
      src/views/student-register/digital-tools/images/points.png
  100. BIN
      src/views/student-register/digital-tools/images/tool-number.png

+ 15470 - 0
package-lock.json

@@ -0,0 +1,15470 @@
+{
+  "name": "vue-vite-h5",
+  "version": "0.2.0",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "vue-vite-h5",
+      "version": "0.2.0",
+      "license": "MIT",
+      "dependencies": {
+        "@amap/amap-jsapi-loader": "^1.0.1",
+        "@vant/use": "^1.5.1",
+        "@vueuse/core": "^10.1.2",
+        "clean-deep": "^3.4.0",
+        "dayjs": "^1.11.7",
+        "echarts": "^5.4.2",
+        "eventemitter3": "^5.0.1",
+        "howler": "^2.2.3",
+        "html2canvas": "^1.4.1",
+        "naive-ui": "^2.34.4",
+        "numeral": "^2.0.6",
+        "pinia": "^2.1.4",
+        "plyr": "^3.7.8",
+        "qrcode": "^1.5.3",
+        "query-string": "^8.1.0",
+        "swiper": "^9.3.2",
+        "terser": "^5.17.6",
+        "umi-request": "^1.4.0",
+        "vant": "^4.1.2",
+        "vconsole": "^3.15.0",
+        "vudio.js": "^1.0.3",
+        "vue": "^3.2.47",
+        "vue-awesome-swiper": "^5.0.1",
+        "vue-router": "^4.1.6",
+        "vue3-lottie": "^2.7.0",
+        "vuedraggable": "^2.24.3"
+      },
+      "devDependencies": {
+        "@babel/core": "^7.21.4",
+        "@babel/preset-env": "^7.21.4",
+        "@types/node": "^16.18.23",
+        "@typescript-eslint/eslint-plugin": "^5.57.1",
+        "@typescript-eslint/parser": "^5.57.1",
+        "@vitejs/plugin-legacy": "^4.0.3",
+        "@vitejs/plugin-vue": "^4.1.0",
+        "@vitejs/plugin-vue-jsx": "^3.0.1",
+        "@vue/babel-plugin-jsx": "^1.1.1",
+        "@vue/compiler-sfc": "^3.2.47",
+        "@vue/eslint-config-prettier": "^7.1.0",
+        "@vue/eslint-config-typescript": "^11.0.2",
+        "autoprefixer": "^10.4.14",
+        "babel-plugin-dynamic-import-node": "^2.3.3",
+        "eslint": "^8.38.0",
+        "eslint-plugin-prettier": "^4.2.1",
+        "eslint-plugin-vue": "^9.10.0",
+        "husky": "^8.0.0",
+        "less": "^4.1.3",
+        "lint-staged": "^13.2.2",
+        "plop": "^3.1.2",
+        "postcss": "^8.4.21",
+        "postcss-pxtorem": "^6.0.0",
+        "prettier": "^2.8.7",
+        "typescript": "^5.0.4",
+        "unplugin-vue-components": "^0.24.1",
+        "vite": "^4.2.1",
+        "vite-plugin-eslint": "^1.8.1",
+        "vue-eslint-parser": "^9.1.1",
+        "vue-tsc": "^1.2.0",
+        "yorkie": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=14.20.0"
+      }
+    },
+    "node_modules/@aashutoshrathi/word-wrap": {
+      "version": "1.2.6",
+      "resolved": "https://registry.npmmirror.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+      "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@amap/amap-jsapi-loader": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz",
+      "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw=="
+    },
+    "node_modules/@ampproject/remapping": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz",
+      "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@antfu/utils": {
+      "version": "0.7.4",
+      "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.4.tgz",
+      "integrity": "sha512-qe8Nmh9rYI/HIspLSTwtbMFPj6dISG6+dJnOguTlPNXtCvS2uezdxscVBb7/3DrmNbQK49TDqpkSQ1chbRGdpQ==",
+      "dev": true
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.22.5.tgz",
+      "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/highlight": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/compat-data": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.22.5.tgz",
+      "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/core": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.22.5.tgz",
+      "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==",
+      "dev": true,
+      "dependencies": {
+        "@ampproject/remapping": "^2.2.0",
+        "@babel/code-frame": "^7.22.5",
+        "@babel/generator": "^7.22.5",
+        "@babel/helper-compilation-targets": "^7.22.5",
+        "@babel/helper-module-transforms": "^7.22.5",
+        "@babel/helpers": "^7.22.5",
+        "@babel/parser": "^7.22.5",
+        "@babel/template": "^7.22.5",
+        "@babel/traverse": "^7.22.5",
+        "@babel/types": "^7.22.5",
+        "convert-source-map": "^1.7.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.2.2",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/generator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.22.5.tgz",
+      "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5",
+        "@jridgewell/gen-mapping": "^0.3.2",
+        "@jridgewell/trace-mapping": "^0.3.17",
+        "jsesc": "^2.5.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-annotate-as-pure": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+      "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz",
+      "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-compilation-targets": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz",
+      "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.22.5",
+        "@babel/helper-validator-option": "^7.22.5",
+        "browserslist": "^4.21.3",
+        "lru-cache": "^5.1.1",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-create-class-features-plugin": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz",
+      "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-function-name": "^7.22.5",
+        "@babel/helper-member-expression-to-functions": "^7.22.5",
+        "@babel/helper-optimise-call-expression": "^7.22.5",
+        "@babel/helper-replace-supers": "^7.22.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.5",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-create-regexp-features-plugin": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz",
+      "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "regexpu-core": "^5.3.1",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-define-polyfill-provider": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz",
+      "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-compilation-targets": "^7.17.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "debug": "^4.1.1",
+        "lodash.debounce": "^4.0.8",
+        "resolve": "^1.14.2",
+        "semver": "^6.1.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.4.0-0"
+      }
+    },
+    "node_modules/@babel/helper-environment-visitor": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz",
+      "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-function-name": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz",
+      "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/template": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-hoist-variables": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+      "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-member-expression-to-functions": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz",
+      "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-imports": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz",
+      "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-module-transforms": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz",
+      "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-module-imports": "^7.22.5",
+        "@babel/helper-simple-access": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.5",
+        "@babel/helper-validator-identifier": "^7.22.5",
+        "@babel/template": "^7.22.5",
+        "@babel/traverse": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-optimise-call-expression": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+      "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-plugin-utils": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+      "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-remap-async-to-generator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz",
+      "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-wrap-function": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/helper-replace-supers": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz",
+      "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-member-expression-to-functions": "^7.22.5",
+        "@babel/helper-optimise-call-expression": "^7.22.5",
+        "@babel/template": "^7.22.5",
+        "@babel/traverse": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-simple-access": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+      "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+      "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-split-export-declaration": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz",
+      "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-string-parser": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+      "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
+      "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-option": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
+      "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-wrap-function": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz",
+      "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-function-name": "^7.22.5",
+        "@babel/template": "^7.22.5",
+        "@babel/traverse": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helpers": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.22.5.tgz",
+      "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/template": "^7.22.5",
+        "@babel/traverse": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/highlight": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.22.5.tgz",
+      "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.22.5",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.5.tgz",
+      "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==",
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz",
+      "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz",
+      "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+        "@babel/plugin-transform-optional-chaining": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.13.0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-private-property-in-object": {
+      "version": "7.21.0-placeholder-for-preset-env.2",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+      "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
+      "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+      "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-class-static-block": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+      "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-dynamic-import": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+      "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-export-namespace-from": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+      "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-assertions": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz",
+      "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-attributes": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz",
+      "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-import-meta": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+      "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+      "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-jsx": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
+      "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+      "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+      "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+      "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+      "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+      "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+      "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-private-property-in-object": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+      "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-top-level-await": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+      "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-typescript": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz",
+      "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+      "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-arrow-functions": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz",
+      "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-async-generator-functions": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz",
+      "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-remap-async-to-generator": "^7.22.5",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-async-to-generator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz",
+      "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-remap-async-to-generator": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz",
+      "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-block-scoping": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz",
+      "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-class-properties": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz",
+      "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-class-static-block": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz",
+      "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.12.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-classes": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz",
+      "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "@babel/helper-compilation-targets": "^7.22.5",
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-function-name": "^7.22.5",
+        "@babel/helper-optimise-call-expression": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-replace-supers": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.5",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-computed-properties": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz",
+      "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/template": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-destructuring": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz",
+      "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-dotall-regex": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz",
+      "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-duplicate-keys": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz",
+      "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-dynamic-import": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz",
+      "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz",
+      "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-export-namespace-from": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz",
+      "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-for-of": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz",
+      "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-function-name": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz",
+      "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-compilation-targets": "^7.22.5",
+        "@babel/helper-function-name": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-json-strings": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz",
+      "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-literals": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz",
+      "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz",
+      "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-member-expression-literals": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz",
+      "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-amd": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz",
+      "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-commonjs": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz",
+      "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-simple-access": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-systemjs": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz",
+      "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-hoist-variables": "^7.22.5",
+        "@babel/helper-module-transforms": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-validator-identifier": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-modules-umd": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz",
+      "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-transforms": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
+      "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-new-target": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz",
+      "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz",
+      "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-numeric-separator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz",
+      "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-object-rest-spread": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz",
+      "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.22.5",
+        "@babel/helper-compilation-targets": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-transform-parameters": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-object-super": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz",
+      "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-replace-supers": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-optional-catch-binding": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz",
+      "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-optional-chaining": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz",
+      "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-parameters": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz",
+      "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-private-methods": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz",
+      "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-class-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-private-property-in-object": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz",
+      "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "@babel/helper-create-class-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-property-literals": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz",
+      "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-regenerator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz",
+      "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "regenerator-transform": "^0.15.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-reserved-words": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz",
+      "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-shorthand-properties": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz",
+      "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-spread": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz",
+      "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-sticky-regex": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz",
+      "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-template-literals": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz",
+      "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-typeof-symbol": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz",
+      "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-typescript": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.5.tgz",
+      "integrity": "sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "@babel/helper-create-class-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-typescript": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-escapes": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz",
+      "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-property-regex": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz",
+      "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-regex": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz",
+      "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz",
+      "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0"
+      }
+    },
+    "node_modules/@babel/preset-env": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.22.5.tgz",
+      "integrity": "sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.22.5",
+        "@babel/helper-compilation-targets": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-validator-option": "^7.22.5",
+        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5",
+        "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-class-properties": "^7.12.13",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+        "@babel/plugin-syntax-import-assertions": "^7.22.5",
+        "@babel/plugin-syntax-import-attributes": "^7.22.5",
+        "@babel/plugin-syntax-import-meta": "^7.10.4",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+        "@babel/plugin-syntax-top-level-await": "^7.14.5",
+        "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+        "@babel/plugin-transform-arrow-functions": "^7.22.5",
+        "@babel/plugin-transform-async-generator-functions": "^7.22.5",
+        "@babel/plugin-transform-async-to-generator": "^7.22.5",
+        "@babel/plugin-transform-block-scoped-functions": "^7.22.5",
+        "@babel/plugin-transform-block-scoping": "^7.22.5",
+        "@babel/plugin-transform-class-properties": "^7.22.5",
+        "@babel/plugin-transform-class-static-block": "^7.22.5",
+        "@babel/plugin-transform-classes": "^7.22.5",
+        "@babel/plugin-transform-computed-properties": "^7.22.5",
+        "@babel/plugin-transform-destructuring": "^7.22.5",
+        "@babel/plugin-transform-dotall-regex": "^7.22.5",
+        "@babel/plugin-transform-duplicate-keys": "^7.22.5",
+        "@babel/plugin-transform-dynamic-import": "^7.22.5",
+        "@babel/plugin-transform-exponentiation-operator": "^7.22.5",
+        "@babel/plugin-transform-export-namespace-from": "^7.22.5",
+        "@babel/plugin-transform-for-of": "^7.22.5",
+        "@babel/plugin-transform-function-name": "^7.22.5",
+        "@babel/plugin-transform-json-strings": "^7.22.5",
+        "@babel/plugin-transform-literals": "^7.22.5",
+        "@babel/plugin-transform-logical-assignment-operators": "^7.22.5",
+        "@babel/plugin-transform-member-expression-literals": "^7.22.5",
+        "@babel/plugin-transform-modules-amd": "^7.22.5",
+        "@babel/plugin-transform-modules-commonjs": "^7.22.5",
+        "@babel/plugin-transform-modules-systemjs": "^7.22.5",
+        "@babel/plugin-transform-modules-umd": "^7.22.5",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
+        "@babel/plugin-transform-new-target": "^7.22.5",
+        "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5",
+        "@babel/plugin-transform-numeric-separator": "^7.22.5",
+        "@babel/plugin-transform-object-rest-spread": "^7.22.5",
+        "@babel/plugin-transform-object-super": "^7.22.5",
+        "@babel/plugin-transform-optional-catch-binding": "^7.22.5",
+        "@babel/plugin-transform-optional-chaining": "^7.22.5",
+        "@babel/plugin-transform-parameters": "^7.22.5",
+        "@babel/plugin-transform-private-methods": "^7.22.5",
+        "@babel/plugin-transform-private-property-in-object": "^7.22.5",
+        "@babel/plugin-transform-property-literals": "^7.22.5",
+        "@babel/plugin-transform-regenerator": "^7.22.5",
+        "@babel/plugin-transform-reserved-words": "^7.22.5",
+        "@babel/plugin-transform-shorthand-properties": "^7.22.5",
+        "@babel/plugin-transform-spread": "^7.22.5",
+        "@babel/plugin-transform-sticky-regex": "^7.22.5",
+        "@babel/plugin-transform-template-literals": "^7.22.5",
+        "@babel/plugin-transform-typeof-symbol": "^7.22.5",
+        "@babel/plugin-transform-unicode-escapes": "^7.22.5",
+        "@babel/plugin-transform-unicode-property-regex": "^7.22.5",
+        "@babel/plugin-transform-unicode-regex": "^7.22.5",
+        "@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
+        "@babel/preset-modules": "^0.1.5",
+        "@babel/types": "^7.22.5",
+        "babel-plugin-polyfill-corejs2": "^0.4.3",
+        "babel-plugin-polyfill-corejs3": "^0.8.1",
+        "babel-plugin-polyfill-regenerator": "^0.5.0",
+        "core-js-compat": "^3.30.2",
+        "semver": "^6.3.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/preset-modules": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
+      "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+        "@babel/plugin-transform-dotall-regex": "^7.4.4",
+        "@babel/types": "^7.4.4",
+        "esutils": "^2.0.2"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/regjsgen": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+      "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+      "dev": true
+    },
+    "node_modules/@babel/runtime": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.22.5.tgz",
+      "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==",
+      "dependencies": {
+        "regenerator-runtime": "^0.13.11"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/template": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.22.5.tgz",
+      "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.22.5",
+        "@babel/parser": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/traverse": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.22.5.tgz",
+      "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/code-frame": "^7.22.5",
+        "@babel/generator": "^7.22.5",
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-function-name": "^7.22.5",
+        "@babel/helper-hoist-variables": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.5",
+        "@babel/parser": "^7.22.5",
+        "@babel/types": "^7.22.5",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.22.5.tgz",
+      "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-string-parser": "^7.22.5",
+        "@babel/helper-validator-identifier": "^7.22.5",
+        "to-fast-properties": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@css-render/plugin-bem": {
+      "version": "0.15.12",
+      "resolved": "https://registry.npmmirror.com/@css-render/plugin-bem/-/plugin-bem-0.15.12.tgz",
+      "integrity": "sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw==",
+      "peerDependencies": {
+        "css-render": "~0.15.12"
+      }
+    },
+    "node_modules/@css-render/vue3-ssr": {
+      "version": "0.15.12",
+      "resolved": "https://registry.npmmirror.com/@css-render/vue3-ssr/-/vue3-ssr-0.15.12.tgz",
+      "integrity": "sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg==",
+      "peerDependencies": {
+        "vue": "^3.0.11"
+      }
+    },
+    "node_modules/@emotion/hash": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz",
+      "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
+    },
+    "node_modules/@esbuild/android-arm": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz",
+      "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz",
+      "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz",
+      "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/darwin-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz",
+      "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/darwin-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz",
+      "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/freebsd-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz",
+      "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/freebsd-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz",
+      "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-arm": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz",
+      "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz",
+      "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-ia32": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz",
+      "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-loong64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz",
+      "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==",
+      "cpu": [
+        "loong64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-mips64el": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz",
+      "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==",
+      "cpu": [
+        "mips64el"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-ppc64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz",
+      "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-riscv64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz",
+      "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-s390x": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz",
+      "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==",
+      "cpu": [
+        "s390x"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz",
+      "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/netbsd-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz",
+      "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/openbsd-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz",
+      "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/sunos-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz",
+      "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "sunos"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz",
+      "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-ia32": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz",
+      "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz",
+      "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@eslint-community/eslint-utils": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+      "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+      "dev": true,
+      "dependencies": {
+        "eslint-visitor-keys": "^3.3.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+      }
+    },
+    "node_modules/@eslint-community/regexpp": {
+      "version": "4.5.1",
+      "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
+      "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==",
+      "dev": true,
+      "engines": {
+        "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@eslint/eslintrc": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
+      "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
+      "dev": true,
+      "dependencies": {
+        "ajv": "^6.12.4",
+        "debug": "^4.3.2",
+        "espree": "^9.5.2",
+        "globals": "^13.19.0",
+        "ignore": "^5.2.0",
+        "import-fresh": "^3.2.1",
+        "js-yaml": "^4.1.0",
+        "minimatch": "^3.1.2",
+        "strip-json-comments": "^3.1.1"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@eslint/eslintrc/node_modules/globals": {
+      "version": "13.20.0",
+      "resolved": "https://registry.npmmirror.com/globals/-/globals-13.20.0.tgz",
+      "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+      "dev": true,
+      "dependencies": {
+        "type-fest": "^0.20.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@eslint/eslintrc/node_modules/type-fest": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz",
+      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@eslint/js": {
+      "version": "8.43.0",
+      "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.43.0.tgz",
+      "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==",
+      "dev": true,
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@humanwhocodes/config-array": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
+      "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
+      "dev": true,
+      "dependencies": {
+        "@humanwhocodes/object-schema": "^1.2.1",
+        "debug": "^4.1.1",
+        "minimatch": "^3.0.5"
+      },
+      "engines": {
+        "node": ">=10.10.0"
+      }
+    },
+    "node_modules/@humanwhocodes/module-importer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+      "dev": true,
+      "engines": {
+        "node": ">=12.22"
+      }
+    },
+    "node_modules/@humanwhocodes/object-schema": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+      "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+      "dev": true
+    },
+    "node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+      "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+      "dependencies": {
+        "@jridgewell/set-array": "^1.0.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/set-array": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@jridgewell/source-map": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.3.tgz",
+      "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+    },
+    "node_modules/@jridgewell/trace-mapping": {
+      "version": "0.3.18",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+      "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+      "dependencies": {
+        "@jridgewell/resolve-uri": "3.1.0",
+        "@jridgewell/sourcemap-codec": "1.4.14"
+      }
+    },
+    "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.14",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+      "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+    },
+    "node_modules/@juggle/resize-observer": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmmirror.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz",
+      "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA=="
+    },
+    "node_modules/@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@rollup/pluginutils": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
+      "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
+      "dev": true,
+      "dependencies": {
+        "@types/estree": "^1.0.0",
+        "estree-walker": "^2.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "peerDependencies": {
+        "rollup": "^1.20.0||^2.0.0||^3.0.0"
+      },
+      "peerDependenciesMeta": {
+        "rollup": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@types/eslint": {
+      "version": "8.40.2",
+      "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.40.2.tgz",
+      "integrity": "sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/estree": "*",
+        "@types/json-schema": "*"
+      }
+    },
+    "node_modules/@types/estree": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.1.tgz",
+      "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
+      "dev": true
+    },
+    "node_modules/@types/fined": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/@types/fined/-/fined-1.1.3.tgz",
+      "integrity": "sha512-CWYnSRnun3CGbt6taXeVo2lCbuaj4mchVJ4UF/BdU5TSuIn3AmS13pGMwCsBUoehGbhZrBrpNJZSZI5EVilXww==",
+      "dev": true
+    },
+    "node_modules/@types/inquirer": {
+      "version": "8.2.6",
+      "resolved": "https://registry.npmmirror.com/@types/inquirer/-/inquirer-8.2.6.tgz",
+      "integrity": "sha512-3uT88kxg8lNzY8ay2ZjP44DKcRaTGztqeIvN2zHvhzIBH/uAPaL75aBtdNRKbA7xXoMbBt5kX0M00VKAnfOYlA==",
+      "dev": true,
+      "dependencies": {
+        "@types/through": "*",
+        "rxjs": "^7.2.0"
+      }
+    },
+    "node_modules/@types/json-schema": {
+      "version": "7.0.12",
+      "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.12.tgz",
+      "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
+      "dev": true
+    },
+    "node_modules/@types/katex": {
+      "version": "0.14.0",
+      "resolved": "https://registry.npmmirror.com/@types/katex/-/katex-0.14.0.tgz",
+      "integrity": "sha512-+2FW2CcT0K3P+JMR8YG846bmDwplKUTsWgT2ENwdQ1UdVfRk3GQrh6Mi4sTopy30gI8Uau5CEqHTDZ6YvWIUPA=="
+    },
+    "node_modules/@types/liftoff": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/@types/liftoff/-/liftoff-4.0.0.tgz",
+      "integrity": "sha512-Ny/PJkO6nxWAQnaet8q/oWz15lrfwvdvBpuY4treB0CSsBO1CG0fVuNLngR3m3bepQLd+E4c3Y3DlC2okpUvPw==",
+      "dev": true,
+      "dependencies": {
+        "@types/fined": "*",
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/lodash": {
+      "version": "4.14.195",
+      "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.195.tgz",
+      "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg=="
+    },
+    "node_modules/@types/lodash-es": {
+      "version": "4.17.7",
+      "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.7.tgz",
+      "integrity": "sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==",
+      "dependencies": {
+        "@types/lodash": "*"
+      }
+    },
+    "node_modules/@types/node": {
+      "version": "16.18.37",
+      "resolved": "https://registry.npmmirror.com/@types/node/-/node-16.18.37.tgz",
+      "integrity": "sha512-ql+4dw4PlPFBP495k8JzUX/oMNRI2Ei4PrMHgj8oT4VhGlYUzF4EYr0qk2fW+XBVGIrq8Zzk13m4cvyXZuv4pA==",
+      "dev": true
+    },
+    "node_modules/@types/semver": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.5.0.tgz",
+      "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
+      "dev": true
+    },
+    "node_modules/@types/through": {
+      "version": "0.0.30",
+      "resolved": "https://registry.npmmirror.com/@types/through/-/through-0.0.30.tgz",
+      "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/web-bluetooth": {
+      "version": "0.0.17",
+      "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz",
+      "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA=="
+    },
+    "node_modules/@typescript-eslint/eslint-plugin": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.1.tgz",
+      "integrity": "sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==",
+      "dev": true,
+      "dependencies": {
+        "@eslint-community/regexpp": "^4.4.0",
+        "@typescript-eslint/scope-manager": "5.60.1",
+        "@typescript-eslint/type-utils": "5.60.1",
+        "@typescript-eslint/utils": "5.60.1",
+        "debug": "^4.3.4",
+        "grapheme-splitter": "^1.0.4",
+        "ignore": "^5.2.0",
+        "natural-compare-lite": "^1.4.0",
+        "semver": "^7.3.7",
+        "tsutils": "^3.21.0"
+      },
+      "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"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
+      "version": "7.5.3",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
+      "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
+    },
+    "node_modules/@typescript-eslint/parser": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.60.1.tgz",
+      "integrity": "sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==",
+      "dev": true,
+      "dependencies": {
+        "@typescript-eslint/scope-manager": "5.60.1",
+        "@typescript-eslint/types": "5.60.1",
+        "@typescript-eslint/typescript-estree": "5.60.1",
+        "debug": "^4.3.4"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@typescript-eslint/scope-manager": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz",
+      "integrity": "sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==",
+      "dev": true,
+      "dependencies": {
+        "@typescript-eslint/types": "5.60.1",
+        "@typescript-eslint/visitor-keys": "5.60.1"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@typescript-eslint/type-utils": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.60.1.tgz",
+      "integrity": "sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==",
+      "dev": true,
+      "dependencies": {
+        "@typescript-eslint/typescript-estree": "5.60.1",
+        "@typescript-eslint/utils": "5.60.1",
+        "debug": "^4.3.4",
+        "tsutils": "^3.21.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "eslint": "*"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@typescript-eslint/types": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.60.1.tgz",
+      "integrity": "sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==",
+      "dev": true,
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz",
+      "integrity": "sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==",
+      "dev": true,
+      "dependencies": {
+        "@typescript-eslint/types": "5.60.1",
+        "@typescript-eslint/visitor-keys": "5.60.1",
+        "debug": "^4.3.4",
+        "globby": "^11.1.0",
+        "is-glob": "^4.0.3",
+        "semver": "^7.3.7",
+        "tsutils": "^3.21.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+      "version": "7.5.3",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
+      "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
+    },
+    "node_modules/@typescript-eslint/utils": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.60.1.tgz",
+      "integrity": "sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==",
+      "dev": true,
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.2.0",
+        "@types/json-schema": "^7.0.9",
+        "@types/semver": "^7.3.12",
+        "@typescript-eslint/scope-manager": "5.60.1",
+        "@typescript-eslint/types": "5.60.1",
+        "@typescript-eslint/typescript-estree": "5.60.1",
+        "eslint-scope": "^5.1.1",
+        "semver": "^7.3.7"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
+    "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@typescript-eslint/utils/node_modules/semver": {
+      "version": "7.5.3",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
+      "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@typescript-eslint/utils/node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
+    },
+    "node_modules/@typescript-eslint/visitor-keys": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz",
+      "integrity": "sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==",
+      "dev": true,
+      "dependencies": {
+        "@typescript-eslint/types": "5.60.1",
+        "eslint-visitor-keys": "^3.3.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@vant/popperjs": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz",
+      "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw=="
+    },
+    "node_modules/@vant/use": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.5.2.tgz",
+      "integrity": "sha512-CBK61iT568dCHUwFFsErGbW6/5tmrPnZJKGtcSy7Tjcrmws8Ku+YZo7IUFD9Xkj9MfSJ4pfhQ7pU2KouP5Cojg==",
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
+    },
+    "node_modules/@vitejs/plugin-legacy": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-4.0.5.tgz",
+      "integrity": "sha512-0N1CSAHjFTaxcKC9IcKDWMapmAfGn2mNdbROMf6UW0kypYLzDK8vAAbJIFW0jWvkv2aZfTgNs4KmQxoQDupUuQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.22.5",
+        "@babel/preset-env": "^7.22.5",
+        "browserslist": "^4.21.9",
+        "core-js": "^3.31.0",
+        "magic-string": "^0.30.0",
+        "regenerator-runtime": "^0.13.11",
+        "systemjs": "^6.14.1"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "terser": "^5.4.0",
+        "vite": "^4.0.0"
+      }
+    },
+    "node_modules/@vitejs/plugin-vue": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz",
+      "integrity": "sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==",
+      "dev": true,
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "vite": "^4.0.0",
+        "vue": "^3.2.25"
+      }
+    },
+    "node_modules/@vitejs/plugin-vue-jsx": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.0.1.tgz",
+      "integrity": "sha512-+Jb7ggL48FSPS1uhPnJbJwWa9Sr90vQ+d0InW+AhBM22n+cfuYqJZDckBc+W3QSHe1WDvewMZfa4wZOtk5pRgw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/core": "^7.20.7",
+        "@babel/plugin-transform-typescript": "^7.20.7",
+        "@vue/babel-plugin-jsx": "^1.1.1"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "vite": "^4.0.0",
+        "vue": "^3.0.0"
+      }
+    },
+    "node_modules/@volar/language-core": {
+      "version": "1.7.10",
+      "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.7.10.tgz",
+      "integrity": "sha512-18Gmth5M0UI3hDDqhZngjMnb6WCslcfglkOdepRIhGxRYe7xR7DRRzciisYDMZsvOQxDYme+uaohg0dKUxLV2Q==",
+      "dev": true,
+      "dependencies": {
+        "@volar/source-map": "1.7.10"
+      }
+    },
+    "node_modules/@volar/source-map": {
+      "version": "1.7.10",
+      "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.7.10.tgz",
+      "integrity": "sha512-FBpLEOKJpRxeh2nYbw1mTI5sZOPXYU8LlsCz6xuBY3yNtAizDTTIZtBHe1V8BaMpoSMgRysZe4gVxMEi3rDGVA==",
+      "dev": true,
+      "dependencies": {
+        "muggle-string": "^0.3.1"
+      }
+    },
+    "node_modules/@volar/typescript": {
+      "version": "1.7.10",
+      "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.7.10.tgz",
+      "integrity": "sha512-yqIov4wndLU3GE1iE25bU5W6T+P+exPePcE1dFPPBKzQIBki1KvmdQN5jBlJp3Wo+wp7UIxa/RsdNkXT+iFBjg==",
+      "dev": true,
+      "dependencies": {
+        "@volar/language-core": "1.7.10"
+      }
+    },
+    "node_modules/@vue/babel-helper-vue-transform-on": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz",
+      "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==",
+      "dev": true
+    },
+    "node_modules/@vue/babel-plugin-jsx": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz",
+      "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.22.5",
+        "@babel/plugin-syntax-jsx": "^7.22.5",
+        "@babel/template": "^7.22.5",
+        "@babel/traverse": "^7.22.5",
+        "@babel/types": "^7.22.5",
+        "@vue/babel-helper-vue-transform-on": "^1.1.5",
+        "camelcase": "^6.3.0",
+        "html-tags": "^3.3.1",
+        "svg-tags": "^1.0.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@vue/compiler-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+      "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+      "dependencies": {
+        "@babel/parser": "^7.21.3",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/compiler-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+      "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+      "dependencies": {
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/compiler-sfc": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+      "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+      "dependencies": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/reactivity-transform": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0",
+        "postcss": "^8.1.10",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/compiler-ssr": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+      "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/devtools-api": {
+      "version": "6.5.0",
+      "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
+      "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
+    },
+    "node_modules/@vue/eslint-config-prettier": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmmirror.com/@vue/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz",
+      "integrity": "sha512-Pv/lVr0bAzSIHLd9iz0KnvAr4GKyCEl+h52bc4e5yWuDVtLgFwycF7nrbWTAQAS+FU6q1geVd07lc6EWfJiWKQ==",
+      "dev": true,
+      "dependencies": {
+        "eslint-config-prettier": "^8.3.0",
+        "eslint-plugin-prettier": "^4.0.0"
+      },
+      "peerDependencies": {
+        "eslint": ">= 7.28.0",
+        "prettier": ">= 2.0.0"
+      }
+    },
+    "node_modules/@vue/eslint-config-typescript": {
+      "version": "11.0.3",
+      "resolved": "https://registry.npmmirror.com/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz",
+      "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==",
+      "dev": true,
+      "dependencies": {
+        "@typescript-eslint/eslint-plugin": "^5.59.1",
+        "@typescript-eslint/parser": "^5.59.1",
+        "vue-eslint-parser": "^9.1.1"
+      },
+      "engines": {
+        "node": "^14.17.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0",
+        "eslint-plugin-vue": "^9.0.0",
+        "typescript": "*"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vue/language-core": {
+      "version": "1.8.3",
+      "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.3.tgz",
+      "integrity": "sha512-AzhvMYoQkK/tg8CpAAttO19kx1zjS3+weYIr2AhlH/M5HebVzfftQoq4jZNFifjq+hyLKi8j9FiDMS8oqA89+A==",
+      "dev": true,
+      "dependencies": {
+        "@volar/language-core": "1.7.10",
+        "@volar/source-map": "1.7.10",
+        "@vue/compiler-dom": "^3.3.0",
+        "@vue/reactivity": "^3.3.0",
+        "@vue/shared": "^3.3.0",
+        "minimatch": "^9.0.0",
+        "muggle-string": "^0.3.1",
+        "vue-template-compiler": "^2.7.14"
+      },
+      "peerDependencies": {
+        "typescript": "*"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vue/language-core/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/@vue/language-core/node_modules/minimatch": {
+      "version": "9.0.2",
+      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.2.tgz",
+      "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      }
+    },
+    "node_modules/@vue/reactivity": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz",
+      "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+      "dependencies": {
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/reactivity-transform": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+      "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+      "dependencies": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0"
+      }
+    },
+    "node_modules/@vue/runtime-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+      "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+      "dependencies": {
+        "@vue/reactivity": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/runtime-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+      "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+      "dependencies": {
+        "@vue/runtime-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "csstype": "^3.1.1"
+      }
+    },
+    "node_modules/@vue/runtime-dom/node_modules/csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+    },
+    "node_modules/@vue/server-renderer": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+      "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+      "dependencies": {
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/shared": "3.3.4"
+      },
+      "peerDependencies": {
+        "vue": "3.3.4"
+      }
+    },
+    "node_modules/@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "node_modules/@vue/typescript": {
+      "version": "1.8.3",
+      "resolved": "https://registry.npmmirror.com/@vue/typescript/-/typescript-1.8.3.tgz",
+      "integrity": "sha512-6bdgSnIFpRYHlt70pHmnmNksPU00bfXgqAISeaNz3W6d2cH0OTfH8h/IhligQ82sJIhsuyfftQJ5518ZuKIhtA==",
+      "dev": true,
+      "dependencies": {
+        "@volar/typescript": "1.7.10",
+        "@vue/language-core": "1.8.3"
+      }
+    },
+    "node_modules/@vueuse/core": {
+      "version": "10.2.1",
+      "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.2.1.tgz",
+      "integrity": "sha512-c441bfMbkAwTNwVRHQ0zdYZNETK//P84rC01aP2Uy/aRFCiie9NE/k9KdIXbno0eDYP5NPUuWv0aA/I4Unr/7w==",
+      "dependencies": {
+        "@types/web-bluetooth": "^0.0.17",
+        "@vueuse/metadata": "10.2.1",
+        "@vueuse/shared": "10.2.1",
+        "vue-demi": ">=0.14.5"
+      }
+    },
+    "node_modules/@vueuse/metadata": {
+      "version": "10.2.1",
+      "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.2.1.tgz",
+      "integrity": "sha512-3Gt68mY/i6bQvFqx7cuGBzrCCQu17OBaGWS5JdwISpMsHnMKKjC2FeB5OAfMcCQ0oINfADP3i9A4PPRo0peHdQ=="
+    },
+    "node_modules/@vueuse/shared": {
+      "version": "10.2.1",
+      "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.2.1.tgz",
+      "integrity": "sha512-QWHq2bSuGptkcxx4f4M/fBYC3Y8d3M2UYyLsyzoPgEoVzJURQ0oJeWXu79OiLlBb8gTKkqe4mO85T/sf39mmiw==",
+      "dependencies": {
+        "vue-demi": ">=0.14.5"
+      }
+    },
+    "node_modules/acorn": {
+      "version": "8.9.0",
+      "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.9.0.tgz",
+      "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "dev": true,
+      "peerDependencies": {
+        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
+    "node_modules/aggregate-error": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz",
+      "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+      "dev": true,
+      "dependencies": {
+        "clean-stack": "^2.0.0",
+        "indent-string": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dev": true,
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "node_modules/ansi-escapes": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+      "dev": true,
+      "dependencies": {
+        "type-fest": "^0.21.3"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "dev": true,
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true
+    },
+    "node_modules/array-each": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/array-each/-/array-each-1.0.1.tgz",
+      "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-slice": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/array-slice/-/array-slice-1.1.0.tgz",
+      "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-union": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz",
+      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/astral-regex": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz",
+      "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+    },
+    "node_modules/autoprefixer": {
+      "version": "10.4.14",
+      "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.14.tgz",
+      "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
+      "dev": true,
+      "dependencies": {
+        "browserslist": "^4.21.5",
+        "caniuse-lite": "^1.0.30001464",
+        "fraction.js": "^4.2.0",
+        "normalize-range": "^0.1.2",
+        "picocolors": "^1.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "bin": {
+        "autoprefixer": "bin/autoprefixer"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/babel-plugin-dynamic-import-node": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+      "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+      "dev": true,
+      "dependencies": {
+        "object.assign": "^4.1.0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs2": {
+      "version": "0.4.3",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz",
+      "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/compat-data": "^7.17.7",
+        "@babel/helper-define-polyfill-provider": "^0.4.0",
+        "semver": "^6.1.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-corejs3": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz",
+      "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.4.0",
+        "core-js-compat": "^3.30.1"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/babel-plugin-polyfill-regenerator": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz",
+      "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/helper-define-polyfill-provider": "^0.4.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "node_modules/base64-arraybuffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+      "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+      "dev": true
+    },
+    "node_modules/binary-extensions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/bl": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/bl/-/bl-5.1.0.tgz",
+      "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
+      "dev": true,
+      "dependencies": {
+        "buffer": "^6.0.3",
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.4.0"
+      }
+    },
+    "node_modules/boolbase": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
+      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+      "dev": true
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dev": true,
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/browserslist": {
+      "version": "4.21.9",
+      "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.9.tgz",
+      "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
+      "dev": true,
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001503",
+        "electron-to-chromium": "^1.4.431",
+        "node-releases": "^2.0.12",
+        "update-browserslist-db": "^1.0.11"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "engines": {
+        "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+      }
+    },
+    "node_modules/buffer": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz",
+      "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+      "dev": true,
+      "dependencies": {
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.2.1"
+      }
+    },
+    "node_modules/buffer-from": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz",
+      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/camel-case": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz",
+      "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
+      "dev": true,
+      "dependencies": {
+        "pascal-case": "^3.1.2",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/camelcase": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
+      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001509",
+      "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz",
+      "integrity": "sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==",
+      "dev": true
+    },
+    "node_modules/capital-case": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/capital-case/-/capital-case-1.0.4.tgz",
+      "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==",
+      "dev": true,
+      "dependencies": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3",
+        "upper-case-first": "^2.0.2"
+      }
+    },
+    "node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/change-case": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/change-case/-/change-case-4.1.2.tgz",
+      "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==",
+      "dev": true,
+      "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.0.3"
+      }
+    },
+    "node_modules/chardet": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz",
+      "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+      "dev": true
+    },
+    "node_modules/chokidar": {
+      "version": "3.5.3",
+      "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
+      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+      "dev": true,
+      "dependencies": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/chokidar/node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/ci-info": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz",
+      "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
+      "dev": true
+    },
+    "node_modules/clean-deep": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmmirror.com/clean-deep/-/clean-deep-3.4.0.tgz",
+      "integrity": "sha512-Lo78NV5ItJL/jl+B5w0BycAisaieJGXK1qYi/9m4SjR8zbqmrUtO7Yhro40wEShGmmxs/aJLI/A+jNhdkXK8mw==",
+      "dependencies": {
+        "lodash.isempty": "^4.4.0",
+        "lodash.isplainobject": "^4.0.6",
+        "lodash.transform": "^4.6.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/clean-stack": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz",
+      "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/cli-cursor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz",
+      "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+      "dev": true,
+      "dependencies": {
+        "restore-cursor": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cli-spinners": {
+      "version": "2.9.0",
+      "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.0.tgz",
+      "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/cli-truncate": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-3.1.0.tgz",
+      "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==",
+      "dev": true,
+      "dependencies": {
+        "slice-ansi": "^5.0.0",
+        "string-width": "^5.0.0"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      }
+    },
+    "node_modules/cli-width": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz",
+      "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/cliui": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      }
+    },
+    "node_modules/cliui/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cliui/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/cliui/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+    },
+    "node_modules/cliui/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+    },
+    "node_modules/cliui/node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cliui/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cliui/node_modules/wrap-ansi": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/clone": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz",
+      "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "dev": true
+    },
+    "node_modules/colorette": {
+      "version": "2.0.20",
+      "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz",
+      "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+      "dev": true
+    },
+    "node_modules/commander": {
+      "version": "10.0.1",
+      "resolved": "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz",
+      "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+      "dev": true,
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true
+    },
+    "node_modules/constant-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/constant-case/-/constant-case-3.0.4.tgz",
+      "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==",
+      "dev": true,
+      "dependencies": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3",
+        "upper-case": "^2.0.2"
+      }
+    },
+    "node_modules/convert-source-map": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
+      "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+      "dev": true
+    },
+    "node_modules/copy-anything": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz",
+      "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+      "dev": true,
+      "dependencies": {
+        "is-what": "^3.14.1"
+      }
+    },
+    "node_modules/copy-text-to-clipboard": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.1.0.tgz",
+      "integrity": "sha512-PFM6BnjLnOON/lB3ta/Jg7Ywsv+l9kQGD4TWDCSlRBGmqnnTM5MrDkhAFgw+8HZt0wW6Q2BBE4cmy9sq+s9Qng==",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/core-js": {
+      "version": "3.31.0",
+      "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.31.0.tgz",
+      "integrity": "sha512-NIp2TQSGfR6ba5aalZD+ZQ1fSxGhDo/s1w0nx3RYzf2pnJxt7YynxFlFScP6eV7+GZsKO95NSjGxyJsU3DZgeQ==",
+      "hasInstallScript": true
+    },
+    "node_modules/core-js-compat": {
+      "version": "3.31.0",
+      "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.31.0.tgz",
+      "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==",
+      "dev": true,
+      "dependencies": {
+        "browserslist": "^4.21.5"
+      }
+    },
+    "node_modules/cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
+      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/css-line-break": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
+      "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+      "dependencies": {
+        "utrie": "^1.0.2"
+      }
+    },
+    "node_modules/css-render": {
+      "version": "0.15.12",
+      "resolved": "https://registry.npmmirror.com/css-render/-/css-render-0.15.12.tgz",
+      "integrity": "sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==",
+      "dependencies": {
+        "@emotion/hash": "~0.8.0",
+        "csstype": "~3.0.5"
+      }
+    },
+    "node_modules/cssesc": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
+      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+      "dev": true,
+      "bin": {
+        "cssesc": "bin/cssesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/csstype": {
+      "version": "3.0.11",
+      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.0.11.tgz",
+      "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw=="
+    },
+    "node_modules/custom-event-polyfill": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmmirror.com/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz",
+      "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w=="
+    },
+    "node_modules/date-fns": {
+      "version": "2.30.0",
+      "resolved": "https://registry.npmmirror.com/date-fns/-/date-fns-2.30.0.tgz",
+      "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
+      "dependencies": {
+        "@babel/runtime": "^7.21.0"
+      },
+      "engines": {
+        "node": ">=0.11"
+      }
+    },
+    "node_modules/date-fns-tz": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmmirror.com/date-fns-tz/-/date-fns-tz-1.3.8.tgz",
+      "integrity": "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==",
+      "peerDependencies": {
+        "date-fns": ">=2.0.0"
+      }
+    },
+    "node_modules/dayjs": {
+      "version": "1.11.8",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.8.tgz",
+      "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ=="
+    },
+    "node_modules/de-indent": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
+      "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
+      "dev": true
+    },
+    "node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/decode-uri-component": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.4.1.tgz",
+      "integrity": "sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==",
+      "engines": {
+        "node": ">=14.16"
+      }
+    },
+    "node_modules/deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+      "dev": true
+    },
+    "node_modules/defaults": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz",
+      "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
+      "dev": true,
+      "dependencies": {
+        "clone": "^1.0.2"
+      }
+    },
+    "node_modules/define-properties": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.0.tgz",
+      "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
+      "dev": true,
+      "dependencies": {
+        "has-property-descriptors": "^1.0.0",
+        "object-keys": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/del": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmmirror.com/del/-/del-6.1.1.tgz",
+      "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
+      "dev": true,
+      "dependencies": {
+        "globby": "^11.0.1",
+        "graceful-fs": "^4.2.4",
+        "is-glob": "^4.0.1",
+        "is-path-cwd": "^2.2.0",
+        "is-path-inside": "^3.0.2",
+        "p-map": "^4.0.0",
+        "rimraf": "^3.0.2",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/detect-file": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/detect-file/-/detect-file-1.0.0.tgz",
+      "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/dijkstrajs": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+    },
+    "node_modules/dir-glob": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
+      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+      "dev": true,
+      "dependencies": {
+        "path-type": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
+      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+      "dev": true,
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/dot-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz",
+      "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
+      "dev": true,
+      "dependencies": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/eastasianwidth": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+      "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+      "dev": true
+    },
+    "node_modules/echarts": {
+      "version": "5.4.2",
+      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.2.tgz",
+      "integrity": "sha512-2W3vw3oI2tWJdyAz+b8DuWS0nfXtSDqlDmqgin/lfzbkB01cuMEN66KWBlmur3YMp5nEDEEt5s23pllnAzB4EA==",
+      "dependencies": {
+        "tslib": "2.3.0",
+        "zrender": "5.4.3"
+      }
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.4.445",
+      "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.445.tgz",
+      "integrity": "sha512-++DB+9VK8SBJwC+X1zlMfJ1tMA3F0ipi39GdEp+x3cV2TyBihqAgad8cNMWtLDEkbH39nlDQP7PfGrDr3Dr7HA==",
+      "dev": true
+    },
+    "node_modules/emoji-regex": {
+      "version": "9.2.2",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz",
+      "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+      "dev": true
+    },
+    "node_modules/encode-utf8": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
+      "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
+    },
+    "node_modules/encoding": {
+      "version": "0.1.13",
+      "resolved": "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz",
+      "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+      "dependencies": {
+        "iconv-lite": "^0.6.2"
+      }
+    },
+    "node_modules/errno": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz",
+      "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "prr": "~1.0.1"
+      },
+      "bin": {
+        "errno": "cli.js"
+      }
+    },
+    "node_modules/esbuild": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz",
+      "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "optionalDependencies": {
+        "@esbuild/android-arm": "0.17.19",
+        "@esbuild/android-arm64": "0.17.19",
+        "@esbuild/android-x64": "0.17.19",
+        "@esbuild/darwin-arm64": "0.17.19",
+        "@esbuild/darwin-x64": "0.17.19",
+        "@esbuild/freebsd-arm64": "0.17.19",
+        "@esbuild/freebsd-x64": "0.17.19",
+        "@esbuild/linux-arm": "0.17.19",
+        "@esbuild/linux-arm64": "0.17.19",
+        "@esbuild/linux-ia32": "0.17.19",
+        "@esbuild/linux-loong64": "0.17.19",
+        "@esbuild/linux-mips64el": "0.17.19",
+        "@esbuild/linux-ppc64": "0.17.19",
+        "@esbuild/linux-riscv64": "0.17.19",
+        "@esbuild/linux-s390x": "0.17.19",
+        "@esbuild/linux-x64": "0.17.19",
+        "@esbuild/netbsd-x64": "0.17.19",
+        "@esbuild/openbsd-x64": "0.17.19",
+        "@esbuild/sunos-x64": "0.17.19",
+        "@esbuild/win32-arm64": "0.17.19",
+        "@esbuild/win32-ia32": "0.17.19",
+        "@esbuild/win32-x64": "0.17.19"
+      }
+    },
+    "node_modules/escalade": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/eslint": {
+      "version": "8.43.0",
+      "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.43.0.tgz",
+      "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==",
+      "dev": true,
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.2.0",
+        "@eslint-community/regexpp": "^4.4.0",
+        "@eslint/eslintrc": "^2.0.3",
+        "@eslint/js": "8.43.0",
+        "@humanwhocodes/config-array": "^0.11.10",
+        "@humanwhocodes/module-importer": "^1.0.1",
+        "@nodelib/fs.walk": "^1.2.8",
+        "ajv": "^6.10.0",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.2",
+        "debug": "^4.3.2",
+        "doctrine": "^3.0.0",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^7.2.0",
+        "eslint-visitor-keys": "^3.4.1",
+        "espree": "^9.5.2",
+        "esquery": "^1.4.2",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^6.0.1",
+        "find-up": "^5.0.0",
+        "glob-parent": "^6.0.2",
+        "globals": "^13.19.0",
+        "graphemer": "^1.4.0",
+        "ignore": "^5.2.0",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "is-path-inside": "^3.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",
+        "strip-ansi": "^6.0.1",
+        "strip-json-comments": "^3.1.0",
+        "text-table": "^0.2.0"
+      },
+      "bin": {
+        "eslint": "bin/eslint.js"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/eslint-config-prettier": {
+      "version": "8.8.0",
+      "resolved": "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz",
+      "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==",
+      "dev": true,
+      "bin": {
+        "eslint-config-prettier": "bin/cli.js"
+      },
+      "peerDependencies": {
+        "eslint": ">=7.0.0"
+      }
+    },
+    "node_modules/eslint-plugin-prettier": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
+      "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==",
+      "dev": true,
+      "dependencies": {
+        "prettier-linter-helpers": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "peerDependencies": {
+        "eslint": ">=7.28.0",
+        "prettier": ">=2.0.0"
+      },
+      "peerDependenciesMeta": {
+        "eslint-config-prettier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/eslint-plugin-vue": {
+      "version": "9.15.1",
+      "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.15.1.tgz",
+      "integrity": "sha512-CJE/oZOslvmAR9hf8SClTdQ9JLweghT6JCBQNrT2Iel1uVw0W0OLJxzvPd6CxmABKCvLrtyDnqGV37O7KQv6+A==",
+      "dev": true,
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.3.0",
+        "natural-compare": "^1.4.0",
+        "nth-check": "^2.0.1",
+        "postcss-selector-parser": "^6.0.9",
+        "semver": "^7.3.5",
+        "vue-eslint-parser": "^9.3.0",
+        "xml-name-validator": "^4.0.0"
+      },
+      "engines": {
+        "node": "^14.17.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
+    "node_modules/eslint-plugin-vue/node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/eslint-plugin-vue/node_modules/semver": {
+      "version": "7.5.3",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
+      "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/eslint-plugin-vue/node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
+    },
+    "node_modules/eslint-scope": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+      "dev": true,
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/eslint-visitor-keys": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
+      "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
+      "dev": true,
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/eslint/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/eslint/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/eslint/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/eslint/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/eslint/node_modules/escape-string-regexp": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/eslint/node_modules/eslint-scope": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.0.tgz",
+      "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
+      "dev": true,
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/eslint/node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/eslint/node_modules/globals": {
+      "version": "13.20.0",
+      "resolved": "https://registry.npmmirror.com/globals/-/globals-13.20.0.tgz",
+      "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+      "dev": true,
+      "dependencies": {
+        "type-fest": "^0.20.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/eslint/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/eslint/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/eslint/node_modules/type-fest": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz",
+      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/espree": {
+      "version": "9.5.2",
+      "resolved": "https://registry.npmmirror.com/espree/-/espree-9.5.2.tgz",
+      "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^8.8.0",
+        "acorn-jsx": "^5.3.2",
+        "eslint-visitor-keys": "^3.4.1"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/esquery": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz",
+      "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+      "dev": true,
+      "dependencies": {
+        "estraverse": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/esquery/node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "dev": true,
+      "dependencies": {
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esrecurse/node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/eventemitter3": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz",
+      "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="
+    },
+    "node_modules/evtd": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npmmirror.com/evtd/-/evtd-0.2.4.tgz",
+      "integrity": "sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw=="
+    },
+    "node_modules/execa": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmmirror.com/execa/-/execa-7.1.1.tgz",
+      "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^7.0.3",
+        "get-stream": "^6.0.1",
+        "human-signals": "^4.3.0",
+        "is-stream": "^3.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^5.1.0",
+        "onetime": "^6.0.0",
+        "signal-exit": "^3.0.7",
+        "strip-final-newline": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.18.0 || ^16.14.0 || >=18.0.0"
+      }
+    },
+    "node_modules/expand-tilde": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/expand-tilde/-/expand-tilde-2.0.2.tgz",
+      "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
+      "dev": true,
+      "dependencies": {
+        "homedir-polyfill": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extend": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
+      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+      "dev": true
+    },
+    "node_modules/external-editor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz",
+      "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+      "dev": true,
+      "dependencies": {
+        "chardet": "^0.7.0",
+        "iconv-lite": "^0.4.24",
+        "tmp": "^0.0.33"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/external-editor/node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dev": true,
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "dev": true
+    },
+    "node_modules/fast-diff": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.3.0.tgz",
+      "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+      "dev": true
+    },
+    "node_modules/fast-glob": {
+      "version": "3.2.12",
+      "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz",
+      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+      "dev": true,
+      "dependencies": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      },
+      "engines": {
+        "node": ">=8.6.0"
+      }
+    },
+    "node_modules/fast-glob/node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true
+    },
+    "node_modules/fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "dev": true
+    },
+    "node_modules/fastq": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz",
+      "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+      "dev": true,
+      "dependencies": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "node_modules/figures": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz",
+      "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+      "dev": true,
+      "dependencies": {
+        "escape-string-regexp": "^1.0.5"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/file-entry-cache": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+      "dev": true,
+      "dependencies": {
+        "flat-cache": "^3.0.4"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dev": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/filter-obj": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/filter-obj/-/filter-obj-5.1.0.tgz",
+      "integrity": "sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==",
+      "engines": {
+        "node": ">=14.16"
+      }
+    },
+    "node_modules/find-up": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz",
+      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^6.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/findup-sync": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/findup-sync/-/findup-sync-5.0.0.tgz",
+      "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==",
+      "dev": true,
+      "dependencies": {
+        "detect-file": "^1.0.0",
+        "is-glob": "^4.0.3",
+        "micromatch": "^4.0.4",
+        "resolve-dir": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      }
+    },
+    "node_modules/fined": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/fined/-/fined-2.0.0.tgz",
+      "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==",
+      "dev": true,
+      "dependencies": {
+        "expand-tilde": "^2.0.2",
+        "is-plain-object": "^5.0.0",
+        "object.defaults": "^1.1.0",
+        "object.pick": "^1.3.0",
+        "parse-filepath": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      }
+    },
+    "node_modules/flagged-respawn": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/flagged-respawn/-/flagged-respawn-2.0.0.tgz",
+      "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 10.13.0"
+      }
+    },
+    "node_modules/flat-cache": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz",
+      "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+      "dev": true,
+      "dependencies": {
+        "flatted": "^3.1.0",
+        "rimraf": "^3.0.2"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/flatted": {
+      "version": "3.2.7",
+      "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz",
+      "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
+      "dev": true
+    },
+    "node_modules/for-in": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz",
+      "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/for-own": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/for-own/-/for-own-1.0.0.tgz",
+      "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
+      "dev": true,
+      "dependencies": {
+        "for-in": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fraction.js": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.2.0.tgz",
+      "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "dev": true
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz",
+      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+    },
+    "node_modules/gensync": {
+      "version": "1.0.0-beta.2",
+      "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
+      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+      "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+      "dependencies": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-proto": "^1.0.1",
+        "has-symbols": "^1.0.3"
+      }
+    },
+    "node_modules/get-stream": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
+      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "dev": true,
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz",
+      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^4.0.3"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/global-modules": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/global-modules/-/global-modules-1.0.0.tgz",
+      "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+      "dev": true,
+      "dependencies": {
+        "global-prefix": "^1.0.1",
+        "is-windows": "^1.0.1",
+        "resolve-dir": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/global-prefix": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/global-prefix/-/global-prefix-1.0.2.tgz",
+      "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
+      "dev": true,
+      "dependencies": {
+        "expand-tilde": "^2.0.2",
+        "homedir-polyfill": "^1.0.1",
+        "ini": "^1.3.4",
+        "is-windows": "^1.0.1",
+        "which": "^1.2.14"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/global-prefix/node_modules/which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "which": "bin/which"
+      }
+    },
+    "node_modules/globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/globby": {
+      "version": "11.1.0",
+      "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz",
+      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+      "dev": true,
+      "dependencies": {
+        "array-union": "^2.1.0",
+        "dir-glob": "^3.0.1",
+        "fast-glob": "^3.2.9",
+        "ignore": "^5.2.0",
+        "merge2": "^1.4.1",
+        "slash": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/graceful-fs": {
+      "version": "4.2.11",
+      "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
+      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+      "dev": true
+    },
+    "node_modules/grapheme-splitter": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
+      "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
+      "dev": true
+    },
+    "node_modules/graphemer": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz",
+      "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+      "dev": true
+    },
+    "node_modules/handlebars": {
+      "version": "4.7.7",
+      "resolved": "https://registry.npmmirror.com/handlebars/-/handlebars-4.7.7.tgz",
+      "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.5",
+        "neo-async": "^2.6.0",
+        "source-map": "^0.6.1",
+        "wordwrap": "^1.0.0"
+      },
+      "bin": {
+        "handlebars": "bin/handlebars"
+      },
+      "engines": {
+        "node": ">=0.4.7"
+      },
+      "optionalDependencies": {
+        "uglify-js": "^3.1.4"
+      }
+    },
+    "node_modules/has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dependencies": {
+        "function-bind": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/has-property-descriptors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+      "dev": true,
+      "dependencies": {
+        "get-intrinsic": "^1.1.1"
+      }
+    },
+    "node_modules/has-proto": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz",
+      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/he": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
+      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+      "dev": true,
+      "bin": {
+        "he": "bin/he"
+      }
+    },
+    "node_modules/header-case": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/header-case/-/header-case-2.0.4.tgz",
+      "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==",
+      "dev": true,
+      "dependencies": {
+        "capital-case": "^1.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/highlight.js": {
+      "version": "11.8.0",
+      "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.8.0.tgz",
+      "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==",
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/homedir-polyfill": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+      "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+      "dev": true,
+      "dependencies": {
+        "parse-passwd": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/howler": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmmirror.com/howler/-/howler-2.2.3.tgz",
+      "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg=="
+    },
+    "node_modules/html-tags": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz",
+      "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/html2canvas": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
+      "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+      "dependencies": {
+        "css-line-break": "^2.1.0",
+        "text-segmentation": "^1.0.3"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/human-signals": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-4.3.1.tgz",
+      "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=14.18.0"
+      }
+    },
+    "node_modules/husky": {
+      "version": "8.0.3",
+      "resolved": "https://registry.npmmirror.com/husky/-/husky-8.0.3.tgz",
+      "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==",
+      "dev": true,
+      "bin": {
+        "husky": "lib/bin.js"
+      },
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
+      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+      "dev": true
+    },
+    "node_modules/ignore": {
+      "version": "5.2.4",
+      "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz",
+      "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/image-size": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz",
+      "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+      "dev": true,
+      "optional": true,
+      "bin": {
+        "image-size": "bin/image-size.js"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+      "dev": true,
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/indent-string": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz",
+      "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "node_modules/ini": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+      "dev": true
+    },
+    "node_modules/inquirer": {
+      "version": "8.2.5",
+      "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-8.2.5.tgz",
+      "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.1.1",
+        "cli-cursor": "^3.1.0",
+        "cli-width": "^3.0.0",
+        "external-editor": "^3.0.3",
+        "figures": "^3.0.0",
+        "lodash": "^4.17.21",
+        "mute-stream": "0.0.8",
+        "ora": "^5.4.1",
+        "run-async": "^2.4.0",
+        "rxjs": "^7.5.5",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0",
+        "through": "^2.3.6",
+        "wrap-ansi": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/inquirer/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/inquirer/node_modules/bl": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz",
+      "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+      "dev": true,
+      "dependencies": {
+        "buffer": "^5.5.0",
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.4.0"
+      }
+    },
+    "node_modules/inquirer/node_modules/buffer": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
+      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+      "dev": true,
+      "dependencies": {
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.1.13"
+      }
+    },
+    "node_modules/inquirer/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/inquirer/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/inquirer/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/inquirer/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true
+    },
+    "node_modules/inquirer/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/inquirer/node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/inquirer/node_modules/is-interactive": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz",
+      "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/inquirer/node_modules/is-unicode-supported": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+      "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/inquirer/node_modules/log-symbols": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz",
+      "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^4.1.0",
+        "is-unicode-supported": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/inquirer/node_modules/ora": {
+      "version": "5.4.1",
+      "resolved": "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz",
+      "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+      "dev": true,
+      "dependencies": {
+        "bl": "^4.1.0",
+        "chalk": "^4.1.0",
+        "cli-cursor": "^3.1.0",
+        "cli-spinners": "^2.5.0",
+        "is-interactive": "^1.0.0",
+        "is-unicode-supported": "^0.1.0",
+        "log-symbols": "^4.1.0",
+        "strip-ansi": "^6.0.0",
+        "wcwidth": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/inquirer/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/inquirer/node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/interpret": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/interpret/-/interpret-2.2.0.tgz",
+      "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-absolute": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/is-absolute/-/is-absolute-1.0.0.tgz",
+      "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
+      "dev": true,
+      "dependencies": {
+        "is-relative": "^1.0.0",
+        "is-windows": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-ci": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz",
+      "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
+      "dev": true,
+      "dependencies": {
+        "ci-info": "^1.5.0"
+      },
+      "bin": {
+        "is-ci": "bin.js"
+      }
+    },
+    "node_modules/is-core-module": {
+      "version": "2.12.1",
+      "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.12.1.tgz",
+      "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
+      "dev": true,
+      "dependencies": {
+        "has": "^1.0.3"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
+      "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-interactive": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-2.0.0.tgz",
+      "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/is-path-cwd": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+      "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/is-path-inside": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz",
+      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-plain-object": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz",
+      "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-relative": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/is-relative/-/is-relative-1.0.0.tgz",
+      "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+      "dev": true,
+      "dependencies": {
+        "is-unc-path": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-stream": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-3.0.0.tgz",
+      "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+      "dev": true,
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      }
+    },
+    "node_modules/is-unc-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/is-unc-path/-/is-unc-path-1.0.0.tgz",
+      "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+      "dev": true,
+      "dependencies": {
+        "unc-path-regex": "^0.1.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-unicode-supported": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+      "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/is-what": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz",
+      "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
+      "dev": true
+    },
+    "node_modules/is-windows": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz",
+      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/isbinaryfile": {
+      "version": "4.0.10",
+      "resolved": "https://registry.npmmirror.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
+      "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8.0.0"
+      }
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true
+    },
+    "node_modules/isobject": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+      "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/isomorphic-fetch": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmmirror.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+      "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==",
+      "dependencies": {
+        "node-fetch": "^1.0.1",
+        "whatwg-fetch": ">=0.10.0"
+      }
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true
+    },
+    "node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+      "dev": true,
+      "bin": {
+        "jsesc": "bin/jsesc"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true
+    },
+    "node_modules/json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+      "dev": true
+    },
+    "node_modules/json5": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+      "dev": true,
+      "bin": {
+        "json5": "lib/cli.js"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/less": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz",
+      "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==",
+      "dev": true,
+      "dependencies": {
+        "copy-anything": "^2.0.1",
+        "parse-node-version": "^1.0.1",
+        "tslib": "^2.3.0"
+      },
+      "bin": {
+        "lessc": "bin/lessc"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "optionalDependencies": {
+        "errno": "^0.1.1",
+        "graceful-fs": "^4.1.2",
+        "image-size": "~0.5.0",
+        "make-dir": "^2.1.0",
+        "mime": "^1.4.1",
+        "needle": "^3.1.0",
+        "source-map": "~0.6.0"
+      }
+    },
+    "node_modules/levn": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz",
+      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+      "dev": true,
+      "dependencies": {
+        "prelude-ls": "^1.2.1",
+        "type-check": "~0.4.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/liftoff": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/liftoff/-/liftoff-4.0.0.tgz",
+      "integrity": "sha512-rMGwYF8q7g2XhG2ulBmmJgWv25qBsqRbDn5gH0+wnuyeFt7QBJlHJmtg5qEdn4pN6WVAUMgXnIxytMFRX9c1aA==",
+      "dev": true,
+      "dependencies": {
+        "extend": "^3.0.2",
+        "findup-sync": "^5.0.0",
+        "fined": "^2.0.0",
+        "flagged-respawn": "^2.0.0",
+        "is-plain-object": "^5.0.0",
+        "object.map": "^1.0.1",
+        "rechoir": "^0.8.0",
+        "resolve": "^1.20.0"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/lilconfig": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz",
+      "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/lint-staged": {
+      "version": "13.2.3",
+      "resolved": "https://registry.npmmirror.com/lint-staged/-/lint-staged-13.2.3.tgz",
+      "integrity": "sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "5.2.0",
+        "cli-truncate": "^3.1.0",
+        "commander": "^10.0.0",
+        "debug": "^4.3.4",
+        "execa": "^7.0.0",
+        "lilconfig": "2.1.0",
+        "listr2": "^5.0.7",
+        "micromatch": "^4.0.5",
+        "normalize-path": "^3.0.0",
+        "object-inspect": "^1.12.3",
+        "pidtree": "^0.6.0",
+        "string-argv": "^0.3.1",
+        "yaml": "^2.2.2"
+      },
+      "bin": {
+        "lint-staged": "bin/lint-staged.js"
+      },
+      "engines": {
+        "node": "^14.13.1 || >=16.0.0"
+      }
+    },
+    "node_modules/lint-staged/node_modules/chalk": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.2.0.tgz",
+      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
+      "dev": true,
+      "engines": {
+        "node": "^12.17.0 || ^14.13 || >=16.0.0"
+      }
+    },
+    "node_modules/listr2": {
+      "version": "5.0.8",
+      "resolved": "https://registry.npmmirror.com/listr2/-/listr2-5.0.8.tgz",
+      "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==",
+      "dev": true,
+      "dependencies": {
+        "cli-truncate": "^2.1.0",
+        "colorette": "^2.0.19",
+        "log-update": "^4.0.0",
+        "p-map": "^4.0.0",
+        "rfdc": "^1.3.0",
+        "rxjs": "^7.8.0",
+        "through": "^2.3.8",
+        "wrap-ansi": "^7.0.0"
+      },
+      "engines": {
+        "node": "^14.13.1 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "enquirer": ">= 2.3.0 < 3"
+      },
+      "peerDependenciesMeta": {
+        "enquirer": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/listr2/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/listr2/node_modules/cli-truncate": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-2.1.0.tgz",
+      "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
+      "dev": true,
+      "dependencies": {
+        "slice-ansi": "^3.0.0",
+        "string-width": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/listr2/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/listr2/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/listr2/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true
+    },
+    "node_modules/listr2/node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/listr2/node_modules/slice-ansi": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-3.0.0.tgz",
+      "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "astral-regex": "^2.0.0",
+        "is-fullwidth-code-point": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/listr2/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/loadjs": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/loadjs/-/loadjs-4.2.0.tgz",
+      "integrity": "sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA=="
+    },
+    "node_modules/local-pkg": {
+      "version": "0.4.3",
+      "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz",
+      "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
+      "dev": true,
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/locate-path": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz",
+      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    },
+    "node_modules/lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+    },
+    "node_modules/lodash.debounce": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+      "dev": true
+    },
+    "node_modules/lodash.get": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmmirror.com/lodash.get/-/lodash.get-4.4.2.tgz",
+      "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
+      "dev": true
+    },
+    "node_modules/lodash.isempty": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmmirror.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
+      "integrity": "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg=="
+    },
+    "node_modules/lodash.isplainobject": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+      "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
+    },
+    "node_modules/lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "dev": true
+    },
+    "node_modules/lodash.transform": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz",
+      "integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ=="
+    },
+    "node_modules/log-symbols": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-5.1.0.tgz",
+      "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^5.0.0",
+        "is-unicode-supported": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/log-symbols/node_modules/chalk": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz",
+      "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+      "dev": true,
+      "engines": {
+        "node": "^12.17.0 || ^14.13 || >=16.0.0"
+      }
+    },
+    "node_modules/log-update": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/log-update/-/log-update-4.0.0.tgz",
+      "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
+      "dev": true,
+      "dependencies": {
+        "ansi-escapes": "^4.3.0",
+        "cli-cursor": "^3.1.0",
+        "slice-ansi": "^4.0.0",
+        "wrap-ansi": "^6.2.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/log-update/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/log-update/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/log-update/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/log-update/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true
+    },
+    "node_modules/log-update/node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/log-update/node_modules/slice-ansi": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz",
+      "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "astral-regex": "^2.0.0",
+        "is-fullwidth-code-point": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/log-update/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/log-update/node_modules/wrap-ansi": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lottie-web": {
+      "version": "5.12.2",
+      "resolved": "https://registry.npmmirror.com/lottie-web/-/lottie-web-5.12.2.tgz",
+      "integrity": "sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg=="
+    },
+    "node_modules/lower-case": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz",
+      "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+      "dev": true,
+      "dependencies": {
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "node_modules/magic-string": {
+      "version": "0.30.0",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.0.tgz",
+      "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==",
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.4.13"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/make-dir": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz",
+      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/make-dir/node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
+      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+      "dev": true,
+      "optional": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/make-iterator": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/make-iterator/-/make-iterator-1.0.1.tgz",
+      "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/map-cache": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz",
+      "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/merge-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+      "dev": true
+    },
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "dependencies": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "dev": true,
+      "optional": true,
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/mimic-fn": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz",
+      "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
+      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+      "dev": true
+    },
+    "node_modules/mkdirp": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz",
+      "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+      "dev": true,
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "node_modules/muggle-string": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.3.1.tgz",
+      "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==",
+      "dev": true
+    },
+    "node_modules/mutation-observer": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/mutation-observer/-/mutation-observer-1.0.3.tgz",
+      "integrity": "sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA=="
+    },
+    "node_modules/mute-stream": {
+      "version": "0.0.8",
+      "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz",
+      "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+      "dev": true
+    },
+    "node_modules/naive-ui": {
+      "version": "2.34.4",
+      "resolved": "https://registry.npmmirror.com/naive-ui/-/naive-ui-2.34.4.tgz",
+      "integrity": "sha512-aPG8PDfhSzIzn/jSC9y3Jb3Pe2wHJ7F0cFV1EWlbImSrZECeUmoc+fIcOSWbizoztkKfaUAeKwYdMl09MKkj1g==",
+      "dependencies": {
+        "@css-render/plugin-bem": "^0.15.10",
+        "@css-render/vue3-ssr": "^0.15.10",
+        "@types/katex": "^0.14.0",
+        "@types/lodash": "^4.14.181",
+        "@types/lodash-es": "^4.17.6",
+        "async-validator": "^4.0.7",
+        "css-render": "^0.15.10",
+        "date-fns": "^2.28.0",
+        "date-fns-tz": "^1.3.3",
+        "evtd": "^0.2.4",
+        "highlight.js": "^11.5.0",
+        "lodash": "^4.17.21",
+        "lodash-es": "^4.17.21",
+        "seemly": "^0.3.6",
+        "treemate": "^0.3.11",
+        "vdirs": "^0.1.8",
+        "vooks": "^0.2.12",
+        "vueuc": "^0.4.51"
+      },
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
+      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true
+    },
+    "node_modules/natural-compare-lite": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
+      "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
+      "dev": true
+    },
+    "node_modules/needle": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/needle/-/needle-3.2.0.tgz",
+      "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "debug": "^3.2.6",
+        "iconv-lite": "^0.6.3",
+        "sax": "^1.2.4"
+      },
+      "bin": {
+        "needle": "bin/needle"
+      },
+      "engines": {
+        "node": ">= 4.4.x"
+      }
+    },
+    "node_modules/needle/node_modules/debug": {
+      "version": "3.2.7",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz",
+      "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/neo-async": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
+      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+      "dev": true
+    },
+    "node_modules/no-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz",
+      "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+      "dev": true,
+      "dependencies": {
+        "lower-case": "^2.0.2",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/node-fetch": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-1.7.3.tgz",
+      "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+      "dependencies": {
+        "encoding": "^0.1.11",
+        "is-stream": "^1.0.1"
+      }
+    },
+    "node_modules/node-fetch/node_modules/is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
+      "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/node-plop": {
+      "version": "0.31.1",
+      "resolved": "https://registry.npmmirror.com/node-plop/-/node-plop-0.31.1.tgz",
+      "integrity": "sha512-qmXJJt3YETFt/e0dtMADVpvck6EvN01Jig086o+J3M6G++mWA7iJ3Pqz4m4kvlynh73Iz2/rcZzxq7xTiF+aIQ==",
+      "dev": true,
+      "dependencies": {
+        "@types/inquirer": "^8.2.1",
+        "change-case": "^4.1.2",
+        "del": "^6.0.0",
+        "globby": "^13.1.1",
+        "handlebars": "^4.4.3",
+        "inquirer": "^8.2.2",
+        "isbinaryfile": "^4.0.8",
+        "lodash.get": "^4.4.2",
+        "lower-case": "^2.0.2",
+        "mkdirp": "^1.0.4",
+        "resolve": "^1.20.0",
+        "title-case": "^3.0.3",
+        "upper-case": "^2.0.2"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      }
+    },
+    "node_modules/node-plop/node_modules/globby": {
+      "version": "13.2.0",
+      "resolved": "https://registry.npmmirror.com/globby/-/globby-13.2.0.tgz",
+      "integrity": "sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ==",
+      "dev": true,
+      "dependencies": {
+        "dir-glob": "^3.0.1",
+        "fast-glob": "^3.2.11",
+        "ignore": "^5.2.0",
+        "merge2": "^1.4.1",
+        "slash": "^4.0.0"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      }
+    },
+    "node_modules/node-plop/node_modules/slash": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/slash/-/slash-4.0.0.tgz",
+      "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/node-releases": {
+      "version": "2.0.12",
+      "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.12.tgz",
+      "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==",
+      "dev": true
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/normalize-range": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz",
+      "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npm-run-path": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-5.1.0.tgz",
+      "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^4.0.0"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      }
+    },
+    "node_modules/npm-run-path/node_modules/path-key": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz",
+      "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/nth-check": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
+      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+      "dev": true,
+      "dependencies": {
+        "boolbase": "^1.0.0"
+      }
+    },
+    "node_modules/numeral": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/numeral/-/numeral-2.0.6.tgz",
+      "integrity": "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/object-inspect": {
+      "version": "1.12.3",
+      "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz",
+      "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
+    },
+    "node_modules/object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object.assign": {
+      "version": "4.1.4",
+      "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.4.tgz",
+      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+      "dev": true,
+      "dependencies": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.4",
+        "has-symbols": "^1.0.3",
+        "object-keys": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object.defaults": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/object.defaults/-/object.defaults-1.1.0.tgz",
+      "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",
+      "dev": true,
+      "dependencies": {
+        "array-each": "^1.0.1",
+        "array-slice": "^1.0.0",
+        "for-own": "^1.0.0",
+        "isobject": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object.map": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/object.map/-/object.map-1.0.1.tgz",
+      "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==",
+      "dev": true,
+      "dependencies": {
+        "for-own": "^1.0.0",
+        "make-iterator": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object.pick": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz",
+      "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+      "dev": true,
+      "dependencies": {
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dev": true,
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/onetime": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/onetime/-/onetime-6.0.0.tgz",
+      "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/optionator": {
+      "version": "0.9.3",
+      "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz",
+      "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+      "dev": true,
+      "dependencies": {
+        "@aashutoshrathi/word-wrap": "^1.2.3",
+        "deep-is": "^0.1.3",
+        "fast-levenshtein": "^2.0.6",
+        "levn": "^0.4.1",
+        "prelude-ls": "^1.2.1",
+        "type-check": "^0.4.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/ora": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmmirror.com/ora/-/ora-6.3.1.tgz",
+      "integrity": "sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^5.0.0",
+        "cli-cursor": "^4.0.0",
+        "cli-spinners": "^2.6.1",
+        "is-interactive": "^2.0.0",
+        "is-unicode-supported": "^1.1.0",
+        "log-symbols": "^5.1.0",
+        "stdin-discarder": "^0.1.0",
+        "strip-ansi": "^7.0.1",
+        "wcwidth": "^1.0.1"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      }
+    },
+    "node_modules/ora/node_modules/ansi-regex": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/ora/node_modules/chalk": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz",
+      "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+      "dev": true,
+      "engines": {
+        "node": "^12.17.0 || ^14.13 || >=16.0.0"
+      }
+    },
+    "node_modules/ora/node_modules/cli-cursor": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-4.0.0.tgz",
+      "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==",
+      "dev": true,
+      "dependencies": {
+        "restore-cursor": "^4.0.0"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      }
+    },
+    "node_modules/ora/node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/ora/node_modules/onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/ora/node_modules/restore-cursor": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-4.0.0.tgz",
+      "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==",
+      "dev": true,
+      "dependencies": {
+        "onetime": "^5.1.0",
+        "signal-exit": "^3.0.2"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      }
+    },
+    "node_modules/ora/node_modules/strip-ansi": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz",
+      "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz",
+      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "dev": true,
+      "dependencies": {
+        "yocto-queue": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz",
+      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/p-map": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz",
+      "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+      "dev": true,
+      "dependencies": {
+        "aggregate-error": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/param-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz",
+      "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
+      "dev": true,
+      "dependencies": {
+        "dot-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parse-filepath": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/parse-filepath/-/parse-filepath-1.0.2.tgz",
+      "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",
+      "dev": true,
+      "dependencies": {
+        "is-absolute": "^1.0.0",
+        "map-cache": "^0.2.0",
+        "path-root": "^0.1.1"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/parse-node-version": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz",
+      "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/parse-passwd": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/parse-passwd/-/parse-passwd-1.0.0.tgz",
+      "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pascal-case": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz",
+      "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+      "dev": true,
+      "dependencies": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/path-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/path-case/-/path-case-3.0.4.tgz",
+      "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==",
+      "dev": true,
+      "dependencies": {
+        "dot-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "dev": true
+    },
+    "node_modules/path-root": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmmirror.com/path-root/-/path-root-0.1.1.tgz",
+      "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",
+      "dev": true,
+      "dependencies": {
+        "path-root-regex": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-root-regex": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmmirror.com/path-root-regex/-/path-root-regex-0.1.2.tgz",
+      "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-type": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz",
+      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true,
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/pidtree": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmmirror.com/pidtree/-/pidtree-0.6.0.tgz",
+      "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
+      "dev": true,
+      "bin": {
+        "pidtree": "bin/pidtree.js"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/pify": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
+      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+      "dev": true,
+      "optional": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/pinia": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.1.4.tgz",
+      "integrity": "sha512-vYlnDu+Y/FXxv1ABo1vhjC+IbqvzUdiUC3sfDRrRyY2CQSrqqaa+iiHmqtARFxJVqWQMCJfXx1PBvFs9aJVLXQ==",
+      "dependencies": {
+        "@vue/devtools-api": "^6.5.0",
+        "vue-demi": ">=0.14.5"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.4.0",
+        "typescript": ">=4.4.4",
+        "vue": "^2.6.14 || ^3.3.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        },
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/plop": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/plop/-/plop-3.1.2.tgz",
+      "integrity": "sha512-39SOtQ3WlePXSNqKqAh/QlUSHXHO25iCnyCO3Qs/9UzPVmwVledRTDGvPd2csh+JnHVXz4c63F6fBwdqZHgbUg==",
+      "dev": true,
+      "dependencies": {
+        "@types/liftoff": "^4.0.0",
+        "chalk": "^5.0.1",
+        "interpret": "^2.2.0",
+        "liftoff": "^4.0.0",
+        "minimist": "^1.2.6",
+        "node-plop": "^0.31.1",
+        "ora": "^6.0.1",
+        "v8flags": "^4.0.0"
+      },
+      "bin": {
+        "plop": "bin/plop.js"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      }
+    },
+    "node_modules/plop/node_modules/chalk": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz",
+      "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+      "dev": true,
+      "engines": {
+        "node": "^12.17.0 || ^14.13 || >=16.0.0"
+      }
+    },
+    "node_modules/plyr": {
+      "version": "3.7.8",
+      "resolved": "https://registry.npmmirror.com/plyr/-/plyr-3.7.8.tgz",
+      "integrity": "sha512-yG/EHDobwbB/uP+4Bm6eUpJ93f8xxHjjk2dYcD1Oqpe1EcuQl5tzzw9Oq+uVAzd2lkM11qZfydSiyIpiB8pgdA==",
+      "dependencies": {
+        "core-js": "^3.26.1",
+        "custom-event-polyfill": "^1.0.7",
+        "loadjs": "^4.2.0",
+        "rangetouch": "^2.0.1",
+        "url-polyfill": "^1.1.12"
+      }
+    },
+    "node_modules/pngjs": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/postcss": {
+      "version": "8.4.24",
+      "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.24.tgz",
+      "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==",
+      "dependencies": {
+        "nanoid": "^3.3.6",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/postcss-pxtorem": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/postcss-pxtorem/-/postcss-pxtorem-6.0.0.tgz",
+      "integrity": "sha512-ZRXrD7MLLjLk2RNGV6UA4f5Y7gy+a/j1EqjAfp9NdcNYVjUMvg5HTYduTjSkKBkRkfqbg/iKrjMO70V4g1LZeg==",
+      "dev": true,
+      "peerDependencies": {
+        "postcss": "^8.0.0"
+      }
+    },
+    "node_modules/postcss-selector-parser": {
+      "version": "6.0.13",
+      "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
+      "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+      "dev": true,
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-value-parser": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+      "dev": true
+    },
+    "node_modules/prelude-ls": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz",
+      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/prettier": {
+      "version": "2.8.8",
+      "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz",
+      "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+      "dev": true,
+      "bin": {
+        "prettier": "bin-prettier.js"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/prettier-linter-helpers": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+      "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+      "dev": true,
+      "dependencies": {
+        "fast-diff": "^1.1.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz",
+      "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/pseudomap": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz",
+      "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
+      "dev": true
+    },
+    "node_modules/punycode": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz",
+      "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/qrcode": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.3.tgz",
+      "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
+      "dependencies": {
+        "dijkstrajs": "^1.0.1",
+        "encode-utf8": "^1.0.3",
+        "pngjs": "^5.0.0",
+        "yargs": "^15.3.1"
+      },
+      "bin": {
+        "qrcode": "bin/qrcode"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/qs": {
+      "version": "6.11.2",
+      "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz",
+      "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+      "dependencies": {
+        "side-channel": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/query-string": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmmirror.com/query-string/-/query-string-8.1.0.tgz",
+      "integrity": "sha512-BFQeWxJOZxZGix7y+SByG3F36dA0AbTy9o6pSmKFcFz7DAj0re9Frkty3saBn3nHo3D0oZJ/+rx3r8H8r8Jbpw==",
+      "dependencies": {
+        "decode-uri-component": "^0.4.1",
+        "filter-obj": "^5.1.0",
+        "split-on-first": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=14.16"
+      }
+    },
+    "node_modules/queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true
+    },
+    "node_modules/rangetouch": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/rangetouch/-/rangetouch-2.0.1.tgz",
+      "integrity": "sha512-sln+pNSc8NGaHoLzwNBssFSf/rSYkqeBXzX1AtJlkJiUaVSJSbRAWJk+4omsXkN+EJalzkZhWQ3th1m0FpR5xA=="
+    },
+    "node_modules/readable-stream": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
+      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dev": true,
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/rechoir": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmmirror.com/rechoir/-/rechoir-0.8.0.tgz",
+      "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
+      "dev": true,
+      "dependencies": {
+        "resolve": "^1.20.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0"
+      }
+    },
+    "node_modules/regenerate": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz",
+      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+      "dev": true
+    },
+    "node_modules/regenerate-unicode-properties": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
+      "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
+      "dev": true,
+      "dependencies": {
+        "regenerate": "^1.4.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/regenerator-runtime": {
+      "version": "0.13.11",
+      "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+    },
+    "node_modules/regenerator-transform": {
+      "version": "0.15.1",
+      "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
+      "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
+      "dev": true,
+      "dependencies": {
+        "@babel/runtime": "^7.8.4"
+      }
+    },
+    "node_modules/regexpu-core": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz",
+      "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/regjsgen": "^0.8.0",
+        "regenerate": "^1.4.2",
+        "regenerate-unicode-properties": "^10.1.0",
+        "regjsparser": "^0.9.1",
+        "unicode-match-property-ecmascript": "^2.0.0",
+        "unicode-match-property-value-ecmascript": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/regjsparser": {
+      "version": "0.9.1",
+      "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz",
+      "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+      "dev": true,
+      "dependencies": {
+        "jsesc": "~0.5.0"
+      },
+      "bin": {
+        "regjsparser": "bin/parser"
+      }
+    },
+    "node_modules/regjsparser/node_modules/jsesc": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz",
+      "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+      "dev": true,
+      "bin": {
+        "jsesc": "bin/jsesc"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+    },
+    "node_modules/resolve": {
+      "version": "1.22.2",
+      "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.2.tgz",
+      "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
+      "dev": true,
+      "dependencies": {
+        "is-core-module": "^2.11.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      },
+      "bin": {
+        "resolve": "bin/resolve"
+      }
+    },
+    "node_modules/resolve-dir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/resolve-dir/-/resolve-dir-1.0.1.tgz",
+      "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
+      "dev": true,
+      "dependencies": {
+        "expand-tilde": "^2.0.0",
+        "global-modules": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/restore-cursor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz",
+      "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+      "dev": true,
+      "dependencies": {
+        "onetime": "^5.1.0",
+        "signal-exit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/restore-cursor/node_modules/mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/restore-cursor/node_modules/onetime": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true,
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/rfdc": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz",
+      "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
+      "dev": true
+    },
+    "node_modules/rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "dev": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/rollup": {
+      "version": "3.25.3",
+      "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.25.3.tgz",
+      "integrity": "sha512-ZT279hx8gszBj9uy5FfhoG4bZx8c+0A1sbqtr7Q3KNWIizpTdDEPZbV2xcbvHsnFp4MavCQYZyzApJ+virB8Yw==",
+      "dev": true,
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=14.18.0",
+        "npm": ">=8.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/run-async": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz",
+      "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
+      "dependencies": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "node_modules/rxjs": {
+      "version": "7.8.1",
+      "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-7.8.1.tgz",
+      "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+      "dev": true,
+      "dependencies": {
+        "tslib": "^2.1.0"
+      }
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "dev": true
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+    },
+    "node_modules/sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/seemly": {
+      "version": "0.3.6",
+      "resolved": "https://registry.npmmirror.com/seemly/-/seemly-0.3.6.tgz",
+      "integrity": "sha512-lEV5VB8BUKTo/AfktXJcy+JeXns26ylbMkIUco8CYREsQijuz4mrXres2Q+vMLdwkuLxJdIPQ8IlCIxLYm71Yw=="
+    },
+    "node_modules/semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
+    "node_modules/sentence-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/sentence-case/-/sentence-case-3.0.4.tgz",
+      "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==",
+      "dev": true,
+      "dependencies": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3",
+        "upper-case-first": "^2.0.2"
+      }
+    },
+    "node_modules/set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+    },
+    "node_modules/shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dev": true,
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/side-channel": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
+      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+      "dependencies": {
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
+      }
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "dev": true
+    },
+    "node_modules/slash": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/slice-ansi": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-5.0.0.tgz",
+      "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^6.0.0",
+        "is-fullwidth-code-point": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/slice-ansi/node_modules/ansi-styles": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz",
+      "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/snake-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/snake-case/-/snake-case-3.0.4.tgz",
+      "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
+      "dev": true,
+      "dependencies": {
+        "dot-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/sortablejs": {
+      "version": "1.10.2",
+      "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.10.2.tgz",
+      "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A=="
+    },
+    "node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-support": {
+      "version": "0.5.21",
+      "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
+      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "node_modules/split-on-first": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/split-on-first/-/split-on-first-3.0.0.tgz",
+      "integrity": "sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/ssr-window": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-4.0.2.tgz",
+      "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ=="
+    },
+    "node_modules/stdin-discarder": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmmirror.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz",
+      "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==",
+      "dev": true,
+      "dependencies": {
+        "bl": "^5.0.0"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      }
+    },
+    "node_modules/string_decoder": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz",
+      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "~5.2.0"
+      }
+    },
+    "node_modules/string-argv": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz",
+      "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6.19"
+      }
+    },
+    "node_modules/string-width": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz",
+      "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+      "dev": true,
+      "dependencies": {
+        "eastasianwidth": "^0.2.0",
+        "emoji-regex": "^9.2.2",
+        "strip-ansi": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/string-width/node_modules/ansi-regex": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/string-width/node_modules/strip-ansi": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-eof": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz",
+      "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-final-newline": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+      "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/strip-indent": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz",
+      "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/svg-tags": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz",
+      "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+      "dev": true
+    },
+    "node_modules/swiper": {
+      "version": "9.4.1",
+      "resolved": "https://registry.npmmirror.com/swiper/-/swiper-9.4.1.tgz",
+      "integrity": "sha512-1nT2T8EzUpZ0FagEqaN/YAhRj33F2x/lN6cyB0/xoYJDMf8KwTFT3hMOeoB8Tg4o3+P/CKqskP+WX0Df046fqA==",
+      "dependencies": {
+        "ssr-window": "^4.0.2"
+      },
+      "engines": {
+        "node": ">= 4.7.0"
+      }
+    },
+    "node_modules/systemjs": {
+      "version": "6.14.1",
+      "resolved": "https://registry.npmmirror.com/systemjs/-/systemjs-6.14.1.tgz",
+      "integrity": "sha512-8ftwWd+XnQtZ/aGbatrN4QFNGrKJzmbtixW+ODpci7pyoTajg4sonPP8aFLESAcuVxaC1FyDESt+SpfFCH9rZQ==",
+      "dev": true
+    },
+    "node_modules/terser": {
+      "version": "5.18.2",
+      "resolved": "https://registry.npmmirror.com/terser/-/terser-5.18.2.tgz",
+      "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==",
+      "dependencies": {
+        "@jridgewell/source-map": "^0.3.3",
+        "acorn": "^8.8.2",
+        "commander": "^2.20.0",
+        "source-map-support": "~0.5.20"
+      },
+      "bin": {
+        "terser": "bin/terser"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/terser/node_modules/commander": {
+      "version": "2.20.3",
+      "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+    },
+    "node_modules/text-segmentation": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
+      "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+      "dependencies": {
+        "utrie": "^1.0.2"
+      }
+    },
+    "node_modules/text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "dev": true
+    },
+    "node_modules/through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz",
+      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+      "dev": true
+    },
+    "node_modules/title-case": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmmirror.com/title-case/-/title-case-3.0.3.tgz",
+      "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==",
+      "dev": true,
+      "dependencies": {
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/tmp": {
+      "version": "0.0.33",
+      "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz",
+      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+      "dev": true,
+      "dependencies": {
+        "os-tmpdir": "~1.0.2"
+      },
+      "engines": {
+        "node": ">=0.6.0"
+      }
+    },
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/treemate": {
+      "version": "0.3.11",
+      "resolved": "https://registry.npmmirror.com/treemate/-/treemate-0.3.11.tgz",
+      "integrity": "sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg=="
+    },
+    "node_modules/tslib": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+    },
+    "node_modules/tsutils": {
+      "version": "3.21.0",
+      "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz",
+      "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+      "dev": true,
+      "dependencies": {
+        "tslib": "^1.8.1"
+      },
+      "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"
+      }
+    },
+    "node_modules/tsutils/node_modules/tslib": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz",
+      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+      "dev": true
+    },
+    "node_modules/type-check": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz",
+      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+      "dev": true,
+      "dependencies": {
+        "prelude-ls": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/type-fest": {
+      "version": "0.21.3",
+      "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz",
+      "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/typescript": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.1.6.tgz",
+      "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
+      "dev": true,
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=14.17"
+      }
+    },
+    "node_modules/uglify-js": {
+      "version": "3.17.4",
+      "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.17.4.tgz",
+      "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
+      "dev": true,
+      "optional": true,
+      "bin": {
+        "uglifyjs": "bin/uglifyjs"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/umi-request": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/umi-request/-/umi-request-1.4.0.tgz",
+      "integrity": "sha512-OknwtQZddZHi0Ggi+Vr/olJ7HNMx4AzlywyK0W3NZBT7B0stjeZ9lcztA85dBgdAj3KVk8uPJPZSnGaDjELhrA==",
+      "dependencies": {
+        "isomorphic-fetch": "^2.2.1",
+        "qs": "^6.9.1"
+      }
+    },
+    "node_modules/unc-path-regex": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmmirror.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+      "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unicode-canonical-property-names-ecmascript": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-match-property-ecmascript": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+      "dev": true,
+      "dependencies": {
+        "unicode-canonical-property-names-ecmascript": "^2.0.0",
+        "unicode-property-aliases-ecmascript": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-match-property-value-ecmascript": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+      "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unicode-property-aliases-ecmascript": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+      "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/unplugin": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.3.1.tgz",
+      "integrity": "sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^8.8.2",
+        "chokidar": "^3.5.3",
+        "webpack-sources": "^3.2.3",
+        "webpack-virtual-modules": "^0.5.0"
+      }
+    },
+    "node_modules/unplugin-vue-components": {
+      "version": "0.24.1",
+      "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.24.1.tgz",
+      "integrity": "sha512-T3A8HkZoIE1Cja95xNqolwza0yD5IVlgZZ1PVAGvVCx8xthmjsv38xWRCtHtwl+rvZyL9uif42SRkDGw9aCfMA==",
+      "dev": true,
+      "dependencies": {
+        "@antfu/utils": "^0.7.2",
+        "@rollup/pluginutils": "^5.0.2",
+        "chokidar": "^3.5.3",
+        "debug": "^4.3.4",
+        "fast-glob": "^3.2.12",
+        "local-pkg": "^0.4.3",
+        "magic-string": "^0.30.0",
+        "minimatch": "^7.4.2",
+        "resolve": "^1.22.1",
+        "unplugin": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "peerDependencies": {
+        "@babel/parser": "^7.15.8",
+        "@nuxt/kit": "^3.2.2",
+        "vue": "2 || 3"
+      },
+      "peerDependenciesMeta": {
+        "@babel/parser": {
+          "optional": true
+        },
+        "@nuxt/kit": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/unplugin-vue-components/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/unplugin-vue-components/node_modules/minimatch": {
+      "version": "7.4.6",
+      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-7.4.6.tgz",
+      "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/update-browserslist-db": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+      "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+      "dev": true,
+      "dependencies": {
+        "escalade": "^3.1.1",
+        "picocolors": "^1.0.0"
+      },
+      "bin": {
+        "update-browserslist-db": "cli.js"
+      },
+      "peerDependencies": {
+        "browserslist": ">= 4.21.0"
+      }
+    },
+    "node_modules/upper-case": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/upper-case/-/upper-case-2.0.2.tgz",
+      "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==",
+      "dev": true,
+      "dependencies": {
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/upper-case-first": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/upper-case-first/-/upper-case-first-2.0.2.tgz",
+      "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==",
+      "dev": true,
+      "dependencies": {
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dev": true,
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/url-polyfill": {
+      "version": "1.1.12",
+      "resolved": "https://registry.npmmirror.com/url-polyfill/-/url-polyfill-1.1.12.tgz",
+      "integrity": "sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A=="
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+      "dev": true
+    },
+    "node_modules/utrie": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
+      "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+      "dependencies": {
+        "base64-arraybuffer": "^1.0.2"
+      }
+    },
+    "node_modules/v8flags": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/v8flags/-/v8flags-4.0.0.tgz",
+      "integrity": "sha512-83N0OkTbn6gOjJ2awNuzuK4czeGxwEwBoTqlhBZhnp8o0IJ72mXRQKphj/azwRf3acbDJZYZhbOPEJHd884ELg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 10.13.0"
+      }
+    },
+    "node_modules/vant": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmmirror.com/vant/-/vant-4.6.0.tgz",
+      "integrity": "sha512-MUwf/SLhI9FPRM12snI9CAUlowlS0LK3SquBZpEKbsIYijAZg0DfH1rAOnLfuQ3kgXCM8HnlCmeELaezT7X7nA==",
+      "dependencies": {
+        "@vant/popperjs": "^1.3.0",
+        "@vant/use": "^1.5.1",
+        "@vue/shared": "^3.0.0"
+      },
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
+    },
+    "node_modules/vconsole": {
+      "version": "3.15.1",
+      "resolved": "https://registry.npmmirror.com/vconsole/-/vconsole-3.15.1.tgz",
+      "integrity": "sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==",
+      "dependencies": {
+        "@babel/runtime": "^7.17.2",
+        "copy-text-to-clipboard": "^3.0.1",
+        "core-js": "^3.11.0",
+        "mutation-observer": "^1.0.3"
+      }
+    },
+    "node_modules/vdirs": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmmirror.com/vdirs/-/vdirs-0.1.8.tgz",
+      "integrity": "sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==",
+      "dependencies": {
+        "evtd": "^0.2.2"
+      },
+      "peerDependencies": {
+        "vue": "^3.0.11"
+      }
+    },
+    "node_modules/vite": {
+      "version": "4.3.9",
+      "resolved": "https://registry.npmmirror.com/vite/-/vite-4.3.9.tgz",
+      "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==",
+      "dev": true,
+      "dependencies": {
+        "esbuild": "^0.17.5",
+        "postcss": "^8.4.23",
+        "rollup": "^3.21.0"
+      },
+      "bin": {
+        "vite": "bin/vite.js"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      },
+      "peerDependencies": {
+        "@types/node": ">= 14",
+        "less": "*",
+        "sass": "*",
+        "stylus": "*",
+        "sugarss": "*",
+        "terser": "^5.4.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "less": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        },
+        "sugarss": {
+          "optional": true
+        },
+        "terser": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vite-plugin-eslint": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmmirror.com/vite-plugin-eslint/-/vite-plugin-eslint-1.8.1.tgz",
+      "integrity": "sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==",
+      "dev": true,
+      "dependencies": {
+        "@rollup/pluginutils": "^4.2.1",
+        "@types/eslint": "^8.4.5",
+        "rollup": "^2.77.2"
+      },
+      "peerDependencies": {
+        "eslint": ">=7",
+        "vite": ">=2"
+      }
+    },
+    "node_modules/vite-plugin-eslint/node_modules/@rollup/pluginutils": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+      "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+      "dev": true,
+      "dependencies": {
+        "estree-walker": "^2.0.1",
+        "picomatch": "^2.2.2"
+      },
+      "engines": {
+        "node": ">= 8.0.0"
+      }
+    },
+    "node_modules/vite-plugin-eslint/node_modules/rollup": {
+      "version": "2.79.1",
+      "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.79.1.tgz",
+      "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+      "dev": true,
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/vooks": {
+      "version": "0.2.12",
+      "resolved": "https://registry.npmmirror.com/vooks/-/vooks-0.2.12.tgz",
+      "integrity": "sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==",
+      "dependencies": {
+        "evtd": "^0.2.2"
+      },
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
+    },
+    "node_modules/vudio.js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/vudio.js/-/vudio.js-1.0.3.tgz",
+      "integrity": "sha512-pip5HpUUmRYTKblq9EoDwUaKSTD4O+8LbGpzKYxRt6ZVQLzS/SpmjvsMTb8Wut6DzAn5fYzxifb9xzRZwEI2IQ=="
+    },
+    "node_modules/vue": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz",
+      "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-sfc": "3.3.4",
+        "@vue/runtime-dom": "3.3.4",
+        "@vue/server-renderer": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/vue-awesome-swiper": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/vue-awesome-swiper/-/vue-awesome-swiper-5.0.1.tgz",
+      "integrity": "sha512-mWjFJzUqA4lG+DmsmibvMpoiBnl+IH2SSeiiQ3i5M0t1y9FknTxnGT0DsMb2YdJLgjYMEK3sYOWzqgLnZMH8Lg==",
+      "peerDependencies": {
+        "swiper": "^7.0.0  || ^8.0.0",
+        "vue": "3.x"
+      }
+    },
+    "node_modules/vue-demi": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz",
+      "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue-eslint-parser": {
+      "version": "9.3.1",
+      "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz",
+      "integrity": "sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.3.4",
+        "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.6"
+      },
+      "engines": {
+        "node": "^14.17.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "eslint": ">=6.0.0"
+      }
+    },
+    "node_modules/vue-eslint-parser/node_modules/eslint-scope": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.0.tgz",
+      "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
+      "dev": true,
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/vue-eslint-parser/node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/vue-eslint-parser/node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/vue-eslint-parser/node_modules/semver": {
+      "version": "7.5.3",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
+      "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/vue-eslint-parser/node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
+    },
+    "node_modules/vue-router": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.2.tgz",
+      "integrity": "sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ==",
+      "dependencies": {
+        "@vue/devtools-api": "^6.5.0"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/vue-template-compiler": {
+      "version": "2.7.14",
+      "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
+      "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
+      "dev": true,
+      "dependencies": {
+        "de-indent": "^1.0.2",
+        "he": "^1.2.0"
+      }
+    },
+    "node_modules/vue-tsc": {
+      "version": "1.8.3",
+      "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.8.3.tgz",
+      "integrity": "sha512-Ua4DHuYxjudlhCW2nRZtaXbhIDVncRGIbDjZhHpF8Z8vklct/G/35/kAPuGNSOmq0JcvhPAe28Oa7LWaUerZVA==",
+      "dev": true,
+      "dependencies": {
+        "@vue/language-core": "1.8.3",
+        "@vue/typescript": "1.8.3",
+        "semver": "^7.3.8"
+      },
+      "bin": {
+        "vue-tsc": "bin/vue-tsc.js"
+      },
+      "peerDependencies": {
+        "typescript": "*"
+      }
+    },
+    "node_modules/vue-tsc/node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/vue-tsc/node_modules/semver": {
+      "version": "7.5.3",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
+      "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/vue-tsc/node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
+    },
+    "node_modules/vue3-lottie": {
+      "version": "2.7.4",
+      "resolved": "https://registry.npmmirror.com/vue3-lottie/-/vue3-lottie-2.7.4.tgz",
+      "integrity": "sha512-EJATgpaWXyqdKxaSY2Q3lK4tTkxTSssKTqBmsIEG7Yj8jT75RGF6zhsoBc/kT10X41vt2HEpjPYmEQfKt6JfOw==",
+      "dependencies": {
+        "lodash-es": "^4.17.21",
+        "lottie-web": "5.12.2"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "peerDependencies": {
+        "vue": "^3.2"
+      }
+    },
+    "node_modules/vuedraggable": {
+      "version": "2.24.3",
+      "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-2.24.3.tgz",
+      "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==",
+      "dependencies": {
+        "sortablejs": "1.10.2"
+      }
+    },
+    "node_modules/vueuc": {
+      "version": "0.4.51",
+      "resolved": "https://registry.npmmirror.com/vueuc/-/vueuc-0.4.51.tgz",
+      "integrity": "sha512-pLiMChM4f+W8czlIClGvGBYo656lc2Y0/mXFSCydcSmnCR1izlKPGMgiYBGjbY9FDkFG8a2HEVz7t0DNzBWbDw==",
+      "dependencies": {
+        "@css-render/vue3-ssr": "^0.15.10",
+        "@juggle/resize-observer": "^3.3.1",
+        "css-render": "^0.15.10",
+        "evtd": "^0.2.4",
+        "seemly": "^0.3.6",
+        "vdirs": "^0.1.4",
+        "vooks": "^0.2.4"
+      },
+      "peerDependencies": {
+        "vue": "^3.0.11"
+      }
+    },
+    "node_modules/wcwidth": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz",
+      "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+      "dev": true,
+      "dependencies": {
+        "defaults": "^1.0.3"
+      }
+    },
+    "node_modules/webpack-sources": {
+      "version": "3.2.3",
+      "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz",
+      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+      "dev": true,
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/webpack-virtual-modules": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz",
+      "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==",
+      "dev": true
+    },
+    "node_modules/whatwg-fetch": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npmmirror.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz",
+      "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA=="
+    },
+    "node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/which-module": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
+      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+    },
+    "node_modules/wordwrap": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/wordwrap/-/wordwrap-1.0.0.tgz",
+      "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
+      "dev": true
+    },
+    "node_modules/wrap-ansi": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+      "dev": true,
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/wrap-ansi/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true
+    },
+    "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dev": true,
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "dev": true
+    },
+    "node_modules/xml-name-validator": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+      "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+      "dev": true,
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/y18n": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+    },
+    "node_modules/yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+      "dev": true
+    },
+    "node_modules/yaml": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.3.1.tgz",
+      "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/yargs": {
+      "version": "15.4.1",
+      "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+      "dependencies": {
+        "cliui": "^6.0.0",
+        "decamelize": "^1.2.0",
+        "find-up": "^4.1.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^4.2.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^18.1.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "18.1.3",
+      "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+      "dependencies": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/yargs-parser/node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/yargs/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+    },
+    "node_modules/yargs/node_modules/find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs/node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs/node_modules/locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs/node_modules/p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/yargs/node_modules/p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yorkie": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz",
+      "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "dependencies": {
+        "execa": "^0.8.0",
+        "is-ci": "^1.0.10",
+        "normalize-path": "^1.0.0",
+        "strip-indent": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/yorkie/node_modules/cross-spawn": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz",
+      "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^4.0.1",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      }
+    },
+    "node_modules/yorkie/node_modules/execa": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz",
+      "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^5.0.1",
+        "get-stream": "^3.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/yorkie/node_modules/get-stream": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz",
+      "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/yorkie/node_modules/is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
+      "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/yorkie/node_modules/lru-cache": {
+      "version": "4.1.5",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz",
+      "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+      "dev": true,
+      "dependencies": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "node_modules/yorkie/node_modules/normalize-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz",
+      "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/yorkie/node_modules/npm-run-path": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
+      "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/yorkie/node_modules/path-key": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
+      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/yorkie/node_modules/shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
+      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+      "dev": true,
+      "dependencies": {
+        "shebang-regex": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/yorkie/node_modules/shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/yorkie/node_modules/which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "which": "bin/which"
+      }
+    },
+    "node_modules/yorkie/node_modules/yallist": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz",
+      "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+      "dev": true
+    },
+    "node_modules/zrender": {
+      "version": "5.4.3",
+      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.3.tgz",
+      "integrity": "sha512-DRUM4ZLnoaT0PBVvGBDO9oWIDBKFdAVieNWxWwK0niYzJCMwGchRk21/hsE+RKkIveH3XHCyvXcJDkgLVvfizQ==",
+      "dependencies": {
+        "tslib": "2.3.0"
+      }
+    }
+  },
+  "dependencies": {
+    "@aashutoshrathi/word-wrap": {
+      "version": "1.2.6",
+      "resolved": "https://registry.npmmirror.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+      "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+      "dev": true
+    },
+    "@amap/amap-jsapi-loader": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz",
+      "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw=="
+    },
+    "@ampproject/remapping": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz",
+      "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      }
+    },
+    "@antfu/utils": {
+      "version": "0.7.4",
+      "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.4.tgz",
+      "integrity": "sha512-qe8Nmh9rYI/HIspLSTwtbMFPj6dISG6+dJnOguTlPNXtCvS2uezdxscVBb7/3DrmNbQK49TDqpkSQ1chbRGdpQ==",
+      "dev": true
+    },
+    "@babel/code-frame": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.22.5.tgz",
+      "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+      "dev": true,
+      "requires": {
+        "@babel/highlight": "^7.22.5"
+      }
+    },
+    "@babel/compat-data": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.22.5.tgz",
+      "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==",
+      "dev": true
+    },
+    "@babel/core": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.22.5.tgz",
+      "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==",
+      "dev": true,
+      "requires": {
+        "@ampproject/remapping": "^2.2.0",
+        "@babel/code-frame": "^7.22.5",
+        "@babel/generator": "^7.22.5",
+        "@babel/helper-compilation-targets": "^7.22.5",
+        "@babel/helper-module-transforms": "^7.22.5",
+        "@babel/helpers": "^7.22.5",
+        "@babel/parser": "^7.22.5",
+        "@babel/template": "^7.22.5",
+        "@babel/traverse": "^7.22.5",
+        "@babel/types": "^7.22.5",
+        "convert-source-map": "^1.7.0",
+        "debug": "^4.1.0",
+        "gensync": "^1.0.0-beta.2",
+        "json5": "^2.2.2",
+        "semver": "^6.3.0"
+      }
+    },
+    "@babel/generator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.22.5.tgz",
+      "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.22.5",
+        "@jridgewell/gen-mapping": "^0.3.2",
+        "@jridgewell/trace-mapping": "^0.3.17",
+        "jsesc": "^2.5.1"
+      }
+    },
+    "@babel/helper-annotate-as-pure": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+      "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz",
+      "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helper-compilation-targets": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz",
+      "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.22.5",
+        "@babel/helper-validator-option": "^7.22.5",
+        "browserslist": "^4.21.3",
+        "lru-cache": "^5.1.1",
+        "semver": "^6.3.0"
+      }
+    },
+    "@babel/helper-create-class-features-plugin": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz",
+      "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-function-name": "^7.22.5",
+        "@babel/helper-member-expression-to-functions": "^7.22.5",
+        "@babel/helper-optimise-call-expression": "^7.22.5",
+        "@babel/helper-replace-supers": "^7.22.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.5",
+        "semver": "^6.3.0"
+      }
+    },
+    "@babel/helper-create-regexp-features-plugin": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz",
+      "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "regexpu-core": "^5.3.1",
+        "semver": "^6.3.0"
+      }
+    },
+    "@babel/helper-define-polyfill-provider": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz",
+      "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-compilation-targets": "^7.17.7",
+        "@babel/helper-plugin-utils": "^7.16.7",
+        "debug": "^4.1.1",
+        "lodash.debounce": "^4.0.8",
+        "resolve": "^1.14.2",
+        "semver": "^6.1.2"
+      }
+    },
+    "@babel/helper-environment-visitor": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz",
+      "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==",
+      "dev": true
+    },
+    "@babel/helper-function-name": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz",
+      "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==",
+      "dev": true,
+      "requires": {
+        "@babel/template": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helper-hoist-variables": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+      "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helper-member-expression-to-functions": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz",
+      "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helper-module-imports": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz",
+      "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helper-module-transforms": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz",
+      "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-module-imports": "^7.22.5",
+        "@babel/helper-simple-access": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.5",
+        "@babel/helper-validator-identifier": "^7.22.5",
+        "@babel/template": "^7.22.5",
+        "@babel/traverse": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helper-optimise-call-expression": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+      "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helper-plugin-utils": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+      "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+      "dev": true
+    },
+    "@babel/helper-remap-async-to-generator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz",
+      "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-wrap-function": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helper-replace-supers": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz",
+      "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-member-expression-to-functions": "^7.22.5",
+        "@babel/helper-optimise-call-expression": "^7.22.5",
+        "@babel/template": "^7.22.5",
+        "@babel/traverse": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helper-simple-access": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+      "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helper-skip-transparent-expression-wrappers": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+      "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helper-split-export-declaration": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz",
+      "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helper-string-parser": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+      "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+      "dev": true
+    },
+    "@babel/helper-validator-identifier": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
+      "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
+      "dev": true
+    },
+    "@babel/helper-validator-option": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
+      "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
+      "dev": true
+    },
+    "@babel/helper-wrap-function": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz",
+      "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.22.5",
+        "@babel/template": "^7.22.5",
+        "@babel/traverse": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/helpers": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.22.5.tgz",
+      "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==",
+      "dev": true,
+      "requires": {
+        "@babel/template": "^7.22.5",
+        "@babel/traverse": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/highlight": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.22.5.tgz",
+      "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-validator-identifier": "^7.22.5",
+        "chalk": "^2.0.0",
+        "js-tokens": "^4.0.0"
+      }
+    },
+    "@babel/parser": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.5.tgz",
+      "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q=="
+    },
+    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz",
+      "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz",
+      "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+        "@babel/plugin-transform-optional-chaining": "^7.22.5"
+      }
+    },
+    "@babel/plugin-proposal-private-property-in-object": {
+      "version": "7.21.0-placeholder-for-preset-env.2",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+      "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+      "dev": true
+    },
+    "@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz",
+      "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      }
+    },
+    "@babel/plugin-syntax-async-generators": {
+      "version": "7.8.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+      "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-class-properties": {
+      "version": "7.12.13",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+      "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.12.13"
+      }
+    },
+    "@babel/plugin-syntax-class-static-block": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+      "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-dynamic-import": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+      "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-export-namespace-from": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+      "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.3"
+      }
+    },
+    "@babel/plugin-syntax-import-assertions": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz",
+      "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-syntax-import-attributes": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz",
+      "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-syntax-import-meta": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+      "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-json-strings": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+      "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-jsx": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
+      "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-syntax-logical-assignment-operators": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+      "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-nullish-coalescing-operator": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+      "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-numeric-separator": {
+      "version": "7.10.4",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+      "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.10.4"
+      }
+    },
+    "@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+      "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+      "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-chaining": {
+      "version": "7.8.3",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+      "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.8.0"
+      }
+    },
+    "@babel/plugin-syntax-private-property-in-object": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+      "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-top-level-await": {
+      "version": "7.14.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+      "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.14.5"
+      }
+    },
+    "@babel/plugin-syntax-typescript": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz",
+      "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-syntax-unicode-sets-regex": {
+      "version": "7.18.6",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+      "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+        "@babel/helper-plugin-utils": "^7.18.6"
+      }
+    },
+    "@babel/plugin-transform-arrow-functions": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz",
+      "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-async-generator-functions": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz",
+      "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-remap-async-to-generator": "^7.22.5",
+        "@babel/plugin-syntax-async-generators": "^7.8.4"
+      }
+    },
+    "@babel/plugin-transform-async-to-generator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz",
+      "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-remap-async-to-generator": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz",
+      "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-block-scoping": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz",
+      "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-class-properties": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz",
+      "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-class-static-block": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz",
+      "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-classes": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz",
+      "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "@babel/helper-compilation-targets": "^7.22.5",
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-function-name": "^7.22.5",
+        "@babel/helper-optimise-call-expression": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-replace-supers": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.5",
+        "globals": "^11.1.0"
+      }
+    },
+    "@babel/plugin-transform-computed-properties": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz",
+      "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/template": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-destructuring": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz",
+      "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-dotall-regex": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz",
+      "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-duplicate-keys": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz",
+      "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-dynamic-import": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz",
+      "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+      }
+    },
+    "@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz",
+      "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-export-namespace-from": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz",
+      "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+      }
+    },
+    "@babel/plugin-transform-for-of": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz",
+      "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-function-name": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz",
+      "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-compilation-targets": "^7.22.5",
+        "@babel/helper-function-name": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-json-strings": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz",
+      "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-json-strings": "^7.8.3"
+      }
+    },
+    "@babel/plugin-transform-literals": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz",
+      "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-logical-assignment-operators": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz",
+      "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+      }
+    },
+    "@babel/plugin-transform-member-expression-literals": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz",
+      "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-modules-amd": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz",
+      "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-modules-commonjs": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz",
+      "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-simple-access": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-modules-systemjs": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz",
+      "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-hoist-variables": "^7.22.5",
+        "@babel/helper-module-transforms": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-validator-identifier": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-modules-umd": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz",
+      "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
+      "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-new-target": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz",
+      "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-nullish-coalescing-operator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz",
+      "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+      }
+    },
+    "@babel/plugin-transform-numeric-separator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz",
+      "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+      }
+    },
+    "@babel/plugin-transform-object-rest-spread": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz",
+      "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.22.5",
+        "@babel/helper-compilation-targets": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-transform-parameters": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-object-super": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz",
+      "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-replace-supers": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-optional-catch-binding": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz",
+      "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+      }
+    },
+    "@babel/plugin-transform-optional-chaining": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz",
+      "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+      }
+    },
+    "@babel/plugin-transform-parameters": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz",
+      "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-private-methods": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz",
+      "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-class-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-private-property-in-object": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz",
+      "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "@babel/helper-create-class-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+      }
+    },
+    "@babel/plugin-transform-property-literals": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz",
+      "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-regenerator": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz",
+      "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "regenerator-transform": "^0.15.1"
+      }
+    },
+    "@babel/plugin-transform-reserved-words": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz",
+      "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-shorthand-properties": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz",
+      "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-spread": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz",
+      "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-sticky-regex": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz",
+      "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-template-literals": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz",
+      "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-typeof-symbol": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz",
+      "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-typescript": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.5.tgz",
+      "integrity": "sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.22.5",
+        "@babel/helper-create-class-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/plugin-syntax-typescript": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-unicode-escapes": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz",
+      "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-unicode-property-regex": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz",
+      "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-unicode-regex": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz",
+      "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/plugin-transform-unicode-sets-regex": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz",
+      "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5"
+      }
+    },
+    "@babel/preset-env": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.22.5.tgz",
+      "integrity": "sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.22.5",
+        "@babel/helper-compilation-targets": "^7.22.5",
+        "@babel/helper-plugin-utils": "^7.22.5",
+        "@babel/helper-validator-option": "^7.22.5",
+        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5",
+        "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+        "@babel/plugin-syntax-async-generators": "^7.8.4",
+        "@babel/plugin-syntax-class-properties": "^7.12.13",
+        "@babel/plugin-syntax-class-static-block": "^7.14.5",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+        "@babel/plugin-syntax-import-assertions": "^7.22.5",
+        "@babel/plugin-syntax-import-attributes": "^7.22.5",
+        "@babel/plugin-syntax-import-meta": "^7.10.4",
+        "@babel/plugin-syntax-json-strings": "^7.8.3",
+        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+        "@babel/plugin-syntax-top-level-await": "^7.14.5",
+        "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+        "@babel/plugin-transform-arrow-functions": "^7.22.5",
+        "@babel/plugin-transform-async-generator-functions": "^7.22.5",
+        "@babel/plugin-transform-async-to-generator": "^7.22.5",
+        "@babel/plugin-transform-block-scoped-functions": "^7.22.5",
+        "@babel/plugin-transform-block-scoping": "^7.22.5",
+        "@babel/plugin-transform-class-properties": "^7.22.5",
+        "@babel/plugin-transform-class-static-block": "^7.22.5",
+        "@babel/plugin-transform-classes": "^7.22.5",
+        "@babel/plugin-transform-computed-properties": "^7.22.5",
+        "@babel/plugin-transform-destructuring": "^7.22.5",
+        "@babel/plugin-transform-dotall-regex": "^7.22.5",
+        "@babel/plugin-transform-duplicate-keys": "^7.22.5",
+        "@babel/plugin-transform-dynamic-import": "^7.22.5",
+        "@babel/plugin-transform-exponentiation-operator": "^7.22.5",
+        "@babel/plugin-transform-export-namespace-from": "^7.22.5",
+        "@babel/plugin-transform-for-of": "^7.22.5",
+        "@babel/plugin-transform-function-name": "^7.22.5",
+        "@babel/plugin-transform-json-strings": "^7.22.5",
+        "@babel/plugin-transform-literals": "^7.22.5",
+        "@babel/plugin-transform-logical-assignment-operators": "^7.22.5",
+        "@babel/plugin-transform-member-expression-literals": "^7.22.5",
+        "@babel/plugin-transform-modules-amd": "^7.22.5",
+        "@babel/plugin-transform-modules-commonjs": "^7.22.5",
+        "@babel/plugin-transform-modules-systemjs": "^7.22.5",
+        "@babel/plugin-transform-modules-umd": "^7.22.5",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
+        "@babel/plugin-transform-new-target": "^7.22.5",
+        "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5",
+        "@babel/plugin-transform-numeric-separator": "^7.22.5",
+        "@babel/plugin-transform-object-rest-spread": "^7.22.5",
+        "@babel/plugin-transform-object-super": "^7.22.5",
+        "@babel/plugin-transform-optional-catch-binding": "^7.22.5",
+        "@babel/plugin-transform-optional-chaining": "^7.22.5",
+        "@babel/plugin-transform-parameters": "^7.22.5",
+        "@babel/plugin-transform-private-methods": "^7.22.5",
+        "@babel/plugin-transform-private-property-in-object": "^7.22.5",
+        "@babel/plugin-transform-property-literals": "^7.22.5",
+        "@babel/plugin-transform-regenerator": "^7.22.5",
+        "@babel/plugin-transform-reserved-words": "^7.22.5",
+        "@babel/plugin-transform-shorthand-properties": "^7.22.5",
+        "@babel/plugin-transform-spread": "^7.22.5",
+        "@babel/plugin-transform-sticky-regex": "^7.22.5",
+        "@babel/plugin-transform-template-literals": "^7.22.5",
+        "@babel/plugin-transform-typeof-symbol": "^7.22.5",
+        "@babel/plugin-transform-unicode-escapes": "^7.22.5",
+        "@babel/plugin-transform-unicode-property-regex": "^7.22.5",
+        "@babel/plugin-transform-unicode-regex": "^7.22.5",
+        "@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
+        "@babel/preset-modules": "^0.1.5",
+        "@babel/types": "^7.22.5",
+        "babel-plugin-polyfill-corejs2": "^0.4.3",
+        "babel-plugin-polyfill-corejs3": "^0.8.1",
+        "babel-plugin-polyfill-regenerator": "^0.5.0",
+        "core-js-compat": "^3.30.2",
+        "semver": "^6.3.0"
+      }
+    },
+    "@babel/preset-modules": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
+      "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+        "@babel/plugin-transform-dotall-regex": "^7.4.4",
+        "@babel/types": "^7.4.4",
+        "esutils": "^2.0.2"
+      }
+    },
+    "@babel/regjsgen": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+      "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+      "dev": true
+    },
+    "@babel/runtime": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.22.5.tgz",
+      "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==",
+      "requires": {
+        "regenerator-runtime": "^0.13.11"
+      }
+    },
+    "@babel/template": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.22.5.tgz",
+      "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.22.5",
+        "@babel/parser": "^7.22.5",
+        "@babel/types": "^7.22.5"
+      }
+    },
+    "@babel/traverse": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.22.5.tgz",
+      "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.22.5",
+        "@babel/generator": "^7.22.5",
+        "@babel/helper-environment-visitor": "^7.22.5",
+        "@babel/helper-function-name": "^7.22.5",
+        "@babel/helper-hoist-variables": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.5",
+        "@babel/parser": "^7.22.5",
+        "@babel/types": "^7.22.5",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0"
+      }
+    },
+    "@babel/types": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.22.5.tgz",
+      "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-string-parser": "^7.22.5",
+        "@babel/helper-validator-identifier": "^7.22.5",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "@css-render/plugin-bem": {
+      "version": "0.15.12",
+      "resolved": "https://registry.npmmirror.com/@css-render/plugin-bem/-/plugin-bem-0.15.12.tgz",
+      "integrity": "sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw=="
+    },
+    "@css-render/vue3-ssr": {
+      "version": "0.15.12",
+      "resolved": "https://registry.npmmirror.com/@css-render/vue3-ssr/-/vue3-ssr-0.15.12.tgz",
+      "integrity": "sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg=="
+    },
+    "@emotion/hash": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz",
+      "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
+    },
+    "@esbuild/android-arm": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz",
+      "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/android-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz",
+      "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/android-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz",
+      "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/darwin-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz",
+      "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/darwin-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz",
+      "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/freebsd-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz",
+      "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/freebsd-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz",
+      "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-arm": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz",
+      "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz",
+      "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-ia32": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz",
+      "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-loong64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz",
+      "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-mips64el": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz",
+      "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-ppc64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz",
+      "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-riscv64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz",
+      "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-s390x": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz",
+      "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz",
+      "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/netbsd-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz",
+      "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/openbsd-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz",
+      "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/sunos-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz",
+      "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-arm64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz",
+      "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-ia32": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz",
+      "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-x64": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz",
+      "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==",
+      "dev": true,
+      "optional": true
+    },
+    "@eslint-community/eslint-utils": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+      "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+      "dev": true,
+      "requires": {
+        "eslint-visitor-keys": "^3.3.0"
+      }
+    },
+    "@eslint-community/regexpp": {
+      "version": "4.5.1",
+      "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
+      "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==",
+      "dev": true
+    },
+    "@eslint/eslintrc": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
+      "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.12.4",
+        "debug": "^4.3.2",
+        "espree": "^9.5.2",
+        "globals": "^13.19.0",
+        "ignore": "^5.2.0",
+        "import-fresh": "^3.2.1",
+        "js-yaml": "^4.1.0",
+        "minimatch": "^3.1.2",
+        "strip-json-comments": "^3.1.1"
+      },
+      "dependencies": {
+        "globals": {
+          "version": "13.20.0",
+          "resolved": "https://registry.npmmirror.com/globals/-/globals-13.20.0.tgz",
+          "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+          "dev": true,
+          "requires": {
+            "type-fest": "^0.20.2"
+          }
+        },
+        "type-fest": {
+          "version": "0.20.2",
+          "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz",
+          "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+          "dev": true
+        }
+      }
+    },
+    "@eslint/js": {
+      "version": "8.43.0",
+      "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.43.0.tgz",
+      "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==",
+      "dev": true
+    },
+    "@humanwhocodes/config-array": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
+      "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
+      "dev": true,
+      "requires": {
+        "@humanwhocodes/object-schema": "^1.2.1",
+        "debug": "^4.1.1",
+        "minimatch": "^3.0.5"
+      }
+    },
+    "@humanwhocodes/module-importer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+      "dev": true
+    },
+    "@humanwhocodes/object-schema": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
+      "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+      "dev": true
+    },
+    "@jridgewell/gen-mapping": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+      "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+      "requires": {
+        "@jridgewell/set-array": "^1.0.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      }
+    },
+    "@jridgewell/resolve-uri": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
+      "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
+    },
+    "@jridgewell/set-array": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+      "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
+    },
+    "@jridgewell/source-map": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.3.tgz",
+      "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
+      "requires": {
+        "@jridgewell/gen-mapping": "^0.3.0",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      }
+    },
+    "@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+    },
+    "@jridgewell/trace-mapping": {
+      "version": "0.3.18",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
+      "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
+      "requires": {
+        "@jridgewell/resolve-uri": "3.1.0",
+        "@jridgewell/sourcemap-codec": "1.4.14"
+      },
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": {
+          "version": "1.4.14",
+          "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+          "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+        }
+      }
+    },
+    "@juggle/resize-observer": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmmirror.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz",
+      "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA=="
+    },
+    "@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      }
+    },
+    "@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true
+    },
+    "@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      }
+    },
+    "@rollup/pluginutils": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
+      "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
+      "dev": true,
+      "requires": {
+        "@types/estree": "^1.0.0",
+        "estree-walker": "^2.0.2",
+        "picomatch": "^2.3.1"
+      }
+    },
+    "@types/eslint": {
+      "version": "8.40.2",
+      "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.40.2.tgz",
+      "integrity": "sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==",
+      "dev": true,
+      "requires": {
+        "@types/estree": "*",
+        "@types/json-schema": "*"
+      }
+    },
+    "@types/estree": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.1.tgz",
+      "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
+      "dev": true
+    },
+    "@types/fined": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/@types/fined/-/fined-1.1.3.tgz",
+      "integrity": "sha512-CWYnSRnun3CGbt6taXeVo2lCbuaj4mchVJ4UF/BdU5TSuIn3AmS13pGMwCsBUoehGbhZrBrpNJZSZI5EVilXww==",
+      "dev": true
+    },
+    "@types/inquirer": {
+      "version": "8.2.6",
+      "resolved": "https://registry.npmmirror.com/@types/inquirer/-/inquirer-8.2.6.tgz",
+      "integrity": "sha512-3uT88kxg8lNzY8ay2ZjP44DKcRaTGztqeIvN2zHvhzIBH/uAPaL75aBtdNRKbA7xXoMbBt5kX0M00VKAnfOYlA==",
+      "dev": true,
+      "requires": {
+        "@types/through": "*",
+        "rxjs": "^7.2.0"
+      }
+    },
+    "@types/json-schema": {
+      "version": "7.0.12",
+      "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.12.tgz",
+      "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
+      "dev": true
+    },
+    "@types/katex": {
+      "version": "0.14.0",
+      "resolved": "https://registry.npmmirror.com/@types/katex/-/katex-0.14.0.tgz",
+      "integrity": "sha512-+2FW2CcT0K3P+JMR8YG846bmDwplKUTsWgT2ENwdQ1UdVfRk3GQrh6Mi4sTopy30gI8Uau5CEqHTDZ6YvWIUPA=="
+    },
+    "@types/liftoff": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/@types/liftoff/-/liftoff-4.0.0.tgz",
+      "integrity": "sha512-Ny/PJkO6nxWAQnaet8q/oWz15lrfwvdvBpuY4treB0CSsBO1CG0fVuNLngR3m3bepQLd+E4c3Y3DlC2okpUvPw==",
+      "dev": true,
+      "requires": {
+        "@types/fined": "*",
+        "@types/node": "*"
+      }
+    },
+    "@types/lodash": {
+      "version": "4.14.195",
+      "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.195.tgz",
+      "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg=="
+    },
+    "@types/lodash-es": {
+      "version": "4.17.7",
+      "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.7.tgz",
+      "integrity": "sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==",
+      "requires": {
+        "@types/lodash": "*"
+      }
+    },
+    "@types/node": {
+      "version": "16.18.37",
+      "resolved": "https://registry.npmmirror.com/@types/node/-/node-16.18.37.tgz",
+      "integrity": "sha512-ql+4dw4PlPFBP495k8JzUX/oMNRI2Ei4PrMHgj8oT4VhGlYUzF4EYr0qk2fW+XBVGIrq8Zzk13m4cvyXZuv4pA==",
+      "dev": true
+    },
+    "@types/semver": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.5.0.tgz",
+      "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
+      "dev": true
+    },
+    "@types/through": {
+      "version": "0.0.30",
+      "resolved": "https://registry.npmmirror.com/@types/through/-/through-0.0.30.tgz",
+      "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@types/web-bluetooth": {
+      "version": "0.0.17",
+      "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz",
+      "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA=="
+    },
+    "@typescript-eslint/eslint-plugin": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.1.tgz",
+      "integrity": "sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==",
+      "dev": true,
+      "requires": {
+        "@eslint-community/regexpp": "^4.4.0",
+        "@typescript-eslint/scope-manager": "5.60.1",
+        "@typescript-eslint/type-utils": "5.60.1",
+        "@typescript-eslint/utils": "5.60.1",
+        "debug": "^4.3.4",
+        "grapheme-splitter": "^1.0.4",
+        "ignore": "^5.2.0",
+        "natural-compare-lite": "^1.4.0",
+        "semver": "^7.3.7",
+        "tsutils": "^3.21.0"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.5.3",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
+          "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
+        }
+      }
+    },
+    "@typescript-eslint/parser": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.60.1.tgz",
+      "integrity": "sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==",
+      "dev": true,
+      "requires": {
+        "@typescript-eslint/scope-manager": "5.60.1",
+        "@typescript-eslint/types": "5.60.1",
+        "@typescript-eslint/typescript-estree": "5.60.1",
+        "debug": "^4.3.4"
+      }
+    },
+    "@typescript-eslint/scope-manager": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz",
+      "integrity": "sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==",
+      "dev": true,
+      "requires": {
+        "@typescript-eslint/types": "5.60.1",
+        "@typescript-eslint/visitor-keys": "5.60.1"
+      }
+    },
+    "@typescript-eslint/type-utils": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.60.1.tgz",
+      "integrity": "sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==",
+      "dev": true,
+      "requires": {
+        "@typescript-eslint/typescript-estree": "5.60.1",
+        "@typescript-eslint/utils": "5.60.1",
+        "debug": "^4.3.4",
+        "tsutils": "^3.21.0"
+      }
+    },
+    "@typescript-eslint/types": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.60.1.tgz",
+      "integrity": "sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==",
+      "dev": true
+    },
+    "@typescript-eslint/typescript-estree": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz",
+      "integrity": "sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==",
+      "dev": true,
+      "requires": {
+        "@typescript-eslint/types": "5.60.1",
+        "@typescript-eslint/visitor-keys": "5.60.1",
+        "debug": "^4.3.4",
+        "globby": "^11.1.0",
+        "is-glob": "^4.0.3",
+        "semver": "^7.3.7",
+        "tsutils": "^3.21.0"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.5.3",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
+          "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
+        }
+      }
+    },
+    "@typescript-eslint/utils": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.60.1.tgz",
+      "integrity": "sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==",
+      "dev": true,
+      "requires": {
+        "@eslint-community/eslint-utils": "^4.2.0",
+        "@types/json-schema": "^7.0.9",
+        "@types/semver": "^7.3.12",
+        "@typescript-eslint/scope-manager": "5.60.1",
+        "@typescript-eslint/types": "5.60.1",
+        "@typescript-eslint/typescript-estree": "5.60.1",
+        "eslint-scope": "^5.1.1",
+        "semver": "^7.3.7"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.5.3",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
+          "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
+        }
+      }
+    },
+    "@typescript-eslint/visitor-keys": {
+      "version": "5.60.1",
+      "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz",
+      "integrity": "sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==",
+      "dev": true,
+      "requires": {
+        "@typescript-eslint/types": "5.60.1",
+        "eslint-visitor-keys": "^3.3.0"
+      }
+    },
+    "@vant/popperjs": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz",
+      "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw=="
+    },
+    "@vant/use": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.5.2.tgz",
+      "integrity": "sha512-CBK61iT568dCHUwFFsErGbW6/5tmrPnZJKGtcSy7Tjcrmws8Ku+YZo7IUFD9Xkj9MfSJ4pfhQ7pU2KouP5Cojg=="
+    },
+    "@vitejs/plugin-legacy": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-4.0.5.tgz",
+      "integrity": "sha512-0N1CSAHjFTaxcKC9IcKDWMapmAfGn2mNdbROMf6UW0kypYLzDK8vAAbJIFW0jWvkv2aZfTgNs4KmQxoQDupUuQ==",
+      "dev": true,
+      "requires": {
+        "@babel/core": "^7.22.5",
+        "@babel/preset-env": "^7.22.5",
+        "browserslist": "^4.21.9",
+        "core-js": "^3.31.0",
+        "magic-string": "^0.30.0",
+        "regenerator-runtime": "^0.13.11",
+        "systemjs": "^6.14.1"
+      }
+    },
+    "@vitejs/plugin-vue": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz",
+      "integrity": "sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==",
+      "dev": true
+    },
+    "@vitejs/plugin-vue-jsx": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.0.1.tgz",
+      "integrity": "sha512-+Jb7ggL48FSPS1uhPnJbJwWa9Sr90vQ+d0InW+AhBM22n+cfuYqJZDckBc+W3QSHe1WDvewMZfa4wZOtk5pRgw==",
+      "dev": true,
+      "requires": {
+        "@babel/core": "^7.20.7",
+        "@babel/plugin-transform-typescript": "^7.20.7",
+        "@vue/babel-plugin-jsx": "^1.1.1"
+      }
+    },
+    "@volar/language-core": {
+      "version": "1.7.10",
+      "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.7.10.tgz",
+      "integrity": "sha512-18Gmth5M0UI3hDDqhZngjMnb6WCslcfglkOdepRIhGxRYe7xR7DRRzciisYDMZsvOQxDYme+uaohg0dKUxLV2Q==",
+      "dev": true,
+      "requires": {
+        "@volar/source-map": "1.7.10"
+      }
+    },
+    "@volar/source-map": {
+      "version": "1.7.10",
+      "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.7.10.tgz",
+      "integrity": "sha512-FBpLEOKJpRxeh2nYbw1mTI5sZOPXYU8LlsCz6xuBY3yNtAizDTTIZtBHe1V8BaMpoSMgRysZe4gVxMEi3rDGVA==",
+      "dev": true,
+      "requires": {
+        "muggle-string": "^0.3.1"
+      }
+    },
+    "@volar/typescript": {
+      "version": "1.7.10",
+      "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.7.10.tgz",
+      "integrity": "sha512-yqIov4wndLU3GE1iE25bU5W6T+P+exPePcE1dFPPBKzQIBki1KvmdQN5jBlJp3Wo+wp7UIxa/RsdNkXT+iFBjg==",
+      "dev": true,
+      "requires": {
+        "@volar/language-core": "1.7.10"
+      }
+    },
+    "@vue/babel-helper-vue-transform-on": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz",
+      "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==",
+      "dev": true
+    },
+    "@vue/babel-plugin-jsx": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz",
+      "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.22.5",
+        "@babel/plugin-syntax-jsx": "^7.22.5",
+        "@babel/template": "^7.22.5",
+        "@babel/traverse": "^7.22.5",
+        "@babel/types": "^7.22.5",
+        "@vue/babel-helper-vue-transform-on": "^1.1.5",
+        "camelcase": "^6.3.0",
+        "html-tags": "^3.3.1",
+        "svg-tags": "^1.0.0"
+      }
+    },
+    "@vue/compiler-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+      "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+      "requires": {
+        "@babel/parser": "^7.21.3",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "@vue/compiler-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+      "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+      "requires": {
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/compiler-sfc": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+      "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+      "requires": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/reactivity-transform": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0",
+        "postcss": "^8.1.10",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "@vue/compiler-ssr": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+      "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+      "requires": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/devtools-api": {
+      "version": "6.5.0",
+      "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
+      "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
+    },
+    "@vue/eslint-config-prettier": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmmirror.com/@vue/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz",
+      "integrity": "sha512-Pv/lVr0bAzSIHLd9iz0KnvAr4GKyCEl+h52bc4e5yWuDVtLgFwycF7nrbWTAQAS+FU6q1geVd07lc6EWfJiWKQ==",
+      "dev": true,
+      "requires": {
+        "eslint-config-prettier": "^8.3.0",
+        "eslint-plugin-prettier": "^4.0.0"
+      }
+    },
+    "@vue/eslint-config-typescript": {
+      "version": "11.0.3",
+      "resolved": "https://registry.npmmirror.com/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz",
+      "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==",
+      "dev": true,
+      "requires": {
+        "@typescript-eslint/eslint-plugin": "^5.59.1",
+        "@typescript-eslint/parser": "^5.59.1",
+        "vue-eslint-parser": "^9.1.1"
+      }
+    },
+    "@vue/language-core": {
+      "version": "1.8.3",
+      "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.3.tgz",
+      "integrity": "sha512-AzhvMYoQkK/tg8CpAAttO19kx1zjS3+weYIr2AhlH/M5HebVzfftQoq4jZNFifjq+hyLKi8j9FiDMS8oqA89+A==",
+      "dev": true,
+      "requires": {
+        "@volar/language-core": "1.7.10",
+        "@volar/source-map": "1.7.10",
+        "@vue/compiler-dom": "^3.3.0",
+        "@vue/reactivity": "^3.3.0",
+        "@vue/shared": "^3.3.0",
+        "minimatch": "^9.0.0",
+        "muggle-string": "^0.3.1",
+        "vue-template-compiler": "^2.7.14"
+      },
+      "dependencies": {
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
+        "minimatch": {
+          "version": "9.0.2",
+          "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.2.tgz",
+          "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^2.0.1"
+          }
+        }
+      }
+    },
+    "@vue/reactivity": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz",
+      "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+      "requires": {
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/reactivity-transform": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+      "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+      "requires": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0"
+      }
+    },
+    "@vue/runtime-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+      "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+      "requires": {
+        "@vue/reactivity": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/runtime-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+      "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+      "requires": {
+        "@vue/runtime-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "csstype": "^3.1.1"
+      },
+      "dependencies": {
+        "csstype": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz",
+          "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+        }
+      }
+    },
+    "@vue/server-renderer": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+      "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+      "requires": {
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "@vue/typescript": {
+      "version": "1.8.3",
+      "resolved": "https://registry.npmmirror.com/@vue/typescript/-/typescript-1.8.3.tgz",
+      "integrity": "sha512-6bdgSnIFpRYHlt70pHmnmNksPU00bfXgqAISeaNz3W6d2cH0OTfH8h/IhligQ82sJIhsuyfftQJ5518ZuKIhtA==",
+      "dev": true,
+      "requires": {
+        "@volar/typescript": "1.7.10",
+        "@vue/language-core": "1.8.3"
+      }
+    },
+    "@vueuse/core": {
+      "version": "10.2.1",
+      "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-10.2.1.tgz",
+      "integrity": "sha512-c441bfMbkAwTNwVRHQ0zdYZNETK//P84rC01aP2Uy/aRFCiie9NE/k9KdIXbno0eDYP5NPUuWv0aA/I4Unr/7w==",
+      "requires": {
+        "@types/web-bluetooth": "^0.0.17",
+        "@vueuse/metadata": "10.2.1",
+        "@vueuse/shared": "10.2.1",
+        "vue-demi": ">=0.14.5"
+      }
+    },
+    "@vueuse/metadata": {
+      "version": "10.2.1",
+      "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-10.2.1.tgz",
+      "integrity": "sha512-3Gt68mY/i6bQvFqx7cuGBzrCCQu17OBaGWS5JdwISpMsHnMKKjC2FeB5OAfMcCQ0oINfADP3i9A4PPRo0peHdQ=="
+    },
+    "@vueuse/shared": {
+      "version": "10.2.1",
+      "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-10.2.1.tgz",
+      "integrity": "sha512-QWHq2bSuGptkcxx4f4M/fBYC3Y8d3M2UYyLsyzoPgEoVzJURQ0oJeWXu79OiLlBb8gTKkqe4mO85T/sf39mmiw==",
+      "requires": {
+        "vue-demi": ">=0.14.5"
+      }
+    },
+    "acorn": {
+      "version": "8.9.0",
+      "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.9.0.tgz",
+      "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ=="
+    },
+    "acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "dev": true
+    },
+    "aggregate-error": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz",
+      "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+      "dev": true,
+      "requires": {
+        "clean-stack": "^2.0.0",
+        "indent-string": "^4.0.0"
+      }
+    },
+    "ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "dev": true,
+      "requires": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "ansi-escapes": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+      "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+      "dev": true,
+      "requires": {
+        "type-fest": "^0.21.3"
+      }
+    },
+    "ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "dev": true,
+      "requires": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      }
+    },
+    "argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true
+    },
+    "array-each": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/array-each/-/array-each-1.0.1.tgz",
+      "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
+      "dev": true
+    },
+    "array-slice": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/array-slice/-/array-slice-1.1.0.tgz",
+      "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+      "dev": true
+    },
+    "array-union": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz",
+      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+      "dev": true
+    },
+    "astral-regex": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz",
+      "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+      "dev": true
+    },
+    "async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+    },
+    "autoprefixer": {
+      "version": "10.4.14",
+      "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.14.tgz",
+      "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.21.5",
+        "caniuse-lite": "^1.0.30001464",
+        "fraction.js": "^4.2.0",
+        "normalize-range": "^0.1.2",
+        "picocolors": "^1.0.0",
+        "postcss-value-parser": "^4.2.0"
+      }
+    },
+    "babel-plugin-dynamic-import-node": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+      "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+      "dev": true,
+      "requires": {
+        "object.assign": "^4.1.0"
+      }
+    },
+    "babel-plugin-polyfill-corejs2": {
+      "version": "0.4.3",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz",
+      "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==",
+      "dev": true,
+      "requires": {
+        "@babel/compat-data": "^7.17.7",
+        "@babel/helper-define-polyfill-provider": "^0.4.0",
+        "semver": "^6.1.1"
+      }
+    },
+    "babel-plugin-polyfill-corejs3": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz",
+      "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-define-polyfill-provider": "^0.4.0",
+        "core-js-compat": "^3.30.1"
+      }
+    },
+    "babel-plugin-polyfill-regenerator": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz",
+      "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-define-polyfill-provider": "^0.4.0"
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "base64-arraybuffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+      "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
+    },
+    "base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+      "dev": true
+    },
+    "binary-extensions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+      "dev": true
+    },
+    "bl": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/bl/-/bl-5.1.0.tgz",
+      "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
+      "dev": true,
+      "requires": {
+        "buffer": "^6.0.3",
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.4.0"
+      }
+    },
+    "boolbase": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
+      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+      "dev": true
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dev": true,
+      "requires": {
+        "fill-range": "^7.0.1"
+      }
+    },
+    "browserslist": {
+      "version": "4.21.9",
+      "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.9.tgz",
+      "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==",
+      "dev": true,
+      "requires": {
+        "caniuse-lite": "^1.0.30001503",
+        "electron-to-chromium": "^1.4.431",
+        "node-releases": "^2.0.12",
+        "update-browserslist-db": "^1.0.11"
+      }
+    },
+    "buffer": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz",
+      "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+      "dev": true,
+      "requires": {
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.2.1"
+      }
+    },
+    "buffer-from": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+    },
+    "call-bind": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz",
+      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
+      }
+    },
+    "callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "dev": true
+    },
+    "camel-case": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz",
+      "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
+      "dev": true,
+      "requires": {
+        "pascal-case": "^3.1.2",
+        "tslib": "^2.0.3"
+      }
+    },
+    "camelcase": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
+      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+      "dev": true
+    },
+    "caniuse-lite": {
+      "version": "1.0.30001509",
+      "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz",
+      "integrity": "sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==",
+      "dev": true
+    },
+    "capital-case": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/capital-case/-/capital-case-1.0.4.tgz",
+      "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==",
+      "dev": true,
+      "requires": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3",
+        "upper-case-first": "^2.0.2"
+      }
+    },
+    "chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      }
+    },
+    "change-case": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmmirror.com/change-case/-/change-case-4.1.2.tgz",
+      "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==",
+      "dev": true,
+      "requires": {
+        "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.0.3"
+      }
+    },
+    "chardet": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz",
+      "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+      "dev": true
+    },
+    "chokidar": {
+      "version": "3.5.3",
+      "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
+      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+      "dev": true,
+      "requires": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "fsevents": "~2.3.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "dependencies": {
+        "glob-parent": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+          "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+          "dev": true,
+          "requires": {
+            "is-glob": "^4.0.1"
+          }
+        }
+      }
+    },
+    "ci-info": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz",
+      "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
+      "dev": true
+    },
+    "clean-deep": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmmirror.com/clean-deep/-/clean-deep-3.4.0.tgz",
+      "integrity": "sha512-Lo78NV5ItJL/jl+B5w0BycAisaieJGXK1qYi/9m4SjR8zbqmrUtO7Yhro40wEShGmmxs/aJLI/A+jNhdkXK8mw==",
+      "requires": {
+        "lodash.isempty": "^4.4.0",
+        "lodash.isplainobject": "^4.0.6",
+        "lodash.transform": "^4.6.0"
+      }
+    },
+    "clean-stack": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz",
+      "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+      "dev": true
+    },
+    "cli-cursor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz",
+      "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+      "dev": true,
+      "requires": {
+        "restore-cursor": "^3.1.0"
+      }
+    },
+    "cli-spinners": {
+      "version": "2.9.0",
+      "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.0.tgz",
+      "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==",
+      "dev": true
+    },
+    "cli-truncate": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-3.1.0.tgz",
+      "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==",
+      "dev": true,
+      "requires": {
+        "slice-ansi": "^5.0.0",
+        "string-width": "^5.0.0"
+      }
+    },
+    "cli-width": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz",
+      "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+      "dev": true
+    },
+    "cliui": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+      "requires": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+        },
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "wrap-ansi": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+          "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
+          }
+        }
+      }
+    },
+    "clone": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz",
+      "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+      "dev": true
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "dev": true
+    },
+    "colorette": {
+      "version": "2.0.20",
+      "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz",
+      "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
+      "dev": true
+    },
+    "commander": {
+      "version": "10.0.1",
+      "resolved": "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz",
+      "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
+      "dev": true
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true
+    },
+    "constant-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/constant-case/-/constant-case-3.0.4.tgz",
+      "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==",
+      "dev": true,
+      "requires": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3",
+        "upper-case": "^2.0.2"
+      }
+    },
+    "convert-source-map": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
+      "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+      "dev": true
+    },
+    "copy-anything": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz",
+      "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+      "dev": true,
+      "requires": {
+        "is-what": "^3.14.1"
+      }
+    },
+    "copy-text-to-clipboard": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.1.0.tgz",
+      "integrity": "sha512-PFM6BnjLnOON/lB3ta/Jg7Ywsv+l9kQGD4TWDCSlRBGmqnnTM5MrDkhAFgw+8HZt0wW6Q2BBE4cmy9sq+s9Qng=="
+    },
+    "core-js": {
+      "version": "3.31.0",
+      "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.31.0.tgz",
+      "integrity": "sha512-NIp2TQSGfR6ba5aalZD+ZQ1fSxGhDo/s1w0nx3RYzf2pnJxt7YynxFlFScP6eV7+GZsKO95NSjGxyJsU3DZgeQ=="
+    },
+    "core-js-compat": {
+      "version": "3.31.0",
+      "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.31.0.tgz",
+      "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.21.5"
+      }
+    },
+    "cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
+      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+      "dev": true,
+      "requires": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      }
+    },
+    "css-line-break": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
+      "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+      "requires": {
+        "utrie": "^1.0.2"
+      }
+    },
+    "css-render": {
+      "version": "0.15.12",
+      "resolved": "https://registry.npmmirror.com/css-render/-/css-render-0.15.12.tgz",
+      "integrity": "sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==",
+      "requires": {
+        "@emotion/hash": "~0.8.0",
+        "csstype": "~3.0.5"
+      }
+    },
+    "cssesc": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
+      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+      "dev": true
+    },
+    "csstype": {
+      "version": "3.0.11",
+      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.0.11.tgz",
+      "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw=="
+    },
+    "custom-event-polyfill": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmmirror.com/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz",
+      "integrity": "sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w=="
+    },
+    "date-fns": {
+      "version": "2.30.0",
+      "resolved": "https://registry.npmmirror.com/date-fns/-/date-fns-2.30.0.tgz",
+      "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
+      "requires": {
+        "@babel/runtime": "^7.21.0"
+      }
+    },
+    "date-fns-tz": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmmirror.com/date-fns-tz/-/date-fns-tz-1.3.8.tgz",
+      "integrity": "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ=="
+    },
+    "dayjs": {
+      "version": "1.11.8",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.8.tgz",
+      "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ=="
+    },
+    "de-indent": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
+      "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
+      "dev": true
+    },
+    "debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "requires": {
+        "ms": "2.1.2"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
+    },
+    "decode-uri-component": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.4.1.tgz",
+      "integrity": "sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ=="
+    },
+    "deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+      "dev": true
+    },
+    "defaults": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz",
+      "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
+      "dev": true,
+      "requires": {
+        "clone": "^1.0.2"
+      }
+    },
+    "define-properties": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.0.tgz",
+      "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
+      "dev": true,
+      "requires": {
+        "has-property-descriptors": "^1.0.0",
+        "object-keys": "^1.1.1"
+      }
+    },
+    "del": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmmirror.com/del/-/del-6.1.1.tgz",
+      "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
+      "dev": true,
+      "requires": {
+        "globby": "^11.0.1",
+        "graceful-fs": "^4.2.4",
+        "is-glob": "^4.0.1",
+        "is-path-cwd": "^2.2.0",
+        "is-path-inside": "^3.0.2",
+        "p-map": "^4.0.0",
+        "rimraf": "^3.0.2",
+        "slash": "^3.0.0"
+      }
+    },
+    "detect-file": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/detect-file/-/detect-file-1.0.0.tgz",
+      "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
+      "dev": true
+    },
+    "dijkstrajs": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+    },
+    "dir-glob": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
+      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+      "dev": true,
+      "requires": {
+        "path-type": "^4.0.0"
+      }
+    },
+    "doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
+      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+      "dev": true,
+      "requires": {
+        "esutils": "^2.0.2"
+      }
+    },
+    "dot-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz",
+      "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
+      "dev": true,
+      "requires": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "eastasianwidth": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+      "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+      "dev": true
+    },
+    "echarts": {
+      "version": "5.4.2",
+      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.2.tgz",
+      "integrity": "sha512-2W3vw3oI2tWJdyAz+b8DuWS0nfXtSDqlDmqgin/lfzbkB01cuMEN66KWBlmur3YMp5nEDEEt5s23pllnAzB4EA==",
+      "requires": {
+        "tslib": "2.3.0",
+        "zrender": "5.4.3"
+      }
+    },
+    "electron-to-chromium": {
+      "version": "1.4.445",
+      "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.445.tgz",
+      "integrity": "sha512-++DB+9VK8SBJwC+X1zlMfJ1tMA3F0ipi39GdEp+x3cV2TyBihqAgad8cNMWtLDEkbH39nlDQP7PfGrDr3Dr7HA==",
+      "dev": true
+    },
+    "emoji-regex": {
+      "version": "9.2.2",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz",
+      "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+      "dev": true
+    },
+    "encode-utf8": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
+      "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
+    },
+    "encoding": {
+      "version": "0.1.13",
+      "resolved": "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz",
+      "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+      "requires": {
+        "iconv-lite": "^0.6.2"
+      }
+    },
+    "errno": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz",
+      "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "prr": "~1.0.1"
+      }
+    },
+    "esbuild": {
+      "version": "0.17.19",
+      "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz",
+      "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==",
+      "dev": true,
+      "requires": {
+        "@esbuild/android-arm": "0.17.19",
+        "@esbuild/android-arm64": "0.17.19",
+        "@esbuild/android-x64": "0.17.19",
+        "@esbuild/darwin-arm64": "0.17.19",
+        "@esbuild/darwin-x64": "0.17.19",
+        "@esbuild/freebsd-arm64": "0.17.19",
+        "@esbuild/freebsd-x64": "0.17.19",
+        "@esbuild/linux-arm": "0.17.19",
+        "@esbuild/linux-arm64": "0.17.19",
+        "@esbuild/linux-ia32": "0.17.19",
+        "@esbuild/linux-loong64": "0.17.19",
+        "@esbuild/linux-mips64el": "0.17.19",
+        "@esbuild/linux-ppc64": "0.17.19",
+        "@esbuild/linux-riscv64": "0.17.19",
+        "@esbuild/linux-s390x": "0.17.19",
+        "@esbuild/linux-x64": "0.17.19",
+        "@esbuild/netbsd-x64": "0.17.19",
+        "@esbuild/openbsd-x64": "0.17.19",
+        "@esbuild/sunos-x64": "0.17.19",
+        "@esbuild/win32-arm64": "0.17.19",
+        "@esbuild/win32-ia32": "0.17.19",
+        "@esbuild/win32-x64": "0.17.19"
+      }
+    },
+    "escalade": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
+      "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+      "dev": true
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+      "dev": true
+    },
+    "eslint": {
+      "version": "8.43.0",
+      "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.43.0.tgz",
+      "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==",
+      "dev": true,
+      "requires": {
+        "@eslint-community/eslint-utils": "^4.2.0",
+        "@eslint-community/regexpp": "^4.4.0",
+        "@eslint/eslintrc": "^2.0.3",
+        "@eslint/js": "8.43.0",
+        "@humanwhocodes/config-array": "^0.11.10",
+        "@humanwhocodes/module-importer": "^1.0.1",
+        "@nodelib/fs.walk": "^1.2.8",
+        "ajv": "^6.10.0",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.2",
+        "debug": "^4.3.2",
+        "doctrine": "^3.0.0",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^7.2.0",
+        "eslint-visitor-keys": "^3.4.1",
+        "espree": "^9.5.2",
+        "esquery": "^1.4.2",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^6.0.1",
+        "find-up": "^5.0.0",
+        "glob-parent": "^6.0.2",
+        "globals": "^13.19.0",
+        "graphemer": "^1.4.0",
+        "ignore": "^5.2.0",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "is-path-inside": "^3.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",
+        "strip-ansi": "^6.0.1",
+        "strip-json-comments": "^3.1.0",
+        "text-table": "^0.2.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+          "dev": true
+        },
+        "eslint-scope": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.0.tgz",
+          "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
+          "dev": true,
+          "requires": {
+            "esrecurse": "^4.3.0",
+            "estraverse": "^5.2.0"
+          }
+        },
+        "estraverse": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+          "dev": true
+        },
+        "globals": {
+          "version": "13.20.0",
+          "resolved": "https://registry.npmmirror.com/globals/-/globals-13.20.0.tgz",
+          "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
+          "dev": true,
+          "requires": {
+            "type-fest": "^0.20.2"
+          }
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        },
+        "type-fest": {
+          "version": "0.20.2",
+          "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz",
+          "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+          "dev": true
+        }
+      }
+    },
+    "eslint-config-prettier": {
+      "version": "8.8.0",
+      "resolved": "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz",
+      "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==",
+      "dev": true
+    },
+    "eslint-plugin-prettier": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
+      "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==",
+      "dev": true,
+      "requires": {
+        "prettier-linter-helpers": "^1.0.0"
+      }
+    },
+    "eslint-plugin-vue": {
+      "version": "9.15.1",
+      "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.15.1.tgz",
+      "integrity": "sha512-CJE/oZOslvmAR9hf8SClTdQ9JLweghT6JCBQNrT2Iel1uVw0W0OLJxzvPd6CxmABKCvLrtyDnqGV37O7KQv6+A==",
+      "dev": true,
+      "requires": {
+        "@eslint-community/eslint-utils": "^4.3.0",
+        "natural-compare": "^1.4.0",
+        "nth-check": "^2.0.1",
+        "postcss-selector-parser": "^6.0.9",
+        "semver": "^7.3.5",
+        "vue-eslint-parser": "^9.3.0",
+        "xml-name-validator": "^4.0.0"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.5.3",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
+          "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
+        }
+      }
+    },
+    "eslint-scope": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+      "dev": true,
+      "requires": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "eslint-visitor-keys": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
+      "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
+      "dev": true
+    },
+    "espree": {
+      "version": "9.5.2",
+      "resolved": "https://registry.npmmirror.com/espree/-/espree-9.5.2.tgz",
+      "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
+      "dev": true,
+      "requires": {
+        "acorn": "^8.8.0",
+        "acorn-jsx": "^5.3.2",
+        "eslint-visitor-keys": "^3.4.1"
+      }
+    },
+    "esquery": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz",
+      "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.1.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+          "dev": true
+        }
+      }
+    },
+    "esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.2.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+          "dev": true
+        }
+      }
+    },
+    "estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+      "dev": true
+    },
+    "estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+    },
+    "esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true
+    },
+    "eventemitter3": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz",
+      "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="
+    },
+    "evtd": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npmmirror.com/evtd/-/evtd-0.2.4.tgz",
+      "integrity": "sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw=="
+    },
+    "execa": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmmirror.com/execa/-/execa-7.1.1.tgz",
+      "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==",
+      "dev": true,
+      "requires": {
+        "cross-spawn": "^7.0.3",
+        "get-stream": "^6.0.1",
+        "human-signals": "^4.3.0",
+        "is-stream": "^3.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^5.1.0",
+        "onetime": "^6.0.0",
+        "signal-exit": "^3.0.7",
+        "strip-final-newline": "^3.0.0"
+      }
+    },
+    "expand-tilde": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/expand-tilde/-/expand-tilde-2.0.2.tgz",
+      "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
+      "dev": true,
+      "requires": {
+        "homedir-polyfill": "^1.0.1"
+      }
+    },
+    "extend": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
+      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+      "dev": true
+    },
+    "external-editor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz",
+      "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+      "dev": true,
+      "requires": {
+        "chardet": "^0.7.0",
+        "iconv-lite": "^0.4.24",
+        "tmp": "^0.0.33"
+      },
+      "dependencies": {
+        "iconv-lite": {
+          "version": "0.4.24",
+          "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+          "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+          "dev": true,
+          "requires": {
+            "safer-buffer": ">= 2.1.2 < 3"
+          }
+        }
+      }
+    },
+    "fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "dev": true
+    },
+    "fast-diff": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.3.0.tgz",
+      "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+      "dev": true
+    },
+    "fast-glob": {
+      "version": "3.2.12",
+      "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.12.tgz",
+      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.4"
+      },
+      "dependencies": {
+        "glob-parent": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+          "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+          "dev": true,
+          "requires": {
+            "is-glob": "^4.0.1"
+          }
+        }
+      }
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "dev": true
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "dev": true
+    },
+    "fastq": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz",
+      "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+      "dev": true,
+      "requires": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "figures": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz",
+      "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+      "dev": true,
+      "requires": {
+        "escape-string-regexp": "^1.0.5"
+      }
+    },
+    "file-entry-cache": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+      "dev": true,
+      "requires": {
+        "flat-cache": "^3.0.4"
+      }
+    },
+    "fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dev": true,
+      "requires": {
+        "to-regex-range": "^5.0.1"
+      }
+    },
+    "filter-obj": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/filter-obj/-/filter-obj-5.1.0.tgz",
+      "integrity": "sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng=="
+    },
+    "find-up": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz",
+      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+      "dev": true,
+      "requires": {
+        "locate-path": "^6.0.0",
+        "path-exists": "^4.0.0"
+      }
+    },
+    "findup-sync": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/findup-sync/-/findup-sync-5.0.0.tgz",
+      "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==",
+      "dev": true,
+      "requires": {
+        "detect-file": "^1.0.0",
+        "is-glob": "^4.0.3",
+        "micromatch": "^4.0.4",
+        "resolve-dir": "^1.0.1"
+      }
+    },
+    "fined": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/fined/-/fined-2.0.0.tgz",
+      "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^2.0.2",
+        "is-plain-object": "^5.0.0",
+        "object.defaults": "^1.1.0",
+        "object.pick": "^1.3.0",
+        "parse-filepath": "^1.0.2"
+      }
+    },
+    "flagged-respawn": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/flagged-respawn/-/flagged-respawn-2.0.0.tgz",
+      "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==",
+      "dev": true
+    },
+    "flat-cache": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz",
+      "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+      "dev": true,
+      "requires": {
+        "flatted": "^3.1.0",
+        "rimraf": "^3.0.2"
+      }
+    },
+    "flatted": {
+      "version": "3.2.7",
+      "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz",
+      "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
+      "dev": true
+    },
+    "for-in": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz",
+      "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+      "dev": true
+    },
+    "for-own": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/for-own/-/for-own-1.0.0.tgz",
+      "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.1"
+      }
+    },
+    "fraction.js": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.2.0.tgz",
+      "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
+      "dev": true
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "dev": true
+    },
+    "fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz",
+      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+      "dev": true,
+      "optional": true
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+    },
+    "gensync": {
+      "version": "1.0.0-beta.2",
+      "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
+      "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+      "dev": true
+    },
+    "get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+    },
+    "get-intrinsic": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+      "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-proto": "^1.0.1",
+        "has-symbols": "^1.0.3"
+      }
+    },
+    "get-stream": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
+      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+      "dev": true
+    },
+    "glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "glob-parent": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz",
+      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+      "dev": true,
+      "requires": {
+        "is-glob": "^4.0.3"
+      }
+    },
+    "global-modules": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/global-modules/-/global-modules-1.0.0.tgz",
+      "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+      "dev": true,
+      "requires": {
+        "global-prefix": "^1.0.1",
+        "is-windows": "^1.0.1",
+        "resolve-dir": "^1.0.0"
+      }
+    },
+    "global-prefix": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/global-prefix/-/global-prefix-1.0.2.tgz",
+      "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^2.0.2",
+        "homedir-polyfill": "^1.0.1",
+        "ini": "^1.3.4",
+        "is-windows": "^1.0.1",
+        "which": "^1.2.14"
+      },
+      "dependencies": {
+        "which": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+          "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+          "dev": true,
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        }
+      }
+    },
+    "globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+      "dev": true
+    },
+    "globby": {
+      "version": "11.1.0",
+      "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz",
+      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+      "dev": true,
+      "requires": {
+        "array-union": "^2.1.0",
+        "dir-glob": "^3.0.1",
+        "fast-glob": "^3.2.9",
+        "ignore": "^5.2.0",
+        "merge2": "^1.4.1",
+        "slash": "^3.0.0"
+      }
+    },
+    "graceful-fs": {
+      "version": "4.2.11",
+      "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
+      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+      "dev": true
+    },
+    "grapheme-splitter": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
+      "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
+      "dev": true
+    },
+    "graphemer": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz",
+      "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+      "dev": true
+    },
+    "handlebars": {
+      "version": "4.7.7",
+      "resolved": "https://registry.npmmirror.com/handlebars/-/handlebars-4.7.7.tgz",
+      "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.5",
+        "neo-async": "^2.6.0",
+        "source-map": "^0.6.1",
+        "uglify-js": "^3.1.4",
+        "wordwrap": "^1.0.0"
+      }
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "dev": true
+    },
+    "has-property-descriptors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+      "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+      "dev": true,
+      "requires": {
+        "get-intrinsic": "^1.1.1"
+      }
+    },
+    "has-proto": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz",
+      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg=="
+    },
+    "has-symbols": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
+    },
+    "he": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
+      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+      "dev": true
+    },
+    "header-case": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/header-case/-/header-case-2.0.4.tgz",
+      "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==",
+      "dev": true,
+      "requires": {
+        "capital-case": "^1.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "highlight.js": {
+      "version": "11.8.0",
+      "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.8.0.tgz",
+      "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg=="
+    },
+    "homedir-polyfill": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+      "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+      "dev": true,
+      "requires": {
+        "parse-passwd": "^1.0.0"
+      }
+    },
+    "howler": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmmirror.com/howler/-/howler-2.2.3.tgz",
+      "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg=="
+    },
+    "html-tags": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz",
+      "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+      "dev": true
+    },
+    "html2canvas": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
+      "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+      "requires": {
+        "css-line-break": "^2.1.0",
+        "text-segmentation": "^1.0.3"
+      }
+    },
+    "human-signals": {
+      "version": "4.3.1",
+      "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-4.3.1.tgz",
+      "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
+      "dev": true
+    },
+    "husky": {
+      "version": "8.0.3",
+      "resolved": "https://registry.npmmirror.com/husky/-/husky-8.0.3.tgz",
+      "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==",
+      "dev": true
+    },
+    "iconv-lite": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
+      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3.0.0"
+      }
+    },
+    "ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+      "dev": true
+    },
+    "ignore": {
+      "version": "5.2.4",
+      "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz",
+      "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+      "dev": true
+    },
+    "image-size": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz",
+      "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+      "dev": true,
+      "optional": true
+    },
+    "import-fresh": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
+      "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+      "dev": true,
+      "requires": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      }
+    },
+    "imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "dev": true
+    },
+    "indent-string": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz",
+      "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+      "dev": true
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "ini": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+      "dev": true
+    },
+    "inquirer": {
+      "version": "8.2.5",
+      "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-8.2.5.tgz",
+      "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==",
+      "dev": true,
+      "requires": {
+        "ansi-escapes": "^4.2.1",
+        "chalk": "^4.1.1",
+        "cli-cursor": "^3.1.0",
+        "cli-width": "^3.0.0",
+        "external-editor": "^3.0.3",
+        "figures": "^3.0.0",
+        "lodash": "^4.17.21",
+        "mute-stream": "0.0.8",
+        "ora": "^5.4.1",
+        "run-async": "^2.4.0",
+        "rxjs": "^7.5.5",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0",
+        "through": "^2.3.6",
+        "wrap-ansi": "^7.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "bl": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz",
+          "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+          "dev": true,
+          "requires": {
+            "buffer": "^5.5.0",
+            "inherits": "^2.0.4",
+            "readable-stream": "^3.4.0"
+          }
+        },
+        "buffer": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
+          "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+          "dev": true,
+          "requires": {
+            "base64-js": "^1.3.1",
+            "ieee754": "^1.1.13"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+          "dev": true
+        },
+        "is-interactive": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz",
+          "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
+          "dev": true
+        },
+        "is-unicode-supported": {
+          "version": "0.1.0",
+          "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+          "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+          "dev": true
+        },
+        "log-symbols": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz",
+          "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^4.1.0",
+            "is-unicode-supported": "^0.1.0"
+          }
+        },
+        "ora": {
+          "version": "5.4.1",
+          "resolved": "https://registry.npmmirror.com/ora/-/ora-5.4.1.tgz",
+          "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
+          "dev": true,
+          "requires": {
+            "bl": "^4.1.0",
+            "chalk": "^4.1.0",
+            "cli-cursor": "^3.1.0",
+            "cli-spinners": "^2.5.0",
+            "is-interactive": "^1.0.0",
+            "is-unicode-supported": "^0.1.0",
+            "log-symbols": "^4.1.0",
+            "strip-ansi": "^6.0.0",
+            "wcwidth": "^1.0.1"
+          }
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
+    "interpret": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/interpret/-/interpret-2.2.0.tgz",
+      "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
+      "dev": true
+    },
+    "is-absolute": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/is-absolute/-/is-absolute-1.0.0.tgz",
+      "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
+      "dev": true,
+      "requires": {
+        "is-relative": "^1.0.0",
+        "is-windows": "^1.0.1"
+      }
+    },
+    "is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
+      "requires": {
+        "binary-extensions": "^2.0.0"
+      }
+    },
+    "is-ci": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz",
+      "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
+      "dev": true,
+      "requires": {
+        "ci-info": "^1.5.0"
+      }
+    },
+    "is-core-module": {
+      "version": "2.12.1",
+      "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.12.1.tgz",
+      "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.3"
+      }
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "dev": true
+    },
+    "is-fullwidth-code-point": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
+      "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
+      "dev": true
+    },
+    "is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-interactive": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-2.0.0.tgz",
+      "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
+      "dev": true
+    },
+    "is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true
+    },
+    "is-path-cwd": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+      "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+      "dev": true
+    },
+    "is-path-inside": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz",
+      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+      "dev": true
+    },
+    "is-plain-object": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz",
+      "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+      "dev": true
+    },
+    "is-relative": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/is-relative/-/is-relative-1.0.0.tgz",
+      "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+      "dev": true,
+      "requires": {
+        "is-unc-path": "^1.0.0"
+      }
+    },
+    "is-stream": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-3.0.0.tgz",
+      "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+      "dev": true
+    },
+    "is-unc-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/is-unc-path/-/is-unc-path-1.0.0.tgz",
+      "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+      "dev": true,
+      "requires": {
+        "unc-path-regex": "^0.1.2"
+      }
+    },
+    "is-unicode-supported": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+      "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+      "dev": true
+    },
+    "is-what": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz",
+      "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
+      "dev": true
+    },
+    "is-windows": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz",
+      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+      "dev": true
+    },
+    "isbinaryfile": {
+      "version": "4.0.10",
+      "resolved": "https://registry.npmmirror.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz",
+      "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==",
+      "dev": true
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "dev": true
+    },
+    "isobject": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+      "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+      "dev": true
+    },
+    "isomorphic-fetch": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmmirror.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+      "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==",
+      "requires": {
+        "node-fetch": "^1.0.1",
+        "whatwg-fetch": ">=0.10.0"
+      }
+    },
+    "js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true
+    },
+    "js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "dev": true,
+      "requires": {
+        "argparse": "^2.0.1"
+      }
+    },
+    "jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+      "dev": true
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true
+    },
+    "json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+      "dev": true
+    },
+    "json5": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+      "dev": true
+    },
+    "kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+      "dev": true
+    },
+    "less": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz",
+      "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==",
+      "dev": true,
+      "requires": {
+        "copy-anything": "^2.0.1",
+        "errno": "^0.1.1",
+        "graceful-fs": "^4.1.2",
+        "image-size": "~0.5.0",
+        "make-dir": "^2.1.0",
+        "mime": "^1.4.1",
+        "needle": "^3.1.0",
+        "parse-node-version": "^1.0.1",
+        "source-map": "~0.6.0",
+        "tslib": "^2.3.0"
+      }
+    },
+    "levn": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz",
+      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "^1.2.1",
+        "type-check": "~0.4.0"
+      }
+    },
+    "liftoff": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/liftoff/-/liftoff-4.0.0.tgz",
+      "integrity": "sha512-rMGwYF8q7g2XhG2ulBmmJgWv25qBsqRbDn5gH0+wnuyeFt7QBJlHJmtg5qEdn4pN6WVAUMgXnIxytMFRX9c1aA==",
+      "dev": true,
+      "requires": {
+        "extend": "^3.0.2",
+        "findup-sync": "^5.0.0",
+        "fined": "^2.0.0",
+        "flagged-respawn": "^2.0.0",
+        "is-plain-object": "^5.0.0",
+        "object.map": "^1.0.1",
+        "rechoir": "^0.8.0",
+        "resolve": "^1.20.0"
+      }
+    },
+    "lilconfig": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz",
+      "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+      "dev": true
+    },
+    "lint-staged": {
+      "version": "13.2.3",
+      "resolved": "https://registry.npmmirror.com/lint-staged/-/lint-staged-13.2.3.tgz",
+      "integrity": "sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg==",
+      "dev": true,
+      "requires": {
+        "chalk": "5.2.0",
+        "cli-truncate": "^3.1.0",
+        "commander": "^10.0.0",
+        "debug": "^4.3.4",
+        "execa": "^7.0.0",
+        "lilconfig": "2.1.0",
+        "listr2": "^5.0.7",
+        "micromatch": "^4.0.5",
+        "normalize-path": "^3.0.0",
+        "object-inspect": "^1.12.3",
+        "pidtree": "^0.6.0",
+        "string-argv": "^0.3.1",
+        "yaml": "^2.2.2"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.2.0.tgz",
+          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
+          "dev": true
+        }
+      }
+    },
+    "listr2": {
+      "version": "5.0.8",
+      "resolved": "https://registry.npmmirror.com/listr2/-/listr2-5.0.8.tgz",
+      "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==",
+      "dev": true,
+      "requires": {
+        "cli-truncate": "^2.1.0",
+        "colorette": "^2.0.19",
+        "log-update": "^4.0.0",
+        "p-map": "^4.0.0",
+        "rfdc": "^1.3.0",
+        "rxjs": "^7.8.0",
+        "through": "^2.3.8",
+        "wrap-ansi": "^7.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "cli-truncate": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-2.1.0.tgz",
+          "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
+          "dev": true,
+          "requires": {
+            "slice-ansi": "^3.0.0",
+            "string-width": "^4.2.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+          "dev": true
+        },
+        "slice-ansi": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-3.0.0.tgz",
+          "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "astral-regex": "^2.0.0",
+            "is-fullwidth-code-point": "^3.0.0"
+          }
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        }
+      }
+    },
+    "loadjs": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/loadjs/-/loadjs-4.2.0.tgz",
+      "integrity": "sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA=="
+    },
+    "local-pkg": {
+      "version": "0.4.3",
+      "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz",
+      "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
+      "dev": true
+    },
+    "locate-path": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz",
+      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+      "dev": true,
+      "requires": {
+        "p-locate": "^5.0.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    },
+    "lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+    },
+    "lodash.debounce": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+      "dev": true
+    },
+    "lodash.get": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmmirror.com/lodash.get/-/lodash.get-4.4.2.tgz",
+      "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
+      "dev": true
+    },
+    "lodash.isempty": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmmirror.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
+      "integrity": "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg=="
+    },
+    "lodash.isplainobject": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+      "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
+    },
+    "lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "dev": true
+    },
+    "lodash.transform": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz",
+      "integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ=="
+    },
+    "log-symbols": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-5.1.0.tgz",
+      "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==",
+      "dev": true,
+      "requires": {
+        "chalk": "^5.0.0",
+        "is-unicode-supported": "^1.1.0"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz",
+          "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+          "dev": true
+        }
+      }
+    },
+    "log-update": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/log-update/-/log-update-4.0.0.tgz",
+      "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
+      "dev": true,
+      "requires": {
+        "ansi-escapes": "^4.3.0",
+        "cli-cursor": "^3.1.0",
+        "slice-ansi": "^4.0.0",
+        "wrap-ansi": "^6.2.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+          "dev": true
+        },
+        "slice-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz",
+          "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "astral-regex": "^2.0.0",
+            "is-fullwidth-code-point": "^3.0.0"
+          }
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "wrap-ansi": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+          "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
+          }
+        }
+      }
+    },
+    "lottie-web": {
+      "version": "5.12.2",
+      "resolved": "https://registry.npmmirror.com/lottie-web/-/lottie-web-5.12.2.tgz",
+      "integrity": "sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg=="
+    },
+    "lower-case": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz",
+      "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+      "dev": true,
+      "requires": {
+        "tslib": "^2.0.3"
+      }
+    },
+    "lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+      "dev": true,
+      "requires": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "magic-string": {
+      "version": "0.30.0",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.0.tgz",
+      "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==",
+      "requires": {
+        "@jridgewell/sourcemap-codec": "^1.4.13"
+      }
+    },
+    "make-dir": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz",
+      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "make-iterator": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/make-iterator/-/make-iterator-1.0.1.tgz",
+      "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+      "dev": true,
+      "requires": {
+        "kind-of": "^6.0.2"
+      }
+    },
+    "map-cache": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz",
+      "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+      "dev": true
+    },
+    "merge-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+      "dev": true
+    },
+    "merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true
+    },
+    "micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "requires": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      }
+    },
+    "mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "dev": true,
+      "optional": true
+    },
+    "mimic-fn": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz",
+      "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+      "dev": true
+    },
+    "minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
+      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+      "dev": true
+    },
+    "mkdirp": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz",
+      "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+      "dev": true
+    },
+    "ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "muggle-string": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.3.1.tgz",
+      "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==",
+      "dev": true
+    },
+    "mutation-observer": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/mutation-observer/-/mutation-observer-1.0.3.tgz",
+      "integrity": "sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA=="
+    },
+    "mute-stream": {
+      "version": "0.0.8",
+      "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz",
+      "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+      "dev": true
+    },
+    "naive-ui": {
+      "version": "2.34.4",
+      "resolved": "https://registry.npmmirror.com/naive-ui/-/naive-ui-2.34.4.tgz",
+      "integrity": "sha512-aPG8PDfhSzIzn/jSC9y3Jb3Pe2wHJ7F0cFV1EWlbImSrZECeUmoc+fIcOSWbizoztkKfaUAeKwYdMl09MKkj1g==",
+      "requires": {
+        "@css-render/plugin-bem": "^0.15.10",
+        "@css-render/vue3-ssr": "^0.15.10",
+        "@types/katex": "^0.14.0",
+        "@types/lodash": "^4.14.181",
+        "@types/lodash-es": "^4.17.6",
+        "async-validator": "^4.0.7",
+        "css-render": "^0.15.10",
+        "date-fns": "^2.28.0",
+        "date-fns-tz": "^1.3.3",
+        "evtd": "^0.2.4",
+        "highlight.js": "^11.5.0",
+        "lodash": "^4.17.21",
+        "lodash-es": "^4.17.21",
+        "seemly": "^0.3.6",
+        "treemate": "^0.3.11",
+        "vdirs": "^0.1.8",
+        "vooks": "^0.2.12",
+        "vueuc": "^0.4.51"
+      }
+    },
+    "nanoid": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
+      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
+    },
+    "natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true
+    },
+    "natural-compare-lite": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
+      "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
+      "dev": true
+    },
+    "needle": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/needle/-/needle-3.2.0.tgz",
+      "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "debug": "^3.2.6",
+        "iconv-lite": "^0.6.3",
+        "sax": "^1.2.4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz",
+          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "neo-async": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
+      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+      "dev": true
+    },
+    "no-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz",
+      "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+      "dev": true,
+      "requires": {
+        "lower-case": "^2.0.2",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node-fetch": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-1.7.3.tgz",
+      "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+      "requires": {
+        "encoding": "^0.1.11",
+        "is-stream": "^1.0.1"
+      },
+      "dependencies": {
+        "is-stream": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
+          "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="
+        }
+      }
+    },
+    "node-plop": {
+      "version": "0.31.1",
+      "resolved": "https://registry.npmmirror.com/node-plop/-/node-plop-0.31.1.tgz",
+      "integrity": "sha512-qmXJJt3YETFt/e0dtMADVpvck6EvN01Jig086o+J3M6G++mWA7iJ3Pqz4m4kvlynh73Iz2/rcZzxq7xTiF+aIQ==",
+      "dev": true,
+      "requires": {
+        "@types/inquirer": "^8.2.1",
+        "change-case": "^4.1.2",
+        "del": "^6.0.0",
+        "globby": "^13.1.1",
+        "handlebars": "^4.4.3",
+        "inquirer": "^8.2.2",
+        "isbinaryfile": "^4.0.8",
+        "lodash.get": "^4.4.2",
+        "lower-case": "^2.0.2",
+        "mkdirp": "^1.0.4",
+        "resolve": "^1.20.0",
+        "title-case": "^3.0.3",
+        "upper-case": "^2.0.2"
+      },
+      "dependencies": {
+        "globby": {
+          "version": "13.2.0",
+          "resolved": "https://registry.npmmirror.com/globby/-/globby-13.2.0.tgz",
+          "integrity": "sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ==",
+          "dev": true,
+          "requires": {
+            "dir-glob": "^3.0.1",
+            "fast-glob": "^3.2.11",
+            "ignore": "^5.2.0",
+            "merge2": "^1.4.1",
+            "slash": "^4.0.0"
+          }
+        },
+        "slash": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/slash/-/slash-4.0.0.tgz",
+          "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
+          "dev": true
+        }
+      }
+    },
+    "node-releases": {
+      "version": "2.0.12",
+      "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.12.tgz",
+      "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==",
+      "dev": true
+    },
+    "normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true
+    },
+    "normalize-range": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz",
+      "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+      "dev": true
+    },
+    "npm-run-path": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-5.1.0.tgz",
+      "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+      "dev": true,
+      "requires": {
+        "path-key": "^4.0.0"
+      },
+      "dependencies": {
+        "path-key": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz",
+          "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+          "dev": true
+        }
+      }
+    },
+    "nth-check": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
+      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+      "dev": true,
+      "requires": {
+        "boolbase": "^1.0.0"
+      }
+    },
+    "numeral": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmmirror.com/numeral/-/numeral-2.0.6.tgz",
+      "integrity": "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA=="
+    },
+    "object-inspect": {
+      "version": "1.12.3",
+      "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz",
+      "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
+    },
+    "object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "dev": true
+    },
+    "object.assign": {
+      "version": "4.1.4",
+      "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.4.tgz",
+      "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.4",
+        "has-symbols": "^1.0.3",
+        "object-keys": "^1.1.1"
+      }
+    },
+    "object.defaults": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/object.defaults/-/object.defaults-1.1.0.tgz",
+      "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",
+      "dev": true,
+      "requires": {
+        "array-each": "^1.0.1",
+        "array-slice": "^1.0.0",
+        "for-own": "^1.0.0",
+        "isobject": "^3.0.0"
+      }
+    },
+    "object.map": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/object.map/-/object.map-1.0.1.tgz",
+      "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==",
+      "dev": true,
+      "requires": {
+        "for-own": "^1.0.0",
+        "make-iterator": "^1.0.0"
+      }
+    },
+    "object.pick": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz",
+      "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dev": true,
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "onetime": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/onetime/-/onetime-6.0.0.tgz",
+      "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+      "dev": true,
+      "requires": {
+        "mimic-fn": "^4.0.0"
+      }
+    },
+    "optionator": {
+      "version": "0.9.3",
+      "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz",
+      "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+      "dev": true,
+      "requires": {
+        "@aashutoshrathi/word-wrap": "^1.2.3",
+        "deep-is": "^0.1.3",
+        "fast-levenshtein": "^2.0.6",
+        "levn": "^0.4.1",
+        "prelude-ls": "^1.2.1",
+        "type-check": "^0.4.0"
+      }
+    },
+    "ora": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmmirror.com/ora/-/ora-6.3.1.tgz",
+      "integrity": "sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==",
+      "dev": true,
+      "requires": {
+        "chalk": "^5.0.0",
+        "cli-cursor": "^4.0.0",
+        "cli-spinners": "^2.6.1",
+        "is-interactive": "^2.0.0",
+        "is-unicode-supported": "^1.1.0",
+        "log-symbols": "^5.1.0",
+        "stdin-discarder": "^0.1.0",
+        "strip-ansi": "^7.0.1",
+        "wcwidth": "^1.0.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+          "dev": true
+        },
+        "chalk": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz",
+          "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+          "dev": true
+        },
+        "cli-cursor": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-4.0.0.tgz",
+          "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==",
+          "dev": true,
+          "requires": {
+            "restore-cursor": "^4.0.0"
+          }
+        },
+        "mimic-fn": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+          "dev": true
+        },
+        "onetime": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+          "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+          "dev": true,
+          "requires": {
+            "mimic-fn": "^2.1.0"
+          }
+        },
+        "restore-cursor": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-4.0.0.tgz",
+          "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==",
+          "dev": true,
+          "requires": {
+            "onetime": "^5.1.0",
+            "signal-exit": "^3.0.2"
+          }
+        },
+        "strip-ansi": {
+          "version": "7.1.0",
+          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^6.0.1"
+          }
+        }
+      }
+    },
+    "os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+      "dev": true
+    },
+    "p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz",
+      "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+      "dev": true
+    },
+    "p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz",
+      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "dev": true,
+      "requires": {
+        "yocto-queue": "^0.1.0"
+      }
+    },
+    "p-locate": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz",
+      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+      "dev": true,
+      "requires": {
+        "p-limit": "^3.0.2"
+      }
+    },
+    "p-map": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz",
+      "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
+      "dev": true,
+      "requires": {
+        "aggregate-error": "^3.0.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+    },
+    "param-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz",
+      "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
+      "dev": true,
+      "requires": {
+        "dot-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "requires": {
+        "callsites": "^3.0.0"
+      }
+    },
+    "parse-filepath": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/parse-filepath/-/parse-filepath-1.0.2.tgz",
+      "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",
+      "dev": true,
+      "requires": {
+        "is-absolute": "^1.0.0",
+        "map-cache": "^0.2.0",
+        "path-root": "^0.1.1"
+      }
+    },
+    "parse-node-version": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz",
+      "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+      "dev": true
+    },
+    "parse-passwd": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/parse-passwd/-/parse-passwd-1.0.0.tgz",
+      "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
+      "dev": true
+    },
+    "pascal-case": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz",
+      "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+      "dev": true,
+      "requires": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "path-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/path-case/-/path-case-3.0.4.tgz",
+      "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==",
+      "dev": true,
+      "requires": {
+        "dot-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "dev": true
+    },
+    "path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "dev": true
+    },
+    "path-parse": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+      "dev": true
+    },
+    "path-root": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmmirror.com/path-root/-/path-root-0.1.1.tgz",
+      "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",
+      "dev": true,
+      "requires": {
+        "path-root-regex": "^0.1.0"
+      }
+    },
+    "path-root-regex": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmmirror.com/path-root-regex/-/path-root-regex-0.1.2.tgz",
+      "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",
+      "dev": true
+    },
+    "path-type": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz",
+      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+      "dev": true
+    },
+    "picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+    },
+    "picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true
+    },
+    "pidtree": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmmirror.com/pidtree/-/pidtree-0.6.0.tgz",
+      "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
+      "dev": true
+    },
+    "pify": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
+      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+      "dev": true,
+      "optional": true
+    },
+    "pinia": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.1.4.tgz",
+      "integrity": "sha512-vYlnDu+Y/FXxv1ABo1vhjC+IbqvzUdiUC3sfDRrRyY2CQSrqqaa+iiHmqtARFxJVqWQMCJfXx1PBvFs9aJVLXQ==",
+      "requires": {
+        "@vue/devtools-api": "^6.5.0",
+        "vue-demi": ">=0.14.5"
+      }
+    },
+    "plop": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/plop/-/plop-3.1.2.tgz",
+      "integrity": "sha512-39SOtQ3WlePXSNqKqAh/QlUSHXHO25iCnyCO3Qs/9UzPVmwVledRTDGvPd2csh+JnHVXz4c63F6fBwdqZHgbUg==",
+      "dev": true,
+      "requires": {
+        "@types/liftoff": "^4.0.0",
+        "chalk": "^5.0.1",
+        "interpret": "^2.2.0",
+        "liftoff": "^4.0.0",
+        "minimist": "^1.2.6",
+        "node-plop": "^0.31.1",
+        "ora": "^6.0.1",
+        "v8flags": "^4.0.0"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz",
+          "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+          "dev": true
+        }
+      }
+    },
+    "plyr": {
+      "version": "3.7.8",
+      "resolved": "https://registry.npmmirror.com/plyr/-/plyr-3.7.8.tgz",
+      "integrity": "sha512-yG/EHDobwbB/uP+4Bm6eUpJ93f8xxHjjk2dYcD1Oqpe1EcuQl5tzzw9Oq+uVAzd2lkM11qZfydSiyIpiB8pgdA==",
+      "requires": {
+        "core-js": "^3.26.1",
+        "custom-event-polyfill": "^1.0.7",
+        "loadjs": "^4.2.0",
+        "rangetouch": "^2.0.1",
+        "url-polyfill": "^1.1.12"
+      }
+    },
+    "pngjs": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
+    },
+    "postcss": {
+      "version": "8.4.24",
+      "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.24.tgz",
+      "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==",
+      "requires": {
+        "nanoid": "^3.3.6",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "postcss-pxtorem": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/postcss-pxtorem/-/postcss-pxtorem-6.0.0.tgz",
+      "integrity": "sha512-ZRXrD7MLLjLk2RNGV6UA4f5Y7gy+a/j1EqjAfp9NdcNYVjUMvg5HTYduTjSkKBkRkfqbg/iKrjMO70V4g1LZeg==",
+      "dev": true
+    },
+    "postcss-selector-parser": {
+      "version": "6.0.13",
+      "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
+      "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+      "dev": true,
+      "requires": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      }
+    },
+    "postcss-value-parser": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+      "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+      "dev": true
+    },
+    "prelude-ls": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz",
+      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+      "dev": true
+    },
+    "prettier": {
+      "version": "2.8.8",
+      "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz",
+      "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+      "dev": true
+    },
+    "prettier-linter-helpers": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+      "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+      "dev": true,
+      "requires": {
+        "fast-diff": "^1.1.2"
+      }
+    },
+    "prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz",
+      "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+      "dev": true,
+      "optional": true
+    },
+    "pseudomap": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz",
+      "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
+      "dev": true
+    },
+    "punycode": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz",
+      "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+      "dev": true
+    },
+    "qrcode": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.3.tgz",
+      "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
+      "requires": {
+        "dijkstrajs": "^1.0.1",
+        "encode-utf8": "^1.0.3",
+        "pngjs": "^5.0.0",
+        "yargs": "^15.3.1"
+      }
+    },
+    "qs": {
+      "version": "6.11.2",
+      "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz",
+      "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+      "requires": {
+        "side-channel": "^1.0.4"
+      }
+    },
+    "query-string": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmmirror.com/query-string/-/query-string-8.1.0.tgz",
+      "integrity": "sha512-BFQeWxJOZxZGix7y+SByG3F36dA0AbTy9o6pSmKFcFz7DAj0re9Frkty3saBn3nHo3D0oZJ/+rx3r8H8r8Jbpw==",
+      "requires": {
+        "decode-uri-component": "^0.4.1",
+        "filter-obj": "^5.1.0",
+        "split-on-first": "^3.0.0"
+      }
+    },
+    "queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true
+    },
+    "rangetouch": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/rangetouch/-/rangetouch-2.0.1.tgz",
+      "integrity": "sha512-sln+pNSc8NGaHoLzwNBssFSf/rSYkqeBXzX1AtJlkJiUaVSJSbRAWJk+4omsXkN+EJalzkZhWQ3th1m0FpR5xA=="
+    },
+    "readable-stream": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
+      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      }
+    },
+    "readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dev": true,
+      "requires": {
+        "picomatch": "^2.2.1"
+      }
+    },
+    "rechoir": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmmirror.com/rechoir/-/rechoir-0.8.0.tgz",
+      "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
+      "dev": true,
+      "requires": {
+        "resolve": "^1.20.0"
+      }
+    },
+    "regenerate": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz",
+      "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+      "dev": true
+    },
+    "regenerate-unicode-properties": {
+      "version": "10.1.0",
+      "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
+      "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
+      "dev": true,
+      "requires": {
+        "regenerate": "^1.4.2"
+      }
+    },
+    "regenerator-runtime": {
+      "version": "0.13.11",
+      "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+    },
+    "regenerator-transform": {
+      "version": "0.15.1",
+      "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz",
+      "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==",
+      "dev": true,
+      "requires": {
+        "@babel/runtime": "^7.8.4"
+      }
+    },
+    "regexpu-core": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz",
+      "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+      "dev": true,
+      "requires": {
+        "@babel/regjsgen": "^0.8.0",
+        "regenerate": "^1.4.2",
+        "regenerate-unicode-properties": "^10.1.0",
+        "regjsparser": "^0.9.1",
+        "unicode-match-property-ecmascript": "^2.0.0",
+        "unicode-match-property-value-ecmascript": "^2.1.0"
+      }
+    },
+    "regjsparser": {
+      "version": "0.9.1",
+      "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz",
+      "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+      "dev": true,
+      "requires": {
+        "jsesc": "~0.5.0"
+      },
+      "dependencies": {
+        "jsesc": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz",
+          "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+          "dev": true
+        }
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
+    },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+    },
+    "resolve": {
+      "version": "1.22.2",
+      "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.2.tgz",
+      "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
+      "dev": true,
+      "requires": {
+        "is-core-module": "^2.11.0",
+        "path-parse": "^1.0.7",
+        "supports-preserve-symlinks-flag": "^1.0.0"
+      }
+    },
+    "resolve-dir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/resolve-dir/-/resolve-dir-1.0.1.tgz",
+      "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^2.0.0",
+        "global-modules": "^1.0.0"
+      }
+    },
+    "resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "dev": true
+    },
+    "restore-cursor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz",
+      "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+      "dev": true,
+      "requires": {
+        "onetime": "^5.1.0",
+        "signal-exit": "^3.0.2"
+      },
+      "dependencies": {
+        "mimic-fn": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+          "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+          "dev": true
+        },
+        "onetime": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+          "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+          "dev": true,
+          "requires": {
+            "mimic-fn": "^2.1.0"
+          }
+        }
+      }
+    },
+    "reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true
+    },
+    "rfdc": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz",
+      "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
+      "dev": true
+    },
+    "rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "rollup": {
+      "version": "3.25.3",
+      "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.25.3.tgz",
+      "integrity": "sha512-ZT279hx8gszBj9uy5FfhoG4bZx8c+0A1sbqtr7Q3KNWIizpTdDEPZbV2xcbvHsnFp4MavCQYZyzApJ+virB8Yw==",
+      "dev": true,
+      "requires": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "run-async": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz",
+      "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+      "dev": true
+    },
+    "run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
+      "requires": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "rxjs": {
+      "version": "7.8.1",
+      "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-7.8.1.tgz",
+      "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+      "dev": true,
+      "requires": {
+        "tslib": "^2.1.0"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "dev": true
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+    },
+    "sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+      "dev": true,
+      "optional": true
+    },
+    "seemly": {
+      "version": "0.3.6",
+      "resolved": "https://registry.npmmirror.com/seemly/-/seemly-0.3.6.tgz",
+      "integrity": "sha512-lEV5VB8BUKTo/AfktXJcy+JeXns26ylbMkIUco8CYREsQijuz4mrXres2Q+vMLdwkuLxJdIPQ8IlCIxLYm71Yw=="
+    },
+    "semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "dev": true
+    },
+    "sentence-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/sentence-case/-/sentence-case-3.0.4.tgz",
+      "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==",
+      "dev": true,
+      "requires": {
+        "no-case": "^3.0.4",
+        "tslib": "^2.0.3",
+        "upper-case-first": "^2.0.2"
+      }
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+    },
+    "shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dev": true,
+      "requires": {
+        "shebang-regex": "^3.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "dev": true
+    },
+    "side-channel": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
+      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+      "requires": {
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
+      }
+    },
+    "signal-exit": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "dev": true
+    },
+    "slash": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+      "dev": true
+    },
+    "slice-ansi": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-5.0.0.tgz",
+      "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^6.0.0",
+        "is-fullwidth-code-point": "^4.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "6.2.1",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz",
+          "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+          "dev": true
+        }
+      }
+    },
+    "snake-case": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmmirror.com/snake-case/-/snake-case-3.0.4.tgz",
+      "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
+      "dev": true,
+      "requires": {
+        "dot-case": "^3.0.4",
+        "tslib": "^2.0.3"
+      }
+    },
+    "sortablejs": {
+      "version": "1.10.2",
+      "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.10.2.tgz",
+      "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A=="
+    },
+    "source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+    },
+    "source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+    },
+    "source-map-support": {
+      "version": "0.5.21",
+      "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
+      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      }
+    },
+    "split-on-first": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/split-on-first/-/split-on-first-3.0.0.tgz",
+      "integrity": "sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA=="
+    },
+    "ssr-window": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-4.0.2.tgz",
+      "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ=="
+    },
+    "stdin-discarder": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmmirror.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz",
+      "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==",
+      "dev": true,
+      "requires": {
+        "bl": "^5.0.0"
+      }
+    },
+    "string_decoder": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz",
+      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.2.0"
+      }
+    },
+    "string-argv": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz",
+      "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==",
+      "dev": true
+    },
+    "string-width": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz",
+      "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+      "dev": true,
+      "requires": {
+        "eastasianwidth": "^0.2.0",
+        "emoji-regex": "^9.2.2",
+        "strip-ansi": "^7.0.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz",
+          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "7.1.0",
+          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz",
+          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^6.0.1"
+          }
+        }
+      }
+    },
+    "strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "requires": {
+        "ansi-regex": "^5.0.1"
+      }
+    },
+    "strip-eof": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz",
+      "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+      "dev": true
+    },
+    "strip-final-newline": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+      "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+      "dev": true
+    },
+    "strip-indent": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz",
+      "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==",
+      "dev": true
+    },
+    "strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true
+    },
+    "supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "supports-preserve-symlinks-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+      "dev": true
+    },
+    "svg-tags": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz",
+      "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+      "dev": true
+    },
+    "swiper": {
+      "version": "9.4.1",
+      "resolved": "https://registry.npmmirror.com/swiper/-/swiper-9.4.1.tgz",
+      "integrity": "sha512-1nT2T8EzUpZ0FagEqaN/YAhRj33F2x/lN6cyB0/xoYJDMf8KwTFT3hMOeoB8Tg4o3+P/CKqskP+WX0Df046fqA==",
+      "requires": {
+        "ssr-window": "^4.0.2"
+      }
+    },
+    "systemjs": {
+      "version": "6.14.1",
+      "resolved": "https://registry.npmmirror.com/systemjs/-/systemjs-6.14.1.tgz",
+      "integrity": "sha512-8ftwWd+XnQtZ/aGbatrN4QFNGrKJzmbtixW+ODpci7pyoTajg4sonPP8aFLESAcuVxaC1FyDESt+SpfFCH9rZQ==",
+      "dev": true
+    },
+    "terser": {
+      "version": "5.18.2",
+      "resolved": "https://registry.npmmirror.com/terser/-/terser-5.18.2.tgz",
+      "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==",
+      "requires": {
+        "@jridgewell/source-map": "^0.3.3",
+        "acorn": "^8.8.2",
+        "commander": "^2.20.0",
+        "source-map-support": "~0.5.20"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.20.3",
+          "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
+          "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+        }
+      }
+    },
+    "text-segmentation": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
+      "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+      "requires": {
+        "utrie": "^1.0.2"
+      }
+    },
+    "text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "dev": true
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz",
+      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+      "dev": true
+    },
+    "title-case": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmmirror.com/title-case/-/title-case-3.0.3.tgz",
+      "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==",
+      "dev": true,
+      "requires": {
+        "tslib": "^2.0.3"
+      }
+    },
+    "tmp": {
+      "version": "0.0.33",
+      "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz",
+      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+      "dev": true,
+      "requires": {
+        "os-tmpdir": "~1.0.2"
+      }
+    },
+    "to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "dev": true
+    },
+    "to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "requires": {
+        "is-number": "^7.0.0"
+      }
+    },
+    "treemate": {
+      "version": "0.3.11",
+      "resolved": "https://registry.npmmirror.com/treemate/-/treemate-0.3.11.tgz",
+      "integrity": "sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg=="
+    },
+    "tslib": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+    },
+    "tsutils": {
+      "version": "3.21.0",
+      "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz",
+      "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.8.1"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz",
+          "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+          "dev": true
+        }
+      }
+    },
+    "type-check": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz",
+      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "^1.2.1"
+      }
+    },
+    "type-fest": {
+      "version": "0.21.3",
+      "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz",
+      "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+      "dev": true
+    },
+    "typescript": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.1.6.tgz",
+      "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
+      "dev": true
+    },
+    "uglify-js": {
+      "version": "3.17.4",
+      "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.17.4.tgz",
+      "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
+      "dev": true,
+      "optional": true
+    },
+    "umi-request": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmmirror.com/umi-request/-/umi-request-1.4.0.tgz",
+      "integrity": "sha512-OknwtQZddZHi0Ggi+Vr/olJ7HNMx4AzlywyK0W3NZBT7B0stjeZ9lcztA85dBgdAj3KVk8uPJPZSnGaDjELhrA==",
+      "requires": {
+        "isomorphic-fetch": "^2.2.1",
+        "qs": "^6.9.1"
+      }
+    },
+    "unc-path-regex": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmmirror.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+      "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",
+      "dev": true
+    },
+    "unicode-canonical-property-names-ecmascript": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+      "dev": true
+    },
+    "unicode-match-property-ecmascript": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+      "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+      "dev": true,
+      "requires": {
+        "unicode-canonical-property-names-ecmascript": "^2.0.0",
+        "unicode-property-aliases-ecmascript": "^2.0.0"
+      }
+    },
+    "unicode-match-property-value-ecmascript": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+      "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+      "dev": true
+    },
+    "unicode-property-aliases-ecmascript": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+      "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+      "dev": true
+    },
+    "unplugin": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.3.1.tgz",
+      "integrity": "sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==",
+      "dev": true,
+      "requires": {
+        "acorn": "^8.8.2",
+        "chokidar": "^3.5.3",
+        "webpack-sources": "^3.2.3",
+        "webpack-virtual-modules": "^0.5.0"
+      }
+    },
+    "unplugin-vue-components": {
+      "version": "0.24.1",
+      "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.24.1.tgz",
+      "integrity": "sha512-T3A8HkZoIE1Cja95xNqolwza0yD5IVlgZZ1PVAGvVCx8xthmjsv38xWRCtHtwl+rvZyL9uif42SRkDGw9aCfMA==",
+      "dev": true,
+      "requires": {
+        "@antfu/utils": "^0.7.2",
+        "@rollup/pluginutils": "^5.0.2",
+        "chokidar": "^3.5.3",
+        "debug": "^4.3.4",
+        "fast-glob": "^3.2.12",
+        "local-pkg": "^0.4.3",
+        "magic-string": "^0.30.0",
+        "minimatch": "^7.4.2",
+        "resolve": "^1.22.1",
+        "unplugin": "^1.1.0"
+      },
+      "dependencies": {
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
+        "minimatch": {
+          "version": "7.4.6",
+          "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-7.4.6.tgz",
+          "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^2.0.1"
+          }
+        }
+      }
+    },
+    "update-browserslist-db": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+      "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+      "dev": true,
+      "requires": {
+        "escalade": "^3.1.1",
+        "picocolors": "^1.0.0"
+      }
+    },
+    "upper-case": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/upper-case/-/upper-case-2.0.2.tgz",
+      "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==",
+      "dev": true,
+      "requires": {
+        "tslib": "^2.0.3"
+      }
+    },
+    "upper-case-first": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/upper-case-first/-/upper-case-first-2.0.2.tgz",
+      "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==",
+      "dev": true,
+      "requires": {
+        "tslib": "^2.0.3"
+      }
+    },
+    "uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "url-polyfill": {
+      "version": "1.1.12",
+      "resolved": "https://registry.npmmirror.com/url-polyfill/-/url-polyfill-1.1.12.tgz",
+      "integrity": "sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A=="
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+      "dev": true
+    },
+    "utrie": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
+      "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+      "requires": {
+        "base64-arraybuffer": "^1.0.2"
+      }
+    },
+    "v8flags": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/v8flags/-/v8flags-4.0.0.tgz",
+      "integrity": "sha512-83N0OkTbn6gOjJ2awNuzuK4czeGxwEwBoTqlhBZhnp8o0IJ72mXRQKphj/azwRf3acbDJZYZhbOPEJHd884ELg==",
+      "dev": true
+    },
+    "vant": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmmirror.com/vant/-/vant-4.6.0.tgz",
+      "integrity": "sha512-MUwf/SLhI9FPRM12snI9CAUlowlS0LK3SquBZpEKbsIYijAZg0DfH1rAOnLfuQ3kgXCM8HnlCmeELaezT7X7nA==",
+      "requires": {
+        "@vant/popperjs": "^1.3.0",
+        "@vant/use": "^1.5.1",
+        "@vue/shared": "^3.0.0"
+      }
+    },
+    "vconsole": {
+      "version": "3.15.1",
+      "resolved": "https://registry.npmmirror.com/vconsole/-/vconsole-3.15.1.tgz",
+      "integrity": "sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==",
+      "requires": {
+        "@babel/runtime": "^7.17.2",
+        "copy-text-to-clipboard": "^3.0.1",
+        "core-js": "^3.11.0",
+        "mutation-observer": "^1.0.3"
+      }
+    },
+    "vdirs": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmmirror.com/vdirs/-/vdirs-0.1.8.tgz",
+      "integrity": "sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==",
+      "requires": {
+        "evtd": "^0.2.2"
+      }
+    },
+    "vite": {
+      "version": "4.3.9",
+      "resolved": "https://registry.npmmirror.com/vite/-/vite-4.3.9.tgz",
+      "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==",
+      "dev": true,
+      "requires": {
+        "esbuild": "^0.17.5",
+        "fsevents": "~2.3.2",
+        "postcss": "^8.4.23",
+        "rollup": "^3.21.0"
+      }
+    },
+    "vite-plugin-eslint": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmmirror.com/vite-plugin-eslint/-/vite-plugin-eslint-1.8.1.tgz",
+      "integrity": "sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==",
+      "dev": true,
+      "requires": {
+        "@rollup/pluginutils": "^4.2.1",
+        "@types/eslint": "^8.4.5",
+        "rollup": "^2.77.2"
+      },
+      "dependencies": {
+        "@rollup/pluginutils": {
+          "version": "4.2.1",
+          "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+          "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+          "dev": true,
+          "requires": {
+            "estree-walker": "^2.0.1",
+            "picomatch": "^2.2.2"
+          }
+        },
+        "rollup": {
+          "version": "2.79.1",
+          "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.79.1.tgz",
+          "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+          "dev": true,
+          "requires": {
+            "fsevents": "~2.3.2"
+          }
+        }
+      }
+    },
+    "vooks": {
+      "version": "0.2.12",
+      "resolved": "https://registry.npmmirror.com/vooks/-/vooks-0.2.12.tgz",
+      "integrity": "sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==",
+      "requires": {
+        "evtd": "^0.2.2"
+      }
+    },
+    "vudio.js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/vudio.js/-/vudio.js-1.0.3.tgz",
+      "integrity": "sha512-pip5HpUUmRYTKblq9EoDwUaKSTD4O+8LbGpzKYxRt6ZVQLzS/SpmjvsMTb8Wut6DzAn5fYzxifb9xzRZwEI2IQ=="
+    },
+    "vue": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz",
+      "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+      "requires": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-sfc": "3.3.4",
+        "@vue/runtime-dom": "3.3.4",
+        "@vue/server-renderer": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "vue-awesome-swiper": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/vue-awesome-swiper/-/vue-awesome-swiper-5.0.1.tgz",
+      "integrity": "sha512-mWjFJzUqA4lG+DmsmibvMpoiBnl+IH2SSeiiQ3i5M0t1y9FknTxnGT0DsMb2YdJLgjYMEK3sYOWzqgLnZMH8Lg=="
+    },
+    "vue-demi": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz",
+      "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA=="
+    },
+    "vue-eslint-parser": {
+      "version": "9.3.1",
+      "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz",
+      "integrity": "sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.3.4",
+        "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.6"
+      },
+      "dependencies": {
+        "eslint-scope": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.0.tgz",
+          "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
+          "dev": true,
+          "requires": {
+            "esrecurse": "^4.3.0",
+            "estraverse": "^5.2.0"
+          }
+        },
+        "estraverse": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.5.3",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
+          "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
+        }
+      }
+    },
+    "vue-router": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.2.tgz",
+      "integrity": "sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ==",
+      "requires": {
+        "@vue/devtools-api": "^6.5.0"
+      }
+    },
+    "vue-template-compiler": {
+      "version": "2.7.14",
+      "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
+      "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
+      "dev": true,
+      "requires": {
+        "de-indent": "^1.0.2",
+        "he": "^1.2.0"
+      }
+    },
+    "vue-tsc": {
+      "version": "1.8.3",
+      "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.8.3.tgz",
+      "integrity": "sha512-Ua4DHuYxjudlhCW2nRZtaXbhIDVncRGIbDjZhHpF8Z8vklct/G/35/kAPuGNSOmq0JcvhPAe28Oa7LWaUerZVA==",
+      "dev": true,
+      "requires": {
+        "@vue/language-core": "1.8.3",
+        "@vue/typescript": "1.8.3",
+        "semver": "^7.3.8"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.5.3",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz",
+          "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
+        }
+      }
+    },
+    "vue3-lottie": {
+      "version": "2.7.4",
+      "resolved": "https://registry.npmmirror.com/vue3-lottie/-/vue3-lottie-2.7.4.tgz",
+      "integrity": "sha512-EJATgpaWXyqdKxaSY2Q3lK4tTkxTSssKTqBmsIEG7Yj8jT75RGF6zhsoBc/kT10X41vt2HEpjPYmEQfKt6JfOw==",
+      "requires": {
+        "lodash-es": "^4.17.21",
+        "lottie-web": "5.12.2"
+      }
+    },
+    "vuedraggable": {
+      "version": "2.24.3",
+      "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-2.24.3.tgz",
+      "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==",
+      "requires": {
+        "sortablejs": "1.10.2"
+      }
+    },
+    "vueuc": {
+      "version": "0.4.51",
+      "resolved": "https://registry.npmmirror.com/vueuc/-/vueuc-0.4.51.tgz",
+      "integrity": "sha512-pLiMChM4f+W8czlIClGvGBYo656lc2Y0/mXFSCydcSmnCR1izlKPGMgiYBGjbY9FDkFG8a2HEVz7t0DNzBWbDw==",
+      "requires": {
+        "@css-render/vue3-ssr": "^0.15.10",
+        "@juggle/resize-observer": "^3.3.1",
+        "css-render": "^0.15.10",
+        "evtd": "^0.2.4",
+        "seemly": "^0.3.6",
+        "vdirs": "^0.1.4",
+        "vooks": "^0.2.4"
+      }
+    },
+    "wcwidth": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz",
+      "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+      "dev": true,
+      "requires": {
+        "defaults": "^1.0.3"
+      }
+    },
+    "webpack-sources": {
+      "version": "3.2.3",
+      "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz",
+      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+      "dev": true
+    },
+    "webpack-virtual-modules": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz",
+      "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==",
+      "dev": true
+    },
+    "whatwg-fetch": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npmmirror.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz",
+      "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA=="
+    },
+    "which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-module": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
+      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+    },
+    "wordwrap": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/wordwrap/-/wordwrap-1.0.0.tgz",
+      "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
+      "dev": true
+    },
+    "wrap-ansi": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+          "dev": true
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        }
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "dev": true
+    },
+    "xml-name-validator": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+      "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+      "dev": true
+    },
+    "y18n": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+    },
+    "yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+      "dev": true
+    },
+    "yaml": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.3.1.tgz",
+      "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==",
+      "dev": true
+    },
+    "yargs": {
+      "version": "15.4.1",
+      "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+      "requires": {
+        "cliui": "^6.0.0",
+        "decamelize": "^1.2.0",
+        "find-up": "^4.1.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^4.2.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^18.1.2"
+      },
+      "dependencies": {
+        "emoji-regex": {
+          "version": "8.0.0",
+          "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+          "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+        },
+        "find-up": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+          "requires": {
+            "locate-path": "^5.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+        },
+        "locate-path": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+          "requires": {
+            "p-locate": "^4.1.0"
+          }
+        },
+        "p-limit": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+          "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+          "requires": {
+            "p-try": "^2.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+          "requires": {
+            "p-limit": "^2.2.0"
+          }
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        }
+      }
+    },
+    "yargs-parser": {
+      "version": "18.1.3",
+      "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+      "requires": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+        }
+      }
+    },
+    "yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "dev": true
+    },
+    "yorkie": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz",
+      "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==",
+      "dev": true,
+      "requires": {
+        "execa": "^0.8.0",
+        "is-ci": "^1.0.10",
+        "normalize-path": "^1.0.0",
+        "strip-indent": "^2.0.0"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz",
+          "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^4.0.1",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "execa": {
+          "version": "0.8.0",
+          "resolved": "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz",
+          "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^5.0.1",
+            "get-stream": "^3.0.0",
+            "is-stream": "^1.1.0",
+            "npm-run-path": "^2.0.0",
+            "p-finally": "^1.0.0",
+            "signal-exit": "^3.0.0",
+            "strip-eof": "^1.0.0"
+          }
+        },
+        "get-stream": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz",
+          "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+          "dev": true
+        },
+        "is-stream": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
+          "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "4.1.5",
+          "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz",
+          "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "normalize-path": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz",
+          "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==",
+          "dev": true
+        },
+        "npm-run-path": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
+          "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+          "dev": true,
+          "requires": {
+            "path-key": "^2.0.0"
+          }
+        },
+        "path-key": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
+          "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+          "dev": true
+        },
+        "shebang-command": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
+          "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+          "dev": true,
+          "requires": {
+            "shebang-regex": "^1.0.0"
+          }
+        },
+        "shebang-regex": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
+          "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+          "dev": true
+        },
+        "which": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+          "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+          "dev": true,
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz",
+          "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+          "dev": true
+        }
+      }
+    },
+    "zrender": {
+      "version": "5.4.3",
+      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.3.tgz",
+      "integrity": "sha512-DRUM4ZLnoaT0PBVvGBDO9oWIDBKFdAVieNWxWwK0niYzJCMwGchRk21/hsE+RKkIveH3XHCyvXcJDkgLVvfizQ==",
+      "requires": {
+        "tslib": "2.3.0"
+      }
+    }
+  }
+}

+ 5 - 1
package.json

@@ -28,9 +28,12 @@
     "clean-deep": "^3.4.0",
     "dayjs": "^1.11.7",
     "echarts": "^5.4.2",
+    "eventemitter3": "^5.0.1",
+    "howler": "^2.2.3",
     "html2canvas": "^1.4.1",
     "naive-ui": "^2.34.4",
     "numeral": "^2.0.6",
+    "pinia": "^2.1.4",
     "plyr": "^3.7.8",
     "qrcode": "^1.5.3",
     "query-string": "^8.1.0",
@@ -43,7 +46,8 @@
     "vue": "^3.2.47",
     "vue-awesome-swiper": "^5.0.1",
     "vue-router": "^4.1.6",
-    "vue3-lottie": "^2.7.0"
+    "vue3-lottie": "^2.7.0",
+    "vuedraggable": "^2.24.3"
   },
   "devDependencies": {
     "@babel/core": "^7.21.4",

BIN
src/common/images/icon-address.png


BIN
src/common/images/icon-check-active.png


BIN
src/common/images/icon-check.png


BIN
src/common/images/icon_filter.png


+ 46 - 0
src/components/m-dialog/index.module.less

@@ -0,0 +1,46 @@
+.dialogTitle {
+  i {
+    display: inline-block;
+    width: 4px;
+    height: 14px;
+    background: #ff8057;
+    border-radius: 2px;
+    margin-right: 6px;
+  }
+
+  padding-left: 25px;
+  text-align: left;
+  font-size: 18px;
+  font-weight: 500;
+  color: #333333;
+  line-height: 25px;
+  padding-bottom: 12px;
+}
+
+.oDialog {
+  // margin-top: env(safe-area-inset-top);
+  :global {
+    .van-dialog__header {
+      padding-top: 20px;
+    }
+    .van-dialog__message {
+      font-size: 16px;
+      color: #333;
+      font-weight: 400;
+      line-height: 24px;
+    }
+    .van-dialog__cancel,
+    .van-dialog__confirm {
+      // font-weight: 500;
+      font-size: 18px;
+      height: 50px;
+      line-height: 50px;
+    }
+    .van-dialog__cancel {
+      color: #777777;
+    }
+    .van-dialog__confirm {
+      color: #f67146;
+    }
+  }
+}

+ 91 - 0
src/components/m-dialog/index.tsx

@@ -0,0 +1,91 @@
+import { Dialog } from 'vant'
+import { defineComponent, PropType, reactive, watch } from 'vue'
+import styles from './index.module.less'
+
+export default defineComponent({
+  name: 'o-dialog',
+  props: {
+    show: {
+      type: Boolean,
+      default: false
+    },
+    message: {
+      type: String,
+      default: ''
+    },
+    title: {
+      type: String,
+      default: '提示'
+    },
+    confirmButtonText: {
+      type: String,
+      default: '确认'
+    },
+    cancelButtonText: {
+      type: String,
+      default: '取消'
+    },
+    showConfirmButton: {
+      type: Boolean,
+      default: true
+    },
+    showCancelButton: {
+      type: Boolean,
+      default: false
+    },
+    messageAlign: {
+      type: String as PropType<'left' | 'center' | 'right'>,
+      default: 'center'
+    },
+    dialogMarginTop: {
+      type: String,
+      default: '0px'
+    }
+  },
+  emits: ['cancel', 'confirm', 'update:show'],
+  setup(props, { emit }) {
+    const state = reactive({
+      show: props.show || false
+    })
+
+    // 监听状态
+    watch(
+      () => props.show,
+      () => {
+        state.show = props.show
+      }
+    )
+    return () => (
+      <Dialog
+        class={styles.oDialog}
+        style={{
+          marginTop: props.dialogMarginTop
+        }}
+        v-model:show={state.show}
+        message={props.message}
+        messageAlign={props.messageAlign}
+        confirmButtonText={props.confirmButtonText}
+        cancelButtonText={props.cancelButtonText}
+        showConfirmButton={props.showConfirmButton}
+        showCancelButton={props.showCancelButton}
+        onConfirm={() => {
+          emit('update:show', false)
+          emit('confirm')
+        }}
+        onCancel={() => {
+          emit('update:show', false)
+          emit('cancel')
+        }}
+      >
+        {{
+          title: () => (
+            <div class={styles.dialogTitle}>
+              <i></i>
+              {props.title}
+            </div>
+          )
+        }}
+      </Dialog>
+    )
+  }
+})

+ 3 - 1
src/components/m-empty/index.module.less

@@ -2,6 +2,8 @@
   --van-empty-description-color: var(--k-gray-4);
   --van-empty-description-font-size: 16px;
   --van-empty-description-margin-top: 13px;
+  width: 100%;
+  height: 100%;
 
   :global {
     .van-empty__image {
@@ -22,4 +24,4 @@
     padding: 0 24px;
     height: 36px;
   }
-}
+}

+ 1 - 1
src/components/m-full-refresh/index.tsx

@@ -7,7 +7,7 @@ import 'vue3-lottie/dist/style.css';
 import loading from './loading.gif';
 import loadingJSon from './loading.json';
 export default defineComponent({
-  name: 's-full-refresh',
+  name: 'm-full-refresh',
   props: {
     title: String,
     modelValue: {

+ 19 - 9
src/components/m-img-code/index.tsx

@@ -25,15 +25,15 @@ export default defineComponent({
   data() {
     const origin = window.location.origin;
     return {
-      isSuffix: '/api-web',
+      isSuffix: '/edu-oauth',
       showStatus: false,
-      identifyingCode:
-        origin + '/api-web/code/getLoginImage?phone=' + this.phone,
+      identifyingCode: null as any,
       code: ''
     };
   },
   mounted() {
     this.showStatus = this.value;
+    this.sendImgCode();
   },
   watch: {
     value(val: any) {
@@ -46,19 +46,26 @@ export default defineComponent({
     }
   },
   methods: {
+    async sendImgCode() {
+      const { data } = await request.get(this.isSuffix + '/open/sendImgCode', {
+        requestType: 'form',
+        hideLoading: true,
+        params: {
+          phone: this.phone
+        }
+      });
+      this.identifyingCode = data;
+    },
     async updateIdentifyingCode() {
       // 刷新token
-      const origin = window.location.origin;
-      this.identifyingCode = `${origin}/api-web/code/getLoginImage?phone=${
-        this.phone
-      }&token=${Math.random()}`;
+      this.sendImgCode();
     },
     async checkVerifyLoginImage() {
       try {
         if ((this as any).code.length < 4) {
           return;
         }
-        await request.post(`${this.isSuffix}/code/verifyLoginImage`, {
+        await request.post(`/edu-oauth/open/verifyImgCode`, {
           requestType: 'form',
           hideLoading: true,
           data: {
@@ -66,10 +73,12 @@ export default defineComponent({
             code: this.code
           }
         });
-        await request.post(`${this.isSuffix}/code/sendSms`, {
+        await request.post(`/edu-oauth/open/sendSms`, {
           requestType: 'form',
           hideLoading: true,
           data: {
+            clientId: 'cooleshow-student',
+            type: 'REGISTER',
             mobile: this.phone
           }
         });
@@ -103,6 +112,7 @@ export default defineComponent({
                 placeholder="请输入验证码"
                 v-model={this.code}
                 class={styles.field}
+                autocomplete="off"
               />
             </Col>
             <Col span="10" class={styles.img}>

+ 9 - 4
src/components/m-protocol/index.module.less

@@ -1,12 +1,17 @@
 .mProtocol {
-  // display: flex;
-  // align-items: center;
+
   font-size: 12px;
   padding: 15px 14px;
   color: var(--k-gray-4);
 
+  &.center {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+
   .protocolText {
-    color: var(--van-primary);
+    color: #F96A33;
     line-height: 15px;
   }
 
@@ -44,4 +49,4 @@
     color: #333;
     line-height: 1.4;
   }
-}
+}

+ 8 - 4
src/components/m-protocol/index.tsx

@@ -6,8 +6,8 @@ import inactiveButtonIcon from '@/common/images/icon-check.png';
 import MHeader from '../m-header';
 import request from '@/helpers/request';
 const protocolText: any = {
-  BUY_ORDER: '《管乐团平台服务协议》',
-  REGISTER: '《管乐团平台注册协议》'
+  BUY_ORDER: '《课堂乐器服务协议》',
+  REGISTER: '《课堂乐器注册协议》'
 };
 export default defineComponent({
   name: 'o-protocol',
@@ -23,6 +23,10 @@ export default defineComponent({
     prototcolType: {
       type: String as PropType<'BUY_ORDER' | 'REGISTER' | 'WITHDRAW'>,
       default: 'BUY_ORDER'
+    },
+    center: {
+      type: Boolean,
+      default: false
     }
   },
   data() {
@@ -61,7 +65,7 @@ export default defineComponent({
         // 判断是否有协议内容
         if (!this.protocolHTML) {
           const { data } = await request.get(
-            '/api-student/schoolContractTemplate/queryLatestContractTemplate',
+            '/edu-app/schoolContractTemplate/queryLatestContractTemplate',
             {
               params: {
                 contractType: this.prototcolType
@@ -102,7 +106,7 @@ export default defineComponent({
   },
   render() {
     return (
-      <div class={styles.mProtocol}>
+      <div class={[styles.mProtocol, this.center ? styles.center : '']}>
         <Checkbox
           v-model={this.checked}
           v-slots={{

+ 7 - 1
src/components/m-search/index.tsx

@@ -32,6 +32,10 @@ export default defineComponent({
       type: String,
       default: '#fff'
     },
+    searchIcon: {
+      type: String,
+      default: iconSearch
+    },
     inputBackground: {
       type: String as PropType<inputBackground>,
       default: 'default'
@@ -68,7 +72,9 @@ export default defineComponent({
         onSearch={() => emit('search', forms.search)}>
         {{
           left: () => slots.left && slots.left(),
-          'left-icon': () => <Icon name={iconSearch} class={styles.leftIcon} />,
+          'left-icon': () => (
+            <Icon name={props.searchIcon} class={styles.leftIcon} />
+          ),
           'right-icon': () => (
             <Button
               disabled={props.disabled}

+ 5833 - 0
src/helpers/area.ts

@@ -0,0 +1,5833 @@
+export const areas = [
+  {
+    id: 1,
+    name: '北京市',
+    code: 110000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 2,
+        name: '北京城区',
+        code: 110100,
+        parentOrganId: 1,
+        areas: [
+          { id: 3, name: '东城区', code: 110101 },
+          { id: 4, name: '西城区', code: 110102 },
+          { id: 5, name: '朝阳区', code: 110105 },
+          { id: 6, name: '丰台区', code: 110106 },
+          { id: 7, name: '石景山区', code: 110107 },
+          { id: 8, name: '海淀区', code: 110108 },
+          { id: 9, name: '门头沟区', code: 110109 },
+          { id: 10, name: '房山区', code: 110111 },
+          { id: 11, name: '通州区', code: 110112 },
+          { id: 12, name: '顺义区', code: 110113 },
+          { id: 13, name: '昌平区', code: 110114 },
+          { id: 14, name: '大兴区', code: 110115 },
+          { id: 15, name: '怀柔区', code: 110116 },
+          { id: 16, name: '平谷区', code: 110117 },
+          { id: 17, name: '密云区', code: 110118 },
+          { id: 18, name: '延庆区', code: 110119 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 19,
+    name: '天津市',
+    code: 120000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 20,
+        name: '天津城区',
+        code: 120100,
+        parentOrganId: 19,
+        areas: [
+          { id: 21, name: '和平区', code: 120101 },
+          { id: 22, name: '河东区', code: 120102 },
+          { id: 23, name: '河西区', code: 120103 },
+          { id: 24, name: '南开区', code: 120104 },
+          { id: 25, name: '河北区', code: 120105 },
+          { id: 26, name: '红桥区', code: 120106 },
+          { id: 27, name: '东丽区', code: 120110 },
+          { id: 28, name: '西青区', code: 120111 },
+          { id: 29, name: '津南区', code: 120112 },
+          { id: 30, name: '北辰区', code: 120113 },
+          { id: 31, name: '武清区', code: 120114 },
+          { id: 32, name: '宝坻区', code: 120115 },
+          { id: 33, name: '滨海新区', code: 120116 },
+          { id: 34, name: '宁河区', code: 120117 },
+          { id: 35, name: '静海区', code: 120118 },
+          { id: 36, name: '蓟州区', code: 120119 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 37,
+    name: '河北省',
+    code: 130000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 38,
+        name: '石家庄市',
+        code: 130100,
+        parentOrganId: 37,
+        areas: [
+          { id: 39, name: '长安区', code: 130102 },
+          { id: 40, name: '桥西区', code: 130104 },
+          { id: 41, name: '新华区', code: 130105 },
+          { id: 42, name: '井陉矿区', code: 130107 },
+          { id: 43, name: '裕华区', code: 130108 },
+          { id: 44, name: '藁城区', code: 130109 },
+          { id: 45, name: '鹿泉区', code: 130110 },
+          { id: 46, name: '栾城区', code: 130111 },
+          { id: 47, name: '井陉县', code: 130121 },
+          { id: 48, name: '正定县', code: 130123 },
+          { id: 49, name: '行唐县', code: 130125 },
+          { id: 50, name: '灵寿县', code: 130126 },
+          { id: 51, name: '高邑县', code: 130127 },
+          { id: 52, name: '深泽县', code: 130128 },
+          { id: 53, name: '赞皇县', code: 130129 },
+          { id: 54, name: '无极县', code: 130130 },
+          { id: 55, name: '平山县', code: 130131 },
+          { id: 56, name: '元氏县', code: 130132 },
+          { id: 57, name: '赵县', code: 130133 },
+          { id: 58, name: '辛集市', code: 130181 },
+          { id: 59, name: '晋州市', code: 130183 },
+          { id: 60, name: '新乐市', code: 130184 }
+        ]
+      },
+      {
+        id: 61,
+        name: '唐山市',
+        code: 130200,
+        parentOrganId: 37,
+        areas: [
+          { id: 62, name: '路南区', code: 130202 },
+          { id: 63, name: '路北区', code: 130203 },
+          { id: 64, name: '古冶区', code: 130204 },
+          { id: 65, name: '开平区', code: 130205 },
+          { id: 66, name: '丰南区', code: 130207 },
+          { id: 67, name: '丰润区', code: 130208 },
+          { id: 68, name: '曹妃甸区', code: 130209 },
+          { id: 69, name: '滦县', code: 130223 },
+          { id: 70, name: '滦南县', code: 130224 },
+          { id: 71, name: '乐亭县', code: 130225 },
+          { id: 72, name: '迁西县', code: 130227 },
+          { id: 73, name: '玉田县', code: 130229 },
+          { id: 74, name: '遵化市', code: 130281 },
+          { id: 75, name: '迁安市', code: 130283 }
+        ]
+      },
+      {
+        id: 76,
+        name: '秦皇岛市',
+        code: 130300,
+        parentOrganId: 37,
+        areas: [
+          { id: 77, name: '海港区', code: 130302 },
+          { id: 78, name: '山海关区', code: 130303 },
+          { id: 79, name: '北戴河区', code: 130304 },
+          { id: 80, name: '抚宁区', code: 130306 },
+          { id: 81, name: '青龙满族自治县', code: 130321 },
+          { id: 82, name: '昌黎县', code: 130322 },
+          { id: 83, name: '卢龙县', code: 130324 }
+        ]
+      },
+      {
+        id: 84,
+        name: '邯郸市',
+        code: 130400,
+        parentOrganId: 37,
+        areas: [
+          { id: 85, name: '邯山区', code: 130402 },
+          { id: 86, name: '丛台区', code: 130403 },
+          { id: 87, name: '复兴区', code: 130404 },
+          { id: 88, name: '峰峰矿区', code: 130406 },
+          { id: 89, name: '临漳县', code: 130423 },
+          { id: 90, name: '成安县', code: 130424 },
+          { id: 91, name: '大名县', code: 130425 },
+          { id: 92, name: '涉县', code: 130426 },
+          { id: 93, name: '磁县', code: 130427 },
+          { id: 94, name: '肥乡区', code: 130407 },
+          { id: 95, name: '永年区', code: 130408 },
+          { id: 96, name: '邱县', code: 130430 },
+          { id: 97, name: '鸡泽县', code: 130431 },
+          { id: 98, name: '广平县', code: 130432 },
+          { id: 99, name: '馆陶县', code: 130433 },
+          { id: 100, name: '魏县', code: 130434 },
+          { id: 101, name: '曲周县', code: 130435 },
+          { id: 102, name: '武安市', code: 130481 }
+        ]
+      },
+      {
+        id: 103,
+        name: '邢台市',
+        code: 130500,
+        parentOrganId: 37,
+        areas: [
+          { id: 104, name: '桥东区', code: 130502 },
+          { id: 105, name: '桥西区', code: 130503 },
+          { id: 106, name: '邢台县', code: 130521 },
+          { id: 107, name: '临城县', code: 130522 },
+          { id: 108, name: '内丘县', code: 130523 },
+          { id: 109, name: '柏乡县', code: 130524 },
+          { id: 110, name: '隆尧县', code: 130525 },
+          { id: 111, name: '任县', code: 130526 },
+          { id: 112, name: '南和县', code: 130527 },
+          { id: 113, name: '宁晋县', code: 130528 },
+          { id: 114, name: '巨鹿县', code: 130529 },
+          { id: 115, name: '新河县', code: 130530 },
+          { id: 116, name: '广宗县', code: 130531 },
+          { id: 117, name: '平乡县', code: 130532 },
+          { id: 118, name: '威县', code: 130533 },
+          { id: 119, name: '清河县', code: 130534 },
+          { id: 120, name: '临西县', code: 130535 },
+          { id: 121, name: '南宫市', code: 130581 },
+          { id: 122, name: '沙河市', code: 130582 }
+        ]
+      },
+      {
+        id: 123,
+        name: '保定市',
+        code: 130600,
+        parentOrganId: 37,
+        areas: [
+          { id: 124, name: '竞秀区', code: 130602 },
+          { id: 125, name: '莲池区', code: 130606 },
+          { id: 126, name: '满城区', code: 130607 },
+          { id: 127, name: '清苑区', code: 130608 },
+          { id: 128, name: '徐水区', code: 130609 },
+          { id: 129, name: '涞水县', code: 130623 },
+          { id: 130, name: '阜平县', code: 130624 },
+          { id: 131, name: '定兴县', code: 130626 },
+          { id: 132, name: '唐县', code: 130627 },
+          { id: 133, name: '高阳县', code: 130628 },
+          { id: 134, name: '容城县', code: 130629 },
+          { id: 135, name: '涞源县', code: 130630 },
+          { id: 136, name: '望都县', code: 130631 },
+          { id: 137, name: '安新县', code: 130632 },
+          { id: 138, name: '易县', code: 130633 },
+          { id: 139, name: '曲阳县', code: 130634 },
+          { id: 140, name: '蠡县', code: 130635 },
+          { id: 141, name: '顺平县', code: 130636 },
+          { id: 142, name: '博野县', code: 130637 },
+          { id: 143, name: '雄县', code: 130638 },
+          { id: 144, name: '涿州市', code: 130681 },
+          { id: 145, name: '定州市', code: 130682 },
+          { id: 146, name: '安国市', code: 130683 },
+          { id: 147, name: '高碑店市', code: 130684 }
+        ]
+      },
+      {
+        id: 148,
+        name: '张家口市',
+        code: 130700,
+        parentOrganId: 37,
+        areas: [
+          { id: 149, name: '桥东区', code: 130702 },
+          { id: 150, name: '桥西区', code: 130703 },
+          { id: 151, name: '宣化区', code: 130705 },
+          { id: 152, name: '下花园区', code: 130706 },
+          { id: 153, name: '万全区', code: 130708 },
+          { id: 154, name: '崇礼区', code: 130709 },
+          { id: 155, name: '张北县', code: 130722 },
+          { id: 156, name: '康保县', code: 130723 },
+          { id: 157, name: '沽源县', code: 130724 },
+          { id: 158, name: '尚义县', code: 130725 },
+          { id: 159, name: '蔚县', code: 130726 },
+          { id: 160, name: '阳原县', code: 130727 },
+          { id: 161, name: '怀安县', code: 130728 },
+          { id: 162, name: '怀来县', code: 130730 },
+          { id: 163, name: '涿鹿县', code: 130731 },
+          { id: 164, name: '赤城县', code: 130732 }
+        ]
+      },
+      {
+        id: 165,
+        name: '承德市',
+        code: 130800,
+        parentOrganId: 37,
+        areas: [
+          { id: 166, name: '双桥区', code: 130802 },
+          { id: 167, name: '双滦区', code: 130803 },
+          { id: 168, name: '鹰手营子矿区', code: 130804 },
+          { id: 169, name: '承德县', code: 130821 },
+          { id: 170, name: '兴隆县', code: 130822 },
+          { id: 171, name: '平泉市', code: 130881 },
+          { id: 172, name: '滦平县', code: 130824 },
+          { id: 173, name: '隆化县', code: 130825 },
+          { id: 174, name: '丰宁满族自治县', code: 130826 },
+          { id: 175, name: '宽城满族自治县', code: 130827 },
+          { id: 176, name: '围场满族蒙古族自治县', code: 130828 }
+        ]
+      },
+      {
+        id: 177,
+        name: '沧州市',
+        code: 130900,
+        parentOrganId: 37,
+        areas: [
+          { id: 178, name: '新华区', code: 130902 },
+          { id: 179, name: '运河区', code: 130903 },
+          { id: 180, name: '沧县', code: 130921 },
+          { id: 181, name: '青县', code: 130922 },
+          { id: 182, name: '东光县', code: 130923 },
+          { id: 183, name: '海兴县', code: 130924 },
+          { id: 184, name: '盐山县', code: 130925 },
+          { id: 185, name: '肃宁县', code: 130926 },
+          { id: 186, name: '南皮县', code: 130927 },
+          { id: 187, name: '吴桥县', code: 130928 },
+          { id: 188, name: '献县', code: 130929 },
+          { id: 189, name: '孟村回族自治县', code: 130930 },
+          { id: 190, name: '泊头市', code: 130981 },
+          { id: 191, name: '任丘市', code: 130982 },
+          { id: 192, name: '黄骅市', code: 130983 },
+          { id: 193, name: '河间市', code: 130984 }
+        ]
+      },
+      {
+        id: 194,
+        name: '廊坊市',
+        code: 131000,
+        parentOrganId: 37,
+        areas: [
+          { id: 195, name: '安次区', code: 131002 },
+          { id: 196, name: '广阳区', code: 131003 },
+          { id: 197, name: '固安县', code: 131022 },
+          { id: 198, name: '永清县', code: 131023 },
+          { id: 199, name: '香河县', code: 131024 },
+          { id: 200, name: '大城县', code: 131025 },
+          { id: 201, name: '文安县', code: 131026 },
+          { id: 202, name: '大厂回族自治县', code: 131028 },
+          { id: 203, name: '霸州市', code: 131081 },
+          { id: 204, name: '三河市', code: 131082 }
+        ]
+      },
+      {
+        id: 205,
+        name: '衡水市',
+        code: 131100,
+        parentOrganId: 37,
+        areas: [
+          { id: 206, name: '桃城区', code: 131102 },
+          { id: 207, name: '冀州区', code: 131103 },
+          { id: 208, name: '枣强县', code: 131121 },
+          { id: 209, name: '武邑县', code: 131122 },
+          { id: 210, name: '武强县', code: 131123 },
+          { id: 211, name: '饶阳县', code: 131124 },
+          { id: 212, name: '安平县', code: 131125 },
+          { id: 213, name: '故城县', code: 131126 },
+          { id: 214, name: '景县', code: 131127 },
+          { id: 215, name: '阜城县', code: 131128 },
+          { id: 216, name: '深州市', code: 131182 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 217,
+    name: '山西省',
+    code: 140000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 218,
+        name: '太原市',
+        code: 140100,
+        parentOrganId: 217,
+        areas: [
+          { id: 219, name: '小店区', code: 140105 },
+          { id: 220, name: '迎泽区', code: 140106 },
+          { id: 221, name: '杏花岭区', code: 140107 },
+          { id: 222, name: '尖草坪区', code: 140108 },
+          { id: 223, name: '万柏林区', code: 140109 },
+          { id: 224, name: '晋源区', code: 140110 },
+          { id: 225, name: '清徐县', code: 140121 },
+          { id: 226, name: '阳曲县', code: 140122 },
+          { id: 227, name: '娄烦县', code: 140123 },
+          { id: 228, name: '古交市', code: 140181 }
+        ]
+      },
+      {
+        id: 229,
+        name: '大同市',
+        code: 140200,
+        parentOrganId: 217,
+        areas: [
+          { id: 230, name: '城区', code: 140202 },
+          { id: 231, name: '矿区', code: 140203 },
+          { id: 232, name: '南郊区', code: 140211 },
+          { id: 233, name: '新荣区', code: 140212 },
+          { id: 234, name: '阳高县', code: 140221 },
+          { id: 235, name: '天镇县', code: 140222 },
+          { id: 236, name: '广灵县', code: 140223 },
+          { id: 237, name: '灵丘县', code: 140224 },
+          { id: 238, name: '浑源县', code: 140225 },
+          { id: 239, name: '左云县', code: 140226 },
+          { id: 240, name: '大同县', code: 140227 }
+        ]
+      },
+      {
+        id: 241,
+        name: '阳泉市',
+        code: 140300,
+        parentOrganId: 217,
+        areas: [
+          { id: 242, name: '城区', code: 140302 },
+          { id: 243, name: '矿区', code: 140303 },
+          { id: 244, name: '郊区', code: 140311 },
+          { id: 245, name: '平定县', code: 140321 },
+          { id: 246, name: '盂县', code: 140322 }
+        ]
+      },
+      {
+        id: 247,
+        name: '长治市',
+        code: 140400,
+        parentOrganId: 217,
+        areas: [
+          { id: 248, name: '城区', code: 140402 },
+          { id: 249, name: '郊区', code: 140411 },
+          { id: 250, name: '长治县', code: 140421 },
+          { id: 251, name: '襄垣县', code: 140423 },
+          { id: 252, name: '屯留县', code: 140424 },
+          { id: 253, name: '平顺县', code: 140425 },
+          { id: 254, name: '黎城县', code: 140426 },
+          { id: 255, name: '壶关县', code: 140427 },
+          { id: 256, name: '长子县', code: 140428 },
+          { id: 257, name: '武乡县', code: 140429 },
+          { id: 258, name: '沁县', code: 140430 },
+          { id: 259, name: '沁源县', code: 140431 },
+          { id: 260, name: '潞城市', code: 140481 }
+        ]
+      },
+      {
+        id: 261,
+        name: '晋城市',
+        code: 140500,
+        parentOrganId: 217,
+        areas: [
+          { id: 262, name: '城区', code: 140502 },
+          { id: 263, name: '沁水县', code: 140521 },
+          { id: 264, name: '阳城县', code: 140522 },
+          { id: 265, name: '陵川县', code: 140524 },
+          { id: 266, name: '泽州县', code: 140525 },
+          { id: 267, name: '高平市', code: 140581 }
+        ]
+      },
+      {
+        id: 268,
+        name: '朔州市',
+        code: 140600,
+        parentOrganId: 217,
+        areas: [
+          { id: 269, name: '朔城区', code: 140602 },
+          { id: 270, name: '平鲁区', code: 140603 },
+          { id: 271, name: '山阴县', code: 140621 },
+          { id: 272, name: '应县', code: 140622 },
+          { id: 273, name: '右玉县', code: 140623 },
+          { id: 274, name: '怀仁县', code: 140624 }
+        ]
+      },
+      {
+        id: 275,
+        name: '晋中市',
+        code: 140700,
+        parentOrganId: 217,
+        areas: [
+          { id: 276, name: '榆次区', code: 140702 },
+          { id: 277, name: '榆社县', code: 140721 },
+          { id: 278, name: '左权县', code: 140722 },
+          { id: 279, name: '和顺县', code: 140723 },
+          { id: 280, name: '昔阳县', code: 140724 },
+          { id: 281, name: '寿阳县', code: 140725 },
+          { id: 282, name: '太谷县', code: 140726 },
+          { id: 283, name: '祁县', code: 140727 },
+          { id: 284, name: '平遥县', code: 140728 },
+          { id: 285, name: '灵石县', code: 140729 },
+          { id: 286, name: '介休市', code: 140781 }
+        ]
+      },
+      {
+        id: 287,
+        name: '运城市',
+        code: 140800,
+        parentOrganId: 217,
+        areas: [
+          { id: 288, name: '盐湖区', code: 140802 },
+          { id: 289, name: '临猗县', code: 140821 },
+          { id: 290, name: '万荣县', code: 140822 },
+          { id: 291, name: '闻喜县', code: 140823 },
+          { id: 292, name: '稷山县', code: 140824 },
+          { id: 293, name: '新绛县', code: 140825 },
+          { id: 294, name: '绛县', code: 140826 },
+          { id: 295, name: '垣曲县', code: 140827 },
+          { id: 296, name: '夏县', code: 140828 },
+          { id: 297, name: '平陆县', code: 140829 },
+          { id: 298, name: '芮城县', code: 140830 },
+          { id: 299, name: '永济市', code: 140881 },
+          { id: 300, name: '河津市', code: 140882 }
+        ]
+      },
+      {
+        id: 301,
+        name: '忻州市',
+        code: 140900,
+        parentOrganId: 217,
+        areas: [
+          { id: 302, name: '忻府区', code: 140902 },
+          { id: 303, name: '定襄县', code: 140921 },
+          { id: 304, name: '五台县', code: 140922 },
+          { id: 305, name: '代县', code: 140923 },
+          { id: 306, name: '繁峙县', code: 140924 },
+          { id: 307, name: '宁武县', code: 140925 },
+          { id: 308, name: '静乐县', code: 140926 },
+          { id: 309, name: '神池县', code: 140927 },
+          { id: 310, name: '五寨县', code: 140928 },
+          { id: 311, name: '岢岚县', code: 140929 },
+          { id: 312, name: '河曲县', code: 140930 },
+          { id: 313, name: '保德县', code: 140931 },
+          { id: 314, name: '偏关县', code: 140932 },
+          { id: 315, name: '原平市', code: 140981 }
+        ]
+      },
+      {
+        id: 316,
+        name: '临汾市',
+        code: 141000,
+        parentOrganId: 217,
+        areas: [
+          { id: 317, name: '尧都区', code: 141002 },
+          { id: 318, name: '曲沃县', code: 141021 },
+          { id: 319, name: '翼城县', code: 141022 },
+          { id: 320, name: '襄汾县', code: 141023 },
+          { id: 321, name: '洪洞县', code: 141024 },
+          { id: 322, name: '古县', code: 141025 },
+          { id: 323, name: '安泽县', code: 141026 },
+          { id: 324, name: '浮山县', code: 141027 },
+          { id: 325, name: '吉县', code: 141028 },
+          { id: 326, name: '乡宁县', code: 141029 },
+          { id: 327, name: '大宁县', code: 141030 },
+          { id: 328, name: '隰县', code: 141031 },
+          { id: 329, name: '永和县', code: 141032 },
+          { id: 330, name: '蒲县', code: 141033 },
+          { id: 331, name: '汾西县', code: 141034 },
+          { id: 332, name: '侯马市', code: 141081 },
+          { id: 333, name: '霍州市', code: 141082 }
+        ]
+      },
+      {
+        id: 334,
+        name: '吕梁市',
+        code: 141100,
+        parentOrganId: 217,
+        areas: [
+          { id: 335, name: '离石区', code: 141102 },
+          { id: 336, name: '文水县', code: 141121 },
+          { id: 337, name: '交城县', code: 141122 },
+          { id: 338, name: '兴县', code: 141123 },
+          { id: 339, name: '临县', code: 141124 },
+          { id: 340, name: '柳林县', code: 141125 },
+          { id: 341, name: '石楼县', code: 141126 },
+          { id: 342, name: '岚县', code: 141127 },
+          { id: 343, name: '方山县', code: 141128 },
+          { id: 344, name: '中阳县', code: 141129 },
+          { id: 345, name: '交口县', code: 141130 },
+          { id: 346, name: '孝义市', code: 141181 },
+          { id: 347, name: '汾阳市', code: 141182 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 348,
+    name: '内蒙古自治区',
+    code: 150000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 349,
+        name: '呼和浩特市',
+        code: 150100,
+        parentOrganId: 348,
+        areas: [
+          { id: 350, name: '新城区', code: 150102 },
+          { id: 351, name: '回民区', code: 150103 },
+          { id: 352, name: '玉泉区', code: 150104 },
+          { id: 353, name: '赛罕区', code: 150105 },
+          { id: 354, name: '土默特左旗', code: 150121 },
+          { id: 355, name: '托克托县', code: 150122 },
+          { id: 356, name: '和林格尔县', code: 150123 },
+          { id: 357, name: '清水河县', code: 150124 },
+          { id: 358, name: '武川县', code: 150125 }
+        ]
+      },
+      {
+        id: 359,
+        name: '包头市',
+        code: 150200,
+        parentOrganId: 348,
+        areas: [
+          { id: 360, name: '东河区', code: 150202 },
+          { id: 361, name: '昆都仑区', code: 150203 },
+          { id: 362, name: '青山区', code: 150204 },
+          { id: 363, name: '石拐区', code: 150205 },
+          { id: 364, name: '白云鄂博矿区', code: 150206 },
+          { id: 365, name: '九原区', code: 150207 },
+          { id: 366, name: '土默特右旗', code: 150221 },
+          { id: 367, name: '固阳县', code: 150222 },
+          { id: 368, name: '达尔罕茂明安联合旗', code: 150223 }
+        ]
+      },
+      {
+        id: 369,
+        name: '乌海市',
+        code: 150300,
+        parentOrganId: 348,
+        areas: [
+          { id: 370, name: '海勃湾区', code: 150302 },
+          { id: 371, name: '海南区', code: 150303 },
+          { id: 372, name: '乌达区', code: 150304 }
+        ]
+      },
+      {
+        id: 373,
+        name: '赤峰市',
+        code: 150400,
+        parentOrganId: 348,
+        areas: [
+          { id: 374, name: '红山区', code: 150402 },
+          { id: 375, name: '元宝山区', code: 150403 },
+          { id: 376, name: '松山区', code: 150404 },
+          { id: 377, name: '阿鲁科尔沁旗', code: 150421 },
+          { id: 378, name: '巴林左旗', code: 150422 },
+          { id: 379, name: '巴林右旗', code: 150423 },
+          { id: 380, name: '林西县', code: 150424 },
+          { id: 381, name: '克什克腾旗', code: 150425 },
+          { id: 382, name: '翁牛特旗', code: 150426 },
+          { id: 383, name: '喀喇沁旗', code: 150428 },
+          { id: 384, name: '宁城县', code: 150429 },
+          { id: 385, name: '敖汉旗', code: 150430 }
+        ]
+      },
+      {
+        id: 386,
+        name: '通辽市',
+        code: 150500,
+        parentOrganId: 348,
+        areas: [
+          { id: 387, name: '科尔沁区', code: 150502 },
+          { id: 388, name: '科尔沁左翼中旗', code: 150521 },
+          { id: 389, name: '科尔沁左翼后旗', code: 150522 },
+          { id: 390, name: '开鲁县', code: 150523 },
+          { id: 391, name: '库伦旗', code: 150524 },
+          { id: 392, name: '奈曼旗', code: 150525 },
+          { id: 393, name: '扎鲁特旗', code: 150526 },
+          { id: 394, name: '霍林郭勒市', code: 150581 }
+        ]
+      },
+      {
+        id: 395,
+        name: '鄂尔多斯市',
+        code: 150600,
+        parentOrganId: 348,
+        areas: [
+          { id: 396, name: '东胜区', code: 150602 },
+          { id: 397, name: '康巴什区', code: 150603 },
+          { id: 398, name: '达拉特旗', code: 150621 },
+          { id: 399, name: '准格尔旗', code: 150622 },
+          { id: 400, name: '鄂托克前旗', code: 150623 },
+          { id: 401, name: '鄂托克旗', code: 150624 },
+          { id: 402, name: '杭锦旗', code: 150625 },
+          { id: 403, name: '乌审旗', code: 150626 },
+          { id: 404, name: '伊金霍洛旗', code: 150627 }
+        ]
+      },
+      {
+        id: 405,
+        name: '呼伦贝尔市',
+        code: 150700,
+        parentOrganId: 348,
+        areas: [
+          { id: 406, name: '海拉尔区', code: 150702 },
+          { id: 407, name: '扎赉诺尔区', code: 150703 },
+          { id: 408, name: '阿荣旗', code: 150721 },
+          { id: 409, name: '莫力达瓦达斡尔族自治旗', code: 150722 },
+          { id: 410, name: '鄂伦春自治旗', code: 150723 },
+          { id: 411, name: '鄂温克族自治旗', code: 150724 },
+          { id: 412, name: '陈巴尔虎旗', code: 150725 },
+          { id: 413, name: '新巴尔虎左旗', code: 150726 },
+          { id: 414, name: '新巴尔虎右旗', code: 150727 },
+          { id: 415, name: '满洲里市', code: 150781 },
+          { id: 416, name: '牙克石市', code: 150782 },
+          { id: 417, name: '扎兰屯市', code: 150783 },
+          { id: 418, name: '额尔古纳市', code: 150784 },
+          { id: 419, name: '根河市', code: 150785 }
+        ]
+      },
+      {
+        id: 420,
+        name: '巴彦淖尔市',
+        code: 150800,
+        parentOrganId: 348,
+        areas: [
+          { id: 421, name: '临河区', code: 150802 },
+          { id: 422, name: '五原县', code: 150821 },
+          { id: 423, name: '磴口县', code: 150822 },
+          { id: 424, name: '乌拉特前旗', code: 150823 },
+          { id: 425, name: '乌拉特中旗', code: 150824 },
+          { id: 426, name: '乌拉特后旗', code: 150825 },
+          { id: 427, name: '杭锦后旗', code: 150826 }
+        ]
+      },
+      {
+        id: 428,
+        name: '乌兰察布市',
+        code: 150900,
+        parentOrganId: 348,
+        areas: [
+          { id: 429, name: '集宁区', code: 150902 },
+          { id: 430, name: '卓资县', code: 150921 },
+          { id: 431, name: '化德县', code: 150922 },
+          { id: 432, name: '商都县', code: 150923 },
+          { id: 433, name: '兴和县', code: 150924 },
+          { id: 434, name: '凉城县', code: 150925 },
+          { id: 435, name: '察哈尔右翼前旗', code: 150926 },
+          { id: 436, name: '察哈尔右翼中旗', code: 150927 },
+          { id: 437, name: '察哈尔右翼后旗', code: 150928 },
+          { id: 438, name: '四子王旗', code: 150929 },
+          { id: 439, name: '丰镇市', code: 150981 }
+        ]
+      },
+      {
+        id: 440,
+        name: '兴安盟',
+        code: 152200,
+        parentOrganId: 348,
+        areas: [
+          { id: 441, name: '乌兰浩特市', code: 152201 },
+          { id: 442, name: '阿尔山市', code: 152202 },
+          { id: 443, name: '科尔沁右翼前旗', code: 152221 },
+          { id: 444, name: '科尔沁右翼中旗', code: 152222 },
+          { id: 445, name: '扎赉特旗', code: 152223 },
+          { id: 446, name: '突泉县', code: 152224 }
+        ]
+      },
+      {
+        id: 447,
+        name: '锡林郭勒盟',
+        code: 152500,
+        parentOrganId: 348,
+        areas: [
+          { id: 448, name: '二连浩特市', code: 152501 },
+          { id: 449, name: '锡林浩特市', code: 152502 },
+          { id: 450, name: '阿巴嘎旗', code: 152522 },
+          { id: 451, name: '苏尼特左旗', code: 152523 },
+          { id: 452, name: '苏尼特右旗', code: 152524 },
+          { id: 453, name: '东乌珠穆沁旗', code: 152525 },
+          { id: 454, name: '西乌珠穆沁旗', code: 152526 },
+          { id: 455, name: '太仆寺旗', code: 152527 },
+          { id: 456, name: '镶黄旗', code: 152528 },
+          { id: 457, name: '正镶白旗', code: 152529 },
+          { id: 458, name: '正蓝旗', code: 152530 },
+          { id: 459, name: '多伦县', code: 152531 }
+        ]
+      },
+      {
+        id: 460,
+        name: '阿拉善盟',
+        code: 152900,
+        parentOrganId: 348,
+        areas: [
+          { id: 461, name: '阿拉善左旗', code: 152921 },
+          { id: 462, name: '阿拉善右旗', code: 152922 },
+          { id: 463, name: '额济纳旗', code: 152923 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 464,
+    name: '辽宁省',
+    code: 210000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 465,
+        name: '沈阳市',
+        code: 210100,
+        parentOrganId: 464,
+        areas: [
+          { id: 466, name: '和平区', code: 210102 },
+          { id: 467, name: '沈河区', code: 210103 },
+          { id: 468, name: '大东区', code: 210104 },
+          { id: 469, name: '皇姑区', code: 210105 },
+          { id: 470, name: '铁西区', code: 210106 },
+          { id: 471, name: '苏家屯区', code: 210111 },
+          { id: 472, name: '浑南区', code: 210112 },
+          { id: 473, name: '沈北新区', code: 210113 },
+          { id: 474, name: '于洪区', code: 210114 },
+          { id: 475, name: '辽中区', code: 210115 },
+          { id: 476, name: '康平县', code: 210123 },
+          { id: 477, name: '法库县', code: 210124 },
+          { id: 478, name: '新民市', code: 210181 }
+        ]
+      },
+      {
+        id: 479,
+        name: '大连市',
+        code: 210200,
+        parentOrganId: 464,
+        areas: [
+          { id: 480, name: '中山区', code: 210202 },
+          { id: 481, name: '西岗区', code: 210203 },
+          { id: 482, name: '沙河口区', code: 210204 },
+          { id: 483, name: '甘井子区', code: 210211 },
+          { id: 484, name: '旅顺口区', code: 210212 },
+          { id: 485, name: '金州区', code: 210213 },
+          { id: 486, name: '普兰店区', code: 210214 },
+          { id: 487, name: '长海县', code: 210224 },
+          { id: 488, name: '瓦房店市', code: 210281 },
+          { id: 489, name: '庄河市', code: 210283 }
+        ]
+      },
+      {
+        id: 490,
+        name: '鞍山市',
+        code: 210300,
+        parentOrganId: 464,
+        areas: [
+          { id: 491, name: '铁东区', code: 210302 },
+          { id: 492, name: '铁西区', code: 210303 },
+          { id: 493, name: '立山区', code: 210304 },
+          { id: 494, name: '千山区', code: 210311 },
+          { id: 495, name: '台安县', code: 210321 },
+          { id: 496, name: '岫岩满族自治县', code: 210323 },
+          { id: 497, name: '海城市', code: 210381 }
+        ]
+      },
+      {
+        id: 498,
+        name: '抚顺市',
+        code: 210400,
+        parentOrganId: 464,
+        areas: [
+          { id: 499, name: '新抚区', code: 210402 },
+          { id: 500, name: '东洲区', code: 210403 },
+          { id: 501, name: '望花区', code: 210404 },
+          { id: 502, name: '顺城区', code: 210411 },
+          { id: 503, name: '抚顺县', code: 210421 },
+          { id: 504, name: '新宾满族自治县', code: 210422 },
+          { id: 505, name: '清原满族自治县', code: 210423 }
+        ]
+      },
+      {
+        id: 506,
+        name: '本溪市',
+        code: 210500,
+        parentOrganId: 464,
+        areas: [
+          { id: 507, name: '平山区', code: 210502 },
+          { id: 508, name: '溪湖区', code: 210503 },
+          { id: 509, name: '明山区', code: 210504 },
+          { id: 510, name: '南芬区', code: 210505 },
+          { id: 511, name: '本溪满族自治县', code: 210521 },
+          { id: 512, name: '桓仁满族自治县', code: 210522 }
+        ]
+      },
+      {
+        id: 513,
+        name: '丹东市',
+        code: 210600,
+        parentOrganId: 464,
+        areas: [
+          { id: 514, name: '元宝区', code: 210602 },
+          { id: 515, name: '振兴区', code: 210603 },
+          { id: 516, name: '振安区', code: 210604 },
+          { id: 517, name: '宽甸满族自治县', code: 210624 },
+          { id: 518, name: '东港市', code: 210681 },
+          { id: 519, name: '凤城市', code: 210682 }
+        ]
+      },
+      {
+        id: 520,
+        name: '锦州市',
+        code: 210700,
+        parentOrganId: 464,
+        areas: [
+          { id: 521, name: '古塔区', code: 210702 },
+          { id: 522, name: '凌河区', code: 210703 },
+          { id: 523, name: '太和区', code: 210711 },
+          { id: 524, name: '黑山县', code: 210726 },
+          { id: 525, name: '义县', code: 210727 },
+          { id: 526, name: '凌海市', code: 210781 },
+          { id: 527, name: '北镇市', code: 210782 }
+        ]
+      },
+      {
+        id: 528,
+        name: '营口市',
+        code: 210800,
+        parentOrganId: 464,
+        areas: [
+          { id: 529, name: '站前区', code: 210802 },
+          { id: 530, name: '西市区', code: 210803 },
+          { id: 531, name: '鲅鱼圈区', code: 210804 },
+          { id: 532, name: '老边区', code: 210811 },
+          { id: 533, name: '盖州市', code: 210881 },
+          { id: 534, name: '大石桥市', code: 210882 }
+        ]
+      },
+      {
+        id: 535,
+        name: '阜新市',
+        code: 210900,
+        parentOrganId: 464,
+        areas: [
+          { id: 536, name: '海州区', code: 210902 },
+          { id: 537, name: '新邱区', code: 210903 },
+          { id: 538, name: '太平区', code: 210904 },
+          { id: 539, name: '清河门区', code: 210905 },
+          { id: 540, name: '细河区', code: 210911 },
+          { id: 541, name: '阜新蒙古族自治县', code: 210921 },
+          { id: 542, name: '彰武县', code: 210922 }
+        ]
+      },
+      {
+        id: 543,
+        name: '辽阳市',
+        code: 211000,
+        parentOrganId: 464,
+        areas: [
+          { id: 544, name: '白塔区', code: 211002 },
+          { id: 545, name: '文圣区', code: 211003 },
+          { id: 546, name: '宏伟区', code: 211004 },
+          { id: 547, name: '弓长岭区', code: 211005 },
+          { id: 548, name: '太子河区', code: 211011 },
+          { id: 549, name: '辽阳县', code: 211021 },
+          { id: 550, name: '灯塔市', code: 211081 }
+        ]
+      },
+      {
+        id: 551,
+        name: '盘锦市',
+        code: 211100,
+        parentOrganId: 464,
+        areas: [
+          { id: 552, name: '双台子区', code: 211102 },
+          { id: 553, name: '兴隆台区', code: 211103 },
+          { id: 554, name: '大洼区', code: 211104 },
+          { id: 555, name: '盘山县', code: 211122 }
+        ]
+      },
+      {
+        id: 556,
+        name: '铁岭市',
+        code: 211200,
+        parentOrganId: 464,
+        areas: [
+          { id: 557, name: '银州区', code: 211202 },
+          { id: 558, name: '清河区', code: 211204 },
+          { id: 559, name: '铁岭县', code: 211221 },
+          { id: 560, name: '西丰县', code: 211223 },
+          { id: 561, name: '昌图县', code: 211224 },
+          { id: 562, name: '调兵山市', code: 211281 },
+          { id: 563, name: '开原市', code: 211282 }
+        ]
+      },
+      {
+        id: 564,
+        name: '朝阳市',
+        code: 211300,
+        parentOrganId: 464,
+        areas: [
+          { id: 565, name: '双塔区', code: 211302 },
+          { id: 566, name: '龙城区', code: 211303 },
+          { id: 567, name: '朝阳县', code: 211321 },
+          { id: 568, name: '建平县', code: 211322 },
+          { id: 569, name: '喀喇沁左翼蒙古族自治县', code: 211324 },
+          { id: 570, name: '北票市', code: 211381 },
+          { id: 571, name: '凌源市', code: 211382 }
+        ]
+      },
+      {
+        id: 572,
+        name: '葫芦岛市',
+        code: 211400,
+        parentOrganId: 464,
+        areas: [
+          { id: 573, name: '连山区', code: 211402 },
+          { id: 574, name: '龙港区', code: 211403 },
+          { id: 575, name: '南票区', code: 211404 },
+          { id: 576, name: '绥中县', code: 211421 },
+          { id: 577, name: '建昌县', code: 211422 },
+          { id: 578, name: '兴城市', code: 211481 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 579,
+    name: '吉林省',
+    code: 220000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 580,
+        name: '长春市',
+        code: 220100,
+        parentOrganId: 579,
+        areas: [
+          { id: 581, name: '南关区', code: 220102 },
+          { id: 582, name: '宽城区', code: 220103 },
+          { id: 583, name: '朝阳区', code: 220104 },
+          { id: 584, name: '二道区', code: 220105 },
+          { id: 585, name: '绿园区', code: 220106 },
+          { id: 586, name: '双阳区', code: 220112 },
+          { id: 587, name: '九台区', code: 220113 },
+          { id: 588, name: '农安县', code: 220122 },
+          { id: 589, name: '榆树市', code: 220182 },
+          { id: 590, name: '德惠市', code: 220183 }
+        ]
+      },
+      {
+        id: 591,
+        name: '吉林市',
+        code: 220200,
+        parentOrganId: 579,
+        areas: [
+          { id: 592, name: '昌邑区', code: 220202 },
+          { id: 593, name: '龙潭区', code: 220203 },
+          { id: 594, name: '船营区', code: 220204 },
+          { id: 595, name: '丰满区', code: 220211 },
+          { id: 596, name: '永吉县', code: 220221 },
+          { id: 597, name: '蛟河市', code: 220281 },
+          { id: 598, name: '桦甸市', code: 220282 },
+          { id: 599, name: '舒兰市', code: 220283 },
+          { id: 600, name: '磐石市', code: 220284 }
+        ]
+      },
+      {
+        id: 601,
+        name: '四平市',
+        code: 220300,
+        parentOrganId: 579,
+        areas: [
+          { id: 602, name: '铁西区', code: 220302 },
+          { id: 603, name: '铁东区', code: 220303 },
+          { id: 604, name: '梨树县', code: 220322 },
+          { id: 605, name: '伊通满族自治县', code: 220323 },
+          { id: 606, name: '公主岭市', code: 220381 },
+          { id: 607, name: '双辽市', code: 220382 }
+        ]
+      },
+      {
+        id: 608,
+        name: '辽源市',
+        code: 220400,
+        parentOrganId: 579,
+        areas: [
+          { id: 609, name: '龙山区', code: 220402 },
+          { id: 610, name: '西安区', code: 220403 },
+          { id: 611, name: '东丰县', code: 220421 },
+          { id: 612, name: '东辽县', code: 220422 }
+        ]
+      },
+      {
+        id: 613,
+        name: '通化市',
+        code: 220500,
+        parentOrganId: 579,
+        areas: [
+          { id: 614, name: '东昌区', code: 220502 },
+          { id: 615, name: '二道江区', code: 220503 },
+          { id: 616, name: '通化县', code: 220521 },
+          { id: 617, name: '辉南县', code: 220523 },
+          { id: 618, name: '柳河县', code: 220524 },
+          { id: 619, name: '梅河口市', code: 220581 },
+          { id: 620, name: '集安市', code: 220582 }
+        ]
+      },
+      {
+        id: 621,
+        name: '白山市',
+        code: 220600,
+        parentOrganId: 579,
+        areas: [
+          { id: 622, name: '浑江区', code: 220602 },
+          { id: 623, name: '江源区', code: 220605 },
+          { id: 624, name: '抚松县', code: 220621 },
+          { id: 625, name: '靖宇县', code: 220622 },
+          { id: 626, name: '长白朝鲜族自治县', code: 220623 },
+          { id: 627, name: '临江市', code: 220681 }
+        ]
+      },
+      {
+        id: 628,
+        name: '松原市',
+        code: 220700,
+        parentOrganId: 579,
+        areas: [
+          { id: 629, name: '宁江区', code: 220702 },
+          { id: 630, name: '前郭尔罗斯蒙古族自治县', code: 220721 },
+          { id: 631, name: '长岭县', code: 220722 },
+          { id: 632, name: '乾安县', code: 220723 },
+          { id: 633, name: '扶余市', code: 220781 }
+        ]
+      },
+      {
+        id: 634,
+        name: '白城市',
+        code: 220800,
+        parentOrganId: 579,
+        areas: [
+          { id: 635, name: '洮北区', code: 220802 },
+          { id: 636, name: '镇赉县', code: 220821 },
+          { id: 637, name: '通榆县', code: 220822 },
+          { id: 638, name: '洮南市', code: 220881 },
+          { id: 639, name: '大安市', code: 220882 }
+        ]
+      },
+      {
+        id: 640,
+        name: '延边朝鲜族自治州',
+        code: 222400,
+        parentOrganId: 579,
+        areas: [
+          { id: 641, name: '延吉市', code: 222401 },
+          { id: 642, name: '图们市', code: 222402 },
+          { id: 643, name: '敦化市', code: 222403 },
+          { id: 644, name: '珲春市', code: 222404 },
+          { id: 645, name: '龙井市', code: 222405 },
+          { id: 646, name: '和龙市', code: 222406 },
+          { id: 647, name: '汪清县', code: 222424 },
+          { id: 648, name: '安图县', code: 222426 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 649,
+    name: '黑龙江省',
+    code: 230000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 650,
+        name: '哈尔滨市',
+        code: 230100,
+        parentOrganId: 649,
+        areas: [
+          { id: 651, name: '道里区', code: 230102 },
+          { id: 652, name: '南岗区', code: 230103 },
+          { id: 653, name: '道外区', code: 230104 },
+          { id: 654, name: '平房区', code: 230108 },
+          { id: 655, name: '松北区', code: 230109 },
+          { id: 656, name: '香坊区', code: 230110 },
+          { id: 657, name: '呼兰区', code: 230111 },
+          { id: 658, name: '阿城区', code: 230112 },
+          { id: 659, name: '双城区', code: 230113 },
+          { id: 660, name: '依兰县', code: 230123 },
+          { id: 661, name: '方正县', code: 230124 },
+          { id: 662, name: '宾县', code: 230125 },
+          { id: 663, name: '巴彦县', code: 230126 },
+          { id: 664, name: '木兰县', code: 230127 },
+          { id: 665, name: '通河县', code: 230128 },
+          { id: 666, name: '延寿县', code: 230129 },
+          { id: 667, name: '尚志市', code: 230183 },
+          { id: 668, name: '五常市', code: 230184 }
+        ]
+      },
+      {
+        id: 669,
+        name: '齐齐哈尔市',
+        code: 230200,
+        parentOrganId: 649,
+        areas: [
+          { id: 670, name: '龙沙区', code: 230202 },
+          { id: 671, name: '建华区', code: 230203 },
+          { id: 672, name: '铁锋区', code: 230204 },
+          { id: 673, name: '昂昂溪区', code: 230205 },
+          { id: 674, name: '富拉尔基区', code: 230206 },
+          { id: 675, name: '碾子山区', code: 230207 },
+          { id: 676, name: '梅里斯达斡尔族区', code: 230208 },
+          { id: 677, name: '龙江县', code: 230221 },
+          { id: 678, name: '依安县', code: 230223 },
+          { id: 679, name: '泰来县', code: 230224 },
+          { id: 680, name: '甘南县', code: 230225 },
+          { id: 681, name: '富裕县', code: 230227 },
+          { id: 682, name: '克山县', code: 230229 },
+          { id: 683, name: '克东县', code: 230230 },
+          { id: 684, name: '拜泉县', code: 230231 },
+          { id: 685, name: '讷河市', code: 230281 }
+        ]
+      },
+      {
+        id: 686,
+        name: '鸡西市',
+        code: 230300,
+        parentOrganId: 649,
+        areas: [
+          { id: 687, name: '鸡冠区', code: 230302 },
+          { id: 688, name: '恒山区', code: 230303 },
+          { id: 689, name: '滴道区', code: 230304 },
+          { id: 690, name: '梨树区', code: 230305 },
+          { id: 691, name: '城子河区', code: 230306 },
+          { id: 692, name: '麻山区', code: 230307 },
+          { id: 693, name: '鸡东县', code: 230321 },
+          { id: 694, name: '虎林市', code: 230381 },
+          { id: 695, name: '密山市', code: 230382 }
+        ]
+      },
+      {
+        id: 696,
+        name: '鹤岗市',
+        code: 230400,
+        parentOrganId: 649,
+        areas: [
+          { id: 697, name: '向阳区', code: 230402 },
+          { id: 698, name: '工农区', code: 230403 },
+          { id: 699, name: '南山区', code: 230404 },
+          { id: 700, name: '兴安区', code: 230405 },
+          { id: 701, name: '东山区', code: 230406 },
+          { id: 702, name: '兴山区', code: 230407 },
+          { id: 703, name: '萝北县', code: 230421 },
+          { id: 704, name: '绥滨县', code: 230422 }
+        ]
+      },
+      {
+        id: 705,
+        name: '双鸭山市',
+        code: 230500,
+        parentOrganId: 649,
+        areas: [
+          { id: 706, name: '尖山区', code: 230502 },
+          { id: 707, name: '岭东区', code: 230503 },
+          { id: 708, name: '四方台区', code: 230505 },
+          { id: 709, name: '宝山区', code: 230506 },
+          { id: 710, name: '集贤县', code: 230521 },
+          { id: 711, name: '友谊县', code: 230522 },
+          { id: 712, name: '宝清县', code: 230523 },
+          { id: 713, name: '饶河县', code: 230524 }
+        ]
+      },
+      {
+        id: 714,
+        name: '大庆市',
+        code: 230600,
+        parentOrganId: 649,
+        areas: [
+          { id: 715, name: '萨尔图区', code: 230602 },
+          { id: 716, name: '龙凤区', code: 230603 },
+          { id: 717, name: '让胡路区', code: 230604 },
+          { id: 718, name: '红岗区', code: 230605 },
+          { id: 719, name: '大同区', code: 230606 },
+          { id: 720, name: '肇州县', code: 230621 },
+          { id: 721, name: '肇源县', code: 230622 },
+          { id: 722, name: '林甸县', code: 230623 },
+          { id: 723, name: '杜尔伯特蒙古族自治县', code: 230624 }
+        ]
+      },
+      {
+        id: 724,
+        name: '伊春市',
+        code: 230700,
+        parentOrganId: 649,
+        areas: [
+          { id: 725, name: '伊春区', code: 230702 },
+          { id: 726, name: '南岔区', code: 230703 },
+          { id: 727, name: '友好区', code: 230704 },
+          { id: 728, name: '西林区', code: 230705 },
+          { id: 729, name: '翠峦区', code: 230706 },
+          { id: 730, name: '新青区', code: 230707 },
+          { id: 731, name: '美溪区', code: 230708 },
+          { id: 732, name: '金山屯区', code: 230709 },
+          { id: 733, name: '五营区', code: 230710 },
+          { id: 734, name: '乌马河区', code: 230711 },
+          { id: 735, name: '汤旺河区', code: 230712 },
+          { id: 736, name: '带岭区', code: 230713 },
+          { id: 737, name: '乌伊岭区', code: 230714 },
+          { id: 738, name: '红星区', code: 230715 },
+          { id: 739, name: '上甘岭区', code: 230716 },
+          { id: 740, name: '嘉荫县', code: 230722 },
+          { id: 741, name: '铁力市', code: 230781 }
+        ]
+      },
+      {
+        id: 742,
+        name: '佳木斯市',
+        code: 230800,
+        parentOrganId: 649,
+        areas: [
+          { id: 743, name: '向阳区', code: 230803 },
+          { id: 744, name: '前进区', code: 230804 },
+          { id: 745, name: '东风区', code: 230805 },
+          { id: 746, name: '郊区', code: 230811 },
+          { id: 747, name: '桦南县', code: 230822 },
+          { id: 748, name: '桦川县', code: 230826 },
+          { id: 749, name: '汤原县', code: 230828 },
+          { id: 750, name: '同江市', code: 230881 },
+          { id: 751, name: '富锦市', code: 230882 },
+          { id: 752, name: '抚远市', code: 230883 }
+        ]
+      },
+      {
+        id: 753,
+        name: '七台河市',
+        code: 230900,
+        parentOrganId: 649,
+        areas: [
+          { id: 754, name: '新兴区', code: 230902 },
+          { id: 755, name: '桃山区', code: 230903 },
+          { id: 756, name: '茄子河区', code: 230904 },
+          { id: 757, name: '勃利县', code: 230921 }
+        ]
+      },
+      {
+        id: 758,
+        name: '牡丹江市',
+        code: 231000,
+        parentOrganId: 649,
+        areas: [
+          { id: 759, name: '东安区', code: 231002 },
+          { id: 760, name: '阳明区', code: 231003 },
+          { id: 761, name: '爱民区', code: 231004 },
+          { id: 762, name: '西安区', code: 231005 },
+          { id: 763, name: '林口县', code: 231025 },
+          { id: 764, name: '绥芬河市', code: 231081 },
+          { id: 765, name: '海林市', code: 231083 },
+          { id: 766, name: '宁安市', code: 231084 },
+          { id: 767, name: '穆棱市', code: 231085 },
+          { id: 768, name: '东宁市', code: 231086 }
+        ]
+      },
+      {
+        id: 769,
+        name: '黑河市',
+        code: 231100,
+        parentOrganId: 649,
+        areas: [
+          { id: 770, name: '爱辉区', code: 231102 },
+          { id: 771, name: '嫩江县', code: 231121 },
+          { id: 772, name: '逊克县', code: 231123 },
+          { id: 773, name: '孙吴县', code: 231124 },
+          { id: 774, name: '北安市', code: 231181 },
+          { id: 775, name: '五大连池市', code: 231182 }
+        ]
+      },
+      {
+        id: 776,
+        name: '绥化市',
+        code: 231200,
+        parentOrganId: 649,
+        areas: [
+          { id: 777, name: '北林区', code: 231202 },
+          { id: 778, name: '望奎县', code: 231221 },
+          { id: 779, name: '兰西县', code: 231222 },
+          { id: 780, name: '青冈县', code: 231223 },
+          { id: 781, name: '庆安县', code: 231224 },
+          { id: 782, name: '明水县', code: 231225 },
+          { id: 783, name: '绥棱县', code: 231226 },
+          { id: 784, name: '安达市', code: 231281 },
+          { id: 785, name: '肇东市', code: 231282 },
+          { id: 786, name: '海伦市', code: 231283 }
+        ]
+      },
+      {
+        id: 787,
+        name: '大兴安岭地区',
+        code: 232700,
+        parentOrganId: 649,
+        areas: [
+          { id: 788, name: '加格达奇区', code: 232701 },
+          { id: 789, name: '呼玛县', code: 232721 },
+          { id: 790, name: '塔河县', code: 232722 },
+          { id: 791, name: '漠河县', code: 232723 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 792,
+    name: '上海市',
+    code: 310000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 793,
+        name: '上海城区',
+        code: 310100,
+        parentOrganId: 792,
+        areas: [
+          { id: 794, name: '黄浦区', code: 310101 },
+          { id: 795, name: '徐汇区', code: 310104 },
+          { id: 796, name: '长宁区', code: 310105 },
+          { id: 797, name: '静安区', code: 310106 },
+          { id: 798, name: '普陀区', code: 310107 },
+          { id: 799, name: '虹口区', code: 310109 },
+          { id: 800, name: '杨浦区', code: 310110 },
+          { id: 801, name: '闵行区', code: 310112 },
+          { id: 802, name: '宝山区', code: 310113 },
+          { id: 803, name: '嘉定区', code: 310114 },
+          { id: 804, name: '浦东新区', code: 310115 },
+          { id: 805, name: '金山区', code: 310116 },
+          { id: 806, name: '松江区', code: 310117 },
+          { id: 807, name: '青浦区', code: 310118 },
+          { id: 808, name: '奉贤区', code: 310120 },
+          { id: 809, name: '崇明区', code: 310151 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 810,
+    name: '江苏省',
+    code: 320000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 811,
+        name: '南京市',
+        code: 320100,
+        parentOrganId: 810,
+        areas: [
+          { id: 812, name: '玄武区', code: 320102 },
+          { id: 813, name: '秦淮区', code: 320104 },
+          { id: 814, name: '建邺区', code: 320105 },
+          { id: 815, name: '鼓楼区', code: 320106 },
+          { id: 816, name: '浦口区', code: 320111 },
+          { id: 817, name: '栖霞区', code: 320113 },
+          { id: 818, name: '雨花台区', code: 320114 },
+          { id: 819, name: '江宁区', code: 320115 },
+          { id: 820, name: '六合区', code: 320116 },
+          { id: 821, name: '溧水区', code: 320117 },
+          { id: 822, name: '高淳区', code: 320118 }
+        ]
+      },
+      {
+        id: 823,
+        name: '无锡市',
+        code: 320200,
+        parentOrganId: 810,
+        areas: [
+          { id: 824, name: '锡山区', code: 320205 },
+          { id: 825, name: '惠山区', code: 320206 },
+          { id: 826, name: '滨湖区', code: 320211 },
+          { id: 827, name: '梁溪区', code: 320213 },
+          { id: 828, name: '新吴区', code: 320214 },
+          { id: 829, name: '江阴市', code: 320281 },
+          { id: 830, name: '宜兴市', code: 320282 }
+        ]
+      },
+      {
+        id: 831,
+        name: '徐州市',
+        code: 320300,
+        parentOrganId: 810,
+        areas: [
+          { id: 832, name: '鼓楼区', code: 320302 },
+          { id: 833, name: '云龙区', code: 320303 },
+          { id: 834, name: '贾汪区', code: 320305 },
+          { id: 835, name: '泉山区', code: 320311 },
+          { id: 836, name: '铜山区', code: 320312 },
+          { id: 837, name: '丰县', code: 320321 },
+          { id: 838, name: '沛县', code: 320322 },
+          { id: 839, name: '睢宁县', code: 320324 },
+          { id: 840, name: '新沂市', code: 320381 },
+          { id: 841, name: '邳州市', code: 320382 }
+        ]
+      },
+      {
+        id: 842,
+        name: '常州市',
+        code: 320400,
+        parentOrganId: 810,
+        areas: [
+          { id: 843, name: '天宁区', code: 320402 },
+          { id: 844, name: '钟楼区', code: 320404 },
+          { id: 845, name: '新北区', code: 320411 },
+          { id: 846, name: '武进区', code: 320412 },
+          { id: 847, name: '金坛区', code: 320413 },
+          { id: 848, name: '溧阳市', code: 320481 }
+        ]
+      },
+      {
+        id: 849,
+        name: '苏州市',
+        code: 320500,
+        parentOrganId: 810,
+        areas: [
+          { id: 850, name: '虎丘区', code: 320505 },
+          { id: 851, name: '吴中区', code: 320506 },
+          { id: 852, name: '相城区', code: 320507 },
+          { id: 853, name: '姑苏区', code: 320508 },
+          { id: 854, name: '吴江区', code: 320509 },
+          { id: 855, name: '常熟市', code: 320581 },
+          { id: 856, name: '张家港市', code: 320582 },
+          { id: 857, name: '昆山市', code: 320583 },
+          { id: 858, name: '太仓市', code: 320585 }
+        ]
+      },
+      {
+        id: 859,
+        name: '南通市',
+        code: 320600,
+        parentOrganId: 810,
+        areas: [
+          { id: 860, name: '崇川区', code: 320602 },
+          { id: 861, name: '港闸区', code: 320611 },
+          { id: 862, name: '通州区', code: 320612 },
+          { id: 863, name: '海安县', code: 320621 },
+          { id: 864, name: '如东县', code: 320623 },
+          { id: 865, name: '启东市', code: 320681 },
+          { id: 866, name: '如皋市', code: 320682 },
+          { id: 867, name: '海门市', code: 320684 }
+        ]
+      },
+      {
+        id: 868,
+        name: '连云港市',
+        code: 320700,
+        parentOrganId: 810,
+        areas: [
+          { id: 869, name: '连云区', code: 320703 },
+          { id: 870, name: '海州区', code: 320706 },
+          { id: 871, name: '赣榆区', code: 320707 },
+          { id: 872, name: '东海县', code: 320722 },
+          { id: 873, name: '灌云县', code: 320723 },
+          { id: 874, name: '灌南县', code: 320724 }
+        ]
+      },
+      {
+        id: 875,
+        name: '淮安市',
+        code: 320800,
+        parentOrganId: 810,
+        areas: [
+          { id: 876, name: '清江浦区', code: 320812 },
+          { id: 877, name: '淮安区', code: 320803 },
+          { id: 878, name: '淮阴区', code: 320804 },
+          { id: 879, name: '洪泽区', code: 320813 },
+          { id: 880, name: '涟水县', code: 320826 },
+          { id: 881, name: '盱眙县', code: 320830 },
+          { id: 882, name: '金湖县', code: 320831 }
+        ]
+      },
+      {
+        id: 883,
+        name: '盐城市',
+        code: 320900,
+        parentOrganId: 810,
+        areas: [
+          { id: 884, name: '亭湖区', code: 320902 },
+          { id: 885, name: '盐都区', code: 320903 },
+          { id: 886, name: '大丰区', code: 320904 },
+          { id: 887, name: '响水县', code: 320921 },
+          { id: 888, name: '滨海县', code: 320922 },
+          { id: 889, name: '阜宁县', code: 320923 },
+          { id: 890, name: '射阳县', code: 320924 },
+          { id: 891, name: '建湖县', code: 320925 },
+          { id: 892, name: '东台市', code: 320981 }
+        ]
+      },
+      {
+        id: 893,
+        name: '扬州市',
+        code: 321000,
+        parentOrganId: 810,
+        areas: [
+          { id: 894, name: '广陵区', code: 321002 },
+          { id: 895, name: '邗江区', code: 321003 },
+          { id: 896, name: '江都区', code: 321012 },
+          { id: 897, name: '宝应县', code: 321023 },
+          { id: 898, name: '仪征市', code: 321081 },
+          { id: 899, name: '高邮市', code: 321084 }
+        ]
+      },
+      {
+        id: 900,
+        name: '镇江市',
+        code: 321100,
+        parentOrganId: 810,
+        areas: [
+          { id: 901, name: '京口区', code: 321102 },
+          { id: 902, name: '润州区', code: 321111 },
+          { id: 903, name: '丹徒区', code: 321112 },
+          { id: 904, name: '丹阳市', code: 321181 },
+          { id: 905, name: '扬中市', code: 321182 },
+          { id: 906, name: '句容市', code: 321183 }
+        ]
+      },
+      {
+        id: 907,
+        name: '泰州市',
+        code: 321200,
+        parentOrganId: 810,
+        areas: [
+          { id: 908, name: '海陵区', code: 321202 },
+          { id: 909, name: '高港区', code: 321203 },
+          { id: 910, name: '姜堰区', code: 321204 },
+          { id: 911, name: '兴化市', code: 321281 },
+          { id: 912, name: '靖江市', code: 321282 },
+          { id: 913, name: '泰兴市', code: 321283 }
+        ]
+      },
+      {
+        id: 914,
+        name: '宿迁市',
+        code: 321300,
+        parentOrganId: 810,
+        areas: [
+          { id: 915, name: '宿城区', code: 321302 },
+          { id: 916, name: '宿豫区', code: 321311 },
+          { id: 917, name: '沭阳县', code: 321322 },
+          { id: 918, name: '泗阳县', code: 321323 },
+          { id: 919, name: '泗洪县', code: 321324 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 920,
+    name: '浙江省',
+    code: 330000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 921,
+        name: '杭州市',
+        code: 330100,
+        parentOrganId: 920,
+        areas: [
+          { id: 922, name: '上城区', code: 330102 },
+          { id: 923, name: '下城区', code: 330103 },
+          { id: 924, name: '江干区', code: 330104 },
+          { id: 925, name: '拱墅区', code: 330105 },
+          { id: 926, name: '西湖区', code: 330106 },
+          { id: 927, name: '滨江区', code: 330108 },
+          { id: 928, name: '萧山区', code: 330109 },
+          { id: 929, name: '余杭区', code: 330110 },
+          { id: 930, name: '富阳区', code: 330111 },
+          { id: 931, name: '桐庐县', code: 330122 },
+          { id: 932, name: '淳安县', code: 330127 },
+          { id: 933, name: '建德市', code: 330182 },
+          { id: 934, name: '临安市', code: 330185 }
+        ]
+      },
+      {
+        id: 935,
+        name: '宁波市',
+        code: 330200,
+        parentOrganId: 920,
+        areas: [
+          { id: 936, name: '海曙区', code: 330203 },
+          { id: 937, name: '江北区', code: 330205 },
+          { id: 938, name: '北仑区', code: 330206 },
+          { id: 939, name: '镇海区', code: 330211 },
+          { id: 940, name: '鄞州区', code: 330212 },
+          { id: 941, name: '象山县', code: 330225 },
+          { id: 942, name: '宁海县', code: 330226 },
+          { id: 943, name: '余姚市', code: 330281 },
+          { id: 944, name: '慈溪市', code: 330282 },
+          { id: 945, name: '奉化区', code: 330213 }
+        ]
+      },
+      {
+        id: 946,
+        name: '温州市',
+        code: 330300,
+        parentOrganId: 920,
+        areas: [
+          { id: 947, name: '鹿城区', code: 330302 },
+          { id: 948, name: '龙湾区', code: 330303 },
+          { id: 949, name: '瓯海区', code: 330304 },
+          { id: 950, name: '洞头区', code: 330305 },
+          { id: 951, name: '永嘉县', code: 330324 },
+          { id: 952, name: '平阳县', code: 330326 },
+          { id: 953, name: '苍南县', code: 330327 },
+          { id: 954, name: '文成县', code: 330328 },
+          { id: 955, name: '泰顺县', code: 330329 },
+          { id: 956, name: '瑞安市', code: 330381 },
+          { id: 957, name: '乐清市', code: 330382 }
+        ]
+      },
+      {
+        id: 958,
+        name: '嘉兴市',
+        code: 330400,
+        parentOrganId: 920,
+        areas: [
+          { id: 959, name: '南湖区', code: 330402 },
+          { id: 960, name: '秀洲区', code: 330411 },
+          { id: 961, name: '嘉善县', code: 330421 },
+          { id: 962, name: '海盐县', code: 330424 },
+          { id: 963, name: '海宁市', code: 330481 },
+          { id: 964, name: '平湖市', code: 330482 },
+          { id: 965, name: '桐乡市', code: 330483 }
+        ]
+      },
+      {
+        id: 966,
+        name: '湖州市',
+        code: 330500,
+        parentOrganId: 920,
+        areas: [
+          { id: 967, name: '吴兴区', code: 330502 },
+          { id: 968, name: '南浔区', code: 330503 },
+          { id: 969, name: '德清县', code: 330521 },
+          { id: 970, name: '长兴县', code: 330522 },
+          { id: 971, name: '安吉县', code: 330523 }
+        ]
+      },
+      {
+        id: 972,
+        name: '绍兴市',
+        code: 330600,
+        parentOrganId: 920,
+        areas: [
+          { id: 973, name: '越城区', code: 330602 },
+          { id: 974, name: '柯桥区', code: 330603 },
+          { id: 975, name: '上虞区', code: 330604 },
+          { id: 976, name: '新昌县', code: 330624 },
+          { id: 977, name: '诸暨市', code: 330681 },
+          { id: 978, name: '嵊州市', code: 330683 }
+        ]
+      },
+      {
+        id: 979,
+        name: '金华市',
+        code: 330700,
+        parentOrganId: 920,
+        areas: [
+          { id: 980, name: '婺城区', code: 330702 },
+          { id: 981, name: '金东区', code: 330703 },
+          { id: 982, name: '武义县', code: 330723 },
+          { id: 983, name: '浦江县', code: 330726 },
+          { id: 984, name: '磐安县', code: 330727 },
+          { id: 985, name: '兰溪市', code: 330781 },
+          { id: 986, name: '义乌市', code: 330782 },
+          { id: 987, name: '东阳市', code: 330783 },
+          { id: 988, name: '永康市', code: 330784 }
+        ]
+      },
+      {
+        id: 989,
+        name: '衢州市',
+        code: 330800,
+        parentOrganId: 920,
+        areas: [
+          { id: 990, name: '柯城区', code: 330802 },
+          { id: 991, name: '衢江区', code: 330803 },
+          { id: 992, name: '常山县', code: 330822 },
+          { id: 993, name: '开化县', code: 330824 },
+          { id: 994, name: '龙游县', code: 330825 },
+          { id: 995, name: '江山市', code: 330881 }
+        ]
+      },
+      {
+        id: 996,
+        name: '舟山市',
+        code: 330900,
+        parentOrganId: 920,
+        areas: [
+          { id: 997, name: '定海区', code: 330902 },
+          { id: 998, name: '普陀区', code: 330903 },
+          { id: 999, name: '岱山县', code: 330921 },
+          { id: 1000, name: '嵊泗县', code: 330922 }
+        ]
+      },
+      {
+        id: 1001,
+        name: '台州市',
+        code: 331000,
+        parentOrganId: 920,
+        areas: [
+          { id: 1002, name: '椒江区', code: 331002 },
+          { id: 1003, name: '黄岩区', code: 331003 },
+          { id: 1004, name: '路桥区', code: 331004 },
+          { id: 1005, name: '玉环市', code: 331021 },
+          { id: 1006, name: '三门县', code: 331022 },
+          { id: 1007, name: '天台县', code: 331023 },
+          { id: 1008, name: '仙居县', code: 331024 },
+          { id: 1009, name: '温岭市', code: 331081 },
+          { id: 1010, name: '临海市', code: 331082 }
+        ]
+      },
+      {
+        id: 1011,
+        name: '丽水市',
+        code: 331100,
+        parentOrganId: 920,
+        areas: [
+          { id: 1012, name: '莲都区', code: 331102 },
+          { id: 1013, name: '青田县', code: 331121 },
+          { id: 1014, name: '缙云县', code: 331122 },
+          { id: 1015, name: '遂昌县', code: 331123 },
+          { id: 1016, name: '松阳县', code: 331124 },
+          { id: 1017, name: '云和县', code: 331125 },
+          { id: 1018, name: '庆元县', code: 331126 },
+          { id: 1019, name: '景宁畲族自治县', code: 331127 },
+          { id: 1020, name: '龙泉市', code: 331181 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 1021,
+    name: '安徽省',
+    code: 340000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 1022,
+        name: '合肥市',
+        code: 340100,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1023, name: '瑶海区', code: 340102 },
+          { id: 1024, name: '庐阳区', code: 340103 },
+          { id: 1025, name: '蜀山区', code: 340104 },
+          { id: 1026, name: '包河区', code: 340111 },
+          { id: 1027, name: '长丰县', code: 340121 },
+          { id: 1028, name: '肥东县', code: 340122 },
+          { id: 1029, name: '肥西县', code: 340123 },
+          { id: 1030, name: '庐江县', code: 340124 },
+          { id: 1031, name: '巢湖市', code: 340181 }
+        ]
+      },
+      {
+        id: 1032,
+        name: '芜湖市',
+        code: 340200,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1033, name: '镜湖区', code: 340202 },
+          { id: 1034, name: '弋江区', code: 340203 },
+          { id: 1035, name: '鸠江区', code: 340207 },
+          { id: 1036, name: '三山区', code: 340208 },
+          { id: 1037, name: '芜湖县', code: 340221 },
+          { id: 1038, name: '繁昌县', code: 340222 },
+          { id: 1039, name: '南陵县', code: 340223 },
+          { id: 1040, name: '无为县', code: 340225 }
+        ]
+      },
+      {
+        id: 1041,
+        name: '蚌埠市',
+        code: 340300,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1042, name: '龙子湖区', code: 340302 },
+          { id: 1043, name: '蚌山区', code: 340303 },
+          { id: 1044, name: '禹会区', code: 340304 },
+          { id: 1045, name: '淮上区', code: 340311 },
+          { id: 1046, name: '怀远县', code: 340321 },
+          { id: 1047, name: '五河县', code: 340322 },
+          { id: 1048, name: '固镇县', code: 340323 }
+        ]
+      },
+      {
+        id: 1049,
+        name: '淮南市',
+        code: 340400,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1050, name: '大通区', code: 340402 },
+          { id: 1051, name: '田家庵区', code: 340403 },
+          { id: 1052, name: '谢家集区', code: 340404 },
+          { id: 1053, name: '八公山区', code: 340405 },
+          { id: 1054, name: '潘集区', code: 340406 },
+          { id: 1055, name: '凤台县', code: 340421 },
+          { id: 1056, name: '寿县', code: 340422 }
+        ]
+      },
+      {
+        id: 1057,
+        name: '马鞍山市',
+        code: 340500,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1058, name: '花山区', code: 340503 },
+          { id: 1059, name: '雨山区', code: 340504 },
+          { id: 1060, name: '博望区', code: 340506 },
+          { id: 1061, name: '当涂县', code: 340521 },
+          { id: 1062, name: '含山县', code: 340522 },
+          { id: 1063, name: '和县', code: 340523 }
+        ]
+      },
+      {
+        id: 1064,
+        name: '淮北市',
+        code: 340600,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1065, name: '杜集区', code: 340602 },
+          { id: 1066, name: '相山区', code: 340603 },
+          { id: 1067, name: '烈山区', code: 340604 },
+          { id: 1068, name: '濉溪县', code: 340621 }
+        ]
+      },
+      {
+        id: 1069,
+        name: '铜陵市',
+        code: 340700,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1070, name: '铜官区', code: 340705 },
+          { id: 1071, name: '义安区', code: 340706 },
+          { id: 1072, name: '郊区', code: 340711 },
+          { id: 1073, name: '枞阳县', code: 340722 }
+        ]
+      },
+      {
+        id: 1074,
+        name: '安庆市',
+        code: 340800,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1075, name: '迎江区', code: 340802 },
+          { id: 1076, name: '大观区', code: 340803 },
+          { id: 1077, name: '宜秀区', code: 340811 },
+          { id: 1078, name: '怀宁县', code: 340822 },
+          { id: 1079, name: '潜山县', code: 340824 },
+          { id: 1080, name: '太湖县', code: 340825 },
+          { id: 1081, name: '宿松县', code: 340826 },
+          { id: 1082, name: '望江县', code: 340827 },
+          { id: 1083, name: '岳西县', code: 340828 },
+          { id: 1084, name: '桐城市', code: 340881 }
+        ]
+      },
+      {
+        id: 1085,
+        name: '黄山市',
+        code: 341000,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1086, name: '屯溪区', code: 341002 },
+          { id: 1087, name: '黄山区', code: 341003 },
+          { id: 1088, name: '徽州区', code: 341004 },
+          { id: 1089, name: '歙县', code: 341021 },
+          { id: 1090, name: '休宁县', code: 341022 },
+          { id: 1091, name: '黟县', code: 341023 },
+          { id: 1092, name: '祁门县', code: 341024 }
+        ]
+      },
+      {
+        id: 1093,
+        name: '滁州市',
+        code: 341100,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1094, name: '琅琊区', code: 341102 },
+          { id: 1095, name: '南谯区', code: 341103 },
+          { id: 1096, name: '来安县', code: 341122 },
+          { id: 1097, name: '全椒县', code: 341124 },
+          { id: 1098, name: '定远县', code: 341125 },
+          { id: 1099, name: '凤阳县', code: 341126 },
+          { id: 1100, name: '天长市', code: 341181 },
+          { id: 1101, name: '明光市', code: 341182 }
+        ]
+      },
+      {
+        id: 1102,
+        name: '阜阳市',
+        code: 341200,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1103, name: '颍州区', code: 341202 },
+          { id: 1104, name: '颍东区', code: 341203 },
+          { id: 1105, name: '颍泉区', code: 341204 },
+          { id: 1106, name: '临泉县', code: 341221 },
+          { id: 1107, name: '太和县', code: 341222 },
+          { id: 1108, name: '阜南县', code: 341225 },
+          { id: 1109, name: '颍上县', code: 341226 },
+          { id: 1110, name: '界首市', code: 341282 }
+        ]
+      },
+      {
+        id: 1111,
+        name: '宿州市',
+        code: 341300,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1112, name: '埇桥区', code: 341302 },
+          { id: 1113, name: '砀山县', code: 341321 },
+          { id: 1114, name: '萧县', code: 341322 },
+          { id: 1115, name: '灵璧县', code: 341323 },
+          { id: 1116, name: '泗县', code: 341324 }
+        ]
+      },
+      {
+        id: 1117,
+        name: '六安市',
+        code: 341500,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1118, name: '金安区', code: 341502 },
+          { id: 1119, name: '裕安区', code: 341503 },
+          { id: 1120, name: '叶集区', code: 341504 },
+          { id: 1121, name: '霍邱县', code: 341522 },
+          { id: 1122, name: '舒城县', code: 341523 },
+          { id: 1123, name: '金寨县', code: 341524 },
+          { id: 1124, name: '霍山县', code: 341525 }
+        ]
+      },
+      {
+        id: 1125,
+        name: '亳州市',
+        code: 341600,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1126, name: '谯城区', code: 341602 },
+          { id: 1127, name: '涡阳县', code: 341621 },
+          { id: 1128, name: '蒙城县', code: 341622 },
+          { id: 1129, name: '利辛县', code: 341623 }
+        ]
+      },
+      {
+        id: 1130,
+        name: '池州市',
+        code: 341700,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1131, name: '贵池区', code: 341702 },
+          { id: 1132, name: '东至县', code: 341721 },
+          { id: 1133, name: '石台县', code: 341722 },
+          { id: 1134, name: '青阳县', code: 341723 }
+        ]
+      },
+      {
+        id: 1135,
+        name: '宣城市',
+        code: 341800,
+        parentOrganId: 1021,
+        areas: [
+          { id: 1136, name: '宣州区', code: 341802 },
+          { id: 1137, name: '郎溪县', code: 341821 },
+          { id: 1138, name: '广德县', code: 341822 },
+          { id: 1139, name: '泾县', code: 341823 },
+          { id: 1140, name: '绩溪县', code: 341824 },
+          { id: 1141, name: '旌德县', code: 341825 },
+          { id: 1142, name: '宁国市', code: 341881 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 1143,
+    name: '福建省',
+    code: 350000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 1144,
+        name: '福州市',
+        code: 350100,
+        parentOrganId: 1143,
+        areas: [
+          { id: 1145, name: '鼓楼区', code: 350102 },
+          { id: 1146, name: '台江区', code: 350103 },
+          { id: 1147, name: '仓山区', code: 350104 },
+          { id: 1148, name: '马尾区', code: 350105 },
+          { id: 1149, name: '晋安区', code: 350111 },
+          { id: 1150, name: '闽侯县', code: 350121 },
+          { id: 1151, name: '连江县', code: 350122 },
+          { id: 1152, name: '罗源县', code: 350123 },
+          { id: 1153, name: '闽清县', code: 350124 },
+          { id: 1154, name: '永泰县', code: 350125 },
+          { id: 1155, name: '平潭县', code: 350128 },
+          { id: 1156, name: '福清市', code: 350181 },
+          { id: 1157, name: '长乐市', code: 350182 }
+        ]
+      },
+      {
+        id: 1158,
+        name: '厦门市',
+        code: 350200,
+        parentOrganId: 1143,
+        areas: [
+          { id: 1159, name: '思明区', code: 350203 },
+          { id: 1160, name: '海沧区', code: 350205 },
+          { id: 1161, name: '湖里区', code: 350206 },
+          { id: 1162, name: '集美区', code: 350211 },
+          { id: 1163, name: '同安区', code: 350212 },
+          { id: 1164, name: '翔安区', code: 350213 }
+        ]
+      },
+      {
+        id: 1165,
+        name: '莆田市',
+        code: 350300,
+        parentOrganId: 1143,
+        areas: [
+          { id: 1166, name: '城厢区', code: 350302 },
+          { id: 1167, name: '涵江区', code: 350303 },
+          { id: 1168, name: '荔城区', code: 350304 },
+          { id: 1169, name: '秀屿区', code: 350305 },
+          { id: 1170, name: '仙游县', code: 350322 }
+        ]
+      },
+      {
+        id: 1171,
+        name: '三明市',
+        code: 350400,
+        parentOrganId: 1143,
+        areas: [
+          { id: 1172, name: '梅列区', code: 350402 },
+          { id: 1173, name: '三元区', code: 350403 },
+          { id: 1174, name: '明溪县', code: 350421 },
+          { id: 1175, name: '清流县', code: 350423 },
+          { id: 1176, name: '宁化县', code: 350424 },
+          { id: 1177, name: '大田县', code: 350425 },
+          { id: 1178, name: '尤溪县', code: 350426 },
+          { id: 1179, name: '沙县', code: 350427 },
+          { id: 1180, name: '将乐县', code: 350428 },
+          { id: 1181, name: '泰宁县', code: 350429 },
+          { id: 1182, name: '建宁县', code: 350430 },
+          { id: 1183, name: '永安市', code: 350481 }
+        ]
+      },
+      {
+        id: 1184,
+        name: '泉州市',
+        code: 350500,
+        parentOrganId: 1143,
+        areas: [
+          { id: 1185, name: '鲤城区', code: 350502 },
+          { id: 1186, name: '丰泽区', code: 350503 },
+          { id: 1187, name: '洛江区', code: 350504 },
+          { id: 1188, name: '泉港区', code: 350505 },
+          { id: 1189, name: '惠安县', code: 350521 },
+          { id: 1190, name: '安溪县', code: 350524 },
+          { id: 1191, name: '永春县', code: 350525 },
+          { id: 1192, name: '德化县', code: 350526 },
+          { id: 1193, name: '金门县', code: 350527 },
+          { id: 1194, name: '石狮市', code: 350581 },
+          { id: 1195, name: '晋江市', code: 350582 },
+          { id: 1196, name: '南安市', code: 350583 }
+        ]
+      },
+      {
+        id: 1197,
+        name: '漳州市',
+        code: 350600,
+        parentOrganId: 1143,
+        areas: [
+          { id: 1198, name: '芗城区', code: 350602 },
+          { id: 1199, name: '龙文区', code: 350603 },
+          { id: 1200, name: '云霄县', code: 350622 },
+          { id: 1201, name: '漳浦县', code: 350623 },
+          { id: 1202, name: '诏安县', code: 350624 },
+          { id: 1203, name: '长泰县', code: 350625 },
+          { id: 1204, name: '东山县', code: 350626 },
+          { id: 1205, name: '南靖县', code: 350627 },
+          { id: 1206, name: '平和县', code: 350628 },
+          { id: 1207, name: '华安县', code: 350629 },
+          { id: 1208, name: '龙海市', code: 350681 }
+        ]
+      },
+      {
+        id: 1209,
+        name: '南平市',
+        code: 350700,
+        parentOrganId: 1143,
+        areas: [
+          { id: 1210, name: '延平区', code: 350702 },
+          { id: 1211, name: '建阳区', code: 350703 },
+          { id: 1212, name: '顺昌县', code: 350721 },
+          { id: 1213, name: '浦城县', code: 350722 },
+          { id: 1214, name: '光泽县', code: 350723 },
+          { id: 1215, name: '松溪县', code: 350724 },
+          { id: 1216, name: '政和县', code: 350725 },
+          { id: 1217, name: '邵武市', code: 350781 },
+          { id: 1218, name: '武夷山市', code: 350782 },
+          { id: 1219, name: '建瓯市', code: 350783 }
+        ]
+      },
+      {
+        id: 1220,
+        name: '龙岩市',
+        code: 350800,
+        parentOrganId: 1143,
+        areas: [
+          { id: 1221, name: '新罗区', code: 350802 },
+          { id: 1222, name: '永定区', code: 350803 },
+          { id: 1223, name: '长汀县', code: 350821 },
+          { id: 1224, name: '上杭县', code: 350823 },
+          { id: 1225, name: '武平县', code: 350824 },
+          { id: 1226, name: '连城县', code: 350825 },
+          { id: 1227, name: '漳平市', code: 350881 }
+        ]
+      },
+      {
+        id: 1228,
+        name: '宁德市',
+        code: 350900,
+        parentOrganId: 1143,
+        areas: [
+          { id: 1229, name: '蕉城区', code: 350902 },
+          { id: 1230, name: '霞浦县', code: 350921 },
+          { id: 1231, name: '古田县', code: 350922 },
+          { id: 1232, name: '屏南县', code: 350923 },
+          { id: 1233, name: '寿宁县', code: 350924 },
+          { id: 1234, name: '周宁县', code: 350925 },
+          { id: 1235, name: '柘荣县', code: 350926 },
+          { id: 1236, name: '福安市', code: 350981 },
+          { id: 1237, name: '福鼎市', code: 350982 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 1238,
+    name: '江西省',
+    code: 360000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 1239,
+        name: '南昌市',
+        code: 360100,
+        parentOrganId: 1238,
+        areas: [
+          { id: 1240, name: '东湖区', code: 360102 },
+          { id: 1241, name: '西湖区', code: 360103 },
+          { id: 1242, name: '青云谱区', code: 360104 },
+          { id: 1243, name: '湾里区', code: 360105 },
+          { id: 1244, name: '青山湖区', code: 360111 },
+          { id: 1245, name: '新建区', code: 360112 },
+          { id: 1246, name: '南昌县', code: 360121 },
+          { id: 1247, name: '安义县', code: 360123 },
+          { id: 1248, name: '进贤县', code: 360124 }
+        ]
+      },
+      {
+        id: 1249,
+        name: '景德镇市',
+        code: 360200,
+        parentOrganId: 1238,
+        areas: [
+          { id: 1250, name: '昌江区', code: 360202 },
+          { id: 1251, name: '珠山区', code: 360203 },
+          { id: 1252, name: '浮梁县', code: 360222 },
+          { id: 1253, name: '乐平市', code: 360281 }
+        ]
+      },
+      {
+        id: 1254,
+        name: '萍乡市',
+        code: 360300,
+        parentOrganId: 1238,
+        areas: [
+          { id: 1255, name: '安源区', code: 360302 },
+          { id: 1256, name: '湘东区', code: 360313 },
+          { id: 1257, name: '莲花县', code: 360321 },
+          { id: 1258, name: '上栗县', code: 360322 },
+          { id: 1259, name: '芦溪县', code: 360323 }
+        ]
+      },
+      {
+        id: 1260,
+        name: '九江市',
+        code: 360400,
+        parentOrganId: 1238,
+        areas: [
+          { id: 1261, name: '濂溪区', code: 360402 },
+          { id: 1262, name: '浔阳区', code: 360403 },
+          { id: 1263, name: '九江县', code: 360421 },
+          { id: 1264, name: '武宁县', code: 360423 },
+          { id: 1265, name: '修水县', code: 360424 },
+          { id: 1266, name: '永修县', code: 360425 },
+          { id: 1267, name: '德安县', code: 360426 },
+          { id: 1268, name: '庐山市', code: 360483 },
+          { id: 1269, name: '都昌县', code: 360428 },
+          { id: 1270, name: '湖口县', code: 360429 },
+          { id: 1271, name: '彭泽县', code: 360430 },
+          { id: 1272, name: '瑞昌市', code: 360481 },
+          { id: 1273, name: '共青城市', code: 360482 }
+        ]
+      },
+      {
+        id: 1274,
+        name: '新余市',
+        code: 360500,
+        parentOrganId: 1238,
+        areas: [
+          { id: 1275, name: '渝水区', code: 360502 },
+          { id: 1276, name: '分宜县', code: 360521 }
+        ]
+      },
+      {
+        id: 1277,
+        name: '鹰潭市',
+        code: 360600,
+        parentOrganId: 1238,
+        areas: [
+          { id: 1278, name: '月湖区', code: 360602 },
+          { id: 1279, name: '余江县', code: 360622 },
+          { id: 1280, name: '贵溪市', code: 360681 }
+        ]
+      },
+      {
+        id: 1281,
+        name: '赣州市',
+        code: 360700,
+        parentOrganId: 1238,
+        areas: [
+          { id: 1282, name: '章贡区', code: 360702 },
+          { id: 1283, name: '南康区', code: 360703 },
+          { id: 1284, name: '赣县区', code: 360704 },
+          { id: 1285, name: '信丰县', code: 360722 },
+          { id: 1286, name: '大余县', code: 360723 },
+          { id: 1287, name: '上犹县', code: 360724 },
+          { id: 1288, name: '崇义县', code: 360725 },
+          { id: 1289, name: '安远县', code: 360726 },
+          { id: 1290, name: '龙南县', code: 360727 },
+          { id: 1291, name: '定南县', code: 360728 },
+          { id: 1292, name: '全南县', code: 360729 },
+          { id: 1293, name: '宁都县', code: 360730 },
+          { id: 1294, name: '于都县', code: 360731 },
+          { id: 1295, name: '兴国县', code: 360732 },
+          { id: 1296, name: '会昌县', code: 360733 },
+          { id: 1297, name: '寻乌县', code: 360734 },
+          { id: 1298, name: '石城县', code: 360735 },
+          { id: 1299, name: '瑞金市', code: 360781 }
+        ]
+      },
+      {
+        id: 1300,
+        name: '吉安市',
+        code: 360800,
+        parentOrganId: 1238,
+        areas: [
+          { id: 1301, name: '吉州区', code: 360802 },
+          { id: 1302, name: '青原区', code: 360803 },
+          { id: 1303, name: '吉安县', code: 360821 },
+          { id: 1304, name: '吉水县', code: 360822 },
+          { id: 1305, name: '峡江县', code: 360823 },
+          { id: 1306, name: '新干县', code: 360824 },
+          { id: 1307, name: '永丰县', code: 360825 },
+          { id: 1308, name: '泰和县', code: 360826 },
+          { id: 1309, name: '遂川县', code: 360827 },
+          { id: 1310, name: '万安县', code: 360828 },
+          { id: 1311, name: '安福县', code: 360829 },
+          { id: 1312, name: '永新县', code: 360830 },
+          { id: 1313, name: '井冈山市', code: 360881 }
+        ]
+      },
+      {
+        id: 1314,
+        name: '宜春市',
+        code: 360900,
+        parentOrganId: 1238,
+        areas: [
+          { id: 1315, name: '袁州区', code: 360902 },
+          { id: 1316, name: '奉新县', code: 360921 },
+          { id: 1317, name: '万载县', code: 360922 },
+          { id: 1318, name: '上高县', code: 360923 },
+          { id: 1319, name: '宜丰县', code: 360924 },
+          { id: 1320, name: '靖安县', code: 360925 },
+          { id: 1321, name: '铜鼓县', code: 360926 },
+          { id: 1322, name: '丰城市', code: 360981 },
+          { id: 1323, name: '樟树市', code: 360982 },
+          { id: 1324, name: '高安市', code: 360983 }
+        ]
+      },
+      {
+        id: 1325,
+        name: '抚州市',
+        code: 361000,
+        parentOrganId: 1238,
+        areas: [
+          { id: 1326, name: '临川区', code: 361002 },
+          { id: 1327, name: '南城县', code: 361021 },
+          { id: 1328, name: '黎川县', code: 361022 },
+          { id: 1329, name: '南丰县', code: 361023 },
+          { id: 1330, name: '崇仁县', code: 361024 },
+          { id: 1331, name: '乐安县', code: 361025 },
+          { id: 1332, name: '宜黄县', code: 361026 },
+          { id: 1333, name: '金溪县', code: 361027 },
+          { id: 1334, name: '资溪县', code: 361028 },
+          { id: 1335, name: '东乡区', code: 361003 },
+          { id: 1336, name: '广昌县', code: 361030 }
+        ]
+      },
+      {
+        id: 1337,
+        name: '上饶市',
+        code: 361100,
+        parentOrganId: 1238,
+        areas: [
+          { id: 1338, name: '信州区', code: 361102 },
+          { id: 1339, name: '广丰区', code: 361103 },
+          { id: 1340, name: '上饶县', code: 361121 },
+          { id: 1341, name: '玉山县', code: 361123 },
+          { id: 1342, name: '铅山县', code: 361124 },
+          { id: 1343, name: '横峰县', code: 361125 },
+          { id: 1344, name: '弋阳县', code: 361126 },
+          { id: 1345, name: '余干县', code: 361127 },
+          { id: 1346, name: '鄱阳县', code: 361128 },
+          { id: 1347, name: '万年县', code: 361129 },
+          { id: 1348, name: '婺源县', code: 361130 },
+          { id: 1349, name: '德兴市', code: 361181 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 1350,
+    name: '山东省',
+    code: 370000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 1351,
+        name: '济南市',
+        code: 370100,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1352, name: '历下区', code: 370102 },
+          { id: 1353, name: '市中区', code: 370103 },
+          { id: 1354, name: '槐荫区', code: 370104 },
+          { id: 1355, name: '天桥区', code: 370105 },
+          { id: 1356, name: '历城区', code: 370112 },
+          { id: 1357, name: '长清区', code: 370113 },
+          { id: 1358, name: '平阴县', code: 370124 },
+          { id: 1359, name: '济阳县', code: 370125 },
+          { id: 1360, name: '商河县', code: 370126 },
+          { id: 1361, name: '章丘区', code: 370114 }
+        ]
+      },
+      {
+        id: 1362,
+        name: '青岛市',
+        code: 370200,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1363, name: '市南区', code: 370202 },
+          { id: 1364, name: '市北区', code: 370203 },
+          { id: 1365, name: '黄岛区', code: 370211 },
+          { id: 1366, name: '崂山区', code: 370212 },
+          { id: 1367, name: '李沧区', code: 370213 },
+          { id: 1368, name: '城阳区', code: 370214 },
+          { id: 1369, name: '胶州市', code: 370281 },
+          { id: 1370, name: '即墨市', code: 370282 },
+          { id: 1371, name: '平度市', code: 370283 },
+          { id: 1372, name: '莱西市', code: 370285 }
+        ]
+      },
+      {
+        id: 1373,
+        name: '淄博市',
+        code: 370300,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1374, name: '淄川区', code: 370302 },
+          { id: 1375, name: '张店区', code: 370303 },
+          { id: 1376, name: '博山区', code: 370304 },
+          { id: 1377, name: '临淄区', code: 370305 },
+          { id: 1378, name: '周村区', code: 370306 },
+          { id: 1379, name: '桓台县', code: 370321 },
+          { id: 1380, name: '高青县', code: 370322 },
+          { id: 1381, name: '沂源县', code: 370323 }
+        ]
+      },
+      {
+        id: 1382,
+        name: '枣庄市',
+        code: 370400,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1383, name: '市中区', code: 370402 },
+          { id: 1384, name: '薛城区', code: 370403 },
+          { id: 1385, name: '峄城区', code: 370404 },
+          { id: 1386, name: '台儿庄区', code: 370405 },
+          { id: 1387, name: '山亭区', code: 370406 },
+          { id: 1388, name: '滕州市', code: 370481 }
+        ]
+      },
+      {
+        id: 1389,
+        name: '东营市',
+        code: 370500,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1390, name: '东营区', code: 370502 },
+          { id: 1391, name: '河口区', code: 370503 },
+          { id: 1392, name: '垦利区', code: 370505 },
+          { id: 1393, name: '利津县', code: 370522 },
+          { id: 1394, name: '广饶县', code: 370523 }
+        ]
+      },
+      {
+        id: 1395,
+        name: '烟台市',
+        code: 370600,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1396, name: '芝罘区', code: 370602 },
+          { id: 1397, name: '福山区', code: 370611 },
+          { id: 1398, name: '牟平区', code: 370612 },
+          { id: 1399, name: '莱山区', code: 370613 },
+          { id: 1400, name: '长岛县', code: 370634 },
+          { id: 1401, name: '龙口市', code: 370681 },
+          { id: 1402, name: '莱阳市', code: 370682 },
+          { id: 1403, name: '莱州市', code: 370683 },
+          { id: 1404, name: '蓬莱市', code: 370684 },
+          { id: 1405, name: '招远市', code: 370685 },
+          { id: 1406, name: '栖霞市', code: 370686 },
+          { id: 1407, name: '海阳市', code: 370687 }
+        ]
+      },
+      {
+        id: 1408,
+        name: '潍坊市',
+        code: 370700,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1409, name: '潍城区', code: 370702 },
+          { id: 1410, name: '寒亭区', code: 370703 },
+          { id: 1411, name: '坊子区', code: 370704 },
+          { id: 1412, name: '奎文区', code: 370705 },
+          { id: 1413, name: '临朐县', code: 370724 },
+          { id: 1414, name: '昌乐县', code: 370725 },
+          { id: 1415, name: '青州市', code: 370781 },
+          { id: 1416, name: '诸城市', code: 370782 },
+          { id: 1417, name: '寿光市', code: 370783 },
+          { id: 1418, name: '安丘市', code: 370784 },
+          { id: 1419, name: '高密市', code: 370785 },
+          { id: 1420, name: '昌邑市', code: 370786 }
+        ]
+      },
+      {
+        id: 1421,
+        name: '济宁市',
+        code: 370800,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1422, name: '任城区', code: 370811 },
+          { id: 1423, name: '兖州区', code: 370812 },
+          { id: 1424, name: '微山县', code: 370826 },
+          { id: 1425, name: '鱼台县', code: 370827 },
+          { id: 1426, name: '金乡县', code: 370828 },
+          { id: 1427, name: '嘉祥县', code: 370829 },
+          { id: 1428, name: '汶上县', code: 370830 },
+          { id: 1429, name: '泗水县', code: 370831 },
+          { id: 1430, name: '梁山县', code: 370832 },
+          { id: 1431, name: '曲阜市', code: 370881 },
+          { id: 1432, name: '邹城市', code: 370883 }
+        ]
+      },
+      {
+        id: 1433,
+        name: '泰安市',
+        code: 370900,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1434, name: '泰山区', code: 370902 },
+          { id: 1435, name: '岱岳区', code: 370911 },
+          { id: 1436, name: '宁阳县', code: 370921 },
+          { id: 1437, name: '东平县', code: 370923 },
+          { id: 1438, name: '新泰市', code: 370982 },
+          { id: 1439, name: '肥城市', code: 370983 }
+        ]
+      },
+      {
+        id: 1440,
+        name: '威海市',
+        code: 371000,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1441, name: '环翠区', code: 371002 },
+          { id: 1442, name: '文登区', code: 371003 },
+          { id: 1443, name: '荣成市', code: 371082 },
+          { id: 1444, name: '乳山市', code: 371083 }
+        ]
+      },
+      {
+        id: 1445,
+        name: '日照市',
+        code: 371100,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1446, name: '东港区', code: 371102 },
+          { id: 1447, name: '岚山区', code: 371103 },
+          { id: 1448, name: '五莲县', code: 371121 },
+          { id: 1449, name: '莒县', code: 371122 }
+        ]
+      },
+      {
+        id: 1450,
+        name: '莱芜市',
+        code: 371200,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1451, name: '莱城区', code: 371202 },
+          { id: 1452, name: '钢城区', code: 371203 }
+        ]
+      },
+      {
+        id: 1453,
+        name: '临沂市',
+        code: 371300,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1454, name: '兰山区', code: 371302 },
+          { id: 1455, name: '罗庄区', code: 371311 },
+          { id: 1456, name: '河东区', code: 371312 },
+          { id: 1457, name: '沂南县', code: 371321 },
+          { id: 1458, name: '郯城县', code: 371322 },
+          { id: 1459, name: '沂水县', code: 371323 },
+          { id: 1460, name: '兰陵县', code: 371324 },
+          { id: 1461, name: '费县', code: 371325 },
+          { id: 1462, name: '平邑县', code: 371326 },
+          { id: 1463, name: '莒南县', code: 371327 },
+          { id: 1464, name: '蒙阴县', code: 371328 },
+          { id: 1465, name: '临沭县', code: 371329 }
+        ]
+      },
+      {
+        id: 1466,
+        name: '德州市',
+        code: 371400,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1467, name: '德城区', code: 371402 },
+          { id: 1468, name: '陵城区', code: 371403 },
+          { id: 1469, name: '宁津县', code: 371422 },
+          { id: 1470, name: '庆云县', code: 371423 },
+          { id: 1471, name: '临邑县', code: 371424 },
+          { id: 1472, name: '齐河县', code: 371425 },
+          { id: 1473, name: '平原县', code: 371426 },
+          { id: 1474, name: '夏津县', code: 371427 },
+          { id: 1475, name: '武城县', code: 371428 },
+          { id: 1476, name: '乐陵市', code: 371481 },
+          { id: 1477, name: '禹城市', code: 371482 }
+        ]
+      },
+      {
+        id: 1478,
+        name: '聊城市',
+        code: 371500,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1479, name: '东昌府区', code: 371502 },
+          { id: 1480, name: '阳谷县', code: 371521 },
+          { id: 1481, name: '莘县', code: 371522 },
+          { id: 1482, name: '茌平县', code: 371523 },
+          { id: 1483, name: '东阿县', code: 371524 },
+          { id: 1484, name: '冠县', code: 371525 },
+          { id: 1485, name: '高唐县', code: 371526 },
+          { id: 1486, name: '临清市', code: 371581 }
+        ]
+      },
+      {
+        id: 1487,
+        name: '滨州市',
+        code: 371600,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1488, name: '滨城区', code: 371602 },
+          { id: 1489, name: '沾化区', code: 371603 },
+          { id: 1490, name: '惠民县', code: 371621 },
+          { id: 1491, name: '阳信县', code: 371622 },
+          { id: 1492, name: '无棣县', code: 371623 },
+          { id: 1493, name: '博兴县', code: 371625 },
+          { id: 1494, name: '邹平县', code: 371626 }
+        ]
+      },
+      {
+        id: 1495,
+        name: '菏泽市',
+        code: 371700,
+        parentOrganId: 1350,
+        areas: [
+          { id: 1496, name: '牡丹区', code: 371702 },
+          { id: 1497, name: '定陶区', code: 371703 },
+          { id: 1498, name: '曹县', code: 371721 },
+          { id: 1499, name: '单县', code: 371722 },
+          { id: 1500, name: '成武县', code: 371723 },
+          { id: 1501, name: '巨野县', code: 371724 },
+          { id: 1502, name: '郓城县', code: 371725 },
+          { id: 1503, name: '鄄城县', code: 371726 },
+          { id: 1504, name: '东明县', code: 371728 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 1505,
+    name: '河南省',
+    code: 410000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 1506,
+        name: '郑州市',
+        code: 410100,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1507, name: '中原区', code: 410102 },
+          { id: 1508, name: '二七区', code: 410103 },
+          { id: 1509, name: '管城回族区', code: 410104 },
+          { id: 1510, name: '金水区', code: 410105 },
+          { id: 1511, name: '上街区', code: 410106 },
+          { id: 1512, name: '惠济区', code: 410108 },
+          { id: 1513, name: '中牟县', code: 410122 },
+          { id: 1514, name: '巩义市', code: 410181 },
+          { id: 1515, name: '荥阳市', code: 410182 },
+          { id: 1516, name: '新密市', code: 410183 },
+          { id: 1517, name: '新郑市', code: 410184 },
+          { id: 1518, name: '登封市', code: 410185 }
+        ]
+      },
+      {
+        id: 1519,
+        name: '开封市',
+        code: 410200,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1520, name: '龙亭区', code: 410202 },
+          { id: 1521, name: '顺河回族区', code: 410203 },
+          { id: 1522, name: '鼓楼区', code: 410204 },
+          { id: 1523, name: '禹王台区', code: 410205 },
+          { id: 1524, name: '祥符区', code: 410212 },
+          { id: 1525, name: '杞县', code: 410221 },
+          { id: 1526, name: '通许县', code: 410222 },
+          { id: 1527, name: '尉氏县', code: 410223 },
+          { id: 1528, name: '兰考县', code: 410225 }
+        ]
+      },
+      {
+        id: 1529,
+        name: '洛阳市',
+        code: 410300,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1530, name: '老城区', code: 410302 },
+          { id: 1531, name: '西工区', code: 410303 },
+          { id: 1532, name: '瀍河回族区', code: 410304 },
+          { id: 1533, name: '涧西区', code: 410305 },
+          { id: 1534, name: '吉利区', code: 410306 },
+          { id: 1535, name: '洛龙区', code: 410311 },
+          { id: 1536, name: '孟津县', code: 410322 },
+          { id: 1537, name: '新安县', code: 410323 },
+          { id: 1538, name: '栾川县', code: 410324 },
+          { id: 1539, name: '嵩县', code: 410325 },
+          { id: 1540, name: '汝阳县', code: 410326 },
+          { id: 1541, name: '宜阳县', code: 410327 },
+          { id: 1542, name: '洛宁县', code: 410328 },
+          { id: 1543, name: '伊川县', code: 410329 },
+          { id: 1544, name: '偃师市', code: 410381 }
+        ]
+      },
+      {
+        id: 1545,
+        name: '平顶山市',
+        code: 410400,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1546, name: '新华区', code: 410402 },
+          { id: 1547, name: '卫东区', code: 410403 },
+          { id: 1548, name: '石龙区', code: 410404 },
+          { id: 1549, name: '湛河区', code: 410411 },
+          { id: 1550, name: '宝丰县', code: 410421 },
+          { id: 1551, name: '叶县', code: 410422 },
+          { id: 1552, name: '鲁山县', code: 410423 },
+          { id: 1553, name: '郏县', code: 410425 },
+          { id: 1554, name: '舞钢市', code: 410481 },
+          { id: 1555, name: '汝州市', code: 410482 }
+        ]
+      },
+      {
+        id: 1556,
+        name: '安阳市',
+        code: 410500,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1557, name: '文峰区', code: 410502 },
+          { id: 1558, name: '北关区', code: 410503 },
+          { id: 1559, name: '殷都区', code: 410505 },
+          { id: 1560, name: '龙安区', code: 410506 },
+          { id: 1561, name: '安阳县', code: 410522 },
+          { id: 1562, name: '汤阴县', code: 410523 },
+          { id: 1563, name: '滑县', code: 410526 },
+          { id: 1564, name: '内黄县', code: 410527 },
+          { id: 1565, name: '林州市', code: 410581 }
+        ]
+      },
+      {
+        id: 1566,
+        name: '鹤壁市',
+        code: 410600,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1567, name: '鹤山区', code: 410602 },
+          { id: 1568, name: '山城区', code: 410603 },
+          { id: 1569, name: '淇滨区', code: 410611 },
+          { id: 1570, name: '浚县', code: 410621 },
+          { id: 1571, name: '淇县', code: 410622 }
+        ]
+      },
+      {
+        id: 1572,
+        name: '新乡市',
+        code: 410700,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1573, name: '红旗区', code: 410702 },
+          { id: 1574, name: '卫滨区', code: 410703 },
+          { id: 1575, name: '凤泉区', code: 410704 },
+          { id: 1576, name: '牧野区', code: 410711 },
+          { id: 1577, name: '新乡县', code: 410721 },
+          { id: 1578, name: '获嘉县', code: 410724 },
+          { id: 1579, name: '原阳县', code: 410725 },
+          { id: 1580, name: '延津县', code: 410726 },
+          { id: 1581, name: '封丘县', code: 410727 },
+          { id: 1582, name: '长垣县', code: 410728 },
+          { id: 1583, name: '卫辉市', code: 410781 },
+          { id: 1584, name: '辉县市', code: 410782 }
+        ]
+      },
+      {
+        id: 1585,
+        name: '焦作市',
+        code: 410800,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1586, name: '解放区', code: 410802 },
+          { id: 1587, name: '中站区', code: 410803 },
+          { id: 1588, name: '马村区', code: 410804 },
+          { id: 1589, name: '山阳区', code: 410811 },
+          { id: 1590, name: '修武县', code: 410821 },
+          { id: 1591, name: '博爱县', code: 410822 },
+          { id: 1592, name: '武陟县', code: 410823 },
+          { id: 1593, name: '温县', code: 410825 },
+          { id: 1594, name: '沁阳市', code: 410882 },
+          { id: 1595, name: '孟州市', code: 410883 }
+        ]
+      },
+      {
+        id: 1596,
+        name: '濮阳市',
+        code: 410900,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1597, name: '华龙区', code: 410902 },
+          { id: 1598, name: '清丰县', code: 410922 },
+          { id: 1599, name: '南乐县', code: 410923 },
+          { id: 1600, name: '范县', code: 410926 },
+          { id: 1601, name: '台前县', code: 410927 },
+          { id: 1602, name: '濮阳县', code: 410928 }
+        ]
+      },
+      {
+        id: 1603,
+        name: '许昌市',
+        code: 411000,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1604, name: '魏都区', code: 411002 },
+          { id: 1605, name: '建安区', code: 411003 },
+          { id: 1606, name: '鄢陵县', code: 411024 },
+          { id: 1607, name: '襄城县', code: 411025 },
+          { id: 1608, name: '禹州市', code: 411081 },
+          { id: 1609, name: '长葛市', code: 411082 }
+        ]
+      },
+      {
+        id: 1610,
+        name: '漯河市',
+        code: 411100,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1611, name: '源汇区', code: 411102 },
+          { id: 1612, name: '郾城区', code: 411103 },
+          { id: 1613, name: '召陵区', code: 411104 },
+          { id: 1614, name: '舞阳县', code: 411121 },
+          { id: 1615, name: '临颍县', code: 411122 }
+        ]
+      },
+      {
+        id: 1616,
+        name: '三门峡市',
+        code: 411200,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1617, name: '湖滨区', code: 411202 },
+          { id: 1618, name: '陕州区', code: 411203 },
+          { id: 1619, name: '渑池县', code: 411221 },
+          { id: 1620, name: '卢氏县', code: 411224 },
+          { id: 1621, name: '义马市', code: 411281 },
+          { id: 1622, name: '灵宝市', code: 411282 }
+        ]
+      },
+      {
+        id: 1623,
+        name: '南阳市',
+        code: 411300,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1624, name: '宛城区', code: 411302 },
+          { id: 1625, name: '卧龙区', code: 411303 },
+          { id: 1626, name: '南召县', code: 411321 },
+          { id: 1627, name: '方城县', code: 411322 },
+          { id: 1628, name: '西峡县', code: 411323 },
+          { id: 1629, name: '镇平县', code: 411324 },
+          { id: 1630, name: '内乡县', code: 411325 },
+          { id: 1631, name: '淅川县', code: 411326 },
+          { id: 1632, name: '社旗县', code: 411327 },
+          { id: 1633, name: '唐河县', code: 411328 },
+          { id: 1634, name: '新野县', code: 411329 },
+          { id: 1635, name: '桐柏县', code: 411330 },
+          { id: 1636, name: '邓州市', code: 411381 }
+        ]
+      },
+      {
+        id: 1637,
+        name: '商丘市',
+        code: 411400,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1638, name: '梁园区', code: 411402 },
+          { id: 1639, name: '睢阳区', code: 411403 },
+          { id: 1640, name: '民权县', code: 411421 },
+          { id: 1641, name: '睢县', code: 411422 },
+          { id: 1642, name: '宁陵县', code: 411423 },
+          { id: 1643, name: '柘城县', code: 411424 },
+          { id: 1644, name: '虞城县', code: 411425 },
+          { id: 1645, name: '夏邑县', code: 411426 },
+          { id: 1646, name: '永城市', code: 411481 }
+        ]
+      },
+      {
+        id: 1647,
+        name: '信阳市',
+        code: 411500,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1648, name: '浉河区', code: 411502 },
+          { id: 1649, name: '平桥区', code: 411503 },
+          { id: 1650, name: '罗山县', code: 411521 },
+          { id: 1651, name: '光山县', code: 411522 },
+          { id: 1652, name: '新县', code: 411523 },
+          { id: 1653, name: '商城县', code: 411524 },
+          { id: 1654, name: '固始县', code: 411525 },
+          { id: 1655, name: '潢川县', code: 411526 },
+          { id: 1656, name: '淮滨县', code: 411527 },
+          { id: 1657, name: '息县', code: 411528 }
+        ]
+      },
+      {
+        id: 1658,
+        name: '周口市',
+        code: 411600,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1659, name: '川汇区', code: 411602 },
+          { id: 1660, name: '扶沟县', code: 411621 },
+          { id: 1661, name: '西华县', code: 411622 },
+          { id: 1662, name: '商水县', code: 411623 },
+          { id: 1663, name: '沈丘县', code: 411624 },
+          { id: 1664, name: '郸城县', code: 411625 },
+          { id: 1665, name: '淮阳县', code: 411626 },
+          { id: 1666, name: '太康县', code: 411627 },
+          { id: 1667, name: '鹿邑县', code: 411628 },
+          { id: 1668, name: '项城市', code: 411681 }
+        ]
+      },
+      {
+        id: 1669,
+        name: '驻马店市',
+        code: 411700,
+        parentOrganId: 1505,
+        areas: [
+          { id: 1670, name: '驿城区', code: 411702 },
+          { id: 1671, name: '西平县', code: 411721 },
+          { id: 1672, name: '上蔡县', code: 411722 },
+          { id: 1673, name: '平舆县', code: 411723 },
+          { id: 1674, name: '正阳县', code: 411724 },
+          { id: 1675, name: '确山县', code: 411725 },
+          { id: 1676, name: '泌阳县', code: 411726 },
+          { id: 1677, name: '汝南县', code: 411727 },
+          { id: 1678, name: '遂平县', code: 411728 },
+          { id: 1679, name: '新蔡县', code: 411729 }
+        ]
+      },
+      { id: 1680, name: '济源市', code: 419001, parentOrganId: 1505 }
+    ]
+  },
+  {
+    id: 1681,
+    name: '湖北省',
+    code: 420000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 1682,
+        name: '武汉市',
+        code: 420100,
+        parentOrganId: 1681,
+        areas: [
+          { id: 1683, name: '江岸区', code: 420102 },
+          { id: 1684, name: '江汉区', code: 420103 },
+          { id: 1685, name: '硚口区', code: 420104 },
+          { id: 1686, name: '汉阳区', code: 420105 },
+          { id: 1687, name: '武昌区', code: 420106 },
+          { id: 1688, name: '青山区', code: 420107 },
+          { id: 1689, name: '洪山区', code: 420111 },
+          { id: 1690, name: '东西湖区', code: 420112 },
+          { id: 1691, name: '汉南区', code: 420113 },
+          { id: 1692, name: '蔡甸区', code: 420114 },
+          { id: 1693, name: '江夏区', code: 420115 },
+          { id: 1694, name: '黄陂区', code: 420116 },
+          { id: 1695, name: '新洲区', code: 420117 }
+        ]
+      },
+      {
+        id: 1696,
+        name: '黄石市',
+        code: 420200,
+        parentOrganId: 1681,
+        areas: [
+          { id: 1697, name: '黄石港区', code: 420202 },
+          { id: 1698, name: '西塞山区', code: 420203 },
+          { id: 1699, name: '下陆区', code: 420204 },
+          { id: 1700, name: '铁山区', code: 420205 },
+          { id: 1701, name: '阳新县', code: 420222 },
+          { id: 1702, name: '大冶市', code: 420281 }
+        ]
+      },
+      {
+        id: 1703,
+        name: '十堰市',
+        code: 420300,
+        parentOrganId: 1681,
+        areas: [
+          { id: 1704, name: '茅箭区', code: 420302 },
+          { id: 1705, name: '张湾区', code: 420303 },
+          { id: 1706, name: '郧阳区', code: 420304 },
+          { id: 1707, name: '郧西县', code: 420322 },
+          { id: 1708, name: '竹山县', code: 420323 },
+          { id: 1709, name: '竹溪县', code: 420324 },
+          { id: 1710, name: '房县', code: 420325 },
+          { id: 1711, name: '丹江口市', code: 420381 }
+        ]
+      },
+      {
+        id: 1712,
+        name: '宜昌市',
+        code: 420500,
+        parentOrganId: 1681,
+        areas: [
+          { id: 1713, name: '西陵区', code: 420502 },
+          { id: 1714, name: '伍家岗区', code: 420503 },
+          { id: 1715, name: '点军区', code: 420504 },
+          { id: 1716, name: '猇亭区', code: 420505 },
+          { id: 1717, name: '夷陵区', code: 420506 },
+          { id: 1718, name: '远安县', code: 420525 },
+          { id: 1719, name: '兴山县', code: 420526 },
+          { id: 1720, name: '秭归县', code: 420527 },
+          { id: 1721, name: '长阳土家族自治县', code: 420528 },
+          { id: 1722, name: '五峰土家族自治县', code: 420529 },
+          { id: 1723, name: '宜都市', code: 420581 },
+          { id: 1724, name: '当阳市', code: 420582 },
+          { id: 1725, name: '枝江市', code: 420583 }
+        ]
+      },
+      {
+        id: 1726,
+        name: '襄阳市',
+        code: 420600,
+        parentOrganId: 1681,
+        areas: [
+          { id: 1727, name: '襄城区', code: 420602 },
+          { id: 1728, name: '樊城区', code: 420606 },
+          { id: 1729, name: '襄州区', code: 420607 },
+          { id: 1730, name: '南漳县', code: 420624 },
+          { id: 1731, name: '谷城县', code: 420625 },
+          { id: 1732, name: '保康县', code: 420626 },
+          { id: 1733, name: '老河口市', code: 420682 },
+          { id: 1734, name: '枣阳市', code: 420683 },
+          { id: 1735, name: '宜城市', code: 420684 }
+        ]
+      },
+      {
+        id: 1736,
+        name: '鄂州市',
+        code: 420700,
+        parentOrganId: 1681,
+        areas: [
+          { id: 1737, name: '梁子湖区', code: 420702 },
+          { id: 1738, name: '华容区', code: 420703 },
+          { id: 1739, name: '鄂城区', code: 420704 }
+        ]
+      },
+      {
+        id: 1740,
+        name: '荆门市',
+        code: 420800,
+        parentOrganId: 1681,
+        areas: [
+          { id: 1741, name: '东宝区', code: 420802 },
+          { id: 1742, name: '掇刀区', code: 420804 },
+          { id: 1743, name: '京山县', code: 420821 },
+          { id: 1744, name: '沙洋县', code: 420822 },
+          { id: 1745, name: '钟祥市', code: 420881 }
+        ]
+      },
+      {
+        id: 1746,
+        name: '孝感市',
+        code: 420900,
+        parentOrganId: 1681,
+        areas: [
+          { id: 1747, name: '孝南区', code: 420902 },
+          { id: 1748, name: '孝昌县', code: 420921 },
+          { id: 1749, name: '大悟县', code: 420922 },
+          { id: 1750, name: '云梦县', code: 420923 },
+          { id: 1751, name: '应城市', code: 420981 },
+          { id: 1752, name: '安陆市', code: 420982 },
+          { id: 1753, name: '汉川市', code: 420984 }
+        ]
+      },
+      {
+        id: 1754,
+        name: '荆州市',
+        code: 421000,
+        parentOrganId: 1681,
+        areas: [
+          { id: 1755, name: '沙市区', code: 421002 },
+          { id: 1756, name: '荆州区', code: 421003 },
+          { id: 1757, name: '公安县', code: 421022 },
+          { id: 1758, name: '监利县', code: 421023 },
+          { id: 1759, name: '江陵县', code: 421024 },
+          { id: 1760, name: '石首市', code: 421081 },
+          { id: 1761, name: '洪湖市', code: 421083 },
+          { id: 1762, name: '松滋市', code: 421087 }
+        ]
+      },
+      {
+        id: 1763,
+        name: '黄冈市',
+        code: 421100,
+        parentOrganId: 1681,
+        areas: [
+          { id: 1764, name: '黄州区', code: 421102 },
+          { id: 1765, name: '团风县', code: 421121 },
+          { id: 1766, name: '红安县', code: 421122 },
+          { id: 1767, name: '罗田县', code: 421123 },
+          { id: 1768, name: '英山县', code: 421124 },
+          { id: 1769, name: '浠水县', code: 421125 },
+          { id: 1770, name: '蕲春县', code: 421126 },
+          { id: 1771, name: '黄梅县', code: 421127 },
+          { id: 1772, name: '麻城市', code: 421181 },
+          { id: 1773, name: '武穴市', code: 421182 }
+        ]
+      },
+      {
+        id: 1774,
+        name: '咸宁市',
+        code: 421200,
+        parentOrganId: 1681,
+        areas: [
+          { id: 1775, name: '咸安区', code: 421202 },
+          { id: 1776, name: '嘉鱼县', code: 421221 },
+          { id: 1777, name: '通城县', code: 421222 },
+          { id: 1778, name: '崇阳县', code: 421223 },
+          { id: 1779, name: '通山县', code: 421224 },
+          { id: 1780, name: '赤壁市', code: 421281 }
+        ]
+      },
+      {
+        id: 1781,
+        name: '随州市',
+        code: 421300,
+        parentOrganId: 1681,
+        areas: [
+          { id: 1782, name: '曾都区', code: 421303 },
+          { id: 1783, name: '随县', code: 421321 },
+          { id: 1784, name: '广水市', code: 421381 }
+        ]
+      },
+      {
+        id: 1785,
+        name: '恩施土家族苗族自治州',
+        code: 422800,
+        parentOrganId: 1681,
+        areas: [
+          { id: 1786, name: '恩施市', code: 422801 },
+          { id: 1787, name: '利川市', code: 422802 },
+          { id: 1788, name: '建始县', code: 422822 },
+          { id: 1789, name: '巴东县', code: 422823 },
+          { id: 1790, name: '宣恩县', code: 422825 },
+          { id: 1791, name: '咸丰县', code: 422826 },
+          { id: 1792, name: '来凤县', code: 422827 },
+          { id: 1793, name: '鹤峰县', code: 422828 }
+        ]
+      },
+      { id: 1794, name: '潜江市', code: 429005, parentOrganId: 1681 },
+      { id: 1795, name: '神农架林区', code: 429021, parentOrganId: 1681 },
+      { id: 1796, name: '天门市', code: 429006, parentOrganId: 1681 },
+      { id: 1797, name: '仙桃市', code: 429004, parentOrganId: 1681 }
+    ]
+  },
+  {
+    id: 1798,
+    name: '湖南省',
+    code: 430000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 1799,
+        name: '长沙市',
+        code: 430100,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1800, name: '芙蓉区', code: 430102 },
+          { id: 1801, name: '天心区', code: 430103 },
+          { id: 1802, name: '岳麓区', code: 430104 },
+          { id: 1803, name: '开福区', code: 430105 },
+          { id: 1804, name: '雨花区', code: 430111 },
+          { id: 1805, name: '望城区', code: 430112 },
+          { id: 1806, name: '长沙县', code: 430121 },
+          { id: 1807, name: '宁乡市', code: 430124 },
+          { id: 1808, name: '浏阳市', code: 430181 }
+        ]
+      },
+      {
+        id: 1809,
+        name: '株洲市',
+        code: 430200,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1810, name: '荷塘区', code: 430202 },
+          { id: 1811, name: '芦淞区', code: 430203 },
+          { id: 1812, name: '石峰区', code: 430204 },
+          { id: 1813, name: '天元区', code: 430211 },
+          { id: 1814, name: '株洲县', code: 430221 },
+          { id: 1815, name: '攸县', code: 430223 },
+          { id: 1816, name: '茶陵县', code: 430224 },
+          { id: 1817, name: '炎陵县', code: 430225 },
+          { id: 1818, name: '醴陵市', code: 430281 }
+        ]
+      },
+      {
+        id: 1819,
+        name: '湘潭市',
+        code: 430300,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1820, name: '雨湖区', code: 430302 },
+          { id: 1821, name: '岳塘区', code: 430304 },
+          { id: 1822, name: '湘潭县', code: 430321 },
+          { id: 1823, name: '湘乡市', code: 430381 },
+          { id: 1824, name: '韶山市', code: 430382 }
+        ]
+      },
+      {
+        id: 1825,
+        name: '衡阳市',
+        code: 430400,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1826, name: '珠晖区', code: 430405 },
+          { id: 1827, name: '雁峰区', code: 430406 },
+          { id: 1828, name: '石鼓区', code: 430407 },
+          { id: 1829, name: '蒸湘区', code: 430408 },
+          { id: 1830, name: '南岳区', code: 430412 },
+          { id: 1831, name: '衡阳县', code: 430421 },
+          { id: 1832, name: '衡南县', code: 430422 },
+          { id: 1833, name: '衡山县', code: 430423 },
+          { id: 1834, name: '衡东县', code: 430424 },
+          { id: 1835, name: '祁东县', code: 430426 },
+          { id: 1836, name: '耒阳市', code: 430481 },
+          { id: 1837, name: '常宁市', code: 430482 }
+        ]
+      },
+      {
+        id: 1838,
+        name: '邵阳市',
+        code: 430500,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1839, name: '双清区', code: 430502 },
+          { id: 1840, name: '大祥区', code: 430503 },
+          { id: 1841, name: '北塔区', code: 430511 },
+          { id: 1842, name: '邵东县', code: 430521 },
+          { id: 1843, name: '新邵县', code: 430522 },
+          { id: 1844, name: '邵阳县', code: 430523 },
+          { id: 1845, name: '隆回县', code: 430524 },
+          { id: 1846, name: '洞口县', code: 430525 },
+          { id: 1847, name: '绥宁县', code: 430527 },
+          { id: 1848, name: '新宁县', code: 430528 },
+          { id: 1849, name: '城步苗族自治县', code: 430529 },
+          { id: 1850, name: '武冈市', code: 430581 }
+        ]
+      },
+      {
+        id: 1851,
+        name: '岳阳市',
+        code: 430600,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1852, name: '岳阳楼区', code: 430602 },
+          { id: 1853, name: '云溪区', code: 430603 },
+          { id: 1854, name: '君山区', code: 430611 },
+          { id: 1855, name: '岳阳县', code: 430621 },
+          { id: 1856, name: '华容县', code: 430623 },
+          { id: 1857, name: '湘阴县', code: 430624 },
+          { id: 1858, name: '平江县', code: 430626 },
+          { id: 1859, name: '汨罗市', code: 430681 },
+          { id: 1860, name: '临湘市', code: 430682 }
+        ]
+      },
+      {
+        id: 1861,
+        name: '常德市',
+        code: 430700,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1862, name: '武陵区', code: 430702 },
+          { id: 1863, name: '鼎城区', code: 430703 },
+          { id: 1864, name: '安乡县', code: 430721 },
+          { id: 1865, name: '汉寿县', code: 430722 },
+          { id: 1866, name: '澧县', code: 430723 },
+          { id: 1867, name: '临澧县', code: 430724 },
+          { id: 1868, name: '桃源县', code: 430725 },
+          { id: 1869, name: '石门县', code: 430726 },
+          { id: 1870, name: '津市市', code: 430781 }
+        ]
+      },
+      {
+        id: 1871,
+        name: '张家界市',
+        code: 430800,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1872, name: '永定区', code: 430802 },
+          { id: 1873, name: '武陵源区', code: 430811 },
+          { id: 1874, name: '慈利县', code: 430821 },
+          { id: 1875, name: '桑植县', code: 430822 }
+        ]
+      },
+      {
+        id: 1876,
+        name: '益阳市',
+        code: 430900,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1877, name: '资阳区', code: 430902 },
+          { id: 1878, name: '赫山区', code: 430903 },
+          { id: 1879, name: '南县', code: 430921 },
+          { id: 1880, name: '桃江县', code: 430922 },
+          { id: 1881, name: '安化县', code: 430923 },
+          { id: 1882, name: '沅江市', code: 430981 }
+        ]
+      },
+      {
+        id: 1883,
+        name: '郴州市',
+        code: 431000,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1884, name: '北湖区', code: 431002 },
+          { id: 1885, name: '苏仙区', code: 431003 },
+          { id: 1886, name: '桂阳县', code: 431021 },
+          { id: 1887, name: '宜章县', code: 431022 },
+          { id: 1888, name: '永兴县', code: 431023 },
+          { id: 1889, name: '嘉禾县', code: 431024 },
+          { id: 1890, name: '临武县', code: 431025 },
+          { id: 1891, name: '汝城县', code: 431026 },
+          { id: 1892, name: '桂东县', code: 431027 },
+          { id: 1893, name: '安仁县', code: 431028 },
+          { id: 1894, name: '资兴市', code: 431081 }
+        ]
+      },
+      {
+        id: 1895,
+        name: '永州市',
+        code: 431100,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1896, name: '零陵区', code: 431102 },
+          { id: 1897, name: '冷水滩区', code: 431103 },
+          { id: 1898, name: '祁阳县', code: 431121 },
+          { id: 1899, name: '东安县', code: 431122 },
+          { id: 1900, name: '双牌县', code: 431123 },
+          { id: 1901, name: '道县', code: 431124 },
+          { id: 1902, name: '江永县', code: 431125 },
+          { id: 1903, name: '宁远县', code: 431126 },
+          { id: 1904, name: '蓝山县', code: 431127 },
+          { id: 1905, name: '新田县', code: 431128 },
+          { id: 1906, name: '江华瑶族自治县', code: 431129 }
+        ]
+      },
+      {
+        id: 1907,
+        name: '怀化市',
+        code: 431200,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1908, name: '鹤城区', code: 431202 },
+          { id: 1909, name: '中方县', code: 431221 },
+          { id: 1910, name: '沅陵县', code: 431222 },
+          { id: 1911, name: '辰溪县', code: 431223 },
+          { id: 1912, name: '溆浦县', code: 431224 },
+          { id: 1913, name: '会同县', code: 431225 },
+          { id: 1914, name: '麻阳苗族自治县', code: 431226 },
+          { id: 1915, name: '新晃侗族自治县', code: 431227 },
+          { id: 1916, name: '芷江侗族自治县', code: 431228 },
+          { id: 1917, name: '靖州苗族侗族自治县', code: 431229 },
+          { id: 1918, name: '通道侗族自治县', code: 431230 },
+          { id: 1919, name: '洪江市', code: 431281 }
+        ]
+      },
+      {
+        id: 1920,
+        name: '娄底市',
+        code: 431300,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1921, name: '娄星区', code: 431302 },
+          { id: 1922, name: '双峰县', code: 431321 },
+          { id: 1923, name: '新化县', code: 431322 },
+          { id: 1924, name: '冷水江市', code: 431381 },
+          { id: 1925, name: '涟源市', code: 431382 }
+        ]
+      },
+      {
+        id: 1926,
+        name: '湘西土家族苗族自治州',
+        code: 433100,
+        parentOrganId: 1798,
+        areas: [
+          { id: 1927, name: '吉首市', code: 433101 },
+          { id: 1928, name: '泸溪县', code: 433122 },
+          { id: 1929, name: '凤凰县', code: 433123 },
+          { id: 1930, name: '花垣县', code: 433124 },
+          { id: 1931, name: '保靖县', code: 433125 },
+          { id: 1932, name: '古丈县', code: 433126 },
+          { id: 1933, name: '永顺县', code: 433127 },
+          { id: 1934, name: '龙山县', code: 433130 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 1935,
+    name: '广东省',
+    code: 440000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 1936,
+        name: '广州市',
+        code: 440100,
+        parentOrganId: 1935,
+        areas: [
+          { id: 1937, name: '荔湾区', code: 440103 },
+          { id: 1938, name: '越秀区', code: 440104 },
+          { id: 1939, name: '海珠区', code: 440105 },
+          { id: 1940, name: '天河区', code: 440106 },
+          { id: 1941, name: '白云区', code: 440111 },
+          { id: 1942, name: '黄埔区', code: 440112 },
+          { id: 1943, name: '番禺区', code: 440113 },
+          { id: 1944, name: '花都区', code: 440114 },
+          { id: 1945, name: '南沙区', code: 440115 },
+          { id: 1946, name: '从化区', code: 440117 },
+          { id: 1947, name: '增城区', code: 440118 }
+        ]
+      },
+      {
+        id: 1948,
+        name: '韶关市',
+        code: 440200,
+        parentOrganId: 1935,
+        areas: [
+          { id: 1949, name: '武江区', code: 440203 },
+          { id: 1950, name: '浈江区', code: 440204 },
+          { id: 1951, name: '曲江区', code: 440205 },
+          { id: 1952, name: '始兴县', code: 440222 },
+          { id: 1953, name: '仁化县', code: 440224 },
+          { id: 1954, name: '翁源县', code: 440229 },
+          { id: 1955, name: '乳源瑶族自治县', code: 440232 },
+          { id: 1956, name: '新丰县', code: 440233 },
+          { id: 1957, name: '乐昌市', code: 440281 },
+          { id: 1958, name: '南雄市', code: 440282 }
+        ]
+      },
+      {
+        id: 1959,
+        name: '深圳市',
+        code: 440300,
+        parentOrganId: 1935,
+        areas: [
+          { id: 1960, name: '罗湖区', code: 440303 },
+          { id: 1961, name: '福田区', code: 440304 },
+          { id: 1962, name: '南山区', code: 440305 },
+          { id: 1963, name: '宝安区', code: 440306 },
+          { id: 1964, name: '龙岗区', code: 440307 },
+          { id: 1965, name: '盐田区', code: 440308 },
+          { id: 1966, name: '龙华区', code: 440309 },
+          { id: 1967, name: '坪山区', code: 440310 }
+        ]
+      },
+      {
+        id: 1968,
+        name: '珠海市',
+        code: 440400,
+        parentOrganId: 1935,
+        areas: [
+          { id: 1969, name: '香洲区', code: 440402 },
+          { id: 1970, name: '斗门区', code: 440403 },
+          { id: 1971, name: '金湾区', code: 440404 }
+        ]
+      },
+      {
+        id: 1972,
+        name: '汕头市',
+        code: 440500,
+        parentOrganId: 1935,
+        areas: [
+          { id: 1973, name: '龙湖区', code: 440507 },
+          { id: 1974, name: '金平区', code: 440511 },
+          { id: 1975, name: '濠江区', code: 440512 },
+          { id: 1976, name: '潮阳区', code: 440513 },
+          { id: 1977, name: '潮南区', code: 440514 },
+          { id: 1978, name: '澄海区', code: 440515 },
+          { id: 1979, name: '南澳县', code: 440523 }
+        ]
+      },
+      {
+        id: 1980,
+        name: '佛山市',
+        code: 440600,
+        parentOrganId: 1935,
+        areas: [
+          { id: 1981, name: '禅城区', code: 440604 },
+          { id: 1982, name: '南海区', code: 440605 },
+          { id: 1983, name: '顺德区', code: 440606 },
+          { id: 1984, name: '三水区', code: 440607 },
+          { id: 1985, name: '高明区', code: 440608 }
+        ]
+      },
+      {
+        id: 1986,
+        name: '江门市',
+        code: 440700,
+        parentOrganId: 1935,
+        areas: [
+          { id: 1987, name: '蓬江区', code: 440703 },
+          { id: 1988, name: '江海区', code: 440704 },
+          { id: 1989, name: '新会区', code: 440705 },
+          { id: 1990, name: '台山市', code: 440781 },
+          { id: 1991, name: '开平市', code: 440783 },
+          { id: 1992, name: '鹤山市', code: 440784 },
+          { id: 1993, name: '恩平市', code: 440785 }
+        ]
+      },
+      {
+        id: 1994,
+        name: '湛江市',
+        code: 440800,
+        parentOrganId: 1935,
+        areas: [
+          { id: 1995, name: '赤坎区', code: 440802 },
+          { id: 1996, name: '霞山区', code: 440803 },
+          { id: 1997, name: '坡头区', code: 440804 },
+          { id: 1998, name: '麻章区', code: 440811 },
+          { id: 1999, name: '遂溪县', code: 440823 },
+          { id: 2000, name: '徐闻县', code: 440825 },
+          { id: 2001, name: '廉江市', code: 440881 },
+          { id: 2002, name: '雷州市', code: 440882 },
+          { id: 2003, name: '吴川市', code: 440883 }
+        ]
+      },
+      {
+        id: 2004,
+        name: '茂名市',
+        code: 440900,
+        parentOrganId: 1935,
+        areas: [
+          { id: 2005, name: '茂南区', code: 440902 },
+          { id: 2006, name: '电白区', code: 440904 },
+          { id: 2007, name: '高州市', code: 440981 },
+          { id: 2008, name: '化州市', code: 440982 },
+          { id: 2009, name: '信宜市', code: 440983 }
+        ]
+      },
+      {
+        id: 2010,
+        name: '肇庆市',
+        code: 441200,
+        parentOrganId: 1935,
+        areas: [
+          { id: 2011, name: '端州区', code: 441202 },
+          { id: 2012, name: '鼎湖区', code: 441203 },
+          { id: 2013, name: '高要区', code: 441204 },
+          { id: 2014, name: '广宁县', code: 441223 },
+          { id: 2015, name: '怀集县', code: 441224 },
+          { id: 2016, name: '封开县', code: 441225 },
+          { id: 2017, name: '德庆县', code: 441226 },
+          { id: 2018, name: '四会市', code: 441284 }
+        ]
+      },
+      {
+        id: 2019,
+        name: '惠州市',
+        code: 441300,
+        parentOrganId: 1935,
+        areas: [
+          { id: 2020, name: '惠城区', code: 441302 },
+          { id: 2021, name: '惠阳区', code: 441303 },
+          { id: 2022, name: '博罗县', code: 441322 },
+          { id: 2023, name: '惠东县', code: 441323 },
+          { id: 2024, name: '龙门县', code: 441324 }
+        ]
+      },
+      {
+        id: 2025,
+        name: '梅州市',
+        code: 441400,
+        parentOrganId: 1935,
+        areas: [
+          { id: 2026, name: '梅江区', code: 441402 },
+          { id: 2027, name: '梅县区', code: 441403 },
+          { id: 2028, name: '大埔县', code: 441422 },
+          { id: 2029, name: '丰顺县', code: 441423 },
+          { id: 2030, name: '五华县', code: 441424 },
+          { id: 2031, name: '平远县', code: 441426 },
+          { id: 2032, name: '蕉岭县', code: 441427 },
+          { id: 2033, name: '兴宁市', code: 441481 }
+        ]
+      },
+      {
+        id: 2034,
+        name: '汕尾市',
+        code: 441500,
+        parentOrganId: 1935,
+        areas: [
+          { id: 2035, name: '城区', code: 441502 },
+          { id: 2036, name: '海丰县', code: 441521 },
+          { id: 2037, name: '陆河县', code: 441523 },
+          { id: 2038, name: '陆丰市', code: 441581 }
+        ]
+      },
+      {
+        id: 2039,
+        name: '河源市',
+        code: 441600,
+        parentOrganId: 1935,
+        areas: [
+          { id: 2040, name: '源城区', code: 441602 },
+          { id: 2041, name: '紫金县', code: 441621 },
+          { id: 2042, name: '龙川县', code: 441622 },
+          { id: 2043, name: '连平县', code: 441623 },
+          { id: 2044, name: '和平县', code: 441624 },
+          { id: 2045, name: '东源县', code: 441625 }
+        ]
+      },
+      {
+        id: 2046,
+        name: '阳江市',
+        code: 441700,
+        parentOrganId: 1935,
+        areas: [
+          { id: 2047, name: '江城区', code: 441702 },
+          { id: 2048, name: '阳东区', code: 441704 },
+          { id: 2049, name: '阳西县', code: 441721 },
+          { id: 2050, name: '阳春市', code: 441781 }
+        ]
+      },
+      {
+        id: 2051,
+        name: '清远市',
+        code: 441800,
+        parentOrganId: 1935,
+        areas: [
+          { id: 2052, name: '清城区', code: 441802 },
+          { id: 2053, name: '清新区', code: 441803 },
+          { id: 2054, name: '佛冈县', code: 441821 },
+          { id: 2055, name: '阳山县', code: 441823 },
+          { id: 2056, name: '连山壮族瑶族自治县', code: 441825 },
+          { id: 2057, name: '连南瑶族自治县', code: 441826 },
+          { id: 2058, name: '英德市', code: 441881 },
+          { id: 2059, name: '连州市', code: 441882 }
+        ]
+      },
+      { id: 2060, name: '东莞市', code: 441900, parentOrganId: 1935 },
+      { id: 2061, name: '中山市', code: 442000, parentOrganId: 1935 },
+      {
+        id: 2062,
+        name: '潮州市',
+        code: 445100,
+        parentOrganId: 1935,
+        areas: [
+          { id: 2063, name: '湘桥区', code: 445102 },
+          { id: 2064, name: '潮安区', code: 445103 },
+          { id: 2065, name: '饶平县', code: 445122 }
+        ]
+      },
+      {
+        id: 2066,
+        name: '揭阳市',
+        code: 445200,
+        parentOrganId: 1935,
+        areas: [
+          { id: 2067, name: '榕城区', code: 445202 },
+          { id: 2068, name: '揭东区', code: 445203 },
+          { id: 2069, name: '揭西县', code: 445222 },
+          { id: 2070, name: '惠来县', code: 445224 },
+          { id: 2071, name: '普宁市', code: 445281 }
+        ]
+      },
+      {
+        id: 2072,
+        name: '云浮市',
+        code: 445300,
+        parentOrganId: 1935,
+        areas: [
+          { id: 2073, name: '云城区', code: 445302 },
+          { id: 2074, name: '云安区', code: 445303 },
+          { id: 2075, name: '新兴县', code: 445321 },
+          { id: 2076, name: '郁南县', code: 445322 },
+          { id: 2077, name: '罗定市', code: 445381 }
+        ]
+      },
+      { id: 2078, name: '东沙群岛', code: 442100, parentOrganId: 1935 }
+    ]
+  },
+  {
+    id: 2079,
+    name: '广西壮族自治区',
+    code: 450000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 2080,
+        name: '南宁市',
+        code: 450100,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2081, name: '兴宁区', code: 450102 },
+          { id: 2082, name: '青秀区', code: 450103 },
+          { id: 2083, name: '江南区', code: 450105 },
+          { id: 2084, name: '西乡塘区', code: 450107 },
+          { id: 2085, name: '良庆区', code: 450108 },
+          { id: 2086, name: '邕宁区', code: 450109 },
+          { id: 2087, name: '武鸣区', code: 450110 },
+          { id: 2088, name: '隆安县', code: 450123 },
+          { id: 2089, name: '马山县', code: 450124 },
+          { id: 2090, name: '上林县', code: 450125 },
+          { id: 2091, name: '宾阳县', code: 450126 },
+          { id: 2092, name: '横县', code: 450127 }
+        ]
+      },
+      {
+        id: 2093,
+        name: '柳州市',
+        code: 450200,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2094, name: '城中区', code: 450202 },
+          { id: 2095, name: '鱼峰区', code: 450203 },
+          { id: 2096, name: '柳南区', code: 450204 },
+          { id: 2097, name: '柳北区', code: 450205 },
+          { id: 2098, name: '柳江区', code: 450206 },
+          { id: 2099, name: '柳城县', code: 450222 },
+          { id: 2100, name: '鹿寨县', code: 450223 },
+          { id: 2101, name: '融安县', code: 450224 },
+          { id: 2102, name: '融水苗族自治县', code: 450225 },
+          { id: 2103, name: '三江侗族自治县', code: 450226 }
+        ]
+      },
+      {
+        id: 2104,
+        name: '桂林市',
+        code: 450300,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2105, name: '秀峰区', code: 450302 },
+          { id: 2106, name: '叠彩区', code: 450303 },
+          { id: 2107, name: '象山区', code: 450304 },
+          { id: 2108, name: '七星区', code: 450305 },
+          { id: 2109, name: '雁山区', code: 450311 },
+          { id: 2110, name: '临桂区', code: 450312 },
+          { id: 2111, name: '阳朔县', code: 450321 },
+          { id: 2112, name: '灵川县', code: 450323 },
+          { id: 2113, name: '全州县', code: 450324 },
+          { id: 2114, name: '兴安县', code: 450325 },
+          { id: 2115, name: '永福县', code: 450326 },
+          { id: 2116, name: '灌阳县', code: 450327 },
+          { id: 2117, name: '龙胜各族自治县', code: 450328 },
+          { id: 2118, name: '资源县', code: 450329 },
+          { id: 2119, name: '平乐县', code: 450330 },
+          { id: 2120, name: '荔浦县', code: 450331 },
+          { id: 2121, name: '恭城瑶族自治县', code: 450332 }
+        ]
+      },
+      {
+        id: 2122,
+        name: '梧州市',
+        code: 450400,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2123, name: '万秀区', code: 450403 },
+          { id: 2124, name: '长洲区', code: 450405 },
+          { id: 2125, name: '龙圩区', code: 450406 },
+          { id: 2126, name: '苍梧县', code: 450421 },
+          { id: 2127, name: '藤县', code: 450422 },
+          { id: 2128, name: '蒙山县', code: 450423 },
+          { id: 2129, name: '岑溪市', code: 450481 }
+        ]
+      },
+      {
+        id: 2130,
+        name: '北海市',
+        code: 450500,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2131, name: '海城区', code: 450502 },
+          { id: 2132, name: '银海区', code: 450503 },
+          { id: 2133, name: '铁山港区', code: 450512 },
+          { id: 2134, name: '合浦县', code: 450521 }
+        ]
+      },
+      {
+        id: 2135,
+        name: '防城港市',
+        code: 450600,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2136, name: '港口区', code: 450602 },
+          { id: 2137, name: '防城区', code: 450603 },
+          { id: 2138, name: '上思县', code: 450621 },
+          { id: 2139, name: '东兴市', code: 450681 }
+        ]
+      },
+      {
+        id: 2140,
+        name: '钦州市',
+        code: 450700,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2141, name: '钦南区', code: 450702 },
+          { id: 2142, name: '钦北区', code: 450703 },
+          { id: 2143, name: '灵山县', code: 450721 },
+          { id: 2144, name: '浦北县', code: 450722 }
+        ]
+      },
+      {
+        id: 2145,
+        name: '贵港市',
+        code: 450800,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2146, name: '港北区', code: 450802 },
+          { id: 2147, name: '港南区', code: 450803 },
+          { id: 2148, name: '覃塘区', code: 450804 },
+          { id: 2149, name: '平南县', code: 450821 },
+          { id: 2150, name: '桂平市', code: 450881 }
+        ]
+      },
+      {
+        id: 2151,
+        name: '玉林市',
+        code: 450900,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2152, name: '玉州区', code: 450902 },
+          { id: 2153, name: '福绵区', code: 450903 },
+          { id: 2154, name: '容县', code: 450921 },
+          { id: 2155, name: '陆川县', code: 450922 },
+          { id: 2156, name: '博白县', code: 450923 },
+          { id: 2157, name: '兴业县', code: 450924 },
+          { id: 2158, name: '北流市', code: 450981 }
+        ]
+      },
+      {
+        id: 2159,
+        name: '百色市',
+        code: 451000,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2160, name: '右江区', code: 451002 },
+          { id: 2161, name: '田阳县', code: 451021 },
+          { id: 2162, name: '田东县', code: 451022 },
+          { id: 2163, name: '平果县', code: 451023 },
+          { id: 2164, name: '德保县', code: 451024 },
+          { id: 2165, name: '那坡县', code: 451026 },
+          { id: 2166, name: '凌云县', code: 451027 },
+          { id: 2167, name: '乐业县', code: 451028 },
+          { id: 2168, name: '田林县', code: 451029 },
+          { id: 2169, name: '西林县', code: 451030 },
+          { id: 2170, name: '隆林各族自治县', code: 451031 },
+          { id: 2171, name: '靖西市', code: 451081 }
+        ]
+      },
+      {
+        id: 2172,
+        name: '贺州市',
+        code: 451100,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2173, name: '八步区', code: 451102 },
+          { id: 2174, name: '平桂区', code: 451103 },
+          { id: 2175, name: '昭平县', code: 451121 },
+          { id: 2176, name: '钟山县', code: 451122 },
+          { id: 2177, name: '富川瑶族自治县', code: 451123 }
+        ]
+      },
+      {
+        id: 2178,
+        name: '河池市',
+        code: 451200,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2179, name: '金城江区', code: 451202 },
+          { id: 2180, name: '南丹县', code: 451221 },
+          { id: 2181, name: '天峨县', code: 451222 },
+          { id: 2182, name: '凤山县', code: 451223 },
+          { id: 2183, name: '东兰县', code: 451224 },
+          { id: 2184, name: '罗城仫佬族自治县', code: 451225 },
+          { id: 2185, name: '环江毛南族自治县', code: 451226 },
+          { id: 2186, name: '巴马瑶族自治县', code: 451227 },
+          { id: 2187, name: '都安瑶族自治县', code: 451228 },
+          { id: 2188, name: '大化瑶族自治县', code: 451229 },
+          { id: 2189, name: '宜州区', code: 451203 }
+        ]
+      },
+      {
+        id: 2190,
+        name: '来宾市',
+        code: 451300,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2191, name: '兴宾区', code: 451302 },
+          { id: 2192, name: '忻城县', code: 451321 },
+          { id: 2193, name: '象州县', code: 451322 },
+          { id: 2194, name: '武宣县', code: 451323 },
+          { id: 2195, name: '金秀瑶族自治县', code: 451324 },
+          { id: 2196, name: '合山市', code: 451381 }
+        ]
+      },
+      {
+        id: 2197,
+        name: '崇左市',
+        code: 451400,
+        parentOrganId: 2079,
+        areas: [
+          { id: 2198, name: '江州区', code: 451402 },
+          { id: 2199, name: '扶绥县', code: 451421 },
+          { id: 2200, name: '宁明县', code: 451422 },
+          { id: 2201, name: '龙州县', code: 451423 },
+          { id: 2202, name: '大新县', code: 451424 },
+          { id: 2203, name: '天等县', code: 451425 },
+          { id: 2204, name: '凭祥市', code: 451481 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 2205,
+    name: '海南省',
+    code: 460000,
+    parentOrganId: 0,
+    areas: [
+      { id: 2206, name: '白沙黎族自治县', code: 469025, parentOrganId: 2205 },
+      { id: 2207, name: '保亭黎族苗族自治县', code: 469029, parentOrganId: 2205 },
+      { id: 2208, name: '昌江黎族自治县', code: 469026, parentOrganId: 2205 },
+      { id: 2209, name: '澄迈县', code: 469023, parentOrganId: 2205 },
+      {
+        id: 2210,
+        name: '海口市',
+        code: 460100,
+        parentOrganId: 2205,
+        areas: [
+          { id: 2211, name: '秀英区', code: 460105 },
+          { id: 2212, name: '龙华区', code: 460106 },
+          { id: 2213, name: '琼山区', code: 460107 },
+          { id: 2214, name: '美兰区', code: 460108 }
+        ]
+      },
+      {
+        id: 2215,
+        name: '三亚市',
+        code: 460200,
+        parentOrganId: 2205,
+        areas: [
+          { id: 2216, name: '海棠区', code: 460202 },
+          { id: 2217, name: '吉阳区', code: 460203 },
+          { id: 2218, name: '天涯区', code: 460204 },
+          { id: 2219, name: '崖州区', code: 460205 }
+        ]
+      },
+      {
+        id: 2220,
+        name: '三沙市',
+        code: 460300,
+        parentOrganId: 2205,
+        areas: [
+          { id: 2221, name: '西沙群岛', code: 460321 },
+          { id: 2222, name: '南沙群岛', code: 460322 },
+          { id: 2223, name: '中沙群岛的岛礁及其海域', code: 460323 }
+        ]
+      },
+      { id: 2224, name: '儋州市', code: 460400, parentOrganId: 2205 },
+      { id: 2225, name: '定安县', code: 469021, parentOrganId: 2205 },
+      { id: 2226, name: '东方市', code: 469007, parentOrganId: 2205 },
+      { id: 2227, name: '乐东黎族自治县', code: 469027, parentOrganId: 2205 },
+      { id: 2228, name: '临高县', code: 469024, parentOrganId: 2205 },
+      { id: 2229, name: '陵水黎族自治县', code: 469028, parentOrganId: 2205 },
+      { id: 2230, name: '琼海市', code: 469002, parentOrganId: 2205 },
+      { id: 2231, name: '琼中黎族苗族自治县', code: 469030, parentOrganId: 2205 },
+      { id: 2232, name: '屯昌县', code: 469022, parentOrganId: 2205 },
+      { id: 2233, name: '万宁市', code: 469006, parentOrganId: 2205 },
+      { id: 2234, name: '文昌市', code: 469005, parentOrganId: 2205 },
+      { id: 2235, name: '五指山市', code: 469001, parentOrganId: 2205 }
+    ]
+  },
+  {
+    id: 2236,
+    name: '重庆市',
+    code: 500000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 2237,
+        name: '重庆城区',
+        code: 500100,
+        parentOrganId: 2236,
+        areas: [
+          { id: 2238, name: '万州区', code: 500101 },
+          { id: 2239, name: '涪陵区', code: 500102 },
+          { id: 2240, name: '渝中区', code: 500103 },
+          { id: 2241, name: '大渡口区', code: 500104 },
+          { id: 2242, name: '江北区', code: 500105 },
+          { id: 2243, name: '沙坪坝区', code: 500106 },
+          { id: 2244, name: '九龙坡区', code: 500107 },
+          { id: 2245, name: '南岸区', code: 500108 },
+          { id: 2246, name: '北碚区', code: 500109 },
+          { id: 2247, name: '綦江区', code: 500110 },
+          { id: 2248, name: '大足区', code: 500111 },
+          { id: 2249, name: '渝北区', code: 500112 },
+          { id: 2250, name: '巴南区', code: 500113 },
+          { id: 2251, name: '黔江区', code: 500114 },
+          { id: 2252, name: '长寿区', code: 500115 },
+          { id: 2253, name: '江津区', code: 500116 },
+          { id: 2254, name: '合川区', code: 500117 },
+          { id: 2255, name: '永川区', code: 500118 },
+          { id: 2256, name: '南川区', code: 500119 },
+          { id: 2257, name: '璧山区', code: 500120 },
+          { id: 2258, name: '铜梁区', code: 500151 },
+          { id: 2259, name: '潼南区', code: 500152 },
+          { id: 2260, name: '荣昌区', code: 500153 },
+          { id: 2261, name: '开州区', code: 500154 }
+        ]
+      },
+      {
+        id: 2262,
+        name: '重庆郊县',
+        code: 500200,
+        parentOrganId: 2236,
+        areas: [
+          { id: 2263, name: '梁平区', code: 500155 },
+          { id: 2264, name: '城口县', code: 500229 },
+          { id: 2265, name: '丰都县', code: 500230 },
+          { id: 2266, name: '垫江县', code: 500231 },
+          { id: 2267, name: '武隆区', code: 500156 },
+          { id: 2268, name: '忠县', code: 500233 },
+          { id: 2269, name: '云阳县', code: 500235 },
+          { id: 2270, name: '奉节县', code: 500236 },
+          { id: 2271, name: '巫山县', code: 500237 },
+          { id: 2272, name: '巫溪县', code: 500238 },
+          { id: 2273, name: '石柱土家族自治县', code: 500240 },
+          { id: 2274, name: '秀山土家族苗族自治县', code: 500241 },
+          { id: 2275, name: '酉阳土家族苗族自治县', code: 500242 },
+          { id: 2276, name: '彭水苗族土家族自治县', code: 500243 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 2277,
+    name: '四川省',
+    code: 510000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 2278,
+        name: '成都市',
+        code: 510100,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2279, name: '锦江区', code: 510104 },
+          { id: 2280, name: '青羊区', code: 510105 },
+          { id: 2281, name: '金牛区', code: 510106 },
+          { id: 2282, name: '武侯区', code: 510107 },
+          { id: 2283, name: '成华区', code: 510108 },
+          { id: 2284, name: '龙泉驿区', code: 510112 },
+          { id: 2285, name: '青白江区', code: 510113 },
+          { id: 2286, name: '新都区', code: 510114 },
+          { id: 2287, name: '温江区', code: 510115 },
+          { id: 2288, name: '双流区', code: 510116 },
+          { id: 2289, name: '金堂县', code: 510121 },
+          { id: 2290, name: '郫都区', code: 510117 },
+          { id: 2291, name: '大邑县', code: 510129 },
+          { id: 2292, name: '蒲江县', code: 510131 },
+          { id: 2293, name: '新津县', code: 510132 },
+          { id: 2294, name: '简阳市', code: 510185 },
+          { id: 2295, name: '都江堰市', code: 510181 },
+          { id: 2296, name: '彭州市', code: 510182 },
+          { id: 2297, name: '邛崃市', code: 510183 },
+          { id: 2298, name: '崇州市', code: 510184 }
+        ]
+      },
+      {
+        id: 2299,
+        name: '自贡市',
+        code: 510300,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2300, name: '自流井区', code: 510302 },
+          { id: 2301, name: '贡井区', code: 510303 },
+          { id: 2302, name: '大安区', code: 510304 },
+          { id: 2303, name: '沿滩区', code: 510311 },
+          { id: 2304, name: '荣县', code: 510321 },
+          { id: 2305, name: '富顺县', code: 510322 }
+        ]
+      },
+      {
+        id: 2306,
+        name: '攀枝花市',
+        code: 510400,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2307, name: '东区', code: 510402 },
+          { id: 2308, name: '西区', code: 510403 },
+          { id: 2309, name: '仁和区', code: 510411 },
+          { id: 2310, name: '米易县', code: 510421 },
+          { id: 2311, name: '盐边县', code: 510422 }
+        ]
+      },
+      {
+        id: 2312,
+        name: '泸州市',
+        code: 510500,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2313, name: '江阳区', code: 510502 },
+          { id: 2314, name: '纳溪区', code: 510503 },
+          { id: 2315, name: '龙马潭区', code: 510504 },
+          { id: 2316, name: '泸县', code: 510521 },
+          { id: 2317, name: '合江县', code: 510522 },
+          { id: 2318, name: '叙永县', code: 510524 },
+          { id: 2319, name: '古蔺县', code: 510525 }
+        ]
+      },
+      {
+        id: 2320,
+        name: '德阳市',
+        code: 510600,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2321, name: '旌阳区', code: 510603 },
+          { id: 2322, name: '中江县', code: 510623 },
+          { id: 2323, name: '罗江县', code: 510626 },
+          { id: 2324, name: '广汉市', code: 510681 },
+          { id: 2325, name: '什邡市', code: 510682 },
+          { id: 2326, name: '绵竹市', code: 510683 }
+        ]
+      },
+      {
+        id: 2327,
+        name: '绵阳市',
+        code: 510700,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2328, name: '涪城区', code: 510703 },
+          { id: 2329, name: '游仙区', code: 510704 },
+          { id: 2330, name: '安州区', code: 510705 },
+          { id: 2331, name: '三台县', code: 510722 },
+          { id: 2332, name: '盐亭县', code: 510723 },
+          { id: 2333, name: '梓潼县', code: 510725 },
+          { id: 2334, name: '北川羌族自治县', code: 510726 },
+          { id: 2335, name: '平武县', code: 510727 },
+          { id: 2336, name: '江油市', code: 510781 }
+        ]
+      },
+      {
+        id: 2337,
+        name: '广元市',
+        code: 510800,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2338, name: '利州区', code: 510802 },
+          { id: 2339, name: '昭化区', code: 510811 },
+          { id: 2340, name: '朝天区', code: 510812 },
+          { id: 2341, name: '旺苍县', code: 510821 },
+          { id: 2342, name: '青川县', code: 510822 },
+          { id: 2343, name: '剑阁县', code: 510823 },
+          { id: 2344, name: '苍溪县', code: 510824 }
+        ]
+      },
+      {
+        id: 2345,
+        name: '遂宁市',
+        code: 510900,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2346, name: '船山区', code: 510903 },
+          { id: 2347, name: '安居区', code: 510904 },
+          { id: 2348, name: '蓬溪县', code: 510921 },
+          { id: 2349, name: '射洪县', code: 510922 },
+          { id: 2350, name: '大英县', code: 510923 }
+        ]
+      },
+      {
+        id: 2351,
+        name: '内江市',
+        code: 511000,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2352, name: '市中区', code: 511002 },
+          { id: 2353, name: '东兴区', code: 511011 },
+          { id: 2354, name: '威远县', code: 511024 },
+          { id: 2355, name: '资中县', code: 511025 },
+          { id: 2356, name: '隆昌市', code: 511028 }
+        ]
+      },
+      {
+        id: 2357,
+        name: '乐山市',
+        code: 511100,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2358, name: '市中区', code: 511102 },
+          { id: 2359, name: '沙湾区', code: 511111 },
+          { id: 2360, name: '五通桥区', code: 511112 },
+          { id: 2361, name: '金口河区', code: 511113 },
+          { id: 2362, name: '犍为县', code: 511123 },
+          { id: 2363, name: '井研县', code: 511124 },
+          { id: 2364, name: '夹江县', code: 511126 },
+          { id: 2365, name: '沐川县', code: 511129 },
+          { id: 2366, name: '峨边彝族自治县', code: 511132 },
+          { id: 2367, name: '马边彝族自治县', code: 511133 },
+          { id: 2368, name: '峨眉山市', code: 511181 }
+        ]
+      },
+      {
+        id: 2369,
+        name: '南充市',
+        code: 511300,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2370, name: '顺庆区', code: 511302 },
+          { id: 2371, name: '高坪区', code: 511303 },
+          { id: 2372, name: '嘉陵区', code: 511304 },
+          { id: 2373, name: '南部县', code: 511321 },
+          { id: 2374, name: '营山县', code: 511322 },
+          { id: 2375, name: '蓬安县', code: 511323 },
+          { id: 2376, name: '仪陇县', code: 511324 },
+          { id: 2377, name: '西充县', code: 511325 },
+          { id: 2378, name: '阆中市', code: 511381 }
+        ]
+      },
+      {
+        id: 2379,
+        name: '眉山市',
+        code: 511400,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2380, name: '东坡区', code: 511402 },
+          { id: 2381, name: '彭山区', code: 511403 },
+          { id: 2382, name: '仁寿县', code: 511421 },
+          { id: 2383, name: '洪雅县', code: 511423 },
+          { id: 2384, name: '丹棱县', code: 511424 },
+          { id: 2385, name: '青神县', code: 511425 }
+        ]
+      },
+      {
+        id: 2386,
+        name: '宜宾市',
+        code: 511500,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2387, name: '翠屏区', code: 511502 },
+          { id: 2388, name: '南溪区', code: 511503 },
+          { id: 2389, name: '宜宾县', code: 511521 },
+          { id: 2390, name: '江安县', code: 511523 },
+          { id: 2391, name: '长宁县', code: 511524 },
+          { id: 2392, name: '高县', code: 511525 },
+          { id: 2393, name: '珙县', code: 511526 },
+          { id: 2394, name: '筠连县', code: 511527 },
+          { id: 2395, name: '兴文县', code: 511528 },
+          { id: 2396, name: '屏山县', code: 511529 }
+        ]
+      },
+      {
+        id: 2397,
+        name: '广安市',
+        code: 511600,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2398, name: '广安区', code: 511602 },
+          { id: 2399, name: '前锋区', code: 511603 },
+          { id: 2400, name: '岳池县', code: 511621 },
+          { id: 2401, name: '武胜县', code: 511622 },
+          { id: 2402, name: '邻水县', code: 511623 },
+          { id: 2403, name: '华蓥市', code: 511681 }
+        ]
+      },
+      {
+        id: 2404,
+        name: '达州市',
+        code: 511700,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2405, name: '通川区', code: 511702 },
+          { id: 2406, name: '达川区', code: 511703 },
+          { id: 2407, name: '宣汉县', code: 511722 },
+          { id: 2408, name: '开江县', code: 511723 },
+          { id: 2409, name: '大竹县', code: 511724 },
+          { id: 2410, name: '渠县', code: 511725 },
+          { id: 2411, name: '万源市', code: 511781 }
+        ]
+      },
+      {
+        id: 2412,
+        name: '雅安市',
+        code: 511800,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2413, name: '雨城区', code: 511802 },
+          { id: 2414, name: '名山区', code: 511803 },
+          { id: 2415, name: '荥经县', code: 511822 },
+          { id: 2416, name: '汉源县', code: 511823 },
+          { id: 2417, name: '石棉县', code: 511824 },
+          { id: 2418, name: '天全县', code: 511825 },
+          { id: 2419, name: '芦山县', code: 511826 },
+          { id: 2420, name: '宝兴县', code: 511827 }
+        ]
+      },
+      {
+        id: 2421,
+        name: '巴中市',
+        code: 511900,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2422, name: '巴州区', code: 511902 },
+          { id: 2423, name: '恩阳区', code: 511903 },
+          { id: 2424, name: '通江县', code: 511921 },
+          { id: 2425, name: '南江县', code: 511922 },
+          { id: 2426, name: '平昌县', code: 511923 }
+        ]
+      },
+      {
+        id: 2427,
+        name: '资阳市',
+        code: 512000,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2428, name: '雁江区', code: 512002 },
+          { id: 2429, name: '安岳县', code: 512021 },
+          { id: 2430, name: '乐至县', code: 512022 }
+        ]
+      },
+      {
+        id: 2431,
+        name: '阿坝藏族羌族自治州',
+        code: 513200,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2432, name: '马尔康市', code: 513201 },
+          { id: 2433, name: '汶川县', code: 513221 },
+          { id: 2434, name: '理县', code: 513222 },
+          { id: 2435, name: '茂县', code: 513223 },
+          { id: 2436, name: '松潘县', code: 513224 },
+          { id: 2437, name: '九寨沟县', code: 513225 },
+          { id: 2438, name: '金川县', code: 513226 },
+          { id: 2439, name: '小金县', code: 513227 },
+          { id: 2440, name: '黑水县', code: 513228 },
+          { id: 2441, name: '壤塘县', code: 513230 },
+          { id: 2442, name: '阿坝县', code: 513231 },
+          { id: 2443, name: '若尔盖县', code: 513232 },
+          { id: 2444, name: '红原县', code: 513233 }
+        ]
+      },
+      {
+        id: 2445,
+        name: '甘孜藏族自治州',
+        code: 513300,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2446, name: '康定市', code: 513301 },
+          { id: 2447, name: '泸定县', code: 513322 },
+          { id: 2448, name: '丹巴县', code: 513323 },
+          { id: 2449, name: '九龙县', code: 513324 },
+          { id: 2450, name: '雅江县', code: 513325 },
+          { id: 2451, name: '道孚县', code: 513326 },
+          { id: 2452, name: '炉霍县', code: 513327 },
+          { id: 2453, name: '甘孜县', code: 513328 },
+          { id: 2454, name: '新龙县', code: 513329 },
+          { id: 2455, name: '德格县', code: 513330 },
+          { id: 2456, name: '白玉县', code: 513331 },
+          { id: 2457, name: '石渠县', code: 513332 },
+          { id: 2458, name: '色达县', code: 513333 },
+          { id: 2459, name: '理塘县', code: 513334 },
+          { id: 2460, name: '巴塘县', code: 513335 },
+          { id: 2461, name: '乡城县', code: 513336 },
+          { id: 2462, name: '稻城县', code: 513337 },
+          { id: 2463, name: '得荣县', code: 513338 }
+        ]
+      },
+      {
+        id: 2464,
+        name: '凉山彝族自治州',
+        code: 513400,
+        parentOrganId: 2277,
+        areas: [
+          { id: 2465, name: '西昌市', code: 513401 },
+          { id: 2466, name: '木里藏族自治县', code: 513422 },
+          { id: 2467, name: '盐源县', code: 513423 },
+          { id: 2468, name: '德昌县', code: 513424 },
+          { id: 2469, name: '会理县', code: 513425 },
+          { id: 2470, name: '会东县', code: 513426 },
+          { id: 2471, name: '宁南县', code: 513427 },
+          { id: 2472, name: '普格县', code: 513428 },
+          { id: 2473, name: '布拖县', code: 513429 },
+          { id: 2474, name: '金阳县', code: 513430 },
+          { id: 2475, name: '昭觉县', code: 513431 },
+          { id: 2476, name: '喜德县', code: 513432 },
+          { id: 2477, name: '冕宁县', code: 513433 },
+          { id: 2478, name: '越西县', code: 513434 },
+          { id: 2479, name: '甘洛县', code: 513435 },
+          { id: 2480, name: '美姑县', code: 513436 },
+          { id: 2481, name: '雷波县', code: 513437 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 2482,
+    name: '贵州省',
+    code: 520000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 2483,
+        name: '贵阳市',
+        code: 520100,
+        parentOrganId: 2482,
+        areas: [
+          { id: 2484, name: '南明区', code: 520102 },
+          { id: 2485, name: '云岩区', code: 520103 },
+          { id: 2486, name: '花溪区', code: 520111 },
+          { id: 2487, name: '乌当区', code: 520112 },
+          { id: 2488, name: '白云区', code: 520113 },
+          { id: 2489, name: '观山湖区', code: 520115 },
+          { id: 2490, name: '开阳县', code: 520121 },
+          { id: 2491, name: '息烽县', code: 520122 },
+          { id: 2492, name: '修文县', code: 520123 },
+          { id: 2493, name: '清镇市', code: 520181 }
+        ]
+      },
+      {
+        id: 2494,
+        name: '六盘水市',
+        code: 520200,
+        parentOrganId: 2482,
+        areas: [
+          { id: 2495, name: '钟山区', code: 520201 },
+          { id: 2496, name: '六枝特区', code: 520203 },
+          { id: 2497, name: '水城县', code: 520221 },
+          { id: 2498, name: '盘州市', code: 520222 }
+        ]
+      },
+      {
+        id: 2499,
+        name: '遵义市',
+        code: 520300,
+        parentOrganId: 2482,
+        areas: [
+          { id: 2500, name: '红花岗区', code: 520302 },
+          { id: 2501, name: '汇川区', code: 520303 },
+          { id: 2502, name: '播州区', code: 520304 },
+          { id: 2503, name: '桐梓县', code: 520322 },
+          { id: 2504, name: '绥阳县', code: 520323 },
+          { id: 2505, name: '正安县', code: 520324 },
+          { id: 2506, name: '道真仡佬族苗族自治县', code: 520325 },
+          { id: 2507, name: '务川仡佬族苗族自治县', code: 520326 },
+          { id: 2508, name: '凤冈县', code: 520327 },
+          { id: 2509, name: '湄潭县', code: 520328 },
+          { id: 2510, name: '余庆县', code: 520329 },
+          { id: 2511, name: '习水县', code: 520330 },
+          { id: 2512, name: '赤水市', code: 520381 },
+          { id: 2513, name: '仁怀市', code: 520382 }
+        ]
+      },
+      {
+        id: 2514,
+        name: '安顺市',
+        code: 520400,
+        parentOrganId: 2482,
+        areas: [
+          { id: 2515, name: '西秀区', code: 520402 },
+          { id: 2516, name: '平坝区', code: 520403 },
+          { id: 2517, name: '普定县', code: 520422 },
+          { id: 2518, name: '镇宁布依族苗族自治县', code: 520423 },
+          { id: 2519, name: '关岭布依族苗族自治县', code: 520424 },
+          { id: 2520, name: '紫云苗族布依族自治县', code: 520425 }
+        ]
+      },
+      {
+        id: 2521,
+        name: '毕节市',
+        code: 520500,
+        parentOrganId: 2482,
+        areas: [
+          { id: 2522, name: '七星关区', code: 520502 },
+          { id: 2523, name: '大方县', code: 520521 },
+          { id: 2524, name: '黔西县', code: 520522 },
+          { id: 2525, name: '金沙县', code: 520523 },
+          { id: 2526, name: '织金县', code: 520524 },
+          { id: 2527, name: '纳雍县', code: 520525 },
+          { id: 2528, name: '威宁彝族回族苗族自治县', code: 520526 },
+          { id: 2529, name: '赫章县', code: 520527 }
+        ]
+      },
+      {
+        id: 2530,
+        name: '铜仁市',
+        code: 520600,
+        parentOrganId: 2482,
+        areas: [
+          { id: 2531, name: '碧江区', code: 520602 },
+          { id: 2532, name: '万山区', code: 520603 },
+          { id: 2533, name: '江口县', code: 520621 },
+          { id: 2534, name: '玉屏侗族自治县', code: 520622 },
+          { id: 2535, name: '石阡县', code: 520623 },
+          { id: 2536, name: '思南县', code: 520624 },
+          { id: 2537, name: '印江土家族苗族自治县', code: 520625 },
+          { id: 2538, name: '德江县', code: 520626 },
+          { id: 2539, name: '沿河土家族自治县', code: 520627 },
+          { id: 2540, name: '松桃苗族自治县', code: 520628 }
+        ]
+      },
+      {
+        id: 2541,
+        name: '黔西南布依族苗族自治州',
+        code: 522300,
+        parentOrganId: 2482,
+        areas: [
+          { id: 2542, name: '兴义市', code: 522301 },
+          { id: 2543, name: '兴仁县', code: 522322 },
+          { id: 2544, name: '普安县', code: 522323 },
+          { id: 2545, name: '晴隆县', code: 522324 },
+          { id: 2546, name: '贞丰县', code: 522325 },
+          { id: 2547, name: '望谟县', code: 522326 },
+          { id: 2548, name: '册亨县', code: 522327 },
+          { id: 2549, name: '安龙县', code: 522328 }
+        ]
+      },
+      {
+        id: 2550,
+        name: '黔东南苗族侗族自治州',
+        code: 522600,
+        parentOrganId: 2482,
+        areas: [
+          { id: 2551, name: '凯里市', code: 522601 },
+          { id: 2552, name: '黄平县', code: 522622 },
+          { id: 2553, name: '施秉县', code: 522623 },
+          { id: 2554, name: '三穗县', code: 522624 },
+          { id: 2555, name: '镇远县', code: 522625 },
+          { id: 2556, name: '岑巩县', code: 522626 },
+          { id: 2557, name: '天柱县', code: 522627 },
+          { id: 2558, name: '锦屏县', code: 522628 },
+          { id: 2559, name: '剑河县', code: 522629 },
+          { id: 2560, name: '台江县', code: 522630 },
+          { id: 2561, name: '黎平县', code: 522631 },
+          { id: 2562, name: '榕江县', code: 522632 },
+          { id: 2563, name: '从江县', code: 522633 },
+          { id: 2564, name: '雷山县', code: 522634 },
+          { id: 2565, name: '麻江县', code: 522635 },
+          { id: 2566, name: '丹寨县', code: 522636 }
+        ]
+      },
+      {
+        id: 2567,
+        name: '黔南布依族苗族自治州',
+        code: 522700,
+        parentOrganId: 2482,
+        areas: [
+          { id: 2568, name: '都匀市', code: 522701 },
+          { id: 2569, name: '福泉市', code: 522702 },
+          { id: 2570, name: '荔波县', code: 522722 },
+          { id: 2571, name: '贵定县', code: 522723 },
+          { id: 2572, name: '瓮安县', code: 522725 },
+          { id: 2573, name: '独山县', code: 522726 },
+          { id: 2574, name: '平塘县', code: 522727 },
+          { id: 2575, name: '罗甸县', code: 522728 },
+          { id: 2576, name: '长顺县', code: 522729 },
+          { id: 2577, name: '龙里县', code: 522730 },
+          { id: 2578, name: '惠水县', code: 522731 },
+          { id: 2579, name: '三都水族自治县', code: 522732 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 2580,
+    name: '云南省',
+    code: 530000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 2581,
+        name: '昆明市',
+        code: 530100,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2582, name: '五华区', code: 530102 },
+          { id: 2583, name: '盘龙区', code: 530103 },
+          { id: 2584, name: '官渡区', code: 530111 },
+          { id: 2585, name: '西山区', code: 530112 },
+          { id: 2586, name: '东川区', code: 530113 },
+          { id: 2587, name: '呈贡区', code: 530114 },
+          { id: 2588, name: '晋宁区', code: 530115 },
+          { id: 2589, name: '富民县', code: 530124 },
+          { id: 2590, name: '宜良县', code: 530125 },
+          { id: 2591, name: '石林彝族自治县', code: 530126 },
+          { id: 2592, name: '嵩明县', code: 530127 },
+          { id: 2593, name: '禄劝彝族苗族自治县', code: 530128 },
+          { id: 2594, name: '寻甸回族彝族自治县', code: 530129 },
+          { id: 2595, name: '安宁市', code: 530181 }
+        ]
+      },
+      {
+        id: 2596,
+        name: '曲靖市',
+        code: 530300,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2597, name: '麒麟区', code: 530302 },
+          { id: 2598, name: '沾益区', code: 530303 },
+          { id: 2599, name: '马龙县', code: 530321 },
+          { id: 2600, name: '陆良县', code: 530322 },
+          { id: 2601, name: '师宗县', code: 530323 },
+          { id: 2602, name: '罗平县', code: 530324 },
+          { id: 2603, name: '富源县', code: 530325 },
+          { id: 2604, name: '会泽县', code: 530326 },
+          { id: 2605, name: '宣威市', code: 530381 }
+        ]
+      },
+      {
+        id: 2606,
+        name: '玉溪市',
+        code: 530400,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2607, name: '红塔区', code: 530402 },
+          { id: 2608, name: '江川区', code: 530403 },
+          { id: 2609, name: '澄江县', code: 530422 },
+          { id: 2610, name: '通海县', code: 530423 },
+          { id: 2611, name: '华宁县', code: 530424 },
+          { id: 2612, name: '易门县', code: 530425 },
+          { id: 2613, name: '峨山彝族自治县', code: 530426 },
+          { id: 2614, name: '新平彝族傣族自治县', code: 530427 },
+          { id: 2615, name: '元江哈尼族彝族傣族自治县', code: 530428 }
+        ]
+      },
+      {
+        id: 2616,
+        name: '保山市',
+        code: 530500,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2617, name: '隆阳区', code: 530502 },
+          { id: 2618, name: '施甸县', code: 530521 },
+          { id: 2619, name: '龙陵县', code: 530523 },
+          { id: 2620, name: '昌宁县', code: 530524 },
+          { id: 2621, name: '腾冲市', code: 530581 }
+        ]
+      },
+      {
+        id: 2622,
+        name: '昭通市',
+        code: 530600,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2623, name: '昭阳区', code: 530602 },
+          { id: 2624, name: '鲁甸县', code: 530621 },
+          { id: 2625, name: '巧家县', code: 530622 },
+          { id: 2626, name: '盐津县', code: 530623 },
+          { id: 2627, name: '大关县', code: 530624 },
+          { id: 2628, name: '永善县', code: 530625 },
+          { id: 2629, name: '绥江县', code: 530626 },
+          { id: 2630, name: '镇雄县', code: 530627 },
+          { id: 2631, name: '彝良县', code: 530628 },
+          { id: 2632, name: '威信县', code: 530629 },
+          { id: 2633, name: '水富县', code: 530630 }
+        ]
+      },
+      {
+        id: 2634,
+        name: '丽江市',
+        code: 530700,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2635, name: '古城区', code: 530702 },
+          { id: 2636, name: '玉龙纳西族自治县', code: 530721 },
+          { id: 2637, name: '永胜县', code: 530722 },
+          { id: 2638, name: '华坪县', code: 530723 },
+          { id: 2639, name: '宁蒗彝族自治县', code: 530724 }
+        ]
+      },
+      {
+        id: 2640,
+        name: '普洱市',
+        code: 530800,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2641, name: '思茅区', code: 530802 },
+          { id: 2642, name: '宁洱哈尼族彝族自治县', code: 530821 },
+          { id: 2643, name: '墨江哈尼族自治县', code: 530822 },
+          { id: 2644, name: '景东彝族自治县', code: 530823 },
+          { id: 2645, name: '景谷傣族彝族自治县', code: 530824 },
+          { id: 2646, name: '镇沅彝族哈尼族拉祜族自治县', code: 530825 },
+          { id: 2647, name: '江城哈尼族彝族自治县', code: 530826 },
+          { id: 2648, name: '孟连傣族拉祜族佤族自治县', code: 530827 },
+          { id: 2649, name: '澜沧拉祜族自治县', code: 530828 },
+          { id: 2650, name: '西盟佤族自治县', code: 530829 }
+        ]
+      },
+      {
+        id: 2651,
+        name: '临沧市',
+        code: 530900,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2652, name: '临翔区', code: 530902 },
+          { id: 2653, name: '凤庆县', code: 530921 },
+          { id: 2654, name: '云县', code: 530922 },
+          { id: 2655, name: '永德县', code: 530923 },
+          { id: 2656, name: '镇康县', code: 530924 },
+          { id: 2657, name: '双江拉祜族佤族布朗族傣族自治县', code: 530925 },
+          { id: 2658, name: '耿马傣族佤族自治县', code: 530926 },
+          { id: 2659, name: '沧源佤族自治县', code: 530927 }
+        ]
+      },
+      {
+        id: 2660,
+        name: '楚雄彝族自治州',
+        code: 532300,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2661, name: '楚雄市', code: 532301 },
+          { id: 2662, name: '双柏县', code: 532322 },
+          { id: 2663, name: '牟定县', code: 532323 },
+          { id: 2664, name: '南华县', code: 532324 },
+          { id: 2665, name: '姚安县', code: 532325 },
+          { id: 2666, name: '大姚县', code: 532326 },
+          { id: 2667, name: '永仁县', code: 532327 },
+          { id: 2668, name: '元谋县', code: 532328 },
+          { id: 2669, name: '武定县', code: 532329 },
+          { id: 2670, name: '禄丰县', code: 532331 }
+        ]
+      },
+      {
+        id: 2671,
+        name: '红河哈尼族彝族自治州',
+        code: 532500,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2672, name: '个旧市', code: 532501 },
+          { id: 2673, name: '开远市', code: 532502 },
+          { id: 2674, name: '蒙自市', code: 532503 },
+          { id: 2675, name: '弥勒市', code: 532504 },
+          { id: 2676, name: '屏边苗族自治县', code: 532523 },
+          { id: 2677, name: '建水县', code: 532524 },
+          { id: 2678, name: '石屏县', code: 532525 },
+          { id: 2679, name: '泸西县', code: 532527 },
+          { id: 2680, name: '元阳县', code: 532528 },
+          { id: 2681, name: '红河县', code: 532529 },
+          { id: 2682, name: '金平苗族瑶族傣族自治县', code: 532530 },
+          { id: 2683, name: '绿春县', code: 532531 },
+          { id: 2684, name: '河口瑶族自治县', code: 532532 }
+        ]
+      },
+      {
+        id: 2685,
+        name: '文山壮族苗族自治州',
+        code: 532600,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2686, name: '文山市', code: 532601 },
+          { id: 2687, name: '砚山县', code: 532622 },
+          { id: 2688, name: '西畴县', code: 532623 },
+          { id: 2689, name: '麻栗坡县', code: 532624 },
+          { id: 2690, name: '马关县', code: 532625 },
+          { id: 2691, name: '丘北县', code: 532626 },
+          { id: 2692, name: '广南县', code: 532627 },
+          { id: 2693, name: '富宁县', code: 532628 }
+        ]
+      },
+      {
+        id: 2694,
+        name: '西双版纳傣族自治州',
+        code: 532800,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2695, name: '景洪市', code: 532801 },
+          { id: 2696, name: '勐海县', code: 532822 },
+          { id: 2697, name: '勐腊县', code: 532823 }
+        ]
+      },
+      {
+        id: 2698,
+        name: '大理白族自治州',
+        code: 532900,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2699, name: '大理市', code: 532901 },
+          { id: 2700, name: '漾濞彝族自治县', code: 532922 },
+          { id: 2701, name: '祥云县', code: 532923 },
+          { id: 2702, name: '宾川县', code: 532924 },
+          { id: 2703, name: '弥渡县', code: 532925 },
+          { id: 2704, name: '南涧彝族自治县', code: 532926 },
+          { id: 2705, name: '巍山彝族回族自治县', code: 532927 },
+          { id: 2706, name: '永平县', code: 532928 },
+          { id: 2707, name: '云龙县', code: 532929 },
+          { id: 2708, name: '洱源县', code: 532930 },
+          { id: 2709, name: '剑川县', code: 532931 },
+          { id: 2710, name: '鹤庆县', code: 532932 }
+        ]
+      },
+      {
+        id: 2711,
+        name: '德宏傣族景颇族自治州',
+        code: 533100,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2712, name: '瑞丽市', code: 533102 },
+          { id: 2713, name: '芒市', code: 533103 },
+          { id: 2714, name: '梁河县', code: 533122 },
+          { id: 2715, name: '盈江县', code: 533123 },
+          { id: 2716, name: '陇川县', code: 533124 }
+        ]
+      },
+      {
+        id: 2717,
+        name: '怒江傈僳族自治州',
+        code: 533300,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2718, name: '泸水市', code: 533301 },
+          { id: 2719, name: '福贡县', code: 533323 },
+          { id: 2720, name: '贡山独龙族怒族自治县', code: 533324 },
+          { id: 2721, name: '兰坪白族普米族自治县', code: 533325 }
+        ]
+      },
+      {
+        id: 2722,
+        name: '迪庆藏族自治州',
+        code: 533400,
+        parentOrganId: 2580,
+        areas: [
+          { id: 2723, name: '香格里拉市', code: 533401 },
+          { id: 2724, name: '德钦县', code: 533422 },
+          { id: 2725, name: '维西傈僳族自治县', code: 533423 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 2726,
+    name: '西藏自治区',
+    code: 540000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 2727,
+        name: '拉萨市',
+        code: 540100,
+        parentOrganId: 2726,
+        areas: [
+          { id: 2728, name: '城关区', code: 540102 },
+          { id: 2729, name: '堆龙德庆区', code: 540103 },
+          { id: 2730, name: '林周县', code: 540121 },
+          { id: 2731, name: '当雄县', code: 540122 },
+          { id: 2732, name: '尼木县', code: 540123 },
+          { id: 2733, name: '曲水县', code: 540124 },
+          { id: 2734, name: '达孜县', code: 540126 },
+          { id: 2735, name: '墨竹工卡县', code: 540127 }
+        ]
+      },
+      {
+        id: 2736,
+        name: '日喀则市',
+        code: 540200,
+        parentOrganId: 2726,
+        areas: [
+          { id: 2737, name: '桑珠孜区', code: 540202 },
+          { id: 2738, name: '南木林县', code: 540221 },
+          { id: 2739, name: '江孜县', code: 540222 },
+          { id: 2740, name: '定日县', code: 540223 },
+          { id: 2741, name: '萨迦县', code: 540224 },
+          { id: 2742, name: '拉孜县', code: 540225 },
+          { id: 2743, name: '昂仁县', code: 540226 },
+          { id: 2744, name: '谢通门县', code: 540227 },
+          { id: 2745, name: '白朗县', code: 540228 },
+          { id: 2746, name: '仁布县', code: 540229 },
+          { id: 2747, name: '康马县', code: 540230 },
+          { id: 2748, name: '定结县', code: 540231 },
+          { id: 2749, name: '仲巴县', code: 540232 },
+          { id: 2750, name: '亚东县', code: 540233 },
+          { id: 2751, name: '吉隆县', code: 540234 },
+          { id: 2752, name: '聂拉木县', code: 540235 },
+          { id: 2753, name: '萨嘎县', code: 540236 },
+          { id: 2754, name: '岗巴县', code: 540237 }
+        ]
+      },
+      {
+        id: 2755,
+        name: '昌都市',
+        code: 540300,
+        parentOrganId: 2726,
+        areas: [
+          { id: 2756, name: '卡若区', code: 540302 },
+          { id: 2757, name: '江达县', code: 540321 },
+          { id: 2758, name: '贡觉县', code: 540322 },
+          { id: 2759, name: '类乌齐县', code: 540323 },
+          { id: 2760, name: '丁青县', code: 540324 },
+          { id: 2761, name: '察雅县', code: 540325 },
+          { id: 2762, name: '八宿县', code: 540326 },
+          { id: 2763, name: '左贡县', code: 540327 },
+          { id: 2764, name: '芒康县', code: 540328 },
+          { id: 2765, name: '洛隆县', code: 540329 },
+          { id: 2766, name: '边坝县', code: 540330 }
+        ]
+      },
+      {
+        id: 2767,
+        name: '林芝市',
+        code: 540400,
+        parentOrganId: 2726,
+        areas: [
+          { id: 2768, name: '巴宜区', code: 540402 },
+          { id: 2769, name: '工布江达县', code: 540421 },
+          { id: 2770, name: '米林县', code: 540422 },
+          { id: 2771, name: '墨脱县', code: 540423 },
+          { id: 2772, name: '波密县', code: 540424 },
+          { id: 2773, name: '察隅县', code: 540425 },
+          { id: 2774, name: '朗县', code: 540426 }
+        ]
+      },
+      {
+        id: 2775,
+        name: '山南市',
+        code: 540500,
+        parentOrganId: 2726,
+        areas: [
+          { id: 2776, name: '乃东区', code: 540502 },
+          { id: 2777, name: '扎囊县', code: 540521 },
+          { id: 2778, name: '贡嘎县', code: 540522 },
+          { id: 2779, name: '桑日县', code: 540523 },
+          { id: 2780, name: '琼结县', code: 540524 },
+          { id: 2781, name: '曲松县', code: 540525 },
+          { id: 2782, name: '措美县', code: 540526 },
+          { id: 2783, name: '洛扎县', code: 540527 },
+          { id: 2784, name: '加查县', code: 540528 },
+          { id: 2785, name: '隆子县', code: 540529 },
+          { id: 2786, name: '错那县', code: 540530 },
+          { id: 2787, name: '浪卡子县', code: 540531 }
+        ]
+      },
+      {
+        id: 2788,
+        name: '那曲地区',
+        code: 542400,
+        parentOrganId: 2726,
+        areas: [
+          { id: 2789, name: '那曲县', code: 542421 },
+          { id: 2790, name: '嘉黎县', code: 542422 },
+          { id: 2791, name: '比如县', code: 542423 },
+          { id: 2792, name: '聂荣县', code: 542424 },
+          { id: 2793, name: '安多县', code: 542425 },
+          { id: 2794, name: '申扎县', code: 542426 },
+          { id: 2795, name: '索县', code: 542427 },
+          { id: 2796, name: '班戈县', code: 542428 },
+          { id: 2797, name: '巴青县', code: 542429 },
+          { id: 2798, name: '尼玛县', code: 542430 },
+          { id: 2799, name: '双湖县', code: 542431 }
+        ]
+      },
+      {
+        id: 2800,
+        name: '阿里地区',
+        code: 542500,
+        parentOrganId: 2726,
+        areas: [
+          { id: 2801, name: '普兰县', code: 542521 },
+          { id: 2802, name: '札达县', code: 542522 },
+          { id: 2803, name: '噶尔县', code: 542523 },
+          { id: 2804, name: '日土县', code: 542524 },
+          { id: 2805, name: '革吉县', code: 542525 },
+          { id: 2806, name: '改则县', code: 542526 },
+          { id: 2807, name: '措勤县', code: 542527 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 2808,
+    name: '陕西省',
+    code: 610000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 2809,
+        name: '西安市',
+        code: 610100,
+        parentOrganId: 2808,
+        areas: [
+          { id: 2810, name: '新城区', code: 610102 },
+          { id: 2811, name: '碑林区', code: 610103 },
+          { id: 2812, name: '莲湖区', code: 610104 },
+          { id: 2813, name: '灞桥区', code: 610111 },
+          { id: 2814, name: '未央区', code: 610112 },
+          { id: 2815, name: '雁塔区', code: 610113 },
+          { id: 2816, name: '阎良区', code: 610114 },
+          { id: 2817, name: '临潼区', code: 610115 },
+          { id: 2818, name: '长安区', code: 610116 },
+          { id: 2819, name: '高陵区', code: 610117 },
+          { id: 2820, name: '蓝田县', code: 610122 },
+          { id: 2821, name: '周至县', code: 610124 },
+          { id: 2822, name: '鄠邑区', code: 610118 }
+        ]
+      },
+      {
+        id: 2823,
+        name: '铜川市',
+        code: 610200,
+        parentOrganId: 2808,
+        areas: [
+          { id: 2824, name: '王益区', code: 610202 },
+          { id: 2825, name: '印台区', code: 610203 },
+          { id: 2826, name: '耀州区', code: 610204 },
+          { id: 2827, name: '宜君县', code: 610222 }
+        ]
+      },
+      {
+        id: 2828,
+        name: '宝鸡市',
+        code: 610300,
+        parentOrganId: 2808,
+        areas: [
+          { id: 2829, name: '渭滨区', code: 610302 },
+          { id: 2830, name: '金台区', code: 610303 },
+          { id: 2831, name: '陈仓区', code: 610304 },
+          { id: 2832, name: '凤翔县', code: 610322 },
+          { id: 2833, name: '岐山县', code: 610323 },
+          { id: 2834, name: '扶风县', code: 610324 },
+          { id: 2835, name: '眉县', code: 610326 },
+          { id: 2836, name: '陇县', code: 610327 },
+          { id: 2837, name: '千阳县', code: 610328 },
+          { id: 2838, name: '麟游县', code: 610329 },
+          { id: 2839, name: '凤县', code: 610330 },
+          { id: 2840, name: '太白县', code: 610331 }
+        ]
+      },
+      {
+        id: 2841,
+        name: '咸阳市',
+        code: 610400,
+        parentOrganId: 2808,
+        areas: [
+          { id: 2842, name: '秦都区', code: 610402 },
+          { id: 2843, name: '杨陵区', code: 610403 },
+          { id: 2844, name: '渭城区', code: 610404 },
+          { id: 2845, name: '三原县', code: 610422 },
+          { id: 2846, name: '泾阳县', code: 610423 },
+          { id: 2847, name: '乾县', code: 610424 },
+          { id: 2848, name: '礼泉县', code: 610425 },
+          { id: 2849, name: '永寿县', code: 610426 },
+          { id: 2850, name: '彬县', code: 610427 },
+          { id: 2851, name: '长武县', code: 610428 },
+          { id: 2852, name: '旬邑县', code: 610429 },
+          { id: 2853, name: '淳化县', code: 610430 },
+          { id: 2854, name: '武功县', code: 610431 },
+          { id: 2855, name: '兴平市', code: 610481 }
+        ]
+      },
+      {
+        id: 2856,
+        name: '渭南市',
+        code: 610500,
+        parentOrganId: 2808,
+        areas: [
+          { id: 2857, name: '临渭区', code: 610502 },
+          { id: 2858, name: '华州区', code: 610503 },
+          { id: 2859, name: '潼关县', code: 610522 },
+          { id: 2860, name: '大荔县', code: 610523 },
+          { id: 2861, name: '合阳县', code: 610524 },
+          { id: 2862, name: '澄城县', code: 610525 },
+          { id: 2863, name: '蒲城县', code: 610526 },
+          { id: 2864, name: '白水县', code: 610527 },
+          { id: 2865, name: '富平县', code: 610528 },
+          { id: 2866, name: '韩城市', code: 610581 },
+          { id: 2867, name: '华阴市', code: 610582 }
+        ]
+      },
+      {
+        id: 2868,
+        name: '延安市',
+        code: 610600,
+        parentOrganId: 2808,
+        areas: [
+          { id: 2869, name: '宝塔区', code: 610602 },
+          { id: 2870, name: '延长县', code: 610621 },
+          { id: 2871, name: '延川县', code: 610622 },
+          { id: 2872, name: '子长县', code: 610623 },
+          { id: 2873, name: '安塞区', code: 610603 },
+          { id: 2874, name: '志丹县', code: 610625 },
+          { id: 2875, name: '吴起县', code: 610626 },
+          { id: 2876, name: '甘泉县', code: 610627 },
+          { id: 2877, name: '富县', code: 610628 },
+          { id: 2878, name: '洛川县', code: 610629 },
+          { id: 2879, name: '宜川县', code: 610630 },
+          { id: 2880, name: '黄龙县', code: 610631 },
+          { id: 2881, name: '黄陵县', code: 610632 }
+        ]
+      },
+      {
+        id: 2882,
+        name: '汉中市',
+        code: 610700,
+        parentOrganId: 2808,
+        areas: [
+          { id: 2883, name: '汉台区', code: 610702 },
+          { id: 2884, name: '南郑县', code: 610721 },
+          { id: 2885, name: '城固县', code: 610722 },
+          { id: 2886, name: '洋县', code: 610723 },
+          { id: 2887, name: '西乡县', code: 610724 },
+          { id: 2888, name: '勉县', code: 610725 },
+          { id: 2889, name: '宁强县', code: 610726 },
+          { id: 2890, name: '略阳县', code: 610727 },
+          { id: 2891, name: '镇巴县', code: 610728 },
+          { id: 2892, name: '留坝县', code: 610729 },
+          { id: 2893, name: '佛坪县', code: 610730 }
+        ]
+      },
+      {
+        id: 2894,
+        name: '榆林市',
+        code: 610800,
+        parentOrganId: 2808,
+        areas: [
+          { id: 2895, name: '榆阳区', code: 610802 },
+          { id: 2896, name: '横山区', code: 610803 },
+          { id: 2897, name: '神木市', code: 610881 },
+          { id: 2898, name: '府谷县', code: 610822 },
+          { id: 2899, name: '靖边县', code: 610824 },
+          { id: 2900, name: '定边县', code: 610825 },
+          { id: 2901, name: '绥德县', code: 610826 },
+          { id: 2902, name: '米脂县', code: 610827 },
+          { id: 2903, name: '佳县', code: 610828 },
+          { id: 2904, name: '吴堡县', code: 610829 },
+          { id: 2905, name: '清涧县', code: 610830 },
+          { id: 2906, name: '子洲县', code: 610831 }
+        ]
+      },
+      {
+        id: 2907,
+        name: '安康市',
+        code: 610900,
+        parentOrganId: 2808,
+        areas: [
+          { id: 2908, name: '汉滨区', code: 610902 },
+          { id: 2909, name: '汉阴县', code: 610921 },
+          { id: 2910, name: '石泉县', code: 610922 },
+          { id: 2911, name: '宁陕县', code: 610923 },
+          { id: 2912, name: '紫阳县', code: 610924 },
+          { id: 2913, name: '岚皋县', code: 610925 },
+          { id: 2914, name: '平利县', code: 610926 },
+          { id: 2915, name: '镇坪县', code: 610927 },
+          { id: 2916, name: '旬阳县', code: 610928 },
+          { id: 2917, name: '白河县', code: 610929 }
+        ]
+      },
+      {
+        id: 2918,
+        name: '商洛市',
+        code: 611000,
+        parentOrganId: 2808,
+        areas: [
+          { id: 2919, name: '商州区', code: 611002 },
+          { id: 2920, name: '洛南县', code: 611021 },
+          { id: 2921, name: '丹凤县', code: 611022 },
+          { id: 2922, name: '商南县', code: 611023 },
+          { id: 2923, name: '山阳县', code: 611024 },
+          { id: 2924, name: '镇安县', code: 611025 },
+          { id: 2925, name: '柞水县', code: 611026 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 2926,
+    name: '甘肃省',
+    code: 620000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 2927,
+        name: '兰州市',
+        code: 620100,
+        parentOrganId: 2926,
+        areas: [
+          { id: 2928, name: '城关区', code: 620102 },
+          { id: 2929, name: '七里河区', code: 620103 },
+          { id: 2930, name: '西固区', code: 620104 },
+          { id: 2931, name: '安宁区', code: 620105 },
+          { id: 2932, name: '红古区', code: 620111 },
+          { id: 2933, name: '永登县', code: 620121 },
+          { id: 2934, name: '皋兰县', code: 620122 },
+          { id: 2935, name: '榆中县', code: 620123 }
+        ]
+      },
+      { id: 2936, name: '嘉峪关市', code: 620200, parentOrganId: 2926 },
+      {
+        id: 2937,
+        name: '金昌市',
+        code: 620300,
+        parentOrganId: 2926,
+        areas: [
+          { id: 2938, name: '金川区', code: 620302 },
+          { id: 2939, name: '永昌县', code: 620321 }
+        ]
+      },
+      {
+        id: 2940,
+        name: '白银市',
+        code: 620400,
+        parentOrganId: 2926,
+        areas: [
+          { id: 2941, name: '白银区', code: 620402 },
+          { id: 2942, name: '平川区', code: 620403 },
+          { id: 2943, name: '靖远县', code: 620421 },
+          { id: 2944, name: '会宁县', code: 620422 },
+          { id: 2945, name: '景泰县', code: 620423 }
+        ]
+      },
+      {
+        id: 2946,
+        name: '天水市',
+        code: 620500,
+        parentOrganId: 2926,
+        areas: [
+          { id: 2947, name: '秦州区', code: 620502 },
+          { id: 2948, name: '麦积区', code: 620503 },
+          { id: 2949, name: '清水县', code: 620521 },
+          { id: 2950, name: '秦安县', code: 620522 },
+          { id: 2951, name: '甘谷县', code: 620523 },
+          { id: 2952, name: '武山县', code: 620524 },
+          { id: 2953, name: '张家川回族自治县', code: 620525 }
+        ]
+      },
+      {
+        id: 2954,
+        name: '武威市',
+        code: 620600,
+        parentOrganId: 2926,
+        areas: [
+          { id: 2955, name: '凉州区', code: 620602 },
+          { id: 2956, name: '民勤县', code: 620621 },
+          { id: 2957, name: '古浪县', code: 620622 },
+          { id: 2958, name: '天祝藏族自治县', code: 620623 }
+        ]
+      },
+      {
+        id: 2959,
+        name: '张掖市',
+        code: 620700,
+        parentOrganId: 2926,
+        areas: [
+          { id: 2960, name: '甘州区', code: 620702 },
+          { id: 2961, name: '肃南裕固族自治县', code: 620721 },
+          { id: 2962, name: '民乐县', code: 620722 },
+          { id: 2963, name: '临泽县', code: 620723 },
+          { id: 2964, name: '高台县', code: 620724 },
+          { id: 2965, name: '山丹县', code: 620725 }
+        ]
+      },
+      {
+        id: 2966,
+        name: '平凉市',
+        code: 620800,
+        parentOrganId: 2926,
+        areas: [
+          { id: 2967, name: '崆峒区', code: 620802 },
+          { id: 2968, name: '泾川县', code: 620821 },
+          { id: 2969, name: '灵台县', code: 620822 },
+          { id: 2970, name: '崇信县', code: 620823 },
+          { id: 2971, name: '华亭县', code: 620824 },
+          { id: 2972, name: '庄浪县', code: 620825 },
+          { id: 2973, name: '静宁县', code: 620826 }
+        ]
+      },
+      {
+        id: 2974,
+        name: '酒泉市',
+        code: 620900,
+        parentOrganId: 2926,
+        areas: [
+          { id: 2975, name: '肃州区', code: 620902 },
+          { id: 2976, name: '金塔县', code: 620921 },
+          { id: 2977, name: '瓜州县', code: 620922 },
+          { id: 2978, name: '肃北蒙古族自治县', code: 620923 },
+          { id: 2979, name: '阿克塞哈萨克族自治县', code: 620924 },
+          { id: 2980, name: '玉门市', code: 620981 },
+          { id: 2981, name: '敦煌市', code: 620982 }
+        ]
+      },
+      {
+        id: 2982,
+        name: '庆阳市',
+        code: 621000,
+        parentOrganId: 2926,
+        areas: [
+          { id: 2983, name: '西峰区', code: 621002 },
+          { id: 2984, name: '庆城县', code: 621021 },
+          { id: 2985, name: '环县', code: 621022 },
+          { id: 2986, name: '华池县', code: 621023 },
+          { id: 2987, name: '合水县', code: 621024 },
+          { id: 2988, name: '正宁县', code: 621025 },
+          { id: 2989, name: '宁县', code: 621026 },
+          { id: 2990, name: '镇原县', code: 621027 }
+        ]
+      },
+      {
+        id: 2991,
+        name: '定西市',
+        code: 621100,
+        parentOrganId: 2926,
+        areas: [
+          { id: 2992, name: '安定区', code: 621102 },
+          { id: 2993, name: '通渭县', code: 621121 },
+          { id: 2994, name: '陇西县', code: 621122 },
+          { id: 2995, name: '渭源县', code: 621123 },
+          { id: 2996, name: '临洮县', code: 621124 },
+          { id: 2997, name: '漳县', code: 621125 },
+          { id: 2998, name: '岷县', code: 621126 }
+        ]
+      },
+      {
+        id: 2999,
+        name: '陇南市',
+        code: 621200,
+        parentOrganId: 2926,
+        areas: [
+          { id: 3000, name: '武都区', code: 621202 },
+          { id: 3001, name: '成县', code: 621221 },
+          { id: 3002, name: '文县', code: 621222 },
+          { id: 3003, name: '宕昌县', code: 621223 },
+          { id: 3004, name: '康县', code: 621224 },
+          { id: 3005, name: '西和县', code: 621225 },
+          { id: 3006, name: '礼县', code: 621226 },
+          { id: 3007, name: '徽县', code: 621227 },
+          { id: 3008, name: '两当县', code: 621228 }
+        ]
+      },
+      {
+        id: 3009,
+        name: '临夏回族自治州',
+        code: 622900,
+        parentOrganId: 2926,
+        areas: [
+          { id: 3010, name: '临夏市', code: 622901 },
+          { id: 3011, name: '临夏县', code: 622921 },
+          { id: 3012, name: '康乐县', code: 622922 },
+          { id: 3013, name: '永靖县', code: 622923 },
+          { id: 3014, name: '广河县', code: 622924 },
+          { id: 3015, name: '和政县', code: 622925 },
+          { id: 3016, name: '东乡族自治县', code: 622926 },
+          { id: 3017, name: '积石山保安族东乡族撒拉族自治县', code: 622927 }
+        ]
+      },
+      {
+        id: 3018,
+        name: '甘南藏族自治州',
+        code: 623000,
+        parentOrganId: 2926,
+        areas: [
+          { id: 3019, name: '合作市', code: 623001 },
+          { id: 3020, name: '临潭县', code: 623021 },
+          { id: 3021, name: '卓尼县', code: 623022 },
+          { id: 3022, name: '舟曲县', code: 623023 },
+          { id: 3023, name: '迭部县', code: 623024 },
+          { id: 3024, name: '玛曲县', code: 623025 },
+          { id: 3025, name: '碌曲县', code: 623026 },
+          { id: 3026, name: '夏河县', code: 623027 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 3027,
+    name: '青海省',
+    code: 630000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 3028,
+        name: '西宁市',
+        code: 630100,
+        parentOrganId: 3027,
+        areas: [
+          { id: 3029, name: '城东区', code: 630102 },
+          { id: 3030, name: '城中区', code: 630103 },
+          { id: 3031, name: '城西区', code: 630104 },
+          { id: 3032, name: '城北区', code: 630105 },
+          { id: 3033, name: '大通回族土族自治县', code: 630121 },
+          { id: 3034, name: '湟中县', code: 630122 },
+          { id: 3035, name: '湟源县', code: 630123 }
+        ]
+      },
+      {
+        id: 3036,
+        name: '海东市',
+        code: 630200,
+        parentOrganId: 3027,
+        areas: [
+          { id: 3037, name: '乐都区', code: 630202 },
+          { id: 3038, name: '平安区', code: 630203 },
+          { id: 3039, name: '民和回族土族自治县', code: 630222 },
+          { id: 3040, name: '互助土族自治县', code: 630223 },
+          { id: 3041, name: '化隆回族自治县', code: 630224 },
+          { id: 3042, name: '循化撒拉族自治县', code: 630225 }
+        ]
+      },
+      {
+        id: 3043,
+        name: '海北藏族自治州',
+        code: 632200,
+        parentOrganId: 3027,
+        areas: [
+          { id: 3044, name: '门源回族自治县', code: 632221 },
+          { id: 3045, name: '祁连县', code: 632222 },
+          { id: 3046, name: '海晏县', code: 632223 },
+          { id: 3047, name: '刚察县', code: 632224 }
+        ]
+      },
+      {
+        id: 3048,
+        name: '黄南藏族自治州',
+        code: 632300,
+        parentOrganId: 3027,
+        areas: [
+          { id: 3049, name: '同仁县', code: 632321 },
+          { id: 3050, name: '尖扎县', code: 632322 },
+          { id: 3051, name: '泽库县', code: 632323 },
+          { id: 3052, name: '河南蒙古族自治县', code: 632324 }
+        ]
+      },
+      {
+        id: 3053,
+        name: '海南藏族自治州',
+        code: 632500,
+        parentOrganId: 3027,
+        areas: [
+          { id: 3054, name: '共和县', code: 632521 },
+          { id: 3055, name: '同德县', code: 632522 },
+          { id: 3056, name: '贵德县', code: 632523 },
+          { id: 3057, name: '兴海县', code: 632524 },
+          { id: 3058, name: '贵南县', code: 632525 }
+        ]
+      },
+      {
+        id: 3059,
+        name: '果洛藏族自治州',
+        code: 632600,
+        parentOrganId: 3027,
+        areas: [
+          { id: 3060, name: '玛沁县', code: 632621 },
+          { id: 3061, name: '班玛县', code: 632622 },
+          { id: 3062, name: '甘德县', code: 632623 },
+          { id: 3063, name: '达日县', code: 632624 },
+          { id: 3064, name: '久治县', code: 632625 },
+          { id: 3065, name: '玛多县', code: 632626 }
+        ]
+      },
+      {
+        id: 3066,
+        name: '玉树藏族自治州',
+        code: 632700,
+        parentOrganId: 3027,
+        areas: [
+          { id: 3067, name: '玉树市', code: 632701 },
+          { id: 3068, name: '杂多县', code: 632722 },
+          { id: 3069, name: '称多县', code: 632723 },
+          { id: 3070, name: '治多县', code: 632724 },
+          { id: 3071, name: '囊谦县', code: 632725 },
+          { id: 3072, name: '曲麻莱县', code: 632726 }
+        ]
+      },
+      {
+        id: 3073,
+        name: '海西蒙古族藏族自治州',
+        code: 632800,
+        parentOrganId: 3027,
+        areas: [
+          { id: 3074, name: '格尔木市', code: 632801 },
+          { id: 3075, name: '德令哈市', code: 632802 },
+          { id: 3076, name: '乌兰县', code: 632821 },
+          { id: 3077, name: '都兰县', code: 632822 },
+          { id: 3078, name: '天峻县', code: 632823 },
+          { id: 3079, name: '海西蒙古族藏族自治州直辖', code: 632825 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 3080,
+    name: '宁夏回族自治区',
+    code: 640000,
+    parentOrganId: 0,
+    areas: [
+      {
+        id: 3081,
+        name: '银川市',
+        code: 640100,
+        parentOrganId: 3080,
+        areas: [
+          { id: 3082, name: '兴庆区', code: 640104 },
+          { id: 3083, name: '西夏区', code: 640105 },
+          { id: 3084, name: '金凤区', code: 640106 },
+          { id: 3085, name: '永宁县', code: 640121 },
+          { id: 3086, name: '贺兰县', code: 640122 },
+          { id: 3087, name: '灵武市', code: 640181 }
+        ]
+      },
+      {
+        id: 3088,
+        name: '石嘴山市',
+        code: 640200,
+        parentOrganId: 3080,
+        areas: [
+          { id: 3089, name: '大武口区', code: 640202 },
+          { id: 3090, name: '惠农区', code: 640205 },
+          { id: 3091, name: '平罗县', code: 640221 }
+        ]
+      },
+      {
+        id: 3092,
+        name: '吴忠市',
+        code: 640300,
+        parentOrganId: 3080,
+        areas: [
+          { id: 3093, name: '利通区', code: 640302 },
+          { id: 3094, name: '红寺堡区', code: 640303 },
+          { id: 3095, name: '盐池县', code: 640323 },
+          { id: 3096, name: '同心县', code: 640324 },
+          { id: 3097, name: '青铜峡市', code: 640381 }
+        ]
+      },
+      {
+        id: 3098,
+        name: '固原市',
+        code: 640400,
+        parentOrganId: 3080,
+        areas: [
+          { id: 3099, name: '原州区', code: 640402 },
+          { id: 3100, name: '西吉县', code: 640422 },
+          { id: 3101, name: '隆德县', code: 640423 },
+          { id: 3102, name: '泾源县', code: 640424 },
+          { id: 3103, name: '彭阳县', code: 640425 }
+        ]
+      },
+      {
+        id: 3104,
+        name: '中卫市',
+        code: 640500,
+        parentOrganId: 3080,
+        areas: [
+          { id: 3105, name: '沙坡头区', code: 640502 },
+          { id: 3106, name: '中宁县', code: 640521 },
+          { id: 3107, name: '海原县', code: 640522 }
+        ]
+      }
+    ]
+  },
+  {
+    id: 3108,
+    name: '新疆维吾尔自治区',
+    code: 650000,
+    parentOrganId: 0,
+    areas: [
+      { id: 3109, name: '阿拉尔市', code: 659002, parentOrganId: 3108 },
+      { id: 3110, name: '北屯市', code: 659005, parentOrganId: 3108 },
+      { id: 3111, name: '可克达拉市', code: 659008, parentOrganId: 3108 },
+      { id: 3112, name: '昆玉市', code: 659009, parentOrganId: 3108 },
+      { id: 3113, name: '石河子市', code: 659001, parentOrganId: 3108 },
+      { id: 3114, name: '双河市', code: 659007, parentOrganId: 3108 },
+      {
+        id: 3115,
+        name: '乌鲁木齐市',
+        code: 650100,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3116, name: '天山区', code: 650102 },
+          { id: 3117, name: '沙依巴克区', code: 650103 },
+          { id: 3118, name: '新市区', code: 650104 },
+          { id: 3119, name: '水磨沟区', code: 650105 },
+          { id: 3120, name: '头屯河区', code: 650106 },
+          { id: 3121, name: '达坂城区', code: 650107 },
+          { id: 3122, name: '米东区', code: 650109 },
+          { id: 3123, name: '乌鲁木齐县', code: 650121 }
+        ]
+      },
+      {
+        id: 3124,
+        name: '克拉玛依市',
+        code: 650200,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3125, name: '独山子区', code: 650202 },
+          { id: 3126, name: '克拉玛依区', code: 650203 },
+          { id: 3127, name: '白碱滩区', code: 650204 },
+          { id: 3128, name: '乌尔禾区', code: 650205 }
+        ]
+      },
+      {
+        id: 3129,
+        name: '吐鲁番市',
+        code: 650400,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3130, name: '高昌区', code: 650402 },
+          { id: 3131, name: '鄯善县', code: 650421 },
+          { id: 3132, name: '托克逊县', code: 650422 }
+        ]
+      },
+      {
+        id: 3133,
+        name: '哈密市',
+        code: 650500,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3134, name: '伊州区', code: 650502 },
+          { id: 3135, name: '巴里坤哈萨克自治县', code: 650521 },
+          { id: 3136, name: '伊吾县', code: 650522 }
+        ]
+      },
+      {
+        id: 3137,
+        name: '昌吉回族自治州',
+        code: 652300,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3138, name: '昌吉市', code: 652301 },
+          { id: 3139, name: '阜康市', code: 652302 },
+          { id: 3140, name: '呼图壁县', code: 652323 },
+          { id: 3141, name: '玛纳斯县', code: 652324 },
+          { id: 3142, name: '奇台县', code: 652325 },
+          { id: 3143, name: '吉木萨尔县', code: 652327 },
+          { id: 3144, name: '木垒哈萨克自治县', code: 652328 }
+        ]
+      },
+      {
+        id: 3145,
+        name: '博尔塔拉蒙古自治州',
+        code: 652700,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3146, name: '博乐市', code: 652701 },
+          { id: 3147, name: '阿拉山口市', code: 652702 },
+          { id: 3148, name: '精河县', code: 652722 },
+          { id: 3149, name: '温泉县', code: 652723 }
+        ]
+      },
+      {
+        id: 3150,
+        name: '巴音郭楞蒙古自治州',
+        code: 652800,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3151, name: '库尔勒市', code: 652801 },
+          { id: 3152, name: '轮台县', code: 652822 },
+          { id: 3153, name: '尉犁县', code: 652823 },
+          { id: 3154, name: '若羌县', code: 652824 },
+          { id: 3155, name: '且末县', code: 652825 },
+          { id: 3156, name: '焉耆回族自治县', code: 652826 },
+          { id: 3157, name: '和静县', code: 652827 },
+          { id: 3158, name: '和硕县', code: 652828 },
+          { id: 3159, name: '博湖县', code: 652829 }
+        ]
+      },
+      {
+        id: 3160,
+        name: '阿克苏地区',
+        code: 652900,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3161, name: '阿克苏市', code: 652901 },
+          { id: 3162, name: '温宿县', code: 652922 },
+          { id: 3163, name: '库车县', code: 652923 },
+          { id: 3164, name: '沙雅县', code: 652924 },
+          { id: 3165, name: '新和县', code: 652925 },
+          { id: 3166, name: '拜城县', code: 652926 },
+          { id: 3167, name: '乌什县', code: 652927 },
+          { id: 3168, name: '阿瓦提县', code: 652928 },
+          { id: 3169, name: '柯坪县', code: 652929 }
+        ]
+      },
+      {
+        id: 3170,
+        name: '克孜勒苏柯尔克孜自治州',
+        code: 653000,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3171, name: '阿图什市', code: 653001 },
+          { id: 3172, name: '阿克陶县', code: 653022 },
+          { id: 3173, name: '阿合奇县', code: 653023 },
+          { id: 3174, name: '乌恰县', code: 653024 }
+        ]
+      },
+      {
+        id: 3175,
+        name: '喀什地区',
+        code: 653100,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3176, name: '喀什市', code: 653101 },
+          { id: 3177, name: '疏附县', code: 653121 },
+          { id: 3178, name: '疏勒县', code: 653122 },
+          { id: 3179, name: '英吉沙县', code: 653123 },
+          { id: 3180, name: '泽普县', code: 653124 },
+          { id: 3181, name: '莎车县', code: 653125 },
+          { id: 3182, name: '叶城县', code: 653126 },
+          { id: 3183, name: '麦盖提县', code: 653127 },
+          { id: 3184, name: '岳普湖县', code: 653128 },
+          { id: 3185, name: '伽师县', code: 653129 },
+          { id: 3186, name: '巴楚县', code: 653130 },
+          { id: 3187, name: '塔什库尔干塔吉克自治县', code: 653131 }
+        ]
+      },
+      {
+        id: 3188,
+        name: '和田地区',
+        code: 653200,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3189, name: '和田市', code: 653201 },
+          { id: 3190, name: '和田县', code: 653221 },
+          { id: 3191, name: '墨玉县', code: 653222 },
+          { id: 3192, name: '皮山县', code: 653223 },
+          { id: 3193, name: '洛浦县', code: 653224 },
+          { id: 3194, name: '策勒县', code: 653225 },
+          { id: 3195, name: '于田县', code: 653226 },
+          { id: 3196, name: '民丰县', code: 653227 }
+        ]
+      },
+      {
+        id: 3197,
+        name: '伊犁哈萨克自治州',
+        code: 654000,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3198, name: '伊宁市', code: 654002 },
+          { id: 3199, name: '奎屯市', code: 654003 },
+          { id: 3200, name: '霍尔果斯市', code: 654004 },
+          { id: 3201, name: '伊宁县', code: 654021 },
+          { id: 3202, name: '察布查尔锡伯自治县', code: 654022 },
+          { id: 3203, name: '霍城县', code: 654023 },
+          { id: 3204, name: '巩留县', code: 654024 },
+          { id: 3205, name: '新源县', code: 654025 },
+          { id: 3206, name: '昭苏县', code: 654026 },
+          { id: 3207, name: '特克斯县', code: 654027 },
+          { id: 3208, name: '尼勒克县', code: 654028 }
+        ]
+      },
+      {
+        id: 3209,
+        name: '塔城地区',
+        code: 654200,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3210, name: '塔城市', code: 654201 },
+          { id: 3211, name: '乌苏市', code: 654202 },
+          { id: 3212, name: '额敏县', code: 654221 },
+          { id: 3213, name: '沙湾县', code: 654223 },
+          { id: 3214, name: '托里县', code: 654224 },
+          { id: 3215, name: '裕民县', code: 654225 },
+          { id: 3216, name: '和布克赛尔蒙古自治县', code: 654226 }
+        ]
+      },
+      {
+        id: 3217,
+        name: '阿勒泰地区',
+        code: 654300,
+        parentOrganId: 3108,
+        areas: [
+          { id: 3218, name: '阿勒泰市', code: 654301 },
+          { id: 3219, name: '布尔津县', code: 654321 },
+          { id: 3220, name: '富蕴县', code: 654322 },
+          { id: 3221, name: '福海县', code: 654323 },
+          { id: 3222, name: '哈巴河县', code: 654324 },
+          { id: 3223, name: '青河县', code: 654325 },
+          { id: 3224, name: '吉木乃县', code: 654326 }
+        ]
+      },
+      { id: 3225, name: '铁门关市', code: 659006, parentOrganId: 3108 },
+      { id: 3226, name: '图木舒克市', code: 659003, parentOrganId: 3108 },
+      { id: 3227, name: '五家渠市', code: 659004, parentOrganId: 3108 }
+    ]
+  },
+  {
+    id: 3229,
+    name: '香港特别行政区',
+    code: 810000,
+    parentOrganId: 0,
+    areas: [
+      { id: 3230, name: '中西区', code: 810001, parentOrganId: 3229 },
+      { id: 3231, name: '湾仔区', code: 810002, parentOrganId: 3229 },
+      { id: 3232, name: '东区', code: 810003, parentOrganId: 3229 },
+      { id: 3233, name: '南区', code: 810004, parentOrganId: 3229 },
+      { id: 3234, name: '油尖旺区', code: 810005, parentOrganId: 3229 },
+      { id: 3235, name: '深水埗区', code: 810006, parentOrganId: 3229 },
+      { id: 3236, name: '九龙城区', code: 810007, parentOrganId: 3229 },
+      { id: 3237, name: '黄大仙区', code: 810008, parentOrganId: 3229 },
+      { id: 3238, name: '观塘区', code: 810009, parentOrganId: 3229 },
+      { id: 3239, name: '荃湾区', code: 810010, parentOrganId: 3229 },
+      { id: 3240, name: '屯门区', code: 810011, parentOrganId: 3229 },
+      { id: 3241, name: '元朗区', code: 810012, parentOrganId: 3229 },
+      { id: 3243, name: '北区', code: 810013, parentOrganId: 3229 },
+      { id: 3245, name: '大埔区', code: 810014, parentOrganId: 3229 },
+      { id: 3246, name: '西贡区', code: 810015, parentOrganId: 3229 },
+      { id: 3247, name: '沙田区', code: 810016, parentOrganId: 3229 },
+      { id: 3248, name: '葵青区', code: 810017, parentOrganId: 3229 },
+      { id: 3249, name: '离岛区', code: 810018, parentOrganId: 3229 }
+    ]
+  },
+  {
+    id: 3251,
+    name: '澳门特别行政区',
+    code: 820000,
+    parentOrganId: 0,
+    areas: [
+      { id: 3252, name: '花地玛堂区', code: 820001, parentOrganId: 3251 },
+      { id: 3253, name: '花王堂区', code: 820002, parentOrganId: 3251 },
+      { id: 3254, name: '望德堂区', code: 820003, parentOrganId: 3251 },
+      { id: 3255, name: '大堂区', code: 820004, parentOrganId: 3251 },
+      { id: 3256, name: '风顺堂区', code: 820005, parentOrganId: 3251 },
+      { id: 3257, name: '嘉模堂区', code: 820006, parentOrganId: 3251 },
+      { id: 3258, name: '路凼填海区', code: 820007, parentOrganId: 3251 },
+      { id: 3259, name: '圣方济各堂区', code: 820008, parentOrganId: 3251 }
+    ]
+  }
+]

+ 33 - 0
src/helpers/constant.ts

@@ -0,0 +1,33 @@
+/**
+ * 订单状态
+ */
+export const orderStatus = {
+  WAIT_PAY: '待支付',
+  PAYING: '支付中',
+  PAID: '已付款',
+  TIMEOUT: '已关闭',
+  FAIL: '支付失败',
+  CLOSED: '已关闭',
+  REFUNDING: '退款中',
+  REFUNDED: '已退款'
+} as any;
+
+/**
+ * 学制
+ */
+export const gradeYear = {
+  THREE_YEAR_SYSTEM: '三年制',
+  FORE_YEAR_SYSTEM: '四年制',
+  FIVE_YEAR_SYSTEM: '五年制',
+  SIX_YEAR_SYSTEM: '六年制',
+  NINE_YEAR_SYSTEM: '九年制'
+};
+
+/**
+ * 学校类型
+ */
+export const schoolType = {
+  PRIMARY: '小学',
+  JUNIOR: '初中',
+  PRIMARY_JUNIOR: '小初一体'
+};

+ 7 - 4
src/helpers/request.ts

@@ -4,6 +4,9 @@ import { browser } from '@/helpers/utils';
 import { setLogout, setLoginError, state } from '@/state';
 import { postMessage } from './native-message';
 import { showLoadingToast, showToast, closeToast } from 'vant';
+import { createStorage } from '@/helpers/storage';
+import { ACCESS_TOKEN } from '@/store/mutation-types';
+const storage = createStorage({ prefixKey: '', storage: sessionStorage });
 
 export interface SearchInitParams {
   rows?: string | number;
@@ -33,14 +36,14 @@ request.interceptors.request.use(
     }
 
     initRequest = options.initRequest || false;
-    const Authorization = sessionStorage.getItem('Authorization') || '';
+    const Authorization = storage.get(ACCESS_TOKEN) || '';
     const authHeaders: any = {};
     if (
       Authorization &&
       ![
-        '/api-auth/userlogin',
-        '/api-auth/smsLogin',
-        '/api-auth/open/sendSms'
+        '/edu-oauth/userlogin',
+        '/edu-oauth/smsLogin',
+        '/edu-oauth/open/sendSms'
       ].includes(url)
     ) {
       authHeaders.Authorization = Authorization;

+ 134 - 0
src/helpers/storage.ts

@@ -0,0 +1,134 @@
+// 默认缓存期限为7天
+const DEFAULT_CACHE_TIME = 60 * 60 * 24 * 7;
+
+/**
+ * 创建本地缓存对象
+ * @param {string=} prefixKey -
+ * @param {Object} [storage=localStorage] - sessionStorage | localStorage
+ */
+export const createStorage = ({
+  prefixKey = '',
+  storage = localStorage
+} = {}) => {
+  /**
+   * 本地缓存类
+   * @class Storage
+   */
+  const Storage = class {
+    private storage = storage;
+    private prefixKey?: string = prefixKey;
+
+    private getKey(key: string) {
+      return `${this.prefixKey}${key}`.toUpperCase();
+    }
+
+    /**
+     * @description 设置缓存
+     * @param {string} key 缓存键
+     * @param {*} value 缓存值
+     * @param expire
+     */
+    set(key: string, value: any, expire: number | null = DEFAULT_CACHE_TIME) {
+      const stringData = JSON.stringify({
+        value,
+        expire: expire !== null ? new Date().getTime() + expire * 1000 : null
+      });
+      this.storage.setItem(this.getKey(key), stringData);
+    }
+
+    /**
+     * 读取缓存
+     * @param {string} key 缓存键
+     * @param {*=} def 默认值
+     */
+    get(key: string, def: any = null) {
+      const item = this.storage.getItem(this.getKey(key));
+      if (item) {
+        try {
+          const data = JSON.parse(item);
+          const { value, expire } = data;
+          // 在有效期内直接返回
+          if (expire === null || expire >= Date.now()) {
+            return value;
+          }
+          this.remove(key);
+        } catch (e) {
+          return def;
+        }
+      }
+      return def;
+    }
+
+    /**
+     * 从缓存删除某项
+     * @param {string} key
+     */
+    remove(key: string) {
+      this.storage.removeItem(this.getKey(key));
+    }
+
+    /**
+     * 清空所有缓存
+     * @memberOf Cache
+     */
+    clear(): void {
+      this.storage.clear();
+    }
+
+    /**
+     * 设置cookie
+     * @param {string} name cookie 名称
+     * @param {*} value cookie 值
+     * @param {number=} expire 过期时间
+     * 如果过期时间未设置,默认关闭浏览器自动删除
+     * @example
+     */
+    setCookie(
+      name: string,
+      value: any,
+      expire: number | null = DEFAULT_CACHE_TIME
+    ) {
+      document.cookie = `${this.getKey(name)}=${value}; Max-Age=${expire}`;
+    }
+
+    /**
+     * 根据名字获取cookie值
+     * @param name
+     */
+    getCookie(name: string): string {
+      const cookieArr = document.cookie.split('; ');
+      for (let i = 0, length = cookieArr.length; i < length; i++) {
+        const kv = cookieArr[i].split('=');
+        if (kv[0] === this.getKey(name)) {
+          return kv[1];
+        }
+      }
+      return '';
+    }
+
+    /**
+     * 根据名字删除指定的cookie
+     * @param {string} key
+     */
+    removeCookie(key: string) {
+      this.setCookie(key, 1, -1);
+    }
+
+    /**
+     * 清空cookie,使所有cookie失效
+     */
+    clearCookie(): void {
+      const keys = document.cookie.match(/[^ =;]+(?==)/g);
+      if (keys) {
+        for (let i = keys.length; i--; ) {
+          document.cookie = keys[i] + '=0;expire=' + new Date(0).toUTCString();
+        }
+      }
+    }
+  };
+  return new Storage();
+};
+
+export const storage = createStorage();
+
+export default Storage;

+ 60 - 6
src/helpers/utils.ts

@@ -1,3 +1,6 @@
+import numeral from 'numeral';
+import dayjs from 'dayjs';
+
 export const browser = () => {
   const u = navigator.userAgent;
   return {
@@ -23,6 +26,22 @@ export const browser = () => {
   };
 };
 
+// 获取授权的code码
+export const getUrlCode = (name = 'code') => {
+  // 截取url中的code方法
+  const url = location.search;
+  const theRequest: any = new Object();
+  if (url.indexOf('?') != -1) {
+    const str = url.substr(1);
+    const strs = str.split('&');
+    for (let i = 0; i < strs.length; i++) {
+      theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1];
+    }
+  }
+  console.log(theRequest, 'theRequest');
+  return theRequest[name];
+};
+
 export const getRandomKey = () => {
   const key = '' + new Date().getTime() + Math.floor(Math.random() * 1000000);
   return key;
@@ -135,12 +154,47 @@ export const toChinesNum = (num: any) => {
 
 // 秒转分
 export const getSecondRPM = (second: number, type?: string) => {
-  if (isNaN(second)) return '00:00'
-  const mm = Math.floor(second / 60).toString().padStart(2, '0')
-  const dd = Math.floor(second % 60).toString().padStart(2, '0')
+  if (isNaN(second)) return '00:00';
+  const mm = Math.floor(second / 60)
+    .toString()
+    .padStart(2, '0');
+  const dd = Math.floor(second % 60)
+    .toString()
+    .padStart(2, '0');
   if (type === 'cn') {
-    return mm + '分' + dd + '秒'
+    return mm + '分' + dd + '秒';
   } else {
-    return mm + ':' + dd
+    return mm + ':' + dd;
   }
-}
+};
+
+export const getWeekCh = (week: number, type = 0) => {
+  const template = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
+  const template2 = [
+    '星期天',
+    '星期一',
+    '星期二',
+    '星期三',
+    '星期四',
+    '星期五',
+    '星期六'
+  ];
+  return type ? template2[week] : template[week];
+};
+
+export const numberFormat = (num: number, type?: string) => {
+  if (type === 'percent') {
+    return numeral(num).format('0.0%');
+  }
+  return numeral(num).format('0,0');
+};
+
+export const moneyFormat = (value: number, format = '0,0.00') => {
+  return numeral(value).format(format);
+};
+export const dateFormat = (
+  value: string | Date,
+  format = 'YYYY-MM-DD HH:mm:ss'
+) => {
+  return dayjs(value).format(format);
+};

+ 4 - 0
src/main.ts

@@ -10,6 +10,7 @@ import './styles/index.less';
 import { promisefiyPostMessage, postMessage } from './helpers/native-message';
 import { state } from './state';
 import { setAuth } from './helpers/utils';
+import { setupStore } from './store';
 
 // 获取token
 promisefiyPostMessage({ api: 'getToken' }).then((res: any) => {
@@ -36,6 +37,9 @@ postMessage({ api: 'getNavHeight' }, (res: any) => {
 
 const app = createApp(App);
 
+// store plugin: pinia
+setupStore(app);
+
 dayjs.locale('zh-ch');
 
 app.use(router);

+ 92 - 0
src/router/router-root.ts

@@ -15,6 +15,98 @@ export default [
     }
   },
   {
+    path: '/student-register',
+    component: () => import('@/views/student-register/index'),
+    meta: {
+      title: '学生注册'
+    }
+  },
+  {
+    path: '/student-digital-tools',
+    component: () => import('@/views/student-register/digital-tools/index'),
+    meta: {
+      title: '数字化乐器学练工具'
+    }
+  },
+  {
+    path: '/goods-list',
+    component: () => import('@/views/student-register/shop-mall/goods-list'),
+    meta: {
+      title: '商品列表'
+    }
+  },
+  {
+    path: '/goodsDetail',
+    component: () =>
+      import('@/views/student-register/shop-mall/goods-detail/index'),
+    meta: {
+      title: '商品列表'
+    }
+  },
+  {
+    path: '/order-detail',
+    component: () => import('@/views/student-register/order-detail'),
+    meta: {
+      title: '订单详情'
+    }
+  },
+  {
+    path: '/knowledge-library',
+    component: () => import('@/views/knowledge-library/index'),
+    meta: {
+      title: '知识库'
+    }
+  },
+  {
+    path: '/payment-result',
+    name: 'payment-result',
+    component: () => import('@/views/payment-result/index'),
+    meta: {
+      title: '支付详情'
+    }
+  },
+  {
+    path: '/shopAddress',
+    name: 'shopAddress',
+    component: () => import('@/views/student-register/shop-address/index'),
+    meta: {
+      title: '支付详情'
+    }
+  },
+  {
+    path: '/addressOperation',
+    name: 'addressOperation',
+    component: () =>
+      import('@/views/student-register/shop-address/address-operation'),
+    meta: {
+      title: '收货地址'
+    }
+  },
+  {
+    path: '/payCenter',
+    name: 'payCenter',
+    component: () => import('@/views/adapay/pay-center'),
+    meta: {
+      title: '支付'
+    }
+  },
+  {
+    path: '/payDefine',
+    name: 'payDefine',
+    component: () => import('@/views/adapay/pay-define'),
+    meta: {
+      title: '支付'
+    }
+  },
+  {
+    path: '/payResult',
+    name: 'payResult',
+    component: () => import('@/views/adapay/pay-result'),
+    meta: {
+      title: '支付'
+    }
+  },
+  {
     path: '/:pathMatch(.*)*',
     component: () => import('@/views/404'),
     meta: {

+ 2 - 0
src/shims-vue.d.ts

@@ -4,3 +4,5 @@ declare module '*.vue' {
   export default component;
 }
 declare module 'vudio.js';
+
+declare module 'numeral';

+ 37 - 0
src/state.ts

@@ -54,3 +54,40 @@ export const openDefaultWebView = (url?: string, callBack?: any) => {
     callBack && callBack();
   }
 };
+
+/**
+ * @description 微信授权-会根据环境去判断
+ * @param wxAppId
+ * @param urlString 回调链接【默认当前页面地址】
+ * @returns void
+ */
+export const goWechatAuth = (wxAppId: string, urlString?: string) => {
+  // 开发环境
+  if (import.meta.env.DEV) {
+    const replaceUrl =
+      `https://online.lexiaoya.cn/getWxCode?appid=${
+        wxAppId || 'wx8654c671631cfade'
+      }&state=STATE&redirect_uri=` +
+      encodeURIComponent(urlString || window.location.href);
+    window.location.replace(replaceUrl);
+  }
+
+  // 生产环境
+  if (import.meta.env.PROD) {
+    goAuth(wxAppId, urlString);
+  }
+};
+
+const goAuth = (wxAppId: string, urlString?: string) => {
+  // 用户授权
+  console.log(
+    urlString || window.location.href,
+    'urlString || window.location.href'
+  );
+  const urlNow = encodeURIComponent(urlString || window.location.href);
+  console.log(urlNow, 'urlNow');
+  const scope = 'snsapi_base'; //snsapi_userinfo   //静默授权 用户无感知
+  const appid = wxAppId || 'wx8654c671631cfade';
+  const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${urlNow}&response_type=code&scope=${scope}&state=STATE&connect_redirect=1#wechat_redirect`;
+  window.location.replace(url);
+};

+ 10 - 0
src/store/index.ts

@@ -0,0 +1,10 @@
+import type { App } from 'vue';
+import { createPinia } from 'pinia';
+
+const store = createPinia();
+
+export function setupStore(app: App<Element>) {
+  app.use(store);
+}
+
+export { store };

+ 89 - 0
src/store/modules/student-register-store.ts

@@ -0,0 +1,89 @@
+import { defineStore } from 'pinia';
+import { createStorage } from '@/helpers/storage';
+import { ACCESS_TOKEN } from '../mutation-types';
+const storage = createStorage({ prefixKey: '', storage: sessionStorage });
+
+export interface IUserState {
+  token: string;
+  selectGoods: any[];
+  selectVip: any[];
+}
+
+export const useStudentRegisterStore = defineStore('student-register-store', {
+  state: (): IUserState => ({
+    token: storage.get(ACCESS_TOKEN, ''),
+    selectGoods: [] as any,
+    selectVip: [] as any
+  }),
+  getters: {
+    getToken(): string {
+      return this.token;
+    },
+    getGoods(): any[] {
+      return this.selectGoods;
+    },
+    getVip(): any {
+      return this.selectVip;
+    }
+  },
+  actions: {
+    /**
+     * 设置token
+     * @param token
+     */
+    setToken(token: string) {
+      this.token = token;
+      storage.set(ACCESS_TOKEN, token);
+    },
+    /**
+     * 设置选择的商品
+     * @param goods 商品
+     */
+    setGoods(goods: any) {
+      this.selectGoods.push(goods);
+    },
+    /**
+     * 删除商品
+     * @param goodsId 商品编号
+     */
+    deleteGoods(goodsId: string | number): void {
+      const index = this.selectGoods.findIndex(
+        (goods: any) => goods.goodsId === goodsId
+      );
+      this.selectGoods.splice(index, 1);
+    },
+    /**
+     * 设置选中的AI学练工具
+     * @param vip 小酷商品
+     */
+    setVip(vip: any) {
+      this.selectVip = vip;
+    },
+    /**
+     * 删除选中AI学练工具
+     * @param goodsId 商品编号
+     */
+    deleteVip(goodsId: string | number): void {
+      const index = this.selectVip.findIndex(
+        (goods: any) => goods.goodsId === goodsId
+      );
+      this.selectVip.splice(index, 1);
+    },
+    /**
+     * 判断vip是否选中
+     * @param goodsId 商品编号
+     * @returns boolean
+     */
+    selectedVip(goodsId: string | number): Boolean {
+      const index = this.selectVip.findIndex(
+        (goods: any) => goods.goodsId === goodsId
+      );
+      return index >= 0 ? true : false;
+    }
+  }
+});
+
+// Need to be used outside the setup
+// export function useUserStoreWidthOut() {
+//   return useUserStore(store);
+// }

+ 4 - 0
src/store/mutation-types.ts

@@ -0,0 +1,4 @@
+export const ACCESS_TOKEN = 'ACCESS-TOKEN'; // 用户token
+export const IM_TOKEN = 'IM-TOKEN'; //
+export const CURRENT_USER = 'CURRENT-USER'; // 当前用户信息
+export const TABS_ROUTES = 'TABS-ROUTES'; // 标签页

+ 69 - 1
src/styles/index.less

@@ -112,6 +112,44 @@ body {
   padding-bottom: calc(20px + env(safe-area-inset-bottom));
 }
 
+// 搜索公用样式
+.popupBottomSearch {
+  --van-picker-toolbar-height: 44px !important;
+
+  .van-picker__toolbar {
+    position: relative;
+
+    &::after {
+      position: absolute;
+      box-sizing: border-box;
+      content: ' ';
+      pointer-events: none;
+      right: var(--van-padding-md);
+      bottom: 0;
+      left: var(--van-padding-md);
+      border-bottom: 1px solid var(--van-cell-border-color);
+      transform: scaleY(0.5);
+    }
+  }
+
+  .van-picker__columns {
+    padding: 0 24px;
+  }
+
+  .van-picker-column {
+    position: relative;
+    z-index: 1;
+  }
+
+  .van-picker__frame {
+    z-index: 0;
+
+    &::after {
+      background: #f2f2f2;
+      border-radius: 8px;
+    }
+  }
+}
 
 .btnGroupPopup {
   display: flex;
@@ -166,4 +204,34 @@ body {
 .van-scale-enter-active,
 .van-scale-leave-active {
   transition: all 0.25s;
-}
+}
+
+.mb12 {
+  margin-bottom: 12px !important;
+}
+
+.btnGroup {
+  padding: 0 25px;
+  padding-bottom: calc(20px + env(safe-area-inset-bottom));
+
+  .van-button {
+    font-size: 18px !important;
+    font-weight: 500;
+  }
+}
+
+.btnMore {
+  padding-left: 13px;
+  padding-right: 13px;
+  display: flex !important;
+  justify-content: center !important;
+
+  // :global {
+  .van-button {
+    width: 100% !important;
+  }
+
+  .van-button+.van-button {
+    margin-left: 15px;
+  }
+}

+ 18 - 0
src/views/adapay/pay-center/index.module.less

@@ -0,0 +1,18 @@
+.payCenter {
+  min-height: 100vh;
+  overflow: hidden;
+}
+.error-icon {
+  display: block;
+  color: #ffb07b;
+  font-size: 30px;
+  margin-bottom: 30px;
+  font-weight: bold;
+}
+.error-text {
+  font-size: 15px;
+  width: 100%;
+  text-align: center;
+  color: #3f3f3f;
+  margin-top: 100px;
+}

+ 94 - 0
src/views/adapay/pay-center/index.tsx

@@ -0,0 +1,94 @@
+import { browser, getUrlCode } from '@/helpers/utils'
+import { goWechatAuth } from '@/state'
+import { Icon } from 'vant'
+import { defineComponent, onMounted, reactive } from 'vue'
+import { useRoute, useRouter } from 'vue-router'
+import styles from './index.module.less'
+
+export default defineComponent({
+  name: 'pay-center',
+  setup() {
+    const router = useRouter()
+    const route = useRoute()
+    const state = reactive({
+      errorText: '',
+      code: null as any,
+      pay_channel: route.query.pay_channel as any,
+      wxAppId: route.query.wxAppId as any,
+      body: route.query.body as any,
+      price: route.query.price as any,
+      orderNo: route.query.orderNo as any,
+      userId: route.query.userId as any
+    })
+
+    const init = () => {
+      const pay_channel = state.pay_channel
+      if (browser().weixin) {
+        if (pay_channel === 'wx_pub') {
+          //授权
+          const code = getUrlCode()
+          console.log(code)
+          if (code) {
+            state.code = code // 赋值code码
+            onPayPage() // 跳转支付页
+          } else {
+            // goAuth()
+            goWechatAuth(state.wxAppId)
+          }
+          document.title = '微信支付'
+        } else if (pay_channel == 'alipay_qr') {
+          state.errorText = '请使用支付宝扫码'
+        }
+      } else if (browser().alipay) {
+        if (pay_channel === 'wx_pub') {
+          state.errorText = '请使用微信扫码'
+        } else if (pay_channel == 'alipay_qr') {
+          // 支付宝支付
+          document.title = '支付宝支付'
+          onPayPage() // 跳转支付页
+        }
+      } else {
+        state.errorText = '请在微信或支付宝客户端打开'
+      }
+      state.errorText && (document.title = 'ERROR')
+    }
+
+    const onPayPage = () => {
+      // 跳转对应支付页
+      router.replace({
+        path: '/payDefine',
+        query: {
+          pay_channel: state.pay_channel,
+          wxAppId: state.wxAppId,
+          body: state.body,
+          price: state.price,
+          code: state.code,
+          orderNo: state.orderNo,
+          userId: state.userId
+        }
+      })
+    }
+    // const goAuth = () => {
+    //   // 用户授权
+    //   const urlNow = encodeURIComponent(window.location.href)
+    //   const scope = 'snsapi_base' //snsapi_userinfo   //静默授权 用户无感知
+    //   const appid = state.wxAppId || 'wx8654c671631cfade'
+    //   const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${urlNow}&response_type=code&scope=${scope}&state=STATE&connect_redirect=1#wechat_redirect`
+    //   window.location.replace(url)
+    // }
+
+    onMounted(() => {
+      init()
+    })
+
+    return () => (
+      <div class={styles.payCenter}>
+        <div class={styles['error-text']}>
+          {state.errorText && <Icon class={styles['error-icon']} name="warning-o" />}
+
+          {state.errorText}
+        </div>
+      </div>
+    )
+  }
+})

+ 44 - 0
src/views/adapay/pay-define/index.module.less

@@ -0,0 +1,44 @@
+.paydefine {
+  overflow: hidden;
+  background: #fff;
+  min-height: 100vh;
+
+  :global {
+    .van-cell__title,
+    .van-cell__value {
+      // flex: auto;
+      font-size: 15px;
+      color: #4f4f4f;
+    }
+    .van-button {
+      font-size: 16px;
+      width: 86%;
+      margin: 20px auto;
+    }
+  }
+}
+.amount {
+  padding: 35px 0 55px;
+  font-size: 41px;
+  font-weight: bold;
+  color: #333333;
+  line-height: 36px;
+  text-align: center;
+  span {
+    font-size: 31px;
+  }
+}
+.error-text {
+  font-size: 15px;
+  width: 100%;
+  text-align: center;
+  color: #3f3f3f;
+  margin-top: 100px;
+}
+
+.error-icon {
+  display: block;
+  color: #ffb07b;
+  font-size: 16px;
+  margin-bottom: 20px;
+}

+ 231 - 0
src/views/adapay/pay-define/index.tsx

@@ -0,0 +1,231 @@
+import request from '@/helpers/request';
+import { browser, getUrlCode, moneyFormat } from '@/helpers/utils';
+import { goWechatAuth } from '@/state';
+import numeral from 'numeral';
+import { Button, Cell, CellGroup, Icon, showToast } from 'vant';
+import { defineComponent, onMounted, reactive } from 'vue';
+import { useRoute } from 'vue-router';
+import styles from './index.module.less';
+
+export default defineComponent({
+  name: 'pay-define',
+  setup() {
+    const route = useRoute();
+    const state = reactive({
+      browserStatus: false,
+      errorText: '',
+      code: null as any,
+      pay_channel: route.query.pay_channel as any,
+      wxAppId: route.query.wxAppId as any,
+      body: route.query.body as any,
+      price: route.query.price as any,
+      orderNo: route.query.orderNo as any,
+      userId: route.query.userId as any,
+      payInfo: {} as any
+    });
+
+    const getPayment = async () => {
+      try {
+        if (parseFloat(state.price) <= 0) {
+          showToast('支付金额异常');
+          return;
+        }
+        const payMap: any = {
+          merOrderNo: state.orderNo,
+          paymentChannel: state.pay_channel, // 支付渠道
+          userId: state.userId
+        };
+        //     // 判断是否是微信公众号支付
+        if (state.pay_channel == 'wx_pub') {
+          payMap.code = state.code;
+        }
+        console.log(payMap, 'payMap');
+        const { data } = await request.post(
+          '/edu-app/open/userOrder/executePayment',
+          {
+            hideLoading: false,
+            data: {
+              ...payMap
+            }
+          }
+        );
+
+        console.log(data, 'payment');
+        scanCodePay(data.reqParams);
+      } catch (e) {
+        //
+        console.log(e);
+      }
+    };
+
+    const scanCodePay = (data: any) => {
+      // 判断支付方式 如果是 test 模式 支付用测试url 否则用生产url
+      if (state.pay_channel == 'alipay_qr') {
+        const url =
+          data.prod_mode === 'false'
+            ? data.expend.qrcode_url +
+              '?payment_id=' +
+              data.id +
+              '&pay_channel=' +
+              data.pay_channel
+            : data.expend.qrcode_url;
+        window.location.href = url;
+      } else if (state.pay_channel == 'wx_pub') {
+        const tempPayInfo = JSON.parse(data.expend.pay_info);
+        state.payInfo = tempPayInfo;
+        if (typeof (window as any).WeixinJSBridge == 'undefined') {
+          if (document.addEventListener) {
+            document.addEventListener(
+              'WeixinJSBridgeReady',
+              onBridgeReady,
+              false
+            );
+          } else if ((document as any).attachEvent) {
+            (document as any)
+              .attachEvent(
+                'WeixinJSBridgeReady',
+                onBridgeReady
+              )(document as any)
+              .attachEvent('onWeixinJSBridgeReady', onBridgeReady);
+          }
+        } else {
+          onBridgeReady();
+        }
+      }
+    };
+
+    const onBridgeReady = () => {
+      const payInfo = state.payInfo;
+      // let orderNo = state.orderNo
+      (window as any).WeixinJSBridge.invoke(
+        'getBrandWCPayRequest',
+        {
+          appId: payInfo.appId, //公众号名称,由商户传入
+          timeStamp: payInfo.timeStamp, //时间戳,自1970年以来的秒数
+          nonceStr: payInfo.nonceStr, //随机串
+          package: payInfo.package,
+          signType: payInfo.signType, //微信签名方式:
+          paySign: payInfo.paySign //微信签名
+        },
+        (res: any) => {
+          // if(res.err_msg == "get_brand_wcpay_request:ok" ){
+          // 使用以上方式判断前端返回,微信团队郑重提示:
+          //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
+          // } else
+          if (
+            res.err_msg == 'get_brand_wcpay_request:cancel' ||
+            res.err_msg == 'get_brand_wcpay_request:fail'
+          ) {
+            window.location.replace(
+              location.origin +
+                '/orchestra-student/#/payment-result?orderNo=' +
+                state.orderNo
+            );
+          } else {
+            // 使用以上方式判断前端返回,微信团队郑重提示:
+            //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
+            // alert('支付成功')
+            window.location.replace(
+              location.origin +
+                '/orchestra-student/#/payment-result?orderNo=' +
+                state.orderNo
+            );
+          }
+        }
+      );
+    };
+
+    // const goAuth = () => {
+    //   // 用户授权
+    //   const urlNow = encodeURIComponent(window.location.href)
+    //   const scope = 'snsapi_base' //snsapi_userinfo   //静默授权 用户无感知
+    //   const appid = state.wxAppId || 'wx8654c671631cfade'
+    //   const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${urlNow}&response_type=code&scope=${scope}&state=STATE&connect_redirect=1#wechat_redirect`
+    //   window.location.replace(url)
+    // }
+
+    const init = () => {
+      const pay_channel = state.pay_channel;
+      if (browser().weixin) {
+        if (pay_channel === 'wx_pub') {
+          //授权
+          const code = getUrlCode();
+          console.log(code);
+          if (code) {
+            state.code = code; // 赋值code码
+          } else {
+            // goAuth()
+            goWechatAuth(state.wxAppId);
+          }
+          state.browserStatus = true;
+          document.title = '微信支付';
+        } else if (pay_channel == 'alipay_qr') {
+          state.errorText = '请使用支付宝扫码';
+        }
+      } else if (browser().alipay) {
+        if (pay_channel === 'wx_pub') {
+          state.errorText = '请使用微信扫码';
+        } else if (pay_channel == 'alipay_qr') {
+          // 支付宝支付
+          state.browserStatus = true;
+          document.title = '支付宝支付';
+        }
+      } else {
+        state.errorText = '请在微信或支付宝客户端打开';
+      }
+      state.errorText && (document.title = 'ERROR');
+    };
+
+    onMounted(() => {
+      console.log(state);
+      init();
+    });
+    return () => (
+      <div class={styles.paydefine}>
+        {state.browserStatus && (
+          <div class={styles.container}>
+            <div class={styles.amount}>
+              <span>¥ </span>
+              {moneyFormat(state.price)}
+            </div>
+            <CellGroup inset>
+              <Cell
+                title="订单信息"
+                value={state.body}
+                valueClass={styles.values}></Cell>
+              <Cell
+                title="支付方式"
+                value={
+                  state.pay_channel === 'wx_pub' ? '微信' : '支付宝'
+                }></Cell>
+              <Cell
+                title="实付金额"
+                value={`¥ ${moneyFormat(state.price)}元`}></Cell>
+            </CellGroup>
+
+            <Button
+              type="primary"
+              block
+              size="large"
+              onClick={getPayment}
+              round>
+              立即支付
+            </Button>
+          </div>
+        )}
+
+        {!state.browserStatus && (
+          <div class={styles.container}>
+            <div class={styles['error-text']}>
+              {state.errorText && (
+                <Icon class={styles['error-icon']} name="warning-o" />
+              )}
+
+              {state.errorText}
+            </div>
+          </div>
+        )}
+      </div>
+    );
+  }
+});

+ 55 - 0
src/views/adapay/pay-result/index.module.less

@@ -0,0 +1,55 @@
+.paywxresult {
+  overflow: hidden;
+  // background: #fff;
+  min-height: 100vh;
+
+  :gloabl {
+    .van-cell {
+      padding: 12px 16px;
+    }
+    .van-cell__title,
+    .van-cell__value {
+      flex: auto;
+      font-size: 16px;
+      color: #4f4f4f;
+    }
+    .van-button {
+      font-size: 16px;
+      width: 86%;
+      margin: 20px auto;
+    }
+    .van-loading__spinner {
+      width: 50px;
+      height: 50px;
+    }
+  }
+}
+.container {
+  background: #fff;
+  padding: 15px 0;
+}
+
+.order-loading {
+  padding: 15px 0;
+  margin-top: 15px;
+  background-color: #ffffff;
+  text-align: center;
+  font-size: 15px;
+  & > p {
+    margin-bottom: 15px;
+  }
+}
+.error-text {
+  font-size: 15px;
+  width: 100%;
+  text-align: center;
+  color: #3f3f3f;
+  margin-top: 100px;
+}
+
+.error-icon {
+  display: block;
+  color: #ffb07b;
+  font-size: 22px;
+  margin-bottom: 20px;
+}

+ 237 - 0
src/views/adapay/pay-result/index.tsx

@@ -0,0 +1,237 @@
+import request from '@/helpers/request';
+import { browser, getUrlCode, moneyFormat } from '@/helpers/utils';
+import { goWechatAuth } from '@/state';
+import {
+  Cell,
+  CellGroup,
+  Icon,
+  Loading,
+  showConfirmDialog,
+  showToast
+} from 'vant';
+import { defineComponent, onMounted, reactive } from 'vue';
+import { useRouter, useRoute } from 'vue-router';
+import styles from './index.module.less';
+
+export default defineComponent({
+  name: 'pay-result',
+  setup() {
+    const router = useRouter();
+    const route = useRoute();
+    const state = reactive({
+      errorText: '',
+      browserStatus: false,
+      code: null as any,
+      pay_channel: route.query.pay_channel as any,
+      wxAppId: route.query.wxAppId as any,
+      body: route.query.body as any,
+      price: route.query.price as any,
+      orderNo: route.query.orderNo as any,
+      userId: route.query.userId as any,
+      payInfo: {} as any
+    });
+
+    console.log(state.errorText);
+
+    const init = () => {
+      const query = route.query;
+      console.log(query);
+      // 判断是否有支付对象
+      if (!query.orderNo || !query.pay_channel) {
+        showConfirmDialog({
+          message: '支付订单信息错误请重新支付',
+          showCancelButton: false
+        }).then(() => {
+          router.back();
+        });
+      } else {
+        // 判断当前浏览器
+        if (browser().weixin) {
+          state.browserStatus = true;
+          getWxPay();
+        } else if (browser().alipay) {
+          state.browserStatus = true;
+          getPayment();
+        } else {
+          state.errorText = '请在微信或支付宝客户端打开';
+          document.title = 'ERROR';
+        }
+      }
+    };
+
+    const getPayment = async () => {
+      try {
+        if (parseFloat(state.price) <= 0) {
+          showToast('支付金额异常');
+          return;
+        }
+        const payMap: any = {
+          merOrderNo: state.orderNo,
+          paymentChannel: state.pay_channel, // 支付渠道
+          userId: state.userId
+        };
+        //     // 判断是否是微信公众号支付
+        if (state.pay_channel == 'wx_pub') {
+          payMap.code = state.code;
+        }
+
+        const { data } = await request.post(
+          '/edu-app/open/userOrder/executePayment',
+          {
+            data: {
+              ...payMap
+            }
+          }
+        );
+
+        scanCodePay(data.reqParams);
+      } catch (e) {
+        //
+        console.log(e);
+        // 接口报错也跳转到支付回调页
+        window.location.replace(
+          location.origin +
+            '/classroom-app/#/payment-result?orderNo=' +
+            state.orderNo
+        );
+      }
+    };
+
+    const scanCodePay = (data: any) => {
+      // 判断支付方式 如果是 test 模式 支付用测试url 否则用生产url
+      if (state.pay_channel == 'alipay_qr') {
+        const url =
+          data.prod_mode === 'false'
+            ? data?.expend?.qrcode_url +
+              '?payment_id=' +
+              data.id +
+              '&pay_channel=' +
+              data.pay_channel
+            : data?.expend?.qrcode_url;
+        window.location.href = url;
+      } else if (state.pay_channel == 'alipay_wap') {
+        window.location.href = data?.expend?.pay_info;
+      } else if (state.pay_channel == 'wx_pub') {
+        const tempPayInfo = data?.expend
+          ? JSON.parse(data?.expend?.pay_info)
+          : data;
+        state.payInfo = tempPayInfo;
+        if (typeof (window as any).WeixinJSBridge == 'undefined') {
+          if (document.addEventListener) {
+            document.addEventListener(
+              'WeixinJSBridgeReady',
+              onBridgeReady,
+              false
+            );
+          } else if ((document as any).attachEvent) {
+            (document as any)
+              .attachEvent(
+                'WeixinJSBridgeReady',
+                onBridgeReady
+              )(document as any)
+              .attachEvent('onWeixinJSBridgeReady', onBridgeReady);
+          }
+        } else {
+          onBridgeReady();
+        }
+      }
+    };
+
+    const onBridgeReady = () => {
+      const payInfo = state.payInfo;
+      // let orderNo = state.orderNo
+      (window as any).WeixinJSBridge.invoke(
+        'getBrandWCPayRequest',
+        {
+          appId: payInfo.appId, //公众号名称,由商户传入
+          timeStamp: payInfo.timeStamp, //时间戳,自1970年以来的秒数
+          nonceStr: payInfo.nonceStr, //随机串
+          package: payInfo.package || payInfo.packageValue,
+          signType: payInfo.signType, //微信签名方式:
+          paySign: payInfo.paySign //微信签名
+        },
+        (res: any) => {
+          // if(res.err_msg == "get_brand_wcpay_request:ok" ){
+          // 使用以上方式判断前端返回,微信团队郑重提示:
+          //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
+          // } else
+          if (
+            res.err_msg == 'get_brand_wcpay_request:cancel' ||
+            res.err_msg == 'get_brand_wcpay_request:fail'
+          ) {
+            window.location.replace(
+              location.origin +
+                '/orchestra-student/#/payment-result?orderNo=' +
+                state.orderNo
+            );
+          } else {
+            // 使用以上方式判断前端返回,微信团队郑重提示:
+            //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
+            // alert('支付成功')
+            window.location.replace(
+              location.origin +
+                '/orchestra-student/#/payment-result?orderNo=' +
+                state.orderNo
+            );
+          }
+        }
+      );
+    };
+
+    const getWxPay = () => {
+      // 微信公众号支付
+      //授权
+      const code = getUrlCode();
+      if (!code) {
+        // goAuth()
+        goWechatAuth(state.wxAppId);
+      } else {
+        state.code = code;
+        getPayment();
+      }
+    };
+    // const goAuth = () => {
+    //   // 用户授权
+    //   const urlNow = encodeURIComponent(window.location.href)
+    //   const scope = 'snsapi_base' //snsapi_userinfo   //静默授权 用户无感知
+    //   const appid = state.wxAppId || 'wx8654c671631cfade'
+    //   const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${urlNow}&response_type=code&scope=${scope}&state=STATE&connect_redirect=1#wechat_redirect`
+    //   window.location.replace(url)
+    // }
+
+    onMounted(() => {
+      init();
+    });
+
+    return () => (
+      <div class={styles.paywxresult}>
+        {state.browserStatus && (
+          <>
+            <div class={styles.container}>
+              <CellGroup border={false}>
+                <Cell
+                  title={'订单金额'}
+                  value={'¥ ' + moneyFormat(state.price)}></Cell>
+                <Cell title={'订单信息'} value={state.body}></Cell>
+              </CellGroup>
+            </div>
+
+            <div class={styles['order-loading']}>
+              <p>{state.pay_channel == 'wx_pub' ? '微信支付' : '支付宝支付'}</p>
+              <Loading type="spinner" color="#01C1B5" />
+            </div>
+          </>
+        )}
+
+        {!state.browserStatus && (
+          <div class={styles['error-text']}>
+            {state.errorText && (
+              <Icon class={styles['error-icon']} name="warning-o" />
+            )}
+            {state.errorText}
+          </div>
+        )}
+      </div>
+    );
+  }
+});

+ 93 - 0
src/views/adapay/payment/index.module.less

@@ -0,0 +1,93 @@
+.payment {
+  :global {
+    .van-cell__title {
+      font-size: 16px;
+      padding-left: 10px;
+    }
+    .van-icon-cross {
+      position: absolute;
+      z-index: 1;
+      top: 13px;
+      left: 13px;
+      color: #ccc;
+      cursor: pointer;
+    }
+
+    // .van-checkbox__icon,
+    // .van-radio__icon {
+    //   height: 22px;
+    //   .van-icon {
+    //     border: 0;
+    //   }
+    // }
+    // .van-checkbox__icon--checked .van-icon,
+    // .van-radio__icon--checked .van-icon {
+    //   background: transparent;
+    //   border: transparent;
+    // }
+  }
+
+  // .van-popup__close-icon {
+  //   color: #cccccc;
+  //   font-size: 22px;
+  // }
+  // .van-popup--bottom.van-popup--round {
+  //   border-radius: 6px 6px 0 0;
+  // }
+  // .van-hairline--bottom::after {
+  //   border-bottom-color: #f0f0f0;
+  // }
+  .title {
+    background-color: #ffffff;
+    font-size: 16px;
+    font-weight: 400;
+    color: #1a1a1a;
+    padding: 14px 0 12px;
+    text-align: center;
+  }
+  .payAmount {
+    background-color: #ffffff;
+    padding: 20px 0;
+    text-align: center;
+    p {
+      font-size: 14px;
+      color: #666666;
+      padding-bottom: 10px;
+    }
+    .amount {
+      font-size: 28px;
+      color: #000000;
+      span {
+        font-size: 18px;
+        // padding-right: 3px;
+      }
+    }
+  }
+
+  .blank {
+    height: 65px;
+    // background-color: #f6f8f9;
+  }
+
+  .payTypeRe {
+    display: flex;
+    align-items: center;
+  }
+  .recommend {
+    margin-left: 5px;
+    background: linear-gradient(122deg, #ffa371 0%, #ff6b3b 100%);
+    border-radius: 10px;
+    font-size: 12px;
+    color: #ffffff;
+    line-height: 16px;
+    padding: 0 5px;
+  }
+
+  .payBtn {
+    width: 90% !important;
+    margin: 0 auto;
+    font-size: 16px;
+    font-weight: 600;
+    margin-bottom: 20px;
+  }
+}

+ 145 - 0
src/views/adapay/payment/index.tsx

@@ -0,0 +1,145 @@
+import {
+  Button,
+  Cell,
+  CellGroup,
+  Icon,
+  RadioGroup,
+  Radio,
+  showConfirmDialog
+} from 'vant';
+import { defineComponent, reactive } from 'vue';
+import styles from './index.module.less';
+import { browser, moneyFormat } from '@/helpers/utils';
+
+export default defineComponent({
+  name: 'payment',
+  props: {
+    paymentConfig: {
+      type: Object,
+      default: {}
+    }
+  },
+  emits: ['backOut', 'close', 'confirm'],
+  setup(props, { slots, attrs, emit }) {
+    const state = reactive({
+      payType: 'wx',
+      pay_channel: ''
+    });
+    const onClose = () => {
+      // 继续支付则直接关闭弹窗就可
+      showConfirmDialog({
+        message: '是否放弃本次付款',
+        confirmButtonText: '继续付款',
+        cancelButtonText: '放弃',
+        showCancelButton: true
+      }).catch(async () => {
+        await onCancel();
+        emit('backOut');
+        emit('close');
+      });
+    };
+
+    // 需要关闭订单
+    const onCancel = async (noBack?: boolean) => {};
+    const onSubmit = async () => {
+      // 支付...
+      const pt = state.payType;
+      // 判断当前浏览器
+      if (browser().weixin) {
+        // 微信浏览器
+        if (pt == 'zfb') {
+          state.pay_channel = 'alipay_qr';
+          getCodePay('qrCode');
+        } else if (pt == 'wx') {
+          state.pay_channel = 'wx_pub';
+          getCodePay('pay');
+        }
+      } else if (browser().alipay) {
+        // 支付宝浏览器
+        if (pt == 'zfb') {
+          state.pay_channel = 'alipay_wap';
+          // 支付宝 H5 支付
+          getCodePay('pay');
+        } else if (pt == 'wx') {
+          state.pay_channel = 'wx_pub';
+          getCodePay('qrCode');
+        }
+      } else {
+        if (pt == 'zfb') {
+          state.pay_channel = 'alipay_qr';
+        } else if (pt == 'wx') {
+          state.pay_channel = 'wx_pub';
+        }
+        getCodePay('qrCode');
+      }
+    };
+
+    const getCodePay = (code: any) => {
+      // 二维码页面, 唤起支付页面
+      const payCode = code == 'qrCode' ? 'payCenter' : 'payResult';
+      emit('confirm', {
+        payCode,
+        pay_channel: state.pay_channel
+      });
+    };
+    return () => (
+      <div class={styles.payment}>
+        <Icon onClick={onClose} name="cross" size={20} />
+        <div class={[styles.title]}>选择支付方式</div>
+
+        <div class={styles.payAmount}>
+          <p>应付金额</p>
+          <div class={styles.amount}>
+            <span>¥ </span>
+            {moneyFormat(props.paymentConfig.currentPrice)}
+          </div>
+        </div>
+        <RadioGroup v-model={state.payType}>
+          <CellGroup border={false}>
+            <Cell
+              border={true}
+              center
+              onClick={() => {
+                // wx_lite
+                state.payType = 'wx';
+              }}
+              v-slots={{
+                icon: () => (
+                  <Icon name="wechat-pay" color="#15c434" size={22} />
+                ),
+                'right-icon': () => <Radio name="wx" />,
+                title: () => (
+                  <div class={styles.payTypeRe}>
+                    微信支付 <span class={styles.recommend}>推荐</span>
+                  </div>
+                )
+              }}></Cell>
+            <Cell
+              title="支付宝支付"
+              border={true}
+              // class="van-hairline--bottom"
+              center
+              onClick={() => {
+                // alipay
+                state.payType = 'zfb';
+              }}
+              v-slots={{
+                icon: () => <Icon name="alipay" color="#009fe9" size={22} />,
+                'right-icon': () => <Radio name="zfb" />
+              }}></Cell>
+          </CellGroup>
+        </RadioGroup>
+
+        <div class={styles.blank}></div>
+        <Button
+          type="primary"
+          class={styles.payBtn}
+          block
+          round
+          onClick={onSubmit}>
+          确认支付
+        </Button>
+      </div>
+    );
+  }
+});

+ 196 - 0
src/views/adapay/use-coupons/choice-coupon.tsx

@@ -0,0 +1,196 @@
+import OEmpty from '@/components/o-empty'
+import request from '@/helpers/request'
+import { state } from '@/state'
+// import Item from '@/views/coupons/item'
+import { Button, Loading } from 'vant'
+import { defineComponent } from 'vue'
+import styles from './index.module.less'
+
+export default defineComponent({
+  name: 'choice-coupon',
+  props: {
+    orderAmount: {
+      type: Number,
+      default: 0
+    },
+    useCoupon: {
+      type: Array,
+      default: () => []
+    },
+    couponCategory: {
+      type: String,
+      default: 'UNIVERSAL'
+    },
+    couponList: {
+      type: Array,
+      default: () => []
+    }
+  },
+  emits: ['close', 'submit'],
+  data() {
+    return {
+      list: [] as any,
+      // consumeAmount: 0 // 消耗金额
+      dataLoading: false
+    }
+  },
+  computed: {
+    // 使用优惠券的数量
+    useLength() {
+      return this.list.filter((list: any) => list.checked).length || 0
+    }
+  },
+  async mounted() {
+    // this.getList()
+    // 处理显示已选择的优惠券
+    // 处理可用优惠券是否支付使用
+    this.couponList.forEach((item: any) => {
+      this.useCoupon.forEach((coupon: any) => {
+        if (item.couponIssueId === coupon.couponIssueId) {
+          item.checked = true
+        }
+      })
+    })
+    const canUsable = this.couponList.filter((list: any) => !list.disabled)
+    const canUsed = this.couponList.filter((list: any) => list.disabled)
+    this.list = [...canUsable, ...canUsed]
+    this.calcCoupon()
+  },
+  methods: {
+    // async getList() {
+    //   if (this.dataLoading) return
+    //   this.dataLoading = true
+    //   try {
+    //     const res = await request.post(`${state.platformApi}/couponInfo/page`, {
+    //       data: {
+    //         couponCategory: this.couponCategory,
+    //         couponType: 'FULL_DISCOUNT',
+    //         useState: 'USABLE',
+    //         page: 1,
+    //         rows: 100
+    //       }
+    //     })
+    //     this.dataLoading = false
+    //     const result = res.data || {}
+    //     // 处理重复请求数据
+    //     if (this.list.length > 0 && result.pageNo === 1) return
+    //     this.list = result.rows || []
+
+    //     // 处理可用优惠券是否支付使用
+    //     this.list.forEach((item: any) => {
+    //       item.checked = false
+    //       // 如果使用金额大于订单金额则优惠券不可用
+    //       if (item.useLimit > this.orderAmount) {
+    //         item.disabled = true
+    //       } else {
+    //         item.disabled = false
+    //       }
+
+    //       // 处理显示已选择的优惠券
+    //       this.useCoupon.forEach((coupon: any) => {
+    //         if (item.couponIssueId === coupon.couponIssueId) {
+    //           item.checked = true
+    //         }
+    //       })
+    //     })
+    //     // 初始化排序
+    //     const canUsable = this.list.filter((list: any) => !list.disabled)
+    //     const canUsed = this.list.filter((list: any) => list.disabled)
+    //     this.list = [...canUsable, ...canUsed]
+
+    //     this.calcCoupon()
+    //   } catch {
+    //     //
+    //   }
+    // },
+    onSubmit() {
+      // 返回选中的优惠券
+      this.$emit(
+        'submit',
+        this.list.filter((list: any) => list.checked)
+      )
+
+      this.list.forEach((item: any) => {
+        item.checked = false
+      })
+    },
+    onSelect(item: any) {
+      item.checked = !item.checked
+      this.calcCoupon()
+    },
+    calcCoupon() {
+      // 计算优惠券
+      // 已使用的优惠券
+      const useList = this.list.filter((list: any) => list.checked)
+      const limitCount = useList.map((list: any) => {
+        return Number(list.useLimit || 0)
+      })
+      const usePrice =
+        limitCount.length > 0
+          ? limitCount.reduce((sum: any, list: any) => {
+              return sum + list
+            })
+          : 0
+      // 使用优惠券后,可判断的金额
+      const useLastAmount = this.orderAmount - usePrice
+      // 判断使用优惠券之后还有没有其它优惠券可用
+      this.list.forEach((item: any) => {
+        if (Number(item.useLimit) > useLastAmount && !item.checked) {
+          item.disabled = true
+        } else {
+          item.disabled = false
+        }
+      })
+    }
+  },
+  render() {
+    return (
+      <div class={styles.choiceCoupon}>
+        <div class={styles.couponTitle}>
+          <span>优惠券</span>
+          <i class={styles.iconClose} onClick={() => this.$emit('close')}></i>
+        </div>
+
+        <div class={styles.couponContent}>
+          {!this.dataLoading ? (
+            <>
+              {this.list.length > 0 ? (
+                <>
+                  {this.list.map((item: any) => (
+                    // <Item item={item} isSelect onClick={this.onSelect} />
+                    <>1212</>
+                  ))}
+                </>
+              ) : (
+                <OEmpty btnStatus={false} tips="暂无优惠券" />
+              )}
+            </>
+          ) : (
+            <Loading
+              size={48}
+              color="#2dc7aa"
+              vertical
+              style={{ height: '100%', justifyContent: 'center' }}
+            >
+              加载中...
+            </Loading>
+          )}
+        </div>
+
+        <div class={[styles.couponFooter, 'van-hairline--top']}>
+          <div class={styles.couponSelectText}>
+            已选<span>{this.useLength}</span>张
+          </div>
+          <Button
+            type="primary"
+            round
+            style={{ minWidth: '105px', fontSize: '16px' }}
+            onClick={this.onSubmit}
+          >
+            确定
+          </Button>
+        </div>
+      </div>
+    )
+  }
+})

+ 67 - 0
src/views/adapay/use-coupons/index.module.less

@@ -0,0 +1,67 @@
+.useCoupon {
+  padding-top: 16px;
+  padding-bottom: 16px;
+
+  .couponCount {
+    color: #ff3535;
+    font-size: 16px;
+    font-weight: 600;
+    i {
+      font-style: normal;
+      font-size: 14px;
+    }
+  }
+}
+
+.choiceCoupon {
+  display: flex;
+  flex-direction: column;
+  overflow: hidden;
+  height: 100%;
+}
+.couponTitle {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  flex-shrink: 0;
+  padding: 0 17px;
+  height: 60px;
+  line-height: 60px;
+  font-size: 18px;
+  font-weight: 600;
+  color: #1a1a1a;
+
+  .iconClose {
+    display: inline-block;
+    width: 24px;
+    height: 24px;
+    background: url('../../coupons/images/icon_close.png') no-repeat center;
+    background-size: contain;
+  }
+}
+
+.couponContent {
+  flex: 1 auto;
+  overflow-y: auto;
+  -webkit-overflow-scrolling: touch;
+  padding: 12px 14px;
+
+  --coupon-point: #fff;
+}
+
+.couponFooter {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  line-height: 56px;
+  padding: 0 16px;
+  .couponSelectText {
+    font-size: 16px;
+    color: #1a1a1a;
+    span {
+      padding: 0 9px;
+      font-weight: 600;
+      color: #fc1a19;
+    }
+  }
+}

+ 213 - 0
src/views/adapay/use-coupons/index.tsx

@@ -0,0 +1,213 @@
+import request from '@/helpers/request'
+import { state } from '@/state'
+import { Cell, Popup } from 'vant'
+import { defineComponent } from 'vue'
+import ChoiceCoupon from './choice-coupon'
+import styles from './index.module.less'
+
+/*
+ * 订单类型对应优惠券类型
+ */
+export const couponEnum = {
+  UNIVERSAL: 'UNIVERSAL',
+  VIP: 'VIP',
+  PIANO_ROOM: 'PIANO',
+  GOODS: 'MALL',
+  MUSIC: 'MUSIC',
+  PRACTICE: 'SPARRING',
+  LIVE: 'LIVE',
+  VIDEO: 'VIDEO',
+  ALBUM: 'ALBUM'
+}
+
+export default defineComponent({
+  name: 'use-conpon',
+  props: {
+    disabled: {
+      type: Boolean,
+      default: false
+    },
+    orderAmount: {
+      type: Number,
+      default: 0
+    },
+    orderType: {
+      type: String,
+      default: ''
+    },
+    discountPrice: {
+      // 优惠券使用金额
+      type: Number,
+      default: 0
+    }
+  },
+  emits: ['couponSelect'],
+  data() {
+    return {
+      popupStatus: false,
+      popupLoading: false,
+      useCouponList: [] as any,
+      useCouponLoading: false,
+      useCouponCount: 0,
+      dataLoading: false,
+      list: [] as any
+    }
+  },
+  computed: {
+    couponCount() {
+      const limitCount = this.useCouponList.map((list: any) => {
+        return Number(list.discountPrice || 0)
+      })
+      let count = 0
+      if (this.disabled) {
+        count = this.discountPrice
+      } else {
+        count =
+          limitCount.length > 0
+            ? limitCount.reduce((sum: any, list: any) => {
+                return sum + list
+              })
+            : 0
+      }
+      return count
+    },
+    couponCategory() {
+      // 如果订单类型不在优惠券类型里面,则默认查询通用券
+      return couponEnum[this.orderType] || 'UNIVERSAL'
+    }
+  },
+  mounted() {
+    // this.getUseableCoupon()
+    this.getList()
+  },
+  methods: {
+    async getList() {
+      if (this.dataLoading) return
+      this.dataLoading = true
+      try {
+        const res = await request.post(`${state.platformApi}/couponInfo/page`, {
+          data: {
+            couponCategory: this.couponCategory,
+            couponType: 'FULL_DISCOUNT',
+            useState: 'USABLE',
+            orderUse: 1,
+            page: 1,
+            rows: 100
+          }
+        })
+        this.dataLoading = false
+        const result = res.data || {}
+        // 处理重复请求数据
+        if (this.list.length > 0 && result.pageNo === 1) return
+        this.list = result.rows || []
+
+        // 处理可用优惠券是否支付使用
+        this.list.forEach((item: any) => {
+          item.checked = false
+          // 如果使用金额大于订单金额则优惠券不可用
+          if (item.useLimit > this.orderAmount) {
+            item.disabled = true
+          } else {
+            item.disabled = false
+          }
+        })
+
+        let count = 0
+        this.list.forEach((item: any) => {
+          if (!item.disabled) {
+            count++
+          }
+        })
+        console.log(this.list, 'list')
+        this.useCouponCount = count
+      } catch {
+        //
+      }
+    },
+    // async getUseableCoupon() {
+    //   try {
+    //     this.useCouponLoading = true
+    //     // 判断是哪个端
+    //     const url =
+    //       state.platformType === 'STUDENT' ? '/api-student' : '/api-teacher'
+    //     const res = await request.get(`${url}/couponInfo/statInfo`)
+    //     this.useCouponLoading = false
+    //     const result = (res.data || []).find(
+    //       result => result.useState === 'USABLE'
+    //     )
+    //     this.useCouponCount = result.total || 0
+    //   } catch {
+    //     // TODO: handle
+    //   }
+    // },
+    onSubmit(item: any) {
+      // useCouponList
+      this.useCouponList = item
+      this.$emit('couponSelect', item)
+      this.popupStatus = false
+      this.popupLoading = false
+    }
+  },
+  render() {
+    return (
+      <>
+        <Cell
+          title="优惠券"
+          class={styles.useCoupon}
+          style={{ borderRadius: '8px' }}
+          isLink={!this.disabled}
+          clickable={false}
+          v-slots={{
+            value: () =>
+              !this.useCouponLoading && (
+                <>
+                  {/* 判断是否有选择优惠券 */}
+                  {this.couponCount > 0 ? (
+                    <span class={styles.couponCount}>
+                      <i>-¥ </i>
+                      {this.couponCount}
+                    </span>
+                  ) : (
+                    <>
+                      {/* 判断是否有可以的优惠券 */}
+                      {this.useCouponCount > 0
+                        ? `${this.useCouponCount}张可使用`
+                        : '暂无可使用优惠券'}
+                    </>
+                  )}
+                </>
+              )
+          }}
+          onClick={() => {
+            if (this.disabled) return
+            this.popupStatus = true
+            this.popupLoading = true
+          }}
+        ></Cell>
+
+        <Popup
+          v-model:show={this.popupStatus}
+          position="bottom"
+          round
+          safeAreaInsetBottom={true}
+          style={{ height: '75%' }}
+          onClosed={() => {
+            this.popupLoading = false
+          }}
+        >
+          {/* 优化体验 */}
+          {this.popupLoading && (
+            <ChoiceCoupon
+              couponCategory={this.couponCategory}
+              useCoupon={this.useCouponList}
+              orderAmount={this.orderAmount}
+              couponList={this.list}
+              onClose={() => (this.popupStatus = false)}
+              onSubmit={(item: any) => this.onSubmit(item)}
+            />
+          )}
+        </Popup>
+      </>
+    )
+  }
+})

BIN
src/views/knowledge-library/images/bg.png


BIN
src/views/knowledge-library/images/exam-fail-bg.png


BIN
src/views/knowledge-library/images/exam-left-btn.png


BIN
src/views/knowledge-library/images/exam-pass-bg-p.png


BIN
src/views/knowledge-library/images/exam-pass-bg.png


BIN
src/views/knowledge-library/images/exam-right-bg.png


BIN
src/views/knowledge-library/images/icon-analysis.png


BIN
src/views/knowledge-library/images/icon-bell.png


BIN
src/views/knowledge-library/images/icon-button-list.png


BIN
src/views/knowledge-library/images/icon-count-down.png


BIN
src/views/knowledge-library/images/icon-edit.png


BIN
src/views/knowledge-library/images/icon-error.png


BIN
src/views/knowledge-library/images/icon-pass-check.png


BIN
src/views/knowledge-library/images/icon-question-nums.png


BIN
src/views/knowledge-library/images/icon-song.png


BIN
src/views/knowledge-library/images/icon-success.png


BIN
src/views/knowledge-library/images/icon-tag.png


BIN
src/views/knowledge-library/images/icon-timer.png


+ 4 - 0
src/views/knowledge-library/index.module.less

@@ -0,0 +1,4 @@
+.knowledgeLibrary {
+  background: url('./images/bg.png') no-repeat top center;
+  background-size: contain;
+}

+ 83 - 0
src/views/knowledge-library/index.tsx

@@ -0,0 +1,83 @@
+import OEmpty from '@/components/m-empty';
+import MHeader from '@/components/m-header';
+import MSticky from '@/components/m-sticky';
+import { Button, List } from 'vant';
+import { defineComponent, reactive } from 'vue';
+import styles from './index.module.less';
+import { useRouter } from 'vue-router';
+import MFullRefresh from '@/components/m-full-refresh';
+
+export default defineComponent({
+  name: 'knowledge-ligrary',
+  setup() {
+    const router = useRouter();
+
+    const form = reactive({
+      oPopover: false,
+      searchList: [] as any,
+      list: [] as any,
+      listState: {
+        dataShow: true, // 判断是否有数据
+        loading: false,
+        finished: false,
+        refreshing: false,
+        height: 0 // 页面头部高度,为了处理下拉刷新用的
+      },
+      statusText: '全部测验',
+      params: {
+        keyword: null,
+        status: null,
+        page: 1,
+        rows: 20
+      },
+      isClick: false,
+      visiableNotice: false,
+      unitExam: {} as any, // 测验详情
+      selectUnitExam: {} as any,
+      dialogMessage: '',
+      dialogStatus: false
+    });
+
+    const getList = () => {
+      // console.log('1');
+    };
+
+    return () => (
+      <div class={styles.knowledgeLibrary}>
+        <MSticky position="top">
+          <MHeader border={false} background="transparent">
+            {{
+              right: () => (
+                <Button round size="small">
+                  错题本
+                </Button>
+              )
+            }}
+          </MHeader>
+        </MSticky>
+
+        <MFullRefresh
+          v-model:modelValue={form.listState.refreshing}
+          style={{
+            minHeight: `calc(100vh - ${form.listState.height}px)`
+          }}>
+          <List
+            finished={form.listState.finished}
+            finishedText=" "
+            class={[styles.liveList]}
+            style={{
+              paddingTop: '12px'
+            }}
+            onLoad={getList}
+            immediateCheck={false}>
+            {form.listState.dataShow ? (
+              <>121212</>
+            ) : (
+              <OEmpty description="暂无阶段自测" />
+            )}
+          </List>
+        </MFullRefresh>
+      </div>
+    );
+  }
+});

+ 46 - 0
src/views/knowledge-library/model/anser-title/index.module.less

@@ -0,0 +1,46 @@
+.unitSubjectTitle {
+  font-size: 16px;
+  font-weight: 500;
+  color: #333333;
+  line-height: 26px;
+  .unitScore {
+    color: #777777;
+  }
+  :global {
+    .van-tag {
+      vertical-align: middle;
+      margin-top: -3px;
+    }
+  }
+}
+.unitDetail {
+  padding-top: 20px;
+  padding-bottom: 10px;
+  font-size: 14px;
+  img,
+  video {
+    width: 100%;
+  }
+}
+.unitTitleImg {
+  width: 100%;
+}
+
+.unitTitleRate {
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+  padding-top: 15px;
+  padding-bottom: 15px;
+  font-size: 16px;
+  font-weight: 500;
+  color: #333333;
+  line-height: 26px;
+  .icon {
+    font-size: 16px;
+    margin-right: 6px;
+  }
+  .rate {
+    color: #4991eb;
+  }
+}

+ 98 - 0
src/views/knowledge-library/model/anser-title/index.tsx

@@ -0,0 +1,98 @@
+import { Tag, Image, Icon } from 'vant'
+import { computed, defineComponent } from 'vue'
+import { QuestionType, QuestionTypeName } from '../../unit'
+import styles from './index.module.less'
+import iconPassCheck from '../../images/icon-pass-check.png'
+import UnitAudio from '../unit-audio'
+
+export default defineComponent({
+  name: 'answer-title',
+  props: {
+    index: {
+      type: Number,
+      default: 1
+    },
+    name: {
+      // 题目名称
+      type: String,
+      default: ''
+    },
+    score: {
+      type: Number,
+      default: 0
+    },
+    answerType: {
+      // 类型
+      type: String,
+      default: ''
+    },
+    extra: {
+      type: Object,
+      default: () => ({})
+    },
+    showRate: {
+      type: Boolean,
+      default: false
+    }
+  },
+  setup(props) {
+    const answerTypeName = computed(() => {
+      if (props.answerType === QuestionType.CHECKBOX) {
+        return QuestionTypeName.CHECKBOX
+      } else if (props.answerType === QuestionType.LINK) {
+        return QuestionTypeName.LINK
+      } else if (props.answerType === QuestionType.SORT) {
+        return QuestionTypeName.SORT
+      } else if (props.answerType === QuestionType.PLAY) {
+        return QuestionTypeName.PLAY
+      }
+      return QuestionTypeName.RADIO
+    })
+
+    const mediaUrls = computed(() =>
+      props.extra.mediaUrls ? props.extra.mediaUrls.split(',') : ''
+    )
+    return () => (
+      <>
+        <div class={styles.unitSubjectTitle}>
+          {props.index}、{props.name} <span class={styles.unitScore}>({props.score || 0}分)</span>
+          <Tag
+            type="primary"
+            style={{
+              lineHeight: '20px'
+            }}
+          >
+            {answerTypeName.value}
+          </Tag>
+        </div>
+        {props.showRate && (
+          <div class={styles.unitTitleRate}>
+            <Icon name={iconPassCheck} class={styles.icon} />
+            正确率:
+            <span class={styles.rate}>{props.extra.rightRate || 0}%</span>
+          </div>
+        )}
+        {props.extra.questionDetail || mediaUrls.value ? (
+          <div class={styles.unitDetail}>
+            <div v-html={props.extra.questionDetail}></div>
+            {mediaUrls.value &&
+              mediaUrls.value.map(
+                (url: any) =>
+                  url && (
+                    <>
+                      {url.substr(-3) === 'mp3' ? (
+                        <UnitAudio src={url} class={styles.valueAudio} />
+                      ) : (
+                        <Image class={[styles.unitTitleImg, 'answerTitleImg']} src={url} />
+                      )}
+                    </>
+                  )
+              )}
+          </div>
+        ) : (
+          ''
+        )}
+      </>
+    )
+  }
+})

+ 32 - 0
src/views/knowledge-library/model/answer-analysis/index.module.less

@@ -0,0 +1,32 @@
+.answerAnalysis {
+  .analysisResult {
+    display: flex;
+    align-items: center;
+    // line-height: 22px;
+    font-size: 16px;
+    font-weight: 600;
+    color: #333333;
+    padding-bottom: 20px;
+
+    .aImg {
+      font-size: 18px;
+      margin-right: 6px;
+    }
+  }
+  .success {
+    color: #3b8df3;
+  }
+  .error {
+    color: #f44541;
+  }
+  .analysisTitle {
+    padding-bottom: 10px;
+  }
+  .analysisMessage {
+    font-size: 15px;
+    color: #333333;
+    line-height: 21px;
+    text-align: justify;
+    padding-bottom: 5px;
+  }
+}

+ 70 - 0
src/views/knowledge-library/model/answer-analysis/index.tsx

@@ -0,0 +1,70 @@
+import { defineComponent } from 'vue'
+import styles from './index.module.less'
+import iconError from '../../images/icon-error.png'
+import iconSuccess from '../../images/icon-success.png'
+import iconAnalysis from '../../images/icon-analysis.png'
+import { Icon } from 'vant'
+
+// 答案解析
+export default defineComponent({
+  name: 'answer-analysis',
+  props: {
+    topic: {
+      // 状态
+      type: Boolean,
+      default: true
+    },
+    userResult: {
+      tyep: Boolean,
+      default: false
+    },
+    answerAnalysis: {
+      type: String,
+      default: ''
+    },
+    rightFlagText: {
+      type: String,
+      default: '回答正确'
+    },
+    errorFlagText: {
+      type: String,
+      default: '回答错误'
+    }
+  },
+  setup(props) {
+    return () => (
+      <div class={styles.answerAnalysis}>
+        {props.topic ? (
+          <>
+            {props.userResult ? (
+              <div class={[styles.analysisResult, styles.success]}>
+                <Icon name={iconSuccess} class={styles.aImg} />
+                {props.rightFlagText}
+              </div>
+            ) : (
+              <div class={[styles.analysisResult, styles.error]}>
+                <Icon name={iconError} class={styles.aImg} />
+                {props.errorFlagText}
+              </div>
+            )}
+          </>
+        ) : (
+          ''
+          // <div class={[styles.analysisResult]}>
+          //   正确答案: <span class={styles.success}>A</span>
+          // </div>
+        )}
+
+        {props.answerAnalysis && (
+          <>
+            <div class={[styles.analysisResult, styles.analysisTitle]}>
+              <Icon name={iconAnalysis} class={styles.aImg} />
+              答案解析
+            </div>
+            <div class={styles.analysisMessage}>{props.answerAnalysis}</div>
+          </>
+        )}
+      </div>
+    )
+  }
+})

+ 63 - 0
src/views/knowledge-library/model/answer-list/index.module.less

@@ -0,0 +1,63 @@
+.anserList {
+  min-height: 20vh;
+  padding: 20px 0;
+
+  .status {
+    display: flex;
+    align-items: center;
+    padding: 0 20px 30px;
+    span {
+      display: flex;
+      align-items: center;
+      font-size: 16px;
+      font-weight: 500;
+      color: #333333;
+      & + span {
+        margin-left: 30px;
+      }
+    }
+    i {
+      display: inline-block;
+      width: 18px;
+      height: 18px;
+      background-color: #eaeaea;
+      border-radius: 50%;
+      margin-right: 8px;
+    }
+  }
+
+  .aList {
+    margin: 0 10px;
+    :global {
+      .van-grid-item__content {
+        padding: 0 0 13px;
+      }
+    }
+    span {
+      display: inline-flex;
+      align-items: center;
+      justify-content: center;
+      width: 45px;
+      height: 45px;
+      background: #eaeaea;
+      font-size: 18px;
+      font-weight: 500;
+      color: #777777;
+      border-radius: 50%;
+    }
+
+    .answered {
+      background: #ff8057;
+      color: #fff;
+    }
+
+    .yes {
+      background-color: #71b0ff;
+      color: #fff;
+    }
+    .no {
+      background-color: #ff8486;
+      color: #fff;
+    }
+  }
+}

+ 105 - 0
src/views/knowledge-library/model/answer-list/index.tsx

@@ -0,0 +1,105 @@
+import { Grid, GridItem } from 'vant'
+import { defineComponent, PropType } from 'vue'
+import styles from './index.module.less'
+
+export default defineComponent({
+  name: 'answer-list',
+  props: {
+    value: {
+      type: Array,
+      default: () => []
+    },
+    index: {
+      type: Number,
+      default: 0
+    },
+    lookType: {
+      type: String as PropType<'ANSWER' | 'RESULT' | 'CLICK' | 'PRACTICE'>,
+      default: 'ANSWER'
+    },
+    statusList: {
+      type: Array,
+      default: () => [
+        {
+          text: '已答',
+          color: '#FF8057'
+        },
+        {
+          text: '未答',
+          color: '#EAEAEA'
+        }
+      ]
+    },
+    // 结果
+    answerResult: {
+      type: Array,
+      default: () => []
+    }
+  },
+  emits: ['select'],
+  setup(props, { emit }) {
+    console.log(props.lookType, 'lookType')
+    /**
+     * @description 检查用户是否答对
+     * @returns Boolean
+     */
+    const formatUserResult = (id: string) => {
+      let result = false
+      props.answerResult.forEach((item: any) => {
+        if (item.questionId === id) {
+          result = item.rightFlag
+        }
+      })
+      return result
+    }
+
+    return () => (
+      <div class={styles.anserList}>
+        {props.statusList.length > 0 && (
+          <div class={styles.status}>
+            {props.statusList.map((item: any) => (
+              <span>
+                <i style={{ backgroundColor: item.color }}></i>
+                {item.text}
+              </span>
+            ))}
+          </div>
+        )}
+
+        <div
+          style={{
+            maxHeight: '40vh',
+            minHeight: '20vh',
+            overflowX: 'auto'
+          }}
+        >
+          <Grid class={styles.aList} columnNum={6} border={false}>
+            {props.value.map((item: any, index: number) => (
+              <GridItem onClick={() => emit('select', index)}>
+                {/* 判断是否答题了 */}
+                <span
+                  class={[
+                    props.lookType === 'ANSWER' &&
+                      item.userAnswer &&
+                      item.userAnswer.length > 0 &&
+                      styles.answered,
+                    props.lookType === 'RESULT' &&
+                      (formatUserResult(item.id) ? styles.yes : styles.no),
+                    props.lookType === 'CLICK' && index === props.index && styles.answered,
+                    props.lookType !== 'CLICK' && item.showAnalysis
+                      ? item.analysis.userResult
+                        ? styles.yes
+                        : styles.no
+                      : ''
+                  ]}
+                >
+                  {index + 1}
+                </span>
+              </GridItem>
+            ))}
+          </Grid>
+        </div>
+      </div>
+    )
+  }
+})

+ 57 - 0
src/views/knowledge-library/model/choice-question/index.module.less

@@ -0,0 +1,57 @@
+.unitSubject {
+  padding: 15px;
+  margin: 0 13px;
+  background-color: #fff;
+  overflow: hidden;
+  border-radius: 10px;
+  & + .unitSubject {
+    margin-top: 12px;
+  }
+}
+
+.unitAnswers {
+  // padding-bottom: 30px;
+  .unitAnswer {
+    margin-top: 15px;
+    background: #f6f6f6;
+    border-radius: 8px;
+    padding: 15px 12px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    font-size: 16px;
+    font-weight: 500;
+    color: #333333;
+    .option {
+      margin-right: 10px;
+    }
+    .value {
+      word-break: break-all;
+      :global {
+        .van-image {
+          height: 38px;
+        }
+        .van-image__img {
+          width: auto;
+        }
+      }
+    }
+    .valueAudio {
+      width: 160px;
+    }
+  }
+  .active {
+    background-color: #ffebdd;
+    color: #f67146;
+  }
+
+  .answerContent {
+    display: flex;
+    align-items: center;
+  }
+  .answerChoice {
+    font-size: 16px;
+    font-weight: 500;
+    line-height: 26px;
+  }
+}

+ 163 - 0
src/views/knowledge-library/model/choice-question/index.tsx

@@ -0,0 +1,163 @@
+import { Tag, Image } from 'vant';
+import { computed, defineComponent, PropType, reactive } from 'vue';
+import { AnswerType, labelOptions, QuestionType } from '../../unit';
+import AnserTitle from '../anser-title';
+import AnswerAnalysis from '../answer-analysis';
+import UnitAudio from '../unit-audio';
+import styles from './index.module.less';
+
+// 单选题 - 多选题
+export default defineComponent({
+  name: 'choice-question',
+  props: {
+    value: {
+      type: Array,
+      default: () => []
+    },
+    type: {
+      type: String as PropType<'radio' | 'checkbox'>,
+      default: 'radio'
+    },
+    index: {
+      // 题目是第几道
+      type: Number,
+      default: 1
+    },
+    data: {
+      type: Object,
+      default: () => ({})
+    },
+    readOnly: {
+      type: Boolean,
+      default: false
+    },
+    showRate: {
+      tyep: Boolean,
+      default: false
+    },
+    showAnalysis: {
+      // 是否显示解析
+      type: Boolean,
+      default: false
+    },
+    analysis: {
+      type: Object,
+      default: () => ({
+        message: '',
+        topic: false, // 是否显示结果
+        userResult: true // 用户答题对错
+      })
+    }
+  },
+  emits: ['update:value'],
+  setup(props, { emit }) {
+    const onSelect = (item: any) => {
+      console.log(item, 'onSelect');
+      if (props.readOnly) return;
+      const value: any = props.value || [];
+      const result = {
+        answerId: item.examinationQuestionAnswerId,
+        answer: item.questionAnswer,
+        answerExtra: item.questionExtra
+      };
+
+      console.log(result, 'onSelect');
+      if (props.type === 'checkbox') {
+        const tempIndex = value.findIndex(
+          (c: any) => c.answerId === item.examinationQuestionAnswerId
+        );
+        if (tempIndex >= 0) {
+          value.splice(tempIndex, 1);
+          emit('update:value', [...value]);
+        } else {
+          emit('update:value', [...value, result]);
+        }
+      } else {
+        emit('update:value', [result]);
+      }
+    };
+
+    const answers = computed(() => {
+      const list: any = props.data.answers || [];
+      const value: any = props.value || [];
+      list.forEach((item: any) => {
+        const tempIndex = value.findIndex(
+          (c: any) => c.answerId === item.examinationQuestionAnswerId
+        );
+        item.checked = tempIndex !== -1 ? true : false;
+      });
+      return list;
+    });
+
+    return () => (
+      <>
+        <div class={styles.unitSubject}>
+          {/* 标题 */}
+          <AnserTitle
+            index={props.index}
+            name={props.data.name}
+            showRate={props.showRate}
+            score={props.data.totalScore}
+            answerType={
+              props.type === 'radio'
+                ? QuestionType.RADIO
+                : QuestionType.CHECKBOX
+            }
+            extra={{
+              questionDetail: props.data.questionDetail,
+              mediaUrls: props.data.mediaUrls,
+              rightRate: props.data.rightRate
+            }}
+          />
+
+          <div class={styles.unitAnswers}>
+            {answers.value.map((item: any, index: number) => (
+              <div
+                class={[styles.unitAnswer, item.checked && styles.active]}
+                onClick={() => onSelect(item)}>
+                <div class={styles.answerContent}>
+                  <span class={styles.option}>{labelOptions[index + 1]}.</span>
+                  {item.questionAnswerTypeCode === AnswerType.IMAGE && (
+                    <div class={styles.value}>
+                      <Image
+                        src={item.questionAnswer}
+                        fit="contain"
+                        class={'answerTitleImg'}
+                      />
+                    </div>
+                  )}
+                  {item.questionAnswerTypeCode === AnswerType.TXT && (
+                    <div class={styles.value}>{item.questionAnswer}</div>
+                  )}
+                  {item.questionAnswerTypeCode === AnswerType.AUDIO && (
+                    <div class={styles.value}>
+                      <UnitAudio
+                        src={item.questionAnswer}
+                        class={styles.valueAudio}
+                      />
+                    </div>
+                  )}
+                </div>
+                {props.showRate && (
+                  <div class={styles.answerChoice}>
+                    {item.selectRate || 0}%人选择
+                  </div>
+                )}
+              </div>
+            ))}
+          </div>
+        </div>
+
+        {props.showAnalysis && (
+          <div class={styles.unitSubject}>
+            <AnswerAnalysis
+              answerAnalysis={props.analysis.message}
+              topic={props.analysis.topic}
+              userResult={props.analysis.userResult}
+            />
+          </div>
+        )}
+      </>
+    );
+  }
+});

+ 115 - 0
src/views/knowledge-library/model/drag-question/index.module.less

@@ -0,0 +1,115 @@
+.unitSubject {
+  padding: 15px;
+  margin: 0 13px;
+  background-color: #fff;
+  // overflow: hidden;
+  border-radius: 10px;
+  & + .unitSubject {
+    margin-top: 12px;
+  }
+}
+
+.unitAnswers {
+  // padding-bottom: 30px;
+
+  .unitAnswer {
+    margin-top: 15px;
+    background: #f6f6f6;
+    border-radius: 8px;
+    padding: 15px 12px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    font-size: 16px;
+    font-weight: 500;
+    color: #333333;
+    .option {
+      margin-right: 10px;
+    }
+    .value {
+      word-break: break-all;
+      :global {
+        .van-image {
+          height: 38px;
+        }
+        .van-image__img {
+          width: auto;
+        }
+      }
+    }
+    .valueAudio {
+      width: 170px;
+    }
+  }
+  .active {
+    background-color: #ffebdd;
+    color: #f67146;
+  }
+
+  .answerContent {
+    display: flex;
+    align-items: center;
+  }
+  .answerChoice {
+    font-size: 16px;
+    font-weight: 500;
+    line-height: 26px;
+  }
+  :global {
+    .sortable-ghost {
+      opacity: 0.5;
+      background: #c8ebfb;
+    }
+  }
+  .sortReset {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-top: 25px;
+    padding-top: 30px;
+    padding-bottom: 30px;
+    .tips {
+      font-size: 16px;
+      font-weight: 500;
+      color: #333333;
+      line-height: 26px;
+    }
+    :global {
+      .van-button {
+        min-width: 84px;
+        height: 31px;
+        line-height: 31px;
+        font-size: 15px;
+        font-weight: 500;
+      }
+    }
+  }
+
+  .itemsContainer {
+    display: inline-block;
+    margin-right: 10px;
+    margin-bottom: 8px;
+  }
+
+  .items,
+  .imgs {
+    min-width: 56px;
+    height: 36px;
+    font-size: 16px;
+    font-weight: 500;
+    border-radius: 4px;
+    background: #ffebdd;
+    color: #f67146;
+    justify-content: center;
+  }
+
+  .imgs {
+    height: 56px;
+    width: auto;
+    :global {
+      .van-image__img {
+        width: auto;
+      }
+    }
+  }
+}

+ 303 - 0
src/views/knowledge-library/model/drag-question/index.tsx

@@ -0,0 +1,303 @@
+import { Tag, Image, Button } from 'vant';
+import {
+  computed,
+  defineComponent,
+  nextTick,
+  onMounted,
+  PropType,
+  reactive,
+  watch
+} from 'vue';
+import { AnswerType, labelOptions, QuestionType } from '../../unit';
+import Draggable from 'vuedraggable';
+import styles from './index.module.less';
+import AnserTitle from '../anser-title';
+import AnswerAnalysis from '../answer-analysis';
+
+// 单选和多选题
+export default defineComponent({
+  name: 'choice-question',
+  props: {
+    value: {
+      type: Array,
+      default: () => []
+    },
+    index: {
+      // 题目是第几道
+      type: Number,
+      default: 1
+    },
+    data: {
+      type: Object,
+      default: () => ({})
+    },
+    /* 只读 */
+    readOnly: {
+      type: Boolean,
+      default: false
+    },
+    showRate: {
+      // 是否显示答题的正确率
+      type: Boolean,
+      default: false
+    },
+    showAnalysis: {
+      // 是否显示解析
+      type: Boolean,
+      default: false
+    },
+    analysis: {
+      type: Object,
+      default: () => ({
+        message: '',
+        topic: false, // 是否显示结果
+        userResult: true // 用户答题对错
+      })
+    }
+  },
+  emits: ['update:value'],
+  setup(props, { emit }) {
+    const state = reactive({
+      domId: 'draggableContainer' + +new Date(),
+      drag: false,
+      sortable: null as any,
+      list: [] as any,
+      options: [] as any,
+      alst: [] as any
+    });
+
+    // 返回选中的结果
+    const onSelect = () => {
+      const list = state.list || [];
+      const result: any = [];
+
+      list.forEach((item: any, index: number) => {
+        // console.log(item, 'item')
+        result.push({
+          answerId: item.answerId,
+          answer: item.answer,
+          answerExtra: index + 1
+        });
+      });
+
+      emit('update:value', result);
+    };
+
+    // 修改题目逻辑
+    const onSelectAnswer = (item: any) => {
+      // 判断是否已经选中了
+      if (item.checked || props.readOnly) return;
+      const result: any = [];
+      // console.log(state.options, 'state.options')
+      state.options.forEach((option: any, index: any) => {
+        // console.log(option, '------')
+        result.push({
+          answerId: option.index,
+          answer: option.leftValue,
+          answerExtra: index + 1
+        });
+      });
+
+      result.push({
+        answerId: item.examinationQuestionAnswerId,
+        answer: item.questionAnswer,
+        answerExtra: state.list.length + 1
+      });
+
+      state.list.push({
+        answerId: item.examinationQuestionAnswerId,
+        answer: item.questionAnswer,
+        answerExtra: state.list.length + 1
+      });
+
+      // console.log(state.list, '------', result, 'result lis4t')
+      emit('update:value', result);
+
+      nextTick(() => {
+        initOptions();
+      });
+    };
+
+    const answers = computed(() => {
+      const list: any = props.data.answers || [];
+      const value: any = props.value || [];
+      // console.log(value, 'answer')
+      list.forEach((item: any) => {
+        const tempIndex = value.findIndex(
+          (c: any) => c.answerId === item.examinationQuestionAnswerId
+        );
+        // if (tempIndex !== -1) {
+        item.checked = tempIndex !== -1 ? true : false;
+        // }
+      });
+      return list;
+    });
+    const initOptions = () => {
+      const answers = props.data.answers || [];
+      const userAnswer = props.data.userAnswer || []; // 用户填写的答案
+      // console.log(answers, userAnswer)
+      // state.options = []
+      nextTick(() => {
+        if (userAnswer.length > 0) {
+          const tempList: any = [];
+          userAnswer.forEach((answer: any, index: any) => {
+            const rightOption = answers.find(
+              (child: any) =>
+                answer.answerId === child.examinationQuestionAnswerId
+            );
+            const rightValue = answers.find(
+              (child: any) => answer.answerExtra == child.questionExtra
+            );
+            const tmp = {
+              itemIndex: index,
+              index: answer.answerId, // 左边的值
+              leftValue: answer.answer, // 左边的值
+              rightValue: answer.answerExtra, // 右边的值
+              leftType: rightOption
+                ? rightOption.questionAnswerTypeCode || 'TXT'
+                : 'TXT', // 左边类型
+              rightType: rightOption
+                ? rightOption.questionExtraTypeCode || 'TXT'
+                : 'TXT', // 右边类型
+              rightIndex: rightValue
+                ? rightValue.examinationQuestionAnswerId
+                : ''
+            };
+            // state.options.push(tmp)
+            tempList.push(tmp);
+          });
+          state.options = tempList;
+        }
+      });
+    };
+
+    watch(
+      () => state.options,
+      () => {
+        const list = state.options || [];
+        const result: any = [];
+        list.forEach((item: any, index: number) => {
+          result.push({
+            answerId: item.index,
+            answer: item.leftValue,
+            answerExtra: index + 1
+          });
+        });
+        emit('update:value', result);
+      }
+    );
+
+    onMounted(() => {
+      initOptions();
+    });
+
+    return () => (
+      <>
+        <div class={styles.unitSubject}>
+          {/* 标题 */}
+          <AnserTitle
+            index={props.index}
+            name={props.data.name}
+            showRate={props.showRate}
+            score={props.data.totalScore}
+            answerType={QuestionType.SORT}
+            extra={{
+              rightRate: props.data.rightRate,
+              questionDetail: props.data.questionDetail,
+              mediaUrls: props.data.mediaUrls
+            }}
+          />
+
+          <div class={[styles.unitAnswers]}>
+            {answers.value.map((item: any, index: number) => (
+              <div
+                class={[styles.unitAnswer, item.checked && styles.active]}
+                onClick={() => onSelectAnswer(item)}>
+                <div class={styles.answerContent}>
+                  <span class={styles.option}>{labelOptions[index + 1]}.</span>
+                  {item.questionAnswerTypeCode === AnswerType.IMAGE && (
+                    <div class={styles.value}>
+                      <Image src={item.questionAnswer} />
+                    </div>
+                  )}
+                  {item.questionAnswerTypeCode === AnswerType.TXT && (
+                    <div class={styles.value}>{item.questionAnswer}</div>
+                  )}
+                </div>
+              </div>
+            ))}
+            <div class={[styles.sortReset, 'van-hairline--top']}>
+              <span class={styles.tips}>我的回答(可拖拽)</span>
+              <Button
+                type="primary"
+                round
+                disabled={props.readOnly}
+                onClick={() => {
+                  state.options = [];
+                  state.list = [];
+                  onSelect();
+                  initOptions();
+                }}>
+                重置
+              </Button>
+            </div>
+
+            {props.readOnly ? (
+              state.options.map((item: any) => (
+                <div class={styles.itemsContainer}>
+                  {item.leftType === AnswerType.TXT && (
+                    <Tag class={[styles.items]} data-id={item.itemIndex}>
+                      {item.leftValue}
+                    </Tag>
+                  )}
+                  {item.leftType === AnswerType.IMAGE && (
+                    <Image
+                      src={item.leftValue}
+                      data-id={item.itemIndex}
+                      class={[styles.imgs, 'van-hairline--surround']}
+                      fit="cover"
+                    />
+                  )}
+                </div>
+              ))
+            ) : (
+              <Draggable v-model:modelValue={state.options} itemKey="itemIndex">
+                {{
+                  item: (element: any) => {
+                    const item = element.element;
+                    return (
+                      <div class={styles.itemsContainer}>
+                        {item.leftType === AnswerType.TXT && (
+                          <Tag class={[styles.items]} data-id={item.itemIndex}>
+                            {item.leftValue}
+                          </Tag>
+                        )}
+                        {item.leftType === AnswerType.IMAGE && (
+                          <Image
+                            src={item.leftValue}
+                            data-id={item.itemIndex}
+                            class={[styles.imgs, 'van-hairline--surround']}
+                            fit="cover"
+                          />
+                        )}
+                      </div>
+                    );
+                  }
+                }}
+              </Draggable>
+            )}
+          </div>
+        </div>
+        {props.showAnalysis && (
+          <div class={styles.unitSubject}>
+            <AnswerAnalysis
+              answerAnalysis={props.analysis.message}
+              topic={props.analysis.topic}
+              userResult={props.analysis.userResult}
+            />
+          </div>
+        )}
+      </>
+    );
+  }
+});

+ 49 - 0
src/views/knowledge-library/model/error-mode/index.module.less

@@ -0,0 +1,49 @@
+.popupResult {
+  padding: 20px 20px 25px;
+  color: #333333;
+  font-size: 15px;
+
+  .resultTitle {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    text-align: center;
+    font-size: 18px;
+    font-weight: 600;
+    color: #333333;
+    .titleImg {
+      width: 18px;
+      height: 18px;
+      margin-right: 6px;
+    }
+  }
+
+  .result {
+    margin-top: 20px;
+    padding: 12px;
+    background: #f6f6f6;
+    border-radius: 4px;
+    font-size: 16px;
+    font-weight: 500;
+    color: #333333;
+
+    .yes {
+      color: #4593f4;
+      margin-right: 20px;
+    }
+    .no {
+      color: #f44541;
+    }
+  }
+
+  .resultContent {
+    padding: 20px 0 30px;
+    font-size: 15px;
+    color: #333333;
+    text-align: justify;
+    line-height: 23px;
+    span {
+      font-weight: 600;
+    }
+  }
+}

+ 57 - 0
src/views/knowledge-library/model/error-mode/index.tsx

@@ -0,0 +1,57 @@
+import { defineComponent } from 'vue'
+import { Image, Button } from 'vant'
+import iconError from '../../images/icon-error.png'
+import styles from './index.module.less'
+
+export default defineComponent({
+  name: 'result-mode',
+  props: {
+    confirmButtonText: {
+      type: String,
+      default: '我知道了'
+    },
+    answerAnalysis: {
+      type: String,
+      default: ''
+    },
+    questionTypeCode: {
+      type: String,
+      default: ''
+    }
+  },
+  emits: ['close', 'conform'],
+  setup(props, { emit }) {
+    return () => (
+      <div class={styles.popupResult}>
+        <div class={styles.resultTitle}>
+          <Image src={iconError} class={styles.titleImg} />
+
+          {props.questionTypeCode === 'PLAY' ? '不合格!' : '回答错误!'}
+        </div>
+
+        {/* <div class={styles.result}>
+          正确答案: <span class={styles.yes}>A</span>
+          您选择: <span class={styles.no}>B</span>
+        </div> */}
+
+        <div class={styles.resultContent}>
+          <span>答案解析:</span>
+          {props.answerAnalysis}
+        </div>
+
+        <Button
+          type="primary"
+          round
+          class={styles.btn}
+          block
+          onClick={() => {
+            emit('conform')
+            emit('close')
+          }}
+        >
+          {props.confirmButtonText}
+        </Button>
+      </div>
+    )
+  }
+})

+ 72 - 0
src/views/knowledge-library/model/keep-look-question/index.module.less

@@ -0,0 +1,72 @@
+.unitSubject {
+  padding: 15px;
+  margin: 0 13px;
+  background-color: #fff;
+  // overflow: hidden;
+  border-radius: 10px;
+  & + .unitSubject {
+    margin-top: 12px;
+  }
+}
+
+.unitAnswers {
+  position: relative;
+  padding-top: 20px;
+  padding-bottom: 20px;
+
+  .answerItem {
+    position: relative;
+    z-index: 2;
+    margin-bottom: 15px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    &:last-child {
+      margin-bottom: 0;
+    }
+  }
+  .img {
+    width: 95px;
+  }
+  .unitItem {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    background: #ffffff;
+    border-radius: 6px;
+    border: 2px solid #d5d5d5;
+    overflow: hidden;
+    height: 54px;
+    width: 95px;
+    font-size: 16px;
+    font-weight: 500;
+    color: #333333;
+    line-height: 22px;
+    text-align: center;
+  }
+
+  .active {
+    border: 2px solid #ff8057;
+    color: #f67146;
+  }
+}
+
+.canvasSection {
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.resetBtnGroup {
+  text-align: right;
+  padding-bottom: 16px;
+  :global {
+    .van-button {
+      min-width: 84px;
+      line-height: 31px;
+      height: 31px;
+      font-size: 15px;
+      font-weight: 500;
+    }
+  }
+}

+ 515 - 0
src/views/knowledge-library/model/keep-look-question/index.tsx

@@ -0,0 +1,515 @@
+import { Image, Button } from 'vant';
+import { defineComponent, nextTick, onMounted, reactive, ref } from 'vue';
+import styles from './index.module.less';
+import { useRect } from '@vant/use';
+import { AnswerType, QuestionType } from '../../unit';
+import AnserTitle from '../anser-title';
+import AnswerAnalysis from '../answer-analysis';
+
+// 单选和多选题
+export default defineComponent({
+  name: 'keep-look-question',
+  props: {
+    value: {
+      type: Array,
+      default: () => []
+    },
+    index: {
+      // 题目是第几道
+      type: Number,
+      default: 1
+    },
+    data: {
+      type: Object,
+      default: () => ({})
+    },
+    /* 只读 */
+    readOnly: {
+      type: Boolean,
+      default: false
+    },
+    showRate: {
+      type: Boolean,
+      default: false
+    },
+    showAnalysis: {
+      // 是否显示解析
+      type: Boolean,
+      default: false
+    },
+    analysis: {
+      type: Object,
+      default: () => ({
+        message: '',
+        topic: false, // 是否显示结果
+        userResult: true // 用户答题对错
+      })
+    }
+  },
+  emits: ['update:value'],
+  setup(props, { emit }) {
+    const canvasRef = ref();
+    const state = reactive({
+      answerDomId: 'answer' + +new Date(),
+      answerRect: {} as any,
+      dpr: 1,
+      sortable: null as any,
+      list: [] as any,
+      options: [] as any,
+      drawLineList: [] as any,
+      selectItem: [] as any
+    });
+    /*
+    drawLineList 下的对象
+      {
+          startPoint: { x: 0, y: 0 },
+          endPoint: { x: 0, y: 0},
+          leftIndex: 1,
+          rightIndex: 2
+        }
+    */
+    const onLeftClick = (e: any, item: any) => {
+      // 是否只读
+      if (props.readOnly) return;
+      state.options.forEach((option: any) => {
+        if (!option.leftLocked && item.index !== option.index) {
+          option.left = false;
+        }
+      });
+
+      const selectd = isDrawLine(item.index, 'left');
+      // 判断当前元素是否已经连线了
+      if (selectd.status) {
+        state.options.forEach((option: any) => {
+          if (!option.rightLocked) {
+            option.right = false;
+          }
+        });
+        state.selectItem = [];
+        // 如果已经连线了则去掉
+        state.drawLineList.splice(selectd.selectIndex, 1);
+        // 重新绘制
+        renderDrawLine(canvasRef.value);
+
+        state.options.forEach((option: any) => {
+          if (selectd.selectOption.leftIndex === option.index) {
+            option.left = false;
+            option.leftLocked = false;
+          }
+          if (selectd.selectOption.rightIndex === option.index) {
+            option.right = false;
+            option.rightLocked = false;
+          }
+        });
+      } else {
+        item.left = !item.left;
+        if (item.left) {
+          // 为true时添加定位
+          state.selectItem[0] = {
+            index: item.index
+          };
+        } else {
+          state.selectItem[0] = null;
+        }
+
+        // 判断是否有二个的关联
+        if (state.selectItem[0] && state.selectItem[1]) {
+          const postion = calcPoint();
+          state.drawLineList.push(postion);
+          state.selectItem = [];
+
+          renderDrawLine(canvasRef.value);
+        }
+      }
+
+      onSelect();
+    };
+
+    const onRightClick = (e: any, item: any) => {
+      // 是否只读
+      if (props.readOnly) return;
+      // 去掉
+      state.options.forEach((option: any) => {
+        if (!option.rightLocked && item.index !== option.index) {
+          option.right = false;
+        }
+      });
+      const selectd = isDrawLine(item.index, 'right');
+
+      // 判断当前元素是否已经连线了
+      if (selectd.status) {
+        state.options.forEach((option: any) => {
+          if (!option.leftLocked) {
+            option.left = false;
+          }
+        });
+        state.selectItem = [];
+        // console.log(
+        //   selectd,
+        //   'selected',
+        //   JSON.stringify(state.drawLineList),
+        //   state.drawLineList,
+        //   state.drawLineList.length
+        // )
+        // 如果已经连线了则去掉
+        state.drawLineList.splice(selectd.selectIndex, 1);
+        // 重新绘制
+        renderDrawLine(canvasRef.value);
+
+        state.options.forEach((option: any) => {
+          if (selectd.selectOption.leftIndex === option.index) {
+            option.left = false;
+            option.leftLocked = false;
+          }
+          if (selectd.selectOption.rightIndex === option.index) {
+            option.right = false;
+            option.rightLocked = false;
+          }
+        });
+      } else {
+        item.right = !item.right;
+
+        if (item.right) {
+          // 为true时添加定位
+          state.selectItem[1] = {
+            index: item.index
+          };
+        } else {
+          state.selectItem[1] = null;
+        }
+
+        // 判断是否有二个的关联
+        if (state.selectItem[0] && state.selectItem[1]) {
+          const postion = calcPoint();
+          state.drawLineList.push(postion);
+          state.selectItem = [];
+          renderDrawLine(canvasRef.value);
+        }
+      }
+
+      onSelect();
+    };
+
+    /**
+     * @description 判断是否已连接
+     * @param key 选中的选项标识
+     * @returns status 状态,  selectIndex 索引, selectOption 选中选项
+     */
+    const isDrawLine = (key: number, type = 'left') => {
+      const drawLineList = state.drawLineList || [];
+      let status = false; // true 连,false 没连
+      let selectIndex = 0; // 连了所在的索引
+      let selectOption: any = {};
+      drawLineList.forEach((item: any, index: number) => {
+        if (item.leftIndex === key && type === 'left') {
+          selectOption = item;
+          status = true;
+          selectIndex = index;
+        } else if (item.rightIndex === key && type === 'right') {
+          selectOption = item;
+          status = true;
+          selectIndex = index;
+        }
+      });
+      return {
+        status,
+        selectIndex,
+        selectOption
+      };
+    };
+
+    /**
+     * @description 计算连线坐标位置及左右关联编号,每次计算坐标的时候都取元素最新位置定位
+     * @returns 连线的坐标
+     */
+    const calcPoint = () => {
+      const canvasPostion = useRect(canvasRef.value);
+      const leftSectionItem = state.selectItem[0];
+      const firstPostion: any = useRect(
+        document.getElementById(leftSectionItem.index + '-left') as any
+      );
+      firstPostion.index = leftSectionItem.index;
+      // console.log('🚀 ~ calcPoint ~ leftObj', leftObj)
+      const rightSectionItem = state.selectItem[1];
+      const secondPostion: any = useRect(
+        document.getElementById(rightSectionItem.index + '-right') as any
+      );
+      secondPostion.index = rightSectionItem.index;
+      console.log(state.selectItem, firstPostion, secondPostion);
+      const startPoint = {
+        x: firstPostion.width,
+        y: firstPostion.top + firstPostion.height / 2 - canvasPostion.top
+      };
+
+      const endPoint = {
+        x: secondPostion.left - canvasPostion.left,
+        y: secondPostion.top + secondPostion.height / 2 - canvasPostion.top
+      };
+
+      state.options.forEach((item: any) => {
+        if (item.index === firstPostion.index) {
+          item.leftLocked = true;
+        }
+        if (item.index === secondPostion.index) {
+          item.rightLocked = true;
+        }
+      });
+      return {
+        startPoint,
+        endPoint,
+        leftIndex: firstPostion.index,
+        rightIndex: secondPostion.index
+      };
+    };
+
+    /**
+     * @description 绘制连线
+     * @param canvasRef 对象
+     */
+    const renderDrawLine = (canvasRef: any) => {
+      // 重新画线
+      if (canvasRef.getContext) {
+        // console.log(canvasRef.offsetWidth, canvasRef.offsetHeight)
+
+        // 直接用 scale 放大整个坐标系,相对来说就是放大了每个绘制操作
+        const ctx = canvasRef.getContext('2d');
+        // ctx.scale(dpr, dpr)
+        // ctx.scale(dpr, dpr)
+        // canvasRef.width = canvasRef.offsetWidth
+        // canvasRef.height = canvasRef.offsetHeight
+        // width={state.answerRect.width * state.dpr || 0}
+        // height={state.answerRect.height * state.dpr || 0}
+        ctx.clearRect(
+          0,
+          0,
+          state.answerRect.width * state.dpr || 0,
+          state.answerRect.height * state.dpr || 0
+        );
+        state.drawLineList.forEach((item: any) => {
+          drawLine(ctx, item.startPoint, item.endPoint);
+        });
+      }
+    };
+
+    /**
+     * @description 连线
+     * @param ctx canvas 对象
+     * @param startPoint 开始坐标
+     * @param endPoint 结束坐标
+     * @returns void(0)
+     */
+    const drawLine = (ctx: any, startPoint: any, endPoint: any) => {
+      ctx.beginPath();
+      //  1 为了处理连线显示问题
+      ctx.moveTo(
+        Math.floor(startPoint.x - 1) * state.dpr,
+        Math.ceil(startPoint.y) * state.dpr
+      );
+      ctx.lineTo(
+        Math.ceil(endPoint.x + 1) * state.dpr,
+        Math.ceil(endPoint.y) * state.dpr
+      );
+      ctx.lineWidth = 2 * state.dpr;
+      ctx.strokeStyle = '#FF8057';
+
+      ctx.stroke();
+    };
+
+    // 返回选中的结果
+    const onSelect = () => {
+      const options = state.options || [];
+      const drawLineList = state.drawLineList || [];
+      const result: any = [];
+      drawLineList.forEach((item: any) => {
+        const leftOption = options.find(
+          (child: any) => child.index === item.leftIndex
+        );
+        const rightOption = options.find(
+          (child: any) => child.index === item.rightIndex
+        );
+        result.push({
+          answerId: leftOption.index,
+          answer: leftOption.leftValue,
+          answerExtra: rightOption.rightValue
+        });
+      });
+      emit('update:value', result);
+    };
+
+    const initOptions = () => {
+      const answers = props.data.answers || [];
+      const userAnswer = props.data.userAnswer || []; // 用户填写的答案
+      // console.log(answers, '111')
+      answers.forEach((answer: any) => {
+        const tmp = {
+          index: answer.examinationQuestionAnswerId, // 左边的值
+          leftValue: answer.questionAnswer, // 左边的值
+          rightValue: answer.questionExtra, // 右边的值
+          leftType: answer.questionAnswerTypeCode || 'TXT', // 左边类型
+          rightType: answer.questionExtraTypeCode || 'TXT', // 右边类型
+          left: false, // 左边是否选中
+          right: false, // 右边是否选中
+          leftLocked: false, // 是否已经连线
+          rightLocked: false // 是否已经连线
+        };
+
+        state.options.push(tmp);
+      });
+
+      // 反显答案-初始化数据
+      // console.log(userAnswer)
+      userAnswer.forEach((user: any) => {
+        const temps: any = {
+          startPoint: { x: 0, y: 0 },
+          endPoint: { x: 0, y: 0 },
+          leftIndex: 0,
+          rightIndex: 0
+        };
+        state.options.forEach((option: any) => {
+          // 左边状态
+          if (option.index === user.answerId) {
+            option.left = true;
+            option.leftLocked = true;
+            temps.leftIndex = option.index;
+          }
+          // 右边状态
+          // console.log(option, user, '----')
+          if (option.rightValue === user.answerExtra) {
+            option.right = true;
+            option.leftLocked = true;
+            temps.rightIndex = option.index;
+          }
+        });
+        state.drawLineList.push(temps);
+      });
+
+      // console.log(state.drawLineList, state.options)
+      // 反显答案-连线
+      nextTick(() => {
+        state.drawLineList.forEach((draw: any) => {
+          state.selectItem = [];
+          const leftObj: any = useRect(
+            document.getElementById(draw.leftIndex + '-left') as any
+          );
+          leftObj.index = draw.leftIndex;
+          state.selectItem[0] = leftObj;
+          const rightObj: any = useRect(
+            document.getElementById(draw.rightIndex + '-right') as any
+          );
+          rightObj.index = draw.rightIndex;
+          state.selectItem[1] = rightObj;
+          const postion = calcPoint();
+          draw.endPoint = postion.endPoint;
+          draw.startPoint = postion.startPoint;
+          state.selectItem = [];
+        });
+        setTimeout(() => {
+          renderDrawLine(canvasRef.value);
+        }, 100);
+      });
+    };
+
+    onMounted(() => {
+      initOptions();
+      // 获取canvas 对象
+      nextTick(() => {
+        // 获取canvas元素定位
+        const answer: any = document.getElementById(state.answerDomId);
+        const answerRect = useRect(answer);
+        state.answerRect = answerRect;
+
+        const dpr = window.devicePixelRatio;
+        state.dpr = dpr;
+      });
+    });
+
+    return () => (
+      <>
+        <div class={styles.unitSubject}>
+          {/* 标题 */}
+          <AnserTitle
+            index={props.index}
+            name={props.data.name}
+            score={props.data.totalScore}
+            showRate={props.showRate}
+            answerType={QuestionType.LINK}
+            extra={{
+              questionDetail: props.data.questionDetail,
+              mediaUrls: props.data.mediaUrls,
+              rightRate: props.data.rightRate
+            }}
+          />
+
+          <div class={[styles.unitAnswers]} id={state.answerDomId}>
+            <canvas
+              ref={canvasRef}
+              class={styles.canvasSection}
+              width={state.answerRect.width * state.dpr || 0}
+              height={state.answerRect.height * state.dpr || 0}
+              style={{
+                width: (state.answerRect.width || 0) + 'px',
+                height: (state.answerRect.height || 0) + 'px'
+              }}></canvas>
+            {state.options.map((item: any) => (
+              <div class={styles.answerItem}>
+                <div
+                  class={[styles.unitItem, item.left && styles.active]}
+                  id={item.index + '-left'}
+                  onClick={(e: any) => onLeftClick(e, item)}>
+                  {item.leftType === AnswerType.TXT && item.leftValue}
+                  {item.leftType === AnswerType.IMAGE && (
+                    <Image src={item.leftValue} class={styles.img} />
+                  )}
+                </div>
+                <div
+                  class={[styles.unitItem, item.right && styles.active]}
+                  id={item.index + '-right'}
+                  onClick={(e: any) => onRightClick(e, item)}>
+                  {item.rightType === AnswerType.TXT && item.rightValue}
+                  {item.rightType === AnswerType.IMAGE && (
+                    <Image src={item.rightValue} class={styles.img} />
+                  )}
+                </div>
+              </div>
+            ))}
+          </div>
+          <div class={styles.resetBtnGroup}>
+            <Button
+              round
+              type="primary"
+              disabled={props.readOnly}
+              onClick={() => {
+                state.drawLineList = [];
+                renderDrawLine(canvasRef.value);
+
+                // 清除所有的选中状态
+                state.options.forEach((item: any) => {
+                  item.left = false;
+                  item.right = false;
+                  item.leftLocked = false;
+                  item.rightLocked = false;
+                });
+                // 清除所有的选择的内容
+                state.selectItem = [];
+
+                // 初始化数据
+                onSelect();
+              }}>
+              重置
+            </Button>
+          </div>
+        </div>
+
+        {props.showAnalysis && (
+          <div class={styles.unitSubject}>
+            <AnswerAnalysis
+              answerAnalysis={props.analysis.message}
+              topic={props.analysis.topic}
+              userResult={props.analysis.userResult}
+            />
+          </div>
+        )}
+      </>
+    );
+  }
+});

+ 62 - 0
src/views/knowledge-library/model/play-question/index.module.less

@@ -0,0 +1,62 @@
+.unitSubject {
+  padding: 15px;
+  margin: 0 13px;
+  background-color: #fff;
+  // overflow: hidden;
+  border-radius: 10px;
+  & + .unitSubject {
+    margin-top: 12px;
+  }
+}
+
+.unitAnswers {
+  padding-top: 20px;
+  padding-bottom: 20px;
+}
+
+.playSection {
+  padding: 15px 12px;
+  background: #ffebdd;
+  border-radius: 10px;
+  .img {
+    width: 45px;
+    height: 45px;
+    margin-right: 12px;
+  }
+
+  .playTitle {
+    font-size: 16px;
+    font-weight: 500;
+    color: #333333;
+  }
+  .playBtn {
+    flex-shrink: 0;
+    font-size: 15px;
+    font-weight: 500;
+    color: #ffffff;
+    height: 31px;
+    line-height: 31px;
+  }
+}
+
+.unitScoreNum {
+  margin-top: 25px;
+  padding-top: 20px;
+  text-align: center;
+  .score {
+    font-size: 32px;
+    font-weight: bold;
+    color: #f67146;
+  }
+  .scoreTitle {
+    font-size: 16px;
+    font-weight: 500;
+    color: #333333;
+    padding: 4px 0 10px;
+  }
+
+  .scoreTips {
+    font-size: 12px;
+    color: #aaaaaa;
+  }
+}

+ 268 - 0
src/views/knowledge-library/model/play-question/index.tsx

@@ -0,0 +1,268 @@
+import { Image, Button, Cell, Icon } from 'vant';
+import { computed, defineComponent, onMounted, reactive } from 'vue';
+import styles from './index.module.less';
+import {
+  listenerMessage,
+  postMessage,
+  promisefiyPostMessage,
+  removeListenerMessage
+} from '@/helpers/native-message';
+import iconSong from '../../images/icon-song.png';
+import AnserTitle from '../anser-title';
+import { QuestionType } from '../../unit';
+import AnswerAnalysis from '../answer-analysis';
+import { browser } from '@/helpers/utils';
+
+// 单选和多选题
+export default defineComponent({
+  name: 'choice-question',
+  props: {
+    value: {
+      type: Array,
+      default: () => []
+    },
+    index: {
+      // 题目是第几道
+      type: Number,
+      default: 1
+    },
+    data: {
+      type: Object,
+      default: () => ({})
+    },
+    // 测试编号
+    unitId: {
+      type: String,
+      default: ''
+    },
+    /* 只读 */
+    readOnly: {
+      type: Boolean,
+      default: false
+    },
+    // 学员详情显示分数
+    showScore: {
+      type: Boolean,
+      default: false
+    },
+    showRate: {
+      type: Boolean,
+      default: false
+    },
+    showAnalysis: {
+      // 是否显示解析
+      type: Boolean,
+      default: false
+    },
+    analysis: {
+      type: Object,
+      default: () => ({
+        message: '',
+        topic: false, // 是否显示结果
+        userResult: true, // 用户答题对错
+        score: 0 // 分数
+      })
+    }
+  },
+  emits: ['update:value'],
+  setup(props, { emit }) {
+    console.log(props, 'props');
+    const state = reactive({
+      list: [] as any,
+      score: 0
+    });
+
+    const questionExtendsInfo = computed(() =>
+      props.data.questionExtendsInfo
+        ? JSON.parse(props.data.questionExtendsInfo)
+        : ''
+    );
+
+    /**
+     * @description 进行评测
+     */
+    const onEvaluation = () => {
+      const info = questionExtendsInfo.value;
+      if (!info) return;
+      console.log(props.unitId);
+      postMessage({
+        api: 'openAccompanyWebView',
+        content: {
+          // url: `https://ponline.colexiu.com/orchestra-music-score/?id=${info.musicSheetId}&modelType=evaluation&unitId=${props.unitId}&questionId=${props.data.id}`,
+          url: `${location.origin}/orchestra-music-score/?id=${info.musicSheetId}&modelType=evaluation&unitId=${props.unitId}&questionId=${props.data.id}`,
+          orientation: 0,
+          isHideTitle: true,
+          statusBarTextColor: false,
+          isOpenLight: true
+        }
+      });
+
+      // 打开页面监听
+      listenerMessage('webViewOnResume', () => {
+        if (browser().android) {
+          const instance: any =
+            (window as any).ORCHESTRA ||
+            (window as any).webkit?.messageHandlers?.ORCHESTRA;
+
+          console.log(instance, '-------------');
+          const result = instance.getCache2('h5-orchestra-unit');
+          console.log('🚀 ~ listenerMessage ~ result', result);
+          const tempResult = result ? JSON.parse(result) : {};
+          if (tempResult.questionId === props.data.id) {
+            const tempScore = tempResult.score || 0;
+            // 跟上一次分数对比
+            if (state.score < tempScore) {
+              state.score = tempResult.score || 0;
+            }
+
+            // 置空,存的缓存
+            promisefiyPostMessage({
+              api: 'setCache',
+              content: {
+                key: 'h5-orchestra-unit',
+                value: ''
+              }
+            });
+          }
+          emit('update:value', [
+            {
+              answerId: '',
+              answer: state.score,
+              answerExtra: ''
+            }
+          ]);
+          // 关闭页面监听
+          removeListenerMessage('webViewOnResume', () => {
+            //
+          });
+        } else {
+          promisefiyPostMessage({
+            api: 'getCache',
+            content: { key: 'h5-orchestra-unit' }
+          }).then((res: any) => {
+            const content = res.content;
+            if (content.value) {
+              console.log(
+                '🚀 ~ listenerMessage ~ content.value',
+                content.value,
+                '---------------'
+              );
+              const result = content.value ? JSON.parse(content.value) : {};
+              console.log(
+                '🚀 ~ listenerMessage ~ result',
+                result,
+                props.data.questionId
+              );
+
+              if (result.questionId === props.data.id) {
+                const tempScore = result.score || 0;
+                // 跟上一次分数对比
+                if (state.score < tempScore) {
+                  state.score = result.score || 0;
+                }
+              }
+
+              emit('update:value', [
+                {
+                  answerId: '',
+                  answer: state.score,
+                  answerExtra: ''
+                }
+              ]);
+
+              // 置空,存的缓存
+              promisefiyPostMessage({
+                api: 'setCache',
+                content: {
+                  key: 'h5-orchestra-unit',
+                  value: ''
+                }
+              });
+            }
+
+            // 关闭页面监听
+            removeListenerMessage('webViewOnResume', () => {
+              //
+            });
+          });
+        }
+      });
+    };
+
+    onMounted(() => {
+      //
+      const userValue: any = props.value || [];
+      if (userValue.length > 0) {
+        state.score = userValue[0].answer;
+      }
+    });
+
+    return () => (
+      <>
+        <div class={styles.unitSubject}>
+          {/* 标题 */}
+          <AnserTitle
+            index={props.index}
+            name={props.data.name}
+            score={props.data.totalScore}
+            showRate={props.showRate}
+            answerType={QuestionType.PLAY}
+            extra={{
+              questionDetail: props.data.questionDetail,
+              mediaUrls: '',
+              rightRate: props.data.rightRate
+            }}
+          />
+
+          <div class={[styles.unitAnswers]}>
+            {questionExtendsInfo.value && (
+              <Cell
+                class={styles.playSection}
+                center
+                titleClass={['van-ellipsis', styles.playTitle]}>
+                {{
+                  icon: () => <Image class={styles.img} src={iconSong} />,
+                  title: () => <>{questionExtendsInfo.value.musicName}</>,
+                  value: () => (
+                    <Button
+                      round
+                      class={styles.playBtn}
+                      type="primary"
+                      onClick={onEvaluation}
+                      disabled={props.readOnly}>
+                      点击评测
+                      <Icon name="play" />
+                    </Button>
+                  )
+                }}
+              </Cell>
+            )}
+
+            {(!props.readOnly || props.showScore) && (
+              <div class={['van-hairline--top', styles.unitScoreNum]}>
+                <div class={styles.score}>{state.score}</div>
+                <div class={styles.scoreTitle}>评测分数</div>
+                {!props.showScore && (
+                  <div class={styles.scoreTips}>
+                    多次评测取完整评测的最高分数
+                  </div>
+                )}
+              </div>
+            )}
+          </div>
+        </div>
+        {props.showAnalysis && (
+          <div class={styles.unitSubject}>
+            <AnswerAnalysis
+              answerAnalysis={props.analysis.message}
+              topic={props.analysis.topic}
+              userResult={props.analysis.userResult}
+              rightFlagText={'合格'}
+              errorFlagText={'不合格'}
+            />
+          </div>
+        )}
+      </>
+    );
+  }
+});

+ 81 - 0
src/views/knowledge-library/model/result-finish/index.module.less

@@ -0,0 +1,81 @@
+.finishResult {
+  color: #333333;
+  font-size: 15px;
+
+  .finishContainer {
+    background: url('../../images/exam-pass-bg.png') no-repeat top center;
+    background-size: contain;
+    height: 413px;
+  }
+
+  .finishContent {
+    padding-top: 180px;
+    text-align: center;
+
+    .scoreNums {
+      line-height: 70px;
+      font-size: 60px;
+      font-weight: bold;
+      color: #f67146;
+      span {
+        font-size: 20px;
+        padding-left: 10px;
+      }
+    }
+
+    .scoreName {
+      font-size: 20px;
+      font-weight: 600;
+      color: #191919;
+      padding: 10px 0 20px;
+      max-width: 80%;
+      margin-left: 10%;
+      line-height: 28px;
+    }
+    .scoreResult {
+      font-size: 16px;
+      font-weight: 500;
+      color: #f44541;
+    }
+  }
+}
+.finishFail {
+  .finishContainer {
+    background: url('../../images/exam-fail-bg.png') no-repeat top center;
+    background-size: contain;
+    height: 413px;
+  }
+}
+.finishPractice {
+  .finishContainer {
+    background: url('../../images/exam-pass-bg-p.png') no-repeat top center;
+    background-size: contain;
+    height: 513px;
+  }
+}
+
+.finishBtnGroup {
+  margin-top: 30px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  .finishLeft,
+  .finishRight {
+    text-align: center;
+    height: 50px;
+    line-height: 44px;
+    width: 100%;
+    font-size: 18px;
+    font-weight: 500;
+  }
+  .finishLeft {
+    color: #703a17;
+    background: url('../../images/exam-right-bg.png') no-repeat center center;
+    background-size: contain;
+  }
+  .finishRight {
+    color: #722b0f;
+    background: url('../../images/exam-left-btn.png') no-repeat center center;
+    background-size: contain;
+  }
+}

+ 65 - 0
src/views/knowledge-library/model/result-finish/index.tsx

@@ -0,0 +1,65 @@
+import { defineComponent, PropType } from 'vue';
+// import iconError from '../../images/icon-error.png';
+import styles from './index.module.less';
+
+export default defineComponent({
+  name: 'result-mode',
+  props: {
+    confirmButtonText: {
+      type: String,
+      default: '去练习'
+    },
+    cancelButtonText: {
+      type: String,
+      default: '我知道了'
+    },
+    status: {
+      type: String as PropType<'SUCCESS' | 'FAIL' | 'PRACTICE'>,
+      default: 'SUCCESS'
+    },
+    result: {
+      type: Object,
+      default: () => ({
+        tips: '恭喜你,测验通过!',
+        score: 0,
+        examName: ''
+      })
+    }
+  },
+  emits: ['close', 'conform'],
+  setup(props, { slots, emit }) {
+    return () => (
+      <div
+        class={[
+          styles.finishResult,
+          props.status === 'FAIL' && styles.finishFail,
+          props.status === 'PRACTICE' && styles.finishPractice
+        ]}>
+        <div class={styles.finishContainer}>
+          <div class={styles.finishContent}>
+            {slots.content ? (
+              slots.content()
+            ) : (
+              <>
+                <div class={styles.scoreNums}>
+                  {props.result.score}
+                  <span>分</span>
+                </div>
+                <div class={styles.scoreName}>{props.result.examName}</div>
+                <div class={styles.scoreResult}>{props.result.tips}</div>
+              </>
+            )}
+          </div>
+        </div>
+        <div class={styles.finishBtnGroup}>
+          <div class={styles.finishLeft} onClick={() => emit('close')}>
+            {props.cancelButtonText}
+          </div>
+          <div class={styles.finishRight} onClick={() => emit('conform')}>
+            {props.confirmButtonText}
+          </div>
+        </div>
+      </div>
+    );
+  }
+});

BIN
src/views/knowledge-library/model/unit-audio/images/icon-audio.png


BIN
src/views/knowledge-library/model/unit-audio/images/icon-pause.png


BIN
src/views/knowledge-library/model/unit-audio/images/icon-play.png


+ 41 - 0
src/views/knowledge-library/model/unit-audio/index.module.less

@@ -0,0 +1,41 @@
+.unitAudio {
+  position: relative;
+  display: flex;
+}
+
+.nativeAudio {
+  width: 100%;
+  height: 40px;
+}
+
+.htmlAudio {
+  // position: absolute;
+  width: 100%;
+  height: 40px;
+  box-sizing: border-box;
+  background: #ff8057;
+  border-radius: 20px;
+  padding: 0 12px;
+  z-index: 9;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  color: #fff;
+  .htmlTimes {
+    display: flex;
+    align-items: center;
+    color: #fff;
+    font-size: 16px;
+    font-weight: 500;
+    color: #ffffff;
+    line-height: 22px;
+  }
+  .iconAudio {
+    margin-right: 6px;
+    font-size: 18px;
+  }
+
+  .audioStatus {
+    font-size: 14px;
+  }
+}

+ 88 - 0
src/views/knowledge-library/model/unit-audio/index.tsx

@@ -0,0 +1,88 @@
+import { Icon } from 'vant'
+import { defineComponent, onUnmounted, reactive, watch } from 'vue'
+import styles from './index.module.less'
+import { Howl } from 'howler'
+import iconAudio from './images/icon-audio.png'
+import iconPlay from './images/icon-play.png'
+import iconPause from './images/icon-pause.png'
+import { eventUnit } from '../../unit'
+
+// 音频播放
+export default defineComponent({
+  name: 'unit-audio',
+  props: {
+    src: {
+      type: String,
+      default: ''
+    }
+  },
+  setup(props) {
+    const state = reactive({
+      audioStatus: 'stopped',
+      duration: 0
+    })
+    // https://github.com/Tonejs/Tone.js/issues/784 部分ios上可能存在问题
+    const htick: any = new Howl({
+      src: props.src + '?t=' + +new Date(),
+      format: ['mp3']
+      // sprite: {
+      //   blast: [0, 3000],
+      //   laser: [4000, 1000],
+      //   winner: [6000, 5000]
+      // }
+    })
+    // console.log(htick)
+
+    htick.on('load', (val: any) => {
+      console.log(htick.duration())
+      state.duration = Math.ceil(htick.duration())
+    })
+
+    htick.on('end', (val: any) => {
+      state.audioStatus = 'stopped'
+    })
+
+    eventUnit.on('unitAudioStop', () => {
+      htick.stop()
+      state.audioStatus = 'stopped'
+    })
+
+    onUnmounted(() => {
+      htick.off('load')
+    })
+    return () => (
+      <div class={styles.unitAudio}>
+        <div
+          class={styles.htmlAudio}
+          onClick={(e: any) => {
+            e.stopPropagation()
+            if (state.audioStatus === 'stopped') {
+              eventUnit.emit('unitAudioStop')
+              htick.play()
+              state.audioStatus = 'paused'
+            } else if (state.audioStatus === 'paused') {
+              htick.pause()
+              state.audioStatus = 'stopped'
+            }
+          }}
+        >
+          <div class={styles.htmlTimes}>
+            <Icon class={styles.iconAudio} name={iconAudio} />
+            <span>{state.duration}"</span>
+          </div>
+
+          {/* pause-circle */}
+          {/* 'play-circle' : 'pause-circle' */}
+          <Icon
+            name={state.audioStatus === 'stopped' ? iconPause : iconPlay}
+            class={styles.audioStatus}
+          />
+        </div>
+        {/* <audio controls class={styles.nativeAudio} id={state.id}>
+          <source src={props.src} type="audio/mpeg" />
+          您的浏览器不支持该音频格式。
+        </audio> */}
+      </div>
+    )
+  }
+})

+ 37 - 0
src/views/knowledge-library/unit.ts

@@ -0,0 +1,37 @@
+import EventEmitter from 'eventemitter3';
+
+export const eventUnit = new EventEmitter();
+
+export const labelOptions = {
+  1: 'A',
+  2: 'B',
+  3: 'C',
+  4: 'D',
+  5: 'E',
+  6: 'F',
+  7: 'G',
+  8: 'H',
+  9: 'I',
+  10: 'J'
+} as any;
+
+export const QuestionType = {
+  RADIO: 'RADIO',
+  CHECKBOX: 'CHECKBOX',
+  LINK: 'LINK',
+  SORT: 'SORT',
+  PLAY: 'PLAY'
+};
+export const QuestionTypeName = {
+  RADIO: '单选题',
+  CHECKBOX: '多选题',
+  LINK: '连线题',
+  SORT: '排序题',
+  PLAY: '演奏题'
+};
+
+export const AnswerType = {
+  IMAGE: 'IMAGE',
+  TXT: 'TXT',
+  AUDIO: 'AUDIO'
+};

BIN
src/views/payment-result/images/icon_close.png


BIN
src/views/payment-result/images/icon_refunding.png


BIN
src/views/payment-result/images/icon_success.png


BIN
src/views/payment-result/images/icon_tradeing.png


+ 157 - 0
src/views/payment-result/index.module.less

@@ -0,0 +1,157 @@
+.paymentTitle {
+  min-height: 177px;
+  background: linear-gradient(180deg, #EFB02D 0%, #FFCD79 100%);
+  border-radius: 0px 0px 8px 8px;
+
+  .orderType {
+    padding-top: 35px;
+    padding-bottom: 90px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    color: #fff;
+
+    .img {
+      width: 52px;
+      height: 52px;
+      margin-right: 14px;
+    }
+
+    span {
+      font-size: 22px;
+      font-weight: 500;
+      line-height: 30px;
+    }
+  }
+
+  .orderPrice {
+    padding-top: 2px;
+    font-size: 22px;
+    text-align: center;
+    font-size: 14px;
+  }
+}
+
+.mTop {
+  margin-top: -52px !important;
+}
+
+.cellGroup {
+  margin: 10px 13px;
+
+  .brandName {
+    line-height: 18px;
+    font-size: 12px;
+    padding: 0 6px;
+    border-radius: 4px;
+    background: linear-gradient(180deg, #FFD982 0%, #FFB45A 100%);
+    border-radius: 4px;
+    border: 1px solid rgba(255, 123, 27, 0.17);
+  }
+
+  :global {
+    .van-cell {
+      padding: 16px 17px;
+      font-size: 16px;
+      color: #333333;
+    }
+
+    .van-cell__value {
+      flex: 0 auto;
+    }
+  }
+
+  .buyDetail {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: 18px 18px 0;
+
+    i {
+      display: inline-block;
+      margin-right: 6px;
+      width: 4px;
+      height: 14px;
+      background: linear-gradient(180deg, #FFB790 0%, #FF8057 100%);
+      border-radius: 2px;
+    }
+
+    font-size: 16px;
+    font-weight: 500;
+    color: #333333;
+    line-height: 22px;
+
+    .buyDetailTitle {
+      display: flex;
+      align-items: center;
+    }
+
+    .refundBtn {
+      font-size: 16px;
+      color: #777777;
+      line-height: 22px;
+    }
+  }
+
+  .buyImg {
+    width: 58px;
+    height: 58px;
+    overflow: hidden;
+    border-radius: 5px;
+    margin-right: 9px;
+  }
+}
+
+.container {
+  :global {
+    .van-button {
+      font-size: 18px;
+      font-weight: 500;
+    }
+  }
+}
+
+.dialogTitle {
+  i {
+    display: inline-block;
+    width: 4px;
+    height: 14px;
+    background: #ff8057;
+    border-radius: 2px;
+    margin-right: 6px;
+  }
+
+  text-align: left;
+  font-size: 18px;
+  font-weight: 500;
+  color: #333333;
+  line-height: 25px;
+  padding: 20px 0 15px 25px;
+}
+
+.refundContent {
+  padding: 0 20px 25px;
+
+  .tips {
+    font-size: 15px;
+    color: #333333;
+    line-height: 21px;
+  }
+}
+
+.refundTitle {
+  padding-top: 25px;
+  font-size: 16px;
+  font-weight: 600;
+  color: #333333;
+  line-height: 22px;
+
+  span {
+    color: #f44541;
+  }
+}
+
+.phoneName {
+  background: #f2f2f2;
+  border-radius: 6px;
+}

+ 204 - 0
src/views/payment-result/index.tsx

@@ -0,0 +1,204 @@
+import MHeader from '@/components/m-header';
+import { defineComponent, onMounted, reactive } from 'vue';
+import { Button, Cell, CellGroup, Image, Tag } from 'vant';
+import styles from './index.module.less';
+import iconRefunding from './images/icon_refunding.png';
+import icon_success from './images/icon_success.png';
+import iconClose from './images/icon_close.png';
+import iconTradeing from './images/icon_tradeing.png';
+import request from '@/helpers/request';
+import { useRoute, useRouter } from 'vue-router';
+import { browser, moneyFormat } from '@/helpers/utils';
+import { useEventListener, useWindowScroll } from '@vueuse/core';
+
+export default defineComponent({
+  name: 'payment-result',
+  setup() {
+    const route = useRoute();
+    const router = useRouter();
+    const state = reactive({
+      refund: route.query.refund,
+      orders: {} as any,
+      goodsInfos: [] as any,
+      background: 'transparent',
+      color: '#fff',
+      backIconColor: 'white' as any,
+      timer: null as any,
+      timerCount: 0 // 执行次数
+    });
+    const form = reactive({
+      resionList: [] as any,
+      refundStatus: false,
+      resion: null,
+      refundSelect: {} as any,
+      checked: null as any
+    });
+    const getDetails = async () => {
+      try {
+        if (!route.query.orderNo) return;
+        const { data } = await request.post(
+          '/edu-app/open/userOrder/paymentStatus/' + route.query.orderNo
+        );
+
+        state.orders = data || {};
+        // state.orders.status = 'REFUNDED'
+        const tempGoods = data.goodsInfos || [];
+        tempGoods.forEach((item: any) => {
+          const img = item.goodsUrl ? item.goodsUrl.split(',')[0] : '';
+          item.goodsUrl = img;
+        });
+        state.goodsInfos = tempGoods;
+      } catch {
+        //
+      }
+    };
+
+    // 定时任务
+    const onTimeout = async () => {
+      // 判断订单状态,如果未支付则刷新
+      if (
+        ['WAIT_PAY', 'PAYING'].includes(state.orders.status) &&
+        state.timerCount <= 10
+      ) {
+        state.timer = setTimeout(async () => {
+          state.timerCount += 1;
+          await getDetails();
+          onTimeout();
+        }, 3000);
+      } else {
+        clearTimeout(state.timer);
+      }
+    };
+
+    const formatImg = (type: any) => {
+      const template: any = {
+        WAIT_PAY: iconTradeing,
+        PAYING: iconTradeing,
+        PAID: icon_success,
+        TIMEOUT: iconClose,
+        FAIL: iconClose,
+        CLOSED: iconClose,
+        REFUNDING: iconRefunding,
+        REFUNDED: icon_success
+      };
+      return template[type] || icon_success;
+    };
+
+    const formatOrderStatus = (status: string) => {
+      const temp: any = {
+        WAIT_PAY: '支付中',
+        PAYING: '支付中',
+        PAID: '支付成功',
+        TIMEOUT: '订单超时',
+        FAIL: '支付失败',
+        CLOSED: '订单关闭',
+        REFUNDING: '退款中',
+        REFUNDED: '已退款'
+      };
+      return temp[status];
+    };
+
+    onMounted(async () => {
+      await getDetails();
+      await onTimeout();
+      useEventListener(document, 'scroll', () => {
+        const { y } = useWindowScroll();
+        if (y.value > 52) {
+          state.background = '#fff';
+          state.color = '#323333';
+          state.backIconColor = 'black';
+        } else {
+          state.background = 'transparent';
+          state.color = '#fff';
+          state.backIconColor = 'white';
+        }
+      });
+    });
+    return () => (
+      <div class={styles.paymentResult}>
+        <div class={styles.paymentTitle}>
+          {browser().isApp && (
+            <MHeader
+              border={false}
+              background={state.background}
+              color={state.color}
+            />
+          )}
+
+          {state.orders.id && (
+            <>
+              <div class={styles.orderType}>
+                <Image
+                  class={styles.img}
+                  src={formatImg(state.orders.status)}
+                />
+                <div class={styles.orderInfo}>
+                  <span>{formatOrderStatus(state.orders.status)}</span>
+                  {state.orders.status === 'PAID' ||
+                  state.orders.status === 'REFUNDING' ? (
+                    <div class={styles.orderPrice}>
+                      实付金额:¥ {moneyFormat(state.orders.paymentCashAmount)}
+                    </div>
+                  ) : (
+                    ''
+                  )}
+
+                  {state.orders.status === 'REFUNDED' && (
+                    <div class={styles.orderPrice}>
+                      退款金额:¥ {moneyFormat(state.orders.paymentCashAmount)}
+                    </div>
+                  )}
+                </div>
+              </div>
+            </>
+          )}
+        </div>
+
+        <CellGroup inset class={[styles.cellGroup, styles.mTop]}>
+          <Cell>
+            {{
+              title: () => '付款时间',
+              value: () => <span>{state.orders.payTime || '--'}</span>
+            }}
+          </Cell>
+          <Cell>
+            {{
+              title: () => '订单编号',
+              value: () => <span>{state.orders.orderNo}</span>
+            }}
+          </Cell>
+        </CellGroup>
+
+        <CellGroup inset class={styles.cellGroup}>
+          <div class={styles.buyDetail}>
+            <div class={styles.buyDetailTitle}>
+              <i></i> 购买详情
+            </div>
+          </div>
+          {state.goodsInfos.map((goods: any) => (
+            <Cell>
+              {{
+                icon: () => (
+                  <Image class={styles.buyImg} src={goods.goodsUrl} />
+                ),
+                title: () => (
+                  <div class={styles.buyContent}>
+                    <p class={styles.goodsTitle}>{goods.goodsName}</p>
+                    <Tag class={styles.brandName}>{goods.brandName}</Tag>
+                  </div>
+                ),
+                value: () => (
+                  <span>
+                    {goods.goodsType === 'VIP' || goods.goodsType === 'DEPOSIT'
+                      ? '6个月'
+                      : 'x 1'}
+                  </span>
+                )
+              }}
+            </Cell>
+          ))}
+        </CellGroup>
+      </div>
+    );
+  }
+});

+ 91 - 0
src/views/student-register/component/addres.tsx

@@ -0,0 +1,91 @@
+import { Cell, Icon, Tag } from 'vant';
+import { defineComponent, computed, PropType, reactive, onMounted } from 'vue';
+import styles from './address.module.less';
+import iconAddress from '@common/images/icon-address.png';
+import { useRouter } from 'vue-router';
+
+export default defineComponent({
+  name: 'cart-address',
+  props: {
+    item: {
+      type: Object as PropType<any>,
+      default: () => ({})
+    },
+    isLink: {
+      type: Boolean,
+      default: true
+    },
+    setAddress: {
+      type: Function,
+      default: (n: any) => {}
+    }
+  },
+  setup(props) {
+    const router = useRouter();
+
+    const addressInfo = computed(() => {
+      return [
+        props.item.provinceName,
+        props.item.cityName,
+        props.item.regionName,
+        props.item.detailAddress
+      ].join('');
+    });
+
+    const selectAddress = () => {
+      if (!props.isLink) return;
+      router.push('/shopAddress');
+    };
+
+    return () => (
+      <>
+        {props.item && props.item.phoneNumber ? (
+          <Cell
+            class={styles.cell}
+            is-link={props.isLink}
+            onClick={() => selectAddress()}
+            titleStyle={{ marginLeft: '0' }}
+            v-slots={{
+              title: () => (
+                <div>
+                  <span class={styles.userName}>{props.item.name}</span>
+                  <span class={styles.phone}>
+                    {props.item &&
+                      props.item.phoneNumber &&
+                      props.item.phoneNumber.replace(
+                        /^(\d{3})\d{4}(\d+)/,
+                        '$1****$2'
+                      )}
+                  </span>
+                  {props.item.defaultStatus && (
+                    <Tag
+                      type="primary"
+                      round
+                      style={{
+                        'vertical-align': 'text-top',
+                        marginLeft: '10px',
+                        padding: '1px 8px'
+                      }}>
+                      默认
+                    </Tag>
+                  )}
+                </div>
+              ),
+              label: () => (
+                <span class={styles.addressInfo}>{addressInfo.value}</span>
+              )
+            }}></Cell>
+        ) : (
+          <Cell
+            class={styles.cell}
+            is-link={props.isLink}
+            onClick={() => selectAddress()}
+            v-slots={{
+              icon: () => <Icon name={iconAddress} size={28} />,
+              title: () => <div class={styles.emtry}>去填写收货地址</div>
+            }}></Cell>
+        )}
+      </>
+    );
+  }
+});

+ 68 - 0
src/views/student-register/component/address.module.less

@@ -0,0 +1,68 @@
+.cellEntry {
+  align-items: center;
+
+  :global {
+    .van-badge__wrapper {
+      margin: 0;
+    }
+
+    .van-cell__title {
+      display: flex;
+      align-items: center;
+      margin-left: 14px;
+    }
+  }
+}
+
+.cell {
+  position: relative;
+  align-items: center;
+  padding: 13px 12px 18px;
+
+  &::before {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    content: ' ';
+    display: block;
+    height: 3px;
+    width: 100%;
+    background: url('../images/icon-address-border.png') repeat center left;
+    background-size: 90%;
+  }
+
+  :global {
+    .van-cell__title {
+      margin-left: 14px;
+    }
+
+    .van-cell__right-icon {
+      font-size: 20px;
+      color: #d8d8d8;
+    }
+  }
+}
+
+.userName {
+  color: #333;
+  font-size: 16px;
+  font-weight: 500;
+}
+
+.phone {
+  font-size: 16px;
+  color: #777;
+  margin-left: 14px;
+}
+
+.addressInfo {
+  font-size: 14px;
+  color: #777;
+  line-height: 20px;
+}
+
+.emtry {
+  font-size: 14px;
+  color: #333;
+}

+ 410 - 0
src/views/student-register/component/apply.tsx

@@ -0,0 +1,410 @@
+import request from '@/helpers/request'
+import {
+  Button,
+  CellGroup,
+  Dialog,
+  Field,
+  Form,
+  Picker,
+  Popup,
+  Radio,
+  RadioGroup,
+  showToast,
+  Tag
+} from 'vant'
+import { defineComponent, onMounted, reactive } from 'vue'
+import { useRoute, useRouter } from 'vue-router'
+import styles from '../index.module.less'
+import { setLogout } from '@/state'
+
+// 乐团交付,乐团停止或关闭,有新的交付团;则不允许报名
+const classList: any = []
+for (let i = 1; i <= 40; i++) {
+  classList.push({ text: i + '班', value: i })
+}
+
+export default defineComponent({
+  name: 'apply',
+  props: {
+    schoolSystem: {
+      type: String,
+      default: 'sixYearSystem' // 默认为六年制
+    },
+    registerInfo: {
+      type: Object,
+      defualt: {}
+    },
+    code: {
+      type: String,
+      default: ''
+    }
+  },
+  emits: ['next'],
+  setup(props, { slots, attrs, emit }) {
+    const route = useRoute()
+    const router = useRouter()
+    const state = reactive({
+      // code: '' as any, // 微信授权code码
+      detail: {} as any, // 学员详情
+      currentGrade: [
+        { text: '一年级', value: 1 },
+        { text: '二年级', value: 2 },
+        { text: '三年级', value: 3 },
+        { text: '四年级', value: 4 },
+        { text: '五年级', value: 5 }
+      ], // 年级数组列表
+      classList: classList,
+      subjectList: [] as any, // 声部列表
+      gradeStatus: false,
+      classStatus: false,
+      subjectStatus: false,
+      pattern: /^1(3|4|5|6|7|8|9)\d{9}$/,
+      nameReg: /^[\u4E00-\u9FA5]+$/,
+      subjectChangeStatus: false // 更换声部时
+    })
+    const forms = reactive({
+      username: null,
+      sex: null as any,
+      currentGrade: null,
+      currentGradeTxt: null, // 年级编号
+      currentClass: '', // 班级
+      currentClassTxt: null, // 年级编号
+      registerSubjectId: '',
+      registerSubjectTxt: null, // 所在声部
+      parentName: null,
+      phone: null
+    })
+
+    // 获取乐团报名信息
+    const studentRegister = async () => {
+      try {
+        const { data } = await request.get(
+          '/api-student/orchestraRegister/register/' + route.query.id
+        )
+        const detail = data || {}
+
+        state.detail = detail
+
+        const grade: any = state.currentGrade.find((item: any) => item.value == detail.currentGrade)
+        const cls: any = state.classList.find((item: any) => item.value == detail.currentClass)
+        const subjects: any = state.subjectList.find(
+          (item: any) => item.value == detail.registerSubjectId
+        )
+        forms.username = detail.username
+        forms.sex = detail.sex ? 1 : 0
+        forms.currentGrade = detail.currentGrade
+        forms.currentGradeTxt = grade ? grade.text : ''
+        forms.currentClass = detail.currentClass
+        forms.currentClassTxt = cls ? cls.text : ''
+        forms.registerSubjectId = detail.registerSubjectId
+        forms.registerSubjectTxt = subjects ? subjects.text : ''
+        forms.parentName = detail.parentName
+        forms.phone = detail.phone
+      } catch (e) {
+        //
+        console.log(e)
+      }
+    }
+
+    // 获取声部信息
+    const getSubjects = async () => {
+      try {
+        const subjects = await request.post(
+          '/api-student/open/orchestraSubjectConfig/pageByOrchestraId',
+          {
+            data: {
+              orchestraId: route.query.id,
+              page: 1,
+              rows: 100
+            }
+          }
+        )
+        const rows = subjects.data.rows || []
+        rows.forEach((item: any) => {
+          state.subjectList.push({
+            text: item.name,
+            value: item.subjectId
+          })
+        })
+      } catch {
+        //
+      }
+    }
+
+    const validator = (val: any) => {
+      // 校验函数返回 true 表示校验通过,false 表示不通过
+      return state.nameReg.test(val) && val.length >= 2 && val.length <= 15
+    }
+    const message = (value: any) => {
+      if (!value) {
+        return '请填写学员真实姓名'
+      } else if (!state.nameReg.test(value)) {
+        return '学员姓名必须为中文'
+      } else if (value.length < 2 || value.length > 15) {
+        return '学员姓名必须为2~15个字'
+      } else {
+        return ''
+      }
+    }
+
+    // 乐团报名
+    const onSubmit = async () => {
+      try {
+        const params: any = {
+          orchestraId: route.query.id,
+          schoolId: state.detail.schoolId,
+          ...forms
+        }
+        // 判断是否已报过名
+        if (state.detail.id) {
+          params.id = state.detail.id
+        }
+        await request.post('/api-student/orchestraRegister/save', {
+          hideLoading: false,
+          data: {
+            ...params,
+            code: props.code
+          }
+        })
+        setTimeout(() => {
+          // showToast('报名成功')
+          emit('next', 'payment')
+        }, 100)
+      } catch {
+        //
+      }
+    }
+
+    onMounted(async () => {
+      // state.code = route.query.code || ''
+      // console.log('pre register code: ' + state.code)
+      await getSubjects()
+      // 判断学年制
+      if (props.schoolSystem === 'sixYearSystem') {
+        state.currentGrade.push({ text: '六年级', value: 6 })
+      }
+      await studentRegister()
+
+      // 判断是否有授权码
+      // if (!props.code) {
+      //   setLogout()
+      //   const query = {
+      //     returnUrl: route.path,
+      //     ...route.query
+      //   } as any
+      //   router.replace({
+      //     path: '/loginMusic',
+      //     query: query
+      //   })
+      // }
+    })
+    return () => (
+      <div class={styles.preApplyC}>
+        <Form validateFirst scrollToError onSubmit={onSubmit} ref="form" class={styles.form}>
+          <div class={styles.applyTitle}>学员信息</div>
+          <CellGroup inset class={styles.applyCellGroup}>
+            <Field
+              required
+              label="学员信息"
+              placeholder="请填写学员真实姓名"
+              inputAlign="right"
+              v-model={forms.username}
+              maxlength={15}
+              rules={[{ validator, message }]}
+            />
+            <Field
+              required
+              label="性别"
+              inputAlign="right"
+              rules={[{ required: true, message: '请选择性别' }]}
+            >
+              {{
+                input: () => (
+                  <RadioGroup v-model={forms.sex}>
+                    <Tag
+                      size="large"
+                      type="primary"
+                      color={!(forms.sex === 1) ? '#EAEAEA' : '#FF8057'}
+                      textColor={!(forms.sex === 1) ? '#AAA' : '#FFF'}
+                      class={styles.radioSection}
+                      round
+                    >
+                      <Radio class={styles.radioItem} name={1}></Radio>男生
+                    </Tag>
+                    <Tag
+                      size="large"
+                      type="primary"
+                      color={!(forms.sex === 0) ? '#EAEAEA' : '#FF8057'}
+                      textColor={!(forms.sex === 0) ? '#AAA' : '#FFF'}
+                      class={styles.radioSection}
+                      round
+                    >
+                      <Radio class={styles.radioItem} name={0}></Radio>女生
+                    </Tag>
+                  </RadioGroup>
+                )
+              }}
+            </Field>
+            <Field
+              required
+              label="年级"
+              inputAlign="right"
+              readonly
+              isLink
+              placeholder="请选择年级"
+              v-model={forms.currentGradeTxt}
+              onClick={() => (state.gradeStatus = true)}
+              rules={[{ required: true, message: '请选择年级' }]}
+            />
+            <Field
+              required
+              label="班级"
+              inputAlign="right"
+              readonly
+              isLink
+              placeholder="请选择班级"
+              v-model={forms.currentClassTxt}
+              onClick={() => (state.classStatus = true)}
+              rules={[{ required: true, message: '请选择班级' }]}
+            />
+          </CellGroup>
+
+          <div class={styles.applyTitle}>声部信息</div>
+          <div class={styles.applyTips}>(请务必按照学生的录取声部填报)</div>
+          <CellGroup inset class={styles.applyCellGroup}>
+            <Field
+              required
+              label="声部"
+              inputAlign="right"
+              readonly
+              isLink
+              placeholder="请选择声部"
+              v-model={forms.registerSubjectTxt}
+              onClick={() => {
+                if (state.subjectList.length <= 0) {
+                  showToast('暂无报名声部')
+                  return
+                }
+
+                // 切换订单时判断是否有支付中和已支付的订单,并且已注册过
+                // 判断学员所在乐团状态,如果在读则不允许更换声部(只能退团重新报名)
+                // 退团重新报名也不能更新声部
+                if (
+                  props.registerInfo?.registerStatus === 'LEARNING' ||
+                  (props.registerInfo?.registerStatus === 'OUTOF_ORCHESTRA' &&
+                    props.registerInfo?.orderNumber > 0)
+                ) {
+                  state.subjectChangeStatus = true
+                  return
+                }
+                state.subjectStatus = true
+              }}
+              rules={[{ required: true, message: '请选择声部' }]}
+            />
+          </CellGroup>
+
+          <div class={styles.applyTitle}>家长信息</div>
+          <CellGroup inset class={styles.applyCellGroup}>
+            <Field
+              required
+              label="家长姓名"
+              inputAlign="right"
+              placeholder="请填写家长真实姓名"
+              v-model={forms.parentName}
+              maxlength={15}
+              rules={[{ required: true, message: '请填写家长真实姓名' }]}
+            />
+            <Field
+              required
+              label="手机号"
+              inputAlign="right"
+              placeholder="请输入手机号"
+              v-model={forms.phone}
+              maxlength={11}
+              type="tel"
+              rules={[{ pattern: state.pattern, message: '输入监护人手机号码有误' }]}
+            />
+          </CellGroup>
+
+          <div class={'btnGroup'} style={{ paddingTop: '30px' }}>
+            <Button type="primary" round block native-type="submit">
+              下一步
+            </Button>
+          </div>
+        </Form>
+
+        {/* 年级 */}
+        <Popup
+          v-model:show={state.gradeStatus}
+          position="bottom"
+          round
+          safeAreaInsetBottom
+          // duration={0}
+          lazyRender={false}
+          class={'popupBottomSearch'}
+        >
+          <Picker
+            showToolbar
+            columns={state.currentGrade}
+            onCancel={() => (state.gradeStatus = false)}
+            onConfirm={(val: any) => {
+              const selectedOption = val.selectedOptions[0]
+              forms.currentGrade = selectedOption.value
+              forms.currentGradeTxt = selectedOption.text
+              state.gradeStatus = false
+            }}
+          />
+        </Popup>
+        {/* 班级 */}
+        <Popup v-model:show={state.classStatus} position="bottom" round class={'popupBottomSearch'}>
+          <Picker
+            showToolbar
+            columns={state.classList}
+            onCancel={() => (state.classStatus = false)}
+            onConfirm={(val: any) => {
+              const selectedOption = val.selectedOptions[0]
+              forms.currentClass = selectedOption.value
+              forms.currentClassTxt = selectedOption.text
+              state.classStatus = false
+            }}
+          />
+        </Popup>
+        {/* 声部 */}
+        <Popup
+          v-model:show={state.subjectStatus}
+          position="bottom"
+          round
+          class={'popupBottomSearch'}
+        >
+          <Picker
+            showToolbar
+            columns={state.subjectList}
+            onCancel={() => (state.subjectStatus = false)}
+            onConfirm={(val: any) => {
+              const selectedOption = val.selectedOptions[0]
+              forms.registerSubjectId = selectedOption.value
+              forms.registerSubjectTxt = selectedOption.text
+              state.subjectStatus = false
+            }}
+          />
+        </Popup>
+
+        <Dialog
+          v-model:show={state.subjectChangeStatus}
+          message={'您已有报名订单,不可更换声部'}
+          messageAlign="center"
+          confirmButtonText="确定"
+        >
+          {{
+            title: () => (
+              <div class={styles.dialogTitle}>
+                <i></i>
+                提示
+              </div>
+            )
+          }}
+        </Dialog>
+      </div>
+    )
+  }
+})

+ 311 - 0
src/views/student-register/component/order.tsx

@@ -0,0 +1,311 @@
+import OEmpty from '@/components/o-empty'
+import { orderStatus } from '@/constant'
+import { moneyFormat } from '@/helpers/utils'
+import {
+  Button,
+  Cell,
+  CellGroup,
+  Field,
+  Grid,
+  GridItem,
+  Image,
+  List,
+  Popup,
+  Radio,
+  RadioGroup,
+  showToast
+} from 'vant'
+import { defineComponent, onMounted, reactive, ref } from 'vue'
+import { useRoute, useRouter } from 'vue-router'
+import request from '@/helpers/request'
+import styles from '../index.module.less'
+
+export default defineComponent({
+  name: 'order',
+  emits: ['next'],
+  setup() {
+    const router = useRouter()
+    const route = useRoute()
+    const form = reactive({
+      isClick: false,
+      list: [] as any,
+      listState: {
+        dataShow: true, // 判断是否有数据
+        loading: false,
+        finished: false
+      },
+      params: {
+        page: 1,
+        rows: 20
+      },
+      resionList: [] as any,
+      refundStatus: false,
+      resion: null,
+      refundSelect: {} as any,
+      checked: null as any
+    })
+
+    // userPaymentOrder/page
+    const getList = async () => {
+      try {
+        if (form.isClick) return
+        form.isClick = true
+        const res = await request.post('/api-student/userPaymentOrder/page', {
+          data: {
+            ...form.params,
+            bizId: route.query.id,
+            goodsQuery: true
+          }
+        })
+        form.listState.loading = false
+        const result = res.data || {}
+        // 处理重复请求数据
+        if (form.list.length > 0 && result.current === 1) {
+          return
+        }
+        const rows = result.rows || []
+        rows.goodsInfos &&
+          rows.goodsInfos.forEach((item: any) => {
+            const img = item.goodsUrl ? item.goodsUrl.split(',')[0] : ''
+            item.goodsUrl = img
+          })
+        form.list = form.list.concat(rows)
+        form.listState.finished = result.current >= result.pages
+        form.params.page = result.current + 1
+        form.listState.dataShow = form.list.length > 0
+        form.isClick = false
+      } catch {
+        form.listState.dataShow = false
+        form.listState.finished = true
+        form.isClick = false
+      }
+    }
+
+    // const getDefaultParams = async () => {
+    //   try {
+    //     const { data } = await request.get('/api-student/sysParamConfig/queryByParamName', {
+    //       params: {
+    //         paramName: 'refund_reason'
+    //       }
+    //     })
+    //     const temp = data.paramValue.split('\n') || []
+    //     temp.forEach((item: any, index: number) => {
+    //       form.resionList.push({
+    //         text: item,
+    //         value: index + 1
+    //       })
+    //     })
+    //     form.resionList.push({
+    //       text: '其它原因',
+    //       value: 999
+    //     })
+    //     console.log(form.resionList, 'resionList')
+    //   } catch {
+    //     //
+    //   }
+    // }
+
+    // // 确认退费
+    // const onConfirmRefund = async () => {
+    //   try {
+    //     const status = form.checked === 999 && !form.resion
+    //     console.log(form.checked)
+    //     if (!form.checked) {
+    //       showToast('请选择原因')
+    //       return
+    //     } else if (status) {
+    //       showToast('请输入原因')
+    //       return
+    //     }
+
+    //     const refundReason = form.resionList.find((item: any) => item.value === form.checked)
+
+    //     console.log({
+    //       merOrderNo: form.refundSelect.orderNo,
+    //       refundReason: form.checked === 999 ? form.resion : refundReason.text
+    //     })
+
+    //     await request.post('/api-student/userPaymentOrder/refundPayment', {
+    //       data: {
+    //         merOrderNo: form.refundSelect.orderNo,
+    //         refundReason: form.checked === 999 ? form.resion : refundReason.text
+    //       }
+    //     })
+    //     form.refundStatus = false
+    //     onSearch()
+    //   } catch {
+    //     //
+    //   }
+    // }
+
+    // const onSearch = () => {
+    //   form.params.page = 1
+    //   form.list = []
+    //   form.listState.dataShow = true // 判断是否有数据
+    //   form.listState.loading = false
+    //   form.listState.finished = false
+    //   getList()
+    // }
+
+    // 查看详情
+    const onDetails = (item: any) => {
+      router.push({
+        path: 'payment-result',
+        query: {
+          orderNo: item.orderNo,
+          refund: 'refund'
+        }
+      })
+    }
+
+    onMounted(() => {
+      // getDefaultParams()
+      getList()
+    })
+
+    return () => (
+      <div style={{ paddingTop: '20px' }}>
+        {form.listState.dataShow ? (
+          <List
+            // v-model:loading={form.listState.loading}
+            finished={form.listState.finished}
+            finishedText=" "
+            class={[styles.liveList]}
+            onLoad={getList}
+            immediateCheck={false}
+          >
+            {form.list.map((item: any) => (
+              <CellGroup inset class={styles.orderCellGroup} onClick={() => onDetails(item)}>
+                <Cell
+                  title={item.createTime}
+                  titleClass={styles.payTime}
+                  value={orderStatus[item.status]}
+                  valueClass={
+                    item.status === 'WAIT_PAY'
+                      ? styles.payStatus
+                      : item.status === 'PAID'
+                      ? styles.paySuccess
+                      : ''
+                  }
+                ></Cell>
+                <Cell border={false} class={styles.imgGroup} center>
+                  {{
+                    title: () => (
+                      <div class={styles.orderPriceInfo}>
+                        <Grid border={false} columnNum={3}>
+                          {item.goodsInfos &&
+                            item.goodsInfos.map(
+                              (goods: any, index: number) =>
+                                index < 3 && (
+                                  <GridItem>
+                                    <Image class={styles.img} src={goods.goodsUrl} />
+                                  </GridItem>
+                                )
+                            )}
+                        </Grid>
+                        <div class={styles.orderPriceNum}>
+                          <div class={styles.opNums}>
+                            <span>¥ </span>
+                            {moneyFormat(item.currentPrice)}
+                          </div>
+                          <div class={styles.opBuyLength}>
+                            共{(item.goodsInfos && item.goodsInfos.length) || 0}件
+                          </div>
+                        </div>
+                      </div>
+                    )
+                  }}
+                </Cell>
+                {/* {item.refundable && (
+                  <Cell class={styles.btnGroup} center>
+                    {{
+                      title: () => (
+                        <span class={styles.btnPrice}>¥{moneyFormat(item.currentPrice)}</span>
+                      ),
+                      value: () => (
+                        <div class={styles.btns}>
+                          <Button
+                            round
+                            plain
+                            color="#AAAAAA"
+                            onClick={(e: any) => {
+                              e.stopPropagation()
+                              form.refundSelect = item
+                              form.refundStatus = true
+                            }}
+                          >
+                            申请退款
+                          </Button>
+                        </div>
+                      )
+                    }}
+                  </Cell>
+                )} */}
+              </CellGroup>
+            ))}
+          </List>
+        ) : (
+          <OEmpty btnStatus={false} tips="暂无订单" />
+        )}
+
+        {/* <Popup v-model:show={form.refundStatus} round style={{ width: '90%' }}>
+          <div class={styles.container}>
+            <div class={[styles.dialogTitle, styles.dialogRefund]}>
+              <i></i>
+              申请退款
+            </div>
+
+            <div class={styles.refundContent}>
+              <div class={styles.tips}>
+                您将要发起退款,退款需承担千分之六的手续费,确认退款后款项将原路返还到您的付款账户中。
+              </div>
+
+              <div class={styles.refundTitle}>
+                <span>*</span>请选择您的退款原因
+              </div>
+
+              <RadioGroup v-model={form.checked}>
+                {form.resionList &&
+                  form.resionList.map((item: any) => (
+                    <Cell style="padding: 16px 0;" onClick={() => (form.checked = item.value)}>
+                      {{
+                        icon: () => <Radio name={item.value} />,
+                        title: () => <span style={'padding-left: 6px'}>{item.text}</span>
+                      }}
+                    </Cell>
+                  ))}
+              </RadioGroup>
+              {form.checked === 999 && (
+                <Field
+                  class={styles.phoneName}
+                  v-model={form.resion}
+                  placeholder="请输入原因"
+                  maxlength={50}
+                  type="textarea"
+                  rows={2}
+                />
+              )}
+            </div>
+
+            <div class={['van-hairline--top van-dialog__footer']}>
+              <Button
+                onClick={onConfirmRefund}
+                class={['van-button van-button--default van-button--large van-dialog__cancel']}
+              >
+                确认退款
+              </Button>
+              <Button
+                onClick={() => (form.refundStatus = false)}
+                class={[
+                  'van-button van-button--default van-button--large van-dialog__confirm van-hairline--left'
+                ]}
+              >
+                取消
+              </Button>
+            </div>
+          </div>
+        </Popup> */}
+      </div>
+    )
+  }
+})

+ 768 - 0
src/views/student-register/component/payment.tsx

@@ -0,0 +1,768 @@
+import OSticky from '@/components/o-sticky'
+import {
+  Button,
+  Cell,
+  CellGroup,
+  Checkbox,
+  CheckboxGroup,
+  Icon,
+  Image,
+  Popup,
+  showConfirmDialog,
+  showToast,
+  Tag
+} from 'vant'
+import { defineComponent, nextTick, onMounted, reactive, ref } from 'vue'
+import styles from '../index.module.less'
+import radioCheck from '@/common/images/icon-radio-check.png'
+import radioDefault from '@/common/images/icon-radio-default.png'
+import iconGives from '../images/icon-gives.png'
+import { useRoute, useRouter } from 'vue-router'
+import request from '@/helpers/request'
+import { moneyFormat } from '@/helpers/utils'
+import { CountUp } from 'countup.js'
+import OPopup from '@/components/o-popup'
+import MemberBao from '../../member-bao'
+import GoodsDetail from '../../goods-detail'
+import ODialog from '@/components/o-dialog'
+
+export default defineComponent({
+  name: 'payment',
+  emits: ['next'],
+  setup() {
+    const route = useRoute()
+    const router = useRouter()
+    const state = reactive({
+      paymentType: '',
+      musicPaymentType: '', // 乐团中对应支付方式
+      check: [] as any, // 选中的数据
+      checkboxRefs: [] as any,
+      details: [] as any, //
+      goodsInfo: {} as any, // 商品
+      textBookInfo: {} as any, // 教材
+      repaireInfo: {} as any, // 乐器保养
+      vipInfo: {} as any, // 团练宝
+      depositInfo: {} as any, // 订金
+      paymentOrderDetails: [] as any, // 购买状态
+      orderInfo: {
+        needPrice: 0,
+        originalPrice: 0
+      },
+      memberBaoStatus: false, // 团练宝详情状态
+      goodsStatus: false, //
+      selectGoodsId: null as any,
+      currentPrice: 0,
+      selectGoodsInfo: {} as any,
+      dialogStatus: false,
+      dialogMessage: '',
+      dialogConfig: {} as any,
+
+      isDeposit: false, // 判断是否有订金
+      isVip: false // 是否有会员
+    })
+
+    // 获取支付渠道
+    const sysParamConfig = async () => {
+      try {
+        const { data } = await request.get('/api-student/sysParamConfig/queryByParamName', {
+          params: {
+            paramName: 'payment_service_provider'
+          }
+        })
+        state.paymentType = data.paramValue || ''
+      } catch {
+        //
+      }
+    }
+
+    // 查询未支付订单
+    const paymentOrderUnpaid = async () => {
+      try {
+        const { data } = await request.get('/api-student/userPaymentOrder/unpaid')
+        // 判断是否有待支付订单
+        if (data.id) {
+          state.dialogMessage = '您有待支付的订单,是否继续支付'
+          state.dialogStatus = true
+          state.dialogConfig = data
+        }
+      } catch {
+        //
+      }
+    }
+
+    // 获取商品信息
+    const registerGoods = async () => {
+      try {
+        const { data } = await request.get(
+          '/api-student/orchestraRegister/registerGoods/' + route.query.id
+        )
+
+        state.musicPaymentType = data.paymentServiceProvider || ''
+        // 获取已经购买商品信息
+        const paymentOrderDetails = data.paymentOrderDetails || []
+        paymentOrderDetails.forEach((item: any) => {
+          state.paymentOrderDetails.push(item.goodsType)
+        })
+        // 初始化数据商品数据
+        const details = data.details || []
+        details.forEach((item: any) => {
+          if (item.goodsType === 'INSTRUMENTS') {
+            const img = item.goodsUrl ? item.goodsUrl.split(',')[0] : ''
+            state.goodsInfo = { ...item, goodsUrl: img }
+          } else if (item.goodsType === 'TEXTBOOK') {
+            const img = item.goodsUrl ? item.goodsUrl.split(',')[0] : ''
+            state.textBookInfo = { ...item, goodsUrl: img }
+          } else if (item.goodsType === 'REPAIR') {
+            state.repaireInfo = { ...item }
+          } else if (item.goodsType === 'VIP') {
+            state.vipInfo = { ...item }
+            state.isVip = true
+          } else if (item.goodsType === 'DEPOSIT') {
+            // 判断是否有订金 - 如果有订金则不显示vip
+            state.isDeposit = true
+            // 查询是否有VIP的数据
+            const tempVipInfo = details.find((item: any) => item.goodsType === 'VIP')
+            if (tempVipInfo) {
+              item.originalPrice = tempVipInfo.currentPrice
+              state.depositInfo = { ...item }
+            }
+          }
+          state.details = details
+
+          // 只有教材默认选中 -
+          if (!state.paymentOrderDetails.includes(item.goodsType) && item.goodsType == 'TEXTBOOK') {
+            state.check.push(item.goodsId)
+          }
+        })
+
+        /**
+         * 1 - 检查是否有订金商品 有则VIP不显示
+         * 2 - 是否购买订金 如果购买VIP显示,扣减金额
+         * 3 -
+         */
+
+        calcPrice()
+      } catch {
+        //
+      }
+    }
+
+    const onSelect = (type: string) => {
+      state.checkboxRefs[type].toggle()
+      calcPrice()
+    }
+
+    // 初始化金额
+    const calcPrice = () => {
+      const details = state.details
+      const tempPrice = {
+        needPrice: 0, //需要支付金额
+        originalPrice: 0 // 原价
+      }
+      details.forEach((item: any) => {
+        // 是否选中
+        if (
+          state.check.includes(item.goodsId) &&
+          !state.paymentOrderDetails.includes(item.goodsType)
+        ) {
+          tempPrice.needPrice += parseFloat(item.currentPrice || 0)
+          tempPrice.originalPrice += parseFloat(item.originalPrice || 0)
+        }
+      })
+
+      state.orderInfo = tempPrice
+
+      initNumCountUp()
+    }
+    const countUpRef = reactive({
+      needPrice: null as any,
+      originalPrice: null as any
+    })
+    const initNumCountUp = () => {
+      nextTick(() => {
+        // 在读学员
+        if (countUpRef.needPrice) {
+          countUpRef.needPrice.update(state.orderInfo.needPrice)
+        } else {
+          countUpRef.needPrice = new CountUp('needPrice', state.orderInfo.needPrice, {
+            decimalPlaces: 2
+          })
+          if (!countUpRef.needPrice.error) {
+            countUpRef.needPrice.start()
+          } else {
+            console.error(countUpRef.needPrice.error)
+          }
+        }
+      })
+    }
+
+    // 购买
+    const onSubmit = async () => {
+      try {
+        // 判断订单号
+        if (state.check.length <= 0) {
+          showToast('请选择您要购买的商品')
+          return
+        }
+        // 重新计算金额
+        calcPrice()
+        const params: any = [] // 支付参数
+        const details = state.details
+
+        let checkInstruments = false // 是否选择了乐器
+        details.forEach((item: any) => {
+          // 是否选中 并且没有购买过
+          if (
+            state.check.includes(item.goodsId) &&
+            !state.paymentOrderDetails.includes(item.goodsType)
+          ) {
+            params.push({
+              goodsId: item.goodsId,
+              goodsNum: 1,
+              goodsType: item.goodsType,
+              paymentCashAmount: item.currentPrice, // 现金支付金额
+              paymentCouponAmount: 0 // 优惠券金额
+            })
+          }
+          // 判断是否是乐器
+          if (
+            item.goodsType === 'INSTRUMENTS' &&
+            state.check.includes(item.goodsId) &&
+            !state.paymentOrderDetails.includes(item.goodsType)
+          ) {
+            checkInstruments = false
+          }
+        })
+
+        // 为了处理,商品和乐器保养做关联
+        const repaire = state.repaireInfo
+        if (checkInstruments && repaire.goodsId) {
+          params.push({
+            goodsId: repaire.goodsId,
+            goodsNum: 1,
+            goodsType: repaire.goodsType,
+            paymentCashAmount: repaire.currentPrice, // 现金支付金额
+            paymentCouponAmount: 0 // 优惠券金额
+          })
+        }
+
+        // 创建订单
+        const { data } = await request.post('/api-student/userPaymentOrder/executeOrder', {
+          hideLoading: false,
+          data: {
+            paymentType: state.musicPaymentType || state.paymentType,
+            bizId: route.query.id, // 乐团编号
+            orderType: 'ORCHESTRA',
+            paymentCashAmount: state.orderInfo.needPrice || 0,
+            paymentCouponAmount: 0,
+            goodsInfos: params,
+            orderName: '乐团报名缴费',
+            orderDesc: '乐团报名缴费'
+          }
+        })
+
+        console.log(data)
+        router.push({
+          path: '/orderDetail',
+          query: {
+            pm: 1, // h5乐团报名
+            config: JSON.stringify({ ...data.paymentConfig, paymentType: data.paymentType }),
+            orderNo: data.orderNo
+          }
+        })
+      } catch (e: any) {
+        //
+        console.log(e)
+      }
+    }
+
+    onMounted(() => {
+      sysParamConfig()
+      // 查询未支付订单
+      registerGoods()
+      paymentOrderUnpaid()
+    })
+    return () => (
+      <>
+        <div class={styles.applyTitle}>报名须知</div>
+        <div class={[styles.paymentTips, styles.mlr13]}>
+          <p>
+            1、<span>乐团免费政策</span>:学生在团期间训练及教材免费政策(教材邮费需自理);
+          </p>
+          <p>
+            2、<span>入团必备工具</span>
+            :为了符合乐团学练同频的要求,学生在入团前需准备好乐团Ai训练工具和乐器两项工具;
+          </p>
+          <p>
+            3、<span>入团必备工具准备的原则</span>
+            :家长可自行准备(需按照乐团提供的参考参数准备),也可勾选下方项目技术方提供的乐团工具;
+          </p>
+          <p>
+            4、<span>温馨提示</span>
+            :自行准备的家长请在收到开团信息后再进行工具准备(避免出现时间浪费),在项目技术方购置的家长请放心提交(Ai学练工具将在首次训练时激活)
+          </p>
+        </div>
+        <CheckboxGroup
+          v-model={state.check}
+          style={{ paddingBottom: '20px' }}
+          onChange={() => {
+            calcPrice()
+          }}
+        >
+          {/* 判断是否买了乐器学习系统 */}
+          {!state.paymentOrderDetails.includes('VIP') && !state.isDeposit && (
+            <CellGroup
+              inset
+              class={[styles.mlr13, styles.sectionCell]}
+              onClick={() => onSelect(state.vipInfo.goodsId)}
+            >
+              <Cell border={false}>
+                {{
+                  icon: () => (
+                    <Checkbox
+                      name={state.vipInfo.goodsId}
+                      class={styles.checkbox}
+                      ref={(el: any) => (state.checkboxRefs[state.vipInfo.goodsId] = el)}
+                      onClick={(e: Event) => {
+                        e.stopPropagation()
+                      }}
+                      v-slots={{
+                        icon: (props: any) => (
+                          <Icon
+                            class={styles.iconChecked}
+                            name={props.checked ? radioCheck : radioDefault}
+                          />
+                        )
+                      }}
+                    />
+                  ),
+                  title: () => (
+                    <div class={styles.section}>
+                      <Image
+                        class={styles.img}
+                        src={state.vipInfo.goodsUrl}
+                        onClick={(e: any) => {
+                          e.stopPropagation()
+                          state.memberBaoStatus = true
+                        }}
+                      />
+                      <div class={styles.sectionContent}>
+                        <h2
+                          onClick={(e: any) => {
+                            e.stopPropagation()
+                            state.memberBaoStatus = true
+                          }}
+                        >
+                          {state.vipInfo.goodsName}
+                        </h2>
+                        <Tag
+                          color="linear-gradient(135deg, #FF8C4A 0%, #FF531C 100%)"
+                          textColor="#fff"
+                          class={styles.brandName}
+                        >
+                          6个月
+                        </Tag>
+                        <p class={[styles.model, 'van-multi-ellipsis--l2']}>
+                          {state.vipInfo.description}
+                        </p>
+                      </div>
+                    </div>
+                  )
+                }}
+              </Cell>
+              <Cell>
+                {{
+                  title: () => (
+                    <div class={styles.extra}>
+                      <div class={styles.sectionPrice}>
+                        <p class={styles.price}>
+                          团购价:
+                          <span class={styles.numFont}>
+                            <span class={styles.numPrefix}>¥</span>
+                            {moneyFormat(state.vipInfo.currentPrice)}
+                          </span>
+                        </p>
+                        <p class={styles.originPrice}>
+                          原价:
+                          <del class={styles.numFont}>
+                            ¥ {moneyFormat(state.vipInfo.originalPrice)}
+                          </del>
+                        </p>
+                      </div>
+                    </div>
+                  )
+                }}
+              </Cell>
+            </CellGroup>
+          )}
+
+          {/* 定金 */}
+          {!state.paymentOrderDetails.includes('DEPOSIT') && state.isVip && (
+            <CellGroup
+              inset
+              class={[styles.mlr13, styles.sectionCell]}
+              onClick={() => onSelect(state.depositInfo.goodsId)}
+            >
+              <Cell border={false}>
+                {{
+                  icon: () => (
+                    <Checkbox
+                      name={state.depositInfo.goodsId}
+                      class={styles.checkbox}
+                      ref={(el: any) => (state.checkboxRefs[state.depositInfo.goodsId] = el)}
+                      onClick={(e: Event) => {
+                        e.stopPropagation()
+                      }}
+                      v-slots={{
+                        icon: (props: any) => (
+                          <Icon
+                            class={styles.iconChecked}
+                            name={props.checked ? radioCheck : radioDefault}
+                          />
+                        )
+                      }}
+                    />
+                  ),
+                  title: () => (
+                    <div class={styles.section}>
+                      <Image
+                        class={styles.img}
+                        src={state.depositInfo.goodsUrl}
+                        onClick={(e: any) => {
+                          e.stopPropagation()
+                          state.memberBaoStatus = true
+                        }}
+                      />
+                      <div class={styles.sectionContent}>
+                        <h2
+                          onClick={(e: any) => {
+                            e.stopPropagation()
+                            state.memberBaoStatus = true
+                          }}
+                        >
+                          {state.depositInfo.goodsName}
+                        </h2>
+                        <Tag
+                          color="linear-gradient(135deg, #FF8C4A 0%, #FF531C 100%)"
+                          textColor="#fff"
+                          class={styles.brandName}
+                        >
+                          6个月
+                        </Tag>
+                        <p class={[styles.model, 'van-multi-ellipsis--l2']}>
+                          {state.depositInfo.description}
+                        </p>
+                      </div>
+                    </div>
+                  )
+                }}
+              </Cell>
+              <Cell>
+                {{
+                  title: () => (
+                    <div class={styles.extra}>
+                      <div class={styles.sectionPrice}>
+                        <p class={styles.price}>
+                          定金:
+                          <span class={styles.numFont}>
+                            <span class={styles.numPrefix}>¥</span>
+                            {moneyFormat(state.depositInfo.currentPrice)}
+                          </span>
+                        </p>
+                        <p class={styles.originPrice}>
+                          团购价:
+                          <span class={styles.numFont}>
+                            ¥ {moneyFormat(state.depositInfo.originalPrice)}
+                          </span>
+                        </p>
+                      </div>
+                    </div>
+                  )
+                }}
+              </Cell>
+            </CellGroup>
+          )}
+
+          {/* 判断是否已经购买乐器 */}
+          {!state.paymentOrderDetails.includes('INSTRUMENTS') && (
+            <CellGroup
+              inset
+              class={[styles.mlr13, styles.sectionCell]}
+              onClick={() => onSelect(state.goodsInfo.goodsId)}
+            >
+              <Cell border={false}>
+                {{
+                  icon: () => (
+                    <Checkbox
+                      name={state.goodsInfo.goodsId}
+                      class={styles.checkbox}
+                      ref={(el: any) => (state.checkboxRefs[state.goodsInfo.goodsId] = el)}
+                      onClick={(e: Event) => {
+                        e.stopPropagation()
+                      }}
+                      v-slots={{
+                        icon: (props: any) => (
+                          <Icon
+                            class={styles.iconChecked}
+                            name={props.checked ? radioCheck : radioDefault}
+                          />
+                        )
+                      }}
+                    />
+                  ),
+                  title: () => (
+                    <div class={styles.section}>
+                      <Image
+                        class={styles.img}
+                        src={state.goodsInfo.goodsUrl}
+                        onClick={(e: any) => {
+                          e.stopPropagation()
+                          state.selectGoodsId = state.goodsInfo.goodsId
+                          state.currentPrice = state.goodsInfo.currentPrice
+                          state.selectGoodsInfo = {
+                            showFree: true,
+                            originalPrice: state.repaireInfo.originalPrice
+                          }
+                          state.goodsStatus = true
+                        }}
+                      />
+                      <div class={styles.sectionContent}>
+                        <h2
+                          onClick={(e: any) => {
+                            e.stopPropagation()
+                            state.selectGoodsId = state.goodsInfo.goodsId
+                            state.currentPrice = state.goodsInfo.currentPrice
+                            state.goodsStatus = true
+                          }}
+                        >
+                          {state.goodsInfo.goodsName}
+                        </h2>
+                        <Tag
+                          color="linear-gradient(135deg, #FF8C4A 0%, #FF531C 100%)"
+                          textColor="#fff"
+                          class={styles.brandName}
+                        >
+                          {state.goodsInfo.brandName}
+                        </Tag>
+                        <p class={[styles.model, 'van-multi-ellipsis--l2']}>
+                          {state.goodsInfo.description}
+                        </p>
+                      </div>
+                    </div>
+                  )
+                }}
+              </Cell>
+              <Cell border={false}>
+                {{
+                  title: () => (
+                    <div class={styles.extra}>
+                      <div class={styles.sectionPrice}>
+                        <p class={styles.price}>
+                          团购价:
+                          <span class={styles.numFont}>
+                            <span class={styles.numPrefix}>¥ </span>
+                            {moneyFormat(state.goodsInfo.currentPrice)}
+                          </span>
+                        </p>
+                        <p class={styles.originPrice}>
+                          原价:
+                          <del class={styles.numFont}>
+                            ¥ {moneyFormat(state.goodsInfo.originalPrice)}
+                          </del>
+                        </p>
+                      </div>
+                    </div>
+                  )
+                }}
+              </Cell>
+              {/* <Cell center class={styles.gives}>
+                  {{
+                    title: () => (
+                      <div class={styles.sectionTips}>
+                        <Image src={iconGives} class={styles.iconGives} />
+                        赠价值{state.repaireInfo.originalPrice}元乐器维保服务一年
+                      </div>
+                    )
+                  }}
+                </Cell> */}
+            </CellGroup>
+          )}
+
+          {/* 判断是否已经购买教材 */}
+          {!state.paymentOrderDetails.includes('TEXTBOOK') && (
+            <CellGroup
+              inset
+              class={[styles.mlr13, styles.sectionCell]}
+              onClick={() => {
+                return
+                // onSelect(state.textBookInfo.goodsId)
+              }}
+            >
+              <Cell border={false}>
+                {{
+                  icon: () => (
+                    <Checkbox
+                      name={state.textBookInfo.goodsId}
+                      disabled
+                      class={styles.checkbox}
+                      ref={(el: any) => (state.checkboxRefs[state.textBookInfo.goodsId] = el)}
+                      onClick={(e: Event) => {
+                        e.stopPropagation()
+                      }}
+                      v-slots={{
+                        icon: (props: any) => (
+                          <Icon
+                            class={styles.iconChecked}
+                            name={props.checked ? radioCheck : radioDefault}
+                          />
+                        )
+                      }}
+                    />
+                  ),
+                  title: () => (
+                    <div class={styles.section}>
+                      <Image
+                        class={styles.img}
+                        src={state.textBookInfo.goodsUrl}
+                        onClick={(e: any) => {
+                          e.stopPropagation()
+                          state.selectGoodsId = state.textBookInfo.goodsId
+                          state.currentPrice = state.textBookInfo.currentPrice
+                          state.selectGoodsInfo = {}
+                          state.goodsStatus = true
+                        }}
+                      />
+                      <div class={styles.sectionContent}>
+                        <h2
+                          onClick={(e: any) => {
+                            e.stopPropagation()
+                            state.selectGoodsId = state.textBookInfo.goodsId
+                            state.currentPrice = state.textBookInfo.currentPrice
+                            state.selectGoodsInfo = {}
+                            state.goodsStatus = true
+                          }}
+                        >
+                          {state.textBookInfo.goodsName}
+                        </h2>
+                        <Tag
+                          color="linear-gradient(135deg, #FF8C4A 0%, #FF531C 100%)"
+                          textColor="#fff"
+                          class={styles.brandName}
+                        >
+                          {state.textBookInfo.brandName}
+                        </Tag>
+                        <p class={[styles.model, 'van-multi-ellipsis--l2']}>
+                          {state.textBookInfo.description}
+                        </p>
+                      </div>
+                    </div>
+                  )
+                }}
+              </Cell>
+              <Cell>
+                {{
+                  title: () => (
+                    <div class={styles.extra}>
+                      <div class={styles.sectionPrice}>
+                        <p class={styles.price}>
+                          团购价:
+                          <span
+                            class={[
+                              state.textBookInfo.currentPrice > 0 ? styles.numFont : styles.free
+                            ]}
+                          >
+                            {state.textBookInfo.currentPrice > 0 ? (
+                              <>
+                                <span class={styles.numPrefix}>¥ </span>
+                                {moneyFormat(state.textBookInfo.currentPrice)}
+                              </>
+                            ) : (
+                              '免费'
+                            )}
+                          </span>
+                        </p>
+                        <p class={styles.originPrice}>
+                          原价:
+                          <del class={styles.numFont}>
+                            ¥ {moneyFormat(state.textBookInfo.originalPrice)}
+                          </del>
+                        </p>
+                      </div>
+                    </div>
+                  )
+                }}
+              </Cell>
+            </CellGroup>
+          )}
+        </CheckboxGroup>
+        <OSticky position="bottom" background="white">
+          <div class={styles.paymentContainer}>
+            <div class={styles.payemntPrice}>
+              <p class={styles.needPrice}>
+                支付金额:
+                <span class={styles.numFont}>
+                  <span>¥ </span>
+                  <i style="font-style: normal" id="needPrice"></i>
+                </span>
+              </p>
+              <p class={styles.allPrice}>
+                <del class={styles.numFont}>
+                  总原价:¥ {moneyFormat(state.orderInfo.originalPrice)}
+                </del>
+              </p>
+            </div>
+            <div class={styles.paymentBtn}>
+              <Button
+                color="linear-gradient(135deg, #FF8C4A 0%, #FF531C 100%)"
+                round
+                onClick={onSubmit}
+              >
+                立即提交
+              </Button>
+            </div>
+          </div>
+        </OSticky>
+        <OPopup v-model:modelValue={state.memberBaoStatus} position="right">
+          <MemberBao />
+        </OPopup>
+        <OPopup v-model:modelValue={state.goodsStatus} position="right" destroy>
+          {state.goodsStatus && (
+            <GoodsDetail
+              id={state.selectGoodsId}
+              groupPrice={state.currentPrice}
+              goodsInfo={state.selectGoodsInfo}
+            />
+          )}
+        </OPopup>
+        <ODialog
+          title="提示"
+          v-model:show={state.dialogStatus}
+          message={state.dialogMessage}
+          confirmButtonText="继续支付"
+          cancelButtonText="取消订单"
+          showCancelButton
+          onConfirm={() => {
+            const paymentConfig = state.dialogConfig.paymentConfig
+            router.push({
+              path: '/orderDetail',
+              query: {
+                pm: 1, // h5乐团报名
+                config: JSON.stringify(paymentConfig.paymentConfig),
+                orderNo: paymentConfig.orderNo
+              }
+            })
+          }}
+          onCancel={async () => {
+            try {
+              await request.post(
+                '/api-student/userPaymentOrder/cancelPayment/' + state.dialogConfig.orderNo
+              )
+            } catch {
+              //
+            }
+          }}
+        />
+      </>
+    )
+  }
+})

+ 50 - 0
src/views/student-register/component/user-auth.module.less

@@ -0,0 +1,50 @@
+.userAuth {
+  min-height: 100vh;
+  background-color: #f6f8f9;
+  overflow: hidden;
+
+  .cellGroup {
+    margin: 12px 13px 24px;
+    border-radius: 12px;
+    overflow: hidden;
+  }
+  :global {
+    .van-cell {
+      flex-direction: column;
+      font-size: 16px;
+      padding: 18px 13px;
+    }
+
+    .van-field__label {
+      width: 100%;
+      margin-right: 0;
+      color: #333;
+      font-size: 16px;
+      font-weight: 500;
+    }
+
+    .van-cell--required::before {
+      left: 15px;
+    }
+
+    .van-field__body {
+      margin-top: 10px;
+    }
+
+    .van-form {
+      margin-top: 174px;
+      /* background: #F8F8F8; */
+      overflow: hidden;
+      /* margin: 290px 13px 14px; */
+    }
+
+    .van-tag + .van-tag {
+      margin-left: 8px;
+    }
+  }
+
+  .btnGroup {
+    padding: 0 14px;
+    padding-bottom: 15px;
+  }
+}

+ 96 - 0
src/views/student-register/component/user-auth.tsx

@@ -0,0 +1,96 @@
+import request from '@/helpers/request';
+import { state } from '@/state';
+import { Button, CellGroup, Field, Form } from 'vant';
+import { defineComponent } from 'vue';
+import styles from './user-auth.module.less';
+import OHeader from '@/components/m-header';
+
+export default defineComponent({
+  name: 'UserAuth',
+  props: {
+    onSuccess: {
+      // 实名成功
+      type: Function,
+      default: () => {}
+    },
+    hideHeader: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data() {
+    return {
+      form: {
+        realName: '',
+        idCardNo: ''
+      }
+    };
+  },
+  mounted() {
+    // 初始化数据
+    const users = state.user.data;
+    this.form.realName = users?.account.realName;
+    // this.form.idCardNo = users?.idCardNo
+  },
+  methods: {
+    async onSubmit() {
+      try {
+        const url = state.platformApi + '/sysAccount/realNameAuth';
+        await request.post(url, {
+          data: {
+            ...this.form,
+            contract: true,
+            save: true
+          }
+        });
+        // showToast('实名成功')
+        state.user.data.account.realName = this.form.realName;
+        state.user.data.account.idCardNo = this.form.idCardNo;
+        // setTimeout(() => {
+        // }, 500)
+        this.onSuccess();
+      } catch {
+        //
+      }
+    }
+  },
+  render() {
+    return (
+      <Form class={styles.userAuth} onSubmit={this.onSubmit}>
+        {!this.hideHeader && <OHeader title="实名认证" />}
+
+        <CellGroup inset class={styles.cellGroup}>
+          <Field
+            required
+            label="真实姓名"
+            v-model={this.form.realName}
+            rules={[{ required: true, message: '请填写真实姓名' }]}
+            name="realName"
+            placeholder="请填写真实姓名"
+            maxlength="50"></Field>
+
+          <Field
+            required
+            label="身份证号"
+            v-model={this.form.idCardNo}
+            maxlength={18}
+            rules={[
+              { required: true, message: '请输入身份证号' },
+              {
+                pattern:
+                  /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
+                message: '请输入正确的身份证号'
+              }
+            ]}
+            placeholder="请输入身份证号"></Field>
+        </CellGroup>
+
+        <div class={['btnGroup']}>
+          <Button block round type="primary" native-type="submit">
+            确定
+          </Button>
+        </div>
+      </Form>
+    );
+  }
+});

BIN
src/views/student-register/digital-tools/images/1.png


BIN
src/views/student-register/digital-tools/images/2.png


BIN
src/views/student-register/digital-tools/images/icon-video.png


BIN
src/views/student-register/digital-tools/images/points.png


BIN
src/views/student-register/digital-tools/images/tool-number.png


Some files were not shown because too many files changed in this diff