From 3a3cbd22dac6945039ba44e4ca14b1adaaaaa7ed Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Wed, 07 Jan 2026 11:04:45 +0800
Subject: [PATCH] feat:反无大屏基建

---
 applications/drone-command/src/views/detectionCountermeasure/deviceAppConfig.vue          |    9 
 applications/drone-command/public/fonts/PANGMENZHENGDAOBIAOTITIMIANFEIBAN-2.TTF           |    0 
 applications/drone-command/src/styles/common.scss                                         |   39 
 applications/drone-command/src/assets/images/aiNowFly/low-battery.svg                     |    6 
 applications/drone-command/src/styles/variables.scss                                      |    4 
 applications/drone-command/src/views/wel/index.vue                                        |  222 
 applications/drone-command/src/assets/images/topContainer/logo.png                        |    0 
 applications/drone-command/src/page/index/sidebar/index.vue                               |   17 
 applications/drone-command/src/views/basicManage/deviceStock.vue                          |   19 
 applications/drone-command/src/views/detectionCountermeasure/countermeasureEvaluation.vue |    9 
 pnpm-lock.yaml                                                                            | 8766 ++++++++++++++++---------------------
 applications/drone-command/src/views/detectionCountermeasure/index.vue                    |    9 
 applications/drone-command/src/views/areaManage/index.vue                                 |    9 
 applications/drone-command/src/views/areaManage/sceneConfig.vue                           |    9 
 applications/drone-command/src/assets/images/topContainer/top-bg.png                      |    0 
 applications/drone-command/src/utils/cesium/compressImage.js                              |   55 
 applications/drone-command/src/views/basicManage/maintainRecord.vue                       |    9 
 applications/drone-command/src/views/basicManage/deviceScrap.vue                          |    9 
 applications/drone-command/src/utils/cesium/useBoundary.js                                |  210 
 applications/drone-command/src/styles/top.scss                                            |   11 
 applications/drone-command/src/assets/images/aiNowFly/fly.png                             |    0 
 applications/drone-command/src/utils/cesium/frustum/CoordinateTranslate.js                |  229 
 applications/drone-command/src/assets/images/aiNowFly/medium-battery.svg                  |    6 
 applications/drone-command/src/components/basic-container/main.vue                        |   10 
 applications/drone-command/src/views/permissionManage/permissionUser.vue                  |    9 
 applications/drone-command/env/.env.development                                           |   16 
 applications/drone-command/src/views/detectionCountermeasure/taskSchedule.vue             |    9 
 applications/drone-command/public/fonts/font.css                                          |   11 
 applications/drone-command/src/views/detectionCountermeasure/detectionRange.vue           |    9 
 applications/drone-command/src/page/index/top/index.vue                                   |   76 
 applications/drone-command/src/utils/auth.js                                              |   10 
 applications/drone-command/src/views/README.md                                            |   56 
 applications/drone-command/src/utils/cesium/createRouteLine.js                            |  923 ++-
 applications/drone-command/src/views/areaManage/areaStatistics.vue                        |   18 
 applications/drone-command/src/router/views/index.js                                      |    9 
 applications/drone-command/src/assets/images/aiNowFly/starting.png                        |    0 
 applications/drone-command/src/utils/cesium/common.js                                     |    8 
 applications/drone-command/src/utils/cesium/kmz.js                                        |   10 
 applications/drone-command/src/utils/cesium/use-kmz-tsa.js                                |  675 ++
 applications/drone-command/src/utils/cesium/DrawPolygon.js                                |  803 +++
 applications/drone-command/src/views/areaManage/precinctInfo.vue                          |    9 
 applications/drone-command/src/views/recordManage/index.vue                               |   12 
 applications/drone-command/src/views/areaManage/partition.vue                             |    9 
 applications/drone-command/src/assets/images/aiNowFly/full-charge.svg                     |   13 
 applications/drone-command/src/views/basicManage/index.vue                                |    9 
 applications/drone-command/src/utils/cesium/Material/index.js                             |   18 
 applications/drone-command/src/views/permissionManage/permissionRole.vue                  |    9 
 applications/drone-command/src/views/permissionManage/index.vue                           |    9 
 applications/drone-command/src/config/website.js                                          |   18 
 .vscode/settings.json                                                                     |    7 
 applications/drone-command/src/styles/theme/white.scss                                    |    6 
 applications/drone-command/src/assets/images/aiNowFly/Frame.png                           |    0 
 applications/drone-command/src/page/index/index.vue                                       |   81 
 applications/drone-command/src/utils/cesium/frustum/CesiumVideoFrustum.js                 |  712 +++
 applications/drone-command/src/utils/cesium/publicCesium.js                               |  168 
 applications/drone-command/src/views/permissionManage/permissionDept.vue                  |    9 
 applications/drone-command/src/views/recordManage/alarmRecords.vue                        |    9 
 applications/drone-command/src/utils/cesium/mapUtil.js                                    |  190 
 applications/drone-command/src/views/dataCockpit/index.vue                                |    9 
 /dev/null                                                                                 |  196 
 applications/drone-command/src/views/dataCockpit/components/MapContainer.vue              |   13 
 applications/drone-command/src/assets/images/aiNowFly/flying.png                          |    0 
 applications/drone-command/src/styles/sidebar.scss                                        |    3 
 applications/drone-command/src/views/permissionManage/operationLog.vue                    |    9 
 applications/drone-command/src/views/areaManage/defenseZone.vue                           |    8 
 applications/drone-command/src/views/recordManage/historyTracks.vue                       |   19 
 applications/drone-command/src/utils/cesium/compressImage2.js                             |   46 
 67 files changed, 7,944 insertions(+), 5,946 deletions(-)

diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..b388fe1
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,7 @@
+{
+	"i18n-ally.localesPaths": [
+		"applications/drone-command/src/lang",
+		"applications/mobile-web-view/src/lang",
+		"applications/task-work-order/src/lang"
+	]
+}
\ No newline at end of file
diff --git a/applications/drone-command/env/.env.development b/applications/drone-command/env/.env.development
index a9e3055..144e9fc 100644
--- a/applications/drone-command/env/.env.development
+++ b/applications/drone-command/env/.env.development
@@ -1,3 +1,13 @@
+###
+ # @Author       : yuan
+ # @Date         : 2026-01-06 09:47:05
+ # @LastEditors  : yuan
+ # @LastEditTime : 2026-01-07 10:54:42
+ # @FilePath     : \applications\drone-command\env\.env.development
+ # @Description  : 
+ # Copyright 2026 OBKoro1, All Rights Reserved. 
+ # 2026-01-06 09:47:05
+### 
 NODE_ENV = 'development'
 
 #开发环境配置
@@ -10,10 +20,10 @@
 VITE_APP_BASE=/drone-command
 
 # 服务地址
-VITE_APP_URL = https://wrj.shuixiongit.com/api
+# VITE_APP_URL = https://wrj.shuixiongit.com/api
 #VITE_APP_URL= http://192.168.1.168
-# VITE_APP_URL= http://192.168.1.33
-#VITE_APP_URL= http://192.168.1.204
+VITE_APP_URL= http://192.168.1.33:81
+# VITE_APP_URL= http://192.168.1.204
 #新大屏地址
 VITE_APP_DASHBOARD_URL = 'https://wrj.shuixiongit.com/command-center-dashboard/'
 
diff --git a/applications/drone-command/public/fonts/PANGMENZHENGDAOBIAOTITIMIANFEIBAN-2.TTF b/applications/drone-command/public/fonts/PANGMENZHENGDAOBIAOTITIMIANFEIBAN-2.TTF
new file mode 100644
index 0000000..cd65b62
--- /dev/null
+++ b/applications/drone-command/public/fonts/PANGMENZHENGDAOBIAOTITIMIANFEIBAN-2.TTF
Binary files differ
diff --git a/applications/drone-command/public/fonts/font.css b/applications/drone-command/public/fonts/font.css
index 9451657..261f2fa 100644
--- a/applications/drone-command/public/fonts/font.css
+++ b/applications/drone-command/public/fonts/font.css
@@ -41,3 +41,14 @@
   font-style: normal;
   font-display: swap;
 }
+
+
+
+@font-face {
+  font-family: "PangMen";
+  src: url("PANGMENZHENGDAOBIAOTITIMIANFEIBAN-2.TTF") format("truetype");
+  font-weight: normal;
+  font-style: normal;
+  font-display: swap;
+}
+
diff --git a/applications/drone-command/src/assets/images/aiNowFly/Frame.png b/applications/drone-command/src/assets/images/aiNowFly/Frame.png
new file mode 100644
index 0000000..c1d6816
--- /dev/null
+++ b/applications/drone-command/src/assets/images/aiNowFly/Frame.png
Binary files differ
diff --git a/applications/drone-command/src/assets/images/aiNowFly/fly.png b/applications/drone-command/src/assets/images/aiNowFly/fly.png
new file mode 100644
index 0000000..6872ae0
--- /dev/null
+++ b/applications/drone-command/src/assets/images/aiNowFly/fly.png
Binary files differ
diff --git a/applications/drone-command/src/assets/images/aiNowFly/flying.png b/applications/drone-command/src/assets/images/aiNowFly/flying.png
new file mode 100644
index 0000000..80dc6ae
--- /dev/null
+++ b/applications/drone-command/src/assets/images/aiNowFly/flying.png
Binary files differ
diff --git a/applications/drone-command/src/assets/images/aiNowFly/full-charge.svg b/applications/drone-command/src/assets/images/aiNowFly/full-charge.svg
new file mode 100644
index 0000000..700d544
--- /dev/null
+++ b/applications/drone-command/src/assets/images/aiNowFly/full-charge.svg
@@ -0,0 +1,13 @@
+<svg width="28" height="48" viewBox="0 0 28 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="Vector">
+<path d="M16.5455 0C16.7126 0 16.8781 0.0326726 17.0325 0.0961522C17.1869 0.159632 17.3272 0.252675 17.4454 0.36997C17.5636 0.487265 17.6573 0.626515 17.7213 0.779768C17.7853 0.933022 17.8182 1.09728 17.8182 1.26316V2.52632H24.1818C25.1945 2.52632 26.1656 2.92556 26.8817 3.63623C27.5977 4.34689 28 5.31076 28 6.31579V44.2105C28 45.2156 27.5977 46.1794 26.8817 46.8901C26.1656 47.6008 25.1945 48 24.1818 48H3.81818C2.80554 48 1.83437 47.6008 1.11832 46.8901C0.402272 46.1794 0 45.2156 0 44.2105V6.31579C0 5.31076 0.402272 4.34689 1.11832 3.63623C1.83437 2.92556 2.80554 2.52632 3.81818 2.52632H10.1818V1.26316C10.1818 0.928148 10.3159 0.606858 10.5546 0.36997C10.7933 0.133082 11.117 0 11.4545 0H16.5455ZM24.1818 5.05263H3.81818C3.48063 5.05263 3.15691 5.18571 2.91823 5.4226C2.67954 5.65949 2.54545 5.98078 2.54545 6.31579V44.2105C2.54545 44.5455 2.67954 44.8668 2.91823 45.1037C3.15691 45.3406 3.48063 45.4737 3.81818 45.4737H24.1818C24.5194 45.4737 24.8431 45.3406 25.0818 45.1037C25.3205 44.8668 25.4545 44.5455 25.4545 44.2105V6.31579C25.4545 5.98078 25.3205 5.65949 25.0818 5.4226C24.8431 5.18571 24.5194 5.05263 24.1818 5.05263Z" fill="url(#paint0_linear_1519_1955)"/>
+<path d="M22.909 42.9474V8.33691H5.09082V42.9474H22.909Z" fill="#40FF5C"/>
+</g>
+<defs>
+<linearGradient id="paint0_linear_1519_1955" x1="14" y1="0" x2="14" y2="48" gradientUnits="userSpaceOnUse">
+<stop offset="0.25" stop-color="#00FFF2"/>
+<stop offset="0.514423" stop-color="#00FFF2"/>
+<stop offset="0.721154" stop-color="#00FFF2"/>
+</linearGradient>
+</defs>
+</svg>
diff --git a/applications/drone-command/src/assets/images/aiNowFly/low-battery.svg b/applications/drone-command/src/assets/images/aiNowFly/low-battery.svg
new file mode 100644
index 0000000..ac76800
--- /dev/null
+++ b/applications/drone-command/src/assets/images/aiNowFly/low-battery.svg
@@ -0,0 +1,6 @@
+<svg width="28" height="48" viewBox="0 0 28 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="Group 1321316190">
+<path id="Vector" d="M16.3293 0C16.4942 0 16.6576 0.03249 16.81 0.0956148C16.9624 0.15874 17.1008 0.251263 17.2175 0.367902C17.3341 0.484542 17.4266 0.623013 17.4897 0.77541C17.5529 0.927807 17.5854 1.09114 17.5854 1.2561V2.5122H23.8659C24.8653 2.5122 25.8237 2.90921 26.5304 3.6159C27.2371 4.32259 27.6341 5.28107 27.6341 6.28049V43.9634C27.6341 44.9628 27.2371 45.9213 26.5304 46.628C25.8237 47.3347 24.8653 47.7317 23.8659 47.7317H3.76829C2.76888 47.7317 1.8104 47.3347 1.10371 46.628C0.397016 45.9213 0 44.9628 0 43.9634V6.28049C0 5.28107 0.397016 4.32259 1.10371 3.6159C1.8104 2.90921 2.76888 2.5122 3.76829 2.5122H10.0488V1.2561C10.0488 0.92296 10.1811 0.603466 10.4167 0.367902C10.6522 0.132338 10.9717 0 11.3049 0H16.3293ZM23.8659 5.02439H3.76829C3.43515 5.02439 3.11566 5.15673 2.8801 5.39229C2.64453 5.62786 2.5122 5.94735 2.5122 6.28049V43.9634C2.5122 44.2966 2.64453 44.616 2.8801 44.8516C3.11566 45.0872 3.43515 45.2195 3.76829 45.2195H23.8659C24.199 45.2195 24.5185 45.0872 24.754 44.8516C24.9896 44.616 25.122 44.2966 25.122 43.9634V6.28049C25.122 5.94735 24.9896 5.62786 24.754 5.39229C24.5185 5.15673 24.199 5.02439 23.8659 5.02439Z" fill="#00FFF2"/>
+<path id="Vector_2" d="M22.6098 42.707V37.6826H5.02441V42.707H22.6098Z" fill="#F20303"/>
+</g>
+</svg>
diff --git a/applications/drone-command/src/assets/images/aiNowFly/medium-battery.svg b/applications/drone-command/src/assets/images/aiNowFly/medium-battery.svg
new file mode 100644
index 0000000..283a52f
--- /dev/null
+++ b/applications/drone-command/src/assets/images/aiNowFly/medium-battery.svg
@@ -0,0 +1,6 @@
+<svg width="28" height="48" viewBox="0 0 28 48" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="Vector">
+<path d="M16.5455 0C16.7126 0 16.8781 0.0326726 17.0325 0.0961522C17.1869 0.159632 17.3272 0.252675 17.4454 0.36997C17.5636 0.487265 17.6573 0.626515 17.7213 0.779768C17.7853 0.933022 17.8182 1.09728 17.8182 1.26316V2.52632H24.1818C25.1945 2.52632 26.1656 2.92556 26.8817 3.63623C27.5977 4.34689 28 5.31076 28 6.31579V44.2105C28 45.2156 27.5977 46.1794 26.8817 46.8901C26.1656 47.6008 25.1945 48 24.1818 48H3.81818C2.80554 48 1.83437 47.6008 1.11832 46.8901C0.402272 46.1794 0 45.2156 0 44.2105V6.31579C0 5.31076 0.402272 4.34689 1.11832 3.63623C1.83437 2.92556 2.80554 2.52632 3.81818 2.52632H10.1818V1.26316C10.1818 0.928148 10.3159 0.606858 10.5546 0.36997C10.7933 0.133082 11.117 0 11.4545 0H16.5455ZM24.1818 5.05263H3.81818C3.48063 5.05263 3.15691 5.18571 2.91823 5.4226C2.67954 5.65949 2.54545 5.98078 2.54545 6.31579V44.2105C2.54545 44.5455 2.67954 44.8668 2.91823 45.1037C3.15691 45.3406 3.48063 45.4737 3.81818 45.4737H24.1818C24.5194 45.4737 24.8431 45.3406 25.0818 45.1037C25.3205 44.8668 25.4545 44.5455 25.4545 44.2105V6.31579C25.4545 5.98078 25.3205 5.65949 25.0818 5.4226C24.8431 5.18571 24.5194 5.05263 24.1818 5.05263Z" fill="#00FFF2"/>
+<path d="M22.9091 42.9474V23.4947H5.09091V42.9474H22.9091Z" fill="#00EEFF"/>
+</g>
+</svg>
diff --git a/applications/drone-command/src/assets/images/aiNowFly/starting.png b/applications/drone-command/src/assets/images/aiNowFly/starting.png
new file mode 100644
index 0000000..e8eaa93
--- /dev/null
+++ b/applications/drone-command/src/assets/images/aiNowFly/starting.png
Binary files differ
diff --git a/applications/drone-command/src/assets/images/topContainer/logo.png b/applications/drone-command/src/assets/images/topContainer/logo.png
new file mode 100644
index 0000000..aad9a80
--- /dev/null
+++ b/applications/drone-command/src/assets/images/topContainer/logo.png
Binary files differ
diff --git a/applications/drone-command/src/assets/images/topContainer/top-bg.png b/applications/drone-command/src/assets/images/topContainer/top-bg.png
new file mode 100644
index 0000000..d46a8d7
--- /dev/null
+++ b/applications/drone-command/src/assets/images/topContainer/top-bg.png
Binary files differ
diff --git a/applications/drone-command/src/components/basic-container/main.vue b/applications/drone-command/src/components/basic-container/main.vue
index 43a90ae..66e3372 100644
--- a/applications/drone-command/src/components/basic-container/main.vue
+++ b/applications/drone-command/src/components/basic-container/main.vue
@@ -2,8 +2,8 @@
  * @Author       : yuan
  * @Date         : 2025-06-14 15:19:16
  * @LastEditors  : yuan
- * @LastEditTime : 2025-06-27 14:34:02
- * @FilePath     : \src\components\basic-container\main.vue
+ * @LastEditTime : 2026-01-07 09:28:08
+ * @FilePath     : \applications\drone-command\src\components\basic-container\main.vue
  * @Description  : 
  * Copyright 2025 OBKoro1, All Rights Reserved. 
  * 2025-06-14 15:19:16
@@ -48,7 +48,7 @@
   height: 0;
   flex: 1;
 
-  padding: 10px;
+  padding: 30px;
   // box-sizing: border-box;
   // height: 100%;
 
@@ -80,10 +80,6 @@
 
   &__card {
     width: 100%;
-  }
-
-  &:first-child {
-    padding-top: 0;
   }
 }
 </style>
diff --git a/applications/drone-command/src/config/website.js b/applications/drone-command/src/config/website.js
index 8c44f0a..6961f33 100644
--- a/applications/drone-command/src/config/website.js
+++ b/applications/drone-command/src/config/website.js
@@ -1,13 +1,23 @@
+/*
+ * @Author       : yuan
+ * @Date         : 2026-01-06 09:47:09
+ * @LastEditors  : yuan
+ * @LastEditTime : 2026-01-07 09:18:52
+ * @FilePath     : \applications\drone-command\src\config\website.js
+ * @Description  : 
+ * Copyright 2026 OBKoro1, All Rights Reserved. 
+ * 2026-01-06 09:47:09
+ */
 /**
  * 全局配置文件
  */
 export default {
   title: 'saber',
   logo: 'S',
-  key: 'saber', //配置主键,目前用于存储
+  key: 'command', //配置主键,目前用于存储
   indexTitle: '',
-  clientId: 'drone', // 客户端id
-  clientSecret: 'drone_secret', // 客户端密钥
+  clientId: 'saber', // 客户端id
+  clientSecret: 'saber_secret', // 客户端密钥
   tenantMode: true, // 是否开启租户模式
   tenantId: '000000', // 管理组租户编号
   captchaMode: true, // 是否开启验证码模式
@@ -32,7 +42,7 @@
     menu: true,
   },
   fistPage: {
-    name: '个人工作台',
+    name: '首页',
     path: '/wel/index',
     // path: '/tickets/ticket',
 
diff --git a/applications/drone-command/src/page/index/index.vue b/applications/drone-command/src/page/index/index.vue
index 995cd73..6d62c41 100644
--- a/applications/drone-command/src/page/index/index.vue
+++ b/applications/drone-command/src/page/index/index.vue
@@ -1,26 +1,27 @@
 <template>
   <div class="avue-contail" :class="{ 'avue--collapse': isCollapse }">
     <div class="avue-layout" :class="{ 'avue-layout--horizontal': isHorizontal }">
-      <div class="avue-sidebar" v-show="validSidebar">
-        <!-- 左侧导航栏 -->
-        <logo />
-        <sidebar />
-      </div>
-      <div class="avue-main">
-        <!-- 顶部导航栏 -->
+      <div class="top-container">
         <top ref="top" />
-        <!-- 顶部标签卡 -->
-        <div class="tags-box">
-          <tags />
+      </div>
+
+      <div class="leaf-container">
+        <div class="avue-sidebar" v-show="validSidebar">
+          <!-- 左侧导航栏 -->
+          <sidebar />
         </div>
-        <search class="main-avue-view-container" v-show="isSearch"></search>
-        <!-- 主体视图层 -->
-        <div class="main-avue-view-container" v-show="!isSearch" v-if="isRefresh">
-          <router-view #="{ Component }">
-            <keep-alive :include="$store.getters.tagsKeep">
-              <component :is="Component" />
-            </keep-alive>
-          </router-view>
+      </div>
+
+      <div class="right-container">
+        <div class="avue-main">
+          <!-- 主体视图层 -->
+          <div class="main-avue-view-container" v-show="!isSearch" v-if="isRefresh">
+            <router-view #="{ Component }">
+              <keep-alive :include="$store.getters.tagsKeep">
+                <component :is="Component" />
+              </keep-alive>
+            </router-view>
+          </div>
         </div>
       </div>
     </div>
@@ -29,16 +30,16 @@
   </div>
 </template>
 <script>
-import index from '@/mixins/index';
-import wechat from './wechat.vue';
+import index from '@/mixins/index'
+import wechat from './wechat.vue'
 //import { validatenull } from 'utils/validate';
-import { mapGetters } from 'vuex';
-import tags from './tags.vue';
-import search from './search.vue';
-import logo from './logo.vue';
-import top from './top/index.vue';
-import sidebar from './sidebar/index.vue';
-import GlobalWS from '@/page/index/GlobalWS.vue';
+import { mapGetters } from 'vuex'
+import tags from './tags.vue'
+import search from './search.vue'
+import logo from './logo.vue'
+import top from './top/index.vue'
+import sidebar from './sidebar/index.vue'
+import GlobalWS from '@/page/index/GlobalWS.vue'
 
 export default {
   mixins: [index],
@@ -52,10 +53,10 @@
     wechat,
   },
   name: 'index',
-  provide() {
+  provide () {
     return {
       index: this,
-    };
+    }
   },
   computed: {
     ...mapGetters([
@@ -67,27 +68,27 @@
       'menu',
       'setting',
     ]),
-    validSidebar() {
+    validSidebar () {
       return !(
         (this.$route.meta || {}).menu === false || (this.$route.query || {}).menu === 'false'
-      );
+      )
     },
   },
   props: [],
   methods: {
     //打开菜单
-    openMenu(item = {}) {
+    openMenu (item = {}) {
       this.$store.dispatch('GetMenu', item.id).then(data => {
         if (data.length !== 0) {
-          this.$router.$avueRouter.formatRoutes(data, true);
+          this.$router.$avueRouter.formatRoutes(data, true)
 
           // 获取url里面的redirect
-          const redirect = decodeURIComponent(this.$route.query.redirect || '');
+          const redirect = decodeURIComponent(this.$route.query.redirect || '')
           if (redirect) {
-            console.log('redirect', redirect);
-            const [path, queryString] = redirect.split('?');
-            const query = queryString ? Object.fromEntries(new URLSearchParams(queryString)) : {};
-            this.$router.push({ path, query });
+            console.log('redirect', redirect)
+            const [path, queryString] = redirect.split('?')
+            const query = queryString ? Object.fromEntries(new URLSearchParams(queryString)) : {}
+            this.$router.push({ path, query })
           }
         }
         //当点击顶部菜单后默认打开第一个菜单
@@ -111,10 +112,10 @@
             }, itemActive.meta)
           });
         }*/
-      });
+      })
     },
   },
-};
+}
 </script>
 
 <style lang="scss" scoped>
diff --git a/applications/drone-command/src/page/index/sidebar/index.vue b/applications/drone-command/src/page/index/sidebar/index.vue
index 243229b..93b1139 100644
--- a/applications/drone-command/src/page/index/sidebar/index.vue
+++ b/applications/drone-command/src/page/index/sidebar/index.vue
@@ -1,3 +1,13 @@
+<!--
+ * @Author       : yuan
+ * @Date         : 2026-01-06 09:47:09
+ * @LastEditors  : yuan
+ * @LastEditTime : 2026-01-06 15:48:49
+ * @FilePath     : \applications\drone-command\src\page\index\sidebar\index.vue
+ * @Description  : 
+ * Copyright 2026 OBKoro1, All Rights Reserved. 
+ * 2026-01-06 09:47:09
+-->
 <template>
   <el-scrollbar class="avue-menu">
     <div v-if="menu && menu.length == 0 && !isHorizontal" class="avue-sidebar--tip">
@@ -42,10 +52,11 @@
 .el-menu{
   :deep(){
     .el-menu-item.is-active{
-      background: linear-gradient( 90deg, rgba(179,194,255,0.02) 0%, rgba(20,65,255,0.09) 100%) !important;
-      border-radius: 16px 16px 16px 16px;
+      background: linear-gradient( 90deg, #0300B8 0%, rgba(0,39,153,0) 100%) !important;
+      border-radius: 0px 0px 0px 0px !important;
+
       i,span{
-        color: rgba(20, 65, 255, 1) !important;
+        color: #FFFFFF !important;
       }
     }
     .el-sub-menu i{
diff --git a/applications/drone-command/src/page/index/top/index.vue b/applications/drone-command/src/page/index/top/index.vue
index 071eeec..72f37dd 100644
--- a/applications/drone-command/src/page/index/top/index.vue
+++ b/applications/drone-command/src/page/index/top/index.vue
@@ -1,24 +1,20 @@
 <template>
   <div class="avue-top">
-    <div class="top-bar__left">
-      <div class="avue-breadcrumb" :class="[{ 'avue-breadcrumb--active': isCollapse }]"
-        v-if="setting.collapse && !isHorizontal">
-        <i class="icon-navicon" @click="setCollapse"></i>
-      </div>
-    </div>
     <div class="top-bar__title">
-<!--<top-menu ref="topMenu" v-if="setting.menu"></top-menu>-->
-      <top-search class="top-bar__item" v-if="setting.search"></top-search>
+      <img :src="logoUrl" alt="">
+      <span>低空飞行监管子系统</span>
     </div>
+
     <div class="top-bar__right">
       <div class="icon-box">
-        <top-lock v-if="setting.lock"/>
+        <top-lock v-if="setting.lock" />
         <top-qna />
-        <top-full v-if="setting.fullscreen" title="全屏"/>
-        <img class="gateway" @click="jumpMH" src="@/assets/images/mh.svg" alt="进入门户" title="进入门户" width="20" height="20">
+        <top-full v-if="setting.fullscreen" title="全屏" />
+        <img class="gateway" @click="jumpMH" src="@/assets/images/mh.svg" alt="进入门户" title="进入门户" width="20"
+          height="20">
       </div>
       <div class="top-user">
-        <img class="top-bar__img" :src="userInfo.avatar "  alt=""/>
+        <img class="top-bar__img" :src="userInfo.avatar" alt="" />
 
         <el-dropdown>
           <span class="el-dropdown-link">
@@ -29,7 +25,7 @@
           </span>
           <template #dropdown>
             <el-dropdown-menu>
-<!--              <el-dropdown-item>
+              <!--              <el-dropdown-item>
                 <router-link to="/">{{ $t('navbar.dashboard') }}</router-link>
               </el-dropdown-item>-->
               <el-dropdown-item>
@@ -47,6 +43,8 @@
 </template>
 
 <script>
+import logo from '@/assets/images/topContainer/logo.png'
+
 import { mapGetters } from 'vuex'
 import topLock from './top-lock.vue'
 import topMenu from './top-menu.vue'
@@ -74,7 +72,9 @@
   },
   name: 'top',
   data () {
-    return {}
+    return {
+      logoUrl: logo,
+    }
   },
   filters: {},
   created () { },
@@ -84,17 +84,12 @@
       'userInfo',
       'tagWel',
       'bsTagList',
-      'isCollapse',
       'tag',
       'logsLen',
       'logsFlag',
-      'isHorizontal',
     ]),
   },
   methods: {
-    setCollapse () {
-      this.$store.commit('SET_COLLAPSE')
-    },
     logout () {
       this.$confirm(this.$t('logoutTip'), this.$t('提示'), {
         confirmButtonText: this.$t('submitText'),
@@ -102,9 +97,9 @@
         type: 'warning',
       }).then(() => {
         this.$store.dispatch('LogOut').then(() => {
-        const env = import.meta.env.VITE_APP_ENV
+          const env = import.meta.env.VITE_APP_ENV
           const adminUrl = import.meta.env.VITE_APP_DASHBOARD_URL
-           env === 'development' ? this.$router.push({ path: '/login' }):window.location.replace(`${adminUrl}#/login`)
+          env === 'development' ? this.$router.push({ path: '/login' }) : window.location.replace(`${adminUrl}#/login`)
         })
       })
     },
@@ -119,12 +114,9 @@
 <style lang="scss" scoped>
 .avue-top {
   display: flex;
-  align-items: center;
   justify-content: space-between;
-  padding: 0 15px;
-  height: 50px;
-  background-color: #fff;
-  box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
+  height: 100%;
+  background: url('@/assets/images/topContainer/top-bg.png') center no-repeat !important;
 }
 
 .top-bar__left {
@@ -132,10 +124,32 @@
 }
 
 .top-bar__title {
+  margin-top: 16px;
+  margin-left: 30px;
   flex: 1;
   display: flex;
   align-items: center;
-  height: pxToVh(80);
+  height: pxToVh(48);
+
+  img {
+    margin-right: 17px;
+    width: 36.15px;
+    height: 28px;
+  }
+
+  span {
+    width: 353px;
+    height: 43px;
+    font-family: PangMen;
+    font-weight: 400;
+    font-size: 36px;
+    color: #FFFFFF;
+    letter-spacing: 3px;
+    text-shadow: 3px 3px 0px rgba(0, 13, 42, 0.27);
+    text-align: left;
+    font-style: normal;
+    text-transform: none;
+  }
 }
 
 .top-bar__right {
@@ -144,15 +158,17 @@
   align-items: center;
   height: 100%;
 
-  .icon-box{
+  .icon-box {
     display: flex;
     align-items: center;
     gap: 0 20px;
-    .gateway{
+
+    .gateway {
       width: 25px;
       height: 25px;
     }
-    >*{
+
+    >* {
       cursor: pointer;
     }
   }
diff --git a/applications/drone-command/src/router/views/index.js b/applications/drone-command/src/router/views/index.js
index 9b208fb..3d28779 100644
--- a/applications/drone-command/src/router/views/index.js
+++ b/applications/drone-command/src/router/views/index.js
@@ -16,15 +16,6 @@
         },
         component: () => import(/* webpackChunkName: "views" */ '@/views/wel/index.vue'),
       },
-      {
-        path: 'dashboard',
-        name: '控制台',
-        meta: {
-          i18n: 'dashboard',
-          menu: false,
-        },
-        component: () => import(/* webpackChunkName: "views" */ '@/views/wel/dashboard.vue'),
-      },
     ],
   },
   // 事件工单
diff --git a/applications/drone-command/src/styles/common.scss b/applications/drone-command/src/styles/common.scss
index 18ff080..6d8c733 100644
--- a/applications/drone-command/src/styles/common.scss
+++ b/applications/drone-command/src/styles/common.scss
@@ -26,10 +26,11 @@
 }
 
 .avue-layout {
+  position: relative;
   display: flex;
   width: 100%;
   height: 100%;
-  background: url("@/assets/images/layoutBg.png") no-repeat center / 100% 100%;
+  background: #05050F;
   overflow: hidden;
 
   &--horizontal {
@@ -43,8 +44,8 @@
       .avue-menu,
       .el-menu-item,
       .el-sub-menu__title {
-        height: $top_height;
-        line-height: $top_height;
+        height: $top_height !important;
+        line-height: $top_height !important;
       }
 
       .is-active:before {
@@ -55,6 +56,37 @@
     .avue-logo {
       width: $sidebar_width
     }
+  }
+
+  > .top-container {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 97px;
+    z-index: 9;
+  }
+
+  > .leaf-container {
+    padding-top: 97px;
+    width: 160px;
+    height: 100%;
+
+    .avue-sidebar {
+
+      .el-menu-item,
+      .el-sub-menu__title {
+        margin-top: 26px;
+        height: $top_height !important;
+        line-height: $top_height !important;
+      }
+    }
+  }
+
+  > .right-container {
+    width: 0;
+    flex: 1;
+    height: 100%;
   }
 }
 
@@ -93,6 +125,7 @@
 }
 
 .main-avue-view-container {
+  margin-top: 97px;
   height: 0;
   flex: 1;
   display: flex;
diff --git a/applications/drone-command/src/styles/sidebar.scss b/applications/drone-command/src/styles/sidebar.scss
index 61854ca..1e3baa4 100644
--- a/applications/drone-command/src/styles/sidebar.scss
+++ b/applications/drone-command/src/styles/sidebar.scss
@@ -10,6 +10,7 @@
   transition: width .2s;
   box-sizing: border-box;
   box-shadow: 2px 0 6px rgba(0, 21, 41, .35);
+  border-right: 1px solid #323241;
 
   .el-scrollbar__wrap {
     overflow-x: hidden;
@@ -60,7 +61,7 @@
         left: 0;
         bottom: 0;
         width: 4px;
-        background: var(--el-color-primary);
+        background: #0041FF;
         position: absolute;
       }
 
diff --git a/applications/drone-command/src/styles/theme/white.scss b/applications/drone-command/src/styles/theme/white.scss
index 5799dcc..e8f38b4 100644
--- a/applications/drone-command/src/styles/theme/white.scss
+++ b/applications/drone-command/src/styles/theme/white.scss
@@ -81,18 +81,18 @@
 
   .avue-sidebar {
     box-shadow: 2px 0 6px rgba(0, 21, 41, 0.15);
-    background-color: #fff;
+    background-color: #05050F;
 
     .el-menu-item, .el-sub-menu__title {
       i, span {
-        color: #666
+        color: #8F8FA5;
       }
 
       &:hover {
         background: transparent;
 
         i, span {
-          color: #333;
+          color: #8F8FA5;
         }
       }
 
diff --git a/applications/drone-command/src/styles/top.scss b/applications/drone-command/src/styles/top.scss
index e15e00c..100597e 100644
--- a/applications/drone-command/src/styles/top.scss
+++ b/applications/drone-command/src/styles/top.scss
@@ -101,17 +101,6 @@
   }
 }
 
-.top-bar__title {
-  height: 100%;
-  padding-left: 50px;
-  box-sizing: border-box;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  font-size: inherit;
-  font-weight: 400;
-}
-
 .avue-logo {
   height: $top_height;
   line-height: $top_height;
diff --git a/applications/drone-command/src/styles/variables.scss b/applications/drone-command/src/styles/variables.scss
index 8c395ec..e59caae 100644
--- a/applications/drone-command/src/styles/variables.scss
+++ b/applications/drone-command/src/styles/variables.scss
@@ -1,6 +1,6 @@
-$sidebar_width: 230px;
+$sidebar_width: 160px;
 $sidebar_collapse: 60px;
-$top_height: 50px;
+$top_height: 40px;
 
 @function pxToVh($px) {
   @return calc($px / 1080) * 100vh;
diff --git a/applications/drone-command/src/utils/auth.js b/applications/drone-command/src/utils/auth.js
index 4e41090..4171132 100644
--- a/applications/drone-command/src/utils/auth.js
+++ b/applications/drone-command/src/utils/auth.js
@@ -1,3 +1,13 @@
+/*
+ * @Author       : yuan
+ * @Date         : 2026-01-06 09:47:09
+ * @LastEditors  : yuan
+ * @LastEditTime : 2026-01-06 11:03:04
+ * @FilePath     : \applications\drone-command\src\utils\auth.js
+ * @Description  : 
+ * Copyright 2026 OBKoro1, All Rights Reserved. 
+ * 2026-01-06 09:47:09
+ */
 import Cookies from 'js-cookie';
 
 const TokenKey = 'saber3-access-token';
diff --git a/applications/drone-command/src/utils/cesium/DrawPolygon.js b/applications/drone-command/src/utils/cesium/DrawPolygon.js
new file mode 100644
index 0000000..59cbf6c
--- /dev/null
+++ b/applications/drone-command/src/utils/cesium/DrawPolygon.js
@@ -0,0 +1,803 @@
+import * as Cesium from 'cesium'
+import * as turf from '@turf/turf'
+import { boxTransformScale } from '@/utils/turfFunc'
+import { ElMessage } from 'element-plus'
+import { flyVisual, getPointPositionsHeight } from '@/utils/cesium/mapUtil'
+
+/**
+ * 多边形绘制与编辑工具类
+ * 功能:
+ *  - 绘制多边形
+ *  - 拖动编辑端点
+ *  - 删除端点、删除整个多边形
+ *  - 多边形自交检查(避免非法几何)
+ *  - 外部订阅/通知机制
+ */
+export class DrawPolygon {
+	constructor() {
+		// 图斑预览模式标记
+		this.isPureSpotPreview = false
+		// 是否删除测区
+		this.isDeleteTheArea = true
+		//是否可以编辑图斑
+		this.isPreviewMode = true
+		// Cesium 视图对象
+		this.viewer = null
+		// 当前绘制的多边形
+		this.curPolygon = null
+		// 绘制模式标识
+		this.drawingMode = false
+		// 编辑模式标识
+		this.editingMode = false
+		// 是否正在拖拽端点
+		this.isDragging = false
+		// 当前拖拽的点实体
+		this.draggedEntity = null
+		// 多边形实体
+		this.polygonEntity = null
+		// 存储端点的 DataSource
+		this.editPolygonDataSource = null
+		this.editPolygonPointDataSource = null
+		// 存储中点(边中点)的 DataSource:用于编辑态插入新端点
+		this.editPolygonMidPointDataSource = null
+		// 鼠标事件处理器
+		this.handler = null
+		// 右键菜单 DOM
+		this.menuPopup = null
+		// 被右键选中的点
+		this.delPolygonPoint = null
+		// 是否显示警告提示(自交)
+		this.isShowWaringTip = false
+		// 当前拖拽点是否合法
+		this.currentDragPointIsValid = false
+		// 当前拖拽点的坐标
+		this.currentDragPointPosition = null
+
+		// 事件回调函数绑定 this
+		this.handleLeftDown = this.handleLeftDown.bind(this)
+		this.handleLeftUp = this.handleLeftUp.bind(this)
+		this.handleMouseMove = this.handleMouseMove.bind(this)
+		this.handleLeftClick = this.handleLeftClick.bind(this)
+		this.handleRightClick = this.handleRightClick.bind(this)
+
+		this.delPolygon = this.delPolygon.bind(this)
+		this.delPoint = this.delPoint.bind(this)
+		// 外部订阅者
+		this.listeners = []
+	}
+
+	// 实体命名常量
+	static ENTITY_NAMES = {
+		POLYGON: '区域-面',
+		POINT: '区域-端点',
+		// 编辑态中点(用于快速插入新端点)
+		MID_POINT: '区域-中点',
+		POLYGON_ID: 'planar-route-polygon',
+		POINT_ID_PREFIX: 'planar-route-point',
+		MID_POINT_ID_PREFIX: 'planar-route-mid-point',
+	}
+
+	// 颜色常量
+	static COLORS = {
+		DEFAULT_POLYGON: Cesium.Color.fromBytes(45, 140, 240, 99), // 默认面颜色
+		DEFAULT_LINE: Cesium.Color.fromBytes(45, 140, 240, 255), // 默认边界线颜色
+		ERROR_POLYGON: Cesium.Color.fromCssColorString('rgba(255, 0, 0, .3)'), // 错误(自交)面颜色
+		ERROR_LINE: Cesium.Color.fromCssColorString('rgba(255, 0, 0, 1)'), // 错误(自交)线颜色
+	}
+
+	// ============ 发布订阅机制 ============
+
+	// 外部订阅数据变化
+	subscribe (key, listener) {
+		this.listeners.push({ key, listener })
+	}
+
+	// 通知订阅者
+	notify (key, data) {
+		this.listeners.filter(subscriber => subscriber.key === key).forEach(subscriber => subscriber.listener(data))
+	}
+
+	// ============ 绘制相关 ============
+	// 编辑图斑
+	editThePatch (data) {
+		this.isPreviewMode = data
+		// 关闭编辑能力时隐藏端点/中点,并清空中点,避免残留交互
+		if (!this.isPreviewMode) {
+			this.editPolygonPointDataSource && (this.editPolygonPointDataSource.entities.show = false)
+			this.editPolygonMidPointDataSource && (this.editPolygonMidPointDataSource.entities.show = false)
+			this.editPolygonMidPointDataSource?.entities?.removeAll?.()
+			return
+		}
+
+		if (this.editingMode) {
+			this.editPolygonPointDataSource && (this.editPolygonPointDataSource.entities.show = true)
+			this.editPolygonMidPointDataSource && (this.editPolygonMidPointDataSource.entities.show = true)
+			this.rebuildEditPoints()
+			this.rebuildMidPoints()
+		}
+	}
+	// 删除测区
+	deleteTheArea (data) {
+		this.isDeleteTheArea = data
+	}
+
+	// 开始绘制
+	startDrawing () {
+		this.drawingMode = true
+		this.curPolygon = new Cesium.PolygonHierarchy()
+
+		// 如果还没有 DataSource,就新建一个
+		if (!this.editPolygonDataSource) {
+			this.editPolygonDataSource = new Cesium.CustomDataSource('editPolygonDataSource')
+			this.viewer?.dataSources.add(this.editPolygonDataSource)
+		}
+
+		if (!this.editPolygonPointDataSource) {
+			this.editPolygonPointDataSource = new Cesium.CustomDataSource('editPolygonPointDataSource')
+			this.viewer?.dataSources.add(this.editPolygonPointDataSource)
+		}
+
+		// 中点数据源:编辑模式下用于“边上插点”
+		if (!this.editPolygonMidPointDataSource) {
+			this.editPolygonMidPointDataSource = new Cesium.CustomDataSource('editPolygonMidPointDataSource')
+			this.viewer?.dataSources.add(this.editPolygonMidPointDataSource)
+		}
+
+		// 清空之前的点
+		this.editPolygonDataSource?.entities.removeAll()
+		this.editPolygonPointDataSource?.entities.removeAll()
+		this.editPolygonMidPointDataSource?.entities.removeAll()
+	}
+
+	// 创建多边形实体(含边界线)
+	createPolygonEntity () {
+		this.polygonEntity = this.editPolygonDataSource.entities.add({
+			name: DrawPolygon.ENTITY_NAMES.POLYGON,
+			id: DrawPolygon.ENTITY_NAMES.POLYGON_ID,
+			polygon: {
+				hierarchy: new Cesium.CallbackProperty(() => this.curPolygon, false),
+				material: DrawPolygon.COLORS.DEFAULT_POLYGON,
+				outline: false,
+				outlineWidth: 2,
+				heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+			},
+			polyline: {
+				width: 2,
+				material: DrawPolygon.COLORS.DEFAULT_LINE,
+				clampToGround: true,
+				positions: new Cesium.CallbackProperty(
+					() => [...this.curPolygon.positions, this.curPolygon.positions[0]], // 闭合线
+					false
+				),
+			},
+		})
+	}
+
+	// 创建端点实体
+	createPointEntity (position, isAdd) {
+		const pointIndex = isAdd ? this.curPolygon.positions.length - 2 : this.curPolygon.positions.length - 1
+
+		this.editPolygonPointDataSource.entities.add({
+			name: DrawPolygon.ENTITY_NAMES.POINT,
+			id: `${DrawPolygon.ENTITY_NAMES.POINT_ID_PREFIX}${pointIndex}`,
+			position: position.clone(),
+			point: {
+				pixelSize: 14,
+				color: Cesium.Color.WHITE,
+				heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+				disableDepthTestDistance: Number.POSITIVE_INFINITY,
+			},
+			customData: {
+				ind: pointIndex, // 索引记录
+			},
+		})
+	}
+
+	createMidPointEntity (startInd, position) {
+		// 使用 CallbackProperty 让中点位置随端点拖拽实时计算
+		// startInd 表示该中点属于边:(startInd) -> (startInd + 1)
+		const updatePosition = () => {
+			const positions = this.curPolygon?.positions
+			if (!positions || positions.length < 2) return position
+
+			const n = positions.length
+			const p1 = positions[startInd]
+			const p2 = positions[(startInd + 1) % n]
+			if (!p1 || !p2) return position
+
+			return Cesium.Cartesian3.midpoint(p1, p2, new Cesium.Cartesian3())
+		}
+
+		this.editPolygonMidPointDataSource.entities.add({
+			name: DrawPolygon.ENTITY_NAMES.MID_POINT,
+			id: `${DrawPolygon.ENTITY_NAMES.MID_POINT_ID_PREFIX}${startInd}`,
+			position: new Cesium.CallbackProperty(updatePosition, false),
+			point: {
+				pixelSize: 10,
+				color: Cesium.Color.fromCssColorString('rgba(255, 255, 255, .7)'),
+				heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+				disableDepthTestDistance: Number.POSITIVE_INFINITY,
+			},
+			customData: {
+				startInd,
+			},
+		})
+	}
+
+	rebuildEditPoints () {
+		// 插入/删除端点后:端点实体 id 与 customData.ind 需要全量重建,保证索引与 positions 一致
+		if (!this.isPreviewMode) return
+		if (!this.editPolygonPointDataSource || !this.curPolygon?.positions) return
+
+		this.editPolygonPointDataSource.entities.removeAll()
+		this.curPolygon.positions.forEach((position, index) => {
+			this.editPolygonPointDataSource.entities.add({
+				name: DrawPolygon.ENTITY_NAMES.POINT,
+				id: `${DrawPolygon.ENTITY_NAMES.POINT_ID_PREFIX}${index}`,
+				position: position.clone(),
+				point: {
+					pixelSize: 14,
+					color: Cesium.Color.WHITE,
+					heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+					disableDepthTestDistance: Number.POSITIVE_INFINITY,
+				},
+				customData: {
+					ind: index,
+				},
+			})
+		})
+	}
+
+	rebuildMidPoints () {
+		// 仅在“顶点数量变化/切换编辑态”时维护中点实体数量
+		// 拖拽过程中中点位置由 CallbackProperty 自动更新,不需要重建
+		if (!this.isPreviewMode) return
+		if (!this.editPolygonMidPointDataSource || !this.curPolygon?.positions) return
+
+		const positions = this.curPolygon.positions
+		const n = positions.length
+		const entities = this.editPolygonMidPointDataSource.entities
+
+		if (!this.editingMode || n < 2) {
+			entities.removeAll()
+			return
+		}
+
+		const neededIds = new Set()
+		for (let i = 0; i < n; i += 1) {
+			const id = `${DrawPolygon.ENTITY_NAMES.MID_POINT_ID_PREFIX}${i}`
+			neededIds.add(id)
+			// 缺少则补齐:保证每条边都有一个中点实体
+			if (!entities.getById(id)) {
+				const p1 = positions[i]
+				const p2 = positions[(i + 1) % n]
+				if (!p1 || !p2) continue
+				const mid = Cesium.Cartesian3.midpoint(p1, p2, new Cesium.Cartesian3())
+				this.createMidPointEntity(i, mid)
+			}
+		}
+
+		entities.values.slice().forEach(entity => {
+			if (entity?.name !== DrawPolygon.ENTITY_NAMES.MID_POINT) return
+			// 多余则移除:例如删除端点导致边数量减少
+			if (!neededIds.has(entity.id)) {
+				entities.remove(entity)
+			}
+		})
+	}
+
+	insertPointFromMidPoint (midPointEntity) {
+		// 点击中点:在对应边上插入一个新端点(白点),并立即进入拖拽态
+		if (!this.isPreviewMode) return
+		if (!this.editingMode) return
+		if (!midPointEntity?.customData) return
+
+		const startInd = midPointEntity.customData.startInd
+		// 中点位置可能是 CallbackProperty,需要取当前时刻的值
+		const positionProperty = midPointEntity.position
+		const entityPosition = positionProperty?.getValue
+			? positionProperty.getValue(Cesium.JulianDate.now())
+			: positionProperty
+		if (!entityPosition) return
+
+		// 插入到 startInd 与 startInd+1 之间
+		const insertIndex = Math.min(Math.max(startInd + 1, 0), this.curPolygon.positions.length)
+		this.curPolygon.positions.splice(insertIndex, 0, entityPosition.clone ? entityPosition.clone() : entityPosition)
+
+		this.rebuildEditPoints()
+		this.rebuildMidPoints()
+
+		const newPointEntity = this.editPolygonPointDataSource?.entities?.getById(
+			`${DrawPolygon.ENTITY_NAMES.POINT_ID_PREFIX}${insertIndex}`
+		)
+		if (newPointEntity) {
+			this.isDragging = true
+			this.draggedEntity = newPointEntity
+			this.currentDragPointPosition = this.curPolygon.positions[insertIndex]
+			this.disableMapControl()
+		}
+		this.notify('getPolygonPositions', this.curPolygon.positions)
+	}
+	// 清除不在范围内的点
+	removeLastInvalidPoint () {
+		const posLen = this.curPolygon.positions.length
+		if (posLen === 0) return
+
+		let targetPointId = ''
+		let removeCount = 0
+
+		if (posLen === 2) {
+			removeCount = 2
+			targetPointId = `${DrawPolygon.ENTITY_NAMES.POINT_ID_PREFIX}0`
+		} else if (posLen > 2) {
+			removeCount = 1
+			const pointIndex = posLen - 2
+			targetPointId = `${DrawPolygon.ENTITY_NAMES.POINT_ID_PREFIX}${pointIndex}`
+		}
+
+		this.curPolygon.positions.splice(posLen - removeCount, removeCount)
+
+		const invalidPoint = this.editPolygonPointDataSource.entities.getById(targetPointId)
+		if (invalidPoint) {
+			this.editPolygonPointDataSource.entities.remove(invalidPoint)
+		}
+
+		if (this.curPolygon.positions.length === 0 && this.polygonEntity) {
+			this.editPolygonDataSource.entities.remove(this.polygonEntity)
+			this.polygonEntity = null
+		}
+	}
+	// 添加一个点
+	addPosition (position, isAdd = true) {
+		// 第一个点要重复压入一次,形成动态绘制效果
+		if (this.curPolygon.positions.length === 0 && isAdd) {
+			this.curPolygon.positions.push(position.clone())
+		}
+
+		this.curPolygon.positions.push(position.clone())
+
+		// 如果没有实体则创建
+		if (!this.polygonEntity) {
+			this.createPolygonEntity()
+		}
+
+		// 创建端点实体
+		if (this.isPreviewMode) {
+			this.createPointEntity(position, isAdd)
+		}
+
+		this.notify('getPoints', position)
+	}
+
+	// ============ 鼠标事件 ============
+
+	// 鼠标左键按下(选中端点拖动)
+	handleLeftDown (movement) {
+		if (!this.editingMode) return
+
+		const pickedEntity = this.viewer.scene.pick(movement.position)?.id
+		const isPoint = pickedEntity?.name === DrawPolygon.ENTITY_NAMES.POINT
+		const isMidPoint = pickedEntity?.name === DrawPolygon.ENTITY_NAMES.MID_POINT
+
+		if (pickedEntity && isPoint) {
+			this.isDragging = true
+			this.draggedEntity = pickedEntity
+			this.currentDragPointPosition = this.curPolygon.positions[this.draggedEntity?.customData.ind]
+			this.disableMapControl() // 禁止地图交互
+			return
+		}
+
+		if (pickedEntity && isMidPoint) {
+			this.insertPointFromMidPoint(pickedEntity)
+		}
+	}
+
+	// 鼠标左键抬起(拖拽结束)
+	handleLeftUp () {
+		if (!(this.editingMode && this.curPolygon?.positions && this.draggedEntity)) return
+
+		if (this.currentDragPointIsValid && this.isDragging) {
+			// 更新点位置
+			this.draggedEntity.position = this.currentDragPointPosition
+			this.curPolygon.positions[this.draggedEntity?.customData.ind] = this.currentDragPointPosition
+
+			// 校验多边形是否自交
+			if (!this.curDragPointIsValid(this.curPolygon.positions)) {
+				this.isShowWaringTip = true
+				this.currentDragPointIsValid = true
+				this.updatePolygonAppearance(DrawPolygon.COLORS.ERROR_POLYGON, DrawPolygon.COLORS.ERROR_LINE)
+			} else {
+				this.isShowWaringTip = false
+				this.currentDragPointIsValid = false
+				this.updatePolygonAppearance(DrawPolygon.COLORS.DEFAULT_POLYGON, DrawPolygon.COLORS.DEFAULT_LINE)
+			}
+
+			this.notify('getShowWaringTip', this.isShowWaringTip)
+		}
+
+		// 拖拽结束,恢复交互
+		if (this.isDragging) {
+			this.notify('getPolygonPositions', this.curPolygon.positions)
+			this.isDragging = false
+			this.draggedEntity = null
+			this.enableMapControl()
+			this.rebuildMidPoints()
+		}
+	}
+
+	// 鼠标移动
+	handleMouseMove (movement) {
+		if (!this.drawingMode && !this.editingMode) return
+
+		const cartesian = this.viewer.scene.pickPosition(movement.endPosition)
+		if (!cartesian) return
+
+		// 编辑模式下,拖拽点实时更新
+		if (this.editingMode && this.draggedEntity?.customData) {
+			this.draggedEntity.position = cartesian
+			this.curPolygon.positions[this.draggedEntity?.customData.ind] = cartesian
+		}
+
+		// 绘制模式下,实时更新最后一个点
+		if (this.drawingMode && this.polygonEntity && this.curPolygon.positions.length >= 1) {
+			this.curPolygon.positions.pop()
+			this.curPolygon.positions.push(cartesian)
+		}
+
+		// 实时检查是否自交
+		if (
+			(this.editingMode && this.draggedEntity?.customData) ||
+			(this.drawingMode && this.polygonEntity && this.curPolygon.positions.length >= 3)
+		) {
+			if (!this.curDragPointIsValid(this.curPolygon.positions)) {
+				this.isShowWaringTip = true
+				this.currentDragPointIsValid = true
+				this.updatePolygonAppearance(DrawPolygon.COLORS.ERROR_POLYGON, DrawPolygon.COLORS.ERROR_LINE)
+			} else {
+				this.isShowWaringTip = false
+				this.currentDragPointIsValid = false
+				this.updatePolygonAppearance(DrawPolygon.COLORS.DEFAULT_POLYGON, DrawPolygon.COLORS.DEFAULT_LINE)
+			}
+
+			this.notify('getShowWaringTip', this.isShowWaringTip)
+		}
+	}
+
+	// 鼠标左键点击
+	handleLeftClick (click) {
+		this.removeMenuPopup()
+
+		const pickedAllEntity = this.viewer.scene.drillPick(click.position).filter(i => i.id)
+		const isStartPoint = pickedAllEntity.find(i => i.id.name === '起飞点')
+		const isPolygonPoint = pickedAllEntity.find(i => i.id.name === DrawPolygon.ENTITY_NAMES.POINT)
+		const isPolygon = pickedAllEntity.find(i => i.id.name === DrawPolygon.ENTITY_NAMES.POLYGON)
+
+		if (isStartPoint) return
+
+		// 如果不是绘制模式
+		if (!this.drawingMode) {
+			if (!isPolygon) {
+				this.editingMode = false
+				this.editPolygonPointDataSource.entities.show = false
+				this.editPolygonMidPointDataSource && (this.editPolygonMidPointDataSource.entities.show = false)
+				return
+			}
+
+			if (isPolygon) {
+				this.editingMode = true
+				this.editPolygonPointDataSource.entities.show = true
+				this.editPolygonMidPointDataSource && (this.editPolygonMidPointDataSource.entities.show = true)
+				this.rebuildMidPoints()
+			}
+			return
+		}
+
+		// 点击闭合多边形
+		if (this.curPolygon.positions.length < 4 && isPolygonPoint) {
+			return
+		}
+
+		if (this.curPolygon.positions.length >= 4 && isPolygonPoint) {
+			if (!this.drawingMode) return
+
+			this.finishDrawing()
+			return
+		}
+
+		// 添加新的点
+		const cartesian = this.viewer.scene.pickPosition(click.position)
+		if (!cartesian) return
+
+		let arr = [...this.curPolygon.positions]
+		arr.pop()
+		// 校验多边形是否自交
+		if (arr.length > 2 && !this.curDragPointIsValid([...arr, cartesian])) {
+			ElMessage.warning('测区不支持交叉绘制,请重新绘制')
+			return
+		}
+
+		this.addPosition(cartesian)
+	}
+
+	// 鼠标右键点击(弹出菜单)
+	handleRightClick (click) {
+		const that = this
+		if (that.drawingMode) return
+
+		that.removeMenuPopup()
+
+		const pickedAllEntity = that.viewer.scene.drillPick(click.position).filter(i => i.id)
+		const isPolygon = pickedAllEntity.find(i => i.id.name === DrawPolygon.ENTITY_NAMES.POLYGON)
+		const isEditPoint = pickedAllEntity.find(i => i.id.name === DrawPolygon.ENTITY_NAMES.POINT)
+		const {
+			position: { x, y },
+		} = click
+
+		let pickedEntity, tooltipEvent, menuType
+		if (isEditPoint) {
+			pickedEntity = isEditPoint
+			tooltipEvent = that.delPoint
+			menuType = 'edit-point'
+		} else if (isPolygon) {
+			pickedEntity = isPolygon
+			tooltipEvent = that.delPolygon
+			menuType = 'polygon'
+		}
+
+		if (pickedEntity && this.isDeleteTheArea) {
+			that.delPolygonPoint = pickedEntity.id
+			that.menuPopup = that.createMenuPopup(menuType)
+			that.menuPopup.style.transform = `translate3d(${x - 10}px, ${y - 10}px, 0)`
+			that.viewer.container.appendChild(that.menuPopup)
+			that.menuPopup.addEventListener('click', tooltipEvent)
+		}
+	}
+
+	// ============ 删除相关 ============
+
+	// 删除所有实体
+	removeEntities () {
+		if (this.editPolygonDataSource) {
+			this.editPolygonDataSource.entities.removeAll()
+			this.editPolygonDataSource = null
+		}
+
+		if (this.editPolygonPointDataSource) {
+			this.editPolygonPointDataSource.entities.removeAll()
+			this.editPolygonPointDataSource = null
+		}
+
+		if (this.editPolygonMidPointDataSource) {
+			this.editPolygonMidPointDataSource.entities.removeAll()
+			this.editPolygonMidPointDataSource = null
+		}
+		this.editingMode = false
+		this.polygonEntity = null
+		this.curPolygon = null
+	}
+
+	// 完成绘制
+	finishDrawing () {
+		this.curPolygon.positions.pop()
+
+		if (this.curPolygon.positions.length >= 3) {
+			this.drawingMode = false
+			this.editingMode = true
+			this.editPolygonPointDataSource.entities.show = true
+			this.editPolygonMidPointDataSource && (this.editPolygonMidPointDataSource.entities.show = true)
+			this.rebuildMidPoints()
+
+			if (!this.curDragPointIsValid(this.curPolygon.positions)) {
+				this.isShowWaringTip = true
+				this.currentDragPointIsValid = true
+				this.updatePolygonAppearance(DrawPolygon.COLORS.ERROR_POLYGON, DrawPolygon.COLORS.ERROR_LINE)
+			} else {
+				this.isShowWaringTip = false
+				this.currentDragPointIsValid = false
+				this.updatePolygonAppearance(DrawPolygon.COLORS.DEFAULT_POLYGON, DrawPolygon.COLORS.DEFAULT_LINE)
+			}
+
+			this.notify('getShowWaringTip', this.isShowWaringTip)
+			this.notify('getPolygonPositions', this.curPolygon.positions)
+		}
+	}
+
+	// 删除多边形
+	delPolygon () {
+		this.removeEntities()
+		this.removeMenuPopup()
+		this.notify('getPolygonPositions', [])
+		this.startDrawing()
+	}
+	// 删除图斑
+	delSpot () {
+		this.removeEntities()
+		this.isPreviewMode = true
+		this.startDrawing()
+	}
+	// 删除端点
+	delPoint () {
+		if (this.curPolygon.positions.length <= 3) {
+			this.removeMenuPopup()
+			return ElMessage.warning('端点不可少于3个')
+		}
+		if (!this.delPolygonPoint) return
+
+		this.curPolygon.positions.splice(this.delPolygonPoint.customData.ind, 1)
+		this.removeMenuPopup()
+		this.rebuildEditPoints()
+		this.rebuildMidPoints()
+
+		this.notify('getPolygonPositions', this.curPolygon.positions)
+	}
+
+	// ============ 工具方法 ============
+
+	// 创建右键菜单
+	createMenuPopup (type = 'polygon') {
+		const menuPopupVBox = document.createElement('div')
+		menuPopupVBox.id = 'planarPolygonEdit'
+		menuPopupVBox.className = 'planar-polygon-edit-tooltip'
+
+		const menuPopup = document.createElement('div')
+		menuPopup.id = 'planarPolygonEditMenu'
+		menuPopup.className = 'planar-polygon-edit-menu'
+
+		const menuItems =
+			type === 'polygon'
+				? [{ title: '删除测区', class: 'del-planar-polygon' }]
+				: [{ title: '删除端点', class: 'del-planar-point' }]
+
+		menuItems.forEach(item => {
+			const titleDiv = document.createElement('div')
+			titleDiv.innerText = item.title
+			titleDiv.className = item.class
+			menuPopup.appendChild(titleDiv)
+		})
+		this.isPreviewMode = true
+		menuPopupVBox.appendChild(menuPopup)
+		return menuPopupVBox
+	}
+
+	// 移除菜单
+	removeMenuPopup () {
+		const that = this
+		if (that.menuPopup) {
+			that.menuPopup.removeEventListener('click', that.delPolygon)
+			that.menuPopup.removeEventListener('click', that.delPoint)
+			that.viewer.container.removeChild(that.menuPopup)
+			that.menuPopup = null
+		}
+		that.delPolygonPoint = null
+	}
+
+	// 更新多边形样式(正常/错误)
+	updatePolygonAppearance (polygonColor, lineColor) {
+		this.polygonEntity.polygon.material = polygonColor
+		this.polygonEntity.polyline.material = lineColor
+	}
+
+	// 禁用地图交互
+	disableMapControl () {
+		const controller = this.viewer.scene.screenSpaceCameraController
+		controller.enableRotate = false
+		controller.enableTranslate = false
+		controller.enableZoom = false
+	}
+
+	// 启用地图交互
+	enableMapControl () {
+		const controller = this.viewer.scene.screenSpaceCameraController
+		controller.enableRotate = true
+		controller.enableTranslate = true
+		controller.enableZoom = true
+	}
+
+	// 检查多边形是否自交
+	curDragPointIsValid (positions) {
+		if (positions.length < 3) return true
+
+		const cartographics = Cesium.Ellipsoid.WGS84.cartesianArrayToCartographicArray(positions)
+		const latLngPoints = cartographics.map(cartographic => [
+			Cesium.Math.toDegrees(cartographic.longitude),
+			Cesium.Math.toDegrees(cartographic.latitude),
+		])
+
+		// 用 turf.js 检查自交
+		const poly = turf.polygon([[...latLngPoints, latLngPoints[0]]])
+		const intersections = turf.kinks(poly)
+
+		return intersections.features.length === 0
+	}
+	// 初始化已有多边形
+	async initPolygon (viewer, positions, isPurePreview = false) {
+		this.initHandler(viewer)
+		this.isPureSpotPreview = isPurePreview
+		this.startDrawing()
+		let newPosition = positions.map(item => {
+			return Cesium.Cartesian3.fromDegrees(Number(item.lng), Number(item.lat), Number(item?.height||0))
+		})
+		// 预览航线的时候调用
+		if (!this.isPureSpotPreview) {
+			this.notify('getPolygonPositions', newPosition)
+		}
+
+		newPosition.forEach(item => {
+			this.addPosition(item, false)
+		})
+
+		// 视角飞入区域
+		const newBox = boxTransformScale(
+			positions.map(item => [item.lng, item.lat]),
+			5
+		)
+		viewer.camera.flyTo({
+			destination: Cesium.Rectangle.fromDegrees(...newBox),
+			offset: new Cesium.HeadingPitchRange(0, Cesium.Math.toRadians(-90), 0),
+			duration: 0.5,
+		})
+
+		const pointList = await getPointPositionsHeight(positions, viewer)
+		flyVisual({ positionsData: pointList.map(item => [item.lng, item.lat, item.ASL]), viewer })
+
+		this.drawingMode = false
+		this.editingMode = true
+		this.editPolygonPointDataSource && (this.editPolygonPointDataSource.entities.show = true)
+		this.editPolygonMidPointDataSource && (this.editPolygonMidPointDataSource.entities.show = true)
+		this.rebuildMidPoints()
+	}
+
+	// 初始化事件处理器
+	initHandler (viewer) {
+		this.viewer = viewer
+		this.startDrawing()
+
+		if (!this.handler) {
+			this.handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
+
+			// 注册鼠标事件
+			const events = [
+				[Cesium.ScreenSpaceEventType.LEFT_DOWN, this.handleLeftDown],
+				[Cesium.ScreenSpaceEventType.LEFT_UP, this.handleLeftUp],
+				[Cesium.ScreenSpaceEventType.MOUSE_MOVE, this.handleMouseMove],
+				[Cesium.ScreenSpaceEventType.LEFT_CLICK, this.handleLeftClick],
+				[Cesium.ScreenSpaceEventType.RIGHT_CLICK, this.handleRightClick],
+			]
+
+			events.forEach(([type, handler]) => {
+				this.handler.setInputAction(handler, type)
+			})
+		}
+	}
+
+	// 移除事件处理器
+	removeHandler () {
+		if (this.handler) {
+			const eventTypes = [
+				Cesium.ScreenSpaceEventType.LEFT_DOWN,
+				Cesium.ScreenSpaceEventType.LEFT_UP,
+				Cesium.ScreenSpaceEventType.MOUSE_MOVE,
+				Cesium.ScreenSpaceEventType.LEFT_CLICK,
+				Cesium.ScreenSpaceEventType.RIGHT_CLICK,
+			]
+
+			eventTypes.forEach(type => {
+				this.handler.removeInputAction(type)
+			})
+
+			this.handler = null
+		}
+	}
+
+	/**
+	 * 销毁实例,释放资源
+	 */
+	destroy () {
+		if (!this.viewer) return
+
+		this.removeMenuPopup()
+		this.removeEntities()
+		this.removeHandler()
+		this.enableMapControl()
+	}
+}
diff --git a/applications/drone-command/src/utils/cesium/Material/index.js b/applications/drone-command/src/utils/cesium/Material/index.js
index f96f7a8..d5aff41 100644
--- a/applications/drone-command/src/utils/cesium/Material/index.js
+++ b/applications/drone-command/src/utils/cesium/Material/index.js
@@ -54,6 +54,7 @@
     this._opacity = undefined
     this._alphaPower = undefined
     this._speed = undefined
+    this._xRepeatCount = undefined
 
     this.color = options.color || Cesium.Color.fromBytes(0, 255, 255, 255)
     this.glowPower = .25
@@ -64,6 +65,9 @@
     this.opacity = options.opacity || 0.5
     this.alphaPower = options.alphaPower || 1.5
     this.speed = options.speed || 5
+    this.xRepeatCount = options.xRepeatCount || 1
+
+
   }
 
   get isConstant () {
@@ -132,15 +136,17 @@
       color: new Cesium.Color(1.0, 1.0, 0.0, 0.7),
       bgColor: new Cesium.Color(0.0, 1.0, 0.0, 0.0),
       speed: 5,
-      globalAlpha: 1.0
+      globalAlpha: 1.0,
+      xRepeatCount: 1.0
     },
     source: `
           uniform vec4 bgColor;
           uniform vec4 color;
           uniform float speed;
           uniform float globalAlpha;
+          uniform float xRepeatCount; // 新增的 uniform 在着色器中
 
-          czm_material czm_getMaterial(czm_materialInput materialInput) {
+           czm_material czm_getMaterial(czm_materialInput materialInput) {
               czm_material material = czm_getDefaultMaterial(materialInput);
               vec2 st = materialInput.st;
               float time = fract(czm_frameNumber * speed / 1000.0);
@@ -150,7 +156,7 @@
                   colorMars3D = vec3(1.0);
               }
 
-              material.alpha = color.a * 1.5 * smoothstep(0.0, 1.0, fract(st.s - time));
+              material.alpha = color.a * 1.5 * smoothstep(0.0, 1.0, fract(st.s * xRepeatCount - time)); // 使用 xRepeatCount 来调整纹理重复
               material.diffuse = max(colorMars3D.rgb * material.alpha, colorMars3D.rgb);
 
               if (material.alpha < bgColor.a) {
@@ -182,6 +188,8 @@
     result.color = Cesium.Property.getValueOrUndefined(this._color, time)
     result.globalAlpha = Cesium.Property.getValueOrUndefined(this._opacity, time)
     result.speed = Cesium.Property.getValueOrUndefined(this._speed, time)
+    result.xRepeatCount = Cesium.Property.getValueOrUndefined(this._xRepeatCount, time)
+
     return result
   }
 
@@ -191,7 +199,8 @@
       (other instanceof LineTrailMaterial &&
         Cesium.Property.equals(this._color, other._color) &&
         Cesium.Property.equals(this._opacity, other._opacity) &&
-        Cesium.Property.equals(this._speed, other._speed))
+        Cesium.Property.equals(this._speed, other._speed) &&
+        Cesium.Property.equals(this._xRepeatCount, other._xRepeatCount))
     )
   }
 }
@@ -200,6 +209,7 @@
   color: Cesium.createPropertyDescriptor('color'),
   opacity: Cesium.createPropertyDescriptor('opacity'),
   speed: Cesium.createPropertyDescriptor('speed'),
+  xRepeatCount: Cesium.createPropertyDescriptor('xRepeatCount'),
 })
 
 
diff --git a/applications/drone-command/src/utils/cesium/common.js b/applications/drone-command/src/utils/cesium/common.js
index 0e1aefc..5c8ce3e 100644
--- a/applications/drone-command/src/utils/cesium/common.js
+++ b/applications/drone-command/src/utils/cesium/common.js
@@ -131,22 +131,22 @@
 	let newLat = lat
 
 	switch (direction) {
-		case 'W': // 向前(heading 方向)
+		case 'KeyW': // 向前(heading 方向)
 			newLon += moveStep * Math.sin(headingRad)
 			newLat += moveStep * Math.cos(headingRad)
 			break
 
-		case 'S': // 向后(反方向)
+		case 'KeyS': // 向后(反方向)
 			newLon -= moveStep * Math.sin(headingRad)
 			newLat -= moveStep * Math.cos(headingRad)
 			break
 
-		case 'D': // 向右(heading + 90°)
+		case 'KeyD': // 向右(heading + 90°)
 			newLon += moveStep * Math.cos(headingRad)
 			newLat -= moveStep * Math.sin(headingRad)
 			break
 
-		case 'A': // 向左(heading - 90°)
+		case 'KeyA': // 向左(heading - 90°)
 			newLon -= moveStep * Math.cos(headingRad)
 			newLat += moveStep * Math.sin(headingRad)
 			break
diff --git a/applications/drone-command/src/utils/cesium/compressImage.js b/applications/drone-command/src/utils/cesium/compressImage.js
new file mode 100644
index 0000000..0b09680
--- /dev/null
+++ b/applications/drone-command/src/utils/cesium/compressImage.js
@@ -0,0 +1,55 @@
+/**
+ * @description: 图片压缩
+ * @param {*} src 图片地址
+ * @param {*} quality 压缩质量
+ * @param {*} maxWidth 最大宽度
+ * @param {*} callback 回调函数
+ * @return {*}
+ */
+function compressImage(src, quality, maxWidth, callback) {
+	const img = new Image()
+	img.setAttribute('crossOrigin', 'Anonymous')
+	img.onload = function () {
+		const canvas = document.createElement('canvas')
+		const ctx = canvas.getContext('2d')
+		let width = img.width
+		let height = img.height
+
+		if (width > maxWidth) {
+			height *= maxWidth / width
+			width = maxWidth
+		}
+
+		canvas.width = width
+		canvas.height = height
+		ctx.drawImage(img, 0, 0, width, height)
+
+		const newData = canvas.toDataURL('image/jpeg', quality)
+		// 使用atob()将base64转换为二进制字符串
+		const binaryString = window.atob(newData.split(',')[1])
+		const mimeString = newData.split(',')[0].split(':')[1].split(';')[0]
+		// 创建Blob对象
+		const array = []
+		for (let i = 0; i < binaryString.length; i++) {
+			array.push(binaryString.charCodeAt(i))
+		}
+		const blob = new Blob([new Uint8Array(array)], { type: mimeString })
+
+		callback(blob)
+	}
+	img.src = src
+
+	return src
+}
+
+export default function imageCompress(src, quality, maxWidth) {
+	// 使用例子
+	return compressImage(src, quality, maxWidth, function (blob) {
+		// 创建一个新的图片URL
+		const imageUrl = URL.createObjectURL(blob)
+		// 可以在这里使用imageUrl,比如设置为img元素的src
+		// document.getElementById('your-image-element').src = imageUrl;
+		// 当不需要这个URL的时候,释放它
+		URL.revokeObjectURL(imageUrl)
+	})
+}
diff --git a/applications/drone-command/src/utils/cesium/compressImage2.js b/applications/drone-command/src/utils/cesium/compressImage2.js
new file mode 100644
index 0000000..e28a427
--- /dev/null
+++ b/applications/drone-command/src/utils/cesium/compressImage2.js
@@ -0,0 +1,46 @@
+/*
+ * @Author: GuLiMmo 2820890765@qq.com
+ * @Date: 2024-05-21 10:14:11
+ * @LastEditors: GuLiMmo 2820890765@qq.com
+ * @LastEditTime: 2024-05-21 10:20:34
+ * @FilePath: /bigScreen/src/utils/cesium/compressImage2.js
+ * @Description:
+ * Copyright (c) 2024 by GuLiMmo, All Rights Reserved.
+ */
+export default function compressImage(
+	src,
+	maxWidth,
+	maxHeight,
+	outputFormat = 'image/jpeg',
+	quality = 0.7
+) {
+	return new Promise((resolve, reject) => {
+		const image = new Image()
+		image.setAttribute('crossOrigin', 'Anonymous')
+		image.src = src
+		image.onload = () => {
+			let width = image.width
+			let height = image.height
+
+			if (width > maxWidth) {
+				height *= maxWidth / width
+				width = maxWidth
+			}
+
+			if (height > maxHeight) {
+				width *= maxHeight / height
+				height = maxHeight
+			}
+
+			const canvas = document.createElement('canvas')
+			canvas.width = width
+			canvas.height = height
+			const ctx = canvas.getContext('2d')
+			ctx.drawImage(image, 0, 0, width, height)
+
+			const newDataUrl = canvas.toDataURL(outputFormat, quality)
+			resolve(newDataUrl)
+		}
+		image.onerror = reject
+	})
+}
diff --git a/applications/drone-command/src/utils/cesium/createRouteLine.js b/applications/drone-command/src/utils/cesium/createRouteLine.js
index 2c8195e..6ec1c1f 100644
--- a/applications/drone-command/src/utils/cesium/createRouteLine.js
+++ b/applications/drone-command/src/utils/cesium/createRouteLine.js
@@ -2,17 +2,16 @@
 import { Decimal } from 'decimal.js'
 import _, { cloneDeep, throttle } from 'lodash'
 import { v4 as uuidv4 } from 'uuid'
-
 import { render } from 'vue'
-
+import { analysisPointLineKmz, handlePointListForKmz } from '@/views/newRoutePlan/Waypoint/pointWayLineUtils'
 import HistoryDronePopup from '@/components/DeviceJobDetails/HistoryDronePopup.vue'
 
-import { getNewPolygonData } from '@/views/RoutePlan/PlanarAirLine/planarRouteUtils'
+import {
+	getNewPolygonData,
+} from '@/views/newRoutePlan/routeUtils'
 
 import { analyzeKmzFile, removeTextKey, XMLToJSON } from '@/utils/cesium/kmz'
-
-import { ArrowLineMaterialProperty, LineTrailMaterial, PolylineGlowMaterial, } from '@/utils/cesium/Material'
-
+import { ArrowLineMaterialProperty, LineTrailMaterial, PolylineGlowMaterial } from '@/utils/cesium/Material'
 import CreateFrustum from '@/utils/cesium/frustum/CreateFrustum'
 import { ElMessage } from 'element-plus'
 
@@ -23,61 +22,21 @@
 import aircraftGltf from '@/assets/gltf/aircraft.gltf'
 import newNumPoint from '@/assets/images/newStartPoint.png'
 
-import {
-	getPolyLine,
-} from '@/views/RoutePlan/PointAirLine/pointWayLineUtils'
+import { getPolyLine } from '@/views/newRoutePlan/Waypoint/pointWayLineUtils'
 import store from '@/store/index'
+import newStartPoint from '@/assets/images/newStartPoint.png'
+import newStartPointMore from '@/assets/images/newStartPointMore.png'
+import {
+	arrowLineMaterialProperty, arrowLineMaterialPropertyGray, arrowLineMaterialPropertyGrayT,
+	arrowLineMaterialPropertyGreen,
+	arrowLineMaterialPropertyOrange,
+} from '@/hooks/useMorePointLine/useMorePointLine'
 
-let arrowLineMaterialProperty = new ArrowLineMaterialProperty({
-	color: new Cesium.Color(128 / 255, 215 / 255, 255 / 255, 1),
-	directionColor: new Cesium.Color(1, 1, 1, 1),
-	outlineColor: new Cesium.Color(1, 1, 1, 1),
-	outlineWidth: 0,
-	speed: 5
-})
 
-let arrowLineMaterialPropertyOrange = new ArrowLineMaterialProperty({
-	color: new Cesium.Color(255 / 255, 185 / 255, 58 / 255, 1),
-	directionColor: new Cesium.Color(1, 1, 1, 1),
-	outlineColor: new Cesium.Color(1, 1, 1, 1),
-	outlineWidth: 0,
-	speed: 5,
-})
-
-let arrowLineMaterialPropertyGreen = new ArrowLineMaterialProperty({
-	color: new Cesium.Color(6 / 255, 217 / 255, 87 / 255, 1),
-	directionColor: new Cesium.Color(1, 1, 1, 1),
-	outlineColor: new Cesium.Color(1, 1, 1, 1),
-	outlineWidth: 0,
-	speed: 5,
-})
-
-// 记录index
-let indexLog = 0
-// 颜色
-function getLineColor(lineNumber) {
-	// 颜色顺序: 蓝(0), 黄(1), 绿(2)
-	const colors = [arrowLineMaterialProperty, arrowLineMaterialPropertyOrange, arrowLineMaterialPropertyGreen]
-	// 计算颜色索引 (从0开始)
-	const colorIndex = (lineNumber - 1) % 3
-	// 返回对应颜色
-	return colors[colorIndex]
-}
-
-let runningLineMaterial = new LineTrailMaterial({
-	color: Cesium.Color.fromCssColorString('#1FFF69'),
-	opacity: 1,
-	speed: 10,
-})
 let runningTextColor = Cesium.Color.fromCssColorString('#1FFF69')
 let runningTextOffset = new Cesium.Cartesian2(0, -32)
-
-let pendingLineMaterial = new PolylineGlowMaterial({
-	color: Cesium.Color.fromCssColorString('#FFB81D'),
-})
 let pendingTextColor = Cesium.Color.fromCssColorString('#FFB81D')
 let pendingTextOffset = new Cesium.Cartesian2(0, 32)
-
 let MapPopUpBox = HistoryDronePopup
 
 function getZoomFactor (camerasInfo, type) {
@@ -95,10 +54,108 @@
 
 	return zoom_factor
 }
+// 记录index
+let indexLog = 0
+// 颜色
+function getPendingExecutionLineColor (lineNumber) {
+	// 颜色顺序: 蓝(灰), 更灰
+	const colors = [arrowLineMaterialPropertyGray, arrowLineMaterialPropertyGrayT]
+	// 计算颜色索引 (从0开始)
+	const colorIndex = (lineNumber - 1) % 2
+	// 返回对应颜色
+	return colors[colorIndex]
+}
+
+function getLineColor (lineNumber) {
+	// 颜色顺序: 蓝(0), 黄(1), 绿(2)
+	const colors = [arrowLineMaterialProperty, arrowLineMaterialPropertyOrange, arrowLineMaterialPropertyGreen]
+	// 计算颜色索引 (从0开始)
+	const colorIndex = (lineNumber - 1) % 3
+	// 返回对应颜色
+	return colors[colorIndex]
+}
+
+function getBase64Image (imgUrl) {
+	const img = new Image()
+	const canvas = document.createElement('canvas')
+	const ctx = canvas.getContext('2d')
+
+	return new Promise(resolve => {
+		img.onload = function () {
+			canvas.width = img.width
+			canvas.height = img.height
+			ctx.drawImage(img, 0, 0)
+			const base64 = canvas.toDataURL('image/png')
+			resolve(base64)
+		}
+		img.src = imgUrl
+	})
+}
+async function createCombinedSVG (index, billboardImageUrl) {
+	const base64Image = await getBase64Image(billboardImageUrl)
+	const svg = `
+	  <svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
+		<image href="${base64Image}" x="10" y="10" width="80" height="80"/>
+		<text x="50" y="54" font-size="26" fill="white" text-anchor="middle" dominant-baseline="middle">
+		  ${index + 1}
+		</text>
+	  </svg>
+	`
+	return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`
+}
+
+function findHeightByCoordinates (data, targetLng, targetLat) {
+	// 展平二维数组,然后查找第一个匹配的点
+	const allPoints = data.flat()
+	const point = allPoints.find(point =>
+		point.longitude === targetLng && point.latitude === targetLat
+	)
+
+	return point ? point.height : null
+}
+
+function renderingMachineNest (options) {
+	const { viewer, dockTransformPosition, dockPosition, data } = options
+	viewer.entities.add({
+		name: 'work-drone-route-point-dock',
+		position: dockTransformPosition,
+		billboard: {
+			image: endingOnlineImg,
+			width: 50,
+			height: 50,
+			disableDepthTestDistance: Number.POSITIVE_INFINITY,
+		},
+		customData: {
+			data,
+		},
+	})
+	viewer.entities.add({
+		name: 'work-drone-route--point-polyline',
+		position: dockTransformPosition,
+		polyline: getPolyLine(viewer, { value: [dockPosition] }, 0),
+	})
+}
+
+function renderingStartingPoint (options) {
+	const { viewer, startPosition, data } = options
+	viewer.entities.add({
+		name: 'work-drone-route-point-start',
+		position: startPosition,
+		billboard: {
+			image: rwqfdImg,
+			width: 50,
+			height: 50,
+			disableDepthTestDistance: Number.POSITIVE_INFINITY,
+		},
+		customData: {
+			data,
+		},
+	})
+}
 
 export default class CreateRouteLine {
 	/**
-	 * 
+	 *
 	 * @param {*} options 参数
 	 */
 	constructor(options) {
@@ -119,10 +176,9 @@
 
 	/**
 	 * 初始化viewer
-	 * @param {*} viewer 
+	 * @param {*} viewer
 	 */
 	initCreateRoute (viewer) {
-		indexLog = 0
 		this.viewer = viewer
 	}
 
@@ -138,24 +194,27 @@
 			const currentWaypointIndex = output?.ext['current_waypoint_index']
 
 			this.updataMultiNestData(sn, {
-				currentWaypointIndex
+				currentWaypointIndex,
 			})
 		}
 	}
 
 	/**
-	 * 请求航线文件数据并解析处理
+	 * 请求航线文件数据并绘制解析处理
 	 * @param {*} data 包含文件url等信息
-	 * @param {*} dronePosition 无人机位置
-	 * @returns  
+	 * @param {*} dockPosition 无人机位置
+	 * @returns
 	 */
-	async parsingFiles (data, dronePosition = null, isShowDock = false, isShowPointBillboard = true) {
+	async parsingFiles (data, dockPosition = null, isShowDock = false, isShowPointBillboard = true) {
+		console.log(data,'888')
 		const { url, wayline_type, device_sn } = data
-
-		if (!url) return dronePosition != null ? {
-			dronePosition: [{ lng: dronePosition.longitude, lat: dronePosition.latitude, alt: dronePosition.height }]
-		} : {}
-
+		indexLog = 0
+		if (!url)
+			return dockPosition != null
+				? {
+					dronePosition: [{ lng: dockPosition.longitude, lat: dockPosition.latitude, alt: dockPosition.height }],
+				}
+				: {}
 		this.updataMultiNestData(device_sn)
 
 		const res = await analyzeKmzFile(`${url}?_t=${new Date().getTime()}`)
@@ -178,16 +237,16 @@
 		const missionConfig = removeTextKey(waylinesXmlJson.missionConfig)
 		const waylinesXMLObj = removeTextKey(waylinesXmlJson.Folder)
 
-		if (templateType === "mapping3d") {
+		if (templateType === 'mapping3d') {
 			if (!waylinesXMLObj[0].Placemark.length) return ElMessage.error('没有航线点位')
 		} else {
 			if (!waylinesXMLObj.Placemark.length) return ElMessage.error('没有航线点位')
 		}
 
-		if ([2, 4, 5, 6, 7, 10].includes(Number(wayline_type))) {
-			if (templateType === "mapping3d") {
+		if ([2, 4, 5, 7, 10].includes(Number(wayline_type))) {
+			if (templateType === 'mapping3d') {
 				let morePolygonData = waylinesXMLObj.map(i => ({
-					data: i.Placemark
+					data: i.Placemark,
 				}))
 
 				let newPolygonData = getNewPolygonData(morePolygonData)
@@ -214,7 +273,7 @@
 					waylinesXMLObj[0],
 					missionConfig,
 					templateXmlJson,
-					dronePosition,
+					dockPosition,
 					data,
 					startPoint,
 					isShowDock,
@@ -227,7 +286,7 @@
 				waylinesXMLObj,
 				missionConfig,
 				templateXmlJson,
-				dronePosition,
+				dockPosition,
 				data,
 				startPoint,
 				isShowDock,
@@ -238,7 +297,7 @@
 			return this.drawPointRoute(
 				waylinesXMLObj,
 				missionConfig,
-				dronePosition,
+				dockPosition,
 				data,
 				startPoint,
 				isShowDock,
@@ -248,50 +307,231 @@
 		}
 	}
 
+	// 拆分航线
+	async splitWayLine (data, dronePosition = null, isShowDock = false, isShowPointBillboard = true) {
+		const {
+			pointPlacemark,
+			polygonList,
+			pointList,
+			templateType,
+			startPoint,
+			execute_height_mode,
+			auto_flight_speed,
+			take_off_security_height,
+			buffer_distance_meters,
+			missionConfig,
+			waylinesXMLObjR,
+		} = await analysisPointLineKmz(`${data.domain_url}${data.object_key}`)
+		const { positionArray, filePositions } = this.disposeData(
+			waylinesXMLObjR,
+			missionConfig,
+			null,
+			data,
+			startPoint,
+			0
+		)
+		let bigPointList = handlePointListForKmz({
+			placemark: pointPlacemark,
+			startPoint: startPoint,
+			execute_height_mode: execute_height_mode,
+			auto_flight_speed: auto_flight_speed,
+		})
+		// 路径线
+		let entityConfig
+		bigPointList.shift()
+		let flyPositions = bigPointList.map(i => [Number(i.longitude), Number(i.latitude), Number(i.height)])
+		// 渲染多个点
+		let firstTopPosition = null
+		let resultPosotions = []
+		await Promise.all(data.wayline_file_list.map(async (item, index) => {
+			// 小航线渲染线
+			const kmzUrl = import.meta.env.VITE_APP_AIRLINE_URL + item.object_key
+			const { pointList } = await analysisPointLineKmz(kmzUrl)
+			resultPosotions.push(pointList)
+		})).then(res => {
+			// 目的是区分大航线点属于哪条小航线
+			bigPointList.forEach(bigObj => {
+				let foundIndex = -1
+				// 遍历 resultPositions 查找匹配项
+				resultPosotions.some((subArray, subIndex) => {
+					const found = subArray.some(obj =>
+						obj.latitude === bigObj.latitude &&
+						obj.longitude === bigObj.longitude
+					)
+					if (found) {
+						foundIndex = subIndex
+						return true // 找到就停止搜索
+					}
+					return false
+				})
+				// 如果找到了,给 bigPointList 的对象添加标记
+				if (foundIndex !== -1) {
+					bigObj.log = foundIndex // 或 bigObj.index = foundIndex
+				}
+			})
+			console.log(bigPointList, '查看结果值') // 现在 bigPointList 会有 log 属性
+			bigPointList.map(async (i, index) => {
+				firstTopPosition = i
+				const position = Cesium.Cartesian3.fromDegrees(Number(i.longitude), Number(i.latitude), Number(findHeightByCoordinates(resultPosotions, i.longitude, i.latitude)))
+				const combinedImage = await createCombinedSVG(index, i.log % 2 ? newStartPoint : newStartPointMore)
+
+				entityConfig = {
+					name: 'work-drone-route-point-split',
+					position: position,
+					billboard: {
+						disableDepthTestDistance: Number.POSITIVE_INFINITY,
+						image: combinedImage,
+						width: 50,
+						height: 50,
+						verticalOrigin: Cesium.VerticalOrigin.CENTER,
+						horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
+					}
+				}
+
+				// 只在第一个点添加 label
+				if (index === 0) {
+					entityConfig.label = {
+						text: data.task_name || '',
+						font: 'bold 16px sans-serif',
+						fillColor: data.status === 2 ? runningTextColor : pendingTextColor,
+						pixelOffset: data.status === 2 ? runningTextOffset : pendingTextOffset,
+						style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+						outlineWidth: 2,
+						outlineColor: Cesium.Color.BLACK,
+						disableDepthTestDistance: Number.POSITIVE_INFINITY,
+					}
+				}
+
+				this.viewer.entities.add(entityConfig)
+			})
+		})
+
+		// 渲染航线
+		data.wayline_file_list.map(async (item, index) => {
+			// 小航线渲染线
+			const kmzUrl = import.meta.env.VITE_APP_AIRLINE_URL + item.object_key
+			const { pointList } = await analysisPointLineKmz(kmzUrl)
+			// if (curRouteLineData.value.droneData && splitLines.length === 1) {
+			// 	// 把pointList的第一个点替换为无人机位置
+			// 	pointList[0] = curRouteLineData.value.droneData[0]
+			// }
+			if (take_off_security_height + pointList[0].height > firstTopPosition.height) {
+				// 安全高度+机巢高度 > 第一个点高度
+				const positionTest = {
+					longitude: pointList[0].longitude,
+					latitude: pointList[0].latitude,
+					height: take_off_security_height + pointList[0].height,
+				}
+
+				const positionTest1 = {
+					longitude: pointList[1].longitude,
+					latitude: pointList[1].latitude,
+					height: take_off_security_height + pointList[0].height,
+				}
+				pointList.splice(1, 0, positionTest)
+				// 往数组中插入元素
+				pointList.splice(2, 0, positionTest1)
+				// console.log(pointList, 'pointList')
+			} else if (take_off_security_height + pointList[0].height < firstTopPosition.height) {
+				const positionTest = {
+					longitude: pointList[0].longitude,
+					latitude: pointList[0].latitude,
+					height: firstTopPosition.height,
+				}
+				pointList.splice(1, 0, positionTest)
+			}
+			const routePositions = pointList.map(i =>
+				Cesium.Cartesian3.fromDegrees(Number(i.longitude), Number(i.latitude), Number(i.height))
+			)
+
+			this.viewer.entities.add({
+				name: 'work-drone-route-line-split',
+				polyline: {
+					width: 4,
+					positions: routePositions,
+					material: data.status === 1 ? arrowLineMaterialPropertyGray : getLineColor(index + 1),
+					clampToGround: false,
+				},
+			})
+		})
+			// 落点线
+			; (bigPointList || [])?.forEach((item, index) => {
+				const topPosition = Cesium.Cartesian3.fromDegrees(
+					Number(item.longitude),
+					Number(item.latitude),
+					Number(item.height)
+				)
+				let setting = {
+					name: 'work-drone-route--planar-polyline-split',
+					position: topPosition,
+					polyline: getPolyLine(this.viewer, { value: bigPointList }, index),
+				}
+				this.viewer.entities.add(setting)
+			})
+		return {
+			entity: entityConfig,
+			routeLinePositions: positionArray,
+			filePositions:
+				dronePosition != null
+					? [{ lng: dronePosition.longitude, lat: dronePosition.latitude, alt: dronePosition.height }, ...filePositions]
+					: filePositions,
+		}
+	}
+
 	/**
 	 * 绘制面状航线
 	 * @param {*} lineObj 航线文件中的
 	 * @param {*} missionConfig 航线文件中的
 	 * @param {*} templateXmlJson 航线文件中的
-	 * @param {*} dronePosition 无人机位置
-	 * @param {*} data 
-	 * @param {*} startPoint 
-	 * @param {*} isShowPointBillboard 是否显示,航线起飞点,终点等标注
-	 * @returns 
+	 * @param {*} dockPosition 无人机位置
+	 * @param {*} data
+	 * @param {*} startPoint
+	 * @returns
 	 */
-	async drawPlanarRoute (lineObj, missionConfig, templateXmlJson, dronePosition, data, startPoint, isShowDock, isShowPointBillboard, wayline_type) {
-		const { positionArray, filePositions } = this.disposeData(lineObj, missionConfig, dronePosition, data, startPoint, wayline_type)
+	async drawPlanarRoute (
+		lineObj,
+		missionConfig,
+		templateXmlJson,
+		dockPosition,
+		data,
+		startPoint,
+		isShowDock,
+		isShowPointBillboard,
+		wayline_type
+	) {
+		const { positionArray, filePositions } = this.disposeData(
+			lineObj,
+			missionConfig,
+			dockPosition,
+			data,
+			startPoint,
+			wayline_type
+		)
 		const { device_sn } = data
 
-		const droneTransformPosition = Cesium.Cartesian3.fromDegrees(
-			Number(dronePosition.longitude),
-			Number(dronePosition.latitude),
-			Number(dronePosition.height),
+		const dockTransformPosition = Cesium.Cartesian3.fromDegrees(
+			Number(dockPosition.longitude),
+			Number(dockPosition.latitude),
+			Number(dockPosition.height)
 		)
 
 		let coordArr = null
 
 		const placemark = templateXmlJson.Folder?.Placemark
 		// 取出点位
-		const coordinates =
-			placemark.Polygon?.outerBoundaryIs.LinearRing.coordinates?.[
-				'#text'
-			]?.split('\n') || []
-
+		const coordinates = placemark.Polygon?.outerBoundaryIs.LinearRing.coordinates?.['#text']?.split('\n') || []
 		// 数组转换
-		coordArr = coordinates.map((coordinate) =>
+		coordArr = coordinates.map(coordinate =>
 			coordinate
 				.replace(/\s+/g, '')
 				.split(',')
-				.map((v) => Number(v)),
+				.map(v => Number(v))
 		)
 
 		// 获取当前经纬度绝对高度
-		let newCoordArr = coordArr.map(item => ([item[0], item[1], 0]))
-
+		let newCoordArr = coordArr.map(item => [item[0], item[1], 0])
 		let planarRouteEntity = this.viewer.entities.add({
 			name: 'work-drone-route-planar-polyline',
-
 			polyline: {
 				width: 3,
 				positions: positionArray,
@@ -300,30 +540,30 @@
 			},
 
 			customData: {
-				data
-			}
+				data,
+			},
 		})
 
 		let droppointPositions = (filePositions || [])?.map(i => ({
 			longitude: Number(i.lng),
 			latitude: Number(i.lat),
 			height: Number(i.alt),
-		}));
+		}))
 
-		// 落点线
-		(droppointPositions || [])?.forEach((item, index) => {
-			const topPosition = Cesium.Cartesian3.fromDegrees(
-				Number(item.longitude),
-				Number(item.latitude),
-				Number(item.height)
-			)
-			let setting = {
-				name: 'work-drone-route-planar-polyline',
-				position: topPosition,
-				polyline: getPolyLine(this.viewer, { value: droppointPositions }, index),
-			}
-			this.viewer.entities.add(setting)
-		})
+			// 落点线
+			; (droppointPositions || [])?.forEach((item, index) => {
+				const topPosition = Cesium.Cartesian3.fromDegrees(
+					Number(item.longitude),
+					Number(item.latitude),
+					Number(item.height)
+				)
+				let setting = {
+					name: 'work-drone-route--planar-polyline',
+					position: topPosition,
+					polyline: getPolyLine(this.viewer, { value: droppointPositions }, index),
+				}
+				this.viewer.entities.add(setting)
+			})
 
 		// 面状航线第一个点突出展示
 		isShowPointBillboard && this.startingIncreasePoint(positionArray)
@@ -340,9 +580,7 @@
 			name: 'work-drone-route-planar-border',
 
 			polyline: {
-				positions: Cesium.Cartesian3.fromDegreesArrayHeights(
-					cloneCoordArr.flat(),
-				),
+				positions: Cesium.Cartesian3.fromDegreesArrayHeights(cloneCoordArr.flat()),
 				width: 4,
 				material: new Cesium.PolylineOutlineMaterialProperty({
 					color: new Cesium.Color.fromBytes(74, 138, 233),
@@ -357,11 +595,8 @@
 		// 绘制面状地块--------------------
 		this.viewer.entities.add({
 			name: 'work-drone-route-planar-polygon',
-
 			polygon: {
-				hierarchy: Cesium.Cartesian3.fromDegreesArrayHeights(
-					newCoordArr.flat(),
-				),
+				hierarchy: Cesium.Cartesian3.fromDegreesArrayHeights(newCoordArr.flat()),
 				material: new Cesium.Color.fromBytes(75, 159, 221, 100),
 				outline: true,
 				outlineColor: new Cesium.Color.fromBytes(35, 85, 216, 255),
@@ -384,7 +619,7 @@
 
 				label: {
 					text: data.job_name || '',
-					font: 'bold 16px YouSheBiaoTiHei',
+					font: 'bold 16px sans-serif',
 					fillColor: Cesium.Color.WHITE,
 					pixelOffset: new Cesium.Cartesian2(0, -50),
 					style: Cesium.LabelStyle.FILL_AND_OUTLINE,
@@ -395,64 +630,31 @@
 			})
 		} else {
 			// 显示机巢位置
-			if (isShowDock) {
-				// 起点
-				this.viewer.entities.add({
-					name: 'work-drone-route-point-dock',
-
-					position: droneTransformPosition,
-
-					billboard: {
-						image: endingOnlineImg,
-						width: 50,
-						height: 50,
-						disableDepthTestDistance: Number.POSITIVE_INFINITY,
-					},
-
-					customData: {
-						data
-					}
-				})
-
-				this.viewer.entities.add({
-					name: 'work-drone-route--point-polyline',
-					position: droneTransformPosition,
-					polyline: getPolyLine(this.viewer, { value: [dronePosition] }, 0),
-				})
-			}
-
-			const startPosition = Cesium.Cartesian3.fromDegrees(
-				Number(filePositions[0].lng),
-				Number(filePositions[0].lat),
-				Number(filePositions[0].alt)
-			)
-
+			isShowDock && renderingMachineNest({
+				viewer: this.viewer,
+				dockTransformPosition,
+				dockPosition,
+				data
+			})
 			// 起点
-			isShowPointBillboard && this.viewer.entities.add({
-				name: 'work-drone-route-point-start',
-
-				position: startPosition,
-
-				billboard: {
-					image: rwqfdImg,
-					width: 50,
-					height: 50,
-					disableDepthTestDistance: Number.POSITIVE_INFINITY,
-				},
-
-				customData: {
-					data
-				}
+			isShowPointBillboard && renderingStartingPoint({
+				viewer: this.viewer,
+				startPosition: Cesium.Cartesian3.fromDegrees(
+					Number(filePositions[0].lng),
+					Number(filePositions[0].lat),
+					Number(filePositions[0].alt)
+				),
+				data
 			})
 		}
 
 		return {
 			entity: planarRouteEntity,
 			routeLinePositions: positionArray,
-			filePositions: dronePosition != null ? [
-				{ lng: dronePosition.longitude, lat: dronePosition.latitude, alt: dronePosition.height },
-				...filePositions
-			] : filePositions
+			filePositions:
+				dockPosition != null
+					? [{ lng: dockPosition.longitude, lat: dockPosition.latitude, alt: dockPosition.height }, ...filePositions]
+					: filePositions,
 		}
 	}
 
@@ -472,9 +674,7 @@
 
 		let setting = {
 			name: 'work-drone-route-planar-start',
-
 			position: positions,
-
 			billboard: {
 				image: this.planarBillboard('#2D8CF0'),
 				pixelOffset: new Cesium.Cartesian2(146, 72),
@@ -489,35 +689,48 @@
 	 * 绘制点航线
 	 * @param {*} lineObj 航线文件中的
 	 * @param {*} missionConfig 航线文件中的
-	 * @param {*} dronePosition 无人机位置
+	 * @param {*} dockPosition 无人机位置
 	 * @param {*} data 任务信息,航线地址等
-	 * @param {*} startPoint 
+	 * @param {*} startPoint
 	 * @param {*} isShowDock 是否显示机巢位置
-	 * @param {*} isShowPointBillboard 是否显示,航线起飞点,终点等标注
-	 * @returns 
+	 * @returns
 	 */
-	async drawPointRoute (lineObj, missionConfig, dronePosition, data, startPoint, isShowDock, isShowPointBillboard, wayline_type) {
-		const { positionArray, filePositions } = this.disposeData(lineObj, missionConfig, dronePosition, data, startPoint, wayline_type)
-		
-		const droneTransformPosition = Cesium.Cartesian3.fromDegrees(
-			Number(dronePosition.longitude),
-			Number(dronePosition.latitude),
-			Number(dronePosition.height),
+	async drawPointRoute (
+		lineObj,
+		missionConfig,
+		dockPosition,
+		data,
+		startPoint,
+		isShowDock,
+		isShowPointBillboard,
+		wayline_type
+	) {
+		const { positionArray, filePositions } = this.disposeData(
+			lineObj,
+			missionConfig,
+			dockPosition,
+			data,
+			startPoint,
+			wayline_type
 		)
 
+		const dockTransformPosition = Cesium.Cartesian3.fromDegrees(
+			Number(dockPosition.longitude),
+			Number(dockPosition.latitude),
+			Number(dockPosition.height)
+		)
 		// 路径线
 		let polyline
-		
+
+		indexLog = indexLog + 1
 
 		if (this.type === 'clusterScheduling') {
 			filePositions.forEach((item, index) => {
 				let position = Cesium.Cartesian3.fromDegrees(item.lng, item.lat, item.alt)
-
 				if (index === 0) {
 					this.viewer.entities.add({
 						name: 'work-drone-route-point-start',
 						position,
-
 						billboard: {
 							image: rwqfdImg,
 							outlineWidth: 0,
@@ -525,10 +738,9 @@
 							height: 50,
 							disableDepthTestDistance: Number.POSITIVE_INFINITY,
 						},
-
 						label: {
 							text: data.job_name || '',
-							font: 'bold 16px YouSheBiaoTiHei',
+							font: 'bold 16px sans-serif',
 							fillColor: data.type === 2 ? runningTextColor : pendingTextColor,
 							pixelOffset: data.type === 2 ? runningTextOffset : pendingTextOffset,
 							style: Cesium.LabelStyle.FILL_AND_OUTLINE,
@@ -540,9 +752,7 @@
 				} else if (index === filePositions.length - 1) {
 					this.viewer.entities.add({
 						name: 'work-drone-route-point-end',
-
 						position,
-
 						billboard: {
 							image: newEndPointImg,
 							outlineWidth: 0,
@@ -556,9 +766,7 @@
 				} else {
 					this.viewer.entities.add({
 						name: 'work-drone-route-point-approach',
-
 						position,
-
 						billboard: {
 							image: newNumPoint,
 							width: 50,
@@ -577,96 +785,56 @@
 					})
 				}
 			})
-
 			polyline = this.viewer.entities.add({
 				name: 'work-drone-route-point-polyline',
-
 				polyline: {
 					width: 4,
 					positions: positionArray,
-					material: data.type === 2 ? runningLineMaterial : pendingLineMaterial,
+					material: data.type === 2 ? getLineColor(indexLog) : arrowLineMaterialPropertyGray,
 					clampToGround: false,
-				}
+				},
 			})
 		} else {
 			// 显示机巢位置
-			if (isShowDock) {
-				// 起点
-				this.viewer.entities.add({
-					name: 'work-drone-route-point-dock',
-
-					position: droneTransformPosition,
-
-					billboard: {
-						image: endingOnlineImg,
-						width: 50,
-						height: 50,
-						disableDepthTestDistance: Number.POSITIVE_INFINITY,
-					},
-
-					customData: {
-						data
-					}
-				})
-
-				this.viewer.entities.add({
-					name: 'work-drone-route--point-polyline',
-					position: droneTransformPosition,
-					polyline: getPolyLine(this.viewer, { value: [dronePosition] }, 0),
-				})
-			}
-
-			const startPosition = Cesium.Cartesian3.fromDegrees(
-				Number(filePositions[0].lng),
-				Number(filePositions[0].lat),
-				Number(filePositions[0].alt)
-			)
-
+			isShowDock && renderingMachineNest({
+				viewer: this.viewer,
+				dockTransformPosition,
+				dockPosition
+			})
 			// 起点
-			isShowPointBillboard && this.viewer.entities.add({
-				name: 'work-drone-route-point-start',
-
-				position: startPosition,
-
-				billboard: {
-					image: rwqfdImg,
-					width: 50,
-					height: 50,
-					disableDepthTestDistance: Number.POSITIVE_INFINITY,
-				},
-
-				customData: {
-					data
-				}
+			isShowPointBillboard && renderingStartingPoint({
+				viewer: this.viewer,
+				startPosition: Cesium.Cartesian3.fromDegrees(
+					Number(filePositions[0].lng),
+					Number(filePositions[0].lat),
+					Number(filePositions[0].alt)
+				),
+				data
 			})
-
 			// 终点
-			isShowPointBillboard && this.viewer.entities.add({
-				name: 'work-drone-route-point-end',
-
-				position: positionArray[positionArray.length - 1],
-
-				billboard: {
-					image: new Cesium.ConstantProperty(endPointImg),
-					width: 30,
-					height: 30,
-					verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // 底部对齐
-				},
-			})
-
+			isShowPointBillboard &&
+				this.viewer.entities.add({
+					name: 'work-drone-route-point-end',
+					position: positionArray[positionArray.length - 1],
+					billboard: {
+						image: new Cesium.ConstantProperty(endPointImg),
+						width: 30,
+						height: 30,
+						verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // 底部对齐
+					},
+				})
+			console.log(data.status, '失败')
 			polyline = this.viewer.entities.add({
 				name: 'work-drone-route-point-polyline',
-
 				polyline: {
 					width: 4,
 					positions: positionArray,
-					material: getLineColor(indexLog),
+					material: data.status === 5 ? arrowLineMaterialPropertyGray : getLineColor(indexLog),
 					clampToGround: false,
 				},
-
 				customData: {
-					data
-				}
+					data,
+				},
 			})
 		}
 
@@ -674,47 +842,45 @@
 			longitude: Number(i.lng),
 			latitude: Number(i.lat),
 			height: Number(i.alt),
-		}));
+		}))
 
-		// 落点线
-		(droppointPositions || [])?.forEach((item, index) => {
-			const topPosition = Cesium.Cartesian3.fromDegrees(
-				Number(item.longitude),
-				Number(item.latitude),
-				Number(item.height)
-			)
+			// 落点线
+			; (droppointPositions || [])?.forEach((item, index) => {
+				const topPosition = Cesium.Cartesian3.fromDegrees(
+					Number(item.longitude),
+					Number(item.latitude),
+					Number(item.height)
+				)
 
-			let setting = {
-				name: 'work-drone-route-point-polyline',
-				position: topPosition,
-				polyline: getPolyLine(this.viewer, { value: droppointPositions }, index),
-			}
-			this.viewer.entities.add(setting)
-		})
+				let setting = {
+					name: 'work-drone-route--point-polyline',
+					position: topPosition,
+					polyline: getPolyLine(this.viewer, { value: droppointPositions }, index),
+				}
+				this.viewer.entities.add(setting)
+			})
 
 		return {
 			entity: polyline,
 			routeLinePositions: positionArray,
-			filePositions: dronePosition != null ? [
-				{ lng: dronePosition.longitude, lat: dronePosition.latitude, alt: dronePosition.height },
-				...filePositions
-			] : filePositions,
+			filePositions:
+				dockPosition !== null
+					? [{ lng: dockPosition.longitude, lat: dockPosition.latitude, alt: dockPosition.height }, ...filePositions]
+					: filePositions,
 		}
 	}
 
 	/**
 	 * 通用处理数据
-	 * @param {*} lineObj 
-	 * @param {*} missionConfig 
-	 * @param {*} dronePosition 
-	 * @param {*} startPoint 
+	 * @param {*} lineObj
+	 * @param {*} missionConfig
+	 * @param {*} dronePosition
+	 * @param {*} startPoint
 	 * @returns {} {positionArray: 带拼接点位置, filePositions:光航线点位置}
 	 */
 	disposeData (lineObj, missionConfig, dronePosition, data, startPoint, wayline_type) {
-		indexLog = indexLog + 1
 		const { device_sn } = data
-
-		const executeHeightMode = lineObj.executeHeightMode === "WGS84"
+		const executeHeightMode = lineObj.executeHeightMode === 'WGS84'
 
 		let filePositions = lineObj.Placemark.map(item => {
 			const [lng, lat] = item.Point.coordinates.split(',')
@@ -730,12 +896,14 @@
 		let safetyHeight
 
 		if (executeHeightMode) {
-			let startHeight = new Decimal(missionConfig.takeOffSecurityHeight)
-				.plus(dronePosition.height).toNumber()
+			let startHeight = new Decimal(missionConfig.takeOffSecurityHeight).plus(dronePosition?.height || 0).toNumber()
 
 			safetyHeight = startHeight < filePositions[0].alt ? filePositions[0].alt : startHeight
 		} else {
-			safetyHeight = missionConfig.takeOffSecurityHeight < filePositions[0].alt ? filePositions[0].alt : missionConfig.takeOffSecurityHeight
+			safetyHeight =
+				missionConfig.takeOffSecurityHeight < filePositions[0].alt
+					? filePositions[0].alt
+					: missionConfig.takeOffSecurityHeight
 		}
 
 		let safetyPositions = []
@@ -773,28 +941,38 @@
 		})
 
 		this.updataMultiNestData(device_sn, {
-			currentRoutePositions
+			currentRoutePositions,
 		})
 
 		if ([0].includes(wayline_type)) {
-			let startHeight = executeHeightMode ? filePositions[0].alt : filePositions[0].alt + (dronePosition != null ? dronePosition.height : 0)
-			let endHeight = executeHeightMode ? filePositions[1].alt : filePositions[1].alt + (dronePosition != null ? dronePosition.height : 0)
+			let startHeight = executeHeightMode
+				? filePositions[0].alt
+				: filePositions[0].alt + (dronePosition != null ? dronePosition.height : 0)
+			let endHeight = executeHeightMode
+				? filePositions[1].alt
+				: filePositions[1].alt + (dronePosition != null ? dronePosition.height : 0)
 
 			this.updataMultiNestData(device_sn, {
 				showPopupPosition: Cesium.Cartesian3.midpoint(
 					Cesium.Cartesian3.fromDegrees(filePositions[0].lng, filePositions[0].lat, startHeight),
 					Cesium.Cartesian3.fromDegrees(filePositions[1].lng, filePositions[1].lat, endHeight),
-					new Cesium.Cartesian3())
+					new Cesium.Cartesian3()
+				),
 			})
 		} else {
-			let startHeight = executeHeightMode ? safetyPositions[1].alt : safetyPositions[1].alt + (dronePosition != null ? dronePosition.height : 0)
-			let endHeight = executeHeightMode ? safetyPositions[2].alt : safetyPositions[2].alt + (dronePosition != null ? dronePosition.height : 0)
+			let startHeight = executeHeightMode
+				? safetyPositions[1].alt
+				: safetyPositions[1].alt + (dronePosition != null ? dronePosition.height : 0)
+			let endHeight = executeHeightMode
+				? safetyPositions[2].alt
+				: safetyPositions[2].alt + (dronePosition != null ? dronePosition.height : 0)
 
 			this.updataMultiNestData(device_sn, {
 				showPopupPosition: Cesium.Cartesian3.midpoint(
 					Cesium.Cartesian3.fromDegrees(safetyPositions[1].lng, safetyPositions[1].lat, startHeight),
 					Cesium.Cartesian3.fromDegrees(safetyPositions[2].lng, safetyPositions[2].lat, endHeight),
-					new Cesium.Cartesian3())
+					new Cesium.Cartesian3()
+				),
 			})
 		}
 
@@ -805,9 +983,9 @@
 
 				return {
 					...item,
-					alt: Number(height)
+					alt: Number(height),
 				}
-			})
+			}),
 		}
 	}
 
@@ -819,9 +997,10 @@
 			return i?.name && i?.name.includes('work-drone-route-')
 		})
 
-		Array.isArray(entities) && entities.forEach(item => {
-			this.viewer?.entities.remove(item)
-		})
+		Array.isArray(entities) &&
+			entities.forEach(item => {
+				this.viewer?.entities.remove(item)
+			})
 	}
 
 	// 当前无人机视椎体相关
@@ -847,11 +1026,22 @@
 				['wide', 'ir', 'zoom'].includes(curDroneData?.camera_type)
 			) {
 				if (curDroneData.camera_type === 'wide') {
-					fov = 60
+					fov = 65
 				} else {
-					const diffFocal = zoomFactor.value[curDroneData.camera_type].max - getZoomFactor(host?.cameras?.[0], curDroneData.camera_type)
-
-					fov = (60 / zoomFactor.value[curDroneData.camera_type].max) * (diffFocal === 0 ? 1 : diffFocal)
+					const cameraMultiplier = getZoomFactor(host?.cameras?.[0], curDroneData.camera_type)
+					switch (cameraMultiplier) {
+						case 2: fov = 30; break
+						case 3: fov = 19; break
+						case 4: fov = 15; break
+						case 5: fov = 13; break
+						case 6: fov = 11; break
+						case 7: fov = 9; break
+						case 8: fov = 8.34; break
+						case 9: fov = 7.68; break
+						case 10: fov = 6.9; break
+						case 14: fov = 5; break
+						default: fov = 55.946 * Math.exp(-0.4504 * cameraMultiplier) + 6.323
+					}
 				}
 			}
 
@@ -871,8 +1061,8 @@
 					pitch: 0,
 					heading: attitude_head,
 
-					isShowVideoPlan: this.isShowVideoPlan
-				})
+					isShowVideoPlan: this.isShowVideoPlan,
+				}),
 			})
 		}
 	}
@@ -882,7 +1072,7 @@
 
 		if (device_sn && live_status) {
 			this.updataMultiNestData(device_sn, {
-				camera_type: live_status?.[0].video_type || 'wide'
+				camera_type: live_status?.[0].video_type || 'wide',
 			})
 		}
 	}
@@ -897,14 +1087,9 @@
 		}
 	}
 
+	// 设置当前无人机视椎体信息面板
 	setFrustumInfoDetails (data) {
-		const {
-			dock_sn,
-			distance_to_airport,
-			distance_to_next_point,
-			estimated_time_to_next_point,
-			plane_mileage
-		} = data
+		const { dock_sn, distance_to_airport, distance_to_next_point, estimated_time_to_next_point, plane_mileage } = data
 
 		if (dock_sn) {
 			const aircraftEntity = this.viewer?.entities.values.find(i => {
@@ -924,7 +1109,9 @@
 				}
 
 				aircraftEntity.label = new Cesium.LabelGraphics({
-					text: `离机场平面距离:${distance_to_airport}m\n离下个航点平面距离:${Math.round(distance_to_next_point)}m\n到达下个航点剩余时间:${arrivalTime}\n航线总平面里程:${Math.round(plane_mileage)}m`,
+					text: `离机场平面距离:${distance_to_airport}m\n离下个航点平面距离:${Math.round(
+						distance_to_next_point
+					)}m\n到达下个航点剩余时间:${arrivalTime}\n航线总平面里程:${Math.round(plane_mileage)}m`,
 					font: '13px monospace',
 					showBackground: true,
 					horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
@@ -936,7 +1123,6 @@
 
 				return
 			}
-
 		}
 	}
 
@@ -954,8 +1140,10 @@
 		}
 	}
 
+	// 设置无人机模型
 	setAircraftGltf (host) {
 		const parent_sn = host?.parent_sn
+		const attitude_head = Number(host?.payloads?.[0]?.gimbal_yaw) - 90 || 0
 
 		if (parent_sn) {
 			const aircraftEntity = this.viewer?.entities.values.find(i => {
@@ -963,9 +1151,18 @@
 			})
 
 			const position = Cesium.Cartesian3.fromDegrees(host?.longitude, host?.latitude, host?.height)
+			// ✅ 新增:Heading / Pitch / Roll(单位:度 -> 弧度)
+			const heading = Cesium.Math.toRadians(attitude_head) // 航向角
+			const pitch = Cesium.Math.toRadians(0)     // 俯仰角
+			const roll = Cesium.Math.toRadians(0)       // 横滚角
+
+			// ✅ 新增:构造 HeadingPitchRoll 和 四元数
+			const hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll)
+			const orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpr)
 
 			if (aircraftEntity) {
 				aircraftEntity.position = new Cesium.ConstantPositionProperty(position)
+				aircraftEntity.orientation = new Cesium.ConstantProperty(orientation)
 
 				return
 			}
@@ -974,18 +1171,35 @@
 				this.viewer?.entities.add({
 					name: `aircraft-glf-${parent_sn}`,
 					position,
+					orientation,
 					label: {},
 					model: {
 						uri: aircraftGltf, // 或 .glb
-						scale: 1.0, // 缩放比例
+						scale: 64, // 缩放比例
 						minimumPixelSize: 64, // 最小像素尺寸(保证模型远处可见)
-						maximumScale: 128, // 最大缩放(可选)
+						maximumScale: 64, // 最大缩放(可选)
 					},
 				})
 			}
 		}
 	}
 
+	// 移除无人机模型
+	removeAircraftGltf (host) {
+		const parent_sn = host?.parent_sn
+
+		if (parent_sn) {
+			const aircraftEntity = this.viewer?.entities.values.find(i => {
+				return i?.name && i?.name.includes(`aircraft-glf-${parent_sn}`)
+			})
+
+			if (aircraftEntity) {
+				this.viewer?.entities.remove(aircraftEntity)
+			}
+		}
+	}
+
+	// 移除所有无人机视椎体
 	removeViewInfoFrustum () {
 		this.multiNestData.forEach(item => {
 			if ('viewInfoFrustum' in item && item.viewInfoFrustum) {
@@ -1010,9 +1224,10 @@
 				return i?.name && i?.name.includes(`aircraft-glf-${parent_sn}`)
 			})
 
-			Array.isArray(entities) && entities.forEach(item => {
-				this.viewer?.entities.remove(item)
-			})
+			Array.isArray(entities) &&
+				entities.forEach(item => {
+					this.viewer?.entities.remove(item)
+				})
 		}
 	}
 
@@ -1021,13 +1236,15 @@
 			return i?.name && i?.name.includes(`aircraft-glf-`)
 		})
 
-		Array.isArray(entities) && entities.forEach(item => {
-			this.viewer?.entities.remove(item)
-		})
+		Array.isArray(entities) &&
+			entities.forEach(item => {
+				this.viewer?.entities.remove(item)
+			})
 
-		this.multiNestData.length > 0 && (this.multiNestData.forEach(item => {
-			item.viewInfoFrustum?.clear()
-		}))
+		this.multiNestData.length > 0 &&
+			this.multiNestData.forEach(item => {
+				item.viewInfoFrustum?.clear()
+			})
 	}
 
 	/**
@@ -1043,19 +1260,19 @@
 			this.multiNestData[isHaveInd] = {
 				...this.multiNestData[isHaveInd],
 
-				...data
+				...data,
 			}
 		} else {
 			this.multiNestData.push({
 				device_sn,
-				...data
+				...data,
 			})
 		}
 	}
 
 	/**
 	 * 根据机巢sn获取当前机巢对应的相关信息
-	 * @param {*} device_sn 
+	 * @param {*} device_sn
 	 */
 	getCurDroneData (device_sn) {
 		const isHave = this.multiNestData.find(item => item.device_sn === device_sn)
@@ -1071,14 +1288,16 @@
 			return {
 				...item,
 				show: true,
-				uuid: uuidv4()
+				uuid: uuidv4(),
 			}
 		})
 		this.viewer.scene.postRender.addEventListener(that.labelBoxRenderHandler)
 	}
 
 	showSingleDetailMapPopup (data) {
-		this.detailsMapPopupData.forEach(i => i.job_id === data.job_id && i.device_sn === data.device_sn && (i.show = true))
+		this.detailsMapPopupData.forEach(
+			i => i?.job_id === data?.job_id && i?.device_sn === data?.device_sn && (i.show = true)
+		)
 	}
 
 	getLabelDom (data) {
@@ -1090,28 +1309,30 @@
 		tooltipContainer.style.position = 'absolute'
 		tooltipContainer.style.transform = 'translate(-50%,10%)'
 		tooltipContainer.style.pointerEvents = 'none'
-		document.querySelector('.content-map-popups')?.append(tooltipContainer)
+		document.querySelector('.content-map-popups').append(tooltipContainer)
 		render(vNode, tooltipContainer)
 		return tooltipContainer
 	}
 
 	labelBoxRender () {
-		this.detailsMapPopupData.filter(i => i.show === true).forEach(item => {
-			const { showPopupPosition } = this.getCurDroneData(item.device_sn)
+		this.detailsMapPopupData
+			.filter(i => i.show === true)
+			.forEach(item => {
+				const { showPopupPosition } = this.getCurDroneData(item.device_sn)
 
-			let dom = document.querySelector(`[id="${item.uuid}"]`)
+				let dom = document.querySelector(`[id="${item.uuid}"]`)
 
-			if (!dom) {
-				dom = this.getLabelDom(item)
-			}
+				if (!dom) {
+					dom = this.getLabelDom(item)
+				}
 
-			const screenPosition = this.viewer?.scene.cartesianToCanvasCoordinates(showPopupPosition)
-			if (screenPosition) {
-				dom.style.left = `${screenPosition.x}px`
-				dom.style.top = `${screenPosition.y}px`
-				dom.style.display = 'block'
-			}
-		})
+				const screenPosition = this.viewer?.scene.cartesianToCanvasCoordinates(showPopupPosition)
+				if (screenPosition) {
+					dom.style.left = `${screenPosition.x}px`
+					dom.style.top = `${screenPosition.y}px`
+					dom.style.display = 'block'
+				}
+			})
 	}
 
 	// 移除弹框标签
@@ -1137,4 +1358,4 @@
 		const that = this
 		that.viewer?.scene.postRender.removeEventListener(that.labelBoxRenderHandler)
 	}
-}
\ No newline at end of file
+}
diff --git a/applications/drone-command/src/utils/cesium/eventBus.js b/applications/drone-command/src/utils/cesium/eventBus.js
deleted file mode 100644
index 674e1dc..0000000
--- a/applications/drone-command/src/utils/cesium/eventBus.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import mitt from 'mitt'
-
-const emitter = mitt()
-
-export default emitter
diff --git a/applications/drone-command/src/utils/cesium/frustum/CesiumVideoFrustum.js b/applications/drone-command/src/utils/cesium/frustum/CesiumVideoFrustum.js
new file mode 100644
index 0000000..6dd75b8
--- /dev/null
+++ b/applications/drone-command/src/utils/cesium/frustum/CesiumVideoFrustum.js
@@ -0,0 +1,712 @@
+/*
+ * @Author       : yuan
+ * @Date         : 2025-08-16 17:01:46
+ * @LastEditors  : yuan
+ * @LastEditTime : 2025-09-26 16:27:20
+ * @FilePath     : \src\utils\cesium\frustum\CesiumVideoFrustum.js
+ * @Description  :
+ * Copyright 2025 OBKoro1, All Rights Reserved.
+ * 2025-08-16 17:01:46
+ */
+import * as Cesium from 'cesium'
+
+var videoShed3dShader = `
+uniform float ztzf_frustum_opacity;
+
+uniform sampler2D ztzf_frustum_videoTexture;
+uniform sampler2D ztzf_frustum_maskTexture;
+uniform vec4 ztzf_frustum_hiddenAreaColor;
+
+uniform sampler2D shadowMap_texture;
+uniform mat4 shadowMap_matrix;
+uniform vec4 shadowMap_lightPositionEC;
+uniform vec4 shadowMap_texelSizeDepthBias;
+uniform vec4 shadowMap_normalOffsetScale;
+uniform bool ztzf_frustum_flipx;
+uniform bool ztzf_frustum_flipy;
+
+// 新增边框参数
+uniform vec4 ztzf_frustum_borderColor;  // 边框颜色(RGBA)
+uniform float ztzf_frustum_borderWidth; // 边框宽度(0.0-1.0)
+
+uniform sampler2D colorTexture;
+uniform sampler2D depthTexture;
+in vec2 v_textureCoordinates;
+
+vec4 toEye(in vec2 uv, in float depth) {
+  vec2 xy = vec2((uv.x * 2.0 - 1.0), (uv.y * 2.0 - 1.0));
+  vec4 posInCamera = czm_inverseProjection * vec4(xy, depth, 1.0);
+  posInCamera = posInCamera / posInCamera.w;
+  return posInCamera;
+}
+
+float getDepthMars3D(in vec4 depth) {
+  float z_window = czm_unpackDepth(depth);
+  z_window = czm_reverseLogDepth(z_window);
+  float n_range = czm_depthRange.near;
+  float f_range = czm_depthRange.far;
+  return (2.0 * z_window - n_range - f_range) / (f_range - n_range);
+}
+float _czm_sampleShadowMap(sampler2D shadowMap, vec2 uv) {
+  return texture(shadowMap, uv).r;
+}
+float _czm_shadowDepthCompare(sampler2D shadowMap, vec2 uv, float depth) {
+  return step(depth, _czm_sampleShadowMap(shadowMap, uv));
+}
+float _czm_shadowVisibility(sampler2D shadowMap, czm_shadowParameters shadowParameters) {
+  float depthBias = shadowParameters.depthBias;
+  float depth = shadowParameters.depth;
+  float nDotL = shadowParameters.nDotL;
+  float normalShadingSmooth = shadowParameters.normalShadingSmooth;
+  float darkness = shadowParameters.darkness;
+  vec2 uv = shadowParameters.texCoords;
+  depth -= depthBias;
+  vec2 texelStepSize = shadowParameters.texelStepSize;
+  float radius = 1.0;
+  float dx0 = -texelStepSize.x * radius;
+  float dy0 = -texelStepSize.y * radius;
+  float dx1 = texelStepSize.x * radius;
+  float dy1 = texelStepSize.y * radius;
+  float visibility = (_czm_shadowDepthCompare(shadowMap, uv, depth) +
+    _czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy0), depth) +
+    _czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy0), depth) +
+    _czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy0), depth) +
+    _czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, 0.0), depth) +
+    _czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, 0.0), depth) +
+    _czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy1), depth) +
+    _czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy1), depth) +
+    _czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy1), depth)) * (1.0 / 9.0);
+  return visibility;
+}
+
+vec3 pointProjectOnPlane(in vec3 planeNormal, in vec3 planeOrigin, in vec3 point) {
+  vec3 v01 = point - planeOrigin;
+  float d = dot(planeNormal, v01);
+  return (point - planeNormal * d);
+}
+float ptm(vec3 pt) {
+  return sqrt(pt.x * pt.x + pt.y * pt.y + pt.z * pt.z);
+}
+
+void main() {
+  const float PI = 3.141592653589793;
+  vec4 color = texture(colorTexture, v_textureCoordinates);
+  vec4 currD = texture(depthTexture, v_textureCoordinates);
+
+  float depth = getDepthMars3D(currD);
+  vec4 positionEC = toEye(v_textureCoordinates, depth);
+  vec3 normalEC = vec3(1.0);
+  czm_shadowParameters shadowParameters;
+  shadowParameters.texelStepSize = shadowMap_texelSizeDepthBias.xy;
+  shadowParameters.depthBias = shadowMap_texelSizeDepthBias.z;
+  shadowParameters.normalShadingSmooth = shadowMap_texelSizeDepthBias.w;
+  shadowParameters.darkness = shadowMap_normalOffsetScale.w;
+  shadowParameters.depthBias *= max(depth * 0.01, 1.0);
+
+  vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz);
+  float nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0);
+  vec4 shadowPosition = shadowMap_matrix * positionEC;
+  shadowPosition /= shadowPosition.w;
+  if(any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0)))) {
+    out_FragColor = color;
+    return;
+  }
+
+  shadowParameters.texCoords = shadowPosition.xy;
+  shadowParameters.depth = shadowPosition.z;
+  shadowParameters.nDotL = nDotL;
+  float visibility = _czm_shadowVisibility(shadowMap_texture, shadowParameters);
+
+  //视频投射
+  if(visibility == 1.0) {
+    if(ztzf_frustum_flipx){
+      shadowPosition.x = shadowPosition.x + (0.5 - shadowPosition.x) * 2.0;
+    }
+    if(ztzf_frustum_flipy){
+      shadowPosition.y = shadowPosition.y + (0.5 - shadowPosition.y) * 2.0;
+    }
+
+    vec4 videoColor = texture(ztzf_frustum_videoTexture, shadowPosition.xy);
+    vec4 maskColor = texture(ztzf_frustum_maskTexture, shadowPosition.xy);
+    videoColor *= maskColor;
+    
+    // 计算到边缘的距离
+    float distToEdge = min(
+        min(shadowPosition.x, 1.0 - shadowPosition.x),
+        min(shadowPosition.y, 1.0 - shadowPosition.y)
+    );
+    
+    // 混合视频颜色和背景
+    vec4 finalColor = mix(color, vec4(videoColor.xyz, 1.0), ztzf_frustum_opacity * videoColor.a);
+    
+    // 添加边框效果
+    if(distToEdge < ztzf_frustum_borderWidth && videoColor.a > 0.0) {
+        float borderFactor = smoothstep(0.0, ztzf_frustum_borderWidth, distToEdge);
+        finalColor = mix(ztzf_frustum_borderColor, finalColor, borderFactor);
+    }
+    
+    out_FragColor = finalColor;
+  } else {
+    if(abs(shadowPosition.z - 0.0) < 0.01) {
+      return;
+    }
+    out_FragColor = vec4(mix(color.rgb, ztzf_frustum_hiddenAreaColor.rgb, ztzf_frustum_hiddenAreaColor.a), ztzf_frustum_hiddenAreaColor.a);
+  }
+}
+    `
+
+class CesiumVideoFrustum {
+    constructor(viewer, param) {
+        this.param = param
+
+        var option = this._initCameraParam()
+
+        if (option || (option = {}), this.viewer = viewer, this._cameraPosition = option.cameraPosition, this._position = option.position,
+            this.type = option.type, this._alpha = option.alpha || 0, this.element = option.element, this.color = option.color,
+            this._debugFrustum = Cesium.defaultValue(option.debugFrustum, !0), this._aspectRatio = option.aspectRatio || this._getWinWidHei(),
+            this._camerafov = option.fov || Cesium.Math.toDegrees(this.viewer.scene.camera.frustum.fov),
+            this._isShadowMap = option.isShadowMap || false,
+            this.texture = option.texture || new Cesium.Texture({
+                context: this.viewer.scene.context,
+                source: {
+                    width: 1,
+                    height: 1,
+                    arrayBufferView: new Uint8Array([255, 255, 255, 255])
+                },
+                flipY: !1
+            }), this.defaultShow = Cesium.defaultValue(option.show, !0), !this.cameraPosition || !this.position) return void console.log('初始化失败:请确认相机位置与视点位置正确!')
+
+        this.activeVideo()
+        this._createShadowMap()
+        this._getOrientation()
+        this._addCameraFrustum()
+        this._addPostProcess()
+        this.viewer.scene.primitives.add(this)
+    }
+
+    get alpha () {
+        return this._alpha
+    }
+
+    set alpha (e) {
+        this._alpha = e
+        this._changeViewPos()
+    }
+
+    get aspectRatio () {
+        return this._aspectRatio
+    }
+
+    set aspectRatio (e) {
+        this._aspectRatio = e
+        this._changeVideoWidHei()
+    }
+
+    get debugFrustum () {
+        return this._debugFrustum
+    }
+
+    set debugFrustum (e) {
+        this._debugFrustum = e
+        this.cameraFrustum.show = e
+        this.cameraFrustumOutline.show = e
+    }
+
+    get fov () {
+        return this._camerafov
+    }
+
+    set fov (e) {
+        this._camerafov = e
+        this._changeCameraFov()
+    }
+
+    get cameraPosition () {
+        return this._cameraPosition
+    }
+
+    set cameraPosition (e) {
+        e && (this._cameraPosition = e, this._changeCameraPos())
+    }
+
+    get isShadowMap () {
+        return this._isShadowMap
+    }
+
+    set isShadowMap (e) {
+        this._isShadowMap = e
+        this._changeCameraIsShadowMap()
+    }
+
+    get position () {
+        return this._position
+    }
+
+    set position (e) {
+        e && (this._position = e, this._changeViewPos())
+    }
+
+    get params () {
+        var t = {}
+        return t.element = this.element,
+            t.position = this.position,
+            t.cameraPosition = this.cameraPosition,
+            t.fov = this.fov,
+            t.isShadowMap = this.isShadowMap,
+            t.aspectRatio = this.aspectRatio,
+            t.alpha = this.alpha,
+            t.debugFrustum = this.debugFrustum,
+            t.show = this.show
+    }
+
+    get show () {
+        return this.defaultShow
+    }
+
+    set show (e) {
+        this.defaultShow = Boolean(e),
+            this._switchShow()
+    }
+
+    isDestroyed () {
+        return false
+    }
+
+    _initCameraParam () {
+        var cameraPosition = Cesium.Cartesian3.fromDegrees(this.param.position.x * 1, this.param.position.y * 1, this.param.position.z * 1)
+
+        const hpr = Cesium.HeadingPitchRoll.fromDegrees(this.param.rotation.y * 1, this.param.rotation.x * 1, 0)
+        const orientation = Cesium.Transforms.headingPitchRollQuaternion(cameraPosition, hpr)
+
+        let matrix = Cesium.Matrix3.fromQuaternion(
+            orientation,
+            new Cesium.Matrix3()
+        )
+
+        let direction = Cesium.Matrix3.getColumn(matrix, 2, new Cesium.Cartesian3())
+
+        let frontDirect = Cesium.Cartesian3.multiplyByScalar(
+            direction,
+            250,
+            new Cesium.Cartesian3()
+        )
+        let position = Cesium.Cartesian3.add(cameraPosition, frontDirect, new Cesium.Cartesian3())
+
+        return {
+            cameraPosition: cameraPosition,
+            position: position,
+            alpha: this.param.alpha,
+            near: this.param.near,
+            fov: this.param.fov,
+            isShadowMap: this.param.isShadowMap,
+            debugFrustum: this.param.debugFrustum,
+            aspectRatio: this.param.aspectRatio,
+            element: this.param.element,
+        }
+    }
+
+    _changeAlpha (e) {
+        this.alpha = e
+    }
+
+    _changeAspectRatio (e) {
+        this.aspectRatio = e
+    }
+
+    _changeRotation (e) {
+        if (e) {
+            this.param.rotation = e
+            var option = this._initCameraParam()
+            this.position = option.position
+        }
+    }
+
+    _changeCameraPosition (e) {
+        if (e) {
+            this.param.position = e
+            var option = this._initCameraParam()
+            this.cameraPosition = option.cameraPosition
+        }
+    }
+
+    _changeFov (e) {
+        if (e) {
+            this.param.fov = e
+            var option = this._initCameraParam()
+            this.fov = option.fov
+        }
+    }
+
+    _changeIsShadowMap (e) {
+        this.param.isShadowMap = e
+        var option = this._initCameraParam()
+        this.isShadowMap = option.isShadowMap
+    }
+
+    _changeFar (e) {
+        if (e) {
+            this.param.far = e
+            var option = this._initCameraParam()
+            this.position = option.position
+        }
+    }
+
+    _changeNear (e) {
+        if (e) {
+            this.param.near = e
+            this.near = this.param.near
+            this._changeCameraPos()
+        }
+    }
+
+    _getWinWidHei () {
+        var viewer = this.viewer.scene
+        return viewer.canvas.clientWidth / viewer.canvas.clientHeight
+    }
+
+    _changeCameraFov () {
+        this.postProcess && this.viewer.scene.postProcessStages.remove(this.postProcess)
+
+        this.viewer.scene.primitives.remove(this.cameraFrustum),
+            this.viewer.scene.primitives.remove(this.cameraFrustumOutline),
+            this._createShadowMap(this.cameraPosition, this.position),
+            this._getOrientation(),
+            this._addCameraFrustum(),
+            this._addPostProcess()
+    }
+
+    _changeCameraIsShadowMap () {
+        this.postProcess && this.viewer.scene.postProcessStages.remove(this.postProcess)
+
+        this.viewShadowMap && this.viewShadowMap.destroy()
+        this.viewShadowMap = null
+
+        this.viewer.scene.primitives.remove(this.cameraFrustum),
+            this.viewer.scene.primitives.remove(this.cameraFrustumOutline),
+            this._createShadowMap(this.cameraPosition, this.position),
+            this._getOrientation(),
+            this._addCameraFrustum(),
+            this._addPostProcess()
+    }
+
+    _changeVideoWidHei () {
+        this.postProcess && this.viewer.scene.postProcessStages.remove(this.postProcess)
+
+        this.viewer.scene.primitives.remove(this.cameraFrustum),
+            this.viewer.scene.primitives.remove(this.cameraFrustumOutline),
+            this._createShadowMap(this.cameraPosition, this.position),
+            this._getOrientation(),
+            this._addCameraFrustum(),
+            this._addPostProcess()
+    }
+
+    _changeCameraPos () {
+        this.postProcess && this.viewer.scene.postProcessStages.remove(this.postProcess)
+
+        this.viewShadowMap && this.viewShadowMap.destroy()
+        this.viewShadowMap = null
+
+        this.viewer.scene.primitives.remove(this.cameraFrustum),
+            this.viewer.scene.primitives.remove(this.cameraFrustumOutline),
+            // this.cameraFrustum.destroy(),
+            this._createShadowMap(this.cameraPosition, this.position),
+            this._getOrientation(),
+            this._addCameraFrustum(),
+            this._addPostProcess()
+    }
+
+    _changeViewPos () {
+        this.postProcess && this.viewer.scene.postProcessStages.remove(this.postProcess)
+
+        this.viewShadowMap && this.viewShadowMap.destroy()
+        this.viewShadowMap = null
+
+        this.viewer.scene.primitives.remove(this.cameraFrustum),
+            this.viewer.scene.primitives.remove(this.cameraFrustumOutline),
+            // this.cameraFrustum.destroy(),
+            this._createShadowMap(this.cameraPosition, this.position),
+            this._getOrientation(),
+            this._addCameraFrustum(),
+            this._addPostProcess()
+    }
+
+    _switchShow () {
+        this.show ? !this.postProcess && this._addPostProcess() : (this.postProcess && this.viewer.scene.postProcessStages.remove(this.postProcess), delete this.postProcess, this.postProcess = null),
+            this.cameraFrustum.show = this.show,
+            this.cameraFrustumOutline.show = this.show
+    }
+
+    activeVideo () {
+        var video = this.element,
+            that = this
+        if (video) {
+            var viewer = this.viewer
+            this.activeVideoListener || (this.activeVideoListener = function () {
+                that.videoTexture && that.videoTexture.destroy(),
+                    that.videoTexture = new Cesium.Texture({
+                        context: viewer.scene.context,
+                        source: video,
+                        width: 1,
+                        height: 1,
+                        pixelFormat: Cesium.PixelFormat.RGBA,
+                        pixelDatatype: Cesium.PixelDatatype.UNSIGNED_BYTE
+                    })
+            }),
+                viewer.clock.onTick.addEventListener(this.activeVideoListener)
+        }
+    }
+
+    locate () {
+        var cameraPosition = Cesium.clone(this.cameraPosition),
+            position = Cesium.clone(this.position)
+        this.viewer.Camera.position = cameraPosition,
+            this.viewer.camera.direction = Cesium.Cartesian3.subtract(position, cameraPosition, new Cesium.Cartesian3(0, 0, 0)),
+            this.viewer.camera.up = Cesium.Cartesian3.normalize(cameraPosition, new Cesium.Cartesian3(0, 0, 0))
+    }
+
+    update (e) {
+        this.viewShadowMap && this.viewer.scene.frameState.shadowMaps.push(this.viewShadowMap) // *重点* 多投影
+    }
+
+    _createShadowMap () {
+        var e = Cesium.Cartesian3.fromDegrees(this.param.position.x * 1, this.param.position.y * 1, this.param.position.z * 1)
+        var t = this.position
+        var i = this.viewer.scene
+        var a = new Cesium.Camera(i)
+        a.position = e
+
+        this.customFrustum = new Cesium.PerspectiveFrustum({
+            fov: Cesium.Math.toRadians(this.fov),
+            aspectRatio: this.aspectRatio,
+            near: this.near,
+            far: 250
+        })
+
+        a.frustum = new Cesium.PerspectiveFrustum({
+            fov: Cesium.Math.toRadians(this.fov),
+            aspectRatio: this.aspectRatio,
+            near: this.near,
+            far: 250
+        })
+
+        let curOrientation = {}
+
+        const headingPitchRoll = new Cesium.HeadingPitchRoll(
+            Cesium.Math.toRadians(this.param.rotation.y, 0),
+            Cesium.Math.toRadians(this.param.rotation.x, 0),
+            Cesium.Math.toRadians(0),
+        )
+
+        curOrientation['heading'] = headingPitchRoll['heading']
+        curOrientation['pitch'] = headingPitchRoll['pitch']
+        curOrientation['roll'] = headingPitchRoll['roll']
+
+        let curDestination = {}
+
+        curDestination.destination = e
+        curDestination.orientation = curOrientation
+
+        a.setView(curDestination)
+
+        var n = Cesium.Cartesian3.distance(t, e)
+        this.viewDis = n
+
+        if (!this.isShadowMap) return
+
+        this.viewShadowMap = new Cesium.ShadowMap({
+            lightCamera: a,
+            enable: !1,
+            isPointLight: !1,
+            isSpotLight: !0,
+            cascadesEnabled: !1,
+            context: i.context,
+            pointLightRadius: n,
+        })
+    }
+
+    _getOrientation () {
+        const hpr = Cesium.HeadingPitchRoll.fromDegrees(180 + this.param.rotation.y * 1, 0, 90 - this.param.rotation.x * 1 || 0)
+        const orientation = Cesium.Transforms.headingPitchRollQuaternion(this.cameraPosition, hpr)
+
+        return this.orientation = orientation,
+            orientation
+    }
+
+    _addCameraFrustum () {
+        var e = this
+
+        this.cameraFrustum = new Cesium.Primitive({
+            geometryInstances: new Cesium.GeometryInstance({
+                geometry: new Cesium.FrustumGeometry({
+                    origin: e.cameraPosition,
+                    orientation: e.orientation,
+                    frustum: e.customFrustum,
+                    _drawNearPlane: !0
+                }),
+                attributes: {
+                    color: Cesium.ColorGeometryInstanceAttribute.fromColor(
+                        Cesium.Color.fromBytes(0, 213, 144, 20)
+                    ),
+                }
+            }),
+            releaseGeometryInstances: false,
+            appearance: new Cesium.PerInstanceColorAppearance({
+                translucent: true,
+                flat: !0,
+                closed: true,
+            }),
+            asynchronous: false,
+            show: this.debugFrustum && this.show
+        })
+
+        this.cameraFrustumOutline = new Cesium.Primitive({
+            geometryInstances: new Cesium.GeometryInstance({
+                geometry: new Cesium.FrustumOutlineGeometry({
+                    origin: e.cameraPosition,
+                    orientation: e.orientation,
+                    frustum: e.customFrustum,
+                    _drawNearPlane: !0
+                }),
+                attributes: {
+                    color: Cesium.ColorGeometryInstanceAttribute.fromColor(
+                        Cesium.Color.fromBytes(0, 213, 144, 255)
+                    ),
+                }
+            }),
+            appearance: new Cesium.PerInstanceColorAppearance({
+                closed: true,
+                flat: true,
+                translucent: true
+            }),
+            asynchronous: false,
+            show: this.debugFrustum && this.show
+        })
+
+        this.viewer.scene.primitives.add(this.cameraFrustum)
+        this.viewer.scene.primitives.add(this.cameraFrustumOutline)
+    }
+
+    _addPostProcess () {
+        if (!this.isShadowMap) return
+
+        var e = this,
+            t = videoShed3dShader
+
+        const i = e.viewShadowMap['_primitiveBias']
+
+        this.postProcess = new Cesium.PostProcessStage({
+            fragmentShader: t,
+            uniforms: {
+                ztzf_frustum_videoTexture: function () {
+                    return e.videoTexture
+                },
+
+                ztzf_frustum_maskTexture: function () {
+                    return new Cesium['Texture']({
+                        'context': e.viewer.scene.context,
+                        'source': {
+                            'width': 0x1,
+                            'height': 0x1,
+                            'arrayBufferView': new Uint8Array([255, 255, 255, 255])
+                        },
+                        'flipY': ![]
+                    })
+                },
+
+                ztzf_frustum_opacity: function () {
+                    return e.alpha
+                },
+
+                ztzf_frustum_hiddenAreaColor: () => {
+                    return new Cesium.Color(0, 0, 0, 0.5)
+                },
+
+                shadowMap_texture: function () {
+                    if (!e.viewShadowMap || !e.viewShadowMap['_shadowMapTexture'] || e.viewShadowMap['_shadowMapTexture']['isDestroyed']()) {
+                        return new Cesium['Texture']({
+                            'context': e.viewer.scene.context,
+                            'source': {
+                                'width': 0x1,
+                                'height': 0x1,
+                                'arrayBufferView': new Uint8Array([0x0, 0x0, 0x0, 0x0])
+                            },
+                            'flipY': ![]
+                        })
+                    }
+
+                    return e.viewShadowMap._shadowMapTexture
+                },
+
+                shadowMap_matrix: function () {
+                    return e.viewShadowMap._shadowMapMatrix
+                },
+
+                shadowMap_lightPositionEC: function () {
+                    return e.viewShadowMap._lightPositionEC
+                },
+
+                shadowMap_texelSizeDepthBias: function () {
+                    var t = new Cesium.Cartesian2
+                    return t.x = 1 / e.viewShadowMap._textureSize.x,
+                        t.y = 1 / e.viewShadowMap._textureSize.y,
+                        Cesium.Cartesian4.fromElements(t.x, t.y, i.depthBias, i.normalShadingSmooth, this.combinedUniforms1)
+                },
+
+                shadowMap_normalOffsetScale: function () {
+                    return Cesium.Cartesian4.fromElements(i.normalOffsetScale, e.viewShadowMap._distance, e.viewShadowMap.maximumDistance, e.viewShadowMap._darkness, this.combinedUniforms2)
+                },
+
+                ztzf_frustum_flipx: () => {
+                    return false
+                },
+
+                ztzf_frustum_flipy: () => {
+                    return false
+                },
+
+                ztzf_frustum_borderColor: () => {
+                    return new Cesium.Color(0 / 255, 213 / 255, 144 / 255, 255 / 255)
+                },
+
+                ztzf_frustum_borderWidth: () => {
+                    return 0.01
+                },
+            }
+        }),
+            this.viewer.scene.postProcessStages.add(this.postProcess)
+    }
+
+    destroy () {
+        this.viewer.scene.postProcessStages.remove(this.postProcess),
+            this.viewer.scene.primitives.remove(this.cameraFrustum),
+            this.viewer.scene.primitives.remove(this.cameraFrustumOutline),
+            //this._videoEle && this._videoEle.parentNode.removeChild(this._videoEle),
+            this.activeVideoListener && this.viewer.clock.onTick.removeEventListener(this.activeVideoListener),
+            this.activeVideoListener && delete this.activeVideoListener,
+            delete this.postProcess,
+            delete this.viewShadowMap,
+            delete this.color,
+            delete this.viewDis,
+            delete this.cameraPosition,
+            delete this.position,
+            delete this.alpha,
+            delete this._camerafov,
+            delete this._isShadowMap,
+            delete this._cameraPosition,
+            delete this.videoTexture,
+            delete this.cameraFrustum,
+            delete this.cameraFrustumOutline,
+            delete this._videoEle,
+            delete this._debugFrustum,
+            delete this._position,
+            delete this._aspectRatio,
+            delete this.element,
+            delete this.orientation,
+            delete this.texture,
+            delete this.videoId,
+            this.viewer.scene.primitives.remove(this),
+            delete this.viewer
+    }
+}
+
+export default CesiumVideoFrustum
diff --git a/applications/drone-command/src/utils/cesium/frustum/CoordinateTranslate.js b/applications/drone-command/src/utils/cesium/frustum/CoordinateTranslate.js
new file mode 100644
index 0000000..24e0675
--- /dev/null
+++ b/applications/drone-command/src/utils/cesium/frustum/CoordinateTranslate.js
@@ -0,0 +1,229 @@
+/*
+ * @Author       : yuan
+ * @Date         : 2025-08-15 14:06:49
+ * @LastEditors  : yuan
+ * @LastEditTime : 2025-08-15 14:06:59
+ * @FilePath     : \src\utils\cesium\frustum\CoordinateTranslate.js
+ * @Description  : 
+ * Copyright 2025 OBKoro1, All Rights Reserved. 
+ * 2025-08-15 14:06:49
+ */
+let ECEF = (function () {
+	var _ = function () {
+		this.PI = 3.141592653589793238
+		this.a = 6378137.0
+		this.b = 6356752.3142
+		this.f = (this.a - this.b) / this.a
+		this.e_sq = this.f * (2.0 - this.f)
+		this.ee = 0.00669437999013
+		this.WGSF = 1 / 298.257223563
+		this.WGSe2 = this.WGSF * (2 - this.WGSF)
+		this.WGSa = 6378137.00000
+		this.EPSILON = 1.0e-12
+	}
+	_.prototype.CalculateCoordinates = function (point, azimuth, elevation, distance) {
+		var vertical_height = distance * Math.sin(2 * this.PI / 360 * elevation)//垂直高度
+		var horizontal_distance = distance * Math.cos(2 * this.PI / 360 * elevation)//水平距离
+		if (azimuth > 360) azimuth = azimuth % 360
+		if (azimuth < 0) azimuth = 360 + (azimuth % 360)
+
+		var point1 = this.lonLat2WebMercator(point)
+		var lnglat = null
+
+		var x_length, y_length
+		if (azimuth <= 90) {//第四象限
+			x_length = horizontal_distance * Math.cos(2 * this.PI / 360 * azimuth)
+			y_length = horizontal_distance * Math.sin(2 * this.PI / 360 * azimuth)
+			lnglat = {
+				x: point1.x + x_length,
+				y: point1.y - y_length
+			}
+		} else if (azimuth > 90 && azimuth <= 180) {//第三象限
+			x_length = horizontal_distance * Math.sin(2 * this.PI / 360 * (azimuth - 90))
+			y_length = horizontal_distance * Math.cos(2 * this.PI / 360 * (azimuth - 90))
+			lnglat = {
+				x: point1.x - x_length,
+				y: point1.y - y_length
+			}
+		} else if (azimuth > 180 && azimuth <= 270) {//第二象限
+			x_length = horizontal_distance * Math.cos(2 * this.PI / 360 * (azimuth - 180))
+			y_length = horizontal_distance * Math.sin(2 * this.PI / 360 * (azimuth - 180))
+			lnglat = {
+				x: point1.x - x_length,
+				y: point1.y + y_length
+			}
+		} else {//第一象限
+			x_length = horizontal_distance * Math.sin(2 * this.PI / 360 * (azimuth - 270))
+			y_length = horizontal_distance * Math.cos(2 * this.PI / 360 * (azimuth - 270))
+			lnglat = {
+				x: point1.x + x_length,
+				y: point1.y + y_length
+			}
+		}
+		lnglat = this.webMercator2LonLat(lnglat)
+		return {
+			lng: lnglat.x,
+			lat: lnglat.y,
+			height: vertical_height
+		}
+	}
+	/*
+	   *经纬度转Web墨卡托
+	   *@lonLat 经纬度
+	   */
+	_.prototype.lonLat2WebMercator = function (lonLat) {
+		let x = lonLat.x * this.a / 180
+		let y = Math.log(Math.tan((90 + lonLat.y) * this.PI / 360)) / (this.PI / 180)
+		y = y * this.a / 180
+		return {
+			x: x,
+			y: y
+		}
+	}
+
+	/*
+	   *Web墨卡托转经纬度
+	   *@mercator 平面坐标
+	   */
+	_.prototype.webMercator2LonLat = function (mercator) {
+		let x = mercator.x / this.a * 180
+		let y = mercator.y / this.a * 180
+		y = 180 / this.PI * (2 * (Math.exp(y * this.PI / 180)) - this.PI / 2)
+		return {
+			x: x,
+			y: y
+		}
+	}
+
+	_.prototype.get_atan = function (z, y) {
+		let x
+		if (z == 0) {
+			x = this.PI / 2
+		} else {
+			if (y == 0) {
+				x = this.PI
+			} else {
+				x = Math.atan(Math.abs(y / z))
+				if ((y > 0) && (z < 0)) {
+					x = this.PI - x
+				} else if ((y < 0) && (z < 0)) {
+					x = this.PI + x
+				} else if ((y < 0) && (z > 0)) {
+					x = 2 * this.M_PI - x
+				}
+			}
+		}
+		return x
+	}
+	//WGS84转ECEF坐标系
+	_.prototype.ConvertLLAToXYZ = function (LLACoor) {
+		let lon = this.PI / 180 * LLACoor.longitude
+		let lat = this.PI / 180 * LLACoor.latitude
+		let H = LLACoor.altitude
+		let N0 = this.a / Math.sqrt(1.0 - this.ee * Math.sin(lat) * Math.sin(lat))
+		let x = (N0 + H) * Math.cos(lat) * Math.cos(lon)
+		let y = (N0 + H) * Math.cos(lat) * Math.sin(lon)
+		let z = (N0 * (1.0 - this.ee) + H) * Math.sin(lat)
+		return {
+			x: x,
+			y: y,
+			z: z
+		}
+	}
+
+	//ECEF坐标系转WGS84
+	_.prototype.ConvertXYZToLLA = function (XYZCoor) {
+		let longitude = this.get_atan(XYZCoor.x, XYZCoor.y)
+		if (longitude < 0) {
+			longitude = longitude + this.PI
+		}
+		let latitude = this.get_atan(Math.sqrt(XYZCoor.x * XYZCoor.x + XYZCoor.y * XYZCoor.y), XYZCoor.z)
+
+		let W = Math.sqrt(1 - this.WGSe2 * Math.sin(latitude) * Math.sin(latitude))
+		let N = this.WGSa / W
+		let B1
+		do {
+			B1 = latitude
+			W = Math.sqrt(1 - this.WGSe2 * Math.sin(B1) * Math.sin(B1))
+			N = this.WGSa / W
+			latitude = this.get_atan(Math.sqrt(XYZCoor.x * XYZCoor.x + XYZCoor.y * XYZCoor.y), (XYZCoor.z + N * this.WGSe2 * Math.sin(B1)))
+		}
+		while (Math.abs(latitude - B1) > this.EPSILON)
+
+		var altitude = Math.sqrt(XYZCoor.x * XYZCoor.x + XYZCoor.y * XYZCoor.y) / Math.cos(latitude) - this.WGSa / Math.sqrt(1 - this.WGSe2 * Math.sin(latitude) * Math.sin(latitude))
+
+		return {
+			longitude: longitude * 180 / this.PI,
+			latitude: latitude * 180 / this.PI,
+			altitude: altitude
+		}
+	}
+	/*北东天坐标系转WGS84
+	@ a A点坐标
+	@ p 相对参数,距离、方位角、仰角
+	*/
+	//	俯视角pitch -elevation 
+	//航向角heading(yaw) -azimuth 
+	_.prototype.enu_to_ecef = function (a, p) {
+		//距离
+		let distance = p.distance
+		//方位角
+		let azimuth = p.azimuth
+		//仰角
+		let elevation = p.elevation
+
+		let zUp = elevation >= 0 ? distance * Math.sin(this.PI / 180 * elevation) : (-1) * distance * Math.sin(this.PI / 180 * Math.abs(elevation))
+
+		let d = distance * Math.cos(this.PI / 180 * Math.abs(elevation))
+		let xEast
+		let yNorth
+		if (azimuth <= 90) {
+			xEast = d * Math.sin(this.PI / 180 * azimuth)
+			yNorth = d * Math.cos(this.PI / 180 * azimuth)
+		} else if (azimuth > 90 && azimuth < 180) {
+			xEast = d * Math.cos(this.PI / 180 * (azimuth - 90))
+			yNorth = (-1) * d * Math.sin(this.PI / 180 * (azimuth - 90))
+		} else if (azimuth > 180 && azimuth < 270) {
+			xEast = (-1) * d * Math.sin(this.PI / 180 * (azimuth - 180))
+			yNorth = (-1) * d * Math.cos(this.PI / 180 * (azimuth - 180))
+		} else {
+			xEast = (-1) * d * Math.sin(this.PI / 180 * (360 - azimuth))
+			yNorth = d * Math.cos(this.PI / 180 * (360 - azimuth))
+		}
+
+		let lamb = this.radians(a.latitude)
+		let phi = this.radians(a.longitude)
+		let h0 = a.altitude
+
+		let s = Math.sin(lamb)
+		let N = this.a / Math.sqrt(1.0 - this.e_sq * s * s)
+
+		let sin_lambda = Math.sin(lamb)
+		let cos_lambda = Math.cos(lamb)
+
+		let sin_phi = Math.sin(phi)
+		let cos_phi = Math.cos(phi)
+
+		let x0 = (h0 + N) * cos_lambda * cos_phi
+		let y0 = (h0 + N) * cos_lambda * sin_phi
+		let z0 = (h0 + (1 - this.e_sq) * N) * sin_lambda
+
+		let t = cos_lambda * zUp - sin_lambda * yNorth
+
+		let zd = sin_lambda * zUp + cos_lambda * yNorth
+		let xd = cos_phi * t - sin_phi * xEast
+		let yd = sin_phi * t + cos_phi * xEast
+
+		return this.ConvertXYZToLLA({
+			x: xd + x0,
+			y: yd + y0,
+			z: zd + z0
+		})
+	}
+	_.prototype.radians = function (degree) {
+		return this.PI / 180 * degree
+	}
+	return _
+})()
+
+export default ECEF
\ No newline at end of file
diff --git a/applications/drone-command/src/utils/cesium/kmz.js b/applications/drone-command/src/utils/cesium/kmz.js
index a6cf77f..79e56ea 100644
--- a/applications/drone-command/src/utils/cesium/kmz.js
+++ b/applications/drone-command/src/utils/cesium/kmz.js
@@ -209,6 +209,11 @@
 }
 
 
+/**
+ * 递归处理对象,移除 #text 键并返回其值,同时处理数值字符串到数字的转换
+ * @param {any} obj - 需要处理的对象或值
+ * @returns {any} 处理后的对象或值
+ */
 export function removeTextKey(obj) {
 	if (typeof obj !== 'object' || obj === null) {
 		// 如果是数值字符串,转换为数值
@@ -219,18 +224,21 @@
 	}
 
 	if (Array.isArray(obj)) {
+		// 递归处理数组中的每个元素
 		return obj.map(item => removeTextKey(item));
 	}
 
 	if (Object.prototype.hasOwnProperty.call(obj, '#text')) {
-		// 如果 #text 的值是数值字符串,转换为数值
+		// 如果存在 #text 属性,返回其值(如果是数值字符串则转换为数字)
 		const textValue = obj['#text'];
 		return typeof textValue === 'string' && /^-?\d+(\.\d+)?$/.test(textValue) ? Number(textValue) : textValue;
 	}
 
+	// 递归处理对象属性
 	const newObj = {};
 	for (const key in obj) {
 		if (Object.prototype.hasOwnProperty.call(obj, key)) {
+			// 如果属性值是空对象,则设为空字符串;否则递归处理
 			newObj[key] = Object.keys(obj[key]).length === 0 ? '' : removeTextKey(obj[key]);
 		}
 	}
diff --git a/applications/drone-command/src/utils/cesium/mapUtil.js b/applications/drone-command/src/utils/cesium/mapUtil.js
index eabf803..117ada6 100644
--- a/applications/drone-command/src/utils/cesium/mapUtil.js
+++ b/applications/drone-command/src/utils/cesium/mapUtil.js
@@ -1,7 +1,8 @@
 import * as Cesium from 'cesium'
 import * as turf from '@turf/turf'
-const { VITE_APP_BASE, VITE_APP_ENV, VITE_APP_REGION_URL } = import.meta.env
+import store from '@/store'
 
+const { VITE_APP_BASE, VITE_APP_ENV, VITE_APP_REGION_URL } = import.meta.env
 export const getLngLatDistance = (lat1, lng1, lat2, lng2) => {
 	const radLat1 = (lat1 * Math.PI) / 180.0
 	const radLat2 = (lat2 * Math.PI) / 180.0
@@ -189,6 +190,66 @@
 	})
 	const newArr = arr.sort((a, b) => a.distance - b.distance)
 	return newArr[0]
+}
+// 获取多边形内部数据
+export const samplePolygonInterior = (positions, samplingDistance) => {
+	if (!positions.length) return []
+	let minLng = Infinity,
+		maxLng = -Infinity
+	let minLat = Infinity,
+		maxLat = -Infinity
+	positions.forEach(pos => {
+		minLng = Math.min(minLng, pos.lng)
+		maxLng = Math.max(maxLng, pos.lng)
+		minLat = Math.min(minLat, pos.lat)
+		maxLat = Math.max(maxLat, pos.lat)
+	})
+
+	//  将 Cesium 多边形格式转为 Turf 格式
+	const turfPolygonCoords = positions.map(pos => [pos.lng, pos.lat])
+	turfPolygonCoords.push([positions[0].lng, positions[0].lat]) // 闭合多边形
+	const turfPolygon = turf.polygon([turfPolygonCoords])
+
+	//  生成网格点并判断是否在多边形内
+	const sampledPoints = []
+	for (let lng = minLng; lng <= maxLng; lng += samplingDistance) {
+		for (let lat = minLat; lat <= maxLat; lat += samplingDistance) {
+			// 创建 Turf 点
+			const turfPoint = turf.point([lng, lat])
+			// Turf 原生方法判断点是否在多边形内
+			if (turf.booleanPointInPolygon(turfPoint, turfPolygon)) {
+				sampledPoints.push({
+					lng: Number(lng.toFixed(6)),
+					lat: Number(lat.toFixed(6)),
+					height: 0,
+				})
+			}
+		}
+	}
+
+	return sampledPoints
+}
+// 获取多边形面内的最高点(相对地形高度)
+export const getPolygonHighestPoint = async (positions, viewer, samplingDistance = 0.0002) => {
+	try {
+		const interiorPoints = samplePolygonInterior(positions, samplingDistance, viewer)
+		const allPoints = [...positions, ...interiorPoints]
+		// 批量获取所有点的地形高度
+		const pointsWithTerrain = await getPointPositionsHeight(allPoints, viewer)
+		// console.log('所有点的地形高度', pointsWithTerrain)
+
+		// 地形高度(ASL)最高的点
+		const highestTerrainPoint = pointsWithTerrain.reduce(
+			(max, curr) => (curr.ASL > max.ASL ? curr : max),
+			pointsWithTerrain[0]
+		)
+
+		// console.log('地形最高点信息:', highestTerrainPoint)
+		return highestTerrainPoint
+	} catch (error) {
+		console.error('获取地形最高点失败:', error)
+		return null
+	}
 }
 
 // 获取当前经纬度地形数据
@@ -410,11 +471,15 @@
 	if (!Array.isArray(positionsData) || positionsData.length === 0) return
 
 	// 如果是一个点,加两个点方便后续生成外包围盒
-	if (positionsData.length === 1){
-		const [lon,lat,height] = positionsData[0]
-		positionsData = [[lon+0.001,lat+0.001,height],[lon-0.001,lat-0.001,height],[lon,lat,height]]
+	if (positionsData.length === 1) {
+		const [lon, lat, height = 0] = positionsData[0]
+		positionsData = [
+			[lon + 0.001, lat + 0.001, height],
+			[lon - 0.001, lat - 0.001, height],
+			[lon, lat, height],
+		]
 	}
-	const positions = positionsData.map(([lon, lat, height]) =>
+	const positions = positionsData.map(([lon, lat, height = 0]) =>
 		Cesium.Cartesian3.fromDegrees(Number(lon), Number(lat), Number(height || 0))
 	)
 
@@ -439,7 +504,7 @@
 			range: boundingSphere.radius * multiple,
 		},
 		complete: () => {
-			// 飞行完成后检查相机高度是否小于最高点,如果小于直接飞到最高点
+			// 飞行完成后检查相机高度是否小于最高点
 			const cameraHeight = Cesium.Cartographic.fromCartesian(viewer.camera.position).height
 			if (cameraHeight < maxHeight) {
 				viewer.camera.flyTo({
@@ -529,7 +594,7 @@
 
 // 辅助函数:创建旋转文字的画布
 export function createRotatedTextCanvas(time) {
-	const prefix = '预计'
+	const prefix = '预计到达'
 	const suffix = '分钟'
 	const canvas = document.createElement('canvas')
 	const context = canvas.getContext('2d')
@@ -537,7 +602,9 @@
 	context.font = 'bold 16px Source Han Sans CN'
 	// 测量各部分文本宽度
 	const prefixWidth = context.measureText(prefix).width
-	const timeWidth = context.measureText(time).width
+	let timeWidth = context.measureText(time).width
+	const timeWidthMore = `${time >= 10 ? 6 : 0}`
+	timeWidth = timeWidth + Number(timeWidthMore)
 	const suffixWidth = context.measureText(suffix).width
 	const totalWidth = prefixWidth + timeWidth + suffixWidth
 	const textHeight = 20 // 估算高度
@@ -550,17 +617,116 @@
 	context.textAlign = 'left' // 改为左对齐,方便分段绘制
 	// 清除画布
 	context.clearRect(0, 0, canvas.width, canvas.height)
-	// 绘制“预计”(白色)
+	// 绘制“预计到达”(白色)
 	context.fillStyle = '#FFFFFF'
 	context.fillText(prefix, 10, 15)
 	// 绘制时间(蓝色)
-	context.font = 'bold 30px Source Han Sans CN'
+	context.font = 'bold 24px Source Han Sans CN'
 	context.fillStyle = '#1EE7E7' // 亮蓝色
-	context.fillText(time, 10 + prefixWidth, 12)
+	// 设置宽度
+	context.textBaseline = 'middle'
+	context.fillText(time, 10 + prefixWidth, 14)
 	// 绘制“分钟”(白色)
 	context.font = 'bold 16px Source Han Sans CN'
 	context.fillStyle = '#FFFFFF'
-	context.fillText(suffix, 20 + prefixWidth + timeWidth, 15)
+	context.fillText(suffix, 14 + prefixWidth + timeWidth, 15)
 
 	return canvas
 }
+
+
+export const saveCurrentCameraPosition = viewer => {
+	const position = viewer?.camera.position.clone() // 相机位置(Cartesian3)
+	const heading = viewer?.camera.heading // 航向角(弧度)
+	const pitch = viewer?.camera.pitch // 俯仰角(弧度)
+	const roll = viewer?.camera.roll // 翻滚角(弧度)
+	store.commit('setCameraPosition', {
+		duration: 0,
+		destination: position,
+		orientation: { heading, pitch, roll },
+	})
+}
+
+// 连接地面线
+export function getDockPolyLine(data, viewer) {
+	if (!data.longitude || !data.latitude) return {}
+	return {
+		positions: new Cesium.CallbackProperty(() => {
+			const pointPosition = Cesium.Cartesian3.fromDegrees(+data.longitude, +data.latitude, +data.height)
+			if (!pointPosition) return []
+			// 获取点的位置
+			const cartographic = Cesium.Cartographic.fromCartesian(pointPosition)
+			// 获取地形高度
+			const terrainHeight = viewer.scene.globe.getHeight(cartographic) || 0
+			// 创建地面点位置
+			const groundPosition = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, terrainHeight)
+			return [pointPosition, groundPosition]
+		}, false),
+		width: 0.5,
+		material: Cesium.Color.WHITE,
+	}
+}
+
+// 飞向一个机巢中心
+export const flyDockCenter = (viewer, info) => {
+	const { longitude = 115, latitude = 28, height = 0 } = info
+	const position = Cesium.Cartesian3.fromDegrees(+longitude, +latitude, +height)
+	const droneEntity = viewer?.entities.add({ position: position, point: { pixelSize: 0 } })
+	viewer?.flyTo(droneEntity, {
+		offset: new Cesium.HeadingPitchRange(0, Cesium.Math.toRadians(-60), 22000),
+		duration: 0.5,
+		complete: () => {
+			viewer?.entities.remove(droneEntity)
+		},
+	})
+}
+
+// 在固定的经度上获得高度
+export function getHeightOnFixedLonLat(ray, pointParams, ellipsoid = Cesium.Ellipsoid.WGS84) {
+	const { longitude: lon, latitude: lat } = pointParams
+	// 1. 地表点(高度=0)
+	const p0 = Cesium.Cartesian3.fromDegrees(lon, lat, 0, ellipsoid)
+
+	// 2. 该点处的法线方向(up 向量,单位向量)
+	const up = ellipsoid.geodeticSurfaceNormal(p0, new Cesium.Cartesian3())
+
+	// 3. 射线起点和方向
+	const r0 = ray.origin // 相机位置
+	const rd = ray.direction // 射线方向(已归一化?不一定,但不影响)
+
+	// 4. 解:求直线 L(t) = p0 + t * up 与射线 R(s) = r0 + s * rd 的最近点
+	// 使用向量公式求两条直线的最近点参数 t
+	const w0 = Cesium.Cartesian3.subtract(p0, r0, new Cesium.Cartesian3())
+
+	const a = Cesium.Cartesian3.dot(up, up) // = 1(因为 up 是单位向量)
+	const b = Cesium.Cartesian3.dot(up, rd)
+	const c = Cesium.Cartesian3.dot(rd, rd) // = |rd|^2
+	const d = Cesium.Cartesian3.dot(up, w0)
+	const e = Cesium.Cartesian3.dot(rd, w0)
+
+	const denom = a * c - b * b
+	let t
+
+	if (Math.abs(denom) < Cesium.Math.EPSILON10) {
+		// 两直线平行,取 t = 0
+		t = 0
+	} else {
+		t = (b * e - c * d) / denom
+	}
+
+	// 5. 得到高度线上对应的点
+	const resultPoint = Cesium.Cartesian3.add(
+		p0,
+		Cesium.Cartesian3.multiplyByScalar(up, t, new Cesium.Cartesian3()),
+		new Cesium.Cartesian3()
+	)
+
+	// 6. 转回 Cartographic 获取精确高度
+	const carto = Cesium.Cartographic.fromCartesian(resultPoint, ellipsoid)
+	return {
+		cartesian: resultPoint,
+		height: carto.height,
+		longitude: Cesium.Math.toDegrees(carto.longitude),
+		latitude: Cesium.Math.toDegrees(carto.latitude),
+	}
+}
diff --git a/applications/drone-command/src/utils/cesium/publicCesium.js b/applications/drone-command/src/utils/cesium/publicCesium.js
index 7af504f..376b66c 100644
--- a/applications/drone-command/src/utils/cesium/publicCesium.js
+++ b/applications/drone-command/src/utils/cesium/publicCesium.js
@@ -70,6 +70,7 @@
  * @param {boolean} [options.flyToContour=false] - 是否飞行到轮廓,默认为 false
  * @param {number} [options.multiple=1.4] - 范围倍数
  * @param {number} [options.dockOptions={}] - 机巢显示
+ * @param {array} [options.terrainLoadCallback] - 地形加载回调
  * @param {array} [options.boundaryChange] - 边界改变事件
  * @param {array} [options.boundaryColor] - 边界颜色
  * @param {array} [options.dockRangeType] - 机巢范围类型 1显示覆盖圆;2显示覆盖圈
@@ -92,15 +93,14 @@
 			dom,
 			flatMode = true,
 			terrain = false,
-			layerMode = 0,
+			layerMode = 17,
 			contour = true,
 			flyToContour = false,
 			multiple = 1.4,
-
 			dockOptions = {},
-
-			boundaryColor = '#7FFFD4',
 			boundaryChange,
+			terrainLoadCallback,
+			boundaryColor = '#7FFFD4',
 			dockRangeType = 1,
 			useDockHeight = false
 		} = options
@@ -120,6 +120,10 @@
 			baseLayer: false,
 			fullscreenButton: false,
 		}
+
+		// 尝试解决出现多个id相同的dom
+		const domIdList = document.querySelectorAll(`#${dom}`)
+		if (domIdList.length>1) domIdList[1].remove()
 
 		this.viewer = new Viewer(dom, viewerOptions)
 		this.viewerDom = dom
@@ -143,33 +147,47 @@
 		this.viewer?.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK) // 禁用双击
 
 		if (terrain) {
-			// 正则:第一位非0,第二位任意数字,后10位都是0
-			const re = /^[1-9]\d0{10}$/
-
-			let result = null
-
-			// 1️⃣先判断 areaCode
-			if (re.test(store.state.user.userInfo.detail.areaCode)) {
-				result = store.state.user.userInfo.detail.areaCode.slice(0, 6)
-			} else {
-				// 2️⃣如果不满足,从 ancestors 里找
-				const matchedItems = store.state.user.userInfo.detail.ancestors
-					.split(',')
-					.filter(item => re.test(item)) // 过滤出符合条件的
-
-				// 取第一个符合条件的前6位(可以改成 last one 看需求)
-				if (matchedItems.length > 0) {
-					result = matchedItems[0].slice(0, 6)
-				}
-			}
-
 			try {
-				Cesium.CesiumTerrainProvider.fromUrl(`${import.meta.env.VITE_APP_TERRAIN_URL}${result}`, {
-					requestVertexNormals: true, // 启用地形法线增强立体感
-					requestWaterMask: true, // 启用水体遮罩效果
-				}).then(terrainProvider => {
-					this.viewer.terrainProvider = terrainProvider
-				})
+				const noTerrainMechanism = ['1962779164650135554']
+				if (noTerrainMechanism.includes(store.state.user.userInfo?.deptId)) {
+					// 使用Cesium World Terrain
+					Cesium.createWorldTerrainAsync({
+						requestWaterMask: false,    // 请求水域效果
+						requestVertexNormals: true // 请求光照和地形法线
+					}).then(terrainProvider => {
+						this.viewer.terrainProvider = terrainProvider
+						terrainLoadCallback?.()
+					})
+				} else {
+					// 正则:第一位非0,第二位任意数字,后10位都是0
+					const re = /^[1-9]\d0{10}$/
+
+					let result = null
+
+					// 1️⃣先判断 areaCode
+					if (re.test(store.state.user.userInfo.detail.areaCode)) {
+						result = store.state.user.userInfo.detail.areaCode.slice(0, 6)
+					} else {
+						// 2️⃣如果不满足,从 ancestors 里找
+						const matchedItems = store.state.user.userInfo.detail.ancestors
+							.split(',')
+							.filter(item => re.test(item)) // 过滤出符合条件的
+
+						// 取第一个符合条件的前6位(可以改成 last one 看需求)
+						if (matchedItems.length > 0) {
+							result = matchedItems[0].slice(0, 6)
+						}
+					}
+
+					// 使用公司地形
+					Cesium.CesiumTerrainProvider.fromUrl(`${import.meta.env.VITE_APP_TERRAIN_URL}${result}`, {
+						requestVertexNormals: true, // 启用地形法线增强立体感
+						requestWaterMask: true, // 启用水体遮罩效果
+					}).then(terrainProvider => {
+						this.viewer.terrainProvider = terrainProvider
+						terrainLoadCallback?.()
+					})
+				}
 			} catch (error) {
 				console.error('地形加载失败:', error)
 			}
@@ -180,6 +198,12 @@
 		this.switchFlatMode(flatMode)
 		this.switchContour(contour)
 		flyToContour && this.flyToContour(contour)
+
+		if (Cesium.FeatureDetection.supportsImageRenderingPixelated()) {
+			let dpr = window.devicePixelRatio
+			while (dpr >= 2.0) dpr /= 2.0 // 避免过高缩放导致模糊
+			this.viewer.resolutionScale = dpr // 设置分辨率缩放比例
+		}
 	}
 
 	getViewer () {
@@ -188,53 +212,69 @@
 
 	// 销毁viewer
 	viewerDestroy (removeDom = true) {
+		if (!this.viewer) return
+		// // 👇 关键:先停止所有动态行为
+		// this.viewer.clock.shouldAnimate = false;
+		// this.viewer.scene.requestRenderMode = false;
+		// // 取消所有可能的 pending 渲染
+		// if (this.viewer.cesiumWidget) {
+		// 	this.viewer.cesiumWidget.render = () => {}; // 空函数覆盖
+		// }
+		// // 清理实体和图层
+		// this.viewer?.entities.removeAll();
+		// this.viewer?.imageryLayers.removeAll();
+		// // 清理数据源
+		// try {
+		// 	const dataSources = this.viewer.dataSources;
+		// 	while (dataSources.length > 0) {
+		// 		dataSources.remove(dataSources.get(0));
+		// 	}
+		// } catch (e) {
+		// 	console.warn('清理数据源时出错:', e);
+		// }
+		// // 清理场景中的图元
+		// try {
+		// 	this.viewer?.scene.primitives.removeAll();
+		// } catch (e) {
+		// 	console.warn('清理图元时出错:', e);
+		// }
+		// // 获取webgl上下文
+		// let gl = this.viewer?.scene.context._originalGLContext
+		// if (gl) {
+		// 	try {
+		// 		gl.canvas.width = 1
+		// 		gl.canvas.height = 1
+		// 		gl.getExtension("WEBGL_lose_context").loseContext()
+		// 	} catch (e) {
+		// 		console.warn('释放WebGL上下文时出错:', e)
+		// 	}
+		// 	gl = null
+		// }
+		this.viewer?.destroy() // 销毁Viewer实例
+		this.viewer = null
 		smallMpaCenterDistance = null
-
-		if (this.viewer) {
-			this.viewer?.entities.removeAll()
-			this.viewer?.imageryLayers.removeAll()
-			this.viewer?.dataSources.removeAll()
-
-
-			// try {
-			// 	this.viewer?.scene?.primitives?.removeAll()
-			// 	this.viewer?.entities?.removeAll()
-			// } catch (e) {
-			// 	console.warn('清理资源时出错:', e)
-
-			// 	console.log(this.viewer, 1111111111111)
-			// }
-
-			// 获取webgl上下文
-			let gl = this.viewer?.scene.context._originalGLContext
-			gl.canvas.width = 1
-			gl.canvas.height = 1
-			gl.getExtension("WEBGL_lose_context").loseContext()
-			gl = null
-			this.viewer?.destroy() // 销毁Viewer实例
-			this.viewer = null
-			var cesiumContainer = document.getElementById(this.viewerDom)
-			if (cesiumContainer && removeDom) {
-				cesiumContainer.remove() // 移除与地图相关的DOM元素
-				this.viewerDom = null
-			}
+		var cesiumContainer = document.getElementById(this.viewerDom)
+		if (cesiumContainer && removeDom) {
+			cesiumContainer.remove() // 移除与地图相关的DOM元素
+			this.viewerDom = null
 		}
 	}
 
 	setShowDock (sns) {
 		this.boundary?.setShowDock(sns)
 	}
-
+	setDockCoverColor (sns) {
+		this.boundary?.setDockCoverColor(sns)
+	}
 	// 切换轮廓显示
 	async switchContour (open) {
 		if (open) {
 			await this.boundary?.openContour()
-
 		} else {
 			this.boundary?.closeContour()
 		}
 	}
-	// // 飞向轮廓居中
+	// 飞向轮廓居中
 	flyToContour () {
 		this.boundary?.flyToBoundary()
 	}
@@ -257,7 +297,7 @@
 		this.globalBaseMapLayers?.forEach(item => {
 			if (item.mapLayer) item.mapLayer.show = false
 		})
-		// store.state.common.mapSetting.mode = mode
+		store.state.common.mapSetting.mode = mode
 		// 标准地图(天地图矢量)加载
 		if (mode === 0) {
 			mapLayers.push(
@@ -324,9 +364,7 @@
 			this.viewer?.imageryLayers.lowerToBottom(find.mapLayer)
 		})
 	}
-
 	// 设置或重置滤镜
-
 	setCurrentLayerFilter (data, mode) {
 		if (mode === 17) {
 			data.mapLayer.brightness = 0.6 // 亮度(默认值)
diff --git a/applications/drone-command/src/utils/cesium/use-kmz-tsa.js b/applications/drone-command/src/utils/cesium/use-kmz-tsa.js
new file mode 100644
index 0000000..62ba213
--- /dev/null
+++ b/applications/drone-command/src/utils/cesium/use-kmz-tsa.js
@@ -0,0 +1,675 @@
+import _ from 'lodash'
+import JSZIP from 'jszip'
+import { JSONToXML } from './kmz'
+import { getDateFromTimestamp } from '@/utils/date'
+
+export default function kmzFile () {
+	// 云台信息
+	const droneModel = {
+		52: '0',
+		53: '1',
+		66: '0',
+		67: '1',
+		80: '0',
+		81: '1',
+	}
+	// 创建图斑航线
+	const create = async (waylineBasicInfo, lnglats, spotList) => {
+		try {
+			const date = new Date()
+			const username = window.localStorage.getItem('bs_username')
+			const updateTime = date.getTime()
+			const fileName = '图斑航线规划_' + date.getTime()
+			// 无人机机型、云台型号、航线高度
+			const { droneEnumValue, payloadEnumValue, height } = waylineBasicInfo
+			const defaultHeight = height || 100
+			// 起始点位 (参考点位-具体以机场为准)
+			const startPoint = lnglats[0]
+			const takeOffPoint = [startPoint[1], startPoint[0], 0].join(',')
+			// template.xml对象模版
+			const fileTemplate = {
+				author: { '#text': username },
+				createTime: { '#text': updateTime },
+				updateTime: { '#text': updateTime },
+				missionConfig: {
+					// 飞向首航点模式
+					flyToWaylineMode: { '#text': 'safely' },
+					// 航线结束动作
+					finishAction: { '#text': 'goHome' },
+					// 失控是否继续执行航线
+					exitOnRCLost: { '#text': 'goContinue' },
+					// 失控动作类型
+					executeRCLostAction: { '#text': 'goBack' },
+					// 安全起飞高度
+					takeOffSecurityHeight: { '#text': 20 },
+					// 参考起飞点
+					takeOffRefPoint: { '#text': takeOffPoint },
+					// 参考起飞点绝对高度
+					takeOffRefPointAGLHeight: { '#text': 0 },
+					// 全局航线过渡速度
+					globalTransitionalSpeed: { '#text': 10 },
+					// 全局返航高度
+					globalRTHHeight: { '#text': defaultHeight },
+					// 无人机参数
+					droneInfo: {
+						droneEnumValue: { '#text': droneEnumValue },
+						droneSubEnumValue: {
+							'#text': droneModel[payloadEnumValue],
+						},
+					},
+					// 云台参数
+					payloadInfo: {
+						payloadEnumValue: { '#text': payloadEnumValue },
+						payloadSubEnumValue: {
+							'#text': droneModel[payloadEnumValue],
+						},
+						payloadPositionIndex: { '#text': 0 },
+					},
+				},
+				Folder: {
+					// 预定义模板类型 - 航点飞行
+					templateType: { '#text': 'waypoint' },
+					// 是否使用全局航线过渡速度
+					useGlobalTransitionalSpeed: { '#text': 0 },
+					templateId: { '#text': 0 },
+					// 坐标系参数信息
+					waylineCoordinateSysParam: {
+						// 经纬度坐标系 - 固定值
+						coordinateMode: { '#text': 'WGS84' },
+						// 航点高程参考平面	- 相对高度
+						heightMode: { '#text': 'relativeToStartPoint' },
+					},
+					// 全局航线飞行速度
+					autoFlightSpeed: { '#text': 10 },
+					// 云台俯仰角控制模式
+					gimbalPitchMode: { '#text': 'usePointSetting' },
+					// 全局高度
+					globalHeight: { '#text': '100' },
+					// 全局偏航角模式参数 - 可使用当前默认值
+					globalWaypointHeadingParam: {
+						waypointHeadingMode: { '#text': 'followWayline' },
+						waypointHeadingAngle: { '#text': 0 },
+						waypointPoiPoint: {
+							'#text': '0.000000,0.000000,0.000000',
+						},
+						waypointHeadingPathMode: { '#text': 'followBadArc' },
+						waypointHeadingPoiIndex: { '#text': 0 },
+					},
+					// 全局航点类型 - 直线飞行,飞行器到点停
+					globalWaypointTurnMode: {
+						'#text': 'toPointAndStopWithDiscontinuityCurvature',
+					},
+					// 全局航段轨迹是否尽量贴合直线
+					globalUseStraightLine: { '#text': 1 },
+					// 航点点位信息 - 位置、事件等
+					Placemark: [],
+					// payloadParam: {
+					//   payloadPositionIndex: { '#text': 0 },
+					//   focusMode: { '#text': 'firstPoint' },
+					//   meteringMode: { '#text': 'average' },
+					//   returnMode: { '#text': 'singleReturnFirst' },
+					//   samplingRate: { '#text': '240000' },
+					//   scanningMode: { '#text': 'repetitive' },
+					//   imageFormat: { '#text': 'wide,zoom' },
+					// },
+				},
+			}
+			// 航点创建
+			const polygonNo = {
+				no: '',
+				index: 0,
+			}
+			lnglats.forEach((lnglat, index) => {
+				const obj = spotList.find(spot => spot.dkfw.find(item => _.isEqual(item, lnglat)))
+				let fileSuffix = ''
+				if (obj) {
+					if (polygonNo.no === obj.dkbh) {
+						polygonNo.index++
+					} else {
+						polygonNo.no = obj.dkbh
+						polygonNo.index = 1
+					}
+					fileSuffix = `图斑航线拍摄(${obj.dkbh}-${polygonNo.index})`
+				} else {
+					fileSuffix = '图斑航线拍摄(起点)'
+				}
+				const placemark = {
+					Point: {
+						// 航点经纬度
+						coordinates: { '#text': `${lnglat[0]},${lnglat[1]}` },
+					},
+					// 航点index
+					index: { '#text': index },
+					// 全局航线高度(椭球高)
+					ellipsoidHeight: { '#text': defaultHeight },
+					// 全局航线高度 (EGM96海拔高/相对起飞点高度/AGL相对地面高度)
+					height: { '#text': defaultHeight },
+					// 航点飞行速度
+					waypointSpeed: { '#text': 10 },
+					// 沿航线方向 - 可使用当前默认值
+					waypointHeadingParam: {
+						waypointHeadingMode: { '#text': 'followWayline' },
+						waypointHeadingAngle: { '#text': 0 },
+						waypointPoiPoint: {
+							'#text': '0.000000,0.000000,0.000000',
+						},
+						waypointHeadingPathMode: { '#text': 'followBadArc' },
+						waypointHeadingPoiIndex: { '#text': 0 },
+					},
+					// 航点类型
+					waypointTurnParam: {
+						waypointTurnMode: {
+							'#text': 'toPointAndStopWithDiscontinuityCurvature',
+						},
+						waypointTurnDampingDist: { '#text': 0.2 },
+					},
+					// 是否全局参数
+					useGlobalHeight: { '#text': 1 },
+					useGlobalSpeed: { '#text': 1 },
+					useGlobalHeadingParam: { '#text': 1 },
+					useGlobalTurnParam: { '#text': 1 },
+					useStraightLine: { '#text': 1 },
+					// 事件组
+					actionGroup: {
+						actionGroupId: { '#text': index },
+						actionGroupStartIndex: { '#text': index },
+						actionGroupEndIndex: { '#text': index },
+						actionGroupMode: { '#text': 'sequence' },
+						actionTrigger: {
+							actionTriggerType: { '#text': 'reachPoint' },
+						},
+						// 单个事件 - 如果是多个事件action可改成数组 action: [{}]
+						action: {
+							actionId: { '#text': 0 },
+							actionActuatorFunc: { '#text': 'takePhoto' },
+							actionActuatorFuncParam: {
+								fileSuffix: { '#text': fileSuffix },
+								payloadPositionIndex: { '#text': '0' },
+								useGlobalPayloadLensIndex: { '#text': '1' },
+							},
+						},
+					},
+				}
+				fileTemplate.Folder.Placemark.push(placemark)
+			})
+			const fileWaylines = waylinesContext(fileTemplate)
+
+			return {
+				fileName,
+				template: fileTemplate,
+				waylines: fileWaylines,
+			}
+		} catch (error) {
+			console.log(error)
+			return false
+		}
+	}
+
+	// 创建正常航线
+	const createNoramlWaylines = (waylineBasicInfo, lnglats) => {
+		try {
+			const date = new Date()
+			const username = window.localStorage.getItem('bs_username')
+			const updateTime = date.getTime()
+			const { year, month, day, hours, minutes } = getDateFromTimestamp(updateTime)
+			const fileName = '新建航线_' + year + month + day + hours + minutes
+			// 无人机机型、云台型号、航线高度
+			const { droneEnumValue, payloadEnumValue, height, waylineName } = waylineBasicInfo
+			const defaultHeight = height || 100
+			// 起始点位 (参考点位-具体以机场为准)
+			const startPoint = lnglats[0]
+			const takeOffPoint = [startPoint.latitude, startPoint.longitude, startPoint.height].join(',')
+			// template.xml对象模版
+			const fileTemplate = {
+				author: { '#text': username },
+				createTime: { '#text': updateTime },
+				updateTime: { '#text': updateTime },
+				missionConfig: {
+					// 飞向首航点模式
+					flyToWaylineMode: { '#text': 'safely' },
+					// 航线结束动作
+					finishAction: { '#text': 'goHome' },
+					// 失控是否继续执行航线
+					exitOnRCLost: { '#text': 'goContinue' },
+					// 失控动作类型
+					executeRCLostAction: { '#text': 'goBack' },
+					// 安全起飞高度
+					takeOffSecurityHeight: { '#text': 20 },
+					// 参考起飞点
+					takeOffRefPoint: { '#text': takeOffPoint },
+					// 参考起飞点绝对高度
+					takeOffRefPointAGLHeight: { '#text': 0 },
+					// 全局航线过渡速度
+					globalTransitionalSpeed: { '#text': 10 },
+					// 全局返航高度
+					globalRTHHeight: { '#text': defaultHeight },
+					// 无人机参数
+					droneInfo: {
+						droneEnumValue: { '#text': droneEnumValue },
+						droneSubEnumValue: {
+							'#text': droneModel[payloadEnumValue],
+						},
+					},
+					// 是否自动绕行(暂未验证M30T机型使用此参数后会不会无法起飞)
+					autoRerouteInfo: {
+						missionAutoRerouteMode: { '#text': 1 },
+						transitionalAutoRerouteMode: { '#text': 1 },
+					},
+					// 云台参数
+					payloadInfo: {
+						payloadEnumValue: { '#text': payloadEnumValue },
+						payloadSubEnumValue: {
+							'#text': droneModel[payloadEnumValue],
+						},
+						payloadPositionIndex: { '#text': 0 },
+					},
+				},
+				Folder: {
+					// 预定义模板类型 - 航点飞行
+					templateType: { '#text': 'waypoint' },
+					// 是否使用全局航线过渡速度
+					useGlobalTransitionalSpeed: { '#text': 0 },
+					templateId: { '#text': 0 },
+					// 坐标系参数信息
+					waylineCoordinateSysParam: {
+						// 经纬度坐标系 - 固定值
+						coordinateMode: { '#text': 'WGS84' },
+						// 航点高程参考平面	- 相对高度
+						heightMode: { '#text': 'relativeToStartPoint' },
+					},
+					// 全局航线飞行速度
+					autoFlightSpeed: { '#text': 10 },
+					// 云台俯仰角控制模式
+					gimbalPitchMode: { '#text': 'usePointSetting' },
+					// 全局高度
+					globalHeight: { '#text': '100' },
+					// 全局偏航角模式参数 - 可使用当前默认值
+					globalWaypointHeadingParam: {
+						waypointHeadingMode: { '#text': 'followWayline' },
+						waypointHeadingAngle: { '#text': 0 },
+						waypointPoiPoint: {
+							'#text': '0.000000,0.000000,0.000000',
+						},
+						waypointHeadingPathMode: { '#text': 'followBadArc' },
+						waypointHeadingPoiIndex: { '#text': 0 },
+					},
+					// 全局航点类型 - 直线飞行,飞行器到点停
+					globalWaypointTurnMode: {
+						'#text': 'toPointAndStopWithDiscontinuityCurvature',
+					},
+					// 全局航段轨迹是否尽量贴合直线
+					globalUseStraightLine: { '#text': 1 },
+					// 航点点位信息 - 位置、事件等
+					Placemark: [],
+					payloadParam: {
+						payloadPositionIndex: { '#text': 0 },
+						focusMode: { '#text': 'firstPoint' },
+						meteringMode: { '#text': 'average' },
+						returnMode: { '#text': 'singleReturnFirst' },
+						samplingRate: { '#text': '240000' },
+						scanningMode: { '#text': 'repetitive' },
+						imageFormat: { '#text': 'wide,zoom' },
+					},
+				},
+			}
+			lnglats.forEach((lnglat, index) => {
+				const placemark = {
+					Point: {
+						// 航点经纬度
+						coordinates: {
+							'#text': `${lnglat.longitude},${lnglat.latitude}`,
+						},
+					},
+					// 航点index
+					index: { '#text': index },
+					// 全局航线高度(椭球高)
+					ellipsoidHeight: { '#text': lnglat.height },
+					// 全局航线高度 (EGM96海拔高/相对起飞点高度/AGL相对地面高度)
+					height: { '#text': lnglat.height },
+					// 航点飞行速度
+					waypointSpeed: { '#text': lnglat?.speed || 10 },
+					// 沿航线方向 - 可使用当前默认值
+					waypointHeadingParam: {
+						waypointHeadingMode: { '#text': 'followWayline' },
+						waypointHeadingAngle: { '#text': 0 },
+						waypointPoiPoint: {
+							'#text': '0.000000,0.000000,0.000000',
+						},
+						waypointHeadingPathMode: { '#text': 'followBadArc' },
+						waypointHeadingPoiIndex: { '#text': 0 },
+					},
+					// 航点类型
+					waypointTurnParam: {
+						waypointTurnMode: {
+							'#text': 'toPointAndStopWithDiscontinuityCurvature',
+						},
+						waypointTurnDampingDist: { '#text': 0.2 },
+					},
+					// 是否全局参数
+					useGlobalHeight: { '#text': 1 },
+					useGlobalSpeed: { '#text': 0 },
+					useGlobalHeadingParam: { '#text': 1 },
+					useGlobalTurnParam: { '#text': 1 },
+					useStraightLine: { '#text': 1 },
+				}
+				if (lnglat?.actions) {
+					const actionGroup = {
+						actionGroupId: { '#text': index },
+						actionGroupStartIndex: { '#text': index },
+						actionGroupEndIndex: { '#text': index },
+						actionGroupMode: { '#text': 'sequence' },
+						actionTrigger: {
+							actionTriggerType: { '#text': 'reachPoint' },
+						},
+						// 单个事件 - 如果是多个事件action可改成数组 action: [{}]
+						// action: [{
+						//   actionId: { '#text': 0 },
+						//   actionActuatorFunc: { '#text': '' },
+						//   actionActuatorFuncParam: {},
+						// }],
+						action: [],
+					}
+					lnglat?.actions.forEach((action, index) => {
+						const singleAction = {
+							actionId: { '#text': index },
+							actionActuatorFunc: { '#text': '' },
+							actionActuatorFuncParam: {},
+						}
+						// actionGroup.action['actionActuatorFunc'] = { '#text': action.key }
+						// action.params.forEach(p => {
+						//   if (p.value || p.value !== '') {
+						//     actionGroup.action['actionActuatorFuncParam'][p.key] = { '#text': p.value }
+						//   }
+						// })
+						singleAction['actionActuatorFunc'] = {
+							'#text': action.key,
+						}
+						action.params.forEach(p => {
+							if (p.value || p.value !== '') {
+								singleAction['actionActuatorFuncParam'][p.key] = {
+									'#text': p.value,
+								}
+							}
+						})
+						if (lnglat?.actions.length > 1) {
+							actionGroup.action.push(singleAction)
+						} else {
+							actionGroup.action = singleAction
+						}
+					})
+					placemark.actionGroup = actionGroup
+				}
+				fileTemplate.Folder.Placemark.push(placemark)
+			})
+			const fileWaylines = waylinesContext(fileTemplate)
+			return {
+				fileName: waylineName || fileName,
+				template: fileTemplate,
+				waylines: fileWaylines,
+			}
+		} catch (error) {
+			console.log(error)
+			return error
+		}
+	}
+
+	// 创建面状航线
+	const createPlanarWayline = (waylineBasicInfo, lnglats) => { }
+
+	// 创建点状航线
+	const createPointWayLines = (waylineBasicInfo, points, settingInfo, dockPosition) => {
+		try {
+			const { droneEnumValue, payloadEnumValue, waylineName } = waylineBasicInfo
+
+			const {
+				imageFormat,
+				heightMode,
+				globalHeight,
+				autoFlightSpeed,
+				gimbalPitchMode,
+				waypointTurnMode,
+				waypointHeadingMode,
+				finishAction,
+				globalTransitionalSpeed,
+			} = settingInfo
+
+			const date = new Date()
+			const username = window.localStorage.getItem('bs_username')
+			const updateTime = date.getTime()
+			const { year, month, day, hours, minutes } = getDateFromTimestamp(updateTime)
+			const fileName = '新建航线_' + year + month + day + hours + minutes
+			// 无人机机型、云台型号、航线高度
+
+			const defaultHeight = 100
+			// 起始点位 (参考点位-具体以机场为准)
+			const takeOffPoint = [dockPosition.latitude, dockPosition.longitude, 0].join(',')
+
+			// template.xml对象模版
+			const fileTemplate = {
+				author: { '#text': username },
+				createTime: { '#text': updateTime },
+				updateTime: { '#text': updateTime },
+				missionConfig: {
+					// 飞向首航点模式
+					flyToWaylineMode: { '#text': 'safely' },
+					// 航线结束动作
+					finishAction: { '#text': finishAction || 'goHome' },
+					// 失控是否继续执行航线
+					exitOnRCLost: { '#text': 'executeLostAction' },
+					// 失控动作类型
+					executeRCLostAction: { '#text': 'goBack' },
+					// 安全起飞高度
+					takeOffSecurityHeight: { '#text': 120 },
+					// 参考起飞点
+					takeOffRefPoint: { '#text': takeOffPoint },
+					// 参考起飞点绝对高度
+					takeOffRefPointAGLHeight: { '#text': 0 },
+					// 全局航线过渡速度
+					globalTransitionalSpeed: { '#text': globalTransitionalSpeed || 10 },
+					// 全局返航高度
+					globalRTHHeight: { '#text': defaultHeight },
+					// 无人机参数
+					droneInfo: {
+						droneEnumValue: { '#text': droneEnumValue },
+						droneSubEnumValue: {
+							'#text': droneModel[payloadEnumValue],
+						},
+					},
+					// 是否自动绕行(暂未验证M30T机型使用此参数后会不会无法起飞)
+					autoRerouteInfo: {
+						missionAutoRerouteMode: { '#text': 1 },
+						transitionalAutoRerouteMode: { '#text': 1 },
+					},
+					// 云台参数
+					payloadInfo: {
+						payloadEnumValue: { '#text': payloadEnumValue },
+						payloadSubEnumValue: {
+							'#text': droneModel[payloadEnumValue],
+						},
+						payloadPositionIndex: { '#text': 0 },
+					},
+				},
+				Folder: {
+					// 预定义模板类型 - 航点飞行
+					templateType: { '#text': 'waypoint' },
+					// 是否使用全局航线过渡速度
+					useGlobalTransitionalSpeed: { '#text': 0 },
+					templateId: { '#text': 0 },
+					// 坐标系参数信息
+					waylineCoordinateSysParam: {
+						// 经纬度坐标系 - 固定值
+						coordinateMode: { '#text': 'WGS84' },
+						// 航点高程参考平面	- 相对高度
+						heightMode: heightMode,
+					},
+					// 全局航线飞行速度
+					autoFlightSpeed: { '#text': autoFlightSpeed || 10 },
+					// 云台俯仰角控制模式
+					gimbalPitchMode: { '#text': gimbalPitchMode || 'manual' },
+					// 全局高度
+					globalHeight: { '#text': globalHeight || '100' },
+					// 全局偏航角模式参数 - 可使用当前默认值
+					globalWaypointHeadingParam: {
+						waypointHeadingMode: { '#text': waypointHeadingMode || 'followWayline' },
+						waypointHeadingAngle: { '#text': 0 },
+						waypointPoiPoint: {
+							'#text': '0.000000,0.000000,0.000000',
+						},
+						waypointHeadingPathMode: { '#text': 'followBadArc' },
+						waypointHeadingPoiIndex: { '#text': 0 },
+					},
+					// 全局航点类型 - 直线飞行,飞行器到点停
+					globalWaypointTurnMode: {
+						'#text': waypointTurnMode || 'toPointAndStopWithDiscontinuityCurvature',
+					},
+					// 全局航段轨迹是否尽量贴合直线
+					globalUseStraightLine: { '#text': 1 },
+					// 航点点位信息 - 位置、事件等
+					Placemark: [],
+					payloadParam: {
+						payloadPositionIndex: { '#text': 0 },
+						focusMode: { '#text': 'firstPoint' },
+						meteringMode: { '#text': 'average' },
+						returnMode: { '#text': 'singleReturnFirst' },
+						samplingRate: { '#text': '240000' },
+						scanningMode: { '#text': 'repetitive' },
+						imageFormat: imageFormat,
+					},
+				},
+			}
+			points.length &&
+				points.forEach((detail, ind) => {
+					const { Point, index, height, ellipsoidHeight, actionGroup, waypointSpeed } = detail
+
+					const placemark = {
+						Point,
+						// 航点index
+						index,
+						// 全局航线高度(椭球高)
+						ellipsoidHeight,
+						// 全局航线高度 (EGM96海拔高/相对起飞点高度/AGL相对地面高度)
+						height,
+						// 航点飞行速度
+						waypointSpeed: { '#text': waypointSpeed || 10 },
+						// 沿航线方向 - 可使用当前默认值
+						waypointHeadingParam: {
+							waypointHeadingMode: {
+								'#text': waypointHeadingMode || 'followWayline',
+							},
+							waypointHeadingAngle: { '#text': 0 },
+							waypointPoiPoint: {
+								'#text': '0.000000,0.000000,0.000000',
+							},
+							waypointHeadingPathMode: { '#text': 'followBadArc' },
+							waypointHeadingPoiIndex: { '#text': 0 },
+						},
+						// 航点类型
+						waypointTurnParam: {
+							waypointTurnMode: {
+								'#text': waypointTurnMode || 'toPointAndStopWithDiscontinuityCurvature',
+							},
+							waypointTurnDampingDist: { '#text': 0.2 },
+						},
+						// 是否全局参数
+						useGlobalHeight: { '#text': 1 },
+						useGlobalSpeed: { '#text': 0 },
+						useGlobalHeadingParam: { '#text': 1 },
+						useGlobalTurnParam: { '#text': 1 },
+						useStraightLine: { '#text': 1 },
+					}
+					if (actionGroup) {
+						placemark.actionGroup = actionGroup
+					}
+
+					fileTemplate.Folder.Placemark.push(placemark)
+				})
+
+			const fileWaylines = waylinesContext(fileTemplate)
+			return {
+				fileName: waylineName || fileName,
+				template: fileTemplate,
+				waylines: fileWaylines,
+			}
+		} catch (error) {
+			console.log(error)
+			return error
+		}
+	}
+
+	const save = async fileInfo => {
+		const JsZip = new JSZIP()
+		const { fileName, template, waylines } = fileInfo
+		const templateXml = JSONToXML(template, '', true)
+		const waylinesWpml = JSONToXML(waylines, '', true)
+		JsZip.file('wpmz/template.kml', templateXml)
+		JsZip.file('wpmz/waylines.wpml', waylinesWpml)
+		const fileBlob = await JsZip.generateAsync({ type: 'blob' })
+		// saveAs(kmzFile, `${fileName}.kmz`)
+		return fileBlob
+	}
+
+	const waylinesContext = templateJson => {
+		const waylinesObj = {
+			// 标准模版
+			missionConfig: {
+				flyToWaylineMode: null,
+				finishAction: null,
+				exitOnRCLost: null,
+				executeRCLostAction: null,
+				takeOffSecurityHeight: null,
+				globalTransitionalSpeed: null,
+				globalRTHHeight: null,
+				droneInfo: null,
+				payloadInfo: null,
+			},
+			Folder: {
+				templateId: null,
+				executeHeightMode: null,
+				waylineId: null,
+				autoFlightSpeed: null,
+				/*
+		  waylines.wpml和template.xml的Placemark通用
+		  不同点:
+			waylineId = templateId
+			ellipsoidHeight、 height 替换成 executeHeight
+		*/
+				Placemark: null,
+			},
+		}
+		Object.keys(waylinesObj).forEach(key => {
+			if (Object.prototype.toString.call(waylinesObj[key]) === '[object Object]') {
+				Object.keys(waylinesObj[key]).forEach(item => {
+					waylinesObj[key][item] = templateJson[key][item]
+					if (item === 'executeHeightMode') {
+						waylinesObj[key][item] = templateJson[key].waylineCoordinateSysParam.heightMode
+					}
+					if (item === 'waylineId') {
+						waylinesObj[key][item] = templateJson[key].templateId
+					}
+					if (item === 'Placemark') {
+						const placemarks = _.cloneDeep(templateJson[key][item])
+						placemarks.forEach(placemark => {
+							placemark.executeHeight = {
+								'#text': placemark.ellipsoidHeight?.['#text'] || '',
+							}
+							delete placemark.ellipsoidHeight
+							delete placemark.height
+						})
+						waylinesObj[key][item] = placemarks
+					}
+				})
+			} else {
+				waylinesObj[key] = templateJson[key]
+			}
+		})
+		return waylinesObj
+	}
+
+	return {
+		create,
+		createNoramlWaylines,
+		createPlanarWayline,
+		createPointWayLines,
+		save,
+	}
+}
diff --git a/applications/drone-command/src/utils/cesium/useBoundary.js b/applications/drone-command/src/utils/cesium/useBoundary.js
index d04ffb9..053ddd6 100644
--- a/applications/drone-command/src/utils/cesium/useBoundary.js
+++ b/applications/drone-command/src/utils/cesium/useBoundary.js
@@ -6,19 +6,17 @@
 import { useStore } from 'vuex'
 import { getDeviceRegion, getDeviceRegionCount } from '@/api/home/aggregation'
 import userStore from '@/store/modules/user'
-import { areaCodeToArr, getContourByCode } from '@/utils/cesium/mapUtil'
-// import { getEllipse } from '@/hooks/useSingleDroneMap/useSingleDroneMap'
+import { areaCodeToArr, getContourByCode, getDockPolyLine, getLnglatAltitude } from '@/utils/cesium/mapUtil'
 import getBaseConfig from '@/buildConfig/config'
 import { getDroneStatusImage } from '@/utils/stateToImageMap/drone'
-import {
-	GroundCirclePrimitiveManager
-} from '@/utils/mapUtils'
+import { GroundCirclePrimitiveManager } from '@/utils/mapUtils'
+
+import lowBattery from '@/assets/images/aiNowFly/low-battery.svg'
+import mediumBattery from '@/assets/images/aiNowFly/medium-battery.svg'
+import fullBattery from '@/assets/images/aiNowFly/full-charge.svg'
 
 const { VITE_APP_BASE, VITE_APP_ENV, VITE_APP_REGION_URL } = import.meta.env
-// const { singleDockSystem } = getBaseConfig()
 const { singleDockSystem } = getBaseConfig()
-
-
 
 /**
  * 使用通用的边界
@@ -26,8 +24,15 @@
  * @param options
  */
 export const useBoundary = (viewer, options = {}) => {
-	const { multiple = 1.4, dockOptions = {}, boundaryChange, boundaryColor, dockRangeType, useDockHeight = false } = options
-	const { scrollShowDock = false, showDock = false } = dockOptions
+	const {
+		multiple = 1.4,
+		dockOptions = {},
+		boundaryChange,
+		boundaryColor,
+		dockRangeType,
+		useDockHeight = false,
+	} = options
+	const { scrollShowDock = false, showDock = false, showDockNameAndBattery = false } = dockOptions
 
 	const manager = new GroundCirclePrimitiveManager()
 	manager.init(viewer)
@@ -56,7 +61,7 @@
 	}
 
 	// 获取设备列表
-	async function getDeviceRegionFun () {
+	async function getDeviceRegionFun() {
 		const res = await getDeviceRegion({ areaCode: selectedAreaCode })
 		return res?.data?.data || []
 	}
@@ -100,60 +105,127 @@
 		return await res.json()
 	}
 
+	function getBase64Image(imgUrl) {
+		const img = new Image()
+		const canvas = document.createElement('canvas')
+		const ctx = canvas.getContext('2d')
+
+		return new Promise(resolve => {
+			img.onload = function () {
+				canvas.width = img.width
+				canvas.height = img.height
+				ctx.drawImage(img, 0, 0)
+				const base64 = canvas.toDataURL('image/png')
+				resolve(base64)
+			}
+			img.src = imgUrl
+		})
+	}
+
+	function batteryLevelSvg(batteryNum) {
+		if (batteryNum <= 30) {
+			return lowBattery
+		} else if (batteryNum > 30 && batteryNum <= 60) {
+			return mediumBattery
+		} else {
+			return fullBattery
+		}
+	}
+
+	async function nestSVG(nickname, batteryImgUrl, batteryNum) {
+		let txt = nickname.length < 4 ? 130 : nickname.length * 38
+		let tranx = nickname.length < 4 ? 86 : nickname.length * 26 + 3
+		const batteryBase64Image = await getBase64Image(batteryImgUrl)
+		const svg = `
+		  <svg width="${txt}" height="100" xmlns="http://www.w3.org/2000/svg">
+			<g transform="translate(${tranx}, 10)">
+				<!-- 电池图标 -->
+				<image href="${batteryBase64Image}" x="0" y="2" width="12" height="13"/>
+				<!-- 电量值 -->
+				<text x="12" y="10" font-size="14" fill="${
+					batteryNum <= 30 ? '#FF604B' : batteryNum >= 60 ? '#40FF5C' : '#00FFF2'
+				}"  text-anchor="start" dominant-baseline="middle" font-weight="bolder" font-family="Source Han Sans CN" text-rendering="geometricPrecision">
+					${batteryNum}%
+				</text>
+			</g>
+		  </svg>
+		`
+		return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`
+	}
+
 	// 无人机散点渲染
 	const droneSplashed = () => {
-		let showDockList = showDockSnList === null
-			? _.cloneDeep(initDockList)
-			: initDockList.filter(item => showDockSnList.includes(item.device_sn))
+		manager.removeAll()
+		let showDockList =
+			showDockSnList === null
+				? _.cloneDeep(initDockList)
+				: initDockList.filter(item => showDockSnList.includes(item.device_sn))
 
-		showDockList.forEach((item, index) => {
+		showDockList.forEach(async (item, index) => {
+			if (item.status === 'OFFLINE') return
 			let polyline = {}
 
 			if (dockRangeType === 2) {
 				manager.addCircleOutline({
 					data: {
 						lng: item.longitude,
-						lat: item.latitude
+						lat: item.latitude,
 					},
-					frameColor: Cesium.Color.fromCssColorString('#7FFFD4')
+					frameColor: Cesium.Color.fromCssColorString('#7FFFD4'),
 				})
 			} else {
 				manager.addCircle({
 					data: {
 						lng: item.longitude,
-						lat: item.latitude
+						lat: item.latitude,
 					},
-					materialColor: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.3)
+					materialColor: item.color ? item.color : Cesium.Color.CORNFLOWERBLUE.withAlpha(0.3),
 				})
 			}
 
 			if (useDockHeight) {
-				polyline = {
-					positions: new Cesium.CallbackProperty(() => {
-						const pointPosition = Cesium.Cartesian3.fromDegrees(+item.longitude, +item.latitude, +item.height)
-						if (!pointPosition) return []
-						// 获取点的位置
-						const cartographic = Cesium.Cartographic.fromCartesian(pointPosition)
-						// 获取地形高度
-						const terrainHeight = viewer.scene.globe.getHeight(cartographic) || 0
-						// 创建地面点位置
-						const groundPosition = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, terrainHeight)
-
-						return [pointPosition, groundPosition]
-					}, false),
-					width: 0.5,
-					material: Cesium.Color.WHITE,
-				}
+				polyline = getDockPolyLine(item, viewer)
 			}
-
+			const batteryImgUrl = batteryLevelSvg(item.capacity_percent)
+			const combinedImage = await nestSVG(item.nickname, batteryImgUrl, item.capacity_percent)
+			let pointObj = {}
+			try {
+				pointObj = await getLnglatAltitude(item.longitude, item.latitude, viewer)
+			} catch (e) {}
+			const position = Cesium.Cartesian3.fromDegrees(
+				+item.longitude,
+				+item.latitude,
+				useDockHeight ? +item.height : pointObj?.height || 0
+			)
+			if (showDockNameAndBattery) {
+				// 带电量
+				dockSource.entities.add({
+					position,
+					billboard: {
+						// new Cesium.ConstantProperty(pointData.status === 'OFFLINE' ? endingImg : unSelectedOnline),
+						image: combinedImage,
+					},
+				})
+			}
 			dockSource.entities.add({
-				position: Cesium.Cartesian3.fromDegrees(+item.longitude, +item.latitude, !useDockHeight ? 0 : +item.height),
+				label: {
+					text: item.nickname,
+					font: 'bold 16px Source Han Sans CN',
+					fillColor: Cesium.Color.WHITE,
+					outlineColor: Cesium.Color.BLACK,
+					outlineWidth: 2,
+					style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+					verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+					pixelOffset: new Cesium.Cartesian2(0, -24),
+				},
+				position,
 				polyline,
 				billboard: {
 					image: getDroneStatusImage(item.status),
 					width: 60,
 					height: 60,
-					eyeOffset: new Cesium.Cartesian3(0, 0, -5)
+					disableDepthTestDistance: Number.POSITIVE_INFINITY,
+					eyeOffset: new Cesium.Cartesian3(0, 0, -5),
 				},
 			})
 		})
@@ -186,7 +258,7 @@
 							positions: positions,
 							width: 5, // 直接设置宽度
 							clampToGround: true,
-							material: Cesium.Color.fromCssColorString(boundaryColor)
+							material: Cesium.Color.fromCssColorString(boundaryColor),
 						},
 						polygon,
 					})
@@ -205,7 +277,7 @@
 						positions: positions,
 						width: 1, // 直接设置宽度
 						clampToGround: true,
-						material: Cesium.Color.fromCssColorString(boundaryColor)
+						material: Cesium.Color.fromCssColorString(boundaryColor),
 					},
 				})
 			})
@@ -217,7 +289,6 @@
 	// 打开边界
 	const openContour = async () => {
 		const areaCode = selectedAreaCode || userAreaCode
-
 		viewer.scene.postRender.removeEventListener(determineScaling)
 		if (!areaCode) return
 		const hierarchy = areaCodeToArr(areaCode.slice(0, 6))
@@ -258,25 +329,29 @@
 			const outlineGJson = await getContourByCode(areaCode.slice(0, 6))
 			scalingJudgment.forEach(item => item.show && (item.outline = outlineGJson))
 			renderOutline(scalingJudgment[(hierarchy.length - 3) * -1])
-		} catch (e) { }
-		viewer.scene.postRender.addEventListener(determineScaling)
+		} catch (e) {}
+		try {
+			viewer?.scene?.postRender?.addEventListener(determineScaling)
+		}catch (e) {
+
+		}
 	}
 
 	// 关闭边界
-	function closeContour () {
+	function closeContour() {
 		removeAllEntities()
 		viewer.scene.postRender.removeEventListener(determineScaling)
 	}
 
 	// 飞向边界
-	async function flyToBoundary () {
+	async function flyToBoundary() {
 		// 单机巢系统
 		if (singleDockSystem) {
 			if (!initDockList.length) {
 				initDockList = await getDeviceRegionFun()
 			}
 			viewer?.camera.flyTo({
-				destination: Cesium.Cartesian3.fromDegrees(initDockList[0].longitude, initDockList[0].latitude, 24000),
+				destination: Cesium.Cartesian3.fromDegrees(initDockList[0].longitude, initDockList[0].latitude, 22000),
 				duration: 0,
 			})
 			return
@@ -286,7 +361,8 @@
 		const dataSource = await Cesium.GeoJsonDataSource.load(gJson)
 		if (!dataSource) return
 		viewer.dataSources.add(dataSource)
-
+		// 获取多边形边界所有点
+		let positionList = []
 		dataSource.entities.values.forEach(function (entity) {
 			if (entity.polygon) {
 				// 获取多边形的边界球
@@ -295,18 +371,16 @@
 					let cartographic = Cesium.Cartographic.fromCartesian(item)
 					let lng = Cesium.Math.toDegrees(cartographic.longitude) // 经度
 					let lat = Cesium.Math.toDegrees(cartographic.latitude) // 纬度
-
 					return [_.round(lng, 6), _.round(lat, 6)]
 				})
-
-				const newBox = boxTransformScale(curPolygonPosition, multiple)
-
-				viewer.camera.flyTo({
-					destination: Cesium.Rectangle.fromDegrees(...newBox),
-					offset: new Cesium.HeadingPitchRange(0, Cesium.Math.toRadians(-90), 0),
-					duration: 0.5,
-				})
+				positionList = positionList.concat(curPolygonPosition)
 			}
+		})
+		const newBox = boxTransformScale(positionList, multiple)
+		viewer.camera.flyTo({
+			destination: Cesium.Rectangle.fromDegrees(...newBox),
+			offset: new Cesium.HeadingPitchRange(0, Cesium.Math.toRadians(-90), 0),
+			duration: 0.5,
 		})
 
 		dataSource.entities.values.forEach(entity => {
@@ -320,7 +394,7 @@
 	 * 设置要显示的机巢列表
 	 * @param dockSns - 要显示的机巢设备序列号数组。如果为 undefined,则显示所有已初始化的机巢;如果为空数组,则不显示任何机巢。
 	 */
-	function setShowDock (dockSns) {
+	function setShowDock(dockSns) {
 		if (dockSns === undefined) {
 			showDockSnList = null
 		} else if (dockSns.length === 0) {
@@ -328,21 +402,31 @@
 		} else {
 			showDockSnList = dockSns
 		}
-
 		removeDockCover()
-
-		if (active === '县') droneSplashed()
+		if (!showDock) return
+		if (scrollShowDock ? active === '县' : true) {
+			droneSplashed()
+		}
 	}
-
+	function setDockCoverColor(arr) {
+		initDockList.forEach(item => {
+			arr.forEach(dock => {
+				item.color = dock.device_sn === item.device_sn ? dock.color : null
+			})
+		})
+		if (scrollShowDock ? active === '县' : true) {
+			droneSplashed()
+		}
+	}
 	onBeforeUnmount(() => {
 		manager.destroy()
 	})
-
 
 	return {
 		openContour,
 		closeContour,
 		flyToBoundary,
-		setShowDock
+		setShowDock,
+		setDockCoverColor,
 	}
 }
diff --git a/applications/drone-command/src/views/README.md b/applications/drone-command/src/views/README.md
new file mode 100644
index 0000000..47a255c
--- /dev/null
+++ b/applications/drone-command/src/views/README.md
@@ -0,0 +1,56 @@
+# 新增视图目录与页面说明
+
+以下为本次在 `src/views` 目录下新增的一级菜单目录及其二级菜单页面说明,命名遵循项目现有英文目录风格,并尽量避免与现有目录和页面产生冲突。
+
+## 一级菜单与目录
+- 数据驾驶舱:`dataCockpit`
+  - 页面:`dataCockpit/index.vue`
+- 侦测反制:`detectionCountermeasure`
+  - 页面:`detectionCountermeasure/index.vue`
+- 基础管理:`basicManage`
+  - 页面:`basicManage/index.vue`
+- 权限管理:`permissionManage`
+  - 页面:`permissionManage/index.vue`
+- 区域管理:`areaManage`
+  - 页面:`areaManage/index.vue`
+- 记录管理:`recordManage`
+  - 页面:`recordManage/index.vue`
+
+## 二级菜单与页面文件
+- 侦测反制(`detectionCountermeasure`)
+  - 设备应用配置:`deviceAppConfig.vue`
+  - 侦测范围管理:`detectionRange.vue`
+  - 任务调度:`taskSchedule.vue`
+  - 反制效果评估:`countermeasureEvaluation.vue`
+
+- 基础管理(`basicManage`)
+  - 设备出入库管理:`deviceStock.vue`
+  - 维护记录管理:`maintainRecord.vue`
+  - 设备报废管理:`deviceScrap.vue`
+
+- 权限管理(`permissionManage`)
+  - 用户管理:`permissionUser.vue`
+  - 部门管理:`permissionDept.vue`
+  - 角色管理:`permissionRole.vue`
+  - 系统操作日志:`operationLog.vue`
+
+- 区域管理(`areaManage`)
+  - 区域划分:`partition.vue`
+  - 派出所信息管理:`precinctInfo.vue`
+  - 场景配置管理:`sceneConfig.vue`
+  - 区域数据统计:`areaStatistics.vue`
+  - 防区管理:`defenseZone.vue`
+
+- 记录管理(`recordManage`)
+  - 报警记录:`alarmRecords.vue`
+  - 历史轨迹:`historyTracks.vue`
+
+## 命名与冲突规避
+- 目录名使用英文:与现有 `layerManagement`、`dataCenter` 等保持一致。
+- 权限相关目录使用 `permissionManage`,避免与现有 `authority`、`system` 产生语义或路由上的冲突。
+- 区域相关目录使用 `areaManage`,避免与现有 `base/region` 路由与页面混淆。
+- 新页面均为基础骨架,使用 Element Plus 的 `el-card` 作为占位,便于后续快速填充业务。
+
+## 后续接入建议
+- 路由接入:可在 `src/router/views/index.js` 中为上述页面配置静态路由,或保持现有“后端菜单驱动”的模式,在后端返回菜单时指向对应 `src/views` 路径。
+- 菜单图标与权限:按现有规则由后端下发,前端通过 `AvueRouter.formatRoutes` 与 `GetButtons` 自动生成与控制。
diff --git a/applications/drone-command/src/views/areaManage/areaStatistics.vue b/applications/drone-command/src/views/areaManage/areaStatistics.vue
new file mode 100644
index 0000000..02e1d7d
--- /dev/null
+++ b/applications/drone-command/src/views/areaManage/areaStatistics.vue
@@ -0,0 +1,18 @@
+<!--
+ * @Author       : yuan
+ * @Date         : 2026-01-06 16:37:57
+ * @LastEditors  : yuan
+ * @LastEditTime : 2026-01-07 10:57:46
+ * @FilePath     : \applications\drone-command\src\views\areaManage\areaStatistics.vue
+ * @Description  : 
+ * Copyright 2026 OBKoro1, All Rights Reserved. 
+ * 2026-01-06 16:37:57
+-->
+<template>
+  <basic-container>
+    区域数据统计
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss"></style>
diff --git a/applications/drone-command/src/views/areaManage/defenseZone.vue b/applications/drone-command/src/views/areaManage/defenseZone.vue
new file mode 100644
index 0000000..01a1e56
--- /dev/null
+++ b/applications/drone-command/src/views/areaManage/defenseZone.vue
@@ -0,0 +1,8 @@
+<template>
+  <basic-container>
+    防区管理
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss"></style>
diff --git a/applications/drone-command/src/views/areaManage/index.vue b/applications/drone-command/src/views/areaManage/index.vue
new file mode 100644
index 0000000..a142aa5
--- /dev/null
+++ b/applications/drone-command/src/views/areaManage/index.vue
@@ -0,0 +1,9 @@
+<template>
+   <basic-container>
+    区域数据
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/areaManage/partition.vue b/applications/drone-command/src/views/areaManage/partition.vue
new file mode 100644
index 0000000..14a6b62
--- /dev/null
+++ b/applications/drone-command/src/views/areaManage/partition.vue
@@ -0,0 +1,9 @@
+<template>
+   <basic-container>
+    区域划分
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/areaManage/precinctInfo.vue b/applications/drone-command/src/views/areaManage/precinctInfo.vue
new file mode 100644
index 0000000..7a259e0
--- /dev/null
+++ b/applications/drone-command/src/views/areaManage/precinctInfo.vue
@@ -0,0 +1,9 @@
+<template>
+   <basic-container>
+    派出所信息管理
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/areaManage/sceneConfig.vue b/applications/drone-command/src/views/areaManage/sceneConfig.vue
new file mode 100644
index 0000000..268b264
--- /dev/null
+++ b/applications/drone-command/src/views/areaManage/sceneConfig.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    场景配置管理
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/basicManage/deviceScrap.vue b/applications/drone-command/src/views/basicManage/deviceScrap.vue
new file mode 100644
index 0000000..bcc7e9c
--- /dev/null
+++ b/applications/drone-command/src/views/basicManage/deviceScrap.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    设备报废管理
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/basicManage/deviceStock.vue b/applications/drone-command/src/views/basicManage/deviceStock.vue
new file mode 100644
index 0000000..ff5f0d0
--- /dev/null
+++ b/applications/drone-command/src/views/basicManage/deviceStock.vue
@@ -0,0 +1,19 @@
+<!--
+ * @Author       : yuan
+ * @Date         : 2026-01-06 16:36:40
+ * @LastEditors  : yuan
+ * @LastEditTime : 2026-01-07 10:59:40
+ * @FilePath     : \applications\drone-command\src\views\basicManage\deviceStock.vue
+ * @Description  : 
+ * Copyright 2026 OBKoro1, All Rights Reserved. 
+ * 2026-01-06 16:36:40
+-->
+<template>
+  <basic-container>
+    设备出入库管理
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/basicManage/index.vue b/applications/drone-command/src/views/basicManage/index.vue
new file mode 100644
index 0000000..a46e0d8
--- /dev/null
+++ b/applications/drone-command/src/views/basicManage/index.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    基础管理
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/basicManage/maintainRecord.vue b/applications/drone-command/src/views/basicManage/maintainRecord.vue
new file mode 100644
index 0000000..68546d2
--- /dev/null
+++ b/applications/drone-command/src/views/basicManage/maintainRecord.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    维护记录管理
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/dataCockpit/components/MapContainer.vue b/applications/drone-command/src/views/dataCockpit/components/MapContainer.vue
new file mode 100644
index 0000000..f59947f
--- /dev/null
+++ b/applications/drone-command/src/views/dataCockpit/components/MapContainer.vue
@@ -0,0 +1,13 @@
+<template>
+	<div>
+
+	</div>
+</template>
+
+<script setup>
+
+</script>
+
+<style lang="scss" scoped>
+
+</style>
\ No newline at end of file
diff --git a/applications/drone-command/src/views/dataCockpit/index.vue b/applications/drone-command/src/views/dataCockpit/index.vue
new file mode 100644
index 0000000..68546d2
--- /dev/null
+++ b/applications/drone-command/src/views/dataCockpit/index.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    维护记录管理
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/detectionCountermeasure/countermeasureEvaluation.vue b/applications/drone-command/src/views/detectionCountermeasure/countermeasureEvaluation.vue
new file mode 100644
index 0000000..1743cd4
--- /dev/null
+++ b/applications/drone-command/src/views/detectionCountermeasure/countermeasureEvaluation.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    反制效果评估
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/detectionCountermeasure/detectionRange.vue b/applications/drone-command/src/views/detectionCountermeasure/detectionRange.vue
new file mode 100644
index 0000000..a9bcb54
--- /dev/null
+++ b/applications/drone-command/src/views/detectionCountermeasure/detectionRange.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    侦测范围管理
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/detectionCountermeasure/deviceAppConfig.vue b/applications/drone-command/src/views/detectionCountermeasure/deviceAppConfig.vue
new file mode 100644
index 0000000..d17b37a
--- /dev/null
+++ b/applications/drone-command/src/views/detectionCountermeasure/deviceAppConfig.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    设备应用配置
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/detectionCountermeasure/index.vue b/applications/drone-command/src/views/detectionCountermeasure/index.vue
new file mode 100644
index 0000000..b2fe3bf
--- /dev/null
+++ b/applications/drone-command/src/views/detectionCountermeasure/index.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    侦测反制
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/detectionCountermeasure/taskSchedule.vue b/applications/drone-command/src/views/detectionCountermeasure/taskSchedule.vue
new file mode 100644
index 0000000..2c81d62
--- /dev/null
+++ b/applications/drone-command/src/views/detectionCountermeasure/taskSchedule.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    任务调度
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/permissionManage/index.vue b/applications/drone-command/src/views/permissionManage/index.vue
new file mode 100644
index 0000000..8fbf8c1
--- /dev/null
+++ b/applications/drone-command/src/views/permissionManage/index.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    权限管理
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/permissionManage/operationLog.vue b/applications/drone-command/src/views/permissionManage/operationLog.vue
new file mode 100644
index 0000000..8fff920
--- /dev/null
+++ b/applications/drone-command/src/views/permissionManage/operationLog.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    系统操作日志
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/permissionManage/permissionDept.vue b/applications/drone-command/src/views/permissionManage/permissionDept.vue
new file mode 100644
index 0000000..691d25b
--- /dev/null
+++ b/applications/drone-command/src/views/permissionManage/permissionDept.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    部门管理
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/permissionManage/permissionRole.vue b/applications/drone-command/src/views/permissionManage/permissionRole.vue
new file mode 100644
index 0000000..5964911
--- /dev/null
+++ b/applications/drone-command/src/views/permissionManage/permissionRole.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    角色管理
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/permissionManage/permissionUser.vue b/applications/drone-command/src/views/permissionManage/permissionUser.vue
new file mode 100644
index 0000000..beb1f95
--- /dev/null
+++ b/applications/drone-command/src/views/permissionManage/permissionUser.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    用户管理
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/recordManage/alarmRecords.vue b/applications/drone-command/src/views/recordManage/alarmRecords.vue
new file mode 100644
index 0000000..d00088f
--- /dev/null
+++ b/applications/drone-command/src/views/recordManage/alarmRecords.vue
@@ -0,0 +1,9 @@
+<template>
+  <basic-container>
+    报警记录
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/recordManage/historyTracks.vue b/applications/drone-command/src/views/recordManage/historyTracks.vue
new file mode 100644
index 0000000..9d5513f
--- /dev/null
+++ b/applications/drone-command/src/views/recordManage/historyTracks.vue
@@ -0,0 +1,19 @@
+<!--
+ * @Author       : yuan
+ * @Date         : 2026-01-06 16:38:25
+ * @LastEditors  : yuan
+ * @LastEditTime : 2026-01-07 11:04:23
+ * @FilePath     : \applications\drone-command\src\views\recordManage\historyTracks.vue
+ * @Description  : 
+ * Copyright 2026 OBKoro1, All Rights Reserved. 
+ * 2026-01-06 16:38:25
+-->
+<template>
+  <basic-container>
+    历史轨迹
+  </basic-container>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+</style>
diff --git a/applications/drone-command/src/views/recordManage/index.vue b/applications/drone-command/src/views/recordManage/index.vue
new file mode 100644
index 0000000..d305540
--- /dev/null
+++ b/applications/drone-command/src/views/recordManage/index.vue
@@ -0,0 +1,12 @@
+<template>
+  <div class="page">
+    <el-card header="记录管理"></el-card>
+  </div>
+</template>
+<script setup>
+</script>
+<style scoped lang="scss">
+.page {
+  padding: 16px;
+}
+</style>
diff --git a/applications/drone-command/src/views/wel/components/backlog.vue b/applications/drone-command/src/views/wel/components/backlog.vue
deleted file mode 100644
index d2b2162..0000000
--- a/applications/drone-command/src/views/wel/components/backlog.vue
+++ /dev/null
@@ -1,434 +0,0 @@
-<template>
-  <div class="bocklogBox">
-    <div class="block">
-      <div class="titleBox">
-        <div class="title">待办事项</div>
-        <div class="rightTab">
-          <div class="titleItem" :class="item.name === checked ? 'activeItem' : ''" v-for="(item, index) in titleList"
-            :key="index" @click="titleClick(item, index)">
-            <div>
-              {{ item.name }}
-              <div class="dots">{{ item.number >= 100 ? '99+' : item.number }}</div>
-              
-            </div>
-          </div>
-        </div>
-      </div>
-
-      <div class="todo-items" v-if="todos.length > 0" v-loading="loading" element-loading-background="rgba(255, 255, 255, 0.5)">
-        <div v-for="(item, index) in todos" :key="index" class="todo-item" :style="getStatusStyle(item.status)"
-          @click="jumporder(item)">
-          <div class="status-indicator"><img :src="getStatus(item.status)" alt=""></div>
-
-          <div class="content-wrapper">
-            <div class="main-content">
-              <span class="status-tag" :style="{ color: getStatusColor(item.status) }">{{
-                checked == '智飞工单' ? zfstatusMap[item.status] : statusMap[item.status]
-              }}</span>
-              <span class="reads" :class="item.is_read === 0 ? 'unread' : ''"></span>
-              <span class="todo-text">{{ item.event_num }}</span>
-            </div>
-
-            <div class="action-area">
-          <!-- <span class="todo-date">{{ item.name }}</span> -->
-          <el-tooltip effect="dark" :content="item.name" placement="top">
-            <span class="todo-date">{{item.name}}</span>
-          </el-tooltip>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div v-else>
-        <el-empty>
-          <template #description>
-            <span class="custom-text">暂无数据</span>
-          </template>
-        </el-empty>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script setup>
-
-import db1 from '@/assets/images/workbench/db1.svg'
-import db2 from '@/assets/images/workbench/db2.svg'
-import db3 from '@/assets/images/workbench/db3.svg'
-import db4 from '@/assets/images/workbench/db4.svg'
-import db5 from '@/assets/images/workbench/db5.svg'
-import { getOrderCountApi, addOrderRecordApi, getOrderOrEventApi } from '@/api/home/index'
-import { onMounted } from 'vue'
-import { useRouter } from 'vue-router'
-import { useStore } from 'vuex'
-const userInfo = computed(() => store.getters.userInfo)
-const todos = ref([])
-const loading = ref(false)
-const router = useRouter()
-const store = useStore()
-const permission = computed(() => store.getters.permission)
-const checked = ref('事件工单')
-const todosCache = reactive({
-  '事件工单': [],
-  '智飞工单': []
-})
-const titleList = ref([
-  {
-    label: 'event_order_count',
-    name: '事件工单',
-    number: 0,
-  },
-  {
-    label: 'wayline_order_count',
-    name: '智飞工单',
-    number: 0,
-  },
-])
-
-const titleClick = async (item, index) => {
-todos.value =[]
-  checked.value = item.name
-  await getListMatter()
-}
-
-// * 事件工单中2=待审核,0=待处理,3=处理中
-// * 智飞工单中1: 待审核,2=已驳回,3=已通过
-const statusMap = {
-  0: '待处理',
-  2: '待审核',
-  3: '处理中',
-}
-const statusMapColor = {
-  0: { color: '#FF7411', backgroundImage: db3, borderLeftColor: '#FF7411' },
-  2: { color: '#FF472F', backgroundImage: db1, borderLeftColor: '#FF472F' },
-  3: { color: '#FFC300', backgroundImage: db4, borderLeftColor: '#FFC300' },
-}
-const zfstatusMap = {
-  1: '待审核',
-  2: '已驳回',
-  3: '已通过',
-}
-const zfstatusMapColor = {
-  1: { color: '#FF472F', backgroundImage: db2, borderLeftColor: '#FF472F' },
-  2: { color: '#4200DD', backgroundImage: db5, borderLeftColor: '#4200DD' },
-  3: { color: '#FF472F', backgroundImage: db2, borderLeftColor: '#FF472F' },
-}
-
-const getStatus = statusIndex => {
-  if (checked.value === '智飞工单') {
-    const style = zfstatusMapColor[statusIndex]
-    return style ? style.backgroundImage : ''
-  } else {
-    const style = statusMapColor[statusIndex]
-    return style ? style.backgroundImage : ''
-  }
-}
-const getStatusStyle = statusIndex => {
-  if (checked.value === '智飞工单') {
-    const style = zfstatusMapColor[statusIndex] || {
-      color: '#999',
-      borderLeftColor: '#999',
-    }
-    return {
-      color: style.color,
-      borderLeft: `3px solid ${style.borderLeftColor}`,
-    }
-  } else {
-    const style = statusMapColor[statusIndex] || {
-      color: '#999',
-      borderLeftColor: '#999',
-    }
-    return {
-      color: style.color,
-      borderLeft: `3px solid ${style.borderLeftColor}`,
-    }
-  }
-}
-// 获取状态对应的文字颜色
-const getStatusColor = statusIndex => {
-  if (checked.value === '智飞工单') {
-    return zfstatusMapColor[statusIndex]?.color || '#999'
-  } else {
-    return statusMapColor[statusIndex]?.color || '#999'
-  }
-}
-// 跳转到对应详情页
-const jumporder = val => {
-  if (checked.value === '智飞工单') {
-    const id = val.id
-    const status = val.status
-    getaddOrderRecord(id)
-    router.replace({
-      path: `/tickets/orderLog`,
-      query: {
-        id,
-        status,
-      },
-    })
-  } else {
-    getaddOrderRecord(val.id)
-    const orderNumber = val.event_num
-    router.replace({
-    path: `/tickets/ticket`,
-    query: { orderNumber },
-})
-  }
-}
-// 标记事件工单或智飞工单已读
-const getaddOrderRecord = async id => {
-  const ticketId = id
-  if (checked.value === '事件工单') {
-    loading.value = true
-    const type = 1
-    const res = await addOrderRecordApi(type, ticketId)
- 
-    
-  } else if (checked.value === '智飞工单') {
-    loading.value = true
-    const type = 2
-    const res = await addOrderRecordApi(type, ticketId)
-  }
-}
-// 获取事件工单和智飞工单的数量
-const getOrderCount = async () => {
-  const res = await getOrderCountApi(userInfo.value.detail.areaCode)
-  const data = res.data.data
-  titleList.value.forEach(item => {
-    if (data[item.label] !== undefined) {
-      item.number = data[item.label]
-    }
-  })
-}
-// 获取事件工单或者智飞工单的信息
-
-const getListMatter = async () => {
-  loading.value = true
-  const type = checked.value === '事件工单' ? 1 : 2
-  
-  // 使用缓存数据
-  if (todosCache[checked.value].length > 0) {
-    todos.value = todosCache[checked.value]
-  }
-  const todosParams = {
-    type:type,
-    area_code: userInfo.value.detail.areaCode,
-  }
-  try {
-    const res = await getOrderOrEventApi(todosParams)
-    const data = res.data.data || []
-    todos.value = data.sort((a, b) => a.is_read - b.is_read)  
-    todosCache[checked.value] = todos.value
-  } finally {
-    loading.value = false
-  }
-}
-onMounted(() => {
-  getListMatter()
-  getOrderCount()
-})
-</script>
-<style>
-.el-empty__image {
-  width: 100px !important;
-}
-</style>
-<style lang="scss" scoped>
-.bocklogBox {
-  width: 100%;
-  // height: 306px;
-  height: pxToVh(316);
-  background: rgba(255, 255, 255, 0.41);
-  box-shadow: 0px 3px 4px -1px rgba(125, 125, 125, 0.25);
-  border-radius: 8px 8px 8px 8px;
-  border: 2px solid #ffffff;
-  box-sizing: border-box;
-
-  .block {
-    margin: 11px 21px 13px 22px;
-
-    .titleBox {
-      display: flex;
-      justify-content: space-between;
-    }
-
-    .title {
-      font-family: 'Source Han Sans CN';
-      font-weight: bold;
-      font-size: 16px;
-      color: #363636;
-    }
-
-    .rightTab {
-      display: flex;
-      text-align: center;
-      padding-right: 10px;
-
-      .titleItem {
-        position: relative;
-        font-weight: 400;
-        font-size: 14px;
-        color: #7c8091;
-        margin-left: 18px;
-        cursor: pointer;
-      }
-
-      .activeItem {
-        border-radius: 0px 0px 0px 0px;
-        font-family: Source Han Sans CN, Source Han Sans CN;
-        font-weight: bold;
-        font-size: 14px;
-        color: #1c5cff;
-        border-bottom: 2px solid #1c5cff;
-      }
-
-      .dots {
-        width: 17px;
-        // height: 17px;
-        height: pxToVh(17);
-        border-radius: 50%;
-        background: #366fff;
-        color: #fff;
-        font-size: 9px;
-        position: absolute;
-        top: -10px;
-        right: -13px;
-        padding: 1px;
-        line-height: 17px;
-      }
-
-      .dots1 {
-        width: 17px;
-        // height: 17px;
-        height: pxToVh(17);
-        border-radius: 50%;
-        background: none !important;
-        color: #366fff !important;
-        font-size: 9px;
-        position: absolute;
-        top: -10px;
-        right: -13px;
-        padding: 1px;
-        line-height: 17px;
-      }
-    }
-
-    .todo-items {
-      margin-top: 10px;
-  transition: opacity 0.3s ease;
-      height: pxToVh(250);
-      overflow-y: scroll;
-       &:empty {
-    display: none;
-  }
-    }
-
-    .todo-item {
-      transition: 
-    transform 0.2s ease,
-    box-shadow 0.2s ease,
-    opacity 0.3s ease;
-      margin: 6px 0;
-      display: flex;
-      align-items: center;
-      cursor: pointer;
-      background: #ffffff;
-      border-radius: 8px;
-      box-shadow: 0px 2px 4px 0px rgba(173, 173, 173, 0.18);
-      transition: all 0.2s ease;
-      border-left: 4px solid transparent;
-      // height: 42px;
-      height: pxToVh(42);
-
-      &:hover {
-        transform: translateY(-2px);
-        box-shadow: 0 3px 8px rgba(0, 0, 0, 0.05);
-      }
-
-      .status-indicator {
-        margin-left: 3px;
-        width: 1.6rem;
-        height: 1.6rem;
-
-        img {
-          width: 100%;
-          height: 100%;
-        }
-      }
-
-      .content-wrapper {
-        flex: 1;
-        display: flex;
-        justify-content: space-between;
-        align-items: center;
-        // gap: 1rem;
-      }
-
-      .main-content {
-        display: flex;
-        align-items: center;
-        // gap: 0.8rem;
-
-        .status-tag {
-          font-weight: 400;
-          font-size: 14px;
-          margin-left: 2px;
-          // padding: 0.3rem 0;
-          border-radius: 12px;
-        }
-
-        .todo-text {
-          font-weight: 400;
-          font-size: 14px;
-         color: #5C6476;
-        }
-
-        .unread {
-          width: 5px;
-          height: 5px;
-          background: #1c5cff !important;
-          border-radius: 50%;
-          margin: 0 4px;
-        }
-
-        .reads {
-          width: 5px;
-          height: 5px;
-          background: transparent;
-          border-radius: 50%;
-          margin: 0 4px;
-        }
-      }
-
-      .action-area {
-        display: flex;
-        align-items: center;
-        margin-right: 22px;
-
-        img {
-          width: 15px;
-          height: 15px;
-        }
-
-        .todo-date {
-          font-weight: 400;
-      font-size: 14px;
-      color: #343434;
-      margin-left: 2px;
-      white-space: nowrap;      
-      overflow: hidden;          
-      text-overflow: ellipsis;  
-      max-width: 200px;        
-      display: inline-block;     
-        }
-      }
-    }
-  }
-
-  .custom-text {
-    font-size: 14px;
-    color: #7c8091;
-  }
-  .el-empty {
-  transition: opacity 0.3s ease;
-}
-}
-</style>
diff --git a/applications/drone-command/src/views/wel/components/calendarBox.vue b/applications/drone-command/src/views/wel/components/calendarBox.vue
deleted file mode 100644
index c2ed96c..0000000
--- a/applications/drone-command/src/views/wel/components/calendarBox.vue
+++ /dev/null
@@ -1,398 +0,0 @@
-<template>
-  <div class="calenBox">
-    <el-calendar ref="calendar" v-model="currentMonth"  :class="{
-    'five-rows': weeksNeeded === 5,
-    'six-rows': weeksNeeded === 6
-  }">
-      <template #header="{ date }">
-        <div>
-          <img :src="caleft" alt="" @click="selectDate('prev-month')" />
-          <el-date-picker
-            v-model="currentMonth"
-            type="month"
-            :clearable="false"
-            :prefix-icon="''"
-            @change="handleMonthChange"
-            :format="'YYYY年M月'"
-          />
-          <img :src="caright" alt="" @click="selectDate('next-month')" />
-        </div>
-      </template>
-      <template #date-cell="{ data }">
-        <div :class="data.isSelected ? 'is-selected' : ''">
-          <div class="date-number">{{ data.day.slice(8, 10) }}</div>
-          <div class="events">
-            <div
-              v-for="(event, index) in getEvents(data.day)"
-              :key="index"
-              class="event-item"
-              :class="event.type"
-              @click="jumpcalendar(event, data.day)"
-            >
-              <div class="imgBox">
-                <img :src="getEventIcon(event.type)" alt="" /> {{ event.name }}
-              </div>
-              <span>{{ event.value }}</span>
-            </div>
-          </div>
-        </div>
-      </template>
-    </el-calendar>
-  </div>
-</template>
-<script setup>
-import dayjs from 'dayjs';
-import { ref, watch, onMounted, nextTick } from 'vue';
-import { getCalen } from '@/api/home/index';
-import { useRouter } from 'vue-router';
-import ev1 from '@/assets/images/workbench/ev1.svg';
-import ev2 from '@/assets/images/workbench/ev2.svg';
-import caleft from '@/assets/images/workbench/caleft.png';
-import caright from '@/assets/images/workbench/caright.png';
-const router = useRouter();
-const calendar = ref();
-const events = ref({});
-const currentMonth = ref(new Date()); // 控制当前显示的月份
-const selectedDate = ref(null); // 控制选中的日期
-const params = ref({
-  end_date: undefined,
-  start_date: undefined,
-});
-
-const eventIcons = ref({
-  'work-order': ev1,
-  task: ev2,
-});
-
-const monthRange = getCurrentMonthRange();
-params.value = monthRange;
-// 检查日期是否是当前月份
-const isCurrentMonth = date => {
-  return dayjs(date).isSame(dayjs(), 'month');
-};
-// 处理月份选择器变化
-const handleMonthChange = val => {
-  const selectedMonth = new Date(val);
-  currentMonth.value = selectedMonth;
-
-  // 如果是当前月份,则选中当天;否则不选中
-  if (isCurrentMonth(selectedMonth)) {
-    selectedDate.value = new Date();
-  } else {
-    selectedDate.value = null;
-  }
-
-  // 强制更新日历视图
-  nextTick(() => {
-    updateCalendarSelection();
-  });
-};
-
-// 获取日历数据
-const getJobEventBar = () => {
-  getCalen(params.value).then(res => {
-    if (res.data.code !== 0) return;
-    const a = res.data.data;
-    const filteredData = {};
-    for (let date in a) {
-      filteredData[date] = a[date].filter(item => item.type !== 'work-order');
-    }
-    events.value = filteredData;
-  });
-};
-
-// 获取事件图标
-const getEventIcon = type => {
-  return eventIcons.value[type] || eventIcons.value.default;
-};
-
-// 获取当前月份范围
-function getCurrentMonthRange() {
-  return {
-    start_date: dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss'),
-    end_date: dayjs().endOf('month').format('YYYY-MM-DD HH:mm:ss'),
-  };
-}
-
-// 月份切换处理
-const selectDate = async val => {
-  if (!calendar.value) return;
-
-  if (val === 'prev-month') {
-    currentMonth.value = dayjs(currentMonth.value).subtract(1, 'month').toDate();
-  } else if (val === 'next-month') {
-    currentMonth.value = dayjs(currentMonth.value).add(1, 'month').toDate();
-  }
-
-  // 如果是当前月份,则选中当天;否则不选中
-  if (isCurrentMonth(currentMonth.value)) {
-    selectedDate.value = new Date();
-  } else {
-    selectedDate.value = null;
-  }
-
-  await nextTick();
-  updateCalendarSelection();
-};
-const updateCalendarSelection = () => {
-  // 清除所有选中状态
-  const selectedCells = document.querySelectorAll('.el-calendar-table td.is-selected');
-  selectedCells.forEach(cell => {
-    cell.classList.remove('is-selected');
-  });
-
-  // 如果是当前月份,设置当前日为选中状态
-  if (isCurrentMonth(currentMonth.value) && selectedDate.value) {
-    const currentDay = dayjs(selectedDate.value).date();
-    const calendarCells = document.querySelectorAll('.el-calendar-table td');
-
-    calendarCells.forEach(cell => {
-      const day = parseInt(cell.querySelector('.date-number').textContent);
-      if (day === currentDay) {
-        cell.classList.add('is-selected');
-      }
-    });
-  }
-};
-
-// 监听当前月份变化
-watch(
-  () => currentMonth.value,
-  newMonth => {
-    const newDate = dayjs(newMonth);
-    params.value = {
-      start_date: newDate.startOf('month').format('YYYY-MM-DD HH:mm:ss'),
-      end_date: newDate.endOf('month').format('YYYY-MM-DD HH:mm:ss'),
-    };
-    // 如果是当前月份,则选中当天;否则清除选中
-    if (isCurrentMonth(newMonth)) {
-      selectedDate.value = new Date();
-    } else {
-      selectedDate.value = null;
-    }
-    nextTick(() => {
-      updateCalendarSelection();
-    });
-
-    getJobEventBar();
-  },
-  { deep: true, immediate: true }
-);
-
-// 获取日期数字
-const getDate = date => {
-  return date.getDate();
-};
-
-// 获取对应日期的事件
-const getEvents = dateString => {
-  return events.value[dateString] || [];
-};
-const jumpcalendar = (event, day) => {
-  if (event.name === '工单') {
-    router.push({
-      path: '/tickets/ticket',
-      query: {
-        day: day,
-      },
-    });
-  } else {
-    router.push({
-      path: '/job/jobstatistics',
-      query: {
-        day: day,
-      },
-    });
-  }
-};
-
-const weeksNeeded = computed(() => {
-  const date = dayjs(currentMonth.value);
-  const firstDay = date.startOf('month').day(); // 0-6 (周日到周六)
-  const days = date.daysInMonth();
-
-  // 强制 2025 年 6 月显示六行
-   //if (date.year() === 2025 && date.month() === 5) {
-   //  return 6;
-  // }
-
-  // 其他月份按原逻辑计算
-  return Math.ceil((firstDay + days) / 7);
-})
-const isSixRows = computed(() => weeksNeeded.value > 5);
-onMounted(() => {
-  // 初始化时如果是当前月份,选中当天;否则不选中
-  if (isCurrentMonth(currentMonth.value)) {
-    selectedDate.value = new Date();
-  } else {
-    selectedDate.value = null;
-  }
-
-  nextTick(() => {
-    updateCalendarSelection();
-  });
-
-  getJobEventBar();
-});
-</script>
-
-<style lang="scss">
-.calenBox {
-  height: pxToVh(670);
-  // 隐藏按钮组中间按钮
-  .el-button-group > .el-button:not(:first-child):not(:last-child) {
-    display: none;
-  }
-  .el-calendar__body {
-    padding-top: 0 !important;
-  }
-  .date-number {
-    font-size: 13px !important;
-  }
-  .el-calendar__header {
-    justify-content: center;
-    margin-top: 10px;
-    padding-bottom: 0;
-    border-bottom: transparent;
-    div {
-      display: flex;
-      justify-content: center;
-      align-items: center;
-      img {
-        width: 28px;
-        height: 28px;
-        cursor: pointer;
-      }
-      span {
-        font-weight: bold;
-        font-size: 14px;
-        color: #363636;
-        margin: 0 18px;
-      }
-    }
-  }
-  .el-calendar-table td {
-    border: none;
-  }
-  .el-calendar-table tr td {
-    border: none;
-  }
-  .el-calendar-table .el-calendar-day {
-    box-sizing: border-box;
-    padding: 0.4rem 0.8rem 0.8rem 0.8rem;
-    background: #f5f7fa;
-    border-radius: 6px 6px 6px 6px;
-    border: 1px solid #efefef;
-    margin-right: 5px;
-    margin-bottom: 8px;
-  }
-  .el-input__prefix-inner {
-    display: none !important;
-  }
-  .el-input__suffix {
-    width: 0 !important;
-  }
-  .el-input__wrapper {
-    align-items: center !important;
-    cursor: text;
-    box-shadow: none !important;
-    display: inline-flex !important;
-    flex-grow: 1;
-    justify-content: center;
-  }
-  .el-input__inner {
-    font-weight: bold;
-    font-size: 14px;
-    color: #363636;
-  }
-  .el-date-editor.el-input,
-  .el-date-editor.el-input__wrapper {
-    height: var(--el-input-height, var(--el-component-size));
-
-    width: 170px !important;
-  }
-}
-</style>
-
-<style lang="scss" scoped>
-.calenBox {
-  margin-top: 10px;
-  height: pxToVh(632);
-  border-radius: 10px;
-  overflow: hidden;
-  background-color: #fff;
-  :deep(.el-date-picker .el-input__prefix-inner) {
-    display: none !important;
-  }
-  ::v-deep(.el-calendar) {
-    // 标题样式
-    .el-calendar__title {
-      font-weight: bold;
-      font-size: 14px;
-      color: #363636;
-    }
-
- &.five-rows .el-calendar-table .el-calendar-day {
-    height: pxToVh(92) !important;
-  }
-
-  &.six-rows .el-calendar-table .el-calendar-day {
-    height: pxToVh(78) !important;
-  }
-    // 选中日期样式
-    .el-calendar-table td.is-selected.is-today {
-      .el-calendar-day {
-        outline: 2px solid #409eff;
-        outline-offset: -2px;
-        border: none !important;
-        .date-number {
-          font-weight: bold;
-          color: #409eff;
-        }
-      }
-    }
-    .el-calendar-table td.is-selected {
-      background-color: transparent;
-    }
-
-  }
-
-  .event-item {
-    font-size: 12px;
-    text-align: center;
-    border-radius: 3px;
-    white-space: nowrap;
-    position: relative;
-    z-index: 2;
-
-    &.work-order {
-      font-weight: 400;
-      font-size: 12px;
-      color: #7b7b7b;
-
-      span {
-        font-weight: 600;
-        font-size: 14px;
-        color: #1c5cff;
-        margin-left: 2px;
-      }
-    }
-
-    &.task {
-      font-weight: 400;
-      font-size: 12px;
-      color: #7b7b7b;
-
-      span {
-        font-weight: 600;
-        font-size: 17px;
-        color: #029d36;
-        margin-left: 2px;
-      }
-    }
-    .imgBox {
-      font-size: 12px;
-    }
-  }
-}
-</style>
diff --git a/applications/drone-command/src/views/wel/components/flightStatistics.vue b/applications/drone-command/src/views/wel/components/flightStatistics.vue
deleted file mode 100644
index d37d615..0000000
--- a/applications/drone-command/src/views/wel/components/flightStatistics.vue
+++ /dev/null
@@ -1,524 +0,0 @@
-<template>
-  <div class="flyOrder">
-    <div class="fytitle">
-      <div class="cardtotal">
-        <p>飞行统计</p>
-        <img @click="refresh" src="/src/assets/images/workbench/st1.svg" alt="" />
-      </div>
-      <div class="time-card">
-        <div
-          class="card-item"
-          :class="item === checked ? 'active' : ''"
-          v-for="(item, index) in timeListEnum"
-          :key="index"
-          @click="timeClick(item, index)"
-        >
-          {{ timeListStr[index] }}
-        </div>
-      </div>
-    </div>
-    <div class="flycenter">
-      <div class="centerBox">
-        <div class="centerItem" v-for="(itemfly, index) in flyTypeList" :key="index">
-          <div class="flyimg"><img :src="itemfly.img" alt="" />{{ itemfly.name }}</div>
-          <div class="flydata">
-            <span>{{ itemfly.value }}</span
-            >{{ unitMap[itemfly.name] }}
-          </div>
-        </div>
-      </div>
-      <div class="lineChart">
-        <div class="lineBox" ref="chartRef"></div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script setup>
-import { getFly, getFlyTime, tongjiNestApi } from '@/api/home/index';
-import flyImg1 from '@/assets/images/workbench/fy2.svg';
-import flyImg2 from '@/assets/images/workbench/fy3.svg';
-import flyImg3 from '@/assets/images/workbench/fy4.svg';
-import * as echarts from 'echarts';
-import useEchartsResize from '@/hooks/useEchartsResize';
-let checked = ref('CURRENT_YEAR');
-let timeListStr = ['本周', '本月', '本年'];
-let timeListEnum = ['CURRENT_WEEK', 'CURRENT_MONTH', 'CURRENT_YEAR'];
-const dateSelect = ref('CURRENT_YEAR');
-const params = ref({
-  date_enum: 'CURRENT_YEAR',
-  device_sn: '',
-  end_date: undefined,
-  start_date: undefined,
-});
-const flyparams = ref({
-  date_enum: 'YEAR',
-  device_sn: '',
-  end_date: undefined,
-  start_date: undefined,
-});
-const chartRef = ref(null);
-let { chart: lineChart } = useEchartsResize(chartRef);
-// const keyMapping = {
-//   '飞行时长': 'total_flight_time',
-//   '飞行里程': 'total_flight_distance',
-//   //   任务成果: 'event_num',
-// };
-const unitMap = {
-  '飞行时长': '小时',
-  '飞行里程': '公里',
-
-};
-const flyTypeList = ref([
-  { name: '飞行时长', value: 0, img: flyImg1, key: 'hour_count' },
-  { name: '飞行里程', value: 0, img: flyImg2, key: 'flight_mileage' },
-
-]);
-// 飞行统计
-const getFlyList = () => {
- 
-
-  tongjiNestApi(flyparams.value).then(res => {
-    flyTypeList.value = flyTypeList.value.map(item => ({
-      ...item,
-      value: res.data.data[item.key] || 0,
-    }));
-
-  });
-};
-const getFlyTimeList = () => {
-  getFlyTime(params.value).then(res => {
-    const resList = res?.data?.data || [];
-
-    lineCharts(resList);
-  });
-};
-const refresh = () => {
-
-  getFlyList();
-  getFlyTimeList();
-
-  
-};
-let timeClick = (item, index) => {
-  checked.value = item;
-  params.value.date_enum = item;
-  dateSelect.value = item;
-  if (item === 'CURRENT_MONTH') {
-    flyparams.value.date_enum = 'MONTH';
-  } else if (item === 'CURRENT_WEEK') {
-    flyparams.value.date_enum = 'WEEK';
-  } else {
-    flyparams.value.date_enum = 'YEAR';
-  }
-  getFlyList();
-  getFlyTimeList();
-};
-// 折线/柱状图
-const lineCharts = bardata => {
-  const categories = bardata?.map(item => item.name); // x轴类别
-  const flight_distance = [];
-  const flight_time = [];
-  const event_num = [];
-  // /遍历数据填充各系列
-  bardata?.forEach(period => {
-    let hasDuration = false,
-      hasDistance = false,
-      hasResult = false;
-
-    period.data?.forEach(item => {
-      switch (item.name) {
-        case '飞行时长':
-          flight_time.push(parseFloat(item.value) || 0);
-          hasDuration = true;
-          break;
-        case '飞行里程':
-          flight_distance.push(parseFloat(item.value) || 0);
-          hasDistance = true;
-          break;
-      }
-    });
-
-    // 处理可能缺失的数据项
-    if (!hasDuration) flight_time.push(0);
-    if (!hasDistance) flight_distance.push(0);
-  });
-  var option = {
-    tooltip: {
-      trigger: 'axis',
-      axisPointer: {
-        type: 'shadow'
-      },
-      // position: 'top'
-
-    },
-    grid: {
-      left: '2%',
-      right: '4%',
-      bottom: '14%',
-      top: '9%', 
-      containLabel: true,
-    },
-    legend: {
-      data: ['飞行时长', '飞行里程'],
-      left: 'center',
-      // top: '5%',
-      color: '#383838',
-      itemWidth: 15,
-      itemHeight: 10,
-      itemGap: 25,
-      fontSize: '1.2rem',
-    },
-    xAxis: {
-      type: 'category',
-      data: categories,
-      axisLine: {
-        lineStyle: {
-          color: '#cdd5e2',
-        },
-      },
-      axisLabel: {
-        // interval: 0,
-        color: '#383838',
-      },
-    },
-    yAxis: [
-      {
-    type: 'value', 
-    name: '单位:小时',
-    nameTextStyle: {
-      color: '#383838',
-      fontSize: '1.2rem',
-      // padding: [0, 0, 14, 0]
-
-    },
-    axisLine: {
-      show: false,
-      lineStyle: {
-        color: '#cdd5e2',
-      },
-    },
-    splitLine: {
-      show: true,
-      lineStyle: {
-        type: 'dashed',
-        color: '#cdd5e2',
-        width: 1,
-        opacity: 0.5,
-      },
-    },
-    axisLabel: {
-      color: '#666666',
-    }
-  },
-      {
-        type: 'value', 
-        name: '单位:公里',
-        nameTextStyle: {
-          color: '#383838',
-          fontSize: '1.2rem',
-          // padding: [0, 0, 14, 0]
-        },
-     
-    
-        axisLine: {
-          show: false,
-          lineStyle: {
-            color: '#cdd5e2',
-          },
-        },
-        splitLine: {
-          show: false,
-          lineStyle: {
-            type: 'dashed',
-            color: '#cdd5e2',
-            width: 1,
-            opacity: 0.5,
-          },
-        },
-     
-        axisLabel: {
-          color: '#383838', // 直接配置颜色
-        },
-      },
-    ],
-    series: [
-    
-  // {//柱底圆片
-  //           name: "",
-  //           type: "pictorialBar",
-  //           symbolSize: [8, 10],//调整截面形状
-  //           symbolOffset: [0, 5],
-  //           z: 12,
-  //           itemStyle: {
-  //                   "normal": {
-  //                     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
-  //                               offset: 0,
-  //                              "color": "#91C1FF"
-  //                           },
-  //                           {
-  //                               offset: 1,
-  //                               "color": "#2970FF"
-  //                           }
-  //                       ],false)
-  //                   }
-  //               },
-  //           data: flight_time,
-  //       }, 
-        
-        //柱体
-        {
-            name: '飞行时长',
-            type: 'bar',
-             barWidth: '8px',
-            itemStyle: {
-
-                    "normal": {
-                        "color": {
-                            "x": 0,
-                            "y": 0,
-                            "x2": 0,
-                            "y2": 1,
-                            "type": "linear",
-                            "global": false,
-                            "colorStops": [{//第一节下面
-                                "offset": 0,
-                                "color": "#91C1FF"
-                            }, {
-                                "offset": 1,
-                                "color": "#2970FF"
-                            }]
-                        }
-                    }
-                },
-           data: flight_time,
-        },
-
-        //柱顶圆片
-        {
-           name: '',
-            type: "pictorialBar",
-          tooltip: { show: false },
-            symbolSize: [8, 8],//调整截面形状
-            symbolOffset: [0, -3],
-            z: 12,
-            symbolPosition: "end",
-                "itemStyle": {
-                    "normal": {
-                         color: new echarts.graphic.LinearGradient(0,0,0,1,
-                            [{
-                                    offset: 0,
-                                    color: "#9DC9FD"
-                                },
-                                {
-                                    offset: 1,
-                                    color: "#3279FA"
-                                }
-                            ],
-                            false
-                        ),
-                    }
-                },
-            data: flight_time,
-        },
-      {
-        name: '飞行里程',
-        type: 'line',
-        yAxisIndex: 1,
-        smooth: true,
-        itemStyle: {
-          color: '#01D0A7',
-        },
-        lineStyle: {
-          width: 2,
-          type: 'solid',
-          color: '#01D0A7',
-        },
-        symbol: 'circle',
-        symbolSize: 6,
-        areaStyle: {
-          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-            {
-              offset: 0,
-              color: 'rgba(1,208,167,0.4) '
-            },
-            {
-              offset: 1,
-              color: 'rgba(1,208,167,0) '
-            }
-          ])
-        },
-        data: flight_distance,
-      },
-    ],
-  };
-  lineChart.value.setOption(option);
-};
-onMounted(() => {
-  lineCharts();
-  getFlyList();
-  getFlyTimeList();
-});
-</script>
-
-<style scoped lang="scss">
-// 飞行统计
-.flyOrder {
-  border-radius: 8px 8px 8px 8px;
-  padding: 4px 14px 0 15px;
-  background: #ffffff !important;
-  margin-top: 5px;
-    height: pxToVh(471);
-
-  .fytitle {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    .cardtotal {
-      display: flex;
-      align-items: center;
-      margin-left: 9px;
-      img {
-        width: 17px;
-        height: 17px;
-        margin-left: 6px;
-        cursor: pointer;
-      }
-      p {
-        font-weight: bold;
-        font-size: 14px;
-        color: #363636;
-      }
-
-      span {
-        font-weight: 400;
-        font-size: 14px;
-        color: #7c8091;
-      }
-
-      .total-number {
-        font-family: 'Source Han Sans CN';
-
-        font-weight: bold;
-        font-size: 32px;
-        color: #2a54ff;
-      }
-    }
-    img {
-      width: 39px;
-      height: 38px;
-    }
-
-    span {
-      font-weight: bold;
-      font-size: 14px;
-      color: #363636;
-    }
-  }
-
-  .flycenter {
-    margin-top: 8px;
-
-    .centerBox {
-      display: flex;
-      justify-content: space-between;
-      margin-bottom: 10px;
-
-      .centerItem {
-        padding: 7px 7px 0 15px;
-        width: 196px;
-        flex: 1;
-       height: 41px;
-        //height: pxToVh(41);
-        background: #f6f8fe;
-        box-shadow: 0px 5px 4px 0px #ebf1ff;
-        border-radius: 8px 8px 8px 8px;
-        border: 1px solid #ffffff;
-        margin-right: 16px;
-        display: flex;
-        align-items: center;
-
-        img {
-          width: 15px;
-          height: 15px;
-          margin-right: 5px;
-        }
-
-        .flyimg {
-          display: flex;
-          align-items: center;
-          font-weight: 400;
-          font-size: 14px;
-          color: #7c8091;
-        }
-
-        .flydata {
-      margin-left: 11px;
-          text-align: right;
-          font-size: 14px;
-          color: #7c8091;
-
-          span {
-            font-weight: bold;
-            font-size: 24px;
-            color: #343434;
-            margin-right: 6px;
-          }
-        }
-      }
-    }
-
-    .lineChart {
-     height: pxToVh(374) ;
-      width: 100%;
-      .lineBox {
-        width: 100%;
-        height: 100%;
-      }
-    }
-  }
-}
-.time-card {
-  text-align: center;
-  // height: 30px;
-  height: pxToVh(30);
-  background: #ffffff;
-
-  border: 1px solid #e5e5e5;
-  font-weight: 400;
-  font-size: 14px;
-  color: #7c8091;
-  display: flex;
-  width: 282px;
-  margin-left: 15px;
-  border-radius: 4px;
-
-.card-item {
-    width: 94px;
-    height: 100%;
-    // line-height: 28px;
-    cursor: pointer;
-    font-family: 'Source Han Sans CN';
-    font-weight: 400;
-    font-size: 14px;
-    color: #7c8091;
-      border: 1px solid transparent;
-      display: flex;
-      align-items: center;
-      justify-content: center;
-  }
-
-  .card-item:first-child {
-    border-right: 1px solid #e5e5e5;
-  }
-
-  .card-item:nth-child(2) {
-    border-right: 1px solid #e5e5e5;
-  }
-
-  .card-item.active {
-    color: #1441ff;
-    border: 1px solid #1c5cff;
-  }
-}
-</style>
diff --git a/applications/drone-command/src/views/wel/components/flyratio.vue b/applications/drone-command/src/views/wel/components/flyratio.vue
deleted file mode 100644
index dccb14e..0000000
--- a/applications/drone-command/src/views/wel/components/flyratio.vue
+++ /dev/null
@@ -1,357 +0,0 @@
-<template>
-  <div class="machineNest">
-    <div class="nestTop">
-      <div class="card-title">
-       
-        <div class="cardtotal">
-          <p>机巢工单数量排名</p>
-           <img @click="refresh" src="/src/assets/images/workbench/st1.svg" alt="" />
-        </div>
-         <div class="time-card">
-        <div
-          class="card-item"
-          :class="item === checked ? 'active' : ''"
-          v-for="(item, index) in timeListEnum"
-          :key="index"
-          @click="timeClick(item, index)"
-        >
-          {{ timeListStr[index] }}
-        </div>
-      </div>
-      </div>
-    </div>
-    <div class="nestCenter">
-      <div class="chart" ref="echartsRef"></div>
-    </div>
-  </div>
-</template>
-
-<script setup>
-import * as echarts from 'echarts';
-import useEchartsResize from '@/hooks/useEchartsResize';
-import jc1 from '@/assets/images/workbench/jc1.png';
-import jc2 from '@/assets/images/workbench/jc2.png';
-import { industryJobNumPieChart } from '@/api/home/index';
-import { nextTick } from 'vue';
-let checked = ref('CURRENT_YEAR');
-let timeListStr = ['本周', '本月', '本年'];
-let timeListEnum = ['CURRENT_WEEK', 'CURRENT_MONTH', 'CURRENT_YEAR'];
-const params = ref({
-  date_enum: 'CURRENT_YEAR',
-  device_sn: '',
-  end_date: undefined,
-  start_date: undefined,
-});
-const dateSelect = ref('CURRENT_YEAR');
-const echartsRef = ref(null);
-let { chart: jcchart } = useEchartsResize(echartsRef);
-const jcOrder = ref([]);
-const props = defineProps({
-  dateSelect: {
-    type: String,
-  },
-});
-const refresh = () => {
-  // params.value.date_enum = 'CURRENT_YEAR';
-  // checked.value = 'CURRENT_YEAR';
-  // dateSelect.value = 'CURRENT_YEAR';
-getIndustryJobNumPieChart();
-};
-let timeClick = (item, index) => {
-  checked.value = item;
-  params.value.date_enum = item;
-  dateSelect.value = item;
-getIndustryJobNumPieChart();
-};
-// 空数据计算
-const isEmptyData = computed(() => {
-  return jcOrder.value.length === 0 ||
-         jcOrder.value.every(item => !item.name || item.value === 0)
-})
-// 图表初始化
-const initChart = () => {
-  if (echartsRef.value && !jcchart.value) {
-    jcchart.value = echarts.init(echartsRef.value)
-  }
-}
-// 获取机巢事件数据
-const getIndustryJobNumPieChart = () => {
-  industryJobNumPieChart(params.value).then(res => {
-    const resList = res?.data?.data || [];
-    jcOrder.value = resList;
-     nextTick(() => {
-        initChart()
-        pieInit(resList)
-      })
-  });
-};
-watch(
-  () => props.dateSelect,
-  newVal => {
-    params.date_enum = newVal;
-    getIndustryJobNumPieChart();
-  },
-  { immediate: true }
-);
-const pieInit = resList => {
-
-// if (!jcchart.value || !resList?.length) return
-  const validData = resList?.filter(item => item.name).sort((a, b) => b.value - a.value); // 从大到小排序
-  const colors = [
-    '#F87E04', // 橙色
-    '#FFC400', // 黄色
-    '#08BC44', // 绿色
-    '#07B5FF', // 蓝色
-    '#A98DFF', // 紫色
-    '#9ABFFF', // 浅蓝
-  ];
-
-  const optionData = {
-    yAxisData: validData.map(item => item.name),
-    seriesData: validData.map(item => item.value),
-  };
-
-  
-  const option = {
-    title: {
-      text: resList.length  ? '' :'暂无数据',
-      left: 'center',
-      top: 'center',
-      textStyle: {
-        color: '#999',
-        fontSize: '1.6rem',
-        fontWeight: 'normal'
-      }
-    },
-    tooltip: {
-      trigger: 'axis',
-      axisPointer: { type: 'shadow' },
-      formatter: '{b}: {c}',
-    },
-    grid: {
-      left: '5%',
-      right: '5%',
-      bottom: '3%',
-         top: '-3%', // 添加顶部间距
-      containLabel: true,
-    },
-    xAxis: {
-      type: 'value',
-      splitLine: { lineStyle: { color: '#E5E5E5' },show:false },
-      axisLabel: { color: '#7C8091',fontSize:'1.2rem',show:false },
-      boundaryGap: [0, 0.01],
-    },
-    yAxis: {
-      type: 'category',
-      data: optionData.yAxisData,
-      axisLabel: { color: '#7C8091' ,fontSize:'1.2rem',},
-      axisLine: { lineStyle: { color: '#D1D1D1' } ,show:false},
-      axisTick: { show: false },
-      // 确保排序后的数据从上到下显示(最大值在顶部)
-      inverse: true,
-      show:optionData.seriesData?.length  ? true : false
-    },
-    series: [
-      {
-        type: 'bar',
-        data: optionData.seriesData,
-        itemStyle: {
-        barBorderRadius: [0, 20, 20, 0],
-          color: params => {
-            // 前6项使用固定颜色循环,之后使用渐变
-            return params.dataIndex < colors.length
-              ? colors[params.dataIndex]
-              : new echarts.graphic.LinearGradient(0, 0, 1, 0, [
-                  { offset: 0, color: '#93BAFF' },
-                  { offset: 1, color: '#C5DEFF' },
-                ]);
-          },
-        },
-        barWidth: '30%',
-        label: {
-          show: true,
-          position: 'right',
-          formatter: '{c}',
-          itemStyle:{
-             fontSize: '1.4rem',
-             color: '#414243',
-             
-          }
-        },
-      },
-    ],
-  };
-
-  jcchart.value.setOption(option, true);
-};
-
-onMounted(() => {
-  getIndustryJobNumPieChart();
-});
-onBeforeUnmount(() => {
-  if (jcchart.value) {
-    jcchart.value.dispose()
-    jcchart.value = null
-  }
-})
-</script>
-
-<style scoped lang="scss">
-.machineNest {
-  width: 93%;
-  margin-left: 10px;
-  height: pxToVh(282);
-    border-radius: 8px 8px 8px 8px;
-  padding: 4px 14px 0 15px;
-  background: #ffffff !important;
-  .custom-text {
-    font-size: 14px;
-    color: #7c8091;
-  }
-  .nestTop {
-   .card-title {
-    display: flex;
-    margin-bottom: 10px;
-    align-items: center;
-    justify-content: space-between;
-    .cardtotal {
-      display: flex;
-      align-items: center;
-   
-      img {
-        width: 17px;
-        height: 17px;
-        margin-left: 6px;
-        cursor: pointer;
-      }
-      p {
-        font-weight: bold;
-        font-size: 14px;
-        color: #363636;
-      }
-
-      span {
-        font-weight: 400;
-        font-size: 14px;
-        color: #7c8091;
-      }
-
-      .total-number {
-        font-family: 'Source Han Sans CN';
-
-        font-weight: bold;
-        font-size: 32px;
-        color: #2a54ff;
-      }
-    }
-
-    img {
-      width: 36px;
-      height: 40px;
-    }
-  }
-    .cardtotal {
-      display: flex;
-      align-items: center;
-      margin-left: 9px;
-      p {
-        font-weight: bold;
-        font-size: 14px;
-        color: #363636;
-      }
-      span {
-        font-weight: 400;
-        font-size: 14px;
-        color: #7c8091;
-      }
-      .total-number {
-        font-family: 'Source Han Sans CN';
-        font-weight: bold;
-        font-size: 32px;
-        color: #2a54ff;
-      }
-    }
-    .status-grid {
-      margin-left: 30px;
-      display: grid;
-      grid-template-columns: repeat(2, 1fr);
-      row-gap: 17px;
-      .status-item {
-        display: flex;
-        text-align: center;
-        align-items: center;
-        justify-content: center;
-        background: #f6f8fe;
-        margin-right: 10px;
-        padding: 10px;
-        img {
-          width: 40px;
-          height: 40px;
-          margin-right: 13px;
-        }
-        .status-label {
-          font-size: 14px;
-          color: #383838;
-        }
-        .status-value {
-          font-family: 'Source Han Sans CN';
-          font-weight: bold;
-          font-size: 20px;
-        }
-      }
-    }
-  }
-  .nestCenter {
-    width: 100%;
- 
-    height: pxToVh(226);
-    .chart {
-      width: 100%;
-      height: 100%;
-    }
-  }
-}
-.time-card {
-  text-align: center;
-  // height: 30px;
-  height: pxToVh(30);
-  background: #ffffff;
-
-  border: 1px solid #e5e5e5;
-  font-weight: 400;
-  font-size: 14px;
-  color: #7c8091;
-  display: flex;
-  width: 282px;
-  margin-left: 15px;
-  border-radius: 4px;
-
-.card-item {
-    width: 94px;
-    height: 100%;
-    // line-height: 28px;
-    cursor: pointer;
-    font-family: 'Source Han Sans CN';
-    font-weight: 400;
-    font-size: 14px;
-    color: #7c8091;
-      border: 1px solid transparent;
-      display: flex;
-      align-items: center;
-      justify-content: center;
-  }
-
-  .card-item:first-child {
-    border-right: 1px solid #e5e5e5;
-  }
-
-  .card-item:nth-child(2) {
-    border-right: 1px solid #e5e5e5;
-  }
-
-  .card-item.active {
-    color: #1441ff;
-    border: 1px solid #1c5cff;
-  }
-}
-</style>
diff --git a/applications/drone-command/src/views/wel/components/proportionStatic.vue b/applications/drone-command/src/views/wel/components/proportionStatic.vue
deleted file mode 100644
index 7e0b1ae..0000000
--- a/applications/drone-command/src/views/wel/components/proportionStatic.vue
+++ /dev/null
@@ -1,395 +0,0 @@
-<template>
-  <div class="workOrder">
-    <div class="card-title">
-      <div class="cardtotal">
-        <p>工单统计占比</p>
-        <img @click="refresh" src="/src/assets/images/workbench/st1.svg" alt="" />
-      </div>
-      <div class="time-card">
-        <div
-          class="card-item"
-          :class="item === checked ? 'active' : ''"
-          v-for="(item, index) in timeListEnum"
-          :key="index"
-          @click="timeClick(item, index)"
-        >
-          {{ timeListStr[index] }} 
-        </div>
-      </div>
-    </div>
-    <div class="workorderbox">
-      <div class="card-group">
-        <div class="main-card">
-          <div class="status-grid">
-            <div class="status-item" v-for="(item, index) in eventTypeList" :key="index" @click="jumpEventDetails(item,index)">
-              <div class="statusCon">
-                <div class="status-label">{{ item.name }}</div>
-                <div class="status-value">{{ item.value }}<span>个</span></div>
-                <div class="ratio">
-                  占比
-                  <span :style="{ color: item.color }"
-                    >{{ item.rate || 0 }}%</span
-                  >
-                </div>
-              </div>
-              <img :src="item.img" alt="" />
-            </div>
-          </div>
-        </div>
-      </div>
-      <div class="charts">
-        <div class="chart" ref="echartsRef"></div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script setup>
-import useEchartsResize from '@/hooks/useEchartsResize';
-import { getJobEventByStatus, getEventStatusNum } from '@/api/home/index';
-import { getDateRange } from '@/utils/date'
-import overviewImg2 from '@/assets/images/workbench/tc2.svg';
-import overviewImg3 from '@/assets/images/workbench/tc3.svg';
-import overviewImg4 from '@/assets/images/workbench/tc4.svg';
-import overviewImg5 from '@/assets/images/workbench/tc5.svg';
-import { useRouter } from 'vue-router'
-import _ from 'lodash'
-const router = useRouter()
-let checked = ref('CURRENT_YEAR');
-let timeListStr = ['本周', '本月', '本年'];
-let timeListEnum = ['CURRENT_WEEK', 'CURRENT_MONTH', 'CURRENT_YEAR'];
-
-const dateRanges = {
-  today: getDateRange('today'),
-  week: getDateRange('week'),
-  month: getDateRange('month'),
-  year: getDateRange('year'),
-}
-
-const params = ref({
-  // date_enum: 'CURRENT_YEAR',
-  device_sn: '',
-  end_date: dateRanges['year'][1], // undefined,
-  start_date: dateRanges['year'][0], // undefined,
-  source:1,//数据来源
-});
-const dateSelect = ref('CURRENT_YEAR');
-const eventTypeList = ref([
-  { name: '待审核', value: 0, img: overviewImg2, color: '#FF472F', status: '2', rate: 0 ,tagging:'pending' },
-  { name: '待处理', value: 0, img: overviewImg3, color: '#FF7411', status: '0', rate: 0 ,tagging:'processing' },
-  { name: '处理中', value: 0, img: overviewImg4, color: '#FFC300', status: '3', rate: 0 ,tagging:'inProgress'},
-  { name: '已完成', value: 0, img: overviewImg5, color: '#0291A1', status: '4', rate: 0 ,tagging:'completed'},
-]);
-//  工单统计
-const getTypeData = () => {
-  getEventStatusNum(params.value).then(res => {
-    const resList = res?.data?.data || [];
-    let totalNum = resList.reduce((sum, item) => sum + (item.num || 0), 0) - resList[0].num;
-    resList.forEach(item => {
-      eventTypeList.value.forEach(item1 => {
-        if (item1.name === item.name) {
-          item1.value = item.num;
-          item1.rate = _.round((item.num/totalNum)*100, 1);
-        }
-      });
-    });
-    initChart(resList);
-  });
-};
-const refresh = () => {
-  // params.value.date_enum = 'CURRENT_YEAR';
-  // checked.value = 'CURRENT_YEAR';
-  // dateSelect.value = 'CURRENT_YEAR';
-  getTypeData();
-};
-
-let timeClick = (item, index) => {
-  checked.value = item;
-  // params.value.date_enum = item;
-  if(item === 'CURRENT_WEEK') {
-    params.value.start_date = dateRanges['week'][0]
-    params.value.end_date = dateRanges['week'][1]
-  } else if(item === 'CURRENT_MONTH') {
-    params.value.start_date = dateRanges['month'][0]
-    params.value.end_date = dateRanges['month'][1]
-  } else {
-    params.value.start_date = dateRanges['year'][0]
-    params.value.end_date = dateRanges['year'][1]
-  }
-
-  dateSelect.value = item;
-  getTypeData();
-};
-// 跳转事件工单
-const jumpEventDetails = (item,index)=>{
-// console.log('tiaozhuan',item);
-  router.replace({
-    path: `/tickets/ticket`, 
-    query: { tab: item.tagging,enumerateDates:checked.value }
-  });
-}
-// 图表
-const echartsRef = ref(null);
-let { chart } = useEchartsResize(echartsRef);
-const initChart = val => {
-  let totalNum = val[0].num //val.reduce((sum, item) => sum + item.num, 0);
-  let filteredData = val.filter(item => item.name !== "全部状态");
-  const data = {
-    total: {
-      title: '总计',
-      figure: totalNum.toString(), // 动态计算总数
-    },
-    data: filteredData.map(item => ({
-      value: item.num,
-      name: item.name,
-      rate: _.round((item.num/totalNum)*100, 1),
-    })),
-  };
-  const containerWidth = chart.value.clientWidth;
-  const isSmallScreen = containerWidth < 768; // 移动端判断
-  const echartsOption = {
-    color: ['#0291A1', '#FF7411', '#FFC300', '#FF472F'],
-    tooltip: {
-      trigger: 'item',
-      padding: 0,
-      borderWidth: 0,
-      formatter: params => {
-        return `<div style="background-color: rgba($color: #FFFFFF, $alpha: 0.95);
-          box-shadow: 0 0.4rem 0.9rem 0 rgba($color: #000000, $alpha: 0.1);
-          padding:0 1.2rem;
-          display: flex;
-          align-items: center;
-          border-radius: 0.4rem;
-          font-size: 1.2rem;" class="tooltip-area">
-          <p>${params.marker}${params.name}</p>
-          <h4 style="margin-left: 1rem;">${params.data.rate || params.percent}%</h4>
-        </div>`;
-      },
-    },
-    legend: {
-      show: false,
-    },
-    title: {
-      text: data.total.title,
-      textStyle: {
-        color: 'rgba(28, 31, 35, 0.80)',
-        fontSize: '1.2rem',
-        fontWeight: 'bold',
-      },
-      subtext: data.total.figure,
-      subtextStyle: {
-        color: '#1C1F23',
-        fontSize: '2rem',
-        fontWeight: '600',
-      },
-      top: '40%',
-      left: '48%',
-      textAlign: 'center', // 文本对齐
-    },
-    series: [
-      {
-        name: '',
-        type: 'pie',
-        radius: ['55%', '83%'],
-
-        label: {
-          show: false,
-        },
-        labelLine: {
-          show: false,
-          length: 3, // 调整引导线长度
-          length2: 5,
-          lineStyle: {
-            cap: 'round',
-          },
-          minTurnAngle: 45, // 防止小角度重叠
-        },
-        data: data.data,
-      },
-    ],
-  };
-
-  chart.value.setOption(echartsOption);
-};
-onMounted(() => {
-  getTypeData();
-});
-</script>
-
-<style scoped lang="scss">
-.workOrder {
-  border-radius: 8px 8px 8px 8px;
-  padding: 4px 14px 0 15px;
-  background: #ffffff !important;
-
-  height: pxToVh(282);
-  margin-bottom: 10px;
-  .card-title {
-    display: flex;
-    margin-bottom: 4px;
-    align-items: center;
-    justify-content: space-between;
-    .cardtotal {
-      display: flex;
-      align-items: center;
-      margin-left: 9px;
-      img {
-        width: 17px;
-        height: 17px;
-        margin-left: 6px;
-        cursor: pointer;
-      }
-      p {
-        font-weight: bold;
-        font-size: 14px;
-        color: #363636;
-      }
-
-      span {
-        font-weight: 400;
-        font-size: 14px;
-        color: #7c8091;
-      }
-
-      .total-number {
-        font-family: 'Source Han Sans CN';
-
-        font-weight: bold;
-        font-size: 32px;
-        color: #2a54ff;
-      }
-    }
-
-    img {
-      width: 36px;
-      height: 40px;
-    }
-  }
-  .workorderbox {
-    display: flex;
-    justify-content: space-between;
-    .card-group {
-      width: 60%;
-
-      .status-grid {
-        display: grid;
-        grid-template-columns: repeat(2, 1fr);
-        .status-item {
-          display: flex;
-          text-align: center;
-          justify-content: space-between;
-          height: pxToVh(97);
-          margin-bottom: 10px;
-          margin-right: 14px;
-          width: 144px;
-          background: #f6f8fe;
-          border-radius: 8px 8px 8px 8px;
-          cursor: pointer;
-          img {
-            width: 26px;
-            height: 26px;
-            padding: 9px 10px 9px 2px;
-          }
-
-          .statusCon {
-            box-sizing: border-box;
-            display: flex;
-            flex-direction: column;
-          justify-content: space-between;
-            padding: 10px 4px 39px 10px;
-            text-align: left;
-
-            .status-label {
-              font-weight: 400;
-              font-size: 14px;
-              text-align: left;
-              color: #383838;
-              margin: 0;
-            }
-
-            .ratio {
-              font-weight: 400;
-              font-size: 12px;
-              color: #363636;
-              white-space: nowrap;
-              text-align: left;
-              margin-top: 10px;
-            }
-
-            .status-value {
-              font-family: 'Source Han Sans CN';
-              font-weight: bold;
-              font-size: 28px;
-              height: 28px;
-              color: #363636;
-            margin-top: -6px;
-              display: inline-block;
-              transform: skewX(-5deg);
-
-              span {
-                font-weight: 400;
-                font-size: 14px;
-                color: #7c8091;
-              }
-            }
-          }
-        }
-      }
-    }
-
-    .charts {
-      margin-top: 20px;
-      width: 40%;
-      height: auto;
-
-      .chart {
-        width: 100%;
-        height: 100%;
-      }
-    }
-  }
-}
-.time-card {
-  text-align: center;
-  // height: 30px;
-  height: pxToVh(30);
-  background: #ffffff;
-
-  border: 1px solid #e5e5e5;
-  font-weight: 400;
-  font-size: 14px;
-  color: #7c8091;
-  display: flex;
-  width: 282px;
-  margin-left: 15px;
-  border-radius: 4px;
-
-  .card-item {
-    width: 94px;
-    height: 100%;
-    // line-height: 28px;
-    cursor: pointer;
-    font-family: 'Source Han Sans CN';
-    font-weight: 400;
-    font-size: 14px;
-    color: #7c8091;
-      border: 1px solid transparent;
-      display: flex;
-      align-items: center;
-      justify-content: center;
-  }
-
-  .card-item:first-child {
-    border-right: 1px solid #e5e5e5;
-  }
-
-  .card-item:nth-child(2) {
-    border-right: 1px solid #e5e5e5;
-  }
-
-  .card-item.active {
-    color: #1441ff;
-    border: 1px solid #1c5cff;
-  }
-}
-</style>
diff --git a/applications/drone-command/src/views/wel/components/statistics.vue b/applications/drone-command/src/views/wel/components/statistics.vue
deleted file mode 100644
index d8bf2d0..0000000
--- a/applications/drone-command/src/views/wel/components/statistics.vue
+++ /dev/null
@@ -1,498 +0,0 @@
-<template>
-  <div class="statistics">
-    <div class="title">
-      <div class="name">
-        <span> 设备统计</span>
-        <img @click="refresh" src="/src/assets/images/workbench/st1.png" alt="" />
-      </div>
-      <div class="arrow" @click="jumppage">
-        <img src="/src/assets/images/workbench/st2.png" alt="" />
-      </div>
-    </div>
-
-    <div class="grid-container" v-if="Object.keys(newtitleData).length > 0">
-      <div v-for="(item, index) in Object.keys(newtitleData)" :key="index" class="device-card">
-        <div class="device-title">
-          <img :src="test[item].img" :alt="newtitleData[item].name" />
-          <div class="itemcenter">
-            <div>{{ test[item]?.name || '--' }}</div>
-            <span class="shu">{{ newtitleData[item].total_num }}</span>
-            <span>{{ unitMap[test[item]?.name] }}</span>
-          </div>
-        </div>
-        <div class="status-list">
-          <template v-if="test[item]?.name == '机巢' || test[item]?.name == '无人机'">
-            <div v-for="statusKey in [4, 0, -1]" :key="statusKey" class="status-item"
-              :class="getStatusStyle(test[item]?.name, statusKey)"
-              :style="{ color: getStatusColor(test[item]?.name, statusKey) }">
-              <span class="indicator" :style="{
-                backgroundColor: getStatusBackground(test[item]?.name, statusKey),
-                color: getStatusColor(test[item]?.name, statusKey),
-              }"></span>
-              <span class="label">{{ getStatusLabel(test[item]?.name, statusKey) }}</span>
-              <span class="count">
-                {{ newtitleData[item].status_map[statusKey] }}
-                {{ unitMap[test[item]?.name] }}
-              </span>
-            </div>
-          </template>
-          <template v-else-if="test[item]?.name == '监控设备'">
-            <div v-for="statusKey in [1, 0]" :key="statusKey" class="status-item"
-              :class="getStatusStyle(test[item]?.name, statusKey)"
-              :style="{ color: getStatusColor(test[item]?.name, statusKey) }">
-              <span class="indicator" :style="{
-                backgroundColor: getStatusBackground(test[item]?.name, statusKey),
-                color: getStatusColor(test[item]?.name, statusKey),
-              }"></span>
-              <span class="label">{{ getStatusLabel(test[item]?.name, statusKey) }}</span>
-              <span class="count">
-                {{ newtitleData[item].status_map[statusKey] }}
-                {{ unitMap[test[item]?.name] }}
-              </span>
-            </div>
-          </template>
-          <template v-else-if="test[item]?.name == '无人机保险'">
-            <div v-for="statusKey in [1, 0, 2]" :key="statusKey" class="status-item"
-              :class="getStatusStyle(test[item]?.name, statusKey)"
-              :style="{ color: getStatusColor(test[item]?.name, statusKey) }">
-              <span class="indicator" :style="{
-                backgroundColor: getStatusBackground(test[item]?.name, statusKey),
-                color: getStatusColor(test[item]?.name, statusKey),
-              }"></span>
-              <span class="label">{{ getStatusLabel(test[item]?.name, statusKey) }}</span>
-              <span class="count">
-                {{ newtitleData[item].status_map[statusKey] }}
-                {{ test[item]?.name === '无人机' ? '架' : '个' }}
-              </span>
-            </div>
-          </template>
-          <template v-else-if="test[item]?.name == '无人机流量'">
-            <div v-for="statusKey in [0, 2, 1]" :key="statusKey" class="status-item"
-              :class="getStatusStyle(test[item]?.name, statusKey)"
-              :style="{ color: getStatusColor(test[item]?.name, statusKey) }">
-              <span class="indicator" :style="{
-                backgroundColor: getStatusBackground(test[item]?.name, statusKey),
-                color: getStatusColor(test[item]?.name, statusKey),
-              }"></span>
-              <span class="label">{{ getStatusLabel(test[item]?.name, statusKey) }}</span>
-              <span class="count">
-                {{ newtitleData[item].status_map[statusKey] }}
-                {{ test[item]?.name === '无人机流量' ? '架' : '个' }}
-              </span>
-            </div>
-          </template>
-          <template v-else>
-            <div v-for="(status, statusIndex) in newtitleData[item].status_map" :key="statusIndex" class="status-item"
-              :class="getStatusStyle(test[item]?.name, statusIndex)"
-              :style="{ color: getStatusColor(test[item]?.name, statusIndex) }">
-              <span class="indicator" :style="{
-                backgroundColor: getStatusBackground(test[item]?.name, statusIndex),
-                color: getStatusColor(test[item]?.name, statusIndex),
-              }"></span>
-              <span class="label">{{ getStatusLabel(test[item]?.name, statusIndex) }}</span>
-              <span class="count">{{ status }} {{ unitMap[test[item]?.name] }}</span>
-            </div>
-          </template>
-        </div>
-      </div>
-    </div>
-    <div class="grid-container" v-else>
-      <el-empty>
-        <template #description>
-          <span class="custom-text">暂无数据</span>
-        </template>
-      </el-empty>
-    </div>
-  </div>
-</template>
-
-<script setup>
-import { useStore } from 'vuex'
-import { computed } from 'vue'
-import titleImg1 from '@/assets/images/workbench/st3.svg'
-import titleImg2 from '@/assets/images/workbench/st4.svg'
-import titleImg3 from '@/assets/images/workbench/st8.svg'
-import titleImg4 from '@/assets/images/workbench/st5.svg'
-import titleImg5 from '@/assets/images/workbench/st6.svg'
-import titleImg6 from '@/assets/images/workbench/st9.svg'
-import { getStatics } from '@/api/home/index'
-import { useRouter } from 'vue-router'
-const router = useRouter()
-const store = useStore()
-const refresh = () => {
-  getStaticsList()
-}
-const jumppage = () => {
-  router.push({
-    path: '/device/index',
-  })
-}
-const userInfo = computed(() => store.getters.userInfo)
-const permission = computed(() => store.getters.permission)
-
-const newtitleData = ref({})
-
-const test = {
-  no_move_list: {
-    name: '机巢',
-    img: titleImg1,
-  },
-  plant_list: {
-    name: '无人机',
-    img: titleImg2,
-  },
-  flow_type_list: {
-    name: '无人机流量',
-    img: titleImg3,
-  },
-  monitor_list: {
-    name: '监控设备',
-    img: titleImg4,
-  },
-  move_list: {
-    name: '移动机巢',
-    img: titleImg5,
-  },
-
-  insure_list: {
-    name: '无人机保险',
-    img: titleImg6,
-  },
-}
-const statusSelect = {
-  4: '作业中',
-  0: '空闲中',
-  '-1': '离线中',
-}
-const flowStatus = {
-  0: '无忧',
-  1: '临期',
-  2: '不足',
-}
-const monitorStatus = {
-  0: '离线中',
-  1: '在线中',
-}
-
-const insureStatus = {
-  0: '临近到期',
-  1: '正常期限',
-  2: '保险过期'
-}
-const moveListStatus = {
-  '-1': '离线中',
-  4: '在线中',
-}
-// 样式配置对象
-const statusStyles = {
-  无人机保险: {
-    0: { class: 'expired', color: '#FFA600', background: '#FFA600' },
-    1: { class: 'normal', color: 'rgba(0, 180, 69, 1)', background: 'rgba(0, 180, 69, 1)' },
-    2: { class: 'flying', color: 'rgba(255, 36, 36, 1)', background: 'rgba(255, 36, 36, 1)' },
-  },
-
-  无人机流量: {
-    0: { class: 'offline', color: 'rgba(0, 180, 69, 1)', background: 'rgba(0, 180, 69, 1)' },
-    1: { class: 'flying', color: 'rgba(255, 36, 36, 1)', background: 'rgba(255, 36, 36, 1)' },
-    2: { class: 'flying', color: '#FFA600', background: '#FFA600' },
-  },
-  监控设备: {
-    0: { class: 'offline', color: 'rgba(186, 186, 186, 1)', background: 'rgba(186, 186, 186, 1)' },
-    1: { class: 'flying', color: 'rgba(255, 106, 0, 1)', background: 'rgba(255, 106, 0, 1)' },
-  },
-  移动机巢: {
-    '-1': { class: 'offline', color: 'rgba(186, 186, 186, 1)', background: 'rgba(186, 186, 186, 1)' },
-    4: { class: 'flying', color: 'rgba(255, 106, 0, 1)', background: 'rgba(255, 106, 0, 1)' },
-  },
-  // 默认样式配置
-  default: {
-    0: { class: 'warning', color: 'rgba(0, 180, 69, 1)', background: 'rgba(0, 180, 69, 1)' },
-    4: { class: 'success', color: 'rgba(255, 106, 0, 1)', background: 'rgba(255, 106, 0, 1)' },
-    '-1': { class: 'success', color: 'rgba(186, 186, 186, 1)', background: 'rgba(186, 186, 186, 1)' },
-  },
-}
-
-const getStatusStyle = (name, statusIndex) => {
-  const styleConfig = statusStyles[name] || statusStyles.default
-  return styleConfig[statusIndex]?.class || ''
-}
-const getStatusColor = (name, statusIndex) => {
-  const styleConfig = statusStyles[name] || statusStyles.default
-  return styleConfig[statusIndex]?.color || '#333'
-}
-//背景颜色获取方法
-const getStatusBackground = (name, statusIndex) => {
-  const styleConfig = statusStyles[name] || statusStyles.default
-  return styleConfig[statusIndex]?.background || styleConfig[statusIndex]?.color || '#F0F0F0'
-}
-const getStatusLabel = (itemName, statusCode) => {
-  switch (itemName) {
-    case '无人机流量':
-      return flowStatus[statusCode] || statusSelect[statusCode]
-    case '监控设备':
-      return monitorStatus[statusCode] || statusSelect[statusCode]
-    case '无人机保险':
-      return insureStatus[statusCode] || statusSelect[statusCode]
-    case '移动机巢':
-      return moveListStatus[statusCode] || statusSelect[statusCode]
-    default:
-      return statusSelect[statusCode] || `未知状态(${statusCode})`
-  }
-}
-
-const getStaticsList = () => {
-  getStatics(userInfo.value.detail.areaCode).then(res => {
-    //  console.log('permission.value', permission.value);
-    // console.log('设备', res.data.data);
-    if (permission.value?.device_statistics_six) {
-      const { move_list, monitor_list, ...filteredData } = res.data.data
-      newtitleData.value = filteredData
-      return
-    }
-
-    for (let key in res.data.data) {
-      if (permission.value?.device_statistics_four) {
-        const { flow_type_list, insure_list, ...filteredData } = res.data.data
-        newtitleData.value = filteredData
-        return
-      }
-    }
-  })
-}
-
-const unitMap = {
-  无人机流量: '架',
-  无人机: '架',
-  机巢: '个',
-  无人机保险: '个',
-  监控设备: '个',
-  移动机巢: '个',
-}
-watch(
-  () => [
-    userInfo.value.detail?.areaCode,
-    permission.value.device_statistics_six,
-    permission.value?.device_statistics_four,
-  ],
-  () => getStaticsList(),
-  { immediate: true }
-)
-onMounted(() => {
-  getStaticsList()
-})
-</script>
-
-<style scoped lang="scss">
-.statistics {
-  // height: 174px;
-  height: pxToVh(174);
-  background: #ffffff;
-  border-radius: 8px 8px 8px 8px;
-  margin-bottom: 10px;
-  font-size: clamp(12px, 2vw, 24px);
-
-  .title {
-    padding: 14px 14px 0 21px;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-
-    .name {
-      display: flex;
-      align-items: center;
-
-      span {
-        margin-right: 4px;
-        font-weight: bold;
-        font-size: 16px;
-        color: #363636;
-        font-family: 'Source Han Sans CN';
-      }
-
-      img {
-        cursor: pointer;
-      }
-    }
-
-    .arrow {
-      cursor: pointer;
-    }
-  }
-
-  .grid-container {
-    padding: 0 14px 0 21px;
-    // display: grid;
-    // grid-template-columns: repeat(4, 1fr);
-    height: pxToVh(80);
-    display: flex;
-    justify-content: space-around;
-
-    :deep(.el-empty) {
-      width: 60px;
-      height: pxToVh(60);
-
-      .el-empty__image {
-        width: 60px !important;
-        height: pxToVh(60) !important;
-      }
-
-      .custom-text {
-        font-size: 12px;
-        color: #7c8091;
-      }
-    }
-
-    .device-card {
-      display: flex;
-      align-items: center;
-      margin-top: 30px;
-
-      .device-title {
-        display: flex;
-        align-items: center;
-
-        img {
-          width: 64px;
-          height: 64px;
-        }
-      }
-
-      .itemcenter {
-        margin-left: 5px;
-        font-weight: 400;
-        font-size: 14px;
-        color: #343434;
-
-        div {
-          margin-top: 5px;
-        }
-
-        .shu {
-          font-weight: bold;
-          font-size: 36px;
-          color: #363636;
-          display: inline-block;
-          transform: skewX(-5deg);
-          font-family: 'Source Han Sans CN';
-          // font-size: calc(12px + 0.5vw);
-          margin-right: 2px;
-        }
-
-        span {
-          font-weight: 400;
-          font-size: 12px;
-          color: #7c8091;
-        }
-      }
-    }
-
-    .status-list {
-      display: grid;
-      margin-left: 5px;
-
-      .status-item {
-        display: flex;
-        align-items: center;
-        border-radius: 6px;
-        background: #fff;
-        font-size: 12px;
-        gap: 10px;
-        margin-bottom: 5px;
-
-        .indicator {
-          width: 6px;
-          height: 6px;
-          border-radius: 50%;
-        }
-
-        .label {
-          flex: 1;
-          // font-size: clamp(12px, 1vw, 14px);
-        }
-
-        .count {
-          // font-size: clamp(14px, 1.1vw, 16px);
-          font-size: 14px;
-          color: #7c8091;
-        }
-      }
-    }
-  }
-
-  .grid-container1 {
-    // padding: 0 14px 0 21px;
-    display: grid;
-    grid-template-columns: repeat(6, 1fr);
-
-    .device-card {
-      display: flex;
-      flex-direction: column;
-      align-items: center;
-
-      .device-title {
-        display: flex;
-        align-items: center;
-
-        img {
-          width: 64px;
-          height: 64px;
-        }
-      }
-
-      .itemcenter {
-        margin-left: 14px;
-        font-weight: 400;
-        font-size: 14px;
-        color: #343434;
-
-        .shu {
-          font-weight: bold;
-          font-size: 36px;
-          color: #363636;
-          display: inline-block;
-          transform: skewX(-5deg);
-          font-family: 'Source Han Sans CN';
-          margin-right: 2px;
-        }
-
-        span {
-          font-weight: 400;
-          font-size: 12px;
-          color: #7c8091;
-        }
-      }
-    }
-
-    .status-list {
-      display: grid;
-
-      .status-item {
-        display: flex;
-        align-items: center;
-        border-radius: 6px;
-        background: #fff;
-        font-size: 12px;
-        gap: 10px;
-        margin-bottom: 5px;
-
-        .indicator {
-          width: 6px;
-          height: 6px;
-          border-radius: 50%;
-        }
-
-        .label {
-          flex: 1;
-          font-size: clamp(12px, 1vw, 14px);
-        }
-
-        .count {
-          font-size: clamp(12px, 1.1vw, 16px);
-          font-size: 14px;
-          color: #7c8091;
-        }
-      }
-    }
-  }
-}
-</style>
diff --git a/applications/drone-command/src/views/wel/components/taskOutcome.vue b/applications/drone-command/src/views/wel/components/taskOutcome.vue
deleted file mode 100644
index e1ea1ad..0000000
--- a/applications/drone-command/src/views/wel/components/taskOutcome.vue
+++ /dev/null
@@ -1,315 +0,0 @@
-<template>
-  <div class="taskOutcome">
-    <div class="card-title">
-      <div class="cardtotal">
-        <p>任务成果</p>
-        <span class="total-number">{{totalNum}}</span>
-        <p>个</p>
-        <img @click="refresh" src="/src/assets/images/workbench/st1.svg" alt="" />
-      </div>
-      <div class="time-card">
-        <div
-          class="card-item"
-          :class="item === checked ? 'active' : ''"
-          v-for="(item, index) in timeListEnum"
-          :key="index"
-          @click="timeClick(item, index)"
-        >
-          {{ timeListStr[index] }}
-        </div>
-      </div>
-    </div>
-    <div class="chart" ref="echartsRef"></div>
-  </div>
-</template>
-
-<script setup>
-import { getdisposeApi, gettaskOutcomApi } from '@/api/home/index';
-import * as echarts from 'echarts';
-import dayjs from 'dayjs';
-import useEchartsResize from '@/hooks/useEchartsResize';
-let checked = ref('CURRENT_YEAR');
-let timeListStr = ['本周', '本月', '本年'];
-let timeListEnum = ['CURRENT_WEEK', 'CURRENT_MONTH', 'CURRENT_YEAR'];
-const params = ref({
-  dateEnum: 'CURRENT_YEAR',
-  device_sn: '',
-  end_date: undefined,
-  start_date: undefined,
-});
-const totalNum = ref(0)
-const dateSelect = ref('CURRENT_YEAR');
-const refresh = () => {
-
-  getBarChartData(params.value);
-};
-let timeClick = (item, index) => {
-  checked.value = item;
-  params.value.dateEnum = item;
-  dateSelect.value = item;
- getBarChartData(params.value);
-};
-const seriesObj = {};
-const echartsOption = {
-    title: {
-      text: seriesObj ? '' :'暂无数据',
-      left: 'center',
-      top: 'center',
-      textStyle: {
-        color: '#999',
-        fontSize: '1.6rem',
-        fontWeight: 'normal'
-      }
-    },
-  tooltip: {
-    trigger: 'axis',
-    axisPointer: {
-      type: 'shadow',
-    },
-  },
-  legend: {
-    itemWidth: 14,
-    itemHeight: 8,
-    data: ['照片总数', '视频总数', 'AI识别', '全景', '三维', '正射'], 
-    top: '-1%',
-    textStyle: {
-      color: '#383838',
-      fontSize: 12,
-    },
-  },
-  grid: {
-    top: '9%', 
-    left: 0,
-    right: 0,
-    bottom: 0,
-    containLabel: true,
-  },
-  xAxis: {
-    type: 'category',
-    axisLine: {
-      show: true, // 隐藏轴线
-      lineStyle: {
-        color: '#cdd5e2',
-      },
-    },
-    axisLabel: {
-      color: '#383838',
-      // interval: 0, // 显示所有标签
-    },
-    data: [],
-  },
-  yAxis: [
-    {
-      type: 'value',
-      name: '',
-      nameTextStyle: {
-        color: '#E6F7FF',
-        fontSize: '1rem',
-        padding: [-8, 0, 0, 0], // 调整单位文字位置,向左偏移
-        verticalAlign: 'top',
-        lineHeight: 12,
-      },
-      axisLabel: {
-        interval: 0, // 显示所有标签
-        color: '#383838',
-        fontFamily: 'Source Han Sans CN, Source Han Sans CN',
-        fontWeight: 400,
-        fontSize: 10,
-      },
-      axisLine: {
-        lineStyle: {
-          color: '#383838',
-        },
-      },
-      splitLine: {
-        lineStyle: {
-          color: '#cdd5e2',
-          type: 'dashed', // 设置为虚线
-        },
-      },
-    },
-  ],
-  series: [],
-};
-const eventTypeList = ref([
-  {name: '照片总数', value: 0, type: '0', color: '#ED672D' },
-  { name: '视频总数', value: 0, type: '1', color: '#F5B763' },
-  { name: 'AI识别', value: 0, type: '2', color: '#6851C3' },
-  {  name: '全景', value: 0, type: '5', color: '#FFE100' },
-  {  name: '三维', value: 0, type: '3', color: '#04C598' },
-  {  name: '正射', value: 0, type: '4', color: '#3673E8' },
-]);
-
-eventTypeList.value.forEach(item => {
-  seriesObj[item.name] = {
-    type: 'bar',
-    stack: 'Ad',
-    barWidth: 8,
-    emphasis: {
-      focus: 'series',
-    },
-    name: item.name,
-    itemStyle: { color: item.color },
-    data: [],
-  };
-});
-const echartsRef = ref(null);
-let { chart } = useEchartsResize(echartsRef);
-// 获取柱状图数据
-const getBarChartData = value => {
-  gettaskOutcomApi(value).then(res => {
-    const list = res?.data?.data || [];
-
-    
-    eventTypeList.value.forEach(item => {
-      item.value = 0;
-    });
-    const typeMap = new Map();
-    eventTypeList.value.forEach(item => {
-      typeMap.set(item.type, item);
-    });
-    echartsOption.xAxis.data = list.map(item => item.name);
-
-    Object.keys(seriesObj).forEach(key => {
-      seriesObj[key].data = [];
-    });   
-    // 遍历所有月份
-    list.forEach(month => {
-    totalNum.value = month.total
-      const monthData = new Map();
-      month.data.forEach(item => {
-        monthData.set(item.name, item.value);
-      });   
-      eventTypeList.value.forEach(typeItem => {
-        const value = monthData.get(typeItem.type) || 0;
-        if (seriesObj[typeItem.name]) {
-          seriesObj[typeItem.name].data.push(value);
-        }
-      });
-    });
-    if (list.length > 0) {
-      const lastMonth = list[list.length - 1];
-      const lastMonthData = new Map();
-      lastMonth.data.forEach(item => {
-        lastMonthData.set(item.name, item.value);
-      });
-      
-      eventTypeList.value.forEach(item => {
-        const value = lastMonthData.get(item.type);
-        if (value !== undefined) {
-          item.value = value;
-        }
-      });
-    }
-    
-    // 更新图表
-    echartsOption.series = Object.values(seriesObj);
-    chart.value.setOption(echartsOption);
-  });
-};
-onMounted(() => {
-  getBarChartData(params.value);
-});
-</script>
-
-<style scoped lang="scss">
-.taskOutcome {
-  border-radius: 8px 8px 8px 8px;
-  padding: 4px 14px 0 15px;
-  background: #ffffff !important;
-  margin-top: 10px;
-  margin-left: 10px;
-  height: pxToVh(473);
-  .card-title {
-    display: flex;
-    // margin-bottom: 10px;
-    align-items: center;
-    justify-content: space-between;
-    .cardtotal {
-      display: flex;
-      align-items: center;
-      margin-left: 9px;
-      img {
-        width: 17px;
-        height: 17px;
-        margin-left: 6px;
-        cursor: pointer;
-      }
-      p {
-        font-weight: bold;
-        font-size: 14px;
-        color: #363636;
-      }
-
-      span {
-        font-weight: 400;
-        font-size: 14px;
-        color: #7c8091;
-      }
-
-      .total-number {
-        font-family: 'Source Han Sans CN';
-
-        font-weight: bold;
-        font-size: 32px;
-        color: #2a54ff;
-      }
-    }
-
-    img {
-      width: 36px;
-      height: 40px;
-    }
-  }
-}
-
-.time-card {
-  text-align: center;
-  // height: 30px;
-  height: pxToVh(30);
-  background: #ffffff;
-
-  border: 1px solid #e5e5e5;
-  font-weight: 400;
-  font-size: 14px;
-  color: #7c8091;
-  display: flex;
-  width: 282px;
-  margin-left: 15px;
-  border-radius: 4px;
-
-.card-item {
-    width: 94px;
-    height: 100%;
-    // line-height: 28px;
-    cursor: pointer;
-    font-family: 'Source Han Sans CN';
-    font-weight: 400;
-    font-size: 14px;
-    color: #7c8091;
-      border: 1px solid transparent;
-      display: flex;
-      align-items: center;
-      justify-content: center;
-  }
-
-  .card-item:first-child {
-    border-right: 1px solid #e5e5e5;
-  }
-
-  .card-item:nth-child(2) {
-    border-right: 1px solid #e5e5e5;
-  }
-
-  .card-item.active {
-    color: #1441ff;
-    border: 1px solid #1c5cff;
-  }
-}
-.chart {
-  width: 98%;
-  height: pxToVh(380);
-  padding-left: 10px;
-  margin-top: 10px;
-}
-</style>
diff --git a/applications/drone-command/src/views/wel/dashboard.vue b/applications/drone-command/src/views/wel/dashboard.vue
deleted file mode 100644
index 62f5612..0000000
--- a/applications/drone-command/src/views/wel/dashboard.vue
+++ /dev/null
@@ -1,196 +0,0 @@
-<template>
-  <basic-container>
-    <div class="wel">
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-platform-eleme"
-        text="开始菜单1"
-        time="1"
-        background="/img/bg/bg3.jpg"
-        color="#d56259"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-eleme"
-        text="开始菜单2"
-        time="2"
-        background="/img/bg/bg2.jpg"
-        color="#419ce7"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-delete-solid"
-        text="开始菜单3"
-        time="3"
-        color="#56b69b"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-delete"
-        text="开始菜单4"
-        time="4"
-        color="#d44858"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-s-tools"
-        text="开始菜单5"
-        time="5"
-        color="#3a1f7e"
-      ></basic-block>
-      <basic-block
-        :width="410"
-        :height="height"
-        icon="el-icon-setting"
-        text="开始菜单6"
-        time="6"
-        background="/img/bg/bg1.jpg"
-        dept="这是一段很长的很长很长很长的描述这是一段很长的很长很长很长的描述"
-        color="#422829"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-user-solid"
-        text="开始菜单7"
-        time="7"
-        color="#613cbd"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-star-off"
-        text="开始菜单8"
-        time="8"
-        color="#da542e"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-goods"
-        text="开始菜单9"
-        time="9"
-        color="#2e8aef"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-circle-check"
-        text="开始菜单10"
-        time="10"
-        color="#3d17b8"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-s-platform"
-        text="开始菜单11"
-        time="11"
-        color="#e31462"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-s-fold"
-        text="开始菜单12"
-        time="12"
-        color="#d9532d"
-      ></basic-block>
-      <basic-block
-        :width="410"
-        :height="height"
-        icon="el-icon-s-open"
-        text="开始菜单13"
-        time="13"
-        dept="这是一段很长的很长很长很长的描述这是一段很长的很长很长很长的描述"
-        color="#b72147"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-s-flag"
-        text="开始菜单14"
-        time="14"
-        color="#01a100"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-s-data"
-        text="开始菜单15"
-        time="15"
-        color="#0c56bf"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-s-grid"
-        text="开始菜单16"
-        time="16"
-        color="#0098a9"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-s-release"
-        text="开始菜单17"
-        time="17"
-        background="/img/bg/bg2.jpg"
-        color="#209bdf"
-      ></basic-block>
-      <basic-block
-        :width="width"
-        :height="height"
-        icon="el-icon-s-home"
-        text="开始菜单18"
-        time="18"
-        background="/img/bg/bg3.jpg"
-        color="#603bbc"
-      ></basic-block>
-      <basic-block
-        :width="515"
-        :height="height"
-        icon="el-icon-s-promotion"
-        text="开始菜单19"
-        time="19"
-        dept="这是一段很长的很长很长很长的描述这是一段很长的很长很长很长的描述"
-        color="#009bad"
-      ></basic-block>
-      <basic-block
-        :width="515"
-        :height="height"
-        icon="el-icon-s-custom"
-        text="开始菜单20"
-        time="20"
-        background="/img/bg/bg4.jpg"
-        dept="这是一段很长的很长很长很长的描述这是一段很长的很长很长很长的描述"
-        color="#d74e2a"
-      ></basic-block>
-    </div>
-  </basic-container>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      width: 200,
-      height: 120,
-    };
-  },
-};
-</script>
-
-<style lang="scss">
-.wel {
-  display: flex;
-  flex-wrap: wrap;
-  width: 1100px;
-  margin: 0 auto;
-}
-</style>
diff --git a/applications/drone-command/src/views/wel/index.vue b/applications/drone-command/src/views/wel/index.vue
index 1881964..e8875bd 100644
--- a/applications/drone-command/src/views/wel/index.vue
+++ b/applications/drone-command/src/views/wel/index.vue
@@ -1,217 +1,23 @@
+<!--
+ * @Author       : yuan
+ * @Date         : 2026-01-06 09:47:09
+ * @LastEditors  : yuan
+ * @LastEditTime : 2026-01-07 09:20:47
+ * @FilePath     : \applications\drone-command\src\views\wel\index.vue
+ * @Description  : 
+ * Copyright 2026 OBKoro1, All Rights Reserved. 
+ * 2026-01-06 09:47:09
+-->
 <template>
-  <wel-container>
-    <div class="workbench" v-if="display">
-      <div class="workleft">
-        <!-- 设备统计  -->
-        <statistics></statistics>
-        <!-- 综合统计分析 -->
-        <div class="comprehensiveCon">
-          <div class="comprehensive">
+  <div>
 
-            <div class="center">
-              <div class="centerLeft">
-                <!-- 工单统计 -->
-                <proportionStatic></proportionStatic>
-                <!-- 飞行统计 -->
-                <flightStatistics></flightStatistics>
-
-              </div>
-              <div class="centerRight">
-                <!-- 机巢工单数量排名(件) -->
-                <flyratio></flyratio>
-                <!-- 任务成果 -->
-                <taskOutcome></taskOutcome>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-
-      <div class="workright">
-        <Bocklog></Bocklog>
-        <CalenBox></CalenBox>
-      </div>
-    </div>
-  </wel-container>
+  </div>
 </template>
 
 <script setup>
-import taskOutcome from './components/taskOutcome.vue'
-import flightStatistics from './components/flightStatistics.vue'
-import proportionStatic from './components/proportionStatic.vue'
-import flyratio from './components/flyratio.vue'
-import Bocklog from './components/backlog.vue'
-import CalenBox from './components/calendarBox.vue'
-import * as echarts from 'echarts'
-import useEchartsResize from '@/hooks/useEchartsResize'
-import { mapGetters } from 'vuex'
-import { getJobEventByStatus, getJobEventTotal, getFly, getFlyTime } from '@/api/home/index'
-import overviewImg1 from '@/assets/images/workbench/tc1.png'
 
-import fy1 from '@/assets/images/workbench/fy1.png'
-
-import statistics from './components/statistics.vue'
-import { ElMessage } from 'element-plus'
-let checked = ref('CURRENT_YEAR')
-const display = ref(false)
-let timeListStr = ['本周', '本月', '本年']
-let timeListEnum = ['CURRENT_WEEK', 'CURRENT_MONTH', 'CURRENT_YEAR']
-const params = ref({
-  date_enum: 'CURRENT_YEAR',
-  device_sn: '',
-  end_date: undefined,
-  start_date: undefined,
-})
-const dateSelect = ref('CURRENT_YEAR')
-let timeClick = (item, index) => {
-  checked.value = item
-  params.value.date_enum = item
-  dateSelect.value = item
-
-
-
-}
-const refresh = () => {
-  params.value.date_enum = 'CURRENT_YEAR'
-  checked.value = 'CURRENT_YEAR'
-  dateSelect.value = 'CURRENT_YEAR'
-
-
-}
-// 跳转
-const jumpshebei = () => {
-  ElMessage.warning('加急开发中...')
-}
-
-const eventTotal = ref(0)
-const data = ref([])
-
-onMounted(() => {
-  getJobEventTotal().then(res => {
-    eventTotal.value = res?.data?.data || 0
-  })
-  setTimeout(() => {
-    display.value = true
-  },100)
-})
 </script>
 
-<style>
-.el-font-size {
-  font-size: 14px;
-}
-</style>
-<style scoped lang="scss">
-.workbench {
-  height: 100%;
-  flex: 1;
-  // padding: 0px 20px 0 10px;
-  display: flex;
-  justify-content: space-between;
-}
+<style lang="scss" scoped>
 
-.workleft {
-  width: 68%;
-  margin-right: 10px;
-  height: 100%;
-
-  .comprehensiveCon {
-    // background: #ffffff !important;
-    height: pxToVh(776);
-    border-radius: 8px 8px 8px 8px;
-
-    .comprehensive {
-
-      // padding: 14px 14px 0 21px;
-
-      .title {
-        display: flex;
-        justify-content: space-between;
-        align-items: center;
-
-        .name {
-          display: flex;
-          align-items: center;
-          font-weight: bold;
-          font-size: 16px;
-          color: #363636;
-          font-family: 'Source Han Sans CN';
-
-          span {
-            margin-right: 4px;
-          }
-
-          img {
-            cursor: pointer;
-          }
-        }
-
-        .arrow {
-          cursor: pointer;
-        }
-
-        .time-card {
-          text-align: center;
-          // height: 30px;
-          height: pxToVh(30);
-          background: #ffffff;
-          border-radius: 4px 0px 0px 4px;
-          border: 1px solid #e5e5e5;
-          font-weight: 400;
-          font-size: 14px;
-          color: #7c8091;
-          display: flex;
-          width: 282px;
-          margin-left: 15px;
-
-          .card-item {
-            width: 94px;
-            height: 100%;
-            line-height: 28px;
-            cursor: pointer;
-            font-family: 'Source Han Sans CN';
-            font-weight: 400;
-            font-size: 14px;
-            color: #7c8091;
-          }
-
-          .card-item:first-child {
-            border-right: 1px solid #e5e5e5;
-          }
-
-          .card-item:nth-child(2) {
-            border-right: 1px solid #e5e5e5;
-          }
-
-          .card-item.active {
-            color: #1441ff;
-            border: 1px solid #1c5cff;
-          }
-        }
-      }
-
-      // 工、单
-      .center {
-        display: flex;
-        .centerLeft {
-          width: 50%;
-
-
-        }
-
-        .centerRight {
-          width: 50%;
-        }
-      }
-    }
-  }
-}
-
-.workright {
-  width: 0;
-  flex: 1;
-  height: 100%;
-  // display: flex;
-  // flex-direction: column;
-}
-</style>
+</style>
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 942aaf9..c8e70e3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,8 +1,11 @@
-lockfileVersion: '9.0'
+lockfileVersion: '6.0'
 
 settings:
   autoInstallPeers: true
   excludeLinksFromLockfile: false
+
+onlyBuiltDependencies:
+  - sharp
 
 overrides:
   '@zip.js/zip.js': 2.7.34
@@ -22,19 +25,19 @@
         version: 2.2.0(@dvgis/dc-sdk@3.4.0)
       '@element-plus/icons-vue':
         specifier: ^2.3.1
-        version: 2.3.2(vue@3.5.26)
+        version: 2.3.1(vue@3.5.13)
       '@saber/nf-design-base-elp':
         specifier: ^1.3.0
         version: 1.3.0
       '@saber/nf-form-design-elp':
         specifier: ^1.4.1
-        version: 1.6.1(vue@3.5.26)
+        version: 1.4.1(vue@3.5.13)
       '@saber/nf-form-elp':
         specifier: ^1.4.4
-        version: 1.6.3
+        version: 1.4.4
       '@smallwei/avue':
         specifier: ^3.6.2
-        version: 3.7.4(element-plus@2.9.11(vue@3.5.26))(vue@3.5.26)
+        version: 3.6.2(element-plus@2.9.11)(vue@3.5.13)
       '@turf/turf':
         specifier: ^6.5.0
         version: 6.5.0
@@ -58,40 +61,40 @@
         version: 4.1.1
       avue-plugin-ueditor:
         specifier: ^1.0.4
-        version: 1.0.4(axios@1.13.2)(vue@3.5.26)
+        version: 1.0.4(axios@1.8.3)(vue@3.5.13)
       axios:
         specifier: ^1.8.3
-        version: 1.13.2
+        version: 1.8.3
       cesium:
         specifier: 1.126.0
         version: 1.126.0
       codemirror:
         specifier: ^5.65.16
-        version: 5.65.20
+        version: 5.65.16
       crypto-js:
         specifier: ^4.1.1
-        version: 4.2.0
+        version: 4.1.1
       dayjs:
         specifier: ^1.10.6
-        version: 1.11.19
+        version: 1.10.6
       decimal.js:
         specifier: ^10.4.3
-        version: 10.6.0
+        version: 10.4.3
       disable-devtool:
         specifier: ^0.3.8
-        version: 0.3.9
+        version: 0.3.8
       echarts:
         specifier: ^5.6.0
         version: 5.6.0
       element-plus:
         specifier: 2.9.11
-        version: 2.9.11(vue@3.5.26)
+        version: 2.9.11(vue@3.5.13)
       eventemitter3:
         specifier: ^5.0.1
         version: 5.0.1
       highlight.js:
         specifier: ^11.9.0
-        version: 11.11.1
+        version: 11.9.0
       html5-qrcode:
         specifier: ^2.3.8
         version: 2.3.8
@@ -103,10 +106,10 @@
         version: 1.0.7
       js-base64:
         specifier: ^3.7.4
-        version: 3.7.8
+        version: 3.7.4
       js-cookie:
         specifier: ^3.0.0
-        version: 3.0.5
+        version: 3.0.0
       js-md5:
         specifier: ^0.7.3
         version: 0.7.3
@@ -130,7 +133,7 @@
         version: 3.0.1
       mqtt:
         specifier: ^5.11.0
-        version: 5.14.1
+        version: 5.11.0
       nprogress:
         specifier: ^0.2.0
         version: 0.2.0
@@ -148,13 +151,13 @@
         version: 0.3.13
       trtc-sdk-v5:
         specifier: ^5.14.0
-        version: 5.14.1
+        version: 5.14.0
       uuid:
         specifier: ^11.1.0
         version: 11.1.0
       vant:
         specifier: ^4.9.21
-        version: 4.9.22(vue@3.5.26)
+        version: 4.9.21(vue@3.5.13)
       video.js:
         specifier: ^8.23.4
         version: 8.23.4
@@ -163,68 +166,68 @@
         version: 1.0.1(video.js@8.23.4)
       vue:
         specifier: ^3.5.13
-        version: 3.5.26
+        version: 3.5.13
       vue-i18n:
         specifier: ^9.1.9
-        version: 9.14.5(vue@3.5.26)
+        version: 9.1.9(vue@3.5.13)
       vue-router:
         specifier: ^4.3.2
-        version: 4.6.4(vue@3.5.26)
+        version: 4.3.2(vue@3.5.13)
       vue3-clipboard:
         specifier: ^1.0.0
-        version: 1.0.0(vue@3.5.26)
+        version: 1.0.0(vue@3.5.13)
       vuedraggable:
         specifier: ^4.1.0
-        version: 4.1.0(vue@3.5.26)
+        version: 4.1.0(vue@3.5.13)
       vuex:
         specifier: ^4.1.0
-        version: 4.1.0(vue@3.5.26)
+        version: 4.1.0(vue@3.5.13)
       xlsx:
         specifier: ^0.18.5
         version: 0.18.5
     devDependencies:
       '@vitejs/plugin-basic-ssl':
         specifier: ^1.1.0
-        version: 1.2.0(vite@5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1))
+        version: 1.1.0(vite@5.2.12)
       '@vitejs/plugin-vue':
         specifier: ^5.0.4
-        version: 5.2.4(vite@5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1))(vue@3.5.26)
+        version: 5.0.4(vite@5.2.12)(vue@3.5.13)
       '@vue/compiler-sfc':
         specifier: ^3.4.27
-        version: 3.5.26
+        version: 3.4.27
       prettier:
         specifier: ^2.8.7
-        version: 2.8.8
+        version: 2.8.7
       sass:
         specifier: ^1.85.1
-        version: 1.97.1
+        version: 1.85.1
       terser:
         specifier: ^5.31.1
-        version: 5.44.1
+        version: 5.31.1
       unplugin-auto-import:
         specifier: ^0.11.2
-        version: 0.11.5(@vueuse/core@9.13.0(vue@3.5.26))(rollup@4.54.0)
+        version: 0.11.2
       vite:
         specifier: 5.2.12
-        version: 5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1)
+        version: 5.2.12(sass@1.85.1)(terser@5.31.1)
       vite-plugin-compression:
         specifier: ^0.5.1
-        version: 0.5.1(vite@5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1))
+        version: 0.5.1(vite@5.2.12)
       vite-plugin-minipic:
         specifier: ^1.3.0
-        version: 1.3.2
+        version: 1.3.0
       vite-plugin-svg-icons:
         specifier: ^2.0.1
-        version: 2.0.1(vite@5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1))
+        version: 2.0.1(vite@5.2.12)
       vite-plugin-vue-setup-extend:
         specifier: ^0.4.0
-        version: 0.4.0(vite@5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1))
+        version: 0.4.0(vite@5.2.12)
 
-  applications/command-center-dashboard: {}
+  applications/drone-command: {}
 
   applications/mobile-web-view: {}
 
-  applications/task-mange: {}
+  applications/task-work-order: {}
 
   packages/apis: {}
 
@@ -238,3710 +241,51 @@
 
 packages:
 
-  '@amap/amap-jsapi-loader@1.0.1':
+  /@amap/amap-jsapi-loader@1.0.1:
     resolution: {integrity: sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==}
+    dev: false
 
-  '@antfu/utils@0.7.10':
-    resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==}
+  /@antfu/utils@0.5.2:
+    resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==}
+    dev: true
 
-  '@babel/helper-string-parser@7.27.1':
+  /@babel/helper-string-parser@7.27.1:
     resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
     engines: {node: '>=6.9.0'}
 
-  '@babel/helper-validator-identifier@7.28.5':
+  /@babel/helper-validator-identifier@7.28.5:
     resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
     engines: {node: '>=6.9.0'}
 
-  '@babel/parser@7.28.5':
+  /@babel/parser@7.28.5:
     resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
     engines: {node: '>=6.0.0'}
     hasBin: true
-
-  '@babel/runtime@7.28.4':
-    resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==}
-    engines: {node: '>=6.9.0'}
-
-  '@babel/types@7.28.5':
-    resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
-    engines: {node: '>=6.9.0'}
-
-  '@bpmn-io/diagram-js-ui@0.2.3':
-    resolution: {integrity: sha512-OGyjZKvGK8tHSZ0l7RfeKhilGoOGtFDcoqSGYkX0uhFlo99OVZ9Jn1K7TJGzcE9BdKwvA5Y5kGqHEhdTxHvFfw==}
-
-  '@cesium/engine@14.0.0':
-    resolution: {integrity: sha512-nmW0uQCyg4CRqi3a8o30gU9S9bFm3TLh2fRO74iv+6a8FFArvZ1xF7IqG2tyRjSXkyH4c5vpavNRT3R51R8NyQ==}
-    engines: {node: '>=14.0.0'}
-
-  '@cesium/widgets@10.2.0':
-    resolution: {integrity: sha512-f0Wrp3MG02P2KSAopVESHWOhF+2eK9cQR9prEYGWuPM3iF6YktKrZqXzNnsOxCw1KPup0aSXsCrFl2asT5jF9g==}
-    engines: {node: '>=14.0.0'}
-
-  '@ctrl/tinycolor@3.6.1':
-    resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
-    engines: {node: '>=10'}
-
-  '@dvgis/dc-common@1.0.0':
-    resolution: {integrity: sha512-sjRD9kQbQ3tAhbmJt00eleU3XM7laMHWl5qMU63Mk0tj2c/M8NTTIbXEdB8gdgDDHuZGN5eRm9nJ3rSO4nsSFw==}
-
-  '@dvgis/dc-sdk@3.4.0':
-    resolution: {integrity: sha512-WgoNmfwPiPuAf4mxEOYhoyi3FovkSxf1gMat2ds5vEigz6aE/r86gCoWRgmVjNxlkTuRYi6ROV8vGXxcZTVQYA==}
-
-  '@dvgis/vite-plugin-dc@2.2.0':
-    resolution: {integrity: sha512-bREX+ycd6vzvpl1l7Gxxfm+91e6QicmEvqPIu8MYYOtdEd3hLjhFooF0vTi/Kp2gu2RIbwVi4pLo+HegpvsuPw==}
-    peerDependencies:
-      '@dvgis/dc-sdk': ^3.4.0
-
-  '@element-plus/icons-vue@2.3.2':
-    resolution: {integrity: sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==}
-    peerDependencies:
-      vue: ^3.2.0
-
-  '@esbuild/aix-ppc64@0.20.2':
-    resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
-    engines: {node: '>=12'}
-    cpu: [ppc64]
-    os: [aix]
-
-  '@esbuild/android-arm64@0.20.2':
-    resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [android]
-
-  '@esbuild/android-arm@0.20.2':
-    resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==}
-    engines: {node: '>=12'}
-    cpu: [arm]
-    os: [android]
-
-  '@esbuild/android-x64@0.20.2':
-    resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [android]
-
-  '@esbuild/darwin-arm64@0.20.2':
-    resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [darwin]
-
-  '@esbuild/darwin-x64@0.20.2':
-    resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [darwin]
-
-  '@esbuild/freebsd-arm64@0.20.2':
-    resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [freebsd]
-
-  '@esbuild/freebsd-x64@0.20.2':
-    resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [freebsd]
-
-  '@esbuild/linux-arm64@0.20.2':
-    resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [linux]
-
-  '@esbuild/linux-arm@0.20.2':
-    resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==}
-    engines: {node: '>=12'}
-    cpu: [arm]
-    os: [linux]
-
-  '@esbuild/linux-ia32@0.20.2':
-    resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==}
-    engines: {node: '>=12'}
-    cpu: [ia32]
-    os: [linux]
-
-  '@esbuild/linux-loong64@0.20.2':
-    resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==}
-    engines: {node: '>=12'}
-    cpu: [loong64]
-    os: [linux]
-
-  '@esbuild/linux-mips64el@0.20.2':
-    resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==}
-    engines: {node: '>=12'}
-    cpu: [mips64el]
-    os: [linux]
-
-  '@esbuild/linux-ppc64@0.20.2':
-    resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==}
-    engines: {node: '>=12'}
-    cpu: [ppc64]
-    os: [linux]
-
-  '@esbuild/linux-riscv64@0.20.2':
-    resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==}
-    engines: {node: '>=12'}
-    cpu: [riscv64]
-    os: [linux]
-
-  '@esbuild/linux-s390x@0.20.2':
-    resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==}
-    engines: {node: '>=12'}
-    cpu: [s390x]
-    os: [linux]
-
-  '@esbuild/linux-x64@0.20.2':
-    resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [linux]
-
-  '@esbuild/netbsd-x64@0.20.2':
-    resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [netbsd]
-
-  '@esbuild/openbsd-x64@0.20.2':
-    resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [openbsd]
-
-  '@esbuild/sunos-x64@0.20.2':
-    resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [sunos]
-
-  '@esbuild/win32-arm64@0.20.2':
-    resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [win32]
-
-  '@esbuild/win32-ia32@0.20.2':
-    resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==}
-    engines: {node: '>=12'}
-    cpu: [ia32]
-    os: [win32]
-
-  '@esbuild/win32-x64@0.20.2':
-    resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [win32]
-
-  '@floating-ui/core@1.7.3':
-    resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
-
-  '@floating-ui/dom@1.7.4':
-    resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==}
-
-  '@floating-ui/utils@0.2.10':
-    resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
-
-  '@intlify/core-base@9.14.5':
-    resolution: {integrity: sha512-5ah5FqZG4pOoHjkvs8mjtv+gPKYU0zCISaYNjBNNqYiaITxW8ZtVih3GS/oTOqN8d9/mDLyrjD46GBApNxmlsA==}
-    engines: {node: '>= 16'}
-
-  '@intlify/message-compiler@9.14.5':
-    resolution: {integrity: sha512-IHzgEu61/YIpQV5Pc3aRWScDcnFKWvQA9kigcINcCBXN8mbW+vk9SK+lDxA6STzKQsVJxUPg9ACC52pKKo3SVQ==}
-    engines: {node: '>= 16'}
-
-  '@intlify/shared@9.14.5':
-    resolution: {integrity: sha512-9gB+E53BYuAEMhbCAxVgG38EZrk59sxBtv3jSizNL2hEWlgjBjAw1AwpLHtNaeda12pe6W20OGEa0TwuMSRbyQ==}
-    engines: {node: '>= 16'}
-
-  '@isaacs/cliui@8.0.2':
-    resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
-    engines: {node: '>=12'}
-
-  '@jridgewell/gen-mapping@0.3.13':
-    resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
-
-  '@jridgewell/resolve-uri@3.1.2':
-    resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
-    engines: {node: '>=6.0.0'}
-
-  '@jridgewell/source-map@0.3.11':
-    resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==}
-
-  '@jridgewell/sourcemap-codec@1.5.5':
-    resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
-
-  '@jridgewell/trace-mapping@0.3.31':
-    resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
-
-  '@nodelib/fs.scandir@2.1.5':
-    resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
-    engines: {node: '>= 8'}
-
-  '@nodelib/fs.stat@2.0.5':
-    resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
-    engines: {node: '>= 8'}
-
-  '@nodelib/fs.walk@1.2.8':
-    resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
-    engines: {node: '>= 8'}
-
-  '@parcel/watcher-android-arm64@2.5.1':
-    resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==}
-    engines: {node: '>= 10.0.0'}
-    cpu: [arm64]
-    os: [android]
-
-  '@parcel/watcher-darwin-arm64@2.5.1':
-    resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
-    engines: {node: '>= 10.0.0'}
-    cpu: [arm64]
-    os: [darwin]
-
-  '@parcel/watcher-darwin-x64@2.5.1':
-    resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
-    engines: {node: '>= 10.0.0'}
-    cpu: [x64]
-    os: [darwin]
-
-  '@parcel/watcher-freebsd-x64@2.5.1':
-    resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==}
-    engines: {node: '>= 10.0.0'}
-    cpu: [x64]
-    os: [freebsd]
-
-  '@parcel/watcher-linux-arm-glibc@2.5.1':
-    resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==}
-    engines: {node: '>= 10.0.0'}
-    cpu: [arm]
-    os: [linux]
-    libc: [glibc]
-
-  '@parcel/watcher-linux-arm-musl@2.5.1':
-    resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
-    engines: {node: '>= 10.0.0'}
-    cpu: [arm]
-    os: [linux]
-    libc: [musl]
-
-  '@parcel/watcher-linux-arm64-glibc@2.5.1':
-    resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
-    engines: {node: '>= 10.0.0'}
-    cpu: [arm64]
-    os: [linux]
-    libc: [glibc]
-
-  '@parcel/watcher-linux-arm64-musl@2.5.1':
-    resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
-    engines: {node: '>= 10.0.0'}
-    cpu: [arm64]
-    os: [linux]
-    libc: [musl]
-
-  '@parcel/watcher-linux-x64-glibc@2.5.1':
-    resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
-    engines: {node: '>= 10.0.0'}
-    cpu: [x64]
-    os: [linux]
-    libc: [glibc]
-
-  '@parcel/watcher-linux-x64-musl@2.5.1':
-    resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
-    engines: {node: '>= 10.0.0'}
-    cpu: [x64]
-    os: [linux]
-    libc: [musl]
-
-  '@parcel/watcher-win32-arm64@2.5.1':
-    resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
-    engines: {node: '>= 10.0.0'}
-    cpu: [arm64]
-    os: [win32]
-
-  '@parcel/watcher-win32-ia32@2.5.1':
-    resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==}
-    engines: {node: '>= 10.0.0'}
-    cpu: [ia32]
-    os: [win32]
-
-  '@parcel/watcher-win32-x64@2.5.1':
-    resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
-    engines: {node: '>= 10.0.0'}
-    cpu: [x64]
-    os: [win32]
-
-  '@parcel/watcher@2.5.1':
-    resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
-    engines: {node: '>= 10.0.0'}
-
-  '@pkgjs/parseargs@0.11.0':
-    resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
-    engines: {node: '>=14'}
-
-  '@protobufjs/aspromise@1.1.2':
-    resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
-
-  '@protobufjs/base64@1.1.2':
-    resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
-
-  '@protobufjs/codegen@2.0.4':
-    resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
-
-  '@protobufjs/eventemitter@1.1.0':
-    resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
-
-  '@protobufjs/fetch@1.1.0':
-    resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
-
-  '@protobufjs/float@1.0.2':
-    resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
-
-  '@protobufjs/inquire@1.1.0':
-    resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
-
-  '@protobufjs/path@1.1.2':
-    resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
-
-  '@protobufjs/pool@1.1.0':
-    resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
-
-  '@protobufjs/utf8@1.1.0':
-    resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
-
-  '@rollup/pluginutils@5.3.0':
-    resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==}
-    engines: {node: '>=14.0.0'}
-    peerDependencies:
-      rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
-    peerDependenciesMeta:
-      rollup:
-        optional: true
-
-  '@rollup/rollup-android-arm-eabi@4.54.0':
-    resolution: {integrity: sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==}
-    cpu: [arm]
-    os: [android]
-
-  '@rollup/rollup-android-arm64@4.54.0':
-    resolution: {integrity: sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==}
-    cpu: [arm64]
-    os: [android]
-
-  '@rollup/rollup-darwin-arm64@4.54.0':
-    resolution: {integrity: sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==}
-    cpu: [arm64]
-    os: [darwin]
-
-  '@rollup/rollup-darwin-x64@4.54.0':
-    resolution: {integrity: sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==}
-    cpu: [x64]
-    os: [darwin]
-
-  '@rollup/rollup-freebsd-arm64@4.54.0':
-    resolution: {integrity: sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==}
-    cpu: [arm64]
-    os: [freebsd]
-
-  '@rollup/rollup-freebsd-x64@4.54.0':
-    resolution: {integrity: sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==}
-    cpu: [x64]
-    os: [freebsd]
-
-  '@rollup/rollup-linux-arm-gnueabihf@4.54.0':
-    resolution: {integrity: sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==}
-    cpu: [arm]
-    os: [linux]
-    libc: [glibc]
-
-  '@rollup/rollup-linux-arm-musleabihf@4.54.0':
-    resolution: {integrity: sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==}
-    cpu: [arm]
-    os: [linux]
-    libc: [musl]
-
-  '@rollup/rollup-linux-arm64-gnu@4.54.0':
-    resolution: {integrity: sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==}
-    cpu: [arm64]
-    os: [linux]
-    libc: [glibc]
-
-  '@rollup/rollup-linux-arm64-musl@4.54.0':
-    resolution: {integrity: sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==}
-    cpu: [arm64]
-    os: [linux]
-    libc: [musl]
-
-  '@rollup/rollup-linux-loong64-gnu@4.54.0':
-    resolution: {integrity: sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==}
-    cpu: [loong64]
-    os: [linux]
-    libc: [glibc]
-
-  '@rollup/rollup-linux-ppc64-gnu@4.54.0':
-    resolution: {integrity: sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==}
-    cpu: [ppc64]
-    os: [linux]
-    libc: [glibc]
-
-  '@rollup/rollup-linux-riscv64-gnu@4.54.0':
-    resolution: {integrity: sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==}
-    cpu: [riscv64]
-    os: [linux]
-    libc: [glibc]
-
-  '@rollup/rollup-linux-riscv64-musl@4.54.0':
-    resolution: {integrity: sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==}
-    cpu: [riscv64]
-    os: [linux]
-    libc: [musl]
-
-  '@rollup/rollup-linux-s390x-gnu@4.54.0':
-    resolution: {integrity: sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==}
-    cpu: [s390x]
-    os: [linux]
-    libc: [glibc]
-
-  '@rollup/rollup-linux-x64-gnu@4.54.0':
-    resolution: {integrity: sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==}
-    cpu: [x64]
-    os: [linux]
-    libc: [glibc]
-
-  '@rollup/rollup-linux-x64-musl@4.54.0':
-    resolution: {integrity: sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==}
-    cpu: [x64]
-    os: [linux]
-    libc: [musl]
-
-  '@rollup/rollup-openharmony-arm64@4.54.0':
-    resolution: {integrity: sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==}
-    cpu: [arm64]
-    os: [openharmony]
-
-  '@rollup/rollup-win32-arm64-msvc@4.54.0':
-    resolution: {integrity: sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==}
-    cpu: [arm64]
-    os: [win32]
-
-  '@rollup/rollup-win32-ia32-msvc@4.54.0':
-    resolution: {integrity: sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==}
-    cpu: [ia32]
-    os: [win32]
-
-  '@rollup/rollup-win32-x64-gnu@4.54.0':
-    resolution: {integrity: sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==}
-    cpu: [x64]
-    os: [win32]
-
-  '@rollup/rollup-win32-x64-msvc@4.54.0':
-    resolution: {integrity: sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==}
-    cpu: [x64]
-    os: [win32]
-
-  '@saber/nf-design-base-elp@1.3.0':
-    resolution: {integrity: sha512-sKUkhErjggUjH+hoBTVpcUC7j38KAkGUloIVXIRl6YP1WT14QXvtf3iu8iCIOBO8iPKHgrBiq4h80UW9+qqbjQ==, tarball: https://center.javablade.com/api/packages/blade/npm/%40saber%2Fnf-design-base-elp/-/1.3.0/nf-design-base-elp-1.3.0.tgz}
-
-  '@saber/nf-form-design-elp@1.6.1':
-    resolution: {integrity: sha512-XAKbZebglIxVxj6azOu5YKlbyJV/i8B2Kayl9MsRUVfEhnegQveio35u2afVI4dFj3Ul9KMbaoyvVokh1EvmQQ==, tarball: https://center.javablade.com/api/packages/blade/npm/%40saber%2Fnf-form-design-elp/-/1.6.1/nf-form-design-elp-1.6.1.tgz}
-    engines: {node: ^20.19.0 || >=22.12.0}
-
-  '@saber/nf-form-elp@1.6.3':
-    resolution: {integrity: sha512-NAhWvrsswZCGfSarlSFCdYadUZuYeUzns2TSr2FQotSsvs/4xitJhcVzkRQvTpzq1+FtP9MkxEnShGa4ILvMdw==, tarball: https://center.javablade.com/api/packages/blade/npm/%40saber%2Fnf-form-elp/-/1.6.3/nf-form-elp-1.6.3.tgz}
-    engines: {node: ^20.19.0 || >=22.12.0}
-
-  '@smallwei/avue@3.7.4':
-    resolution: {integrity: sha512-uT0Q+JGl5VuN9jo+IImyUwbW7VpjG5df/EJcp3Y9OO8w/OB5iseNAsfxAidYu514k08cEV30+W/EWhJ+O17woA==}
-    peerDependencies:
-      element-plus: '>=2.2.0'
-      vue: '>=3.2.0'
-
-  '@sxzz/popperjs-es@2.11.7':
-    resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
-
-  '@transloadit/prettier-bytes@0.0.7':
-    resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==}
-
-  '@trysound/sax@0.2.0':
-    resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
-    engines: {node: '>=10.13.0'}
-
-  '@turf/along@6.5.0':
-    resolution: {integrity: sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==}
-
-  '@turf/angle@6.5.0':
-    resolution: {integrity: sha512-4pXMbWhFofJJAOvTMCns6N4C8CMd5Ih4O2jSAG9b3dDHakj3O4yN1+Zbm+NUei+eVEZ9gFeVp9svE3aMDenIkw==}
-
-  '@turf/area@6.5.0':
-    resolution: {integrity: sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg==}
-
-  '@turf/bbox-clip@6.5.0':
-    resolution: {integrity: sha512-F6PaIRF8WMp8EmgU/Ke5B1Y6/pia14UAYB5TiBC668w5rVVjy5L8rTm/m2lEkkDMHlzoP9vNY4pxpNthE7rLcQ==}
-
-  '@turf/bbox-polygon@6.5.0':
-    resolution: {integrity: sha512-+/r0NyL1lOG3zKZmmf6L8ommU07HliP4dgYToMoTxqzsWzyLjaj/OzgQ8rBmv703WJX+aS6yCmLuIhYqyufyuw==}
-
-  '@turf/bbox@6.5.0':
-    resolution: {integrity: sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==}
-
-  '@turf/bearing@6.5.0':
-    resolution: {integrity: sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==}
-
-  '@turf/bezier-spline@6.5.0':
-    resolution: {integrity: sha512-vokPaurTd4PF96rRgGVm6zYYC5r1u98ZsG+wZEv9y3kJTuJRX/O3xIY2QnTGTdbVmAJN1ouOsD0RoZYaVoXORQ==}
-
-  '@turf/boolean-clockwise@6.5.0':
-    resolution: {integrity: sha512-45+C7LC5RMbRWrxh3Z0Eihsc8db1VGBO5d9BLTOAwU4jR6SgsunTfRWR16X7JUwIDYlCVEmnjcXJNi/kIU3VIw==}
-
-  '@turf/boolean-contains@6.5.0':
-    resolution: {integrity: sha512-4m8cJpbw+YQcKVGi8y0cHhBUnYT+QRfx6wzM4GI1IdtYH3p4oh/DOBJKrepQyiDzFDaNIjxuWXBh0ai1zVwOQQ==}
-
-  '@turf/boolean-crosses@6.5.0':
-    resolution: {integrity: sha512-gvshbTPhAHporTlQwBJqyfW+2yV8q/mOTxG6PzRVl6ARsqNoqYQWkd4MLug7OmAqVyBzLK3201uAeBjxbGw0Ng==}
-
-  '@turf/boolean-disjoint@6.5.0':
-    resolution: {integrity: sha512-rZ2ozlrRLIAGo2bjQ/ZUu4oZ/+ZjGvLkN5CKXSKBcu6xFO6k2bgqeM8a1836tAW+Pqp/ZFsTA5fZHsJZvP2D5g==}
-
-  '@turf/boolean-equal@6.5.0':
-    resolution: {integrity: sha512-cY0M3yoLC26mhAnjv1gyYNQjn7wxIXmL2hBmI/qs8g5uKuC2hRWi13ydufE3k4x0aNRjFGlg41fjoYLwaVF+9Q==}
-
-  '@turf/boolean-intersects@6.5.0':
-    resolution: {integrity: sha512-nIxkizjRdjKCYFQMnml6cjPsDOBCThrt+nkqtSEcxkKMhAQj5OO7o2CecioNTaX8EayqwMGVKcsz27oP4mKPTw==}
-
-  '@turf/boolean-overlap@6.5.0':
-    resolution: {integrity: sha512-8btMIdnbXVWUa1M7D4shyaSGxLRw6NjMcqKBcsTXcZdnaixl22k7ar7BvIzkaRYN3SFECk9VGXfLncNS3ckQUw==}
-
-  '@turf/boolean-parallel@6.5.0':
-    resolution: {integrity: sha512-aSHJsr1nq9e5TthZGZ9CZYeXklJyRgR5kCLm5X4urz7+MotMOp/LsGOsvKvK9NeUl9+8OUmfMn8EFTT8LkcvIQ==}
-
-  '@turf/boolean-point-in-polygon@6.5.0':
-    resolution: {integrity: sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==}
-
-  '@turf/boolean-point-on-line@6.5.0':
-    resolution: {integrity: sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ==}
-
-  '@turf/boolean-within@6.5.0':
-    resolution: {integrity: sha512-YQB3oU18Inx35C/LU930D36RAVe7LDXk1kWsQ8mLmuqYn9YdPsDQTMTkLJMhoQ8EbN7QTdy333xRQ4MYgToteQ==}
-
-  '@turf/buffer@6.5.0':
-    resolution: {integrity: sha512-qeX4N6+PPWbKqp1AVkBVWFerGjMYMUyencwfnkCesoznU6qvfugFHNAngNqIBVnJjZ5n8IFyOf+akcxnrt9sNg==}
-
-  '@turf/center-mean@6.5.0':
-    resolution: {integrity: sha512-AAX6f4bVn12pTVrMUiB9KrnV94BgeBKpyg3YpfnEbBpkN/znfVhL8dG8IxMAxAoSZ61Zt9WLY34HfENveuOZ7Q==}
-
-  '@turf/center-median@6.5.0':
-    resolution: {integrity: sha512-dT8Ndu5CiZkPrj15PBvslpuf01ky41DEYEPxS01LOxp5HOUHXp1oJxsPxvc+i/wK4BwccPNzU1vzJ0S4emd1KQ==}
-
-  '@turf/center-of-mass@6.5.0':
-    resolution: {integrity: sha512-EWrriU6LraOfPN7m1jZi+1NLTKNkuIsGLZc2+Y8zbGruvUW+QV7K0nhf7iZWutlxHXTBqEXHbKue/o79IumAsQ==}
-
-  '@turf/center@6.5.0':
-    resolution: {integrity: sha512-T8KtMTfSATWcAX088rEDKjyvQCBkUsLnK/Txb6/8WUXIeOZyHu42G7MkdkHRoHtwieLdduDdmPLFyTdG5/e7ZQ==}
-
-  '@turf/centroid@6.5.0':
-    resolution: {integrity: sha512-MwE1oq5E3isewPprEClbfU5pXljIK/GUOMbn22UM3IFPDJX0KeoyLNwghszkdmFp/qMGL/M13MMWvU+GNLXP/A==}
-
-  '@turf/circle@6.5.0':
-    resolution: {integrity: sha512-oU1+Kq9DgRnoSbWFHKnnUdTmtcRUMmHoV9DjTXu9vOLNV5OWtAAh1VZ+mzsioGGzoDNT/V5igbFOkMfBQc0B6A==}
-
-  '@turf/clean-coords@6.5.0':
-    resolution: {integrity: sha512-EMX7gyZz0WTH/ET7xV8MyrExywfm9qUi0/MY89yNffzGIEHuFfqwhcCqZ8O00rZIPZHUTxpmsxQSTfzJJA1CPw==}
-
-  '@turf/clone@6.5.0':
-    resolution: {integrity: sha512-mzVtTFj/QycXOn6ig+annKrM6ZlimreKYz6f/GSERytOpgzodbQyOgkfwru100O1KQhhjSudKK4DsQ0oyi9cTw==}
-
-  '@turf/clusters-dbscan@6.5.0':
-    resolution: {integrity: sha512-SxZEE4kADU9DqLRiT53QZBBhu8EP9skviSyl+FGj08Y01xfICM/RR9ACUdM0aEQimhpu+ZpRVcUK+2jtiCGrYQ==}
-
-  '@turf/clusters-kmeans@6.5.0':
-    resolution: {integrity: sha512-DwacD5+YO8kwDPKaXwT9DV46tMBVNsbi1IzdajZu1JDSWoN7yc7N9Qt88oi+p30583O0UPVkAK+A10WAQv4mUw==}
-
-  '@turf/clusters@6.5.0':
-    resolution: {integrity: sha512-Y6gfnTJzQ1hdLfCsyd5zApNbfLIxYEpmDibHUqR5z03Lpe02pa78JtgrgUNt1seeO/aJ4TG1NLN8V5gOrHk04g==}
-
-  '@turf/collect@6.5.0':
-    resolution: {integrity: sha512-4dN/T6LNnRg099m97BJeOcTA5fSI8cu87Ydgfibewd2KQwBexO69AnjEFqfPX3Wj+Zvisj1uAVIZbPmSSrZkjg==}
-
-  '@turf/combine@6.5.0':
-    resolution: {integrity: sha512-Q8EIC4OtAcHiJB3C4R+FpB4LANiT90t17uOd851qkM2/o6m39bfN5Mv0PWqMZIHWrrosZqRqoY9dJnzz/rJxYQ==}
-
-  '@turf/concave@6.5.0':
-    resolution: {integrity: sha512-I/sUmUC8TC5h/E2vPwxVht+nRt+TnXIPRoztDFvS8/Y0+cBDple9inLSo9nnPXMXidrBlGXZ9vQx/BjZUJgsRQ==}
-
-  '@turf/convex@6.5.0':
-    resolution: {integrity: sha512-x7ZwC5z7PJB0SBwNh7JCeCNx7Iu+QSrH7fYgK0RhhNop13TqUlvHMirMLRgf2db1DqUetrAO2qHJeIuasquUWg==}
-
-  '@turf/destination@6.5.0':
-    resolution: {integrity: sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==}
-
-  '@turf/difference@6.5.0':
-    resolution: {integrity: sha512-l8iR5uJqvI+5Fs6leNbhPY5t/a3vipUF/3AeVLpwPQcgmedNXyheYuy07PcMGH5Jdpi5gItOiTqwiU/bUH4b3A==}
-
-  '@turf/dissolve@6.5.0':
-    resolution: {integrity: sha512-WBVbpm9zLTp0Bl9CE35NomTaOL1c4TQCtEoO43YaAhNEWJOOIhZMFJyr8mbvYruKl817KinT3x7aYjjCMjTAsQ==}
-
-  '@turf/distance-weight@6.5.0':
-    resolution: {integrity: sha512-a8qBKkgVNvPKBfZfEJZnC3DV7dfIsC3UIdpRci/iap/wZLH41EmS90nM+BokAJflUHYy8PqE44wySGWHN1FXrQ==}
-
-  '@turf/distance@6.5.0':
-    resolution: {integrity: sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==}
-
-  '@turf/ellipse@6.5.0':
-    resolution: {integrity: sha512-kuXtwFviw/JqnyJXF1mrR/cb496zDTSbGKtSiolWMNImYzGGkbsAsFTjwJYgD7+4FixHjp0uQPzo70KDf3AIBw==}
-
-  '@turf/envelope@6.5.0':
-    resolution: {integrity: sha512-9Z+FnBWvOGOU4X+fMZxYFs1HjFlkKqsddLuMknRaqcJd6t+NIv5DWvPtDL8ATD2GEExYDiFLwMdckfr1yqJgHA==}
-
-  '@turf/explode@6.5.0':
-    resolution: {integrity: sha512-6cSvMrnHm2qAsace6pw9cDmK2buAlw8+tjeJVXMfMyY+w7ZUi1rprWMsY92J7s2Dar63Bv09n56/1V7+tcj52Q==}
-
-  '@turf/flatten@6.5.0':
-    resolution: {integrity: sha512-IBZVwoNLVNT6U/bcUUllubgElzpMsNoCw8tLqBw6dfYg9ObGmpEjf9BIYLr7a2Yn5ZR4l7YIj2T7kD5uJjZADQ==}
-
-  '@turf/flip@6.5.0':
-    resolution: {integrity: sha512-oyikJFNjt2LmIXQqgOGLvt70RgE2lyzPMloYWM7OR5oIFGRiBvqVD2hA6MNw6JewIm30fWZ8DQJw1NHXJTJPbg==}
-
-  '@turf/great-circle@6.5.0':
-    resolution: {integrity: sha512-7ovyi3HaKOXdFyN7yy1yOMa8IyOvV46RC1QOQTT+RYUN8ke10eyqExwBpL9RFUPvlpoTzoYbM/+lWPogQlFncg==}
-
-  '@turf/helpers@6.5.0':
-    resolution: {integrity: sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==}
-
-  '@turf/hex-grid@6.5.0':
-    resolution: {integrity: sha512-Ln3tc2tgZT8etDOldgc6e741Smg1CsMKAz1/Mlel+MEL5Ynv2mhx3m0q4J9IB1F3a4MNjDeVvm8drAaf9SF33g==}
-
-  '@turf/interpolate@6.5.0':
-    resolution: {integrity: sha512-LSH5fMeiGyuDZ4WrDJNgh81d2DnNDUVJtuFryJFup8PV8jbs46lQGfI3r1DJ2p1IlEJIz3pmAZYeTfMMoeeohw==}
-
-  '@turf/intersect@6.5.0':
-    resolution: {integrity: sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg==}
-
-  '@turf/invariant@6.5.0':
-    resolution: {integrity: sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==}
-
-  '@turf/isobands@6.5.0':
-    resolution: {integrity: sha512-4h6sjBPhRwMVuFaVBv70YB7eGz+iw0bhPRnp+8JBdX1UPJSXhoi/ZF2rACemRUr0HkdVB/a1r9gC32vn5IAEkw==}
-
-  '@turf/isolines@6.5.0':
-    resolution: {integrity: sha512-6ElhiLCopxWlv4tPoxiCzASWt/jMRvmp6mRYrpzOm3EUl75OhHKa/Pu6Y9nWtCMmVC/RcWtiiweUocbPLZLm0A==}
-
-  '@turf/kinks@6.5.0':
-    resolution: {integrity: sha512-ViCngdPt1eEL7hYUHR2eHR662GvCgTc35ZJFaNR6kRtr6D8plLaDju0FILeFFWSc+o8e3fwxZEJKmFj9IzPiIQ==}
-
-  '@turf/length@6.5.0':
-    resolution: {integrity: sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==}
-
-  '@turf/line-arc@6.5.0':
-    resolution: {integrity: sha512-I6c+V6mIyEwbtg9P9zSFF89T7QPe1DPTG3MJJ6Cm1MrAY0MdejwQKOpsvNl8LDU2ekHOlz2kHpPVR7VJsoMllA==}
-
-  '@turf/line-chunk@6.5.0':
-    resolution: {integrity: sha512-i1FGE6YJaaYa+IJesTfyRRQZP31QouS+wh/pa6O3CC0q4T7LtHigyBSYjrbjSLfn2EVPYGlPCMFEqNWCOkC6zg==}
-
-  '@turf/line-intersect@6.5.0':
-    resolution: {integrity: sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==}
-
-  '@turf/line-offset@6.5.0':
-    resolution: {integrity: sha512-CEXZbKgyz8r72qRvPchK0dxqsq8IQBdH275FE6o4MrBkzMcoZsfSjghtXzKaz9vvro+HfIXal0sTk2mqV1lQTw==}
-
-  '@turf/line-overlap@6.5.0':
-    resolution: {integrity: sha512-xHOaWLd0hkaC/1OLcStCpfq55lPHpPNadZySDXYiYjEz5HXr1oKmtMYpn0wGizsLwrOixRdEp+j7bL8dPt4ojQ==}
-
-  '@turf/line-segment@6.5.0':
-    resolution: {integrity: sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==}
-
-  '@turf/line-slice-along@6.5.0':
-    resolution: {integrity: sha512-KHJRU6KpHrAj+BTgTNqby6VCTnDzG6a1sJx/I3hNvqMBLvWVA2IrkR9L9DtsQsVY63IBwVdQDqiwCuZLDQh4Ng==}
-
-  '@turf/line-slice@6.5.0':
-    resolution: {integrity: sha512-vDqJxve9tBHhOaVVFXqVjF5qDzGtKWviyjbyi2QnSnxyFAmLlLnBfMX8TLQCAf2GxHibB95RO5FBE6I2KVPRuw==}
-
-  '@turf/line-split@6.5.0':
-    resolution: {integrity: sha512-/rwUMVr9OI2ccJjw7/6eTN53URtGThNSD5I0GgxyFXMtxWiloRJ9MTff8jBbtPWrRka/Sh2GkwucVRAEakx9Sw==}
-
-  '@turf/line-to-polygon@6.5.0':
-    resolution: {integrity: sha512-qYBuRCJJL8Gx27OwCD1TMijM/9XjRgXH/m/TyuND4OXedBpIWlK5VbTIO2gJ8OCfznBBddpjiObLBrkuxTpN4Q==}
-
-  '@turf/mask@6.5.0':
-    resolution: {integrity: sha512-RQha4aU8LpBrmrkH8CPaaoAfk0Egj5OuXtv6HuCQnHeGNOQt3TQVibTA3Sh4iduq4EPxnZfDjgsOeKtrCA19lg==}
-
-  '@turf/meta@6.5.0':
-    resolution: {integrity: sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==}
-
-  '@turf/midpoint@6.5.0':
-    resolution: {integrity: sha512-MyTzV44IwmVI6ec9fB2OgZ53JGNlgOpaYl9ArKoF49rXpL84F9rNATndbe0+MQIhdkw8IlzA6xVP4lZzfMNVCw==}
-
-  '@turf/moran-index@6.5.0':
-    resolution: {integrity: sha512-ItsnhrU2XYtTtTudrM8so4afBCYWNaB0Mfy28NZwLjB5jWuAsvyV+YW+J88+neK/ougKMTawkmjQqodNJaBeLQ==}
-
-  '@turf/nearest-point-on-line@6.5.0':
-    resolution: {integrity: sha512-WthrvddddvmymnC+Vf7BrkHGbDOUu6Z3/6bFYUGv1kxw8tiZ6n83/VG6kHz4poHOfS0RaNflzXSkmCi64fLBlg==}
-
-  '@turf/nearest-point-to-line@6.5.0':
-    resolution: {integrity: sha512-PXV7cN0BVzUZdjj6oeb/ESnzXSfWmEMrsfZSDRgqyZ9ytdiIj/eRsnOXLR13LkTdXVOJYDBuf7xt1mLhM4p6+Q==}
-
-  '@turf/nearest-point@6.5.0':
-    resolution: {integrity: sha512-fguV09QxilZv/p94s8SMsXILIAMiaXI5PATq9d7YWijLxWUj6Q/r43kxyoi78Zmwwh1Zfqz9w+bCYUAxZ5+euA==}
-
-  '@turf/planepoint@6.5.0':
-    resolution: {integrity: sha512-R3AahA6DUvtFbka1kcJHqZ7DMHmPXDEQpbU5WaglNn7NaCQg9HB0XM0ZfqWcd5u92YXV+Gg8QhC8x5XojfcM4Q==}
-
-  '@turf/point-grid@6.5.0':
-    resolution: {integrity: sha512-Iq38lFokNNtQJnOj/RBKmyt6dlof0yhaHEDELaWHuECm1lIZLY3ZbVMwbs+nXkwTAHjKfS/OtMheUBkw+ee49w==}
-
-  '@turf/point-on-feature@6.5.0':
-    resolution: {integrity: sha512-bDpuIlvugJhfcF/0awAQ+QI6Om1Y1FFYE8Y/YdxGRongivix850dTeXCo0mDylFdWFPGDo7Mmh9Vo4VxNwW/TA==}
-
-  '@turf/point-to-line-distance@6.5.0':
-    resolution: {integrity: sha512-opHVQ4vjUhNBly1bob6RWy+F+hsZDH9SA0UW36pIRzfpu27qipU18xup0XXEePfY6+wvhF6yL/WgCO2IbrLqEA==}
-
-  '@turf/points-within-polygon@6.5.0':
-    resolution: {integrity: sha512-YyuheKqjliDsBDt3Ho73QVZk1VXX1+zIA2gwWvuz8bR1HXOkcuwk/1J76HuFMOQI3WK78wyAi+xbkx268PkQzQ==}
-
-  '@turf/polygon-smooth@6.5.0':
-    resolution: {integrity: sha512-LO/X/5hfh/Rk4EfkDBpLlVwt3i6IXdtQccDT9rMjXEP32tRgy0VMFmdkNaXoGlSSKf/1mGqLl4y4wHd86DqKbg==}
-
-  '@turf/polygon-tangents@6.5.0':
-    resolution: {integrity: sha512-sB4/IUqJMYRQH9jVBwqS/XDitkEfbyqRy+EH/cMRJURTg78eHunvJ708x5r6umXsbiUyQU4eqgPzEylWEQiunw==}
-
-  '@turf/polygon-to-line@6.5.0':
-    resolution: {integrity: sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw==}
-
-  '@turf/polygonize@6.5.0':
-    resolution: {integrity: sha512-a/3GzHRaCyzg7tVYHo43QUChCspa99oK4yPqooVIwTC61npFzdrmnywMv0S+WZjHZwK37BrFJGFrZGf6ocmY5w==}
-
-  '@turf/projection@6.5.0':
-    resolution: {integrity: sha512-/Pgh9mDvQWWu8HRxqpM+tKz8OzgauV+DiOcr3FCjD6ubDnrrmMJlsf6fFJmggw93mtVPrZRL6yyi9aYCQBOIvg==}
-
-  '@turf/random@6.5.0':
-    resolution: {integrity: sha512-8Q25gQ/XbA7HJAe+eXp4UhcXM9aOOJFaxZ02+XSNwMvY8gtWSCBLVqRcW4OhqilgZ8PeuQDWgBxeo+BIqqFWFQ==}
-
-  '@turf/rectangle-grid@6.5.0':
-    resolution: {integrity: sha512-yQZ/1vbW68O2KsSB3OZYK+72aWz/Adnf7m2CMKcC+aq6TwjxZjAvlbCOsNUnMAuldRUVN1ph6RXMG4e9KEvKvg==}
-
-  '@turf/rewind@6.5.0':
-    resolution: {integrity: sha512-IoUAMcHWotBWYwSYuYypw/LlqZmO+wcBpn8ysrBNbazkFNkLf3btSDZMkKJO/bvOzl55imr/Xj4fi3DdsLsbzQ==}
-
-  '@turf/rhumb-bearing@6.5.0':
-    resolution: {integrity: sha512-jMyqiMRK4hzREjQmnLXmkJ+VTNTx1ii8vuqRwJPcTlKbNWfjDz/5JqJlb5NaFDcdMpftWovkW5GevfnuzHnOYA==}
-
-  '@turf/rhumb-destination@6.5.0':
-    resolution: {integrity: sha512-RHNP1Oy+7xTTdRrTt375jOZeHceFbjwohPHlr9Hf68VdHHPMAWgAKqiX2YgSWDcvECVmiGaBKWus1Df+N7eE4Q==}
-
-  '@turf/rhumb-distance@6.5.0':
-    resolution: {integrity: sha512-oKp8KFE8E4huC2Z1a1KNcFwjVOqa99isxNOwfo4g3SUABQ6NezjKDDrnvC4yI5YZ3/huDjULLBvhed45xdCrzg==}
-
-  '@turf/sample@6.5.0':
-    resolution: {integrity: sha512-kSdCwY7el15xQjnXYW520heKUrHwRvnzx8ka4eYxX9NFeOxaFITLW2G7UtXb6LJK8mmPXI8Aexv23F2ERqzGFg==}
-
-  '@turf/sector@6.5.0':
-    resolution: {integrity: sha512-cYUOkgCTWqa23SOJBqxoFAc/yGCUsPRdn/ovbRTn1zNTm/Spmk6hVB84LCKOgHqvSF25i0d2kWqpZDzLDdAPbw==}
-
-  '@turf/shortest-path@6.5.0':
-    resolution: {integrity: sha512-4de5+G7+P4hgSoPwn+SO9QSi9HY5NEV/xRJ+cmoFVRwv2CDsuOPDheHKeuIAhKyeKDvPvPt04XYWbac4insJMg==}
-
-  '@turf/simplify@6.5.0':
-    resolution: {integrity: sha512-USas3QqffPHUY184dwQdP8qsvcVH/PWBYdXY5am7YTBACaQOMAlf6AKJs9FT8jiO6fQpxfgxuEtwmox+pBtlOg==}
-
-  '@turf/square-grid@6.5.0':
-    resolution: {integrity: sha512-mlR0ayUdA+L4c9h7p4k3pX6gPWHNGuZkt2c5II1TJRmhLkW2557d6b/Vjfd1z9OVaajb1HinIs1FMSAPXuuUrA==}
-
-  '@turf/square@6.5.0':
-    resolution: {integrity: sha512-BM2UyWDmiuHCadVhHXKIx5CQQbNCpOxB6S/aCNOCLbhCeypKX5Q0Aosc5YcmCJgkwO5BERCC6Ee7NMbNB2vHmQ==}
-
-  '@turf/standard-deviational-ellipse@6.5.0':
-    resolution: {integrity: sha512-02CAlz8POvGPFK2BKK8uHGUk/LXb0MK459JVjKxLC2yJYieOBTqEbjP0qaWhiBhGzIxSMaqe8WxZ0KvqdnstHA==}
-
-  '@turf/tag@6.5.0':
-    resolution: {integrity: sha512-XwlBvrOV38CQsrNfrxvBaAPBQgXMljeU0DV8ExOyGM7/hvuGHJw3y8kKnQ4lmEQcmcrycjDQhP7JqoRv8vFssg==}
-
-  '@turf/tesselate@6.5.0':
-    resolution: {integrity: sha512-M1HXuyZFCfEIIKkglh/r5L9H3c5QTEsnMBoZOFQiRnGPGmJWcaBissGb7mTFX2+DKE7FNWXh4TDnZlaLABB0dQ==}
-
-  '@turf/tin@6.5.0':
-    resolution: {integrity: sha512-YLYikRzKisfwj7+F+Tmyy/LE3d2H7D4kajajIfc9mlik2+esG7IolsX/+oUz1biguDYsG0DUA8kVYXDkobukfg==}
-
-  '@turf/transform-rotate@6.5.0':
-    resolution: {integrity: sha512-A2Ip1v4246ZmpssxpcL0hhiVBEf4L8lGnSPWTgSv5bWBEoya2fa/0SnFX9xJgP40rMP+ZzRaCN37vLHbv1Guag==}
-
-  '@turf/transform-scale@6.5.0':
-    resolution: {integrity: sha512-VsATGXC9rYM8qTjbQJ/P7BswKWXHdnSJ35JlV4OsZyHBMxJQHftvmZJsFbOqVtQnIQIzf2OAly6rfzVV9QLr7g==}
-
-  '@turf/transform-translate@6.5.0':
-    resolution: {integrity: sha512-NABLw5VdtJt/9vSstChp93pc6oel4qXEos56RBMsPlYB8hzNTEKYtC146XJvyF4twJeeYS8RVe1u7KhoFwEM5w==}
-
-  '@turf/triangle-grid@6.5.0':
-    resolution: {integrity: sha512-2jToUSAS1R1htq4TyLQYPTIsoy6wg3e3BQXjm2rANzw4wPQCXGOxrur1Fy9RtzwqwljlC7DF4tg0OnWr8RjmfA==}
-
-  '@turf/truncate@6.5.0':
-    resolution: {integrity: sha512-pFxg71pLk+eJj134Z9yUoRhIi8vqnnKvCYwdT4x/DQl/19RVdq1tV3yqOT3gcTQNfniteylL5qV1uTBDV5sgrg==}
-
-  '@turf/turf@6.5.0':
-    resolution: {integrity: sha512-ipMCPnhu59bh92MNt8+pr1VZQhHVuTMHklciQURo54heoxRzt1neNYZOBR6jdL+hNsbDGAECMuIpAutX+a3Y+w==}
-
-  '@turf/union@6.5.0':
-    resolution: {integrity: sha512-igYWCwP/f0RFHIlC2c0SKDuM/ObBaqSljI3IdV/x71805QbIvY/BYGcJdyNcgEA6cylIGl/0VSlIbpJHZ9ldhw==}
-
-  '@turf/unkink-polygon@6.5.0':
-    resolution: {integrity: sha512-8QswkzC0UqKmN1DT6HpA9upfa1HdAA5n6bbuzHy8NJOX8oVizVAqfEPY0wqqTgboDjmBR4yyImsdPGUl3gZ8JQ==}
-
-  '@turf/voronoi@6.5.0':
-    resolution: {integrity: sha512-C/xUsywYX+7h1UyNqnydHXiun4UPjK88VDghtoRypR9cLlb7qozkiLRphQxxsCM0KxyxpVPHBVQXdAL3+Yurow==}
-
-  '@tweenjs/tween.js@25.0.0':
-    resolution: {integrity: sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==}
-
-  '@types/estree@1.0.8':
-    resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
-
-  '@types/event-emitter@0.3.5':
-    resolution: {integrity: sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==}
-
-  '@types/geojson@7946.0.8':
-    resolution: {integrity: sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==}
-
-  '@types/lodash-es@4.17.12':
-    resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
-
-  '@types/lodash@4.17.21':
-    resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==}
-
-  '@types/node@25.0.3':
-    resolution: {integrity: sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==}
-
-  '@types/readable-stream@4.0.23':
-    resolution: {integrity: sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig==}
-
-  '@types/svgo@2.6.4':
-    resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==}
-
-  '@types/trusted-types@2.0.7':
-    resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
-
-  '@types/web-bluetooth@0.0.16':
-    resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
-
-  '@types/ws@8.18.1':
-    resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
-
-  '@uppy/companion-client@2.2.2':
-    resolution: {integrity: sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==}
-
-  '@uppy/core@2.3.4':
-    resolution: {integrity: sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==}
-
-  '@uppy/store-default@2.1.1':
-    resolution: {integrity: sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==}
-
-  '@uppy/utils@4.1.3':
-    resolution: {integrity: sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==}
-
-  '@uppy/xhr-upload@2.1.3':
-    resolution: {integrity: sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==}
-    peerDependencies:
-      '@uppy/core': ^2.3.3
-
-  '@vant/popperjs@1.3.0':
-    resolution: {integrity: sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==}
-
-  '@vant/use@1.6.0':
-    resolution: {integrity: sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==}
-    peerDependencies:
-      vue: ^3.0.0
-
-  '@videojs/http-streaming@3.17.2':
-    resolution: {integrity: sha512-VBQ3W4wnKnVKb/limLdtSD2rAd5cmHN70xoMf4OmuDd0t2kfJX04G+sfw6u2j8oOm2BXYM9E1f4acHruqKnM1g==}
-    engines: {node: '>=8', npm: '>=5'}
-    peerDependencies:
-      video.js: ^8.19.0
-
-  '@videojs/vhs-utils@4.1.1':
-    resolution: {integrity: sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==}
-    engines: {node: '>=8', npm: '>=5'}
-
-  '@videojs/xhr@2.7.0':
-    resolution: {integrity: sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==}
-
-  '@vitejs/plugin-basic-ssl@1.2.0':
-    resolution: {integrity: sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==}
-    engines: {node: '>=14.21.3'}
-    peerDependencies:
-      vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0
-
-  '@vitejs/plugin-vue@5.2.4':
-    resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==}
-    engines: {node: ^18.0.0 || >=20.0.0}
-    peerDependencies:
-      vite: ^5.0.0 || ^6.0.0
-      vue: ^3.2.25
-
-  '@vue/compiler-core@3.5.26':
-    resolution: {integrity: sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==}
-
-  '@vue/compiler-dom@3.5.26':
-    resolution: {integrity: sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==}
-
-  '@vue/compiler-sfc@3.5.26':
-    resolution: {integrity: sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==}
-
-  '@vue/compiler-ssr@3.5.26':
-    resolution: {integrity: sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==}
-
-  '@vue/devtools-api@6.6.4':
-    resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
-
-  '@vue/reactivity@3.5.26':
-    resolution: {integrity: sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==}
-
-  '@vue/runtime-core@3.5.26':
-    resolution: {integrity: sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==}
-
-  '@vue/runtime-dom@3.5.26':
-    resolution: {integrity: sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==}
-
-  '@vue/server-renderer@3.5.26':
-    resolution: {integrity: sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==}
-    peerDependencies:
-      vue: 3.5.26
-
-  '@vue/shared@3.5.26':
-    resolution: {integrity: sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==}
-
-  '@vueuse/core@9.13.0':
-    resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==}
-
-  '@vueuse/metadata@9.13.0':
-    resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==}
-
-  '@vueuse/shared@9.13.0':
-    resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
-
-  '@wangeditor-next/basic-modules@1.5.47':
-    resolution: {integrity: sha512-FHydtBbfpsi4R4JTo5MvwWhzButwq6x36o+GoxsALdItwDW2qVgJkrlhw25aWYpg6ff1xqjivHfLBaAPWC4J+w==}
-    peerDependencies:
-      '@wangeditor-next/core': 1.7.45
-      dom7: ^3.0.0 || ^4.0.0
-      lodash.throttle: ^4.1.1
-      nanoid: ^5.0.0
-      slate: ^0.82.0
-      snabbdom: ^3.6.0
-
-  '@wangeditor-next/code-highlight@1.3.43':
-    resolution: {integrity: sha512-22eHjYDmtTxZqZOma2ls9zWA6gsgSkWq3XtmLylA15kegVBKAy7YxYbRrdS7D4Y/igqOerSbc5oMsOdeYjRfnQ==}
-    peerDependencies:
-      '@wangeditor-next/core': 1.7.45
-      dom7: ^3.0.0 || ^4.0.0
-      slate: ^0.82.0
-      snabbdom: ^3.6.0
-
-  '@wangeditor-next/core@1.7.45':
-    resolution: {integrity: sha512-5Pt8JCmdzJWk4q18zUZse+zM+mBW6jYt3npXVkLswYysx01krC3bBQq1J9JeZe4Ci+rQAs0tQj3t1imjpsmRgg==}
-    peerDependencies:
-      '@uppy/core': ^2.1.1
-      '@uppy/xhr-upload': ^2.0.3
-      dom7: ^3.0.0 || ^4.0.0
-      is-hotkey: ^0.2.0
-      lodash.camelcase: ^4.3.0
-      lodash.clonedeep: ^4.5.0
-      lodash.debounce: ^4.0.8
-      lodash.foreach: ^4.5.0
-      lodash.throttle: ^4.1.1
-      lodash.toarray: ^4.4.0
-      nanoid: ^5.0.0
-      slate: ^0.82.0
-      snabbdom: ^3.6.0
-
-  '@wangeditor-next/editor@5.6.49':
-    resolution: {integrity: sha512-gDh7CLzsuPvUp1n4rO//V1NTHlpGzEibL71oRcRcxpz76oNaW12u+GWWvRde4cWivaCTLzHwz7EfEVdyDkt/Ww==}
-
-  '@wangeditor-next/list-module@1.1.52':
-    resolution: {integrity: sha512-FMzvx+iXXkatFFRZZ+rbiPjZpEcPa3UtNBFs40VpZG0w7O3gQWM7B/oPec3SKvAmre/US4CC5DJEqeEY3QX4hw==}
-    peerDependencies:
-      '@wangeditor-next/core': 1.7.45
-      dom7: ^3.0.0 || ^4.0.0
-      slate: ^0.82.0
-      snabbdom: ^3.6.0
-
-  '@wangeditor-next/table-module@1.6.60':
-    resolution: {integrity: sha512-BGTG1YzPSIC4XJRafllCcynT9CkElWDSFxYBJ2svS36AvJc3ivQuj5Fhv+rCS4RqGggsN1hdeA4iP+xrtwWI4w==}
-    peerDependencies:
-      '@wangeditor-next/core': 1.7.45
-      dom7: ^3.0.0 || ^4.0.0
-      lodash.debounce: ^4.0.8
-      lodash.throttle: ^4.1.1
-      nanoid: ^5.0.0
-      slate: ^0.82.0
-      snabbdom: ^3.6.0
-
-  '@wangeditor-next/upload-image-module@1.1.50':
-    resolution: {integrity: sha512-KIzI1IIQA6J5Hg3/UJF/AlEsrxJ62LZZUt61tenkO8cxks2UQMvH4CEsgEU5NNfQ0PUnOeR4ErjOgyhtbZKyaQ==}
-    peerDependencies:
-      '@uppy/core': ^2.0.3
-      '@uppy/xhr-upload': ^2.0.3
-      '@wangeditor-next/basic-modules': 1.5.47
-      '@wangeditor-next/core': 1.7.45
-      dom7: ^3.0.0 || ^4.0.0
-      lodash.foreach: ^4.5.0
-      slate: ^0.82.0
-      snabbdom: ^3.6.0
-
-  '@wangeditor-next/video-module@1.3.51':
-    resolution: {integrity: sha512-67ecZCGIY+MUsqFtmwR9QKWlzGeIXVyXHmzPuevYwEqRwg50oR2xCSuoQLhfs5CKjXDZKsZhOnD/CGgt82TU+A==}
-    peerDependencies:
-      '@uppy/core': ^2.1.4
-      '@uppy/xhr-upload': ^2.0.7
-      '@wangeditor-next/core': 1.7.45
-      dom7: ^3.0.0 || ^4.0.0
-      nanoid: ^5.0.0
-      slate: ^0.82.0
-      snabbdom: ^3.6.0
-
-  '@wangeditor/basic-modules@1.1.7':
-    resolution: {integrity: sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==}
-    peerDependencies:
-      '@wangeditor/core': 1.x
-      dom7: ^3.0.0
-      lodash.throttle: ^4.1.1
-      nanoid: ^3.2.0
-      slate: ^0.72.0
-      snabbdom: ^3.1.0
-
-  '@wangeditor/code-highlight@1.0.3':
-    resolution: {integrity: sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==}
-    peerDependencies:
-      '@wangeditor/core': 1.x
-      dom7: ^3.0.0
-      slate: ^0.72.0
-      snabbdom: ^3.1.0
-
-  '@wangeditor/core@1.1.19':
-    resolution: {integrity: sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==}
-    peerDependencies:
-      '@uppy/core': ^2.1.1
-      '@uppy/xhr-upload': ^2.0.3
-      dom7: ^3.0.0
-      is-hotkey: ^0.2.0
-      lodash.camelcase: ^4.3.0
-      lodash.clonedeep: ^4.5.0
-      lodash.debounce: ^4.0.8
-      lodash.foreach: ^4.5.0
-      lodash.isequal: ^4.5.0
-      lodash.throttle: ^4.1.1
-      lodash.toarray: ^4.4.0
-      nanoid: ^3.2.0
-      slate: ^0.72.0
-      snabbdom: ^3.1.0
-
-  '@wangeditor/editor-for-vue@5.1.12':
-    resolution: {integrity: sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==}
-    peerDependencies:
-      '@wangeditor/editor': '>=5.1.0'
-      vue: ^3.0.5
-
-  '@wangeditor/editor@5.1.23':
-    resolution: {integrity: sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==}
-
-  '@wangeditor/list-module@1.0.5':
-    resolution: {integrity: sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==}
-    peerDependencies:
-      '@wangeditor/core': 1.x
-      dom7: ^3.0.0
-      slate: ^0.72.0
-      snabbdom: ^3.1.0
-
-  '@wangeditor/table-module@1.1.4':
-    resolution: {integrity: sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==}
-    peerDependencies:
-      '@wangeditor/core': 1.x
-      dom7: ^3.0.0
-      lodash.isequal: ^4.5.0
-      lodash.throttle: ^4.1.1
-      nanoid: ^3.2.0
-      slate: ^0.72.0
-      snabbdom: ^3.1.0
-
-  '@wangeditor/upload-image-module@1.0.2':
-    resolution: {integrity: sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==}
-    peerDependencies:
-      '@uppy/core': ^2.0.3
-      '@uppy/xhr-upload': ^2.0.3
-      '@wangeditor/basic-modules': 1.x
-      '@wangeditor/core': 1.x
-      dom7: ^3.0.0
-      lodash.foreach: ^4.5.0
-      slate: ^0.72.0
-      snabbdom: ^3.1.0
-
-  '@wangeditor/video-module@1.1.4':
-    resolution: {integrity: sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==}
-    peerDependencies:
-      '@uppy/core': ^2.1.4
-      '@uppy/xhr-upload': ^2.0.7
-      '@wangeditor/core': 1.x
-      dom7: ^3.0.0
-      nanoid: ^3.2.0
-      slate: ^0.72.0
-      snabbdom: ^3.1.0
-
-  '@xmldom/xmldom@0.8.11':
-    resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==}
-    engines: {node: '>=10.0.0'}
-
-  '@zip.js/zip.js@2.7.34':
-    resolution: {integrity: sha512-SWAK+hLYKRHswhakNUirPYrdsflSFOxykUckfbWDcPvP8tjLuV5EWyd3GHV0hVaJLDps40jJnv8yQVDbWnQDfg==}
-    engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=16.5.0'}
-
-  abort-controller@3.0.0:
-    resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
-    engines: {node: '>=6.5'}
-
-  acorn@8.15.0:
-    resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
-    engines: {node: '>=0.4.0'}
-    hasBin: true
-
-  adler-32@1.3.1:
-    resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==}
-    engines: {node: '>=0.8'}
-
-  aes-decrypter@4.0.2:
-    resolution: {integrity: sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==}
-
-  animate.css@4.1.1:
-    resolution: {integrity: sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==}
-
-  ansi-align@3.0.1:
-    resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
-
-  ansi-regex@2.1.1:
-    resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
-    engines: {node: '>=0.10.0'}
-
-  ansi-regex@5.0.1:
-    resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
-    engines: {node: '>=8'}
-
-  ansi-regex@6.2.2:
-    resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
-    engines: {node: '>=12'}
-
-  ansi-styles@2.2.1:
-    resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==}
-    engines: {node: '>=0.10.0'}
-
-  ansi-styles@4.3.0:
-    resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
-    engines: {node: '>=8'}
-
-  ansi-styles@6.2.3:
-    resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
-    engines: {node: '>=12'}
-
-  arr-diff@4.0.0:
-    resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==}
-    engines: {node: '>=0.10.0'}
-
-  arr-flatten@1.1.0:
-    resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
-    engines: {node: '>=0.10.0'}
-
-  arr-union@3.1.0:
-    resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
-    engines: {node: '>=0.10.0'}
-
-  array-buffer-byte-length@1.0.2:
-    resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
-    engines: {node: '>= 0.4'}
-
-  array-unique@0.3.2:
-    resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==}
-    engines: {node: '>=0.10.0'}
-
-  arraybuffer.prototype.slice@1.0.4:
-    resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
-    engines: {node: '>= 0.4'}
-
-  assign-symbols@1.0.0:
-    resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
-    engines: {node: '>=0.10.0'}
-
-  async-function@1.0.0:
-    resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
-    engines: {node: '>= 0.4'}
-
-  async-validator@4.2.5:
-    resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
-
-  asynckit@0.4.0:
-    resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
-
-  at-least-node@1.0.0:
-    resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
-    engines: {node: '>= 4.0.0'}
-
-  atob@2.1.2:
-    resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
-    engines: {node: '>= 4.5.0'}
-    hasBin: true
-
-  autolinker@4.1.5:
-    resolution: {integrity: sha512-vEfYZPmvVOIuE567XBVCsx8SBgOYtjB2+S1iAaJ+HgH+DNjAcrHem2hmAeC9yaNGWayicv4yR+9UaJlkF3pvtw==}
-    engines: {pnpm: '>=10.10.0'}
-
-  available-typed-arrays@1.0.7:
-    resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
-    engines: {node: '>= 0.4'}
-
-  avue-plugin-ueditor@1.0.4:
-    resolution: {integrity: sha512-fFOFsduZI9yK3LE7FpLMqqLJoWp4xGTDj08wmSS2CkBL6H1+P8+7u9lEcvRejnvytUBhv87xKNhHdMuWru1Umg==}
-    peerDependencies:
-      axios: '>=0.18.0'
-      vue: '>=3.2.0'
-
-  axios@1.13.2:
-    resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==}
-
-  b4a@1.7.3:
-    resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==}
-    peerDependencies:
-      react-native-b4a: '*'
-    peerDependenciesMeta:
-      react-native-b4a:
-        optional: true
-
-  balanced-match@1.0.2:
-    resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
-
-  bare-events@2.8.2:
-    resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==}
-    peerDependencies:
-      bare-abort-controller: '*'
-    peerDependenciesMeta:
-      bare-abort-controller:
-        optional: true
-
-  bare-fs@4.5.2:
-    resolution: {integrity: sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==}
-    engines: {bare: '>=1.16.0'}
-    peerDependencies:
-      bare-buffer: '*'
-    peerDependenciesMeta:
-      bare-buffer:
-        optional: true
-
-  bare-os@3.6.2:
-    resolution: {integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==}
-    engines: {bare: '>=1.14.0'}
-
-  bare-path@3.0.0:
-    resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==}
-
-  bare-stream@2.7.0:
-    resolution: {integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==}
-    peerDependencies:
-      bare-buffer: '*'
-      bare-events: '*'
-    peerDependenciesMeta:
-      bare-buffer:
-        optional: true
-      bare-events:
-        optional: true
-
-  bare-url@2.3.2:
-    resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==}
-
-  base64-js@1.5.1:
-    resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
-
-  base@0.11.2:
-    resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
-    engines: {node: '>=0.10.0'}
-
-  big.js@5.2.2:
-    resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
-
-  bitmap-sdf@1.0.4:
-    resolution: {integrity: sha512-1G3U4n5JE6RAiALMxu0p1XmeZkTeCwGKykzsLTCqVzfSDaN6S7fKnkIkfejogz+iwqBWc0UYAIKnKHNN7pSfDg==}
-
-  bl@4.1.0:
-    resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
-
-  bl@5.1.0:
-    resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==}
-
-  bl@6.1.6:
-    resolution: {integrity: sha512-jLsPgN/YSvPUg9UX0Kd73CXpm2Psg9FxMeCSXnk3WBO3CMT10JMwijubhGfHCnFu6TPn1ei3b975dxv7K2pWVg==}
-
-  bluebird@3.7.2:
-    resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
-
-  boolbase@1.0.0:
-    resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
-
-  boxen@7.1.1:
-    resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==}
-    engines: {node: '>=14.16'}
-
-  bpmn-js@11.5.0:
-    resolution: {integrity: sha512-Bdj53UvfiDtGE1wmiBmpgjl5RMLhCGV/C841dyC+t4kBHj7vApAeeHs2Qiycj390HO4B2U8UDROLT7yjdXEEUA==}
-
-  bpmn-moddle@8.1.0:
-    resolution: {integrity: sha512-yI5OAFfYVJwViKTsTsonVfCBPtB3MlefADUORwNIxxBOMp21vnoxuxsdgUWlPH/dvAEZh/+mr8UtqOBNu8NC5Q==}
-
-  brace-expansion@2.0.2:
-    resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
-
-  braces@2.3.2:
-    resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
-    engines: {node: '>=0.10.0'}
-
-  braces@3.0.3:
-    resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
-    engines: {node: '>=8'}
-
-  broker-factory@3.1.11:
-    resolution: {integrity: sha512-ex4RuEI0AJOdaIcXe1lu9EqRAVkoYvdcvwLvNcE5UZQzYNqzPY+z0frnlxT4+cUwNVpE//9MwGx4lKiLH+pEcw==}
-
-  buffer-from@1.1.2:
-    resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
-
-  buffer@5.7.1:
-    resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
-
-  buffer@6.0.3:
-    resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
-
-  cache-base@1.0.1:
-    resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==}
-    engines: {node: '>=0.10.0'}
-
-  call-bind-apply-helpers@1.0.2:
-    resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
-    engines: {node: '>= 0.4'}
-
-  call-bind@1.0.8:
-    resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
-    engines: {node: '>= 0.4'}
-
-  call-bound@1.0.4:
-    resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
-    engines: {node: '>= 0.4'}
-
-  camelcase@7.0.1:
-    resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
-    engines: {node: '>=14.16'}
-
-  cesium@1.126.0:
-    resolution: {integrity: sha512-29Cy6eq9NzTbQUaOXQEnVJyYoHCeizrBTbbB76OClI5+FNq9saUUx+iQXg/J6r8vX+KWt6oD/lVpZ0QMcvAgog==}
-    engines: {node: '>=18.18.0'}
-
-  cfb@1.2.2:
-    resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==}
-    engines: {node: '>=0.8'}
-
-  chalk@1.1.3:
-    resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==}
-    engines: {node: '>=0.10.0'}
-
-  chalk@4.1.2:
-    resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
-    engines: {node: '>=10'}
-
-  chalk@5.6.2:
-    resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
-    engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
-
-  chokidar@4.0.3:
-    resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
-    engines: {node: '>= 14.16.0'}
-
-  chownr@1.1.4:
-    resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
-
-  class-utils@0.3.6:
-    resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==}
-    engines: {node: '>=0.10.0'}
-
-  cli-boxes@3.0.0:
-    resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
-    engines: {node: '>=10'}
-
-  cli-cursor@4.0.0:
-    resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
-    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
-  cli-spinners@2.9.2:
-    resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
-    engines: {node: '>=6'}
-
-  clipboard@2.0.11:
-    resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==}
-
-  clone@2.1.2:
-    resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
-    engines: {node: '>=0.8'}
-
-  clsx@1.2.1:
-    resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==}
-    engines: {node: '>=6'}
-
-  codemirror@5.65.20:
-    resolution: {integrity: sha512-i5dLDDxwkFCbhjvL2pNjShsojoL3XHyDwsGv1jqETUoW+lzpBKKqNTUWgQwVAOa0tUm4BwekT455ujafi8payA==}
-
-  codepage@1.15.0:
-    resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==}
-    engines: {node: '>=0.8'}
-
-  collection-visit@1.0.0:
-    resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==}
-    engines: {node: '>=0.10.0'}
-
-  color-convert@2.0.1:
-    resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
-    engines: {node: '>=7.0.0'}
-
-  color-name@1.1.4:
-    resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-
-  color-string@1.9.1:
-    resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
-
-  color@4.2.3:
-    resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
-    engines: {node: '>=12.5.0'}
-
-  combined-stream@1.0.8:
-    resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
-    engines: {node: '>= 0.8'}
-
-  commander@2.20.3:
-    resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
-
-  commander@7.2.0:
-    resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
-    engines: {node: '>= 10'}
-
-  commist@3.2.0:
-    resolution: {integrity: sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==}
-
-  complex.js@2.4.3:
-    resolution: {integrity: sha512-UrQVSUur14tNX6tiP4y8T4w4FeJAX3bi2cIv0pu/DTLFNxoq7z2Yh83Vfzztj6Px3X/lubqQ9IrPp7Bpn6p4MQ==}
-
-  component-emitter@1.3.1:
-    resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==}
-
-  component-event@0.2.1:
-    resolution: {integrity: sha512-wGA++isMqiDq1jPYeyv2as/Bt/u+3iLW0rEa+8NQ82jAv3TgqMiCM+B2SaBdn2DfLilLjjq736YcezihRYhfxw==}
-
-  compute-scroll-into-view@1.0.20:
-    resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==}
-
-  compute-scroll-into-view@3.1.1:
-    resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==}
-
-  concat-stream@2.0.0:
-    resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==}
-    engines: {'0': node >= 6.0}
-
-  concaveman@2.0.0:
-    resolution: {integrity: sha512-3a9C//4G44/boNehBPZMRh8XxrwBvTXlhENUim+GMm207WoDie/Vq89U5lkhLn3kKA+vxwmwfdQPWIRwjQWoLA==}
-
-  confbox@0.1.8:
-    resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
-
-  copy-descriptor@0.1.1:
-    resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==}
-    engines: {node: '>=0.10.0'}
-
-  core-util-is@1.0.3:
-    resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
-
-  cors@2.8.5:
-    resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
-    engines: {node: '>= 0.10'}
-
-  countup.js@1.9.3:
-    resolution: {integrity: sha512-UHf2P/mFKaESqdPq+UdBJm/1y8lYdlcDd0nTZHNC8cxWoJwZr1Eldm1PpWui446vDl5Pd8PtRYkr3q6K4+Qa5A==}
-
-  countup.js@2.9.0:
-    resolution: {integrity: sha512-llqrvyXztRFPp6+i8jx25phHWcVWhrHO4Nlt0uAOSKHB8778zzQswa4MU3qKBvkXfJKftRYFJuVHez67lyKdHg==}
-
-  crc-32@1.2.2:
-    resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
-    engines: {node: '>=0.8'}
-    hasBin: true
-
-  cross-spawn@7.0.6:
-    resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
-    engines: {node: '>= 8'}
-
-  crypto-js@4.2.0:
-    resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
-
-  css-select@4.3.0:
-    resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
-
-  css-tree@1.1.3:
-    resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
-    engines: {node: '>=8.0.0'}
-
-  css-what@6.2.2:
-    resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
-    engines: {node: '>= 6'}
-
-  csso@4.2.0:
-    resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
-    engines: {node: '>=8.0.0'}
-
-  csstype@3.2.3:
-    resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
-
-  d3-array@1.2.4:
-    resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==}
-
-  d3-geo@1.7.1:
-    resolution: {integrity: sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==}
-
-  d3-voronoi@1.1.2:
-    resolution: {integrity: sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==}
-
-  d@1.0.2:
-    resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==}
-    engines: {node: '>=0.12'}
-
-  data-view-buffer@1.0.2:
-    resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
-    engines: {node: '>= 0.4'}
-
-  data-view-byte-length@1.0.2:
-    resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
-    engines: {node: '>= 0.4'}
-
-  data-view-byte-offset@1.0.1:
-    resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
-    engines: {node: '>= 0.4'}
-
-  dayjs@1.11.19:
-    resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==}
-
-  debug@2.6.9:
-    resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
-    peerDependencies:
-      supports-color: '*'
-    peerDependenciesMeta:
-      supports-color:
-        optional: true
-
-  debug@4.4.3:
-    resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
-    engines: {node: '>=6.0'}
-    peerDependencies:
-      supports-color: '*'
-    peerDependenciesMeta:
-      supports-color:
-        optional: true
-
-  decimal.js@10.6.0:
-    resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==}
-
-  decode-uri-component@0.2.2:
-    resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
-    engines: {node: '>=0.10'}
-
-  decompress-response@6.0.0:
-    resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
-    engines: {node: '>=10'}
-
-  deep-equal@1.1.2:
-    resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==}
-    engines: {node: '>= 0.4'}
-
-  deep-extend@0.6.0:
-    resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
-    engines: {node: '>=4.0.0'}
-
-  define-data-property@1.1.4:
-    resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
-    engines: {node: '>= 0.4'}
-
-  define-properties@1.2.1:
-    resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
-    engines: {node: '>= 0.4'}
-
-  define-property@0.2.5:
-    resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==}
-    engines: {node: '>=0.10.0'}
-
-  define-property@1.0.0:
-    resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==}
-    engines: {node: '>=0.10.0'}
-
-  define-property@2.0.2:
-    resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==}
-    engines: {node: '>=0.10.0'}
-
-  delayed-stream@1.0.0:
-    resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
-    engines: {node: '>=0.4.0'}
-
-  delegate@3.2.0:
-    resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==}
-
-  density-clustering@1.3.0:
-    resolution: {integrity: sha512-icpmBubVTwLnsaor9qH/4tG5+7+f61VcqMN3V3pm9sxxSCt2Jcs0zWOgwZW9ARJYaKD3FumIgHiMOcIMRRAzFQ==}
-
-  depd@2.0.0:
-    resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
-    engines: {node: '>= 0.8'}
-
-  destroy@1.2.0:
-    resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
-    engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
-
-  detect-libc@1.0.3:
-    resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
-    engines: {node: '>=0.10'}
-    hasBin: true
-
-  detect-libc@2.1.2:
-    resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
-    engines: {node: '>=8'}
-
-  diagram-js-direct-editing@2.1.2:
-    resolution: {integrity: sha512-VpccLAnLqLF1cp3fk363QUbRVTd/qTcj2oOb+IqgcmOiWszJp7J9Ta6y5GjUvw48hDZpzCatlmWwA4CJ3MaYGQ==}
-    peerDependencies:
-      diagram-js: '*'
-
-  diagram-js@11.13.1:
-    resolution: {integrity: sha512-6kO0rBN6aBIQiMELfv1oX2Ohes/brlIPuOVZUYAioeWM0EyuazhAXgHeq8iKFt29daU9NGRr4n78esGx8QjtjQ==}
-
-  didi@9.0.2:
-    resolution: {integrity: sha512-q2+aj+lnJcUweV7A9pdUrwFr4LHVmRPwTmQLtHPFz4aT7IBoryN6Iy+jmFku+oIzr5ebBkvtBCOb87+dJhb7bg==}
-
-  disable-devtool@0.3.9:
-    resolution: {integrity: sha512-WHCpC8f93Cn2DnTeaq57NFLcdw4921sovh1ammnp/2o8Snb704HK/Vw1/D2D1Pihc0zc8/mVKb5nchHtoadObQ==}
-
-  dom-serializer@0.2.2:
-    resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==}
-
-  dom-serializer@1.4.1:
-    resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
-
-  dom-walk@0.1.2:
-    resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==}
-
-  dom7@3.0.0:
-    resolution: {integrity: sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==}
-
-  dom7@4.0.6:
-    resolution: {integrity: sha512-emjdpPLhpNubapLFdjNL9tP06Sr+GZkrIHEXLWvOGsytACUrkbeIdjO5g77m00BrHTznnlcNqgmn7pCN192TBA==}
-
-  domelementtype@1.3.1:
-    resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==}
-
-  domelementtype@2.3.0:
-    resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
-
-  domhandler@2.4.2:
-    resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==}
-
-  domhandler@4.3.1:
-    resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
-    engines: {node: '>= 4'}
-
-  domify@1.4.2:
-    resolution: {integrity: sha512-m4yreHcUWHBncGVV7U+yQzc12vIlq0jMrtHZ5mW6dQMiL/7skSYNVX9wqKwOtyO9SGCgevrAFEgOCAHmamHTUA==}
-
-  dompurify@3.3.1:
-    resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==}
-
-  domutils@1.7.0:
-    resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==}
-
-  domutils@2.8.0:
-    resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
-
-  draco3d@1.5.7:
-    resolution: {integrity: sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==}
-
-  dunder-proto@1.0.1:
-    resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
-    engines: {node: '>= 0.4'}
-
-  earcut@2.2.4:
-    resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==}
-
-  earcut@3.0.2:
-    resolution: {integrity: sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==}
-
-  eastasianwidth@0.2.0:
-    resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
-
-  echarts@5.6.0:
-    resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==}
-
-  ee-first@1.1.1:
-    resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
-
-  element-plus@2.9.11:
-    resolution: {integrity: sha512-x4L/6YC8de4JtuE3vpaEugJdQIeHQaHtIYKyk67IeF6dTIiVax45aX4nWOygnh+xX+0gTvL6xO+9BZhPA3G82w==}
-    peerDependencies:
-      vue: ^3.2.0
-
-  emoji-regex@10.6.0:
-    resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
-
-  emoji-regex@8.0.0:
-    resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
-
-  emoji-regex@9.2.2:
-    resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
-
-  emojis-list@3.0.0:
-    resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
-    engines: {node: '>= 4'}
-
-  encodeurl@2.0.0:
-    resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
-    engines: {node: '>= 0.8'}
-
-  end-of-stream@1.4.5:
-    resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
-
-  entities@1.1.2:
-    resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==}
-
-  entities@2.2.0:
-    resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
-
-  entities@7.0.0:
-    resolution: {integrity: sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==}
-    engines: {node: '>=0.12'}
-
-  es-abstract@1.24.1:
-    resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==}
-    engines: {node: '>= 0.4'}
-
-  es-define-property@1.0.1:
-    resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
-    engines: {node: '>= 0.4'}
-
-  es-errors@1.3.0:
-    resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
-    engines: {node: '>= 0.4'}
-
-  es-object-atoms@1.1.1:
-    resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
-    engines: {node: '>= 0.4'}
-
-  es-set-tostringtag@2.1.0:
-    resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
-    engines: {node: '>= 0.4'}
-
-  es-to-primitive@1.3.0:
-    resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
-    engines: {node: '>= 0.4'}
-
-  es5-ext@0.10.64:
-    resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==}
-    engines: {node: '>=0.10'}
-
-  es6-iterator@2.0.3:
-    resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==}
-
-  es6-symbol@3.1.4:
-    resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==}
-    engines: {node: '>=0.12'}
-
-  esbuild@0.20.2:
-    resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==}
-    engines: {node: '>=12'}
-    hasBin: true
-
-  escape-html@1.0.3:
-    resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
-
-  escape-latex@1.2.0:
-    resolution: {integrity: sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==}
-
-  escape-string-regexp@1.0.5:
-    resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
-    engines: {node: '>=0.8.0'}
-
-  escape-string-regexp@5.0.0:
-    resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
-    engines: {node: '>=12'}
-
-  esniff@2.0.1:
-    resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==}
-    engines: {node: '>=0.10'}
-
-  estree-walker@2.0.2:
-    resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
-
-  etag@1.8.1:
-    resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
-    engines: {node: '>= 0.6'}
-
-  event-emitter@0.3.5:
-    resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==}
-
-  event-target-shim@5.0.1:
-    resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
-    engines: {node: '>=6'}
-
-  eventemitter3@5.0.1:
-    resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
-
-  events-universal@1.0.1:
-    resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==}
-
-  events@3.3.0:
-    resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
-    engines: {node: '>=0.8.x'}
-
-  expand-brackets@2.1.4:
-    resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==}
-    engines: {node: '>=0.10.0'}
-
-  expand-template@2.0.3:
-    resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
-    engines: {node: '>=6'}
-
-  ext@1.7.0:
-    resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
-
-  extend-shallow@2.0.1:
-    resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
-    engines: {node: '>=0.10.0'}
-
-  extend-shallow@3.0.2:
-    resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==}
-    engines: {node: '>=0.10.0'}
-
-  extglob@2.0.4:
-    resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==}
-    engines: {node: '>=0.10.0'}
-
-  fast-fifo@1.3.2:
-    resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
-
-  fast-glob@3.3.3:
-    resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
-    engines: {node: '>=8.6.0'}
-
-  fast-unique-numbers@9.0.24:
-    resolution: {integrity: sha512-Dv0BYn4waOWse94j16rsZ5w/0zoaCa74O3q6IZjMqaXbtT92Q+Sb6pPk+phGzD8Xh+nueQmSRI3tSCaHKidzKw==}
-    engines: {node: '>=18.2.0'}
-
-  fastq@1.20.1:
-    resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
-
-  filesize@10.1.6:
-    resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==}
-    engines: {node: '>= 10.4.0'}
-
-  fill-range@4.0.0:
-    resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
-    engines: {node: '>=0.10.0'}
-
-  fill-range@7.1.1:
-    resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
-    engines: {node: '>=8'}
-
-  follow-redirects@1.15.11:
-    resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
-    engines: {node: '>=4.0'}
-    peerDependencies:
-      debug: '*'
-    peerDependenciesMeta:
-      debug:
-        optional: true
-
-  for-each@0.3.5:
-    resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
-    engines: {node: '>= 0.4'}
-
-  for-in@1.0.2:
-    resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
-    engines: {node: '>=0.10.0'}
-
-  foreground-child@3.3.1:
-    resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
-    engines: {node: '>=14'}
-
-  form-data@4.0.5:
-    resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
-    engines: {node: '>= 6'}
-
-  frac@1.1.2:
-    resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==}
-    engines: {node: '>=0.8'}
-
-  fraction.js@4.3.7:
-    resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
-
-  fragment-cache@0.2.1:
-    resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==}
-    engines: {node: '>=0.10.0'}
-
-  fresh@0.5.2:
-    resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
-    engines: {node: '>= 0.6'}
-
-  fs-constants@1.0.0:
-    resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
-
-  fs-extra@10.1.0:
-    resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
-    engines: {node: '>=12'}
-
-  fs-extra@9.1.0:
-    resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==}
-    engines: {node: '>=10'}
-
-  fsevents@2.3.3:
-    resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
-    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
-    os: [darwin]
-
-  function-bind@1.1.2:
-    resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-
-  function.prototype.name@1.1.8:
-    resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
-    engines: {node: '>= 0.4'}
-
-  functions-have-names@1.2.3:
-    resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
-
-  generator-function@2.0.1:
-    resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
-    engines: {node: '>= 0.4'}
-
-  geojson-equality@0.1.6:
-    resolution: {integrity: sha512-TqG8YbqizP3EfwP5Uw4aLu6pKkg6JQK9uq/XZ1lXQntvTHD1BBKJWhNpJ2M0ax6TuWMP3oyx6Oq7FCIfznrgpQ==}
-
-  geojson-rbush@3.2.0:
-    resolution: {integrity: sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==}
-
-  get-intrinsic@1.3.0:
-    resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
-    engines: {node: '>= 0.4'}
-
-  get-proto@1.0.1:
-    resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
-    engines: {node: '>= 0.4'}
-
-  get-symbol-description@1.1.0:
-    resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
-    engines: {node: '>= 0.4'}
-
-  get-value@2.0.6:
-    resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==}
-    engines: {node: '>=0.10.0'}
-
-  github-from-package@0.0.0:
-    resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
-
-  glob-parent@5.1.2:
-    resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
-    engines: {node: '>= 6'}
-
-  glob@10.5.0:
-    resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==}
-    hasBin: true
-
-  global@4.4.0:
-    resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==}
-
-  globalthis@1.0.4:
-    resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
-    engines: {node: '>= 0.4'}
-
-  good-listener@1.2.2:
-    resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==}
-
-  gopd@1.2.0:
-    resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
-    engines: {node: '>= 0.4'}
-
-  graceful-fs@4.2.11:
-    resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
-
-  grapheme-splitter@1.0.4:
-    resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
-
-  hammerjs@2.0.8:
-    resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==}
-    engines: {node: '>=0.8.0'}
-
-  has-ansi@2.0.0:
-    resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==}
-    engines: {node: '>=0.10.0'}
-
-  has-bigints@1.1.0:
-    resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
-    engines: {node: '>= 0.4'}
-
-  has-flag@1.0.0:
-    resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==}
-    engines: {node: '>=0.10.0'}
-
-  has-flag@4.0.0:
-    resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
-    engines: {node: '>=8'}
-
-  has-property-descriptors@1.0.2:
-    resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
-
-  has-proto@1.2.0:
-    resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
-    engines: {node: '>= 0.4'}
-
-  has-symbols@1.1.0:
-    resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
-    engines: {node: '>= 0.4'}
-
-  has-tostringtag@1.0.2:
-    resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
-    engines: {node: '>= 0.4'}
-
-  has-value@0.3.1:
-    resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==}
-    engines: {node: '>=0.10.0'}
-
-  has-value@1.0.0:
-    resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==}
-    engines: {node: '>=0.10.0'}
-
-  has-values@0.1.4:
-    resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==}
-    engines: {node: '>=0.10.0'}
-
-  has-values@1.0.0:
-    resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==}
-    engines: {node: '>=0.10.0'}
-
-  hasown@2.0.2:
-    resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
-    engines: {node: '>= 0.4'}
-
-  he@1.2.0:
-    resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
-    hasBin: true
-
-  help-me@5.0.0:
-    resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==}
-
-  highlight.js@11.11.1:
-    resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==}
-    engines: {node: '>=12.0.0'}
-
-  htm@3.1.1:
-    resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==}
-
-  html-void-elements@2.0.1:
-    resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==}
-
-  html-void-elements@3.0.0:
-    resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
-
-  html5-qrcode@2.3.8:
-    resolution: {integrity: sha512-jsr4vafJhwoLVEDW3n1KvPnCCXWaQfRng0/EEYk1vNcQGcG/htAdhJX0be8YyqMoSz7+hZvOZSTAepsabiuhiQ==}
-
-  htmlparser2@3.10.1:
-    resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==}
-
-  http-errors@2.0.1:
-    resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
-    engines: {node: '>= 0.8'}
-
-  hull.js@1.0.6:
-    resolution: {integrity: sha512-TC7e9sHYOaCVms0sn2hN7buxnaGfcl9h5EPVoVX9DTPoMpqQiS9bf3tmGDgiNaMVHBD91RAvWjCxrJ5Jx8BI5A==}
-    deprecated: This package is unmaintained and vulnerable. Do not use it.
-
-  i18next@20.6.1:
-    resolution: {integrity: sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==}
-
-  i18next@23.16.8:
-    resolution: {integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==}
-
-  ids@1.0.5:
-    resolution: {integrity: sha512-XQ0yom/4KWTL29sLG+tyuycy7UmeaM/79GRtSJq6IG9cJGIPeBz5kwDCguie3TwxaMNIc3WtPi0cTa1XYHicpw==}
-
-  ieee754@1.2.1:
-    resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
-
-  image-size@0.5.5:
-    resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
-    engines: {node: '>=0.10.0'}
-    hasBin: true
-
-  immediate@3.0.6:
-    resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
-
-  immer@9.0.21:
-    resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==}
-
-  immutable@5.1.4:
-    resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==}
-
-  inherits-browser@0.1.0:
-    resolution: {integrity: sha512-CJHHvW3jQ6q7lzsXPpapLdMx5hDpSF3FSh45pwsj6bKxJJ8Nl8v43i5yXnr3BdfOimGHKyniewQtnAIp3vyJJw==}
-
-  inherits@2.0.4:
-    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
-
-  ini@1.3.8:
-    resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
-
-  internal-slot@1.1.0:
-    resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
-    engines: {node: '>= 0.4'}
-
-  ip-address@10.1.0:
-    resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==}
-    engines: {node: '>= 12'}
-
-  is-accessor-descriptor@1.0.1:
-    resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==}
-    engines: {node: '>= 0.10'}
-
-  is-arguments@1.2.0:
-    resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}
-    engines: {node: '>= 0.4'}
-
-  is-array-buffer@3.0.5:
-    resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
-    engines: {node: '>= 0.4'}
-
-  is-arrayish@0.3.4:
-    resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==}
-
-  is-async-function@2.1.1:
-    resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
-    engines: {node: '>= 0.4'}
-
-  is-bigint@1.1.0:
-    resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
-    engines: {node: '>= 0.4'}
-
-  is-boolean-object@1.2.2:
-    resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
-    engines: {node: '>= 0.4'}
-
-  is-buffer@1.1.6:
-    resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
-
-  is-callable@1.2.7:
-    resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
-    engines: {node: '>= 0.4'}
-
-  is-data-descriptor@1.0.1:
-    resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==}
-    engines: {node: '>= 0.4'}
-
-  is-data-view@1.0.2:
-    resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
-    engines: {node: '>= 0.4'}
-
-  is-date-object@1.1.0:
-    resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
-    engines: {node: '>= 0.4'}
-
-  is-descriptor@0.1.7:
-    resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==}
-    engines: {node: '>= 0.4'}
-
-  is-descriptor@1.0.3:
-    resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==}
-    engines: {node: '>= 0.4'}
-
-  is-extendable@0.1.1:
-    resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
-    engines: {node: '>=0.10.0'}
-
-  is-extendable@1.0.1:
-    resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
-    engines: {node: '>=0.10.0'}
-
-  is-extglob@2.1.1:
-    resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
-    engines: {node: '>=0.10.0'}
-
-  is-finalizationregistry@1.1.1:
-    resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
-    engines: {node: '>= 0.4'}
-
-  is-fullwidth-code-point@3.0.0:
-    resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
-    engines: {node: '>=8'}
-
-  is-function@1.0.2:
-    resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==}
-
-  is-generator-function@1.1.2:
-    resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
-    engines: {node: '>= 0.4'}
-
-  is-glob@4.0.3:
-    resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
-    engines: {node: '>=0.10.0'}
-
-  is-hotkey@0.2.0:
-    resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==}
-
-  is-interactive@2.0.0:
-    resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==}
-    engines: {node: '>=12'}
-
-  is-map@2.0.3:
-    resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
-    engines: {node: '>= 0.4'}
-
-  is-negative-zero@2.0.3:
-    resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
-    engines: {node: '>= 0.4'}
-
-  is-number-object@1.1.1:
-    resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
-    engines: {node: '>= 0.4'}
-
-  is-number@3.0.0:
-    resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==}
-    engines: {node: '>=0.10.0'}
-
-  is-number@7.0.0:
-    resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
-    engines: {node: '>=0.12.0'}
-
-  is-plain-obj@1.1.0:
-    resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
-    engines: {node: '>=0.10.0'}
-
-  is-plain-object@2.0.4:
-    resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
-    engines: {node: '>=0.10.0'}
-
-  is-plain-object@5.0.0:
-    resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
-    engines: {node: '>=0.10.0'}
-
-  is-regex@1.2.1:
-    resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
-    engines: {node: '>= 0.4'}
-
-  is-set@2.0.3:
-    resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
-    engines: {node: '>= 0.4'}
-
-  is-shared-array-buffer@1.0.4:
-    resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
-    engines: {node: '>= 0.4'}
-
-  is-string@1.1.1:
-    resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
-    engines: {node: '>= 0.4'}
-
-  is-symbol@1.1.1:
-    resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
-    engines: {node: '>= 0.4'}
-
-  is-typed-array@1.1.15:
-    resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
-    engines: {node: '>= 0.4'}
-
-  is-unicode-supported@1.3.0:
-    resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==}
-    engines: {node: '>=12'}
-
-  is-url@1.2.4:
-    resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==}
-
-  is-weakmap@2.0.2:
-    resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
-    engines: {node: '>= 0.4'}
-
-  is-weakref@1.1.1:
-    resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
-    engines: {node: '>= 0.4'}
-
-  is-weakset@2.0.4:
-    resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
-    engines: {node: '>= 0.4'}
-
-  is-windows@1.0.2:
-    resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
-    engines: {node: '>=0.10.0'}
-
-  isarray@1.0.0:
-    resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
-
-  isarray@2.0.5:
-    resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
-
-  isexe@2.0.0:
-    resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
-  isobject@2.1.0:
-    resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==}
-    engines: {node: '>=0.10.0'}
-
-  isobject@3.0.1:
-    resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
-    engines: {node: '>=0.10.0'}
-
-  jackspeak@3.4.3:
-    resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
-
-  javascript-natural-sort@0.7.1:
-    resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==}
-
-  js-audio-recorder@1.0.7:
-    resolution: {integrity: sha512-JiDODCElVHGrFyjGYwYyNi7zCbKk9va9C77w+zCPMmi4C6ix7zsX2h3ddHugmo4dOTOTCym9++b/wVW9nC0IaA==}
-
-  js-base64@2.6.4:
-    resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==}
-
-  js-base64@3.7.8:
-    resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==}
-
-  js-cookie@3.0.5:
-    resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==}
-    engines: {node: '>=14'}
-
-  js-md5@0.7.3:
-    resolution: {integrity: sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==}
-
-  js-sdsl@4.3.0:
-    resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==}
-
-  jsbn@1.1.0:
-    resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==}
-
-  jsep@1.4.0:
-    resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==}
-    engines: {node: '>= 10.16.0'}
-
-  json5@1.0.2:
-    resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
-    hasBin: true
-
-  jsonfile@6.2.0:
-    resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==}
-
-  jszip@3.10.1:
-    resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
-
-  kdbush@4.0.2:
-    resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==}
-
-  kind-of@3.2.2:
-    resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==}
-    engines: {node: '>=0.10.0'}
-
-  kind-of@4.0.0:
-    resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==}
-    engines: {node: '>=0.10.0'}
-
-  kind-of@5.1.0:
-    resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==}
-    engines: {node: '>=0.10.0'}
-
-  kind-of@6.0.3:
-    resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
-    engines: {node: '>=0.10.0'}
-
-  ktx-parse@0.7.1:
-    resolution: {integrity: sha512-FeA3g56ksdFNwjXJJsc1CCc7co+AJYDp6ipIp878zZ2bU8kWROatLYf39TQEd4/XRSUvBXovQ8gaVKWPXsCLEQ==}
-
-  leaflet-ant-path@1.3.0:
-    resolution: {integrity: sha512-wgWWcAD4w8QVguRsHh89NGj5eqwLOP6e/HazunW0fQaytqZqEh3WePWYIrmbUeMcOf2cX/+GecHkFfI5tirS1Q==}
-
-  leaflet@1.9.4:
-    resolution: {integrity: sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==}
-
-  lerc@2.0.0:
-    resolution: {integrity: sha512-7qo1Mq8ZNmaR4USHHm615nEW2lPeeWJ3bTyoqFbd35DLx0LUH7C6ptt5FDCTAlbIzs3+WKrk5SkJvw8AFDE2hg==}
-
-  lie@3.3.0:
-    resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
-
-  loader-utils@1.4.2:
-    resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==}
-    engines: {node: '>=4.0.0'}
-
-  local-pkg@0.4.3:
-    resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==}
-    engines: {node: '>=14'}
-
-  lodash-es@4.17.22:
-    resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==}
-
-  lodash-unified@1.0.3:
-    resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==}
-    peerDependencies:
-      '@types/lodash-es': '*'
-      lodash: '*'
-      lodash-es: '*'
-
-  lodash.camelcase@4.3.0:
-    resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
-
-  lodash.clonedeep@4.5.0:
-    resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==}
-
-  lodash.debounce@4.0.8:
-    resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
-
-  lodash.foreach@4.5.0:
-    resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==}
-
-  lodash.isequal@4.5.0:
-    resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
-    deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead.
-
-  lodash.throttle@4.1.1:
-    resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==}
-
-  lodash.toarray@4.4.0:
-    resolution: {integrity: sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==}
-
-  lodash@4.17.21:
-    resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
-
-  log-symbols@5.1.0:
-    resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==}
-    engines: {node: '>=12'}
-
-  long@5.3.2:
-    resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
-
-  lru-cache@10.4.3:
-    resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
-
-  m3u8-parser@7.2.0:
-    resolution: {integrity: sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==}
-
-  magic-string@0.25.9:
-    resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
-
-  magic-string@0.26.7:
-    resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==}
-    engines: {node: '>=12'}
-
-  magic-string@0.27.0:
-    resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
-    engines: {node: '>=12'}
-
-  magic-string@0.30.21:
-    resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
-
-  map-cache@0.2.2:
-    resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
-    engines: {node: '>=0.10.0'}
-
-  map-visit@1.0.0:
-    resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==}
-    engines: {node: '>=0.10.0'}
-
-  math-intrinsics@1.1.0:
-    resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
-    engines: {node: '>= 0.4'}
-
-  mathjs@10.0.0:
-    resolution: {integrity: sha512-PZcQ73mVvVG2GZXvE47q+j7P3ALVxWUM51wTmlVX3F/3IJMLNziNIqStwyIDAO64ZGB8u3iFlQwxT7DIijtNlw==}
-    engines: {node: '>= 12'}
-    hasBin: true
-
-  mdn-data@2.0.14:
-    resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
-
-  memoize-one@6.0.0:
-    resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
-
-  merge-options@1.0.1:
-    resolution: {integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==}
-    engines: {node: '>=4'}
-
-  merge2@1.4.1:
-    resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
-    engines: {node: '>= 8'}
-
-  mersenne-twister@1.1.0:
-    resolution: {integrity: sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA==}
-
-  meshoptimizer@0.22.0:
-    resolution: {integrity: sha512-IebiK79sqIy+E4EgOr+CAw+Ke8hAspXKzBd0JdgEmPHiAwmvEj2S4h1rfvo+o/BnfEYd/jAOg5IeeIjzlzSnDg==}
-
-  micromatch@3.1.0:
-    resolution: {integrity: sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==}
-    engines: {node: '>=0.10.0'}
-
-  micromatch@4.0.8:
-    resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
-    engines: {node: '>=8.6'}
-
-  mime-db@1.52.0:
-    resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
-    engines: {node: '>= 0.6'}
-
-  mime-match@1.0.2:
-    resolution: {integrity: sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==}
-
-  mime-types@2.1.35:
-    resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
-    engines: {node: '>= 0.6'}
-
-  mime@1.6.0:
-    resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
-    engines: {node: '>=4'}
-    hasBin: true
-
-  mimic-fn@2.1.0:
-    resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
-    engines: {node: '>=6'}
-
-  mimic-response@3.1.0:
-    resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
-    engines: {node: '>=10'}
-
-  min-dash@4.2.3:
-    resolution: {integrity: sha512-VLMYQI5+FcD9Ad24VcB08uA83B07OhueAlZ88jBK6PyupTvEJwllTMUqMy0wPGYs7pZUEtEEMWdHB63m3LtEcg==}
-
-  min-document@2.19.2:
-    resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==}
-
-  min-dom@4.2.1:
-    resolution: {integrity: sha512-TMoL8SEEIhUWYgkj7XMSgxmwSyGI+4fP2KFFGnN3FbHfbGHVdsLYSz8LoIsgPhz4dWRmLvxWWSMgzZMJW5sZuA==}
-
-  minimatch@9.0.5:
-    resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
-    engines: {node: '>=16 || 14 >=14.17'}
-
-  minimist@1.2.8:
-    resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
-
-  minipass@7.1.2:
-    resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
-    engines: {node: '>=16 || 14 >=14.17'}
-
-  mitt@3.0.1:
-    resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
-
-  mixin-deep@1.3.2:
-    resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
-    engines: {node: '>=0.10.0'}
-
-  mkdirp-classic@0.5.3:
-    resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
-
-  mlly@1.8.0:
-    resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
-
-  moddle-xml@10.1.0:
-    resolution: {integrity: sha512-erWckwLt+dYskewKXJso9u+aAZ5172lOiYxSOqKCPTy7L/xmqH1PoeoA7eVC7oJTt3PqF5TkZzUmbjGH6soQBg==}
-
-  moddle@6.2.3:
-    resolution: {integrity: sha512-bLVN+ZHL3aKnhxc19XtjUfvdJsS3EsiEJC7bT6YPD11qYmTzvsxrGgyYz1Ouof7TZuGw0lDJ1OLmEnxcpQWk3Q==}
-
-  mpd-parser@1.3.1:
-    resolution: {integrity: sha512-1FuyEWI5k2HcmhS1HkKnUAQV7yFPfXPht2DnRRGtoiiAAW+ESTbtEXIDpRkwdU+XyrQuwrIym7UkoPKsZ0SyFw==}
-    hasBin: true
-
-  mqtt-packet@9.0.2:
-    resolution: {integrity: sha512-MvIY0B8/qjq7bKxdN1eD+nrljoeaai+qjLJgfRn3TiMuz0pamsIWY2bFODPZMSNmabsLANXsLl4EMoWvlaTZWA==}
-
-  mqtt@5.14.1:
-    resolution: {integrity: sha512-NxkPxE70Uq3Ph7goefQa7ggSsVzHrayCD0OyxlJgITN/EbzlZN+JEPmaAZdxP1LsIT5FamDyILoQTF72W7Nnbw==}
-    engines: {node: '>=16.0.0'}
-    hasBin: true
-
-  ms@2.0.0:
-    resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
-
-  ms@2.1.3:
-    resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
-  mux.js@7.1.0:
-    resolution: {integrity: sha512-NTxawK/BBELJrYsZThEulyUMDVlLizKdxyAsMuzoCD1eFj97BVaA8D/CvKsKu6FOLYkFojN5CbM9h++ZTZtknA==}
-    engines: {node: '>=8', npm: '>=5'}
-    hasBin: true
-
-  namespace-emitter@2.0.1:
-    resolution: {integrity: sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==}
-
-  nanoid@3.3.11:
-    resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
-    engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
-    hasBin: true
-
-  nanoid@5.1.6:
-    resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==}
-    engines: {node: ^18 || >=20}
-    hasBin: true
-
-  nanomatch@1.2.13:
-    resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==}
-    engines: {node: '>=0.10.0'}
-
-  napi-build-utils@2.0.0:
-    resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==}
-
-  next-tick@1.1.0:
-    resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
-
-  node-abi@3.85.0:
-    resolution: {integrity: sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==}
-    engines: {node: '>=10'}
-
-  node-addon-api@6.1.0:
-    resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
-
-  node-addon-api@7.1.1:
-    resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
-
-  normalize-wheel-es@1.2.0:
-    resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==}
-
-  nosleep.js@0.12.0:
-    resolution: {integrity: sha512-9d1HbpKLh3sdWlhXMhU6MMH+wQzKkrgfRkYV0EBdvt99YJfj0ilCJrWRDYG2130Tm4GXbEoTCx5b34JSaP+HhA==}
-
-  nprogress@0.2.0:
-    resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
-
-  nth-check@2.1.1:
-    resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
-
-  number-allocator@1.0.14:
-    resolution: {integrity: sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==}
-
-  object-assign@4.1.1:
-    resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
-    engines: {node: '>=0.10.0'}
-
-  object-copy@0.1.0:
-    resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==}
-    engines: {node: '>=0.10.0'}
-
-  object-inspect@1.13.4:
-    resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
-    engines: {node: '>= 0.4'}
-
-  object-is@1.1.6:
-    resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
-    engines: {node: '>= 0.4'}
-
-  object-keys@1.1.1:
-    resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
-    engines: {node: '>= 0.4'}
-
-  object-refs@0.3.0:
-    resolution: {integrity: sha512-eP0ywuoWOaDoiake/6kTJlPJhs+k0qNm4nYRzXLNHj6vh+5M3i9R1epJTdxIPGlhWc4fNRQ7a6XJNCX+/L4FOQ==}
-
-  object-visit@1.0.1:
-    resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==}
-    engines: {node: '>=0.10.0'}
-
-  object.assign@4.1.7:
-    resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
-    engines: {node: '>= 0.4'}
-
-  object.pick@1.3.0:
-    resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
-    engines: {node: '>=0.10.0'}
-
-  on-finished@2.4.1:
-    resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
-    engines: {node: '>= 0.8'}
-
-  once@1.4.0:
-    resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
-
-  onetime@5.1.2:
-    resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
-    engines: {node: '>=6'}
-
-  ora@7.0.1:
-    resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==}
-    engines: {node: '>=16'}
-
-  own-keys@1.0.1:
-    resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
-    engines: {node: '>= 0.4'}
-
-  package-json-from-dist@1.0.1:
-    resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
-
-  pako@1.0.11:
-    resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
-
-  pako@2.1.0:
-    resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==}
-
-  parseurl@1.3.3:
-    resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
-    engines: {node: '>= 0.8'}
-
-  pascalcase@0.1.1:
-    resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
-    engines: {node: '>=0.10.0'}
-
-  path-intersection@2.2.1:
-    resolution: {integrity: sha512-9u8xvMcSfuOiStv9bPdnRJQhGQXLKurew94n4GPQCdH1nj9QKC9ObbNoIpiRq8skiOBxKkt277PgOoFgAt3/rA==}
-
-  path-key@3.1.1:
-    resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
-    engines: {node: '>=8'}
-
-  path-scurry@1.11.1:
-    resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
-    engines: {node: '>=16 || 14 >=14.18'}
-
-  pathe@0.2.0:
-    resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==}
-
-  pathe@1.1.2:
-    resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
-
-  pathe@2.0.3:
-    resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
-
-  picocolors@1.1.1:
-    resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
-  picomatch@2.3.1:
-    resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
-    engines: {node: '>=8.6'}
-
-  picomatch@4.0.3:
-    resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
-    engines: {node: '>=12'}
-
-  pkcs7@1.0.4:
-    resolution: {integrity: sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==}
-    hasBin: true
-
-  pkg-types@1.3.1:
-    resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
-
-  point-in-polygon@1.1.0:
-    resolution: {integrity: sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==}
-
-  polygon-clipping@0.15.7:
-    resolution: {integrity: sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==}
-
-  posix-character-classes@0.1.1:
-    resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==}
-    engines: {node: '>=0.10.0'}
-
-  possible-typed-array-names@1.1.0:
-    resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
-    engines: {node: '>= 0.4'}
-
-  postcss-prefix-selector@1.16.1:
-    resolution: {integrity: sha512-Umxu+FvKMwlY6TyDzGFoSUnzW+NOfMBLyC1tAkIjgX+Z/qGspJeRjVC903D7mx7TuBpJlwti2ibXtWuA7fKMeQ==}
-    peerDependencies:
-      postcss: '>4 <9'
-
-  postcss-pxtorem@6.1.0:
-    resolution: {integrity: sha512-ROODSNci9ADal3zUcPHOF/K83TiCgNSPXQFSbwyPHNV8ioHIE4SaC+FPOufd8jsr5jV2uIz29v1Uqy1c4ov42g==}
-    peerDependencies:
-      postcss: ^8.0.0
-
-  postcss@5.2.18:
-    resolution: {integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==}
-    engines: {node: '>=0.12'}
-
-  postcss@8.5.6:
-    resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
-    engines: {node: ^10 || ^12 || >=14}
-
-  posthtml-parser@0.2.1:
-    resolution: {integrity: sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==}
-
-  posthtml-rename-id@1.0.12:
-    resolution: {integrity: sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==}
-
-  posthtml-render@1.4.0:
-    resolution: {integrity: sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==}
-    engines: {node: '>=10'}
-
-  posthtml-svg-mode@1.0.3:
-    resolution: {integrity: sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==}
-
-  posthtml@0.9.2:
-    resolution: {integrity: sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==}
-    engines: {node: '>=0.10.0'}
-
-  preact@10.28.1:
-    resolution: {integrity: sha512-u1/ixq/lVQI0CakKNvLDEcW5zfCjUQfZdK9qqWuIJtsezuyG6pk9TWj75GMuI/EzRSZB/VAE43sNWWZfiy8psw==}
-
-  prebuild-install@7.1.3:
-    resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==}
-    engines: {node: '>=10'}
-    hasBin: true
-
-  prettier@2.8.8:
-    resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
-    engines: {node: '>=10.13.0'}
-    hasBin: true
-
-  prismjs@1.30.0:
-    resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
-    engines: {node: '>=6'}
-
-  process-nextick-args@2.0.1:
-    resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
-
-  process@0.11.10:
-    resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
-    engines: {node: '>= 0.6.0'}
-
-  protobufjs@7.5.4:
-    resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==}
-    engines: {node: '>=12.0.0'}
-
-  proxy-from-env@1.1.0:
-    resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
-
-  pump@3.0.3:
-    resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
-
-  qrcodejs2-fix@0.0.1:
-    resolution: {integrity: sha512-1R6jB87k1PUwjX65hh24FftDjrghPvryYfsajV3chCp//dQb8QUeL446DVLj2SIeotP8ro9rSYri0wOp7O+7Hg==}
-
-  query-string@4.3.4:
-    resolution: {integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==}
-    engines: {node: '>=0.10.0'}
-
-  queue-microtask@1.2.3:
-    resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
-  quickselect@1.1.1:
-    resolution: {integrity: sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==}
-
-  quickselect@2.0.0:
-    resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==}
-
-  quickselect@3.0.0:
-    resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==}
-
-  randomcolor@0.6.2:
-    resolution: {integrity: sha512-Mn6TbyYpFgwFuQ8KJKqf3bqqY9O1y37/0jgSK/61PUxV4QfIMv0+K2ioq8DfOjkBslcjwSzRfIDEXfzA9aCx7A==}
-
-  range-parser@1.2.1:
-    resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
-    engines: {node: '>= 0.6'}
-
-  rbush@2.0.2:
-    resolution: {integrity: sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==}
-
-  rbush@3.0.1:
-    resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==}
-
-  rbush@4.0.1:
-    resolution: {integrity: sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==}
-
-  rc@1.2.8:
-    resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
-    hasBin: true
-
-  readable-stream@2.3.8:
-    resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
-
-  readable-stream@3.6.2:
-    resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
-    engines: {node: '>= 6'}
-
-  readable-stream@4.7.0:
-    resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==}
-    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
-  readdirp@4.1.2:
-    resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
-    engines: {node: '>= 14.18.0'}
-
-  reconnecting-websocket@4.4.0:
-    resolution: {integrity: sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==}
-
-  reflect.getprototypeof@1.0.10:
-    resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
-    engines: {node: '>= 0.4'}
-
-  regex-not@1.0.2:
-    resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
-    engines: {node: '>=0.10.0'}
-
-  regexp.prototype.flags@1.5.4:
-    resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
-    engines: {node: '>= 0.4'}
-
-  repeat-element@1.1.4:
-    resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
-    engines: {node: '>=0.10.0'}
-
-  repeat-string@1.6.1:
-    resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
-    engines: {node: '>=0.10'}
-
-  resolve-url@0.2.1:
-    resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
-    deprecated: https://github.com/lydell/resolve-url#deprecated
-
-  restore-cursor@4.0.0:
-    resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
-    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
-  ret@0.1.15:
-    resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
-    engines: {node: '>=0.12'}
-
-  reusify@1.1.0:
-    resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
-    engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
-  rfdc@1.4.1:
-    resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
-
-  robust-predicates@3.0.2:
-    resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
-
-  rollup@4.54.0:
-    resolution: {integrity: sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==}
-    engines: {node: '>=18.0.0', npm: '>=8.0.0'}
-    hasBin: true
-
-  run-parallel@1.2.0:
-    resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
-  safe-array-concat@1.1.3:
-    resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
-    engines: {node: '>=0.4'}
-
-  safe-buffer@5.1.2:
-    resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
-
-  safe-buffer@5.2.1:
-    resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
-
-  safe-push-apply@1.0.0:
-    resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
-    engines: {node: '>= 0.4'}
-
-  safe-regex-test@1.1.0:
-    resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
-    engines: {node: '>= 0.4'}
-
-  safe-regex@1.1.0:
-    resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==}
-
-  sass@1.97.1:
-    resolution: {integrity: sha512-uf6HoO8fy6ClsrShvMgaKUn14f2EHQLQRtpsZZLeU/Mv0Q1K5P0+x2uvH6Cub39TVVbWNSrraUhDAoFph6vh0A==}
-    engines: {node: '>=14.0.0'}
-    hasBin: true
-
-  saxen@8.1.2:
-    resolution: {integrity: sha512-xUOiiFbc3Ow7p8KMxwsGICPx46ZQvy3+qfNVhrkwfz3Vvq45eGt98Ft5IQaA1R/7Tb5B5MKh9fUR9x3c3nDTxw==}
-
-  scroll-into-view-if-needed@2.2.31:
-    resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==}
-
-  scroll-into-view-if-needed@3.1.0:
-    resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==}
-
-  scule@1.3.0:
-    resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
-
-  sdp@3.2.1:
-    resolution: {integrity: sha512-lwsAIzOPlH8/7IIjjz3K0zYBk7aBVVcvjMwt3M4fLxpjMYyy7i3I97SLHebgn4YBjirkzfp3RvRDWSKsh/+WFw==}
-
-  seedrandom@3.0.5:
-    resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==}
-
-  select@1.1.2:
-    resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==}
-
-  semver@7.7.3:
-    resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
-    engines: {node: '>=10'}
-    hasBin: true
-
-  send@0.19.2:
-    resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==}
-    engines: {node: '>= 0.8.0'}
-
-  serve-static@1.16.3:
-    resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==}
-    engines: {node: '>= 0.8.0'}
-
-  set-function-length@1.2.2:
-    resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
-    engines: {node: '>= 0.4'}
-
-  set-function-name@2.0.2:
-    resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
-    engines: {node: '>= 0.4'}
-
-  set-proto@1.0.0:
-    resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
-    engines: {node: '>= 0.4'}
-
-  set-value@2.0.1:
-    resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==}
-    engines: {node: '>=0.10.0'}
-
-  setimmediate@1.0.5:
-    resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
-
-  setprototypeof@1.2.0:
-    resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
-
-  sharp@0.32.6:
-    resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==}
-    engines: {node: '>=14.15.0'}
-
-  shebang-command@2.0.0:
-    resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
-    engines: {node: '>=8'}
-
-  shebang-regex@3.0.0:
-    resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
-    engines: {node: '>=8'}
-
-  side-channel-list@1.0.0:
-    resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
-    engines: {node: '>= 0.4'}
-
-  side-channel-map@1.0.1:
-    resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
-    engines: {node: '>= 0.4'}
-
-  side-channel-weakmap@1.0.2:
-    resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
-    engines: {node: '>= 0.4'}
-
-  side-channel@1.1.0:
-    resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
-    engines: {node: '>= 0.4'}
-
-  signal-exit@3.0.7:
-    resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
-
-  signal-exit@4.1.0:
-    resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
-    engines: {node: '>=14'}
-
-  signature_pad@5.1.3:
-    resolution: {integrity: sha512-zyxW5vuJVnQdGcU+kAj9FYl7WaAunY3kA5S7mPg0xJiujL9+sPAWfSQHS5tXaJXDUa4FuZeKhfdCDQ6K3wfkpQ==}
-
-  simple-concat@1.0.1:
-    resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
-
-  simple-get@4.0.1:
-    resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
-
-  simple-swizzle@0.2.4:
-    resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==}
-
-  skmeans@0.9.7:
-    resolution: {integrity: sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==}
-
-  slate-history@0.109.0:
-    resolution: {integrity: sha512-DHavPwrTTAEAV66eAocB3iQHEj65N6IVtbRK98ZuqGT0S44T3zXlhzY+5SZ7EPxRcoOYVt1dioRxXYM/+PmCiQ==}
-    peerDependencies:
-      slate: '>=0.65.3'
-
-  slate-history@0.66.0:
-    resolution: {integrity: sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==}
-    peerDependencies:
-      slate: '>=0.65.3'
-
-  slate@0.72.8:
-    resolution: {integrity: sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==}
-
-  slate@0.82.1:
-    resolution: {integrity: sha512-3mdRdq7U3jSEoyFrGvbeb28hgrvrr4NdFCtJX+IjaNvSFozY0VZd/CGHF0zf/JDx7aEov864xd5uj0HQxxEWTQ==}
-
-  sm-crypto@0.3.13:
-    resolution: {integrity: sha512-ztNF+pZq6viCPMA1A6KKu3bgpkmYti5avykRHbcFIdSipFdkVmfUw2CnpM2kBJyppIalqvczLNM3wR8OQ0pT5w==}
-
-  smart-buffer@4.2.0:
-    resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
-    engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
-
-  snabbdom@3.6.3:
-    resolution: {integrity: sha512-W2lHLLw2qR2Vv0DcMmcxXqcfdBaIcoN+y/86SmHv8fn4DazEQSH6KN3TjZcWvwujW56OHiiirsbHWZb4vx/0fg==}
-    engines: {node: '>=12.17.0'}
-
-  snapdragon-node@2.1.1:
-    resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
-    engines: {node: '>=0.10.0'}
-
-  snapdragon-util@3.0.1:
-    resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==}
-    engines: {node: '>=0.10.0'}
-
-  snapdragon@0.8.2:
-    resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
-    engines: {node: '>=0.10.0'}
-
-  socks@2.8.7:
-    resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==}
-    engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
-
-  sortablejs@1.14.0:
-    resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==}
-
-  source-map-js@1.2.1:
-    resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
-    engines: {node: '>=0.10.0'}
-
-  source-map-resolve@0.5.3:
-    resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
-    deprecated: See https://github.com/lydell/source-map-resolve#deprecated
-
-  source-map-support@0.5.21:
-    resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
-
-  source-map-url@0.4.1:
-    resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
-    deprecated: See https://github.com/lydell/source-map-url#deprecated
-
-  source-map@0.5.7:
-    resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
-    engines: {node: '>=0.10.0'}
-
-  source-map@0.6.1:
-    resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
-    engines: {node: '>=0.10.0'}
-
-  sourcemap-codec@1.4.8:
-    resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
-    deprecated: Please use @jridgewell/sourcemap-codec instead
-
-  splaytree@3.2.3:
-    resolution: {integrity: sha512-7OXrNWzy6CK+r7Ch9OLPBDTKfB6XlWHjX4P0RU5B3IgFuWPeYN0XtRtlexGRjgbQxpfaUve6jTAwBGWuGntz/w==}
-    engines: {node: '>=18.20 || >=20'}
-
-  split-string@3.1.0:
-    resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
-    engines: {node: '>=0.10.0'}
-
-  split2@4.2.0:
-    resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
-    engines: {node: '>= 10.x'}
-
-  ssf@0.11.2:
-    resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==}
-    engines: {node: '>=0.8'}
-
-  ssr-window@3.0.0:
-    resolution: {integrity: sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==}
-
-  ssr-window@4.0.2:
-    resolution: {integrity: sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==}
-
-  stable@0.1.8:
-    resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
-    deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
-
-  static-extend@0.1.2:
-    resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
-    engines: {node: '>=0.10.0'}
-
-  statuses@2.0.2:
-    resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
-    engines: {node: '>= 0.8'}
-
-  stdin-discarder@0.1.0:
-    resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==}
-    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
-  stop-iteration-iterator@1.1.0:
-    resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
-    engines: {node: '>= 0.4'}
-
-  streamx@2.23.0:
-    resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==}
-
-  strict-uri-encode@1.1.0:
-    resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==}
-    engines: {node: '>=0.10.0'}
-
-  string-width@4.2.3:
-    resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
-    engines: {node: '>=8'}
-
-  string-width@5.1.2:
-    resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
-    engines: {node: '>=12'}
-
-  string-width@6.1.0:
-    resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==}
-    engines: {node: '>=16'}
-
-  string.prototype.trim@1.2.10:
-    resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
-    engines: {node: '>= 0.4'}
-
-  string.prototype.trimend@1.0.9:
-    resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
-    engines: {node: '>= 0.4'}
-
-  string.prototype.trimstart@1.0.8:
-    resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
-    engines: {node: '>= 0.4'}
-
-  string_decoder@1.1.1:
-    resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
-
-  string_decoder@1.3.0:
-    resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
-
-  strip-ansi@3.0.1:
-    resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
-    engines: {node: '>=0.10.0'}
-
-  strip-ansi@6.0.1:
-    resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
-    engines: {node: '>=8'}
-
-  strip-ansi@7.1.2:
-    resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}
-    engines: {node: '>=12'}
-
-  strip-json-comments@2.0.1:
-    resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
-    engines: {node: '>=0.10.0'}
-
-  strip-literal@1.3.0:
-    resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==}
-
-  supports-color@2.0.0:
-    resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==}
-    engines: {node: '>=0.8.0'}
-
-  supports-color@3.2.3:
-    resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==}
-    engines: {node: '>=0.8.0'}
-
-  supports-color@7.2.0:
-    resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
-    engines: {node: '>=8'}
-
-  svg-baker@1.7.0:
-    resolution: {integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==}
-
-  svgo@2.8.0:
-    resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==}
-    engines: {node: '>=10.13.0'}
-    hasBin: true
-
-  tar-fs@2.1.4:
-    resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==}
-
-  tar-fs@3.1.1:
-    resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==}
-
-  tar-stream@2.2.0:
-    resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
-    engines: {node: '>=6'}
-
-  tar-stream@3.1.7:
-    resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
-
-  terser@5.44.1:
-    resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==}
-    engines: {node: '>=10'}
-    hasBin: true
-
-  text-decoder@1.2.3:
-    resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
-
-  tiny-emitter@2.1.0:
-    resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==}
-
-  tiny-svg@3.1.3:
-    resolution: {integrity: sha512-9mwnPqXInRsBmH/DO6NMxBE++9LsqpVXQSSTZGc5bomoKKvL5OX/Hlotw7XVXP6XLRcHWIzZpxfovGqWKgCypQ==}
-
-  tiny-warning@1.0.3:
-    resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==}
-
-  tinyqueue@3.0.0:
-    resolution: {integrity: sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==}
-
-  to-object-path@0.3.0:
-    resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==}
-    engines: {node: '>=0.10.0'}
-
-  to-regex-range@2.1.1:
-    resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==}
-    engines: {node: '>=0.10.0'}
-
-  to-regex-range@5.0.1:
-    resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
-    engines: {node: '>=8.0'}
-
-  to-regex@3.0.2:
-    resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
-    engines: {node: '>=0.10.0'}
-
-  toidentifier@1.0.1:
-    resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
-    engines: {node: '>=0.6'}
-
-  topojson-client@3.1.0:
-    resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==}
-    hasBin: true
-
-  topojson-server@3.0.1:
-    resolution: {integrity: sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==}
-    hasBin: true
-
-  traverse@0.6.11:
-    resolution: {integrity: sha512-vxXDZg8/+p3gblxB6BhhG5yWVn1kGRlaL8O78UDXc3wRnPizB5g83dcvWV1jpDMIPnjZjOFuxlMmE82XJ4407w==}
-    engines: {node: '>= 0.4'}
-
-  trtc-sdk-v5@5.14.1:
-    resolution: {integrity: sha512-FqHgzKD/A+2LwfbpBbPjMxeQUcgxENeeTMDYcDD9OM8mW68DcG4jQgyXyar5LRD4BInN1AIJKHyD5LJOUzS0wg==}
-
-  tslib@2.3.0:
-    resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
-
-  tslib@2.8.1:
-    resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
-
-  tunnel-agent@0.6.0:
-    resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
-
-  turf-jsts@1.2.3:
-    resolution: {integrity: sha512-Ja03QIJlPuHt4IQ2FfGex4F4JAr8m3jpaHbFbQrgwr7s7L6U8ocrHiF3J1+wf9jzhGKxvDeaCAnGDot8OjGFyA==}
-
-  type-fest@2.19.0:
-    resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
-    engines: {node: '>=12.20'}
-
-  type@2.7.3:
-    resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==}
-
-  typed-array-buffer@1.0.3:
-    resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
-    engines: {node: '>= 0.4'}
-
-  typed-array-byte-length@1.0.3:
-    resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
-    engines: {node: '>= 0.4'}
-
-  typed-array-byte-offset@1.0.4:
-    resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
-    engines: {node: '>= 0.4'}
-
-  typed-array-length@1.0.7:
-    resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
-    engines: {node: '>= 0.4'}
-
-  typed-function@2.1.0:
-    resolution: {integrity: sha512-bctQIOqx2iVbWGDGPWwIm18QScpu2XRmkC19D8rQGFsjKSgteq/o1hTZvIG/wuDq8fanpBDrLkLq+aEN/6y5XQ==}
-    engines: {node: '>= 10'}
-
-  typedarray.prototype.slice@1.0.5:
-    resolution: {integrity: sha512-q7QNVDGTdl702bVFiI5eY4l/HkgCM6at9KhcFbgUAzezHFbOVy4+0O/lCjsABEQwbZPravVfBIiBVGo89yzHFg==}
-    engines: {node: '>= 0.4'}
-
-  typedarray@0.0.6:
-    resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
-
-  ufo@1.6.1:
-    resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
-
-  unbox-primitive@1.1.0:
-    resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
-    engines: {node: '>= 0.4'}
-
-  undici-types@7.16.0:
-    resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
-
-  unimport@1.3.0:
-    resolution: {integrity: sha512-fOkrdxglsHd428yegH0wPH/6IfaSdDeMXtdRGn6en/ccyzc2aaoxiUTMrJyc6Bu+xoa18RJRPMfLUHEzjz8atw==}
-
-  union-value@1.0.1:
-    resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
-    engines: {node: '>=0.10.0'}
-
-  universalify@2.0.1:
-    resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
-    engines: {node: '>= 10.0.0'}
-
-  unplugin-auto-import@0.11.5:
-    resolution: {integrity: sha512-nvbL2AQwLRR8wbHpJ6L1EBVNmjN045RSedTa4NtsGRkSQFXkI1iKHs4dTqJwcKZsnFrZOAKtLPiN1/oQTObLZw==}
-    engines: {node: '>=14'}
-    peerDependencies:
-      '@vueuse/core': '*'
-    peerDependenciesMeta:
-      '@vueuse/core':
-        optional: true
-
-  unplugin@1.16.1:
-    resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==}
-    engines: {node: '>=14.0.0'}
-
-  unset-value@1.0.0:
-    resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
-    engines: {node: '>=0.10.0'}
-
-  urijs@1.19.11:
-    resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==}
-
-  urix@0.1.0:
-    resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
-    deprecated: Please see https://github.com/lydell/urix#deprecated
-
-  use@3.1.1:
-    resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
-    engines: {node: '>=0.10.0'}
-
-  util-deprecate@1.0.2:
-    resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
-
-  uuid@11.1.0:
-    resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
-    hasBin: true
-
-  vant@4.9.22:
-    resolution: {integrity: sha512-P2PDSj3oB6l3W1OpVlQpapeLmI6bXMSvPqPdrw5rutslC0Y6tSkrVB/iSD57weD7K92GsjGkvgDK0eZlOsXGqw==}
-    peerDependencies:
-      vue: ^3.0.0
-
-  vary@1.1.2:
-    resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
-    engines: {node: '>= 0.8'}
-
-  video.js@8.23.4:
-    resolution: {integrity: sha512-qI0VTlYmKzEqRsz1Nppdfcaww4RSxZAq77z2oNSl3cNg2h6do5C8Ffl0KqWQ1OpD8desWXsCrde7tKJ9gGTEyQ==}
-
-  videojs-contrib-quality-levels@4.1.0:
-    resolution: {integrity: sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==}
-    engines: {node: '>=16', npm: '>=8'}
-    peerDependencies:
-      video.js: ^8
-
-  videojs-font@4.2.0:
-    resolution: {integrity: sha512-YPq+wiKoGy2/M7ccjmlvwi58z2xsykkkfNMyIg4xb7EZQQNwB71hcSsB3o75CqQV7/y5lXkXhI/rsGAS7jfEmQ==}
-
-  videojs-markers@1.0.1:
-    resolution: {integrity: sha512-jw3jRhanwno0YgdRR9+z6cbdmMs/jeXcrgkMr6mlEP+XfZN+isWNYp0GnPvdXrBcnb6AANdDHlnXSmIvecEzWA==}
-    peerDependencies:
-      video.js: '>=4'
-
-  videojs-vtt.js@0.15.5:
-    resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==}
-
-  vite-plugin-compression@0.5.1:
-    resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==}
-    peerDependencies:
-      vite: '>=2.0.0'
-
-  vite-plugin-minipic@1.3.2:
-    resolution: {integrity: sha512-PFN0sFZhI7mOfgKK3i+UG9wMyoreiDPblAAmiM4Uh0Z6g/mCFY2p198e6HAmuN3uO+TwKZDCuBEuIO3FbuXbOw==}
-
-  vite-plugin-svg-icons@2.0.1:
-    resolution: {integrity: sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==}
-    peerDependencies:
-      vite: '>=2.0.0'
-
-  vite-plugin-vue-setup-extend@0.4.0:
-    resolution: {integrity: sha512-WMbjPCui75fboFoUTHhdbXzu4Y/bJMv5N9QT9a7do3wNMNHHqrk+Tn2jrSJU0LS5fGl/EG+FEDBYVUeWIkDqXQ==}
-    peerDependencies:
-      vite: '>=2.0.0'
-
-  vite@5.2.12:
-    resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==}
-    engines: {node: ^18.0.0 || >=20.0.0}
-    hasBin: true
-    peerDependencies:
-      '@types/node': ^18.0.0 || >=20.0.0
-      less: '*'
-      lightningcss: ^1.21.0
-      sass: '*'
-      stylus: '*'
-      sugarss: '*'
-      terser: ^5.4.0
-    peerDependenciesMeta:
-      '@types/node':
-        optional: true
-      less:
-        optional: true
-      lightningcss:
-        optional: true
-      sass:
-        optional: true
-      stylus:
-        optional: true
-      sugarss:
-        optional: true
-      terser:
-        optional: true
-
-  vue-demi@0.14.10:
-    resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
-    engines: {node: '>=12'}
-    hasBin: true
-    peerDependencies:
-      '@vue/composition-api': ^1.0.0-rc.1
-      vue: ^3.0.0-0 || ^2.6.0
-    peerDependenciesMeta:
-      '@vue/composition-api':
-        optional: true
-
-  vue-i18n@9.14.5:
-    resolution: {integrity: sha512-0jQ9Em3ymWngyiIkj0+c/k7WgaPO+TNzjKSNq9BvBQaKJECqn9cd9fL4tkDhB5G1QBskGl9YxxbDAhgbFtpe2g==}
-    engines: {node: '>= 16'}
-    deprecated: v9 and v10 no longer supported. please migrate to v11. about maintenance status, see https://vue-i18n.intlify.dev/guide/maintenance.html
-    peerDependencies:
-      vue: ^3.0.0
-
-  vue-router@4.6.4:
-    resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==}
-    peerDependencies:
-      vue: ^3.5.0
-
-  vue3-clipboard@1.0.0:
-    resolution: {integrity: sha512-GUqKh1oO79xDpq0z+cCv/NDVTpcJGNDzeNgT3PmTdTp/WJh3gcTrDqIYKycKhzMFOtIFJ7hO/+usgyWtT+fNhA==}
-    peerDependencies:
-      vue: ^3.0.0
-
-  vue@3.5.26:
-    resolution: {integrity: sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==}
-    peerDependencies:
-      typescript: '*'
-    peerDependenciesMeta:
-      typescript:
-        optional: true
-
-  vuedraggable@4.1.0:
-    resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==}
-    peerDependencies:
-      vue: ^3.0.1
-
-  vuex@4.1.0:
-    resolution: {integrity: sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==}
-    peerDependencies:
-      vue: ^3.2.0
-
-  webpack-virtual-modules@0.6.2:
-    resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
-
-  webrtc-adapter@8.2.4:
-    resolution: {integrity: sha512-VwtwbYNKnVQW8koB9qb8YcxNwpSVHTvvKEZLzY6uQ3gFrA9E87VPbB5xE+m1AGwUjL1UgN35jRR9hQgteZI5bg==}
-    engines: {node: '>=6.0.0', npm: '>=3.10.0'}
-
-  which-boxed-primitive@1.1.1:
-    resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
-    engines: {node: '>= 0.4'}
-
-  which-builtin-type@1.2.1:
-    resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
-    engines: {node: '>= 0.4'}
-
-  which-collection@1.0.2:
-    resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
-    engines: {node: '>= 0.4'}
-
-  which-typed-array@1.1.19:
-    resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
-    engines: {node: '>= 0.4'}
-
-  which@2.0.2:
-    resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
-    engines: {node: '>= 8'}
-    hasBin: true
-
-  widest-line@4.0.1:
-    resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==}
-    engines: {node: '>=12'}
-
-  wildcard@1.1.2:
-    resolution: {integrity: sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==}
-
-  wmf@1.0.2:
-    resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==}
-    engines: {node: '>=0.8'}
-
-  word@0.3.0:
-    resolution: {integrity: sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==}
-    engines: {node: '>=0.8'}
-
-  worker-factory@7.0.46:
-    resolution: {integrity: sha512-Sr1hq2FMgNa04UVhYQacsw+i58BtMimzDb4+CqYphZ97OfefRpURu0UZ+JxMr/H36VVJBfuVkxTK7MytsanC3w==}
-
-  worker-timers-broker@8.0.13:
-    resolution: {integrity: sha512-PZnHHmqOY5oMKQPyfJhqPI9cb3QFmwD3lCIc/Zip6sShpfG2rvvCVDl0xeabGIspiEpP5exNNIlTUHjgP5VAcg==}
-
-  worker-timers-worker@9.0.11:
-    resolution: {integrity: sha512-pArb5xtgHWImYpXhjg1OFv7JFG0ubmccb73TFoXHXjG830fFj+16N57q9YeBnZX52dn+itRrMoJZ9HaZBVzDaA==}
-
-  worker-timers@8.0.27:
-    resolution: {integrity: sha512-+7ptDduAWj6Wd09Ga0weRFRx/MUwLhExazn+zu3IrwF0N2U2FPqFRR5W3Qz4scnI3cOILzdIEEytIJ2vbeD9Gw==}
-
-  wrap-ansi@7.0.0:
-    resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
-    engines: {node: '>=10'}
-
-  wrap-ansi@8.1.0:
-    resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
-    engines: {node: '>=12'}
-
-  wrappy@1.0.2:
-    resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
-
-  ws@8.18.3:
-    resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==}
-    engines: {node: '>=10.0.0'}
-    peerDependencies:
-      bufferutil: ^4.0.1
-      utf-8-validate: '>=5.0.2'
-    peerDependenciesMeta:
-      bufferutil:
-        optional: true
-      utf-8-validate:
-        optional: true
-
-  xlsx@0.18.5:
-    resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==}
-    engines: {node: '>=0.8'}
-    hasBin: true
-
-  zrender@5.6.1:
-    resolution: {integrity: sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==}
-
-snapshots:
-
-  '@amap/amap-jsapi-loader@1.0.1': {}
-
-  '@antfu/utils@0.7.10': {}
-
-  '@babel/helper-string-parser@7.27.1': {}
-
-  '@babel/helper-validator-identifier@7.28.5': {}
-
-  '@babel/parser@7.28.5':
     dependencies:
       '@babel/types': 7.28.5
 
-  '@babel/runtime@7.28.4': {}
+  /@babel/runtime@7.28.4:
+    resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==}
+    engines: {node: '>=6.9.0'}
+    dev: false
 
-  '@babel/types@7.28.5':
+  /@babel/types@7.28.5:
+    resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
+    engines: {node: '>=6.9.0'}
     dependencies:
       '@babel/helper-string-parser': 7.27.1
       '@babel/helper-validator-identifier': 7.28.5
 
-  '@bpmn-io/diagram-js-ui@0.2.3':
+  /@bpmn-io/diagram-js-ui@0.2.3:
+    resolution: {integrity: sha512-OGyjZKvGK8tHSZ0l7RfeKhilGoOGtFDcoqSGYkX0uhFlo99OVZ9Jn1K7TJGzcE9BdKwvA5Y5kGqHEhdTxHvFfw==}
     dependencies:
       htm: 3.1.1
       preact: 10.28.1
+    dev: false
 
-  '@cesium/engine@14.0.0':
+  /@cesium/engine@14.0.0:
+    resolution: {integrity: sha512-nmW0uQCyg4CRqi3a8o30gU9S9bFm3TLh2fRO74iv+6a8FFArvZ1xF7IqG2tyRjSXkyH4c5vpavNRT3R51R8NyQ==}
+    engines: {node: '>=14.0.0'}
     dependencies:
       '@tweenjs/tween.js': 25.0.0
       '@zip.js/zip.js': 2.7.34
@@ -3962,204 +306,483 @@
       rbush: 3.0.1
       topojson-client: 3.1.0
       urijs: 1.19.11
+    dev: false
 
-  '@cesium/widgets@10.2.0':
+  /@cesium/widgets@10.2.0:
+    resolution: {integrity: sha512-f0Wrp3MG02P2KSAopVESHWOhF+2eK9cQR9prEYGWuPM3iF6YktKrZqXzNnsOxCw1KPup0aSXsCrFl2asT5jF9g==}
+    engines: {node: '>=14.0.0'}
     dependencies:
       '@cesium/engine': 14.0.0
       nosleep.js: 0.12.0
+    dev: false
 
-  '@ctrl/tinycolor@3.6.1': {}
+  /@ctrl/tinycolor@3.6.1:
+    resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
+    engines: {node: '>=10'}
+    dev: false
 
-  '@dvgis/dc-common@1.0.0': {}
+  /@dvgis/dc-common@1.0.0:
+    resolution: {integrity: sha512-sjRD9kQbQ3tAhbmJt00eleU3XM7laMHWl5qMU63Mk0tj2c/M8NTTIbXEdB8gdgDDHuZGN5eRm9nJ3rSO4nsSFw==}
+    dev: false
 
-  '@dvgis/dc-sdk@3.4.0':
+  /@dvgis/dc-sdk@3.4.0:
+    resolution: {integrity: sha512-WgoNmfwPiPuAf4mxEOYhoyi3FovkSxf1gMat2ds5vEigz6aE/r86gCoWRgmVjNxlkTuRYi6ROV8vGXxcZTVQYA==}
     dependencies:
       '@dvgis/dc-common': 1.0.0
+    dev: false
 
-  '@dvgis/vite-plugin-dc@2.2.0(@dvgis/dc-sdk@3.4.0)':
+  /@dvgis/vite-plugin-dc@2.2.0(@dvgis/dc-sdk@3.4.0):
+    resolution: {integrity: sha512-bREX+ycd6vzvpl1l7Gxxfm+91e6QicmEvqPIu8MYYOtdEd3hLjhFooF0vTi/Kp2gu2RIbwVi4pLo+HegpvsuPw==}
+    peerDependencies:
+      '@dvgis/dc-sdk': ^3.4.0
     dependencies:
       '@dvgis/dc-sdk': 3.4.0
       fs-extra: 9.1.0
       serve-static: 1.16.3
     transitivePeerDependencies:
       - supports-color
+    dev: false
 
-  '@element-plus/icons-vue@2.3.2(vue@3.5.26)':
+  /@element-plus/icons-vue@2.3.1(vue@3.5.13):
+    resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==}
+    peerDependencies:
+      vue: ^3.2.0
     dependencies:
-      vue: 3.5.26
+      vue: 3.5.13
+    dev: false
 
-  '@esbuild/aix-ppc64@0.20.2':
+  /@esbuild/aix-ppc64@0.20.2:
+    resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==}
+    engines: {node: '>=12'}
+    cpu: [ppc64]
+    os: [aix]
+    dev: true
     optional: true
 
-  '@esbuild/android-arm64@0.20.2':
+  /@esbuild/android-arm64@0.20.2:
+    resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [android]
+    dev: true
     optional: true
 
-  '@esbuild/android-arm@0.20.2':
+  /@esbuild/android-arm@0.20.2:
+    resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==}
+    engines: {node: '>=12'}
+    cpu: [arm]
+    os: [android]
+    dev: true
     optional: true
 
-  '@esbuild/android-x64@0.20.2':
+  /@esbuild/android-x64@0.20.2:
+    resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [android]
+    dev: true
     optional: true
 
-  '@esbuild/darwin-arm64@0.20.2':
+  /@esbuild/darwin-arm64@0.20.2:
+    resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [darwin]
+    dev: true
     optional: true
 
-  '@esbuild/darwin-x64@0.20.2':
+  /@esbuild/darwin-x64@0.20.2:
+    resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [darwin]
+    dev: true
     optional: true
 
-  '@esbuild/freebsd-arm64@0.20.2':
+  /@esbuild/freebsd-arm64@0.20.2:
+    resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [freebsd]
+    dev: true
     optional: true
 
-  '@esbuild/freebsd-x64@0.20.2':
+  /@esbuild/freebsd-x64@0.20.2:
+    resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [freebsd]
+    dev: true
     optional: true
 
-  '@esbuild/linux-arm64@0.20.2':
+  /@esbuild/linux-arm64@0.20.2:
+    resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [linux]
+    dev: true
     optional: true
 
-  '@esbuild/linux-arm@0.20.2':
+  /@esbuild/linux-arm@0.20.2:
+    resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==}
+    engines: {node: '>=12'}
+    cpu: [arm]
+    os: [linux]
+    dev: true
     optional: true
 
-  '@esbuild/linux-ia32@0.20.2':
+  /@esbuild/linux-ia32@0.20.2:
+    resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==}
+    engines: {node: '>=12'}
+    cpu: [ia32]
+    os: [linux]
+    dev: true
     optional: true
 
-  '@esbuild/linux-loong64@0.20.2':
+  /@esbuild/linux-loong64@0.20.2:
+    resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==}
+    engines: {node: '>=12'}
+    cpu: [loong64]
+    os: [linux]
+    dev: true
     optional: true
 
-  '@esbuild/linux-mips64el@0.20.2':
+  /@esbuild/linux-mips64el@0.20.2:
+    resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==}
+    engines: {node: '>=12'}
+    cpu: [mips64el]
+    os: [linux]
+    dev: true
     optional: true
 
-  '@esbuild/linux-ppc64@0.20.2':
+  /@esbuild/linux-ppc64@0.20.2:
+    resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==}
+    engines: {node: '>=12'}
+    cpu: [ppc64]
+    os: [linux]
+    dev: true
     optional: true
 
-  '@esbuild/linux-riscv64@0.20.2':
+  /@esbuild/linux-riscv64@0.20.2:
+    resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==}
+    engines: {node: '>=12'}
+    cpu: [riscv64]
+    os: [linux]
+    dev: true
     optional: true
 
-  '@esbuild/linux-s390x@0.20.2':
+  /@esbuild/linux-s390x@0.20.2:
+    resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==}
+    engines: {node: '>=12'}
+    cpu: [s390x]
+    os: [linux]
+    dev: true
     optional: true
 
-  '@esbuild/linux-x64@0.20.2':
+  /@esbuild/linux-x64@0.20.2:
+    resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [linux]
+    dev: true
     optional: true
 
-  '@esbuild/netbsd-x64@0.20.2':
+  /@esbuild/netbsd-x64@0.20.2:
+    resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [netbsd]
+    dev: true
     optional: true
 
-  '@esbuild/openbsd-x64@0.20.2':
+  /@esbuild/openbsd-x64@0.20.2:
+    resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [openbsd]
+    dev: true
     optional: true
 
-  '@esbuild/sunos-x64@0.20.2':
+  /@esbuild/sunos-x64@0.20.2:
+    resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [sunos]
+    dev: true
     optional: true
 
-  '@esbuild/win32-arm64@0.20.2':
+  /@esbuild/win32-arm64@0.20.2:
+    resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [win32]
+    dev: true
     optional: true
 
-  '@esbuild/win32-ia32@0.20.2':
+  /@esbuild/win32-ia32@0.20.2:
+    resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==}
+    engines: {node: '>=12'}
+    cpu: [ia32]
+    os: [win32]
+    dev: true
     optional: true
 
-  '@esbuild/win32-x64@0.20.2':
+  /@esbuild/win32-x64@0.20.2:
+    resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [win32]
+    dev: true
     optional: true
 
-  '@floating-ui/core@1.7.3':
+  /@floating-ui/core@1.7.3:
+    resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
     dependencies:
       '@floating-ui/utils': 0.2.10
+    dev: false
 
-  '@floating-ui/dom@1.7.4':
+  /@floating-ui/dom@1.7.4:
+    resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==}
     dependencies:
       '@floating-ui/core': 1.7.3
       '@floating-ui/utils': 0.2.10
+    dev: false
 
-  '@floating-ui/utils@0.2.10': {}
+  /@floating-ui/utils@0.2.10:
+    resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
+    dev: false
 
-  '@intlify/core-base@9.14.5':
+  /@intlify/core-base@9.1.9:
+    resolution: {integrity: sha512-x5T0p/Ja0S8hs5xs+ImKyYckVkL4CzcEXykVYYV6rcbXxJTe2o58IquSqX9bdncVKbRZP7GlBU1EcRaQEEJ+vw==}
+    engines: {node: '>= 10'}
     dependencies:
-      '@intlify/message-compiler': 9.14.5
-      '@intlify/shared': 9.14.5
+      '@intlify/devtools-if': 9.1.9
+      '@intlify/message-compiler': 9.1.9
+      '@intlify/message-resolver': 9.1.9
+      '@intlify/runtime': 9.1.9
+      '@intlify/shared': 9.1.9
+      '@intlify/vue-devtools': 9.1.9
+    dev: false
 
-  '@intlify/message-compiler@9.14.5':
+  /@intlify/devtools-if@9.1.9:
+    resolution: {integrity: sha512-oKSMKjttG3Ut/1UGEZjSdghuP3fwA15zpDPcjkf/1FjlOIm6uIBGMNS5jXzsZy593u+P/YcnrZD6cD3IVFz9vQ==}
+    engines: {node: '>= 10'}
     dependencies:
-      '@intlify/shared': 9.14.5
-      source-map-js: 1.2.1
+      '@intlify/shared': 9.1.9
+    dev: false
 
-  '@intlify/shared@9.14.5': {}
+  /@intlify/message-compiler@9.1.9:
+    resolution: {integrity: sha512-6YgCMF46Xd0IH2hMRLCssZI3gFG4aywidoWQ3QP4RGYQXQYYfFC54DxhSgfIPpVoPLQ+4AD29eoYmhiHZ+qLFQ==}
+    engines: {node: '>= 10'}
+    dependencies:
+      '@intlify/message-resolver': 9.1.9
+      '@intlify/shared': 9.1.9
+      source-map: 0.6.1
+    dev: false
 
-  '@isaacs/cliui@8.0.2':
+  /@intlify/message-resolver@9.1.9:
+    resolution: {integrity: sha512-Lx/DBpigeK0sz2BBbzv5mu9/dAlt98HxwbG7xLawC3O2xMF9MNWU5FtOziwYG6TDIjNq0O/3ZbOJAxwITIWXEA==}
+    engines: {node: '>= 10'}
+    dev: false
+
+  /@intlify/runtime@9.1.9:
+    resolution: {integrity: sha512-XgPw8+UlHCiie3fI41HPVa/VDJb3/aSH7bLhY1hJvlvNV713PFtb4p4Jo+rlE0gAoMsMCGcsiT982fImolSltg==}
+    engines: {node: '>= 10'}
+    dependencies:
+      '@intlify/message-compiler': 9.1.9
+      '@intlify/message-resolver': 9.1.9
+      '@intlify/shared': 9.1.9
+    dev: false
+
+  /@intlify/shared@9.1.9:
+    resolution: {integrity: sha512-xKGM1d0EAxdDFCWedcYXOm6V5Pfw/TMudd6/qCdEb4tv0hk9EKeg7lwQF1azE0dP2phvx0yXxrt7UQK+IZjNdw==}
+    engines: {node: '>= 10'}
+    dev: false
+
+  /@intlify/vue-devtools@9.1.9:
+    resolution: {integrity: sha512-YPehH9uL4vZcGXky4Ev5qQIITnHKIvsD2GKGXgqf+05osMUI6WSEQHaN9USRa318Rs8RyyPCiDfmA0hRu3k7og==}
+    engines: {node: '>= 10'}
+    dependencies:
+      '@intlify/message-resolver': 9.1.9
+      '@intlify/runtime': 9.1.9
+      '@intlify/shared': 9.1.9
+    dev: false
+
+  /@isaacs/cliui@8.0.2:
+    resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+    engines: {node: '>=12'}
     dependencies:
       string-width: 5.1.2
-      string-width-cjs: string-width@4.2.3
+      string-width-cjs: /string-width@4.2.3
       strip-ansi: 7.1.2
-      strip-ansi-cjs: strip-ansi@6.0.1
+      strip-ansi-cjs: /strip-ansi@6.0.1
       wrap-ansi: 8.1.0
-      wrap-ansi-cjs: wrap-ansi@7.0.0
+      wrap-ansi-cjs: /wrap-ansi@7.0.0
+    dev: true
 
-  '@jridgewell/gen-mapping@0.3.13':
+  /@jridgewell/gen-mapping@0.3.13:
+    resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
     dependencies:
       '@jridgewell/sourcemap-codec': 1.5.5
       '@jridgewell/trace-mapping': 0.3.31
+    dev: true
 
-  '@jridgewell/resolve-uri@3.1.2': {}
+  /@jridgewell/resolve-uri@3.1.2:
+    resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+    engines: {node: '>=6.0.0'}
+    dev: true
 
-  '@jridgewell/source-map@0.3.11':
+  /@jridgewell/source-map@0.3.11:
+    resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==}
     dependencies:
       '@jridgewell/gen-mapping': 0.3.13
       '@jridgewell/trace-mapping': 0.3.31
+    dev: true
 
-  '@jridgewell/sourcemap-codec@1.5.5': {}
+  /@jridgewell/sourcemap-codec@1.5.5:
+    resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
 
-  '@jridgewell/trace-mapping@0.3.31':
+  /@jridgewell/trace-mapping@0.3.31:
+    resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
     dependencies:
       '@jridgewell/resolve-uri': 3.1.2
       '@jridgewell/sourcemap-codec': 1.5.5
+    dev: true
 
-  '@nodelib/fs.scandir@2.1.5':
+  /@nodelib/fs.scandir@2.1.5:
+    resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+    engines: {node: '>= 8'}
     dependencies:
       '@nodelib/fs.stat': 2.0.5
       run-parallel: 1.2.0
+    dev: true
 
-  '@nodelib/fs.stat@2.0.5': {}
+  /@nodelib/fs.stat@2.0.5:
+    resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+    engines: {node: '>= 8'}
+    dev: true
 
-  '@nodelib/fs.walk@1.2.8':
+  /@nodelib/fs.walk@1.2.8:
+    resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+    engines: {node: '>= 8'}
     dependencies:
       '@nodelib/fs.scandir': 2.1.5
       fastq: 1.20.1
+    dev: true
 
-  '@parcel/watcher-android-arm64@2.5.1':
+  /@parcel/watcher-android-arm64@2.5.1:
+    resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [android]
+    dev: true
     optional: true
 
-  '@parcel/watcher-darwin-arm64@2.5.1':
+  /@parcel/watcher-darwin-arm64@2.5.1:
+    resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [darwin]
+    dev: true
     optional: true
 
-  '@parcel/watcher-darwin-x64@2.5.1':
+  /@parcel/watcher-darwin-x64@2.5.1:
+    resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [darwin]
+    dev: true
     optional: true
 
-  '@parcel/watcher-freebsd-x64@2.5.1':
+  /@parcel/watcher-freebsd-x64@2.5.1:
+    resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [freebsd]
+    dev: true
     optional: true
 
-  '@parcel/watcher-linux-arm-glibc@2.5.1':
+  /@parcel/watcher-linux-arm-glibc@2.5.1:
+    resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm]
+    os: [linux]
+    libc: [glibc]
+    dev: true
     optional: true
 
-  '@parcel/watcher-linux-arm-musl@2.5.1':
+  /@parcel/watcher-linux-arm-musl@2.5.1:
+    resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm]
+    os: [linux]
+    libc: [musl]
+    dev: true
     optional: true
 
-  '@parcel/watcher-linux-arm64-glibc@2.5.1':
+  /@parcel/watcher-linux-arm64-glibc@2.5.1:
+    resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [linux]
+    libc: [glibc]
+    dev: true
     optional: true
 
-  '@parcel/watcher-linux-arm64-musl@2.5.1':
+  /@parcel/watcher-linux-arm64-musl@2.5.1:
+    resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [linux]
+    libc: [musl]
+    dev: true
     optional: true
 
-  '@parcel/watcher-linux-x64-glibc@2.5.1':
+  /@parcel/watcher-linux-x64-glibc@2.5.1:
+    resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [linux]
+    libc: [glibc]
+    dev: true
     optional: true
 
-  '@parcel/watcher-linux-x64-musl@2.5.1':
+  /@parcel/watcher-linux-x64-musl@2.5.1:
+    resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [linux]
+    libc: [musl]
+    dev: true
     optional: true
 
-  '@parcel/watcher-win32-arm64@2.5.1':
+  /@parcel/watcher-win32-arm64@2.5.1:
+    resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [win32]
+    dev: true
     optional: true
 
-  '@parcel/watcher-win32-ia32@2.5.1':
+  /@parcel/watcher-win32-ia32@2.5.1:
+    resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [ia32]
+    os: [win32]
+    dev: true
     optional: true
 
-  '@parcel/watcher-win32-x64@2.5.1':
+  /@parcel/watcher-win32-x64@2.5.1:
+    resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [win32]
+    dev: true
     optional: true
 
-  '@parcel/watcher@2.5.1':
+  /@parcel/watcher@2.5.1:
+    resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
+    engines: {node: '>= 10.0.0'}
     dependencies:
       detect-libc: 1.0.3
       is-glob: 4.0.3
@@ -4179,230 +802,438 @@
       '@parcel/watcher-win32-arm64': 2.5.1
       '@parcel/watcher-win32-ia32': 2.5.1
       '@parcel/watcher-win32-x64': 2.5.1
+    dev: true
     optional: true
 
-  '@pkgjs/parseargs@0.11.0':
+  /@pkgjs/parseargs@0.11.0:
+    resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+    engines: {node: '>=14'}
+    dev: true
     optional: true
 
-  '@protobufjs/aspromise@1.1.2': {}
+  /@protobufjs/aspromise@1.1.2:
+    resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
+    dev: false
 
-  '@protobufjs/base64@1.1.2': {}
+  /@protobufjs/base64@1.1.2:
+    resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
+    dev: false
 
-  '@protobufjs/codegen@2.0.4': {}
+  /@protobufjs/codegen@2.0.4:
+    resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
+    dev: false
 
-  '@protobufjs/eventemitter@1.1.0': {}
+  /@protobufjs/eventemitter@1.1.0:
+    resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
+    dev: false
 
-  '@protobufjs/fetch@1.1.0':
+  /@protobufjs/fetch@1.1.0:
+    resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
     dependencies:
       '@protobufjs/aspromise': 1.1.2
       '@protobufjs/inquire': 1.1.0
+    dev: false
 
-  '@protobufjs/float@1.0.2': {}
+  /@protobufjs/float@1.0.2:
+    resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
+    dev: false
 
-  '@protobufjs/inquire@1.1.0': {}
+  /@protobufjs/inquire@1.1.0:
+    resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
+    dev: false
 
-  '@protobufjs/path@1.1.2': {}
+  /@protobufjs/path@1.1.2:
+    resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
+    dev: false
 
-  '@protobufjs/pool@1.1.0': {}
+  /@protobufjs/pool@1.1.0:
+    resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
+    dev: false
 
-  '@protobufjs/utf8@1.1.0': {}
+  /@protobufjs/utf8@1.1.0:
+    resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
+    dev: false
 
-  '@rollup/pluginutils@5.3.0(rollup@4.54.0)':
+  /@rollup/pluginutils@4.2.1:
+    resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
+    engines: {node: '>= 8.0.0'}
+    dependencies:
+      estree-walker: 2.0.2
+      picomatch: 2.3.1
+    dev: true
+
+  /@rollup/pluginutils@5.3.0(rollup@4.55.1):
+    resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==}
+    engines: {node: '>=14.0.0'}
+    peerDependencies:
+      rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+    peerDependenciesMeta:
+      rollup:
+        optional: true
     dependencies:
       '@types/estree': 1.0.8
       estree-walker: 2.0.2
       picomatch: 4.0.3
-    optionalDependencies:
-      rollup: 4.54.0
+      rollup: 4.55.1
+    dev: true
 
-  '@rollup/rollup-android-arm-eabi@4.54.0':
+  /@rollup/rollup-android-arm-eabi@4.55.1:
+    resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==}
+    cpu: [arm]
+    os: [android]
+    dev: true
     optional: true
 
-  '@rollup/rollup-android-arm64@4.54.0':
+  /@rollup/rollup-android-arm64@4.55.1:
+    resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==}
+    cpu: [arm64]
+    os: [android]
+    dev: true
     optional: true
 
-  '@rollup/rollup-darwin-arm64@4.54.0':
+  /@rollup/rollup-darwin-arm64@4.55.1:
+    resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==}
+    cpu: [arm64]
+    os: [darwin]
+    dev: true
     optional: true
 
-  '@rollup/rollup-darwin-x64@4.54.0':
+  /@rollup/rollup-darwin-x64@4.55.1:
+    resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==}
+    cpu: [x64]
+    os: [darwin]
+    dev: true
     optional: true
 
-  '@rollup/rollup-freebsd-arm64@4.54.0':
+  /@rollup/rollup-freebsd-arm64@4.55.1:
+    resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==}
+    cpu: [arm64]
+    os: [freebsd]
+    dev: true
     optional: true
 
-  '@rollup/rollup-freebsd-x64@4.54.0':
+  /@rollup/rollup-freebsd-x64@4.55.1:
+    resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==}
+    cpu: [x64]
+    os: [freebsd]
+    dev: true
     optional: true
 
-  '@rollup/rollup-linux-arm-gnueabihf@4.54.0':
+  /@rollup/rollup-linux-arm-gnueabihf@4.55.1:
+    resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==}
+    cpu: [arm]
+    os: [linux]
+    libc: [glibc]
+    dev: true
     optional: true
 
-  '@rollup/rollup-linux-arm-musleabihf@4.54.0':
+  /@rollup/rollup-linux-arm-musleabihf@4.55.1:
+    resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==}
+    cpu: [arm]
+    os: [linux]
+    libc: [musl]
+    dev: true
     optional: true
 
-  '@rollup/rollup-linux-arm64-gnu@4.54.0':
+  /@rollup/rollup-linux-arm64-gnu@4.55.1:
+    resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==}
+    cpu: [arm64]
+    os: [linux]
+    libc: [glibc]
+    dev: true
     optional: true
 
-  '@rollup/rollup-linux-arm64-musl@4.54.0':
+  /@rollup/rollup-linux-arm64-musl@4.55.1:
+    resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==}
+    cpu: [arm64]
+    os: [linux]
+    libc: [musl]
+    dev: true
     optional: true
 
-  '@rollup/rollup-linux-loong64-gnu@4.54.0':
+  /@rollup/rollup-linux-loong64-gnu@4.55.1:
+    resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==}
+    cpu: [loong64]
+    os: [linux]
+    libc: [glibc]
+    dev: true
     optional: true
 
-  '@rollup/rollup-linux-ppc64-gnu@4.54.0':
+  /@rollup/rollup-linux-loong64-musl@4.55.1:
+    resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==}
+    cpu: [loong64]
+    os: [linux]
+    libc: [musl]
+    dev: true
     optional: true
 
-  '@rollup/rollup-linux-riscv64-gnu@4.54.0':
+  /@rollup/rollup-linux-ppc64-gnu@4.55.1:
+    resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==}
+    cpu: [ppc64]
+    os: [linux]
+    libc: [glibc]
+    dev: true
     optional: true
 
-  '@rollup/rollup-linux-riscv64-musl@4.54.0':
+  /@rollup/rollup-linux-ppc64-musl@4.55.1:
+    resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==}
+    cpu: [ppc64]
+    os: [linux]
+    libc: [musl]
+    dev: true
     optional: true
 
-  '@rollup/rollup-linux-s390x-gnu@4.54.0':
+  /@rollup/rollup-linux-riscv64-gnu@4.55.1:
+    resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==}
+    cpu: [riscv64]
+    os: [linux]
+    libc: [glibc]
+    dev: true
     optional: true
 
-  '@rollup/rollup-linux-x64-gnu@4.54.0':
+  /@rollup/rollup-linux-riscv64-musl@4.55.1:
+    resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==}
+    cpu: [riscv64]
+    os: [linux]
+    libc: [musl]
+    dev: true
     optional: true
 
-  '@rollup/rollup-linux-x64-musl@4.54.0':
+  /@rollup/rollup-linux-s390x-gnu@4.55.1:
+    resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==}
+    cpu: [s390x]
+    os: [linux]
+    libc: [glibc]
+    dev: true
     optional: true
 
-  '@rollup/rollup-openharmony-arm64@4.54.0':
+  /@rollup/rollup-linux-x64-gnu@4.55.1:
+    resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==}
+    cpu: [x64]
+    os: [linux]
+    libc: [glibc]
+    dev: true
     optional: true
 
-  '@rollup/rollup-win32-arm64-msvc@4.54.0':
+  /@rollup/rollup-linux-x64-musl@4.55.1:
+    resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==}
+    cpu: [x64]
+    os: [linux]
+    libc: [musl]
+    dev: true
     optional: true
 
-  '@rollup/rollup-win32-ia32-msvc@4.54.0':
+  /@rollup/rollup-openbsd-x64@4.55.1:
+    resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==}
+    cpu: [x64]
+    os: [openbsd]
+    dev: true
     optional: true
 
-  '@rollup/rollup-win32-x64-gnu@4.54.0':
+  /@rollup/rollup-openharmony-arm64@4.55.1:
+    resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==}
+    cpu: [arm64]
+    os: [openharmony]
+    dev: true
     optional: true
 
-  '@rollup/rollup-win32-x64-msvc@4.54.0':
+  /@rollup/rollup-win32-arm64-msvc@4.55.1:
+    resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==}
+    cpu: [arm64]
+    os: [win32]
+    dev: true
     optional: true
 
-  '@saber/nf-design-base-elp@1.3.0':
+  /@rollup/rollup-win32-ia32-msvc@4.55.1:
+    resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==}
+    cpu: [ia32]
+    os: [win32]
+    dev: true
+    optional: true
+
+  /@rollup/rollup-win32-x64-gnu@4.55.1:
+    resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==}
+    cpu: [x64]
+    os: [win32]
+    dev: true
+    optional: true
+
+  /@rollup/rollup-win32-x64-msvc@4.55.1:
+    resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==}
+    cpu: [x64]
+    os: [win32]
+    dev: true
+    optional: true
+
+  /@saber/nf-design-base-elp@1.3.0:
+    resolution: {integrity: sha512-sKUkhErjggUjH+hoBTVpcUC7j38KAkGUloIVXIRl6YP1WT14QXvtf3iu8iCIOBO8iPKHgrBiq4h80UW9+qqbjQ==, tarball: https://center.javablade.com/api/packages/blade/npm/%40saber%2Fnf-design-base-elp/-/1.3.0/nf-design-base-elp-1.3.0.tgz}
     dependencies:
       bpmn-js: 11.5.0
-      codemirror: 5.65.20
+      codemirror: 5.65.16
       randomcolor: 0.6.2
+    dev: false
 
-  '@saber/nf-form-design-elp@1.6.1(vue@3.5.26)':
+  /@saber/nf-form-design-elp@1.4.1(vue@3.5.13):
+    resolution: {integrity: sha512-O4/ZkOIyxqOplHsRlP/LfDlhCbHNtIrS6n+8+N+0JLYb76a/14X07abAHlpsAg2p0yY62OuuRBu8mpIvh6C40Q==, tarball: https://center.javablade.com/api/packages/blade/npm/%40saber%2Fnf-form-design-elp/-/1.4.1/nf-form-design-elp-1.4.1.tgz}
     dependencies:
-      vuedraggable: 4.1.0(vue@3.5.26)
+      vuedraggable: 4.1.0(vue@3.5.13)
     transitivePeerDependencies:
       - vue
+    dev: false
 
-  '@saber/nf-form-elp@1.6.3':
+  /@saber/nf-form-elp@1.4.4:
+    resolution: {integrity: sha512-rf/tlTEBSBOaAX4PJgt11inONEe7dn4g0iJAgozqpKuwrfqgPRChr3N2b8Wkg9DJwBPR/RmIRQ0kHyRo5lKlug==, tarball: https://center.javablade.com/api/packages/blade/npm/%40saber%2Fnf-form-elp/-/1.4.4/nf-form-elp-1.4.4.tgz}
     dependencies:
       '@amap/amap-jsapi-loader': 1.0.1
-      '@wangeditor-next/editor': 5.6.49
-      codemirror: 5.65.20
+      '@wangeditor/editor': 5.1.23
+      codemirror: 5.65.16
       countup.js: 2.9.0
       signature_pad: 5.1.3
+    dev: false
 
-  '@smallwei/avue@3.7.4(element-plus@2.9.11(vue@3.5.26))(vue@3.5.26)':
+  /@smallwei/avue@3.6.2(element-plus@2.9.11)(vue@3.5.13):
+    resolution: {integrity: sha512-Ifkt0o7KLsAMptfoNMG7qYS86OL2pEet761wWZyZGu8e48wuNNPOfqx5jnibGjx2oIoKtYUFh7tFdllOCth2EQ==}
+    peerDependencies:
+      element-plus: '>=2.2.0'
+      vue: '>=3.2.0'
     dependencies:
-      '@element-plus/icons-vue': 2.3.2(vue@3.5.26)
+      '@element-plus/icons-vue': 2.3.1(vue@3.5.13)
       countup.js: 1.9.3
-      dayjs: 1.11.19
-      element-plus: 2.9.11(vue@3.5.26)
+      dayjs: 1.10.6
+      element-plus: 2.9.11(vue@3.5.13)
       lodash: 4.17.21
-      vue: 3.5.26
+      vue: 3.5.13
+    dev: false
 
-  '@sxzz/popperjs-es@2.11.7': {}
+  /@sxzz/popperjs-es@2.11.7:
+    resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
+    dev: false
 
-  '@transloadit/prettier-bytes@0.0.7': {}
+  /@transloadit/prettier-bytes@0.0.7:
+    resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==}
+    dev: false
 
-  '@trysound/sax@0.2.0': {}
+  /@trysound/sax@0.2.0:
+    resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
+    engines: {node: '>=10.13.0'}
+    dev: true
 
-  '@turf/along@6.5.0':
+  /@turf/along@6.5.0:
+    resolution: {integrity: sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==}
     dependencies:
       '@turf/bearing': 6.5.0
       '@turf/destination': 6.5.0
       '@turf/distance': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/angle@6.5.0':
+  /@turf/angle@6.5.0:
+    resolution: {integrity: sha512-4pXMbWhFofJJAOvTMCns6N4C8CMd5Ih4O2jSAG9b3dDHakj3O4yN1+Zbm+NUei+eVEZ9gFeVp9svE3aMDenIkw==}
     dependencies:
       '@turf/bearing': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/rhumb-bearing': 6.5.0
+    dev: false
 
-  '@turf/area@6.5.0':
+  /@turf/area@6.5.0:
+    resolution: {integrity: sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/bbox-clip@6.5.0':
+  /@turf/bbox-clip@6.5.0:
+    resolution: {integrity: sha512-F6PaIRF8WMp8EmgU/Ke5B1Y6/pia14UAYB5TiBC668w5rVVjy5L8rTm/m2lEkkDMHlzoP9vNY4pxpNthE7rLcQ==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/bbox-polygon@6.5.0':
+  /@turf/bbox-polygon@6.5.0:
+    resolution: {integrity: sha512-+/r0NyL1lOG3zKZmmf6L8ommU07HliP4dgYToMoTxqzsWzyLjaj/OzgQ8rBmv703WJX+aS6yCmLuIhYqyufyuw==}
     dependencies:
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/bbox@6.5.0':
+  /@turf/bbox@6.5.0:
+    resolution: {integrity: sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/bearing@6.5.0':
+  /@turf/bearing@6.5.0:
+    resolution: {integrity: sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/bezier-spline@6.5.0':
+  /@turf/bezier-spline@6.5.0:
+    resolution: {integrity: sha512-vokPaurTd4PF96rRgGVm6zYYC5r1u98ZsG+wZEv9y3kJTuJRX/O3xIY2QnTGTdbVmAJN1ouOsD0RoZYaVoXORQ==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/boolean-clockwise@6.5.0':
+  /@turf/boolean-clockwise@6.5.0:
+    resolution: {integrity: sha512-45+C7LC5RMbRWrxh3Z0Eihsc8db1VGBO5d9BLTOAwU4jR6SgsunTfRWR16X7JUwIDYlCVEmnjcXJNi/kIU3VIw==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/boolean-contains@6.5.0':
+  /@turf/boolean-contains@6.5.0:
+    resolution: {integrity: sha512-4m8cJpbw+YQcKVGi8y0cHhBUnYT+QRfx6wzM4GI1IdtYH3p4oh/DOBJKrepQyiDzFDaNIjxuWXBh0ai1zVwOQQ==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/boolean-point-in-polygon': 6.5.0
       '@turf/boolean-point-on-line': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/boolean-crosses@6.5.0':
+  /@turf/boolean-crosses@6.5.0:
+    resolution: {integrity: sha512-gvshbTPhAHporTlQwBJqyfW+2yV8q/mOTxG6PzRVl6ARsqNoqYQWkd4MLug7OmAqVyBzLK3201uAeBjxbGw0Ng==}
     dependencies:
       '@turf/boolean-point-in-polygon': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/line-intersect': 6.5.0
       '@turf/polygon-to-line': 6.5.0
+    dev: false
 
-  '@turf/boolean-disjoint@6.5.0':
+  /@turf/boolean-disjoint@6.5.0:
+    resolution: {integrity: sha512-rZ2ozlrRLIAGo2bjQ/ZUu4oZ/+ZjGvLkN5CKXSKBcu6xFO6k2bgqeM8a1836tAW+Pqp/ZFsTA5fZHsJZvP2D5g==}
     dependencies:
       '@turf/boolean-point-in-polygon': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/line-intersect': 6.5.0
       '@turf/meta': 6.5.0
       '@turf/polygon-to-line': 6.5.0
+    dev: false
 
-  '@turf/boolean-equal@6.5.0':
+  /@turf/boolean-equal@6.5.0:
+    resolution: {integrity: sha512-cY0M3yoLC26mhAnjv1gyYNQjn7wxIXmL2hBmI/qs8g5uKuC2hRWi13ydufE3k4x0aNRjFGlg41fjoYLwaVF+9Q==}
     dependencies:
       '@turf/clean-coords': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       geojson-equality: 0.1.6
+    dev: false
 
-  '@turf/boolean-intersects@6.5.0':
+  /@turf/boolean-intersects@6.5.0:
+    resolution: {integrity: sha512-nIxkizjRdjKCYFQMnml6cjPsDOBCThrt+nkqtSEcxkKMhAQj5OO7o2CecioNTaX8EayqwMGVKcsz27oP4mKPTw==}
     dependencies:
       '@turf/boolean-disjoint': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/boolean-overlap@6.5.0':
+  /@turf/boolean-overlap@6.5.0:
+    resolution: {integrity: sha512-8btMIdnbXVWUa1M7D4shyaSGxLRw6NjMcqKBcsTXcZdnaixl22k7ar7BvIzkaRYN3SFECk9VGXfLncNS3ckQUw==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
@@ -4410,33 +1241,43 @@
       '@turf/line-overlap': 6.5.0
       '@turf/meta': 6.5.0
       geojson-equality: 0.1.6
+    dev: false
 
-  '@turf/boolean-parallel@6.5.0':
+  /@turf/boolean-parallel@6.5.0:
+    resolution: {integrity: sha512-aSHJsr1nq9e5TthZGZ9CZYeXklJyRgR5kCLm5X4urz7+MotMOp/LsGOsvKvK9NeUl9+8OUmfMn8EFTT8LkcvIQ==}
     dependencies:
       '@turf/clean-coords': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/line-segment': 6.5.0
       '@turf/rhumb-bearing': 6.5.0
+    dev: false
 
-  '@turf/boolean-point-in-polygon@6.5.0':
+  /@turf/boolean-point-in-polygon@6.5.0:
+    resolution: {integrity: sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/boolean-point-on-line@6.5.0':
+  /@turf/boolean-point-on-line@6.5.0:
+    resolution: {integrity: sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/boolean-within@6.5.0':
+  /@turf/boolean-within@6.5.0:
+    resolution: {integrity: sha512-YQB3oU18Inx35C/LU930D36RAVe7LDXk1kWsQ8mLmuqYn9YdPsDQTMTkLJMhoQ8EbN7QTdy333xRQ4MYgToteQ==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/boolean-point-in-polygon': 6.5.0
       '@turf/boolean-point-on-line': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/buffer@6.5.0':
+  /@turf/buffer@6.5.0:
+    resolution: {integrity: sha512-qeX4N6+PPWbKqp1AVkBVWFerGjMYMUyencwfnkCesoznU6qvfugFHNAngNqIBVnJjZ5n8IFyOf+akcxnrt9sNg==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/center': 6.5.0
@@ -4445,87 +1286,115 @@
       '@turf/projection': 6.5.0
       d3-geo: 1.7.1
       turf-jsts: 1.2.3
+    dev: false
 
-  '@turf/center-mean@6.5.0':
+  /@turf/center-mean@6.5.0:
+    resolution: {integrity: sha512-AAX6f4bVn12pTVrMUiB9KrnV94BgeBKpyg3YpfnEbBpkN/znfVhL8dG8IxMAxAoSZ61Zt9WLY34HfENveuOZ7Q==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/center-median@6.5.0':
+  /@turf/center-median@6.5.0:
+    resolution: {integrity: sha512-dT8Ndu5CiZkPrj15PBvslpuf01ky41DEYEPxS01LOxp5HOUHXp1oJxsPxvc+i/wK4BwccPNzU1vzJ0S4emd1KQ==}
     dependencies:
       '@turf/center-mean': 6.5.0
       '@turf/centroid': 6.5.0
       '@turf/distance': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/center-of-mass@6.5.0':
+  /@turf/center-of-mass@6.5.0:
+    resolution: {integrity: sha512-EWrriU6LraOfPN7m1jZi+1NLTKNkuIsGLZc2+Y8zbGruvUW+QV7K0nhf7iZWutlxHXTBqEXHbKue/o79IumAsQ==}
     dependencies:
       '@turf/centroid': 6.5.0
       '@turf/convex': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/center@6.5.0':
+  /@turf/center@6.5.0:
+    resolution: {integrity: sha512-T8KtMTfSATWcAX088rEDKjyvQCBkUsLnK/Txb6/8WUXIeOZyHu42G7MkdkHRoHtwieLdduDdmPLFyTdG5/e7ZQ==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/centroid@6.5.0':
+  /@turf/centroid@6.5.0:
+    resolution: {integrity: sha512-MwE1oq5E3isewPprEClbfU5pXljIK/GUOMbn22UM3IFPDJX0KeoyLNwghszkdmFp/qMGL/M13MMWvU+GNLXP/A==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/circle@6.5.0':
+  /@turf/circle@6.5.0:
+    resolution: {integrity: sha512-oU1+Kq9DgRnoSbWFHKnnUdTmtcRUMmHoV9DjTXu9vOLNV5OWtAAh1VZ+mzsioGGzoDNT/V5igbFOkMfBQc0B6A==}
     dependencies:
       '@turf/destination': 6.5.0
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/clean-coords@6.5.0':
+  /@turf/clean-coords@6.5.0:
+    resolution: {integrity: sha512-EMX7gyZz0WTH/ET7xV8MyrExywfm9qUi0/MY89yNffzGIEHuFfqwhcCqZ8O00rZIPZHUTxpmsxQSTfzJJA1CPw==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/clone@6.5.0':
+  /@turf/clone@6.5.0:
+    resolution: {integrity: sha512-mzVtTFj/QycXOn6ig+annKrM6ZlimreKYz6f/GSERytOpgzodbQyOgkfwru100O1KQhhjSudKK4DsQ0oyi9cTw==}
     dependencies:
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/clusters-dbscan@6.5.0':
+  /@turf/clusters-dbscan@6.5.0:
+    resolution: {integrity: sha512-SxZEE4kADU9DqLRiT53QZBBhu8EP9skviSyl+FGj08Y01xfICM/RR9ACUdM0aEQimhpu+ZpRVcUK+2jtiCGrYQ==}
     dependencies:
       '@turf/clone': 6.5.0
       '@turf/distance': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
       density-clustering: 1.3.0
+    dev: false
 
-  '@turf/clusters-kmeans@6.5.0':
+  /@turf/clusters-kmeans@6.5.0:
+    resolution: {integrity: sha512-DwacD5+YO8kwDPKaXwT9DV46tMBVNsbi1IzdajZu1JDSWoN7yc7N9Qt88oi+p30583O0UPVkAK+A10WAQv4mUw==}
     dependencies:
       '@turf/clone': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
       skmeans: 0.9.7
+    dev: false
 
-  '@turf/clusters@6.5.0':
+  /@turf/clusters@6.5.0:
+    resolution: {integrity: sha512-Y6gfnTJzQ1hdLfCsyd5zApNbfLIxYEpmDibHUqR5z03Lpe02pa78JtgrgUNt1seeO/aJ4TG1NLN8V5gOrHk04g==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/collect@6.5.0':
+  /@turf/collect@6.5.0:
+    resolution: {integrity: sha512-4dN/T6LNnRg099m97BJeOcTA5fSI8cu87Ydgfibewd2KQwBexO69AnjEFqfPX3Wj+Zvisj1uAVIZbPmSSrZkjg==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/boolean-point-in-polygon': 6.5.0
       '@turf/helpers': 6.5.0
       rbush: 2.0.2
+    dev: false
 
-  '@turf/combine@6.5.0':
+  /@turf/combine@6.5.0:
+    resolution: {integrity: sha512-Q8EIC4OtAcHiJB3C4R+FpB4LANiT90t17uOd851qkM2/o6m39bfN5Mv0PWqMZIHWrrosZqRqoY9dJnzz/rJxYQ==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/concave@6.5.0':
+  /@turf/concave@6.5.0:
+    resolution: {integrity: sha512-I/sUmUC8TC5h/E2vPwxVht+nRt+TnXIPRoztDFvS8/Y0+cBDple9inLSo9nnPXMXidrBlGXZ9vQx/BjZUJgsRQ==}
     dependencies:
       '@turf/clone': 6.5.0
       '@turf/distance': 6.5.0
@@ -4535,87 +1404,117 @@
       '@turf/tin': 6.5.0
       topojson-client: 3.1.0
       topojson-server: 3.0.1
+    dev: false
 
-  '@turf/convex@6.5.0':
+  /@turf/convex@6.5.0:
+    resolution: {integrity: sha512-x7ZwC5z7PJB0SBwNh7JCeCNx7Iu+QSrH7fYgK0RhhNop13TqUlvHMirMLRgf2db1DqUetrAO2qHJeIuasquUWg==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
       concaveman: 2.0.0
+    dev: false
 
-  '@turf/destination@6.5.0':
+  /@turf/destination@6.5.0:
+    resolution: {integrity: sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/difference@6.5.0':
+  /@turf/difference@6.5.0:
+    resolution: {integrity: sha512-l8iR5uJqvI+5Fs6leNbhPY5t/a3vipUF/3AeVLpwPQcgmedNXyheYuy07PcMGH5Jdpi5gItOiTqwiU/bUH4b3A==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       polygon-clipping: 0.15.7
+    dev: false
 
-  '@turf/dissolve@6.5.0':
+  /@turf/dissolve@6.5.0:
+    resolution: {integrity: sha512-WBVbpm9zLTp0Bl9CE35NomTaOL1c4TQCtEoO43YaAhNEWJOOIhZMFJyr8mbvYruKl817KinT3x7aYjjCMjTAsQ==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
       polygon-clipping: 0.15.7
+    dev: false
 
-  '@turf/distance-weight@6.5.0':
+  /@turf/distance-weight@6.5.0:
+    resolution: {integrity: sha512-a8qBKkgVNvPKBfZfEJZnC3DV7dfIsC3UIdpRci/iap/wZLH41EmS90nM+BokAJflUHYy8PqE44wySGWHN1FXrQ==}
     dependencies:
       '@turf/centroid': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/distance@6.5.0':
+  /@turf/distance@6.5.0:
+    resolution: {integrity: sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/ellipse@6.5.0':
+  /@turf/ellipse@6.5.0:
+    resolution: {integrity: sha512-kuXtwFviw/JqnyJXF1mrR/cb496zDTSbGKtSiolWMNImYzGGkbsAsFTjwJYgD7+4FixHjp0uQPzo70KDf3AIBw==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/rhumb-destination': 6.5.0
       '@turf/transform-rotate': 6.5.0
+    dev: false
 
-  '@turf/envelope@6.5.0':
+  /@turf/envelope@6.5.0:
+    resolution: {integrity: sha512-9Z+FnBWvOGOU4X+fMZxYFs1HjFlkKqsddLuMknRaqcJd6t+NIv5DWvPtDL8ATD2GEExYDiFLwMdckfr1yqJgHA==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/bbox-polygon': 6.5.0
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/explode@6.5.0':
+  /@turf/explode@6.5.0:
+    resolution: {integrity: sha512-6cSvMrnHm2qAsace6pw9cDmK2buAlw8+tjeJVXMfMyY+w7ZUi1rprWMsY92J7s2Dar63Bv09n56/1V7+tcj52Q==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/flatten@6.5.0':
+  /@turf/flatten@6.5.0:
+    resolution: {integrity: sha512-IBZVwoNLVNT6U/bcUUllubgElzpMsNoCw8tLqBw6dfYg9ObGmpEjf9BIYLr7a2Yn5ZR4l7YIj2T7kD5uJjZADQ==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/flip@6.5.0':
+  /@turf/flip@6.5.0:
+    resolution: {integrity: sha512-oyikJFNjt2LmIXQqgOGLvt70RgE2lyzPMloYWM7OR5oIFGRiBvqVD2hA6MNw6JewIm30fWZ8DQJw1NHXJTJPbg==}
     dependencies:
       '@turf/clone': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/great-circle@6.5.0':
+  /@turf/great-circle@6.5.0:
+    resolution: {integrity: sha512-7ovyi3HaKOXdFyN7yy1yOMa8IyOvV46RC1QOQTT+RYUN8ke10eyqExwBpL9RFUPvlpoTzoYbM/+lWPogQlFncg==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/helpers@6.5.0': {}
+  /@turf/helpers@6.5.0:
+    resolution: {integrity: sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==}
+    dev: false
 
-  '@turf/hex-grid@6.5.0':
+  /@turf/hex-grid@6.5.0:
+    resolution: {integrity: sha512-Ln3tc2tgZT8etDOldgc6e741Smg1CsMKAz1/Mlel+MEL5Ynv2mhx3m0q4J9IB1F3a4MNjDeVvm8drAaf9SF33g==}
     dependencies:
       '@turf/distance': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/intersect': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/interpolate@6.5.0':
+  /@turf/interpolate@6.5.0:
+    resolution: {integrity: sha512-LSH5fMeiGyuDZ4WrDJNgh81d2DnNDUVJtuFryJFup8PV8jbs46lQGfI3r1DJ2p1IlEJIz3pmAZYeTfMMoeeohw==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/centroid': 6.5.0
@@ -4628,18 +1527,24 @@
       '@turf/point-grid': 6.5.0
       '@turf/square-grid': 6.5.0
       '@turf/triangle-grid': 6.5.0
+    dev: false
 
-  '@turf/intersect@6.5.0':
+  /@turf/intersect@6.5.0:
+    resolution: {integrity: sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       polygon-clipping: 0.15.7
+    dev: false
 
-  '@turf/invariant@6.5.0':
+  /@turf/invariant@6.5.0:
+    resolution: {integrity: sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==}
     dependencies:
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/isobands@6.5.0':
+  /@turf/isobands@6.5.0:
+    resolution: {integrity: sha512-4h6sjBPhRwMVuFaVBv70YB7eGz+iw0bhPRnp+8JBdX1UPJSXhoi/ZF2rACemRUr0HkdVB/a1r9gC32vn5IAEkw==}
     dependencies:
       '@turf/area': 6.5.0
       '@turf/bbox': 6.5.0
@@ -4649,53 +1554,69 @@
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
       object-assign: 4.1.1
+    dev: false
 
-  '@turf/isolines@6.5.0':
+  /@turf/isolines@6.5.0:
+    resolution: {integrity: sha512-6ElhiLCopxWlv4tPoxiCzASWt/jMRvmp6mRYrpzOm3EUl75OhHKa/Pu6Y9nWtCMmVC/RcWtiiweUocbPLZLm0A==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
       object-assign: 4.1.1
+    dev: false
 
-  '@turf/kinks@6.5.0':
+  /@turf/kinks@6.5.0:
+    resolution: {integrity: sha512-ViCngdPt1eEL7hYUHR2eHR662GvCgTc35ZJFaNR6kRtr6D8plLaDju0FILeFFWSc+o8e3fwxZEJKmFj9IzPiIQ==}
     dependencies:
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/length@6.5.0':
+  /@turf/length@6.5.0:
+    resolution: {integrity: sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==}
     dependencies:
       '@turf/distance': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/line-arc@6.5.0':
+  /@turf/line-arc@6.5.0:
+    resolution: {integrity: sha512-I6c+V6mIyEwbtg9P9zSFF89T7QPe1DPTG3MJJ6Cm1MrAY0MdejwQKOpsvNl8LDU2ekHOlz2kHpPVR7VJsoMllA==}
     dependencies:
       '@turf/circle': 6.5.0
       '@turf/destination': 6.5.0
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/line-chunk@6.5.0':
+  /@turf/line-chunk@6.5.0:
+    resolution: {integrity: sha512-i1FGE6YJaaYa+IJesTfyRRQZP31QouS+wh/pa6O3CC0q4T7LtHigyBSYjrbjSLfn2EVPYGlPCMFEqNWCOkC6zg==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/length': 6.5.0
       '@turf/line-slice-along': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/line-intersect@6.5.0':
+  /@turf/line-intersect@6.5.0:
+    resolution: {integrity: sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/line-segment': 6.5.0
       '@turf/meta': 6.5.0
       geojson-rbush: 3.2.0
+    dev: false
 
-  '@turf/line-offset@6.5.0':
+  /@turf/line-offset@6.5.0:
+    resolution: {integrity: sha512-CEXZbKgyz8r72qRvPchK0dxqsq8IQBdH275FE6o4MrBkzMcoZsfSjghtXzKaz9vvro+HfIXal0sTk2mqV1lQTw==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/line-overlap@6.5.0':
+  /@turf/line-overlap@6.5.0:
+    resolution: {integrity: sha512-xHOaWLd0hkaC/1OLcStCpfq55lPHpPNadZySDXYiYjEz5HXr1oKmtMYpn0wGizsLwrOixRdEp+j7bL8dPt4ojQ==}
     dependencies:
       '@turf/boolean-point-on-line': 6.5.0
       '@turf/helpers': 6.5.0
@@ -4705,27 +1626,35 @@
       '@turf/nearest-point-on-line': 6.5.0
       deep-equal: 1.1.2
       geojson-rbush: 3.2.0
+    dev: false
 
-  '@turf/line-segment@6.5.0':
+  /@turf/line-segment@6.5.0:
+    resolution: {integrity: sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/line-slice-along@6.5.0':
+  /@turf/line-slice-along@6.5.0:
+    resolution: {integrity: sha512-KHJRU6KpHrAj+BTgTNqby6VCTnDzG6a1sJx/I3hNvqMBLvWVA2IrkR9L9DtsQsVY63IBwVdQDqiwCuZLDQh4Ng==}
     dependencies:
       '@turf/bearing': 6.5.0
       '@turf/destination': 6.5.0
       '@turf/distance': 6.5.0
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/line-slice@6.5.0':
+  /@turf/line-slice@6.5.0:
+    resolution: {integrity: sha512-vDqJxve9tBHhOaVVFXqVjF5qDzGtKWviyjbyi2QnSnxyFAmLlLnBfMX8TLQCAf2GxHibB95RO5FBE6I2KVPRuw==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/nearest-point-on-line': 6.5.0
+    dev: false
 
-  '@turf/line-split@6.5.0':
+  /@turf/line-split@6.5.0:
+    resolution: {integrity: sha512-/rwUMVr9OI2ccJjw7/6eTN53URtGThNSD5I0GgxyFXMtxWiloRJ9MTff8jBbtPWrRka/Sh2GkwucVRAEakx9Sw==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/helpers': 6.5.0
@@ -4737,37 +1666,49 @@
       '@turf/square': 6.5.0
       '@turf/truncate': 6.5.0
       geojson-rbush: 3.2.0
+    dev: false
 
-  '@turf/line-to-polygon@6.5.0':
+  /@turf/line-to-polygon@6.5.0:
+    resolution: {integrity: sha512-qYBuRCJJL8Gx27OwCD1TMijM/9XjRgXH/m/TyuND4OXedBpIWlK5VbTIO2gJ8OCfznBBddpjiObLBrkuxTpN4Q==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/clone': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/mask@6.5.0':
+  /@turf/mask@6.5.0:
+    resolution: {integrity: sha512-RQha4aU8LpBrmrkH8CPaaoAfk0Egj5OuXtv6HuCQnHeGNOQt3TQVibTA3Sh4iduq4EPxnZfDjgsOeKtrCA19lg==}
     dependencies:
       '@turf/helpers': 6.5.0
       polygon-clipping: 0.15.7
+    dev: false
 
-  '@turf/meta@6.5.0':
+  /@turf/meta@6.5.0:
+    resolution: {integrity: sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==}
     dependencies:
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/midpoint@6.5.0':
+  /@turf/midpoint@6.5.0:
+    resolution: {integrity: sha512-MyTzV44IwmVI6ec9fB2OgZ53JGNlgOpaYl9ArKoF49rXpL84F9rNATndbe0+MQIhdkw8IlzA6xVP4lZzfMNVCw==}
     dependencies:
       '@turf/bearing': 6.5.0
       '@turf/destination': 6.5.0
       '@turf/distance': 6.5.0
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/moran-index@6.5.0':
+  /@turf/moran-index@6.5.0:
+    resolution: {integrity: sha512-ItsnhrU2XYtTtTudrM8so4afBCYWNaB0Mfy28NZwLjB5jWuAsvyV+YW+J88+neK/ougKMTawkmjQqodNJaBeLQ==}
     dependencies:
       '@turf/distance-weight': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/nearest-point-on-line@6.5.0':
+  /@turf/nearest-point-on-line@6.5.0:
+    resolution: {integrity: sha512-WthrvddddvmymnC+Vf7BrkHGbDOUu6Z3/6bFYUGv1kxw8tiZ6n83/VG6kHz4poHOfS0RaNflzXSkmCi64fLBlg==}
     dependencies:
       '@turf/bearing': 6.5.0
       '@turf/destination': 6.5.0
@@ -4776,43 +1717,55 @@
       '@turf/invariant': 6.5.0
       '@turf/line-intersect': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/nearest-point-to-line@6.5.0':
+  /@turf/nearest-point-to-line@6.5.0:
+    resolution: {integrity: sha512-PXV7cN0BVzUZdjj6oeb/ESnzXSfWmEMrsfZSDRgqyZ9ytdiIj/eRsnOXLR13LkTdXVOJYDBuf7xt1mLhM4p6+Q==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
       '@turf/point-to-line-distance': 6.5.0
       object-assign: 4.1.1
+    dev: false
 
-  '@turf/nearest-point@6.5.0':
+  /@turf/nearest-point@6.5.0:
+    resolution: {integrity: sha512-fguV09QxilZv/p94s8SMsXILIAMiaXI5PATq9d7YWijLxWUj6Q/r43kxyoi78Zmwwh1Zfqz9w+bCYUAxZ5+euA==}
     dependencies:
       '@turf/clone': 6.5.0
       '@turf/distance': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/planepoint@6.5.0':
+  /@turf/planepoint@6.5.0:
+    resolution: {integrity: sha512-R3AahA6DUvtFbka1kcJHqZ7DMHmPXDEQpbU5WaglNn7NaCQg9HB0XM0ZfqWcd5u92YXV+Gg8QhC8x5XojfcM4Q==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/point-grid@6.5.0':
+  /@turf/point-grid@6.5.0:
+    resolution: {integrity: sha512-Iq38lFokNNtQJnOj/RBKmyt6dlof0yhaHEDELaWHuECm1lIZLY3ZbVMwbs+nXkwTAHjKfS/OtMheUBkw+ee49w==}
     dependencies:
       '@turf/boolean-within': 6.5.0
       '@turf/distance': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/point-on-feature@6.5.0':
+  /@turf/point-on-feature@6.5.0:
+    resolution: {integrity: sha512-bDpuIlvugJhfcF/0awAQ+QI6Om1Y1FFYE8Y/YdxGRongivix850dTeXCo0mDylFdWFPGDo7Mmh9Vo4VxNwW/TA==}
     dependencies:
       '@turf/boolean-point-in-polygon': 6.5.0
       '@turf/center': 6.5.0
       '@turf/explode': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/nearest-point': 6.5.0
+    dev: false
 
-  '@turf/point-to-line-distance@6.5.0':
+  /@turf/point-to-line-distance@6.5.0:
+    resolution: {integrity: sha512-opHVQ4vjUhNBly1bob6RWy+F+hsZDH9SA0UW36pIRzfpu27qipU18xup0XXEePfY6+wvhF6yL/WgCO2IbrLqEA==}
     dependencies:
       '@turf/bearing': 6.5.0
       '@turf/distance': 6.5.0
@@ -4822,19 +1775,25 @@
       '@turf/projection': 6.5.0
       '@turf/rhumb-bearing': 6.5.0
       '@turf/rhumb-distance': 6.5.0
+    dev: false
 
-  '@turf/points-within-polygon@6.5.0':
+  /@turf/points-within-polygon@6.5.0:
+    resolution: {integrity: sha512-YyuheKqjliDsBDt3Ho73QVZk1VXX1+zIA2gwWvuz8bR1HXOkcuwk/1J76HuFMOQI3WK78wyAi+xbkx268PkQzQ==}
     dependencies:
       '@turf/boolean-point-in-polygon': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/polygon-smooth@6.5.0':
+  /@turf/polygon-smooth@6.5.0:
+    resolution: {integrity: sha512-LO/X/5hfh/Rk4EfkDBpLlVwt3i6IXdtQccDT9rMjXEP32tRgy0VMFmdkNaXoGlSSKf/1mGqLl4y4wHd86DqKbg==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/polygon-tangents@6.5.0':
+  /@turf/polygon-tangents@6.5.0:
+    resolution: {integrity: sha512-sB4/IUqJMYRQH9jVBwqS/XDitkEfbyqRy+EH/cMRJURTg78eHunvJ708x5r6umXsbiUyQU4eqgPzEylWEQiunw==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/boolean-within': 6.5.0
@@ -4842,72 +1801,96 @@
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/nearest-point': 6.5.0
+    dev: false
 
-  '@turf/polygon-to-line@6.5.0':
+  /@turf/polygon-to-line@6.5.0:
+    resolution: {integrity: sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/polygonize@6.5.0':
+  /@turf/polygonize@6.5.0:
+    resolution: {integrity: sha512-a/3GzHRaCyzg7tVYHo43QUChCspa99oK4yPqooVIwTC61npFzdrmnywMv0S+WZjHZwK37BrFJGFrZGf6ocmY5w==}
     dependencies:
       '@turf/boolean-point-in-polygon': 6.5.0
       '@turf/envelope': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/projection@6.5.0':
+  /@turf/projection@6.5.0:
+    resolution: {integrity: sha512-/Pgh9mDvQWWu8HRxqpM+tKz8OzgauV+DiOcr3FCjD6ubDnrrmMJlsf6fFJmggw93mtVPrZRL6yyi9aYCQBOIvg==}
     dependencies:
       '@turf/clone': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/random@6.5.0':
+  /@turf/random@6.5.0:
+    resolution: {integrity: sha512-8Q25gQ/XbA7HJAe+eXp4UhcXM9aOOJFaxZ02+XSNwMvY8gtWSCBLVqRcW4OhqilgZ8PeuQDWgBxeo+BIqqFWFQ==}
     dependencies:
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/rectangle-grid@6.5.0':
+  /@turf/rectangle-grid@6.5.0:
+    resolution: {integrity: sha512-yQZ/1vbW68O2KsSB3OZYK+72aWz/Adnf7m2CMKcC+aq6TwjxZjAvlbCOsNUnMAuldRUVN1ph6RXMG4e9KEvKvg==}
     dependencies:
       '@turf/boolean-intersects': 6.5.0
       '@turf/distance': 6.5.0
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/rewind@6.5.0':
+  /@turf/rewind@6.5.0:
+    resolution: {integrity: sha512-IoUAMcHWotBWYwSYuYypw/LlqZmO+wcBpn8ysrBNbazkFNkLf3btSDZMkKJO/bvOzl55imr/Xj4fi3DdsLsbzQ==}
     dependencies:
       '@turf/boolean-clockwise': 6.5.0
       '@turf/clone': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/rhumb-bearing@6.5.0':
+  /@turf/rhumb-bearing@6.5.0:
+    resolution: {integrity: sha512-jMyqiMRK4hzREjQmnLXmkJ+VTNTx1ii8vuqRwJPcTlKbNWfjDz/5JqJlb5NaFDcdMpftWovkW5GevfnuzHnOYA==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/rhumb-destination@6.5.0':
+  /@turf/rhumb-destination@6.5.0:
+    resolution: {integrity: sha512-RHNP1Oy+7xTTdRrTt375jOZeHceFbjwohPHlr9Hf68VdHHPMAWgAKqiX2YgSWDcvECVmiGaBKWus1Df+N7eE4Q==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/rhumb-distance@6.5.0':
+  /@turf/rhumb-distance@6.5.0:
+    resolution: {integrity: sha512-oKp8KFE8E4huC2Z1a1KNcFwjVOqa99isxNOwfo4g3SUABQ6NezjKDDrnvC4yI5YZ3/huDjULLBvhed45xdCrzg==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
+    dev: false
 
-  '@turf/sample@6.5.0':
+  /@turf/sample@6.5.0:
+    resolution: {integrity: sha512-kSdCwY7el15xQjnXYW520heKUrHwRvnzx8ka4eYxX9NFeOxaFITLW2G7UtXb6LJK8mmPXI8Aexv23F2ERqzGFg==}
     dependencies:
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/sector@6.5.0':
+  /@turf/sector@6.5.0:
+    resolution: {integrity: sha512-cYUOkgCTWqa23SOJBqxoFAc/yGCUsPRdn/ovbRTn1zNTm/Spmk6hVB84LCKOgHqvSF25i0d2kWqpZDzLDdAPbw==}
     dependencies:
       '@turf/circle': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/line-arc': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/shortest-path@6.5.0':
+  /@turf/shortest-path@6.5.0:
+    resolution: {integrity: sha512-4de5+G7+P4hgSoPwn+SO9QSi9HY5NEV/xRJ+cmoFVRwv2CDsuOPDheHKeuIAhKyeKDvPvPt04XYWbac4insJMg==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/bbox-polygon': 6.5.0
@@ -4918,25 +1901,33 @@
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
       '@turf/transform-scale': 6.5.0
+    dev: false
 
-  '@turf/simplify@6.5.0':
+  /@turf/simplify@6.5.0:
+    resolution: {integrity: sha512-USas3QqffPHUY184dwQdP8qsvcVH/PWBYdXY5am7YTBACaQOMAlf6AKJs9FT8jiO6fQpxfgxuEtwmox+pBtlOg==}
     dependencies:
       '@turf/clean-coords': 6.5.0
       '@turf/clone': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/square-grid@6.5.0':
+  /@turf/square-grid@6.5.0:
+    resolution: {integrity: sha512-mlR0ayUdA+L4c9h7p4k3pX6gPWHNGuZkt2c5II1TJRmhLkW2557d6b/Vjfd1z9OVaajb1HinIs1FMSAPXuuUrA==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/rectangle-grid': 6.5.0
+    dev: false
 
-  '@turf/square@6.5.0':
+  /@turf/square@6.5.0:
+    resolution: {integrity: sha512-BM2UyWDmiuHCadVhHXKIx5CQQbNCpOxB6S/aCNOCLbhCeypKX5Q0Aosc5YcmCJgkwO5BERCC6Ee7NMbNB2vHmQ==}
     dependencies:
       '@turf/distance': 6.5.0
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/standard-deviational-ellipse@6.5.0':
+  /@turf/standard-deviational-ellipse@6.5.0:
+    resolution: {integrity: sha512-02CAlz8POvGPFK2BKK8uHGUk/LXb0MK459JVjKxLC2yJYieOBTqEbjP0qaWhiBhGzIxSMaqe8WxZ0KvqdnstHA==}
     dependencies:
       '@turf/center-mean': 6.5.0
       '@turf/ellipse': 6.5.0
@@ -4944,24 +1935,32 @@
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
       '@turf/points-within-polygon': 6.5.0
+    dev: false
 
-  '@turf/tag@6.5.0':
+  /@turf/tag@6.5.0:
+    resolution: {integrity: sha512-XwlBvrOV38CQsrNfrxvBaAPBQgXMljeU0DV8ExOyGM7/hvuGHJw3y8kKnQ4lmEQcmcrycjDQhP7JqoRv8vFssg==}
     dependencies:
       '@turf/boolean-point-in-polygon': 6.5.0
       '@turf/clone': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/tesselate@6.5.0':
+  /@turf/tesselate@6.5.0:
+    resolution: {integrity: sha512-M1HXuyZFCfEIIKkglh/r5L9H3c5QTEsnMBoZOFQiRnGPGmJWcaBissGb7mTFX2+DKE7FNWXh4TDnZlaLABB0dQ==}
     dependencies:
       '@turf/helpers': 6.5.0
       earcut: 2.2.4
+    dev: false
 
-  '@turf/tin@6.5.0':
+  /@turf/tin@6.5.0:
+    resolution: {integrity: sha512-YLYikRzKisfwj7+F+Tmyy/LE3d2H7D4kajajIfc9mlik2+esG7IolsX/+oUz1biguDYsG0DUA8kVYXDkobukfg==}
     dependencies:
       '@turf/helpers': 6.5.0
+    dev: false
 
-  '@turf/transform-rotate@6.5.0':
+  /@turf/transform-rotate@6.5.0:
+    resolution: {integrity: sha512-A2Ip1v4246ZmpssxpcL0hhiVBEf4L8lGnSPWTgSv5bWBEoya2fa/0SnFX9xJgP40rMP+ZzRaCN37vLHbv1Guag==}
     dependencies:
       '@turf/centroid': 6.5.0
       '@turf/clone': 6.5.0
@@ -4971,8 +1970,10 @@
       '@turf/rhumb-bearing': 6.5.0
       '@turf/rhumb-destination': 6.5.0
       '@turf/rhumb-distance': 6.5.0
+    dev: false
 
-  '@turf/transform-scale@6.5.0':
+  /@turf/transform-scale@6.5.0:
+    resolution: {integrity: sha512-VsATGXC9rYM8qTjbQJ/P7BswKWXHdnSJ35JlV4OsZyHBMxJQHftvmZJsFbOqVtQnIQIzf2OAly6rfzVV9QLr7g==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/center': 6.5.0
@@ -4984,27 +1985,35 @@
       '@turf/rhumb-bearing': 6.5.0
       '@turf/rhumb-destination': 6.5.0
       '@turf/rhumb-distance': 6.5.0
+    dev: false
 
-  '@turf/transform-translate@6.5.0':
+  /@turf/transform-translate@6.5.0:
+    resolution: {integrity: sha512-NABLw5VdtJt/9vSstChp93pc6oel4qXEos56RBMsPlYB8hzNTEKYtC146XJvyF4twJeeYS8RVe1u7KhoFwEM5w==}
     dependencies:
       '@turf/clone': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       '@turf/meta': 6.5.0
       '@turf/rhumb-destination': 6.5.0
+    dev: false
 
-  '@turf/triangle-grid@6.5.0':
+  /@turf/triangle-grid@6.5.0:
+    resolution: {integrity: sha512-2jToUSAS1R1htq4TyLQYPTIsoy6wg3e3BQXjm2rANzw4wPQCXGOxrur1Fy9RtzwqwljlC7DF4tg0OnWr8RjmfA==}
     dependencies:
       '@turf/distance': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/intersect': 6.5.0
+    dev: false
 
-  '@turf/truncate@6.5.0':
+  /@turf/truncate@6.5.0:
+    resolution: {integrity: sha512-pFxg71pLk+eJj134Z9yUoRhIi8vqnnKvCYwdT4x/DQl/19RVdq1tV3yqOT3gcTQNfniteylL5qV1uTBDV5sgrg==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
+    dev: false
 
-  '@turf/turf@6.5.0':
+  /@turf/turf@6.5.0:
+    resolution: {integrity: sha512-ipMCPnhu59bh92MNt8+pr1VZQhHVuTMHklciQURo54heoxRzt1neNYZOBR6jdL+hNsbDGAECMuIpAutX+a3Y+w==}
     dependencies:
       '@turf/along': 6.5.0
       '@turf/angle': 6.5.0
@@ -5111,68 +2120,101 @@
       '@turf/union': 6.5.0
       '@turf/unkink-polygon': 6.5.0
       '@turf/voronoi': 6.5.0
+    dev: false
 
-  '@turf/union@6.5.0':
+  /@turf/union@6.5.0:
+    resolution: {integrity: sha512-igYWCwP/f0RFHIlC2c0SKDuM/ObBaqSljI3IdV/x71805QbIvY/BYGcJdyNcgEA6cylIGl/0VSlIbpJHZ9ldhw==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       polygon-clipping: 0.15.7
+    dev: false
 
-  '@turf/unkink-polygon@6.5.0':
+  /@turf/unkink-polygon@6.5.0:
+    resolution: {integrity: sha512-8QswkzC0UqKmN1DT6HpA9upfa1HdAA5n6bbuzHy8NJOX8oVizVAqfEPY0wqqTgboDjmBR4yyImsdPGUl3gZ8JQ==}
     dependencies:
       '@turf/area': 6.5.0
       '@turf/boolean-point-in-polygon': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
       rbush: 2.0.2
+    dev: false
 
-  '@turf/voronoi@6.5.0':
+  /@turf/voronoi@6.5.0:
+    resolution: {integrity: sha512-C/xUsywYX+7h1UyNqnydHXiun4UPjK88VDghtoRypR9cLlb7qozkiLRphQxxsCM0KxyxpVPHBVQXdAL3+Yurow==}
     dependencies:
       '@turf/helpers': 6.5.0
       '@turf/invariant': 6.5.0
       d3-voronoi: 1.1.2
+    dev: false
 
-  '@tweenjs/tween.js@25.0.0': {}
+  /@tweenjs/tween.js@25.0.0:
+    resolution: {integrity: sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==}
+    dev: false
 
-  '@types/estree@1.0.8': {}
+  /@types/estree@1.0.8:
+    resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+    dev: true
 
-  '@types/event-emitter@0.3.5': {}
+  /@types/event-emitter@0.3.5:
+    resolution: {integrity: sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==}
+    dev: false
 
-  '@types/geojson@7946.0.8': {}
+  /@types/geojson@7946.0.8:
+    resolution: {integrity: sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==}
+    dev: false
 
-  '@types/lodash-es@4.17.12':
+  /@types/lodash-es@4.17.12:
+    resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
     dependencies:
       '@types/lodash': 4.17.21
+    dev: false
 
-  '@types/lodash@4.17.21': {}
+  /@types/lodash@4.17.21:
+    resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==}
+    dev: false
 
-  '@types/node@25.0.3':
+  /@types/node@25.0.3:
+    resolution: {integrity: sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==}
     dependencies:
       undici-types: 7.16.0
 
-  '@types/readable-stream@4.0.23':
+  /@types/readable-stream@4.0.23:
+    resolution: {integrity: sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig==}
     dependencies:
       '@types/node': 25.0.3
+    dev: false
 
-  '@types/svgo@2.6.4':
+  /@types/svgo@2.6.4:
+    resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==}
     dependencies:
       '@types/node': 25.0.3
+    dev: true
 
-  '@types/trusted-types@2.0.7':
+  /@types/trusted-types@2.0.7:
+    resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+    dev: false
     optional: true
 
-  '@types/web-bluetooth@0.0.16': {}
+  /@types/web-bluetooth@0.0.16:
+    resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
+    dev: false
 
-  '@types/ws@8.18.1':
+  /@types/ws@8.18.1:
+    resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
     dependencies:
       '@types/node': 25.0.3
+    dev: false
 
-  '@uppy/companion-client@2.2.2':
+  /@uppy/companion-client@2.2.2:
+    resolution: {integrity: sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==}
     dependencies:
       '@uppy/utils': 4.1.3
       namespace-emitter: 2.0.1
+    dev: false
 
-  '@uppy/core@2.3.4':
+  /@uppy/core@2.3.4:
+    resolution: {integrity: sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==}
     dependencies:
       '@transloadit/prettier-bytes': 0.0.7
       '@uppy/store-default': 2.1.1
@@ -5182,27 +2224,46 @@
       namespace-emitter: 2.0.1
       nanoid: 3.3.11
       preact: 10.28.1
+    dev: false
 
-  '@uppy/store-default@2.1.1': {}
+  /@uppy/store-default@2.1.1:
+    resolution: {integrity: sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==}
+    dev: false
 
-  '@uppy/utils@4.1.3':
+  /@uppy/utils@4.1.3:
+    resolution: {integrity: sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==}
     dependencies:
       lodash.throttle: 4.1.1
+    dev: false
 
-  '@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4)':
+  /@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4):
+    resolution: {integrity: sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==}
+    peerDependencies:
+      '@uppy/core': ^2.3.3
     dependencies:
       '@uppy/companion-client': 2.2.2
       '@uppy/core': 2.3.4
       '@uppy/utils': 4.1.3
       nanoid: 3.3.11
+    dev: false
 
-  '@vant/popperjs@1.3.0': {}
+  /@vant/popperjs@1.3.0:
+    resolution: {integrity: sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==}
+    dev: false
 
-  '@vant/use@1.6.0(vue@3.5.26)':
+  /@vant/use@1.6.0(vue@3.5.13):
+    resolution: {integrity: sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==}
+    peerDependencies:
+      vue: ^3.0.0
     dependencies:
-      vue: 3.5.26
+      vue: 3.5.13
+    dev: false
 
-  '@videojs/http-streaming@3.17.2(video.js@8.23.4)':
+  /@videojs/http-streaming@3.17.2(video.js@8.23.4):
+    resolution: {integrity: sha512-VBQ3W4wnKnVKb/limLdtSD2rAd5cmHN70xoMf4OmuDd0t2kfJX04G+sfw6u2j8oOm2BXYM9E1f4acHruqKnM1g==}
+    engines: {node: '>=8', npm: '>=5'}
+    peerDependencies:
+      video.js: ^8.19.0
     dependencies:
       '@babel/runtime': 7.28.4
       '@videojs/vhs-utils': 4.1.1
@@ -5212,222 +2273,235 @@
       mpd-parser: 1.3.1
       mux.js: 7.1.0
       video.js: 8.23.4
+    dev: false
 
-  '@videojs/vhs-utils@4.1.1':
+  /@videojs/vhs-utils@4.1.1:
+    resolution: {integrity: sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==}
+    engines: {node: '>=8', npm: '>=5'}
     dependencies:
       '@babel/runtime': 7.28.4
       global: 4.4.0
+    dev: false
 
-  '@videojs/xhr@2.7.0':
+  /@videojs/xhr@2.7.0:
+    resolution: {integrity: sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==}
     dependencies:
       '@babel/runtime': 7.28.4
       global: 4.4.0
       is-function: 1.0.2
+    dev: false
 
-  '@vitejs/plugin-basic-ssl@1.2.0(vite@5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1))':
+  /@vitejs/plugin-basic-ssl@1.1.0(vite@5.2.12):
+    resolution: {integrity: sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==}
+    engines: {node: '>=14.6.0'}
+    peerDependencies:
+      vite: ^3.0.0 || ^4.0.0 || ^5.0.0
     dependencies:
-      vite: 5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1)
+      vite: 5.2.12(sass@1.85.1)(terser@5.31.1)
+    dev: true
 
-  '@vitejs/plugin-vue@5.2.4(vite@5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1))(vue@3.5.26)':
+  /@vitejs/plugin-vue@5.0.4(vite@5.2.12)(vue@3.5.13):
+    resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==}
+    engines: {node: ^18.0.0 || >=20.0.0}
+    peerDependencies:
+      vite: ^5.0.0
+      vue: ^3.2.25
     dependencies:
-      vite: 5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1)
-      vue: 3.5.26
+      vite: 5.2.12(sass@1.85.1)(terser@5.31.1)
+      vue: 3.5.13
+    dev: true
 
-  '@vue/compiler-core@3.5.26':
+  /@vue/compiler-core@3.4.27:
+    resolution: {integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==}
     dependencies:
       '@babel/parser': 7.28.5
-      '@vue/shared': 3.5.26
-      entities: 7.0.0
+      '@vue/shared': 3.4.27
+      entities: 4.5.0
+      estree-walker: 2.0.2
+      source-map-js: 1.2.1
+    dev: true
+
+  /@vue/compiler-core@3.5.13:
+    resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
+    dependencies:
+      '@babel/parser': 7.28.5
+      '@vue/shared': 3.5.13
+      entities: 4.5.0
       estree-walker: 2.0.2
       source-map-js: 1.2.1
 
-  '@vue/compiler-dom@3.5.26':
+  /@vue/compiler-dom@3.4.27:
+    resolution: {integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==}
     dependencies:
-      '@vue/compiler-core': 3.5.26
-      '@vue/shared': 3.5.26
+      '@vue/compiler-core': 3.4.27
+      '@vue/shared': 3.4.27
+    dev: true
 
-  '@vue/compiler-sfc@3.5.26':
+  /@vue/compiler-dom@3.5.13:
+    resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
+    dependencies:
+      '@vue/compiler-core': 3.5.13
+      '@vue/shared': 3.5.13
+
+  /@vue/compiler-sfc@3.4.27:
+    resolution: {integrity: sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==}
     dependencies:
       '@babel/parser': 7.28.5
-      '@vue/compiler-core': 3.5.26
-      '@vue/compiler-dom': 3.5.26
-      '@vue/compiler-ssr': 3.5.26
-      '@vue/shared': 3.5.26
+      '@vue/compiler-core': 3.4.27
+      '@vue/compiler-dom': 3.4.27
+      '@vue/compiler-ssr': 3.4.27
+      '@vue/shared': 3.4.27
+      estree-walker: 2.0.2
+      magic-string: 0.30.21
+      postcss: 8.5.6
+      source-map-js: 1.2.1
+    dev: true
+
+  /@vue/compiler-sfc@3.5.13:
+    resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
+    dependencies:
+      '@babel/parser': 7.28.5
+      '@vue/compiler-core': 3.5.13
+      '@vue/compiler-dom': 3.5.13
+      '@vue/compiler-ssr': 3.5.13
+      '@vue/shared': 3.5.13
       estree-walker: 2.0.2
       magic-string: 0.30.21
       postcss: 8.5.6
       source-map-js: 1.2.1
 
-  '@vue/compiler-ssr@3.5.26':
+  /@vue/compiler-ssr@3.4.27:
+    resolution: {integrity: sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==}
     dependencies:
-      '@vue/compiler-dom': 3.5.26
-      '@vue/shared': 3.5.26
+      '@vue/compiler-dom': 3.4.27
+      '@vue/shared': 3.4.27
+    dev: true
 
-  '@vue/devtools-api@6.6.4': {}
-
-  '@vue/reactivity@3.5.26':
+  /@vue/compiler-ssr@3.5.13:
+    resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
     dependencies:
-      '@vue/shared': 3.5.26
+      '@vue/compiler-dom': 3.5.13
+      '@vue/shared': 3.5.13
 
-  '@vue/runtime-core@3.5.26':
-    dependencies:
-      '@vue/reactivity': 3.5.26
-      '@vue/shared': 3.5.26
+  /@vue/devtools-api@6.6.4:
+    resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
+    dev: false
 
-  '@vue/runtime-dom@3.5.26':
+  /@vue/reactivity@3.5.13:
+    resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==}
     dependencies:
-      '@vue/reactivity': 3.5.26
-      '@vue/runtime-core': 3.5.26
-      '@vue/shared': 3.5.26
+      '@vue/shared': 3.5.13
+
+  /@vue/runtime-core@3.5.13:
+    resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==}
+    dependencies:
+      '@vue/reactivity': 3.5.13
+      '@vue/shared': 3.5.13
+
+  /@vue/runtime-dom@3.5.13:
+    resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==}
+    dependencies:
+      '@vue/reactivity': 3.5.13
+      '@vue/runtime-core': 3.5.13
+      '@vue/shared': 3.5.13
       csstype: 3.2.3
 
-  '@vue/server-renderer@3.5.26(vue@3.5.26)':
+  /@vue/server-renderer@3.5.13(vue@3.5.13):
+    resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==}
+    peerDependencies:
+      vue: 3.5.13
     dependencies:
-      '@vue/compiler-ssr': 3.5.26
-      '@vue/shared': 3.5.26
-      vue: 3.5.26
+      '@vue/compiler-ssr': 3.5.13
+      '@vue/shared': 3.5.13
+      vue: 3.5.13
 
-  '@vue/shared@3.5.26': {}
+  /@vue/shared@3.4.27:
+    resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==}
+    dev: true
 
-  '@vueuse/core@9.13.0(vue@3.5.26)':
+  /@vue/shared@3.5.13:
+    resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
+
+  /@vue/shared@3.5.26:
+    resolution: {integrity: sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==}
+    dev: false
+
+  /@vueuse/core@9.13.0(vue@3.5.13):
+    resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==}
     dependencies:
       '@types/web-bluetooth': 0.0.16
       '@vueuse/metadata': 9.13.0
-      '@vueuse/shared': 9.13.0(vue@3.5.26)
-      vue-demi: 0.14.10(vue@3.5.26)
+      '@vueuse/shared': 9.13.0(vue@3.5.13)
+      vue-demi: 0.14.10(vue@3.5.13)
     transitivePeerDependencies:
       - '@vue/composition-api'
       - vue
+    dev: false
 
-  '@vueuse/metadata@9.13.0': {}
+  /@vueuse/metadata@9.13.0:
+    resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==}
+    dev: false
 
-  '@vueuse/shared@9.13.0(vue@3.5.26)':
+  /@vueuse/shared@9.13.0(vue@3.5.13):
+    resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
     dependencies:
-      vue-demi: 0.14.10(vue@3.5.26)
+      vue-demi: 0.14.10(vue@3.5.13)
     transitivePeerDependencies:
       - '@vue/composition-api'
       - vue
+    dev: false
 
-  '@wangeditor-next/basic-modules@1.5.47(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)':
+  /@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3):
+    resolution: {integrity: sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==}
+    peerDependencies:
+      '@wangeditor/core': 1.x
+      dom7: ^3.0.0
+      lodash.throttle: ^4.1.1
+      nanoid: ^3.2.0
+      slate: ^0.72.0
+      snabbdom: ^3.1.0
     dependencies:
-      '@wangeditor-next/core': 1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
       dom7: 3.0.0
       is-url: 1.2.4
       lodash.throttle: 4.1.1
       nanoid: 3.3.11
       slate: 0.72.8
       snabbdom: 3.6.3
+    dev: false
 
-  '@wangeditor-next/code-highlight@1.3.43(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(slate@0.82.1)(snabbdom@3.6.3)':
+  /@wangeditor/code-highlight@1.0.3(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3):
+    resolution: {integrity: sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==}
+    peerDependencies:
+      '@wangeditor/core': 1.x
+      dom7: ^3.0.0
+      slate: ^0.72.0
+      snabbdom: ^3.1.0
     dependencies:
-      '@wangeditor-next/core': 1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
-      dom7: 4.0.6
-      prismjs: 1.30.0
-      slate: 0.82.1
-      snabbdom: 3.6.3
-
-  '@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)':
-    dependencies:
-      '@types/event-emitter': 0.3.5
-      '@uppy/core': 2.3.4
-      '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4)
-      dom7: 3.0.0
-      event-emitter: 0.3.5
-      html-void-elements: 3.0.0
-      i18next: 23.16.8
-      is-hotkey: 0.2.0
-      lodash.camelcase: 4.3.0
-      lodash.clonedeep: 4.5.0
-      lodash.debounce: 4.0.8
-      lodash.foreach: 4.5.0
-      lodash.throttle: 4.1.1
-      lodash.toarray: 4.4.0
-      nanoid: 3.3.11
-      scroll-into-view-if-needed: 3.1.0
-      slate: 0.72.8
-      slate-history: 0.109.0(slate@0.82.1)
-      snabbdom: 3.6.3
-
-  '@wangeditor-next/editor@5.6.49':
-    dependencies:
-      '@uppy/core': 2.3.4
-      '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4)
-      '@wangeditor-next/basic-modules': 1.5.47(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
-      '@wangeditor-next/code-highlight': 1.3.43(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(slate@0.82.1)(snabbdom@3.6.3)
-      '@wangeditor-next/core': 1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
-      '@wangeditor-next/list-module': 1.1.52(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(slate@0.82.1)(snabbdom@3.6.3)
-      '@wangeditor-next/table-module': 1.6.60(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.debounce@4.0.8)(lodash.throttle@4.1.1)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3)
-      '@wangeditor-next/upload-image-module': 1.1.50(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor-next/basic-modules@1.5.47(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.throttle@4.1.1)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.foreach@4.5.0)(slate@0.82.1)(snabbdom@3.6.3)
-      '@wangeditor-next/video-module': 1.3.51(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3)
-      dom7: 4.0.6
-      is-hotkey: 0.2.0
-      lodash.camelcase: 4.3.0
-      lodash.clonedeep: 4.5.0
-      lodash.debounce: 4.0.8
-      lodash.foreach: 4.5.0
-      lodash.throttle: 4.1.1
-      lodash.toarray: 4.4.0
-      nanoid: 5.1.6
-      slate: 0.82.1
-      snabbdom: 3.6.3
-
-  '@wangeditor-next/list-module@1.1.52(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(slate@0.82.1)(snabbdom@3.6.3)':
-    dependencies:
-      '@wangeditor-next/core': 1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
-      dom7: 4.0.6
-      slate: 0.82.1
-      snabbdom: 3.6.3
-
-  '@wangeditor-next/table-module@1.6.60(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.debounce@4.0.8)(lodash.throttle@4.1.1)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3)':
-    dependencies:
-      '@wangeditor-next/core': 1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
-      dom7: 4.0.6
-      lodash.debounce: 4.0.8
-      lodash.throttle: 4.1.1
-      nanoid: 5.1.6
-      slate: 0.82.1
-      snabbdom: 3.6.3
-
-  '@wangeditor-next/upload-image-module@1.1.50(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor-next/basic-modules@1.5.47(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.throttle@4.1.1)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(lodash.foreach@4.5.0)(slate@0.82.1)(snabbdom@3.6.3)':
-    dependencies:
-      '@uppy/core': 2.3.4
-      '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4)
-      '@wangeditor-next/basic-modules': 1.5.47(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
-      '@wangeditor-next/core': 1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
-      dom7: 4.0.6
-      lodash.foreach: 4.5.0
-      slate: 0.82.1
-      snabbdom: 3.6.3
-
-  '@wangeditor-next/video-module@1.3.51(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor-next/core@1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@4.0.6)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3))(dom7@4.0.6)(nanoid@5.1.6)(slate@0.82.1)(snabbdom@3.6.3)':
-    dependencies:
-      '@uppy/core': 2.3.4
-      '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4)
-      '@wangeditor-next/core': 1.7.45(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
-      dom7: 4.0.6
-      nanoid: 5.1.6
-      slate: 0.82.1
-      snabbdom: 3.6.3
-
-  '@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)':
-    dependencies:
-      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
-      dom7: 3.0.0
-      is-url: 1.2.4
-      lodash.throttle: 4.1.1
-      nanoid: 3.3.11
-      slate: 0.72.8
-      snabbdom: 3.6.3
-
-  '@wangeditor/code-highlight@1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3)':
-    dependencies:
-      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
       dom7: 3.0.0
       prismjs: 1.30.0
       slate: 0.72.8
       snabbdom: 3.6.3
+    dev: false
 
-  '@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)':
+  /@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3):
+    resolution: {integrity: sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==}
+    peerDependencies:
+      '@uppy/core': ^2.1.1
+      '@uppy/xhr-upload': ^2.0.3
+      dom7: ^3.0.0
+      is-hotkey: ^0.2.0
+      lodash.camelcase: ^4.3.0
+      lodash.clonedeep: ^4.5.0
+      lodash.debounce: ^4.0.8
+      lodash.foreach: ^4.5.0
+      lodash.isequal: ^4.5.0
+      lodash.throttle: ^4.1.1
+      lodash.toarray: ^4.4.0
+      nanoid: ^3.2.0
+      slate: ^0.72.0
+      snabbdom: ^3.1.0
     dependencies:
       '@types/event-emitter': 0.3.5
       '@uppy/core': 2.3.4
@@ -5449,23 +2523,30 @@
       slate: 0.72.8
       slate-history: 0.66.0(slate@0.72.8)
       snabbdom: 3.6.3
+    dev: false
 
-  '@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.26)':
+  /@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.13):
+    resolution: {integrity: sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==}
+    peerDependencies:
+      '@wangeditor/editor': '>=5.1.0'
+      vue: ^3.0.5
     dependencies:
       '@wangeditor/editor': 5.1.23
-      vue: 3.5.26
+      vue: 3.5.13
+    dev: false
 
-  '@wangeditor/editor@5.1.23':
+  /@wangeditor/editor@5.1.23:
+    resolution: {integrity: sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==}
     dependencies:
       '@uppy/core': 2.3.4
       '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4)
-      '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
-      '@wangeditor/code-highlight': 1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3)
-      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
-      '@wangeditor/list-module': 1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3)
-      '@wangeditor/table-module': 1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
-      '@wangeditor/upload-image-module': 1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.3)
-      '@wangeditor/video-module': 1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/code-highlight': 1.0.3(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/list-module': 1.0.5(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/table-module': 1.1.4(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/upload-image-module': 1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/basic-modules@1.1.7)(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/video-module': 1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/core@1.1.19)(dom7@3.0.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
       dom7: 3.0.0
       is-hotkey: 0.2.0
       lodash.camelcase: 4.3.0
@@ -5478,98 +2559,202 @@
       nanoid: 3.3.11
       slate: 0.72.8
       snabbdom: 3.6.3
+    dev: false
 
-  '@wangeditor/list-module@1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3)':
+  /@wangeditor/list-module@1.0.5(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3):
+    resolution: {integrity: sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==}
+    peerDependencies:
+      '@wangeditor/core': 1.x
+      dom7: ^3.0.0
+      slate: ^0.72.0
+      snabbdom: ^3.1.0
     dependencies:
-      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
       dom7: 3.0.0
       slate: 0.72.8
       snabbdom: 3.6.3
+    dev: false
 
-  '@wangeditor/table-module@1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)':
+  /@wangeditor/table-module@1.1.4(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3):
+    resolution: {integrity: sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==}
+    peerDependencies:
+      '@wangeditor/core': 1.x
+      dom7: ^3.0.0
+      lodash.isequal: ^4.5.0
+      lodash.throttle: ^4.1.1
+      nanoid: ^3.2.0
+      slate: ^0.72.0
+      snabbdom: ^3.1.0
     dependencies:
-      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
       dom7: 3.0.0
       lodash.isequal: 4.5.0
       lodash.throttle: 4.1.1
       nanoid: 3.3.11
       slate: 0.72.8
       snabbdom: 3.6.3
+    dev: false
 
-  '@wangeditor/upload-image-module@1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.3)':
+  /@wangeditor/upload-image-module@1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/basic-modules@1.1.7)(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.3):
+    resolution: {integrity: sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==}
+    peerDependencies:
+      '@uppy/core': ^2.0.3
+      '@uppy/xhr-upload': ^2.0.3
+      '@wangeditor/basic-modules': 1.x
+      '@wangeditor/core': 1.x
+      dom7: ^3.0.0
+      lodash.foreach: ^4.5.0
+      slate: ^0.72.0
+      snabbdom: ^3.1.0
     dependencies:
       '@uppy/core': 2.3.4
       '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4)
-      '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
-      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
       dom7: 3.0.0
       lodash.foreach: 4.5.0
       slate: 0.72.8
       snabbdom: 3.6.3
+    dev: false
 
-  '@wangeditor/video-module@1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)':
+  /@wangeditor/video-module@1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/core@1.1.19)(dom7@3.0.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3):
+    resolution: {integrity: sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==}
+    peerDependencies:
+      '@uppy/core': ^2.1.4
+      '@uppy/xhr-upload': ^2.0.7
+      '@wangeditor/core': 1.x
+      dom7: ^3.0.0
+      nanoid: ^3.2.0
+      slate: ^0.72.0
+      snabbdom: ^3.1.0
     dependencies:
       '@uppy/core': 2.3.4
       '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4)
-      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
+      '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)
       dom7: 3.0.0
       nanoid: 3.3.11
       slate: 0.72.8
       snabbdom: 3.6.3
+    dev: false
 
-  '@xmldom/xmldom@0.8.11': {}
+  /@xmldom/xmldom@0.8.11:
+    resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==}
+    engines: {node: '>=10.0.0'}
+    dev: false
 
-  '@zip.js/zip.js@2.7.34': {}
+  /@zip.js/zip.js@2.7.34:
+    resolution: {integrity: sha512-SWAK+hLYKRHswhakNUirPYrdsflSFOxykUckfbWDcPvP8tjLuV5EWyd3GHV0hVaJLDps40jJnv8yQVDbWnQDfg==}
+    engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=16.5.0'}
+    dev: false
 
-  abort-controller@3.0.0:
+  /abort-controller@3.0.0:
+    resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
+    engines: {node: '>=6.5'}
     dependencies:
       event-target-shim: 5.0.1
+    dev: false
 
-  acorn@8.15.0: {}
+  /acorn@8.15.0:
+    resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
+    engines: {node: '>=0.4.0'}
+    hasBin: true
+    dev: true
 
-  adler-32@1.3.1: {}
+  /adler-32@1.3.1:
+    resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==}
+    engines: {node: '>=0.8'}
+    dev: false
 
-  aes-decrypter@4.0.2:
+  /aes-decrypter@4.0.2:
+    resolution: {integrity: sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==}
     dependencies:
       '@babel/runtime': 7.28.4
       '@videojs/vhs-utils': 4.1.1
       global: 4.4.0
       pkcs7: 1.0.4
+    dev: false
 
-  animate.css@4.1.1: {}
+  /animate.css@4.1.1:
+    resolution: {integrity: sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==}
+    dev: false
 
-  ansi-align@3.0.1:
+  /ansi-align@3.0.1:
+    resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
     dependencies:
       string-width: 4.2.3
+    dev: true
 
-  ansi-regex@2.1.1: {}
+  /ansi-regex@2.1.1:
+    resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  ansi-regex@5.0.1: {}
+  /ansi-regex@5.0.1:
+    resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+    engines: {node: '>=8'}
+    dev: true
 
-  ansi-regex@6.2.2: {}
+  /ansi-regex@6.2.2:
+    resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
+    engines: {node: '>=12'}
+    dev: true
 
-  ansi-styles@2.2.1: {}
+  /ansi-styles@2.2.1:
+    resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  ansi-styles@4.3.0:
+  /ansi-styles@4.3.0:
+    resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+    engines: {node: '>=8'}
     dependencies:
       color-convert: 2.0.1
+    dev: true
 
-  ansi-styles@6.2.3: {}
+  /ansi-styles@6.2.3:
+    resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
+    engines: {node: '>=12'}
+    dev: true
 
-  arr-diff@4.0.0: {}
+  /anymatch@3.1.3:
+    resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+    engines: {node: '>= 8'}
+    dependencies:
+      normalize-path: 3.0.0
+      picomatch: 2.3.1
+    dev: true
 
-  arr-flatten@1.1.0: {}
+  /arr-diff@4.0.0:
+    resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  arr-union@3.1.0: {}
+  /arr-flatten@1.1.0:
+    resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  array-buffer-byte-length@1.0.2:
+  /arr-union@3.1.0:
+    resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /array-buffer-byte-length@1.0.2:
+    resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       is-array-buffer: 3.0.5
+    dev: true
 
-  array-unique@0.3.2: {}
+  /array-unique@0.3.2:
+    resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  arraybuffer.prototype.slice@1.0.4:
+  /arraybuffer.prototype.slice@1.0.4:
+    resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       array-buffer-byte-length: 1.0.2
       call-bind: 1.0.8
@@ -5578,49 +2763,103 @@
       es-errors: 1.3.0
       get-intrinsic: 1.3.0
       is-array-buffer: 3.0.5
+    dev: true
 
-  assign-symbols@1.0.0: {}
+  /assign-symbols@1.0.0:
+    resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  async-function@1.0.0: {}
+  /async-function@1.0.0:
+    resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
+    engines: {node: '>= 0.4'}
+    dev: true
 
-  async-validator@4.2.5: {}
+  /async-validator@4.2.5:
+    resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
+    dev: false
 
-  asynckit@0.4.0: {}
+  /asynckit@0.4.0:
+    resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+    dev: false
 
-  at-least-node@1.0.0: {}
+  /at-least-node@1.0.0:
+    resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
+    engines: {node: '>= 4.0.0'}
+    dev: false
 
-  atob@2.1.2: {}
+  /atob@2.1.2:
+    resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
+    engines: {node: '>= 4.5.0'}
+    hasBin: true
+    dev: true
 
-  autolinker@4.1.5:
+  /autolinker@4.1.5:
+    resolution: {integrity: sha512-vEfYZPmvVOIuE567XBVCsx8SBgOYtjB2+S1iAaJ+HgH+DNjAcrHem2hmAeC9yaNGWayicv4yR+9UaJlkF3pvtw==}
+    engines: {pnpm: '>=10.10.0'}
     dependencies:
       tslib: 2.8.1
+    dev: false
 
-  available-typed-arrays@1.0.7:
+  /available-typed-arrays@1.0.7:
+    resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       possible-typed-array-names: 1.1.0
+    dev: true
 
-  avue-plugin-ueditor@1.0.4(axios@1.13.2)(vue@3.5.26):
+  /avue-plugin-ueditor@1.0.4(axios@1.8.3)(vue@3.5.13):
+    resolution: {integrity: sha512-fFOFsduZI9yK3LE7FpLMqqLJoWp4xGTDj08wmSS2CkBL6H1+P8+7u9lEcvRejnvytUBhv87xKNhHdMuWru1Umg==}
+    peerDependencies:
+      axios: '>=0.18.0'
+      vue: '>=3.2.0'
     dependencies:
       '@wangeditor/editor': 5.1.23
-      '@wangeditor/editor-for-vue': 5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.26)
-      axios: 1.13.2
-      vue: 3.5.26
+      '@wangeditor/editor-for-vue': 5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.13)
+      axios: 1.8.3
+      vue: 3.5.13
+    dev: false
 
-  axios@1.13.2:
+  /axios@1.8.3:
+    resolution: {integrity: sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==}
     dependencies:
       follow-redirects: 1.15.11
       form-data: 4.0.5
       proxy-from-env: 1.1.0
     transitivePeerDependencies:
       - debug
+    dev: false
 
-  b4a@1.7.3: {}
+  /b4a@1.7.3:
+    resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==}
+    peerDependencies:
+      react-native-b4a: '*'
+    peerDependenciesMeta:
+      react-native-b4a:
+        optional: true
+    dev: true
 
-  balanced-match@1.0.2: {}
+  /balanced-match@1.0.2:
+    resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+    dev: true
 
-  bare-events@2.8.2: {}
+  /bare-events@2.8.2:
+    resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==}
+    peerDependencies:
+      bare-abort-controller: '*'
+    peerDependenciesMeta:
+      bare-abort-controller:
+        optional: true
+    dev: true
 
-  bare-fs@4.5.2:
+  /bare-fs@4.5.2:
+    resolution: {integrity: sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==}
+    engines: {bare: '>=1.16.0'}
+    peerDependencies:
+      bare-buffer: '*'
+    peerDependenciesMeta:
+      bare-buffer:
+        optional: true
     dependencies:
       bare-events: 2.8.2
       bare-path: 3.0.0
@@ -5630,34 +2869,54 @@
     transitivePeerDependencies:
       - bare-abort-controller
       - react-native-b4a
+    dev: true
     optional: true
 
-  bare-os@3.6.2:
+  /bare-os@3.6.2:
+    resolution: {integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==}
+    engines: {bare: '>=1.14.0'}
+    dev: true
     optional: true
 
-  bare-path@3.0.0:
+  /bare-path@3.0.0:
+    resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==}
     dependencies:
       bare-os: 3.6.2
+    dev: true
     optional: true
 
-  bare-stream@2.7.0(bare-events@2.8.2):
+  /bare-stream@2.7.0(bare-events@2.8.2):
+    resolution: {integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==}
+    peerDependencies:
+      bare-buffer: '*'
+      bare-events: '*'
+    peerDependenciesMeta:
+      bare-buffer:
+        optional: true
+      bare-events:
+        optional: true
     dependencies:
-      streamx: 2.23.0
-    optionalDependencies:
       bare-events: 2.8.2
+      streamx: 2.23.0
     transitivePeerDependencies:
       - bare-abort-controller
       - react-native-b4a
+    dev: true
     optional: true
 
-  bare-url@2.3.2:
+  /bare-url@2.3.2:
+    resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==}
     dependencies:
       bare-path: 3.0.0
+    dev: true
     optional: true
 
-  base64-js@1.5.1: {}
+  /base64-js@1.5.1:
+    resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
 
-  base@0.11.2:
+  /base@0.11.2:
+    resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       cache-base: 1.0.1
       class-utils: 0.3.6
@@ -5666,35 +2925,57 @@
       isobject: 3.0.1
       mixin-deep: 1.3.2
       pascalcase: 0.1.1
+    dev: true
 
-  big.js@5.2.2: {}
+  /big.js@5.2.2:
+    resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
+    dev: true
 
-  bitmap-sdf@1.0.4: {}
+  /binary-extensions@2.3.0:
+    resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+    engines: {node: '>=8'}
+    dev: true
 
-  bl@4.1.0:
+  /bitmap-sdf@1.0.4:
+    resolution: {integrity: sha512-1G3U4n5JE6RAiALMxu0p1XmeZkTeCwGKykzsLTCqVzfSDaN6S7fKnkIkfejogz+iwqBWc0UYAIKnKHNN7pSfDg==}
+    dev: false
+
+  /bl@4.1.0:
+    resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
     dependencies:
       buffer: 5.7.1
       inherits: 2.0.4
       readable-stream: 3.6.2
+    dev: true
 
-  bl@5.1.0:
+  /bl@5.1.0:
+    resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==}
     dependencies:
       buffer: 6.0.3
       inherits: 2.0.4
       readable-stream: 3.6.2
+    dev: true
 
-  bl@6.1.6:
+  /bl@6.1.6:
+    resolution: {integrity: sha512-jLsPgN/YSvPUg9UX0Kd73CXpm2Psg9FxMeCSXnk3WBO3CMT10JMwijubhGfHCnFu6TPn1ei3b975dxv7K2pWVg==}
     dependencies:
       '@types/readable-stream': 4.0.23
       buffer: 6.0.3
       inherits: 2.0.4
       readable-stream: 4.7.0
+    dev: false
 
-  bluebird@3.7.2: {}
+  /bluebird@3.7.2:
+    resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
+    dev: true
 
-  boolbase@1.0.0: {}
+  /boolbase@1.0.0:
+    resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+    dev: true
 
-  boxen@7.1.1:
+  /boxen@7.1.1:
+    resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==}
+    engines: {node: '>=14.16'}
     dependencies:
       ansi-align: 3.0.1
       camelcase: 7.0.1
@@ -5704,8 +2985,10 @@
       type-fest: 2.19.0
       widest-line: 4.0.1
       wrap-ansi: 8.1.0
+    dev: true
 
-  bpmn-js@11.5.0:
+  /bpmn-js@11.5.0:
+    resolution: {integrity: sha512-Bdj53UvfiDtGE1wmiBmpgjl5RMLhCGV/C841dyC+t4kBHj7vApAeeHs2Qiycj390HO4B2U8UDROLT7yjdXEEUA==}
     dependencies:
       bpmn-moddle: 8.1.0
       diagram-js: 11.13.1
@@ -5716,18 +2999,25 @@
       min-dom: 4.2.1
       object-refs: 0.3.0
       tiny-svg: 3.1.3
+    dev: false
 
-  bpmn-moddle@8.1.0:
+  /bpmn-moddle@8.1.0:
+    resolution: {integrity: sha512-yI5OAFfYVJwViKTsTsonVfCBPtB3MlefADUORwNIxxBOMp21vnoxuxsdgUWlPH/dvAEZh/+mr8UtqOBNu8NC5Q==}
     dependencies:
       min-dash: 4.2.3
       moddle: 6.2.3
       moddle-xml: 10.1.0
+    dev: false
 
-  brace-expansion@2.0.2:
+  /brace-expansion@2.0.2:
+    resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
     dependencies:
       balanced-match: 1.0.2
+    dev: true
 
-  braces@2.3.2:
+  /braces@2.3.2:
+    resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       arr-flatten: 1.1.0
       array-unique: 0.3.2
@@ -5741,31 +3031,34 @@
       to-regex: 3.0.2
     transitivePeerDependencies:
       - supports-color
+    dev: true
 
-  braces@3.0.3:
+  /braces@3.0.3:
+    resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+    engines: {node: '>=8'}
     dependencies:
       fill-range: 7.1.1
+    dev: true
 
-  broker-factory@3.1.11:
+  /buffer-from@1.1.2:
+    resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+  /buffer@5.7.1:
+    resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
     dependencies:
-      '@babel/runtime': 7.28.4
-      fast-unique-numbers: 9.0.24
-      tslib: 2.8.1
-      worker-factory: 7.0.46
+      base64-js: 1.5.1
+      ieee754: 1.2.1
+    dev: true
 
-  buffer-from@1.1.2: {}
-
-  buffer@5.7.1:
+  /buffer@6.0.3:
+    resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
     dependencies:
       base64-js: 1.5.1
       ieee754: 1.2.1
 
-  buffer@6.0.3:
-    dependencies:
-      base64-js: 1.5.1
-      ieee754: 1.2.1
-
-  cache-base@1.0.1:
+  /cache-base@1.0.1:
+    resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       collection-visit: 1.0.0
       component-emitter: 1.3.1
@@ -5776,237 +3069,422 @@
       to-object-path: 0.3.0
       union-value: 1.0.1
       unset-value: 1.0.0
+    dev: true
 
-  call-bind-apply-helpers@1.0.2:
+  /call-bind-apply-helpers@1.0.2:
+    resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       es-errors: 1.3.0
       function-bind: 1.1.2
 
-  call-bind@1.0.8:
+  /call-bind@1.0.8:
+    resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind-apply-helpers: 1.0.2
       es-define-property: 1.0.1
       get-intrinsic: 1.3.0
       set-function-length: 1.2.2
 
-  call-bound@1.0.4:
+  /call-bound@1.0.4:
+    resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind-apply-helpers: 1.0.2
       get-intrinsic: 1.3.0
 
-  camelcase@7.0.1: {}
+  /camelcase@7.0.1:
+    resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
+    engines: {node: '>=14.16'}
+    dev: true
 
-  cesium@1.126.0:
+  /cesium@1.126.0:
+    resolution: {integrity: sha512-29Cy6eq9NzTbQUaOXQEnVJyYoHCeizrBTbbB76OClI5+FNq9saUUx+iQXg/J6r8vX+KWt6oD/lVpZ0QMcvAgog==}
+    engines: {node: '>=18.18.0'}
     dependencies:
       '@cesium/engine': 14.0.0
       '@cesium/widgets': 10.2.0
+    dev: false
 
-  cfb@1.2.2:
+  /cfb@1.2.2:
+    resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==}
+    engines: {node: '>=0.8'}
     dependencies:
       adler-32: 1.3.1
       crc-32: 1.2.2
+    dev: false
 
-  chalk@1.1.3:
+  /chalk@1.1.3:
+    resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       ansi-styles: 2.2.1
       escape-string-regexp: 1.0.5
       has-ansi: 2.0.0
       strip-ansi: 3.0.1
       supports-color: 2.0.0
+    dev: true
 
-  chalk@4.1.2:
+  /chalk@4.1.2:
+    resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+    engines: {node: '>=10'}
     dependencies:
       ansi-styles: 4.3.0
       supports-color: 7.2.0
+    dev: true
 
-  chalk@5.6.2: {}
+  /chalk@5.6.2:
+    resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
+    engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+    dev: true
 
-  chokidar@4.0.3:
+  /chokidar@3.6.0:
+    resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+    engines: {node: '>= 8.10.0'}
+    dependencies:
+      anymatch: 3.1.3
+      braces: 3.0.3
+      glob-parent: 5.1.2
+      is-binary-path: 2.1.0
+      is-glob: 4.0.3
+      normalize-path: 3.0.0
+      readdirp: 3.6.0
+    optionalDependencies:
+      fsevents: 2.3.3
+    dev: true
+
+  /chokidar@4.0.3:
+    resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
+    engines: {node: '>= 14.16.0'}
     dependencies:
       readdirp: 4.1.2
+    dev: true
 
-  chownr@1.1.4: {}
+  /chownr@1.1.4:
+    resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
+    dev: true
 
-  class-utils@0.3.6:
+  /class-utils@0.3.6:
+    resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       arr-union: 3.1.0
       define-property: 0.2.5
       isobject: 3.0.1
       static-extend: 0.1.2
+    dev: true
 
-  cli-boxes@3.0.0: {}
+  /cli-boxes@3.0.0:
+    resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
+    engines: {node: '>=10'}
+    dev: true
 
-  cli-cursor@4.0.0:
+  /cli-cursor@4.0.0:
+    resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
+    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
     dependencies:
       restore-cursor: 4.0.0
+    dev: true
 
-  cli-spinners@2.9.2: {}
+  /cli-spinners@2.9.2:
+    resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+    engines: {node: '>=6'}
+    dev: true
 
-  clipboard@2.0.11:
+  /clipboard@2.0.11:
+    resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==}
     dependencies:
       good-listener: 1.2.2
       select: 1.1.2
       tiny-emitter: 2.1.0
+    dev: false
 
-  clone@2.1.2: {}
+  /clone@2.1.2:
+    resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
+    engines: {node: '>=0.8'}
+    dev: true
 
-  clsx@1.2.1: {}
+  /clsx@1.2.1:
+    resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==}
+    engines: {node: '>=6'}
+    dev: false
 
-  codemirror@5.65.20: {}
+  /codemirror@5.65.16:
+    resolution: {integrity: sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg==}
+    dev: false
 
-  codepage@1.15.0: {}
+  /codepage@1.15.0:
+    resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==}
+    engines: {node: '>=0.8'}
+    dev: false
 
-  collection-visit@1.0.0:
+  /collection-visit@1.0.0:
+    resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       map-visit: 1.0.0
       object-visit: 1.0.1
+    dev: true
 
-  color-convert@2.0.1:
+  /color-convert@2.0.1:
+    resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+    engines: {node: '>=7.0.0'}
     dependencies:
       color-name: 1.1.4
+    dev: true
 
-  color-name@1.1.4: {}
+  /color-name@1.1.4:
+    resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+    dev: true
 
-  color-string@1.9.1:
+  /color-string@1.9.1:
+    resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
     dependencies:
       color-name: 1.1.4
       simple-swizzle: 0.2.4
+    dev: true
 
-  color@4.2.3:
+  /color@4.2.3:
+    resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
+    engines: {node: '>=12.5.0'}
     dependencies:
       color-convert: 2.0.1
       color-string: 1.9.1
+    dev: true
 
-  combined-stream@1.0.8:
+  /combined-stream@1.0.8:
+    resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+    engines: {node: '>= 0.8'}
     dependencies:
       delayed-stream: 1.0.0
+    dev: false
 
-  commander@2.20.3: {}
+  /commander@2.20.3:
+    resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
 
-  commander@7.2.0: {}
+  /commander@7.2.0:
+    resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+    engines: {node: '>= 10'}
+    dev: true
 
-  commist@3.2.0: {}
+  /commist@3.2.0:
+    resolution: {integrity: sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==}
+    dev: false
 
-  complex.js@2.4.3: {}
+  /complex.js@2.4.3:
+    resolution: {integrity: sha512-UrQVSUur14tNX6tiP4y8T4w4FeJAX3bi2cIv0pu/DTLFNxoq7z2Yh83Vfzztj6Px3X/lubqQ9IrPp7Bpn6p4MQ==}
+    dev: false
 
-  component-emitter@1.3.1: {}
+  /component-emitter@1.3.1:
+    resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==}
+    dev: true
 
-  component-event@0.2.1: {}
+  /component-event@0.2.1:
+    resolution: {integrity: sha512-wGA++isMqiDq1jPYeyv2as/Bt/u+3iLW0rEa+8NQ82jAv3TgqMiCM+B2SaBdn2DfLilLjjq736YcezihRYhfxw==}
+    dev: false
 
-  compute-scroll-into-view@1.0.20: {}
+  /compute-scroll-into-view@1.0.20:
+    resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==}
+    dev: false
 
-  compute-scroll-into-view@3.1.1: {}
-
-  concat-stream@2.0.0:
+  /concat-stream@2.0.0:
+    resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==}
+    engines: {'0': node >= 6.0}
     dependencies:
       buffer-from: 1.1.2
       inherits: 2.0.4
       readable-stream: 3.6.2
       typedarray: 0.0.6
+    dev: false
 
-  concaveman@2.0.0:
+  /concaveman@2.0.0:
+    resolution: {integrity: sha512-3a9C//4G44/boNehBPZMRh8XxrwBvTXlhENUim+GMm207WoDie/Vq89U5lkhLn3kKA+vxwmwfdQPWIRwjQWoLA==}
     dependencies:
       point-in-polygon: 1.1.0
       rbush: 4.0.1
       robust-predicates: 3.0.2
       tinyqueue: 3.0.0
+    dev: false
 
-  confbox@0.1.8: {}
+  /confbox@0.1.8:
+    resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
+    dev: true
 
-  copy-descriptor@0.1.1: {}
+  /copy-descriptor@0.1.1:
+    resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  core-util-is@1.0.3: {}
+  /core-util-is@1.0.3:
+    resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+    dev: false
 
-  cors@2.8.5:
+  /cors@2.8.5:
+    resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
+    engines: {node: '>= 0.10'}
     dependencies:
       object-assign: 4.1.1
       vary: 1.1.2
+    dev: true
 
-  countup.js@1.9.3: {}
+  /countup.js@1.9.3:
+    resolution: {integrity: sha512-UHf2P/mFKaESqdPq+UdBJm/1y8lYdlcDd0nTZHNC8cxWoJwZr1Eldm1PpWui446vDl5Pd8PtRYkr3q6K4+Qa5A==}
+    dev: false
 
-  countup.js@2.9.0: {}
+  /countup.js@2.9.0:
+    resolution: {integrity: sha512-llqrvyXztRFPp6+i8jx25phHWcVWhrHO4Nlt0uAOSKHB8778zzQswa4MU3qKBvkXfJKftRYFJuVHez67lyKdHg==}
+    dev: false
 
-  crc-32@1.2.2: {}
+  /crc-32@1.2.2:
+    resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
+    engines: {node: '>=0.8'}
+    hasBin: true
+    dev: false
 
-  cross-spawn@7.0.6:
+  /cross-spawn@7.0.6:
+    resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+    engines: {node: '>= 8'}
     dependencies:
       path-key: 3.1.1
       shebang-command: 2.0.0
       which: 2.0.2
+    dev: true
 
-  crypto-js@4.2.0: {}
+  /crypto-js@4.1.1:
+    resolution: {integrity: sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==}
+    dev: false
 
-  css-select@4.3.0:
+  /css-select@4.3.0:
+    resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
     dependencies:
       boolbase: 1.0.0
       css-what: 6.2.2
       domhandler: 4.3.1
       domutils: 2.8.0
       nth-check: 2.1.1
+    dev: true
 
-  css-tree@1.1.3:
+  /css-tree@1.1.3:
+    resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
+    engines: {node: '>=8.0.0'}
     dependencies:
       mdn-data: 2.0.14
       source-map: 0.6.1
+    dev: true
 
-  css-what@6.2.2: {}
+  /css-what@6.2.2:
+    resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
+    engines: {node: '>= 6'}
+    dev: true
 
-  csso@4.2.0:
+  /csso@4.2.0:
+    resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
+    engines: {node: '>=8.0.0'}
     dependencies:
       css-tree: 1.1.3
+    dev: true
 
-  csstype@3.2.3: {}
+  /csstype@3.2.3:
+    resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
 
-  d3-array@1.2.4: {}
+  /d3-array@1.2.4:
+    resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==}
+    dev: false
 
-  d3-geo@1.7.1:
+  /d3-geo@1.7.1:
+    resolution: {integrity: sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==}
     dependencies:
       d3-array: 1.2.4
+    dev: false
 
-  d3-voronoi@1.1.2: {}
+  /d3-voronoi@1.1.2:
+    resolution: {integrity: sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==}
+    dev: false
 
-  d@1.0.2:
+  /d@1.0.2:
+    resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==}
+    engines: {node: '>=0.12'}
     dependencies:
       es5-ext: 0.10.64
       type: 2.7.3
+    dev: false
 
-  data-view-buffer@1.0.2:
+  /data-view-buffer@1.0.2:
+    resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       es-errors: 1.3.0
       is-data-view: 1.0.2
+    dev: true
 
-  data-view-byte-length@1.0.2:
+  /data-view-byte-length@1.0.2:
+    resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       es-errors: 1.3.0
       is-data-view: 1.0.2
+    dev: true
 
-  data-view-byte-offset@1.0.1:
+  /data-view-byte-offset@1.0.1:
+    resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       es-errors: 1.3.0
       is-data-view: 1.0.2
+    dev: true
 
-  dayjs@1.11.19: {}
+  /dayjs@1.10.6:
+    resolution: {integrity: sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw==}
+    dev: false
 
-  debug@2.6.9:
+  /dayjs@1.11.19:
+    resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==}
+    dev: false
+
+  /debug@2.6.9:
+    resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+    peerDependencies:
+      supports-color: '*'
+    peerDependenciesMeta:
+      supports-color:
+        optional: true
     dependencies:
       ms: 2.0.0
 
-  debug@4.4.3:
+  /debug@4.4.3:
+    resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+    engines: {node: '>=6.0'}
+    peerDependencies:
+      supports-color: '*'
+    peerDependenciesMeta:
+      supports-color:
+        optional: true
     dependencies:
       ms: 2.1.3
 
-  decimal.js@10.6.0: {}
+  /decimal.js@10.4.3:
+    resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
+    dev: false
 
-  decode-uri-component@0.2.2: {}
+  /decode-uri-component@0.2.2:
+    resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
+    engines: {node: '>=0.10'}
+    dev: true
 
-  decompress-response@6.0.0:
+  /decompress-response@6.0.0:
+    resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
+    engines: {node: '>=10'}
     dependencies:
       mimic-response: 3.1.0
+    dev: true
 
-  deep-equal@1.1.2:
+  /deep-equal@1.1.2:
+    resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       is-arguments: 1.2.0
       is-date-object: 1.1.0
@@ -6014,56 +3492,98 @@
       object-is: 1.1.6
       object-keys: 1.1.1
       regexp.prototype.flags: 1.5.4
+    dev: false
 
-  deep-extend@0.6.0: {}
+  /deep-extend@0.6.0:
+    resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
+    engines: {node: '>=4.0.0'}
+    dev: true
 
-  define-data-property@1.1.4:
+  /define-data-property@1.1.4:
+    resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+    engines: {node: '>= 0.4'}
     dependencies:
       es-define-property: 1.0.1
       es-errors: 1.3.0
       gopd: 1.2.0
 
-  define-properties@1.2.1:
+  /define-properties@1.2.1:
+    resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       define-data-property: 1.1.4
       has-property-descriptors: 1.0.2
       object-keys: 1.1.1
 
-  define-property@0.2.5:
+  /define-property@0.2.5:
+    resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       is-descriptor: 0.1.7
+    dev: true
 
-  define-property@1.0.0:
+  /define-property@1.0.0:
+    resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       is-descriptor: 1.0.3
+    dev: true
 
-  define-property@2.0.2:
+  /define-property@2.0.2:
+    resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       is-descriptor: 1.0.3
       isobject: 3.0.1
+    dev: true
 
-  delayed-stream@1.0.0: {}
+  /delayed-stream@1.0.0:
+    resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+    engines: {node: '>=0.4.0'}
+    dev: false
 
-  delegate@3.2.0: {}
+  /delegate@3.2.0:
+    resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==}
+    dev: false
 
-  density-clustering@1.3.0: {}
+  /density-clustering@1.3.0:
+    resolution: {integrity: sha512-icpmBubVTwLnsaor9qH/4tG5+7+f61VcqMN3V3pm9sxxSCt2Jcs0zWOgwZW9ARJYaKD3FumIgHiMOcIMRRAzFQ==}
+    dev: false
 
-  depd@2.0.0: {}
+  /depd@2.0.0:
+    resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+    engines: {node: '>= 0.8'}
+    dev: false
 
-  destroy@1.2.0: {}
+  /destroy@1.2.0:
+    resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+    engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+    dev: false
 
-  detect-libc@1.0.3:
+  /detect-libc@1.0.3:
+    resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
+    engines: {node: '>=0.10'}
+    hasBin: true
+    dev: true
     optional: true
 
-  detect-libc@2.1.2: {}
+  /detect-libc@2.1.2:
+    resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+    engines: {node: '>=8'}
+    dev: true
 
-  diagram-js-direct-editing@2.1.2(diagram-js@11.13.1):
+  /diagram-js-direct-editing@2.1.2(diagram-js@11.13.1):
+    resolution: {integrity: sha512-VpccLAnLqLF1cp3fk363QUbRVTd/qTcj2oOb+IqgcmOiWszJp7J9Ta6y5GjUvw48hDZpzCatlmWwA4CJ3MaYGQ==}
+    peerDependencies:
+      diagram-js: '*'
     dependencies:
       diagram-js: 11.13.1
       min-dash: 4.2.3
       min-dom: 4.2.1
+    dev: false
 
-  diagram-js@11.13.1:
+  /diagram-js@11.13.1:
+    resolution: {integrity: sha512-6kO0rBN6aBIQiMELfv1oX2Ohes/brlIPuOVZUYAioeWM0EyuazhAXgHeq8iKFt29daU9NGRr4n78esGx8QjtjQ==}
     dependencies:
       '@bpmn-io/diagram-js-ui': 0.2.3
       clsx: 1.2.1
@@ -6075,91 +3595,134 @@
       object-refs: 0.3.0
       path-intersection: 2.2.1
       tiny-svg: 3.1.3
+    dev: false
 
-  didi@9.0.2: {}
+  /didi@9.0.2:
+    resolution: {integrity: sha512-q2+aj+lnJcUweV7A9pdUrwFr4LHVmRPwTmQLtHPFz4aT7IBoryN6Iy+jmFku+oIzr5ebBkvtBCOb87+dJhb7bg==}
+    dev: false
 
-  disable-devtool@0.3.9: {}
+  /disable-devtool@0.3.8:
+    resolution: {integrity: sha512-spwifiBbcgDTVEdzoWyH3NjZ1he/OgJmUNXvMgEffJ8Fh2B6mEJjCCEV25wlJSyNXEdGyzKFFRXh4kVDRK/wCg==}
+    dev: false
 
-  dom-serializer@0.2.2:
+  /dom-serializer@0.2.2:
+    resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==}
     dependencies:
       domelementtype: 2.3.0
       entities: 2.2.0
+    dev: true
 
-  dom-serializer@1.4.1:
+  /dom-serializer@1.4.1:
+    resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
     dependencies:
       domelementtype: 2.3.0
       domhandler: 4.3.1
       entities: 2.2.0
+    dev: true
 
-  dom-walk@0.1.2: {}
+  /dom-walk@0.1.2:
+    resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==}
+    dev: false
 
-  dom7@3.0.0:
+  /dom7@3.0.0:
+    resolution: {integrity: sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==}
     dependencies:
       ssr-window: 3.0.0
+    dev: false
 
-  dom7@4.0.6:
-    dependencies:
-      ssr-window: 4.0.2
+  /domelementtype@1.3.1:
+    resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==}
+    dev: true
 
-  domelementtype@1.3.1: {}
+  /domelementtype@2.3.0:
+    resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
+    dev: true
 
-  domelementtype@2.3.0: {}
-
-  domhandler@2.4.2:
+  /domhandler@2.4.2:
+    resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==}
     dependencies:
       domelementtype: 1.3.1
+    dev: true
 
-  domhandler@4.3.1:
+  /domhandler@4.3.1:
+    resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
+    engines: {node: '>= 4'}
     dependencies:
       domelementtype: 2.3.0
+    dev: true
 
-  domify@1.4.2: {}
+  /domify@1.4.2:
+    resolution: {integrity: sha512-m4yreHcUWHBncGVV7U+yQzc12vIlq0jMrtHZ5mW6dQMiL/7skSYNVX9wqKwOtyO9SGCgevrAFEgOCAHmamHTUA==}
+    dev: false
 
-  dompurify@3.3.1:
+  /dompurify@3.3.1:
+    resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==}
     optionalDependencies:
       '@types/trusted-types': 2.0.7
+    dev: false
 
-  domutils@1.7.0:
+  /domutils@1.7.0:
+    resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==}
     dependencies:
       dom-serializer: 0.2.2
       domelementtype: 1.3.1
+    dev: true
 
-  domutils@2.8.0:
+  /domutils@2.8.0:
+    resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
     dependencies:
       dom-serializer: 1.4.1
       domelementtype: 2.3.0
       domhandler: 4.3.1
+    dev: true
 
-  draco3d@1.5.7: {}
+  /draco3d@1.5.7:
+    resolution: {integrity: sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==}
+    dev: false
 
-  dunder-proto@1.0.1:
+  /dunder-proto@1.0.1:
+    resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind-apply-helpers: 1.0.2
       es-errors: 1.3.0
       gopd: 1.2.0
 
-  earcut@2.2.4: {}
+  /earcut@2.2.4:
+    resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==}
+    dev: false
 
-  earcut@3.0.2: {}
+  /earcut@3.0.2:
+    resolution: {integrity: sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==}
+    dev: false
 
-  eastasianwidth@0.2.0: {}
+  /eastasianwidth@0.2.0:
+    resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+    dev: true
 
-  echarts@5.6.0:
+  /echarts@5.6.0:
+    resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==}
     dependencies:
       tslib: 2.3.0
       zrender: 5.6.1
+    dev: false
 
-  ee-first@1.1.1: {}
+  /ee-first@1.1.1:
+    resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+    dev: false
 
-  element-plus@2.9.11(vue@3.5.26):
+  /element-plus@2.9.11(vue@3.5.13):
+    resolution: {integrity: sha512-x4L/6YC8de4JtuE3vpaEugJdQIeHQaHtIYKyk67IeF6dTIiVax45aX4nWOygnh+xX+0gTvL6xO+9BZhPA3G82w==}
+    peerDependencies:
+      vue: ^3.2.0
     dependencies:
       '@ctrl/tinycolor': 3.6.1
-      '@element-plus/icons-vue': 2.3.2(vue@3.5.26)
+      '@element-plus/icons-vue': 2.3.1(vue@3.5.13)
       '@floating-ui/dom': 1.7.4
-      '@popperjs/core': '@sxzz/popperjs-es@2.11.7'
+      '@popperjs/core': /@sxzz/popperjs-es@2.11.7
       '@types/lodash': 4.17.21
       '@types/lodash-es': 4.17.12
-      '@vueuse/core': 9.13.0(vue@3.5.26)
+      '@vueuse/core': 9.13.0(vue@3.5.13)
       async-validator: 4.2.5
       dayjs: 1.11.19
       escape-html: 1.0.3
@@ -6168,31 +3731,54 @@
       lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.22)(lodash@4.17.21)
       memoize-one: 6.0.0
       normalize-wheel-es: 1.2.0
-      vue: 3.5.26
+      vue: 3.5.13
     transitivePeerDependencies:
       - '@vue/composition-api'
+    dev: false
 
-  emoji-regex@10.6.0: {}
+  /emoji-regex@10.6.0:
+    resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
+    dev: true
 
-  emoji-regex@8.0.0: {}
+  /emoji-regex@8.0.0:
+    resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+    dev: true
 
-  emoji-regex@9.2.2: {}
+  /emoji-regex@9.2.2:
+    resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+    dev: true
 
-  emojis-list@3.0.0: {}
+  /emojis-list@3.0.0:
+    resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
+    engines: {node: '>= 4'}
+    dev: true
 
-  encodeurl@2.0.0: {}
+  /encodeurl@2.0.0:
+    resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+    engines: {node: '>= 0.8'}
+    dev: false
 
-  end-of-stream@1.4.5:
+  /end-of-stream@1.4.5:
+    resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
     dependencies:
       once: 1.4.0
+    dev: true
 
-  entities@1.1.2: {}
+  /entities@1.1.2:
+    resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==}
+    dev: true
 
-  entities@2.2.0: {}
+  /entities@2.2.0:
+    resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
+    dev: true
 
-  entities@7.0.0: {}
+  /entities@4.5.0:
+    resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+    engines: {node: '>=0.12'}
 
-  es-abstract@1.24.1:
+  /es-abstract@1.24.1:
+    resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       array-buffer-byte-length: 1.0.2
       arraybuffer.prototype.slice: 1.0.4
@@ -6248,47 +3834,70 @@
       typed-array-length: 1.0.7
       unbox-primitive: 1.1.0
       which-typed-array: 1.1.19
+    dev: true
 
-  es-define-property@1.0.1: {}
+  /es-define-property@1.0.1:
+    resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+    engines: {node: '>= 0.4'}
 
-  es-errors@1.3.0: {}
+  /es-errors@1.3.0:
+    resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+    engines: {node: '>= 0.4'}
 
-  es-object-atoms@1.1.1:
+  /es-object-atoms@1.1.1:
+    resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+    engines: {node: '>= 0.4'}
     dependencies:
       es-errors: 1.3.0
 
-  es-set-tostringtag@2.1.0:
+  /es-set-tostringtag@2.1.0:
+    resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
+    engines: {node: '>= 0.4'}
     dependencies:
       es-errors: 1.3.0
       get-intrinsic: 1.3.0
       has-tostringtag: 1.0.2
       hasown: 2.0.2
 
-  es-to-primitive@1.3.0:
+  /es-to-primitive@1.3.0:
+    resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
+    engines: {node: '>= 0.4'}
     dependencies:
       is-callable: 1.2.7
       is-date-object: 1.1.0
       is-symbol: 1.1.1
+    dev: true
 
-  es5-ext@0.10.64:
+  /es5-ext@0.10.64:
+    resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==}
+    engines: {node: '>=0.10'}
     dependencies:
       es6-iterator: 2.0.3
       es6-symbol: 3.1.4
       esniff: 2.0.1
       next-tick: 1.1.0
+    dev: false
 
-  es6-iterator@2.0.3:
+  /es6-iterator@2.0.3:
+    resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==}
     dependencies:
       d: 1.0.2
       es5-ext: 0.10.64
       es6-symbol: 3.1.4
+    dev: false
 
-  es6-symbol@3.1.4:
+  /es6-symbol@3.1.4:
+    resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==}
+    engines: {node: '>=0.12'}
     dependencies:
       d: 1.0.2
       ext: 1.7.0
+    dev: false
 
-  esbuild@0.20.2:
+  /esbuild@0.20.2:
+    resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==}
+    engines: {node: '>=12'}
+    hasBin: true
     optionalDependencies:
       '@esbuild/aix-ppc64': 0.20.2
       '@esbuild/android-arm': 0.20.2
@@ -6313,44 +3922,75 @@
       '@esbuild/win32-arm64': 0.20.2
       '@esbuild/win32-ia32': 0.20.2
       '@esbuild/win32-x64': 0.20.2
+    dev: true
 
-  escape-html@1.0.3: {}
+  /escape-html@1.0.3:
+    resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+    dev: false
 
-  escape-latex@1.2.0: {}
+  /escape-latex@1.2.0:
+    resolution: {integrity: sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==}
+    dev: false
 
-  escape-string-regexp@1.0.5: {}
+  /escape-string-regexp@1.0.5:
+    resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+    engines: {node: '>=0.8.0'}
+    dev: true
 
-  escape-string-regexp@5.0.0: {}
+  /escape-string-regexp@5.0.0:
+    resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+    engines: {node: '>=12'}
+    dev: true
 
-  esniff@2.0.1:
+  /esniff@2.0.1:
+    resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==}
+    engines: {node: '>=0.10'}
     dependencies:
       d: 1.0.2
       es5-ext: 0.10.64
       event-emitter: 0.3.5
       type: 2.7.3
+    dev: false
 
-  estree-walker@2.0.2: {}
+  /estree-walker@2.0.2:
+    resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
 
-  etag@1.8.1: {}
+  /etag@1.8.1:
+    resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+    engines: {node: '>= 0.6'}
 
-  event-emitter@0.3.5:
+  /event-emitter@0.3.5:
+    resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==}
     dependencies:
       d: 1.0.2
       es5-ext: 0.10.64
+    dev: false
 
-  event-target-shim@5.0.1: {}
+  /event-target-shim@5.0.1:
+    resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+    engines: {node: '>=6'}
+    dev: false
 
-  eventemitter3@5.0.1: {}
+  /eventemitter3@5.0.1:
+    resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
+    dev: false
 
-  events-universal@1.0.1:
+  /events-universal@1.0.1:
+    resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==}
     dependencies:
       bare-events: 2.8.2
     transitivePeerDependencies:
       - bare-abort-controller
+    dev: true
 
-  events@3.3.0: {}
+  /events@3.3.0:
+    resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+    engines: {node: '>=0.8.x'}
+    dev: false
 
-  expand-brackets@2.1.4:
+  /expand-brackets@2.1.4:
+    resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       debug: 2.6.9
       define-property: 0.2.5
@@ -6361,23 +4001,37 @@
       to-regex: 3.0.2
     transitivePeerDependencies:
       - supports-color
+    dev: true
 
-  expand-template@2.0.3: {}
+  /expand-template@2.0.3:
+    resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
+    engines: {node: '>=6'}
+    dev: true
 
-  ext@1.7.0:
+  /ext@1.7.0:
+    resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
     dependencies:
       type: 2.7.3
+    dev: false
 
-  extend-shallow@2.0.1:
+  /extend-shallow@2.0.1:
+    resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       is-extendable: 0.1.1
+    dev: true
 
-  extend-shallow@3.0.2:
+  /extend-shallow@3.0.2:
+    resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       assign-symbols: 1.0.0
       is-extendable: 1.0.1
+    dev: true
 
-  extglob@2.0.4:
+  /extglob@2.0.4:
+    resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       array-unique: 0.3.2
       define-property: 1.0.0
@@ -6389,91 +4043,157 @@
       to-regex: 3.0.2
     transitivePeerDependencies:
       - supports-color
+    dev: true
 
-  fast-fifo@1.3.2: {}
+  /fast-fifo@1.3.2:
+    resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
+    dev: true
 
-  fast-glob@3.3.3:
+  /fast-glob@3.3.3:
+    resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+    engines: {node: '>=8.6.0'}
     dependencies:
       '@nodelib/fs.stat': 2.0.5
       '@nodelib/fs.walk': 1.2.8
       glob-parent: 5.1.2
       merge2: 1.4.1
       micromatch: 4.0.8
+    dev: true
 
-  fast-unique-numbers@9.0.24:
+  /fast-unique-numbers@8.0.13:
+    resolution: {integrity: sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g==}
+    engines: {node: '>=16.1.0'}
     dependencies:
       '@babel/runtime': 7.28.4
       tslib: 2.8.1
+    dev: false
 
-  fastq@1.20.1:
+  /fastq@1.20.1:
+    resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
     dependencies:
       reusify: 1.1.0
+    dev: true
 
-  filesize@10.1.6: {}
+  /filesize@10.1.6:
+    resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==}
+    engines: {node: '>= 10.4.0'}
+    dev: true
 
-  fill-range@4.0.0:
+  /fill-range@4.0.0:
+    resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       extend-shallow: 2.0.1
       is-number: 3.0.0
       repeat-string: 1.6.1
       to-regex-range: 2.1.1
+    dev: true
 
-  fill-range@7.1.1:
+  /fill-range@7.1.1:
+    resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+    engines: {node: '>=8'}
     dependencies:
       to-regex-range: 5.0.1
+    dev: true
 
-  follow-redirects@1.15.11: {}
+  /follow-redirects@1.15.11:
+    resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
+    engines: {node: '>=4.0'}
+    peerDependencies:
+      debug: '*'
+    peerDependenciesMeta:
+      debug:
+        optional: true
+    dev: false
 
-  for-each@0.3.5:
+  /for-each@0.3.5:
+    resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       is-callable: 1.2.7
+    dev: true
 
-  for-in@1.0.2: {}
+  /for-in@1.0.2:
+    resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  foreground-child@3.3.1:
+  /foreground-child@3.3.1:
+    resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
+    engines: {node: '>=14'}
     dependencies:
       cross-spawn: 7.0.6
       signal-exit: 4.1.0
+    dev: true
 
-  form-data@4.0.5:
+  /form-data@4.0.5:
+    resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
+    engines: {node: '>= 6'}
     dependencies:
       asynckit: 0.4.0
       combined-stream: 1.0.8
       es-set-tostringtag: 2.1.0
       hasown: 2.0.2
       mime-types: 2.1.35
+    dev: false
 
-  frac@1.1.2: {}
+  /frac@1.1.2:
+    resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==}
+    engines: {node: '>=0.8'}
+    dev: false
 
-  fraction.js@4.3.7: {}
+  /fraction.js@4.3.7:
+    resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+    dev: false
 
-  fragment-cache@0.2.1:
+  /fragment-cache@0.2.1:
+    resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       map-cache: 0.2.2
+    dev: true
 
-  fresh@0.5.2: {}
+  /fresh@0.5.2:
+    resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+    engines: {node: '>= 0.6'}
+    dev: false
 
-  fs-constants@1.0.0: {}
+  /fs-constants@1.0.0:
+    resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
+    dev: true
 
-  fs-extra@10.1.0:
+  /fs-extra@10.1.0:
+    resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
+    engines: {node: '>=12'}
     dependencies:
       graceful-fs: 4.2.11
       jsonfile: 6.2.0
       universalify: 2.0.1
+    dev: true
 
-  fs-extra@9.1.0:
+  /fs-extra@9.1.0:
+    resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==}
+    engines: {node: '>=10'}
     dependencies:
       at-least-node: 1.0.0
       graceful-fs: 4.2.11
       jsonfile: 6.2.0
       universalify: 2.0.1
+    dev: false
 
-  fsevents@2.3.3:
+  /fsevents@2.3.3:
+    resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+    os: [darwin]
+    dev: true
     optional: true
 
-  function-bind@1.1.2: {}
+  /function-bind@1.1.2:
+    resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
 
-  function.prototype.name@1.1.8:
+  /function.prototype.name@1.1.8:
+    resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind: 1.0.8
       call-bound: 1.0.4
@@ -6481,24 +4201,35 @@
       functions-have-names: 1.2.3
       hasown: 2.0.2
       is-callable: 1.2.7
+    dev: true
 
-  functions-have-names@1.2.3: {}
+  /functions-have-names@1.2.3:
+    resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
 
-  generator-function@2.0.1: {}
+  /generator-function@2.0.1:
+    resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
+    engines: {node: '>= 0.4'}
+    dev: true
 
-  geojson-equality@0.1.6:
+  /geojson-equality@0.1.6:
+    resolution: {integrity: sha512-TqG8YbqizP3EfwP5Uw4aLu6pKkg6JQK9uq/XZ1lXQntvTHD1BBKJWhNpJ2M0ax6TuWMP3oyx6Oq7FCIfznrgpQ==}
     dependencies:
       deep-equal: 1.1.2
+    dev: false
 
-  geojson-rbush@3.2.0:
+  /geojson-rbush@3.2.0:
+    resolution: {integrity: sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==}
     dependencies:
       '@turf/bbox': 6.5.0
       '@turf/helpers': 6.5.0
       '@turf/meta': 6.5.0
       '@types/geojson': 7946.0.8
       rbush: 3.0.1
+    dev: false
 
-  get-intrinsic@1.3.0:
+  /get-intrinsic@1.3.0:
+    resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind-apply-helpers: 1.0.2
       es-define-property: 1.0.1
@@ -6511,26 +4242,41 @@
       hasown: 2.0.2
       math-intrinsics: 1.1.0
 
-  get-proto@1.0.1:
+  /get-proto@1.0.1:
+    resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+    engines: {node: '>= 0.4'}
     dependencies:
       dunder-proto: 1.0.1
       es-object-atoms: 1.1.1
 
-  get-symbol-description@1.1.0:
+  /get-symbol-description@1.1.0:
+    resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       es-errors: 1.3.0
       get-intrinsic: 1.3.0
+    dev: true
 
-  get-value@2.0.6: {}
+  /get-value@2.0.6:
+    resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  github-from-package@0.0.0: {}
+  /github-from-package@0.0.0:
+    resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
+    dev: true
 
-  glob-parent@5.1.2:
+  /glob-parent@5.1.2:
+    resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+    engines: {node: '>= 6'}
     dependencies:
       is-glob: 4.0.3
+    dev: true
 
-  glob@10.5.0:
+  /glob@10.5.0:
+    resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==}
+    hasBin: true
     dependencies:
       foreground-child: 3.3.1
       jackspeak: 3.4.3
@@ -6538,91 +4284,154 @@
       minipass: 7.1.2
       package-json-from-dist: 1.0.1
       path-scurry: 1.11.1
+    dev: true
 
-  global@4.4.0:
+  /global@4.4.0:
+    resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==}
     dependencies:
       min-document: 2.19.2
       process: 0.11.10
+    dev: false
 
-  globalthis@1.0.4:
+  /globalthis@1.0.4:
+    resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       define-properties: 1.2.1
       gopd: 1.2.0
+    dev: true
 
-  good-listener@1.2.2:
+  /good-listener@1.2.2:
+    resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==}
     dependencies:
       delegate: 3.2.0
+    dev: false
 
-  gopd@1.2.0: {}
+  /gopd@1.2.0:
+    resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+    engines: {node: '>= 0.4'}
 
-  graceful-fs@4.2.11: {}
+  /graceful-fs@4.2.11:
+    resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
 
-  grapheme-splitter@1.0.4: {}
+  /grapheme-splitter@1.0.4:
+    resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
+    dev: false
 
-  hammerjs@2.0.8: {}
+  /hammerjs@2.0.8:
+    resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==}
+    engines: {node: '>=0.8.0'}
+    dev: false
 
-  has-ansi@2.0.0:
+  /has-ansi@2.0.0:
+    resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       ansi-regex: 2.1.1
+    dev: true
 
-  has-bigints@1.1.0: {}
+  /has-bigints@1.1.0:
+    resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
+    engines: {node: '>= 0.4'}
+    dev: true
 
-  has-flag@1.0.0: {}
+  /has-flag@1.0.0:
+    resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  has-flag@4.0.0: {}
+  /has-flag@4.0.0:
+    resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+    engines: {node: '>=8'}
+    dev: true
 
-  has-property-descriptors@1.0.2:
+  /has-property-descriptors@1.0.2:
+    resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
     dependencies:
       es-define-property: 1.0.1
 
-  has-proto@1.2.0:
+  /has-proto@1.2.0:
+    resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       dunder-proto: 1.0.1
+    dev: true
 
-  has-symbols@1.1.0: {}
+  /has-symbols@1.1.0:
+    resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+    engines: {node: '>= 0.4'}
 
-  has-tostringtag@1.0.2:
+  /has-tostringtag@1.0.2:
+    resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       has-symbols: 1.1.0
 
-  has-value@0.3.1:
+  /has-value@0.3.1:
+    resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       get-value: 2.0.6
       has-values: 0.1.4
       isobject: 2.1.0
+    dev: true
 
-  has-value@1.0.0:
+  /has-value@1.0.0:
+    resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       get-value: 2.0.6
       has-values: 1.0.0
       isobject: 3.0.1
+    dev: true
 
-  has-values@0.1.4: {}
+  /has-values@0.1.4:
+    resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  has-values@1.0.0:
+  /has-values@1.0.0:
+    resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       is-number: 3.0.0
       kind-of: 4.0.0
+    dev: true
 
-  hasown@2.0.2:
+  /hasown@2.0.2:
+    resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       function-bind: 1.1.2
 
-  he@1.2.0: {}
+  /he@1.2.0:
+    resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+    hasBin: true
+    dev: true
 
-  help-me@5.0.0: {}
+  /help-me@5.0.0:
+    resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==}
+    dev: false
 
-  highlight.js@11.11.1: {}
+  /highlight.js@11.9.0:
+    resolution: {integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==}
+    engines: {node: '>=12.0.0'}
+    dev: false
 
-  htm@3.1.1: {}
+  /htm@3.1.1:
+    resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==}
+    dev: false
 
-  html-void-elements@2.0.1: {}
+  /html-void-elements@2.0.1:
+    resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==}
+    dev: false
 
-  html-void-elements@3.0.0: {}
+  /html5-qrcode@2.3.8:
+    resolution: {integrity: sha512-jsr4vafJhwoLVEDW3n1KvPnCCXWaQfRng0/EEYk1vNcQGcG/htAdhJX0be8YyqMoSz7+hZvOZSTAepsabiuhiQ==}
+    dev: false
 
-  html5-qrcode@2.3.8: {}
-
-  htmlparser2@3.10.1:
+  /htmlparser2@3.10.1:
+    resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==}
     dependencies:
       domelementtype: 1.3.1
       domhandler: 2.4.2
@@ -6630,391 +4439,683 @@
       entities: 1.1.2
       inherits: 2.0.4
       readable-stream: 3.6.2
+    dev: true
 
-  http-errors@2.0.1:
+  /http-errors@2.0.1:
+    resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
+    engines: {node: '>= 0.8'}
     dependencies:
       depd: 2.0.0
       inherits: 2.0.4
       setprototypeof: 1.2.0
       statuses: 2.0.2
       toidentifier: 1.0.1
+    dev: false
 
-  hull.js@1.0.6: {}
+  /hull.js@1.0.6:
+    resolution: {integrity: sha512-TC7e9sHYOaCVms0sn2hN7buxnaGfcl9h5EPVoVX9DTPoMpqQiS9bf3tmGDgiNaMVHBD91RAvWjCxrJ5Jx8BI5A==}
+    deprecated: This package is unmaintained and vulnerable. Do not use it.
+    dev: false
 
-  i18next@20.6.1:
+  /i18next@20.6.1:
+    resolution: {integrity: sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==}
     dependencies:
       '@babel/runtime': 7.28.4
+    dev: false
 
-  i18next@23.16.8:
-    dependencies:
-      '@babel/runtime': 7.28.4
+  /ids@1.0.5:
+    resolution: {integrity: sha512-XQ0yom/4KWTL29sLG+tyuycy7UmeaM/79GRtSJq6IG9cJGIPeBz5kwDCguie3TwxaMNIc3WtPi0cTa1XYHicpw==}
+    dev: false
 
-  ids@1.0.5: {}
+  /ieee754@1.2.1:
+    resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
 
-  ieee754@1.2.1: {}
+  /image-size@0.5.5:
+    resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
+    engines: {node: '>=0.10.0'}
+    hasBin: true
+    dev: true
 
-  image-size@0.5.5: {}
+  /immediate@3.0.6:
+    resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
+    dev: false
 
-  immediate@3.0.6: {}
+  /immer@9.0.21:
+    resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==}
+    dev: false
 
-  immer@9.0.21: {}
+  /immutable@5.1.4:
+    resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==}
+    dev: true
 
-  immutable@5.1.4: {}
+  /inherits-browser@0.1.0:
+    resolution: {integrity: sha512-CJHHvW3jQ6q7lzsXPpapLdMx5hDpSF3FSh45pwsj6bKxJJ8Nl8v43i5yXnr3BdfOimGHKyniewQtnAIp3vyJJw==}
+    dev: false
 
-  inherits-browser@0.1.0: {}
+  /inherits@2.0.4:
+    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
 
-  inherits@2.0.4: {}
+  /ini@1.3.8:
+    resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+    dev: true
 
-  ini@1.3.8: {}
-
-  internal-slot@1.1.0:
+  /internal-slot@1.1.0:
+    resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       es-errors: 1.3.0
       hasown: 2.0.2
       side-channel: 1.1.0
+    dev: true
 
-  ip-address@10.1.0: {}
+  /ip-address@10.1.0:
+    resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==}
+    engines: {node: '>= 12'}
+    dev: false
 
-  is-accessor-descriptor@1.0.1:
+  /is-accessor-descriptor@1.0.1:
+    resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==}
+    engines: {node: '>= 0.10'}
     dependencies:
       hasown: 2.0.2
+    dev: true
 
-  is-arguments@1.2.0:
+  /is-arguments@1.2.0:
+    resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       has-tostringtag: 1.0.2
+    dev: false
 
-  is-array-buffer@3.0.5:
+  /is-array-buffer@3.0.5:
+    resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind: 1.0.8
       call-bound: 1.0.4
       get-intrinsic: 1.3.0
+    dev: true
 
-  is-arrayish@0.3.4: {}
+  /is-arrayish@0.3.4:
+    resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==}
+    dev: true
 
-  is-async-function@2.1.1:
+  /is-async-function@2.1.1:
+    resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       async-function: 1.0.0
       call-bound: 1.0.4
       get-proto: 1.0.1
       has-tostringtag: 1.0.2
       safe-regex-test: 1.1.0
+    dev: true
 
-  is-bigint@1.1.0:
+  /is-bigint@1.1.0:
+    resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       has-bigints: 1.1.0
+    dev: true
 
-  is-boolean-object@1.2.2:
+  /is-binary-path@2.1.0:
+    resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+    engines: {node: '>=8'}
+    dependencies:
+      binary-extensions: 2.3.0
+    dev: true
+
+  /is-boolean-object@1.2.2:
+    resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       has-tostringtag: 1.0.2
+    dev: true
 
-  is-buffer@1.1.6: {}
+  /is-buffer@1.1.6:
+    resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
+    dev: true
 
-  is-callable@1.2.7: {}
+  /is-callable@1.2.7:
+    resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+    engines: {node: '>= 0.4'}
+    dev: true
 
-  is-data-descriptor@1.0.1:
+  /is-data-descriptor@1.0.1:
+    resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       hasown: 2.0.2
+    dev: true
 
-  is-data-view@1.0.2:
+  /is-data-view@1.0.2:
+    resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       get-intrinsic: 1.3.0
       is-typed-array: 1.1.15
+    dev: true
 
-  is-date-object@1.1.0:
+  /is-date-object@1.1.0:
+    resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       has-tostringtag: 1.0.2
 
-  is-descriptor@0.1.7:
+  /is-descriptor@0.1.7:
+    resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       is-accessor-descriptor: 1.0.1
       is-data-descriptor: 1.0.1
+    dev: true
 
-  is-descriptor@1.0.3:
+  /is-descriptor@1.0.3:
+    resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       is-accessor-descriptor: 1.0.1
       is-data-descriptor: 1.0.1
+    dev: true
 
-  is-extendable@0.1.1: {}
+  /is-extendable@0.1.1:
+    resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  is-extendable@1.0.1:
+  /is-extendable@1.0.1:
+    resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       is-plain-object: 2.0.4
+    dev: true
 
-  is-extglob@2.1.1: {}
+  /is-extglob@2.1.1:
+    resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  is-finalizationregistry@1.1.1:
+  /is-finalizationregistry@1.1.1:
+    resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
+    dev: true
 
-  is-fullwidth-code-point@3.0.0: {}
+  /is-fullwidth-code-point@3.0.0:
+    resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+    engines: {node: '>=8'}
+    dev: true
 
-  is-function@1.0.2: {}
+  /is-function@1.0.2:
+    resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==}
+    dev: false
 
-  is-generator-function@1.1.2:
+  /is-generator-function@1.1.2:
+    resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       generator-function: 2.0.1
       get-proto: 1.0.1
       has-tostringtag: 1.0.2
       safe-regex-test: 1.1.0
+    dev: true
 
-  is-glob@4.0.3:
+  /is-glob@4.0.3:
+    resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       is-extglob: 2.1.1
+    dev: true
 
-  is-hotkey@0.2.0: {}
+  /is-hotkey@0.2.0:
+    resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==}
+    dev: false
 
-  is-interactive@2.0.0: {}
+  /is-interactive@2.0.0:
+    resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==}
+    engines: {node: '>=12'}
+    dev: true
 
-  is-map@2.0.3: {}
+  /is-map@2.0.3:
+    resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
+    engines: {node: '>= 0.4'}
+    dev: true
 
-  is-negative-zero@2.0.3: {}
+  /is-negative-zero@2.0.3:
+    resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
+    engines: {node: '>= 0.4'}
+    dev: true
 
-  is-number-object@1.1.1:
+  /is-number-object@1.1.1:
+    resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       has-tostringtag: 1.0.2
+    dev: true
 
-  is-number@3.0.0:
+  /is-number@3.0.0:
+    resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       kind-of: 3.2.2
+    dev: true
 
-  is-number@7.0.0: {}
+  /is-number@7.0.0:
+    resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+    engines: {node: '>=0.12.0'}
+    dev: true
 
-  is-plain-obj@1.1.0: {}
+  /is-plain-obj@1.1.0:
+    resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  is-plain-object@2.0.4:
+  /is-plain-object@2.0.4:
+    resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       isobject: 3.0.1
+    dev: true
 
-  is-plain-object@5.0.0: {}
+  /is-plain-object@5.0.0:
+    resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
+    engines: {node: '>=0.10.0'}
+    dev: false
 
-  is-regex@1.2.1:
+  /is-regex@1.2.1:
+    resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       gopd: 1.2.0
       has-tostringtag: 1.0.2
       hasown: 2.0.2
 
-  is-set@2.0.3: {}
+  /is-set@2.0.3:
+    resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
+    engines: {node: '>= 0.4'}
+    dev: true
 
-  is-shared-array-buffer@1.0.4:
+  /is-shared-array-buffer@1.0.4:
+    resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
+    dev: true
 
-  is-string@1.1.1:
+  /is-string@1.1.1:
+    resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       has-tostringtag: 1.0.2
+    dev: true
 
-  is-symbol@1.1.1:
+  /is-symbol@1.1.1:
+    resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       has-symbols: 1.1.0
       safe-regex-test: 1.1.0
+    dev: true
 
-  is-typed-array@1.1.15:
+  /is-typed-array@1.1.15:
+    resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       which-typed-array: 1.1.19
+    dev: true
 
-  is-unicode-supported@1.3.0: {}
+  /is-unicode-supported@1.3.0:
+    resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==}
+    engines: {node: '>=12'}
+    dev: true
 
-  is-url@1.2.4: {}
+  /is-url@1.2.4:
+    resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==}
+    dev: false
 
-  is-weakmap@2.0.2: {}
+  /is-weakmap@2.0.2:
+    resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
+    engines: {node: '>= 0.4'}
+    dev: true
 
-  is-weakref@1.1.1:
+  /is-weakref@1.1.1:
+    resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
+    dev: true
 
-  is-weakset@2.0.4:
+  /is-weakset@2.0.4:
+    resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       get-intrinsic: 1.3.0
+    dev: true
 
-  is-windows@1.0.2: {}
+  /is-windows@1.0.2:
+    resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  isarray@1.0.0: {}
+  /isarray@1.0.0:
+    resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
 
-  isarray@2.0.5: {}
+  /isarray@2.0.5:
+    resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+    dev: true
 
-  isexe@2.0.0: {}
+  /isexe@2.0.0:
+    resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+    dev: true
 
-  isobject@2.1.0:
+  /isobject@2.1.0:
+    resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       isarray: 1.0.0
+    dev: true
 
-  isobject@3.0.1: {}
+  /isobject@3.0.1:
+    resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  jackspeak@3.4.3:
+  /jackspeak@3.4.3:
+    resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
     dependencies:
       '@isaacs/cliui': 8.0.2
     optionalDependencies:
       '@pkgjs/parseargs': 0.11.0
+    dev: true
 
-  javascript-natural-sort@0.7.1: {}
+  /javascript-natural-sort@0.7.1:
+    resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==}
+    dev: false
 
-  js-audio-recorder@1.0.7: {}
+  /js-audio-recorder@1.0.7:
+    resolution: {integrity: sha512-JiDODCElVHGrFyjGYwYyNi7zCbKk9va9C77w+zCPMmi4C6ix7zsX2h3ddHugmo4dOTOTCym9++b/wVW9nC0IaA==}
+    dev: false
 
-  js-base64@2.6.4: {}
+  /js-base64@2.6.4:
+    resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==}
+    dev: true
 
-  js-base64@3.7.8: {}
+  /js-base64@3.7.4:
+    resolution: {integrity: sha512-wpM/wi20Tl+3ifTyi0RdDckS4YTD4Lf953mBRrpG8547T7hInHNPEj8+ck4gB8VDcGyeAWFK++Wb/fU1BeavKQ==}
+    dev: false
 
-  js-cookie@3.0.5: {}
+  /js-cookie@3.0.0:
+    resolution: {integrity: sha512-oUbbplKuH07/XX2YD2+Q+GMiPpnVXaRz8npE7suhBH9QEkJe2W7mQ6rwuMXHue3fpfcftQwzgyvGzIHyfCSngQ==}
+    engines: {node: '>=12'}
+    dev: false
 
-  js-md5@0.7.3: {}
+  /js-md5@0.7.3:
+    resolution: {integrity: sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==}
+    dev: false
 
-  js-sdsl@4.3.0: {}
+  /js-sdsl@4.3.0:
+    resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==}
+    dev: false
 
-  jsbn@1.1.0: {}
+  /jsbn@1.1.0:
+    resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==}
+    dev: false
 
-  jsep@1.4.0: {}
+  /jsep@1.4.0:
+    resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==}
+    engines: {node: '>= 10.16.0'}
+    dev: false
 
-  json5@1.0.2:
+  /json5@1.0.2:
+    resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
+    hasBin: true
     dependencies:
       minimist: 1.2.8
+    dev: true
 
-  jsonfile@6.2.0:
+  /jsonfile@6.2.0:
+    resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==}
     dependencies:
       universalify: 2.0.1
     optionalDependencies:
       graceful-fs: 4.2.11
 
-  jszip@3.10.1:
+  /jszip@3.10.1:
+    resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
     dependencies:
       lie: 3.3.0
       pako: 1.0.11
       readable-stream: 2.3.8
       setimmediate: 1.0.5
+    dev: false
 
-  kdbush@4.0.2: {}
+  /kdbush@4.0.2:
+    resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==}
+    dev: false
 
-  kind-of@3.2.2:
+  /kind-of@3.2.2:
+    resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       is-buffer: 1.1.6
+    dev: true
 
-  kind-of@4.0.0:
+  /kind-of@4.0.0:
+    resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       is-buffer: 1.1.6
+    dev: true
 
-  kind-of@5.1.0: {}
+  /kind-of@5.1.0:
+    resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  kind-of@6.0.3: {}
+  /kind-of@6.0.3:
+    resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  ktx-parse@0.7.1: {}
+  /ktx-parse@0.7.1:
+    resolution: {integrity: sha512-FeA3g56ksdFNwjXJJsc1CCc7co+AJYDp6ipIp878zZ2bU8kWROatLYf39TQEd4/XRSUvBXovQ8gaVKWPXsCLEQ==}
+    dev: false
 
-  leaflet-ant-path@1.3.0: {}
+  /leaflet-ant-path@1.3.0:
+    resolution: {integrity: sha512-wgWWcAD4w8QVguRsHh89NGj5eqwLOP6e/HazunW0fQaytqZqEh3WePWYIrmbUeMcOf2cX/+GecHkFfI5tirS1Q==}
+    dev: false
 
-  leaflet@1.9.4: {}
+  /leaflet@1.9.4:
+    resolution: {integrity: sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==}
+    dev: false
 
-  lerc@2.0.0: {}
+  /lerc@2.0.0:
+    resolution: {integrity: sha512-7qo1Mq8ZNmaR4USHHm615nEW2lPeeWJ3bTyoqFbd35DLx0LUH7C6ptt5FDCTAlbIzs3+WKrk5SkJvw8AFDE2hg==}
+    dev: false
 
-  lie@3.3.0:
+  /lie@3.3.0:
+    resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
     dependencies:
       immediate: 3.0.6
+    dev: false
 
-  loader-utils@1.4.2:
+  /loader-utils@1.4.2:
+    resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==}
+    engines: {node: '>=4.0.0'}
     dependencies:
       big.js: 5.2.2
       emojis-list: 3.0.0
       json5: 1.0.2
+    dev: true
 
-  local-pkg@0.4.3: {}
+  /local-pkg@0.4.3:
+    resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==}
+    engines: {node: '>=14'}
+    dev: true
 
-  lodash-es@4.17.22: {}
+  /lodash-es@4.17.22:
+    resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==}
 
-  lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.22)(lodash@4.17.21):
+  /lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.22)(lodash@4.17.21):
+    resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==}
+    peerDependencies:
+      '@types/lodash-es': '*'
+      lodash: '*'
+      lodash-es: '*'
     dependencies:
       '@types/lodash-es': 4.17.12
       lodash: 4.17.21
       lodash-es: 4.17.22
+    dev: false
 
-  lodash.camelcase@4.3.0: {}
+  /lodash.camelcase@4.3.0:
+    resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
+    dev: false
 
-  lodash.clonedeep@4.5.0: {}
+  /lodash.clonedeep@4.5.0:
+    resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==}
+    dev: false
 
-  lodash.debounce@4.0.8: {}
+  /lodash.debounce@4.0.8:
+    resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
+    dev: false
 
-  lodash.foreach@4.5.0: {}
+  /lodash.foreach@4.5.0:
+    resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==}
+    dev: false
 
-  lodash.isequal@4.5.0: {}
+  /lodash.isequal@4.5.0:
+    resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
+    deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead.
+    dev: false
 
-  lodash.throttle@4.1.1: {}
+  /lodash.throttle@4.1.1:
+    resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==}
+    dev: false
 
-  lodash.toarray@4.4.0: {}
+  /lodash.toarray@4.4.0:
+    resolution: {integrity: sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==}
+    dev: false
 
-  lodash@4.17.21: {}
+  /lodash@4.17.21:
+    resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+    dev: false
 
-  log-symbols@5.1.0:
+  /log-symbols@5.1.0:
+    resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==}
+    engines: {node: '>=12'}
     dependencies:
       chalk: 5.6.2
       is-unicode-supported: 1.3.0
+    dev: true
 
-  long@5.3.2: {}
+  /long@5.3.2:
+    resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
+    dev: false
 
-  lru-cache@10.4.3: {}
+  /lru-cache@10.4.3:
+    resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
 
-  m3u8-parser@7.2.0:
+  /m3u8-parser@7.2.0:
+    resolution: {integrity: sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==}
     dependencies:
       '@babel/runtime': 7.28.4
       '@videojs/vhs-utils': 4.1.1
       global: 4.4.0
+    dev: false
 
-  magic-string@0.25.9:
+  /magic-string@0.25.9:
+    resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
     dependencies:
       sourcemap-codec: 1.4.8
+    dev: true
 
-  magic-string@0.26.7:
+  /magic-string@0.26.7:
+    resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==}
+    engines: {node: '>=12'}
     dependencies:
       sourcemap-codec: 1.4.8
+    dev: true
 
-  magic-string@0.27.0:
+  /magic-string@0.30.21:
+    resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
     dependencies:
       '@jridgewell/sourcemap-codec': 1.5.5
 
-  magic-string@0.30.21:
-    dependencies:
-      '@jridgewell/sourcemap-codec': 1.5.5
+  /map-cache@0.2.2:
+    resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  map-cache@0.2.2: {}
-
-  map-visit@1.0.0:
+  /map-visit@1.0.0:
+    resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       object-visit: 1.0.1
+    dev: true
 
-  math-intrinsics@1.1.0: {}
+  /math-intrinsics@1.1.0:
+    resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+    engines: {node: '>= 0.4'}
 
-  mathjs@10.0.0:
+  /mathjs@10.0.0:
+    resolution: {integrity: sha512-PZcQ73mVvVG2GZXvE47q+j7P3ALVxWUM51wTmlVX3F/3IJMLNziNIqStwyIDAO64ZGB8u3iFlQwxT7DIijtNlw==}
+    engines: {node: '>= 12'}
+    hasBin: true
     dependencies:
       '@babel/runtime': 7.28.4
       complex.js: 2.4.3
-      decimal.js: 10.6.0
+      decimal.js: 10.4.3
       escape-latex: 1.2.0
       fraction.js: 4.3.7
       javascript-natural-sort: 0.7.1
       seedrandom: 3.0.5
       tiny-emitter: 2.1.0
       typed-function: 2.1.0
+    dev: false
 
-  mdn-data@2.0.14: {}
+  /mdn-data@2.0.14:
+    resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
+    dev: true
 
-  memoize-one@6.0.0: {}
+  /memoize-one@6.0.0:
+    resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
+    dev: false
 
-  merge-options@1.0.1:
+  /merge-options@1.0.1:
+    resolution: {integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==}
+    engines: {node: '>=4'}
     dependencies:
       is-plain-obj: 1.1.0
+    dev: true
 
-  merge2@1.4.1: {}
+  /merge2@1.4.1:
+    resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+    engines: {node: '>= 8'}
+    dev: true
 
-  mersenne-twister@1.1.0: {}
+  /mersenne-twister@1.1.0:
+    resolution: {integrity: sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA==}
+    dev: false
 
-  meshoptimizer@0.22.0: {}
+  /meshoptimizer@0.22.0:
+    resolution: {integrity: sha512-IebiK79sqIy+E4EgOr+CAw+Ke8hAspXKzBd0JdgEmPHiAwmvEj2S4h1rfvo+o/BnfEYd/jAOg5IeeIjzlzSnDg==}
+    dev: false
 
-  micromatch@3.1.0:
+  /micromatch@3.1.0:
+    resolution: {integrity: sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       arr-diff: 4.0.0
       array-unique: 0.3.2
@@ -7031,90 +5132,155 @@
       to-regex: 3.0.2
     transitivePeerDependencies:
       - supports-color
+    dev: true
 
-  micromatch@4.0.8:
+  /micromatch@4.0.8:
+    resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+    engines: {node: '>=8.6'}
     dependencies:
       braces: 3.0.3
       picomatch: 2.3.1
+    dev: true
 
-  mime-db@1.52.0: {}
+  /mime-db@1.52.0:
+    resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+    engines: {node: '>= 0.6'}
+    dev: false
 
-  mime-match@1.0.2:
+  /mime-match@1.0.2:
+    resolution: {integrity: sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==}
     dependencies:
       wildcard: 1.1.2
+    dev: false
 
-  mime-types@2.1.35:
+  /mime-types@2.1.35:
+    resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+    engines: {node: '>= 0.6'}
     dependencies:
       mime-db: 1.52.0
+    dev: false
 
-  mime@1.6.0: {}
+  /mime@1.6.0:
+    resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+    engines: {node: '>=4'}
+    hasBin: true
+    dev: false
 
-  mimic-fn@2.1.0: {}
+  /mimic-fn@2.1.0:
+    resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+    engines: {node: '>=6'}
+    dev: true
 
-  mimic-response@3.1.0: {}
+  /mimic-response@3.1.0:
+    resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
+    engines: {node: '>=10'}
+    dev: true
 
-  min-dash@4.2.3: {}
+  /min-dash@4.2.3:
+    resolution: {integrity: sha512-VLMYQI5+FcD9Ad24VcB08uA83B07OhueAlZ88jBK6PyupTvEJwllTMUqMy0wPGYs7pZUEtEEMWdHB63m3LtEcg==}
+    dev: false
 
-  min-document@2.19.2:
+  /min-document@2.19.2:
+    resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==}
     dependencies:
       dom-walk: 0.1.2
+    dev: false
 
-  min-dom@4.2.1:
+  /min-dom@4.2.1:
+    resolution: {integrity: sha512-TMoL8SEEIhUWYgkj7XMSgxmwSyGI+4fP2KFFGnN3FbHfbGHVdsLYSz8LoIsgPhz4dWRmLvxWWSMgzZMJW5sZuA==}
     dependencies:
       component-event: 0.2.1
       domify: 1.4.2
       min-dash: 4.2.3
+    dev: false
 
-  minimatch@9.0.5:
+  /minimatch@9.0.5:
+    resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+    engines: {node: '>=16 || 14 >=14.17'}
     dependencies:
       brace-expansion: 2.0.2
+    dev: true
 
-  minimist@1.2.8: {}
+  /minimist@1.2.8:
+    resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
 
-  minipass@7.1.2: {}
+  /minipass@7.1.2:
+    resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+    engines: {node: '>=16 || 14 >=14.17'}
+    dev: true
 
-  mitt@3.0.1: {}
+  /mitt@3.0.1:
+    resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
+    dev: false
 
-  mixin-deep@1.3.2:
+  /mixin-deep@1.3.2:
+    resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       for-in: 1.0.2
       is-extendable: 1.0.1
+    dev: true
 
-  mkdirp-classic@0.5.3: {}
+  /mkdirp-classic@0.5.3:
+    resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
+    dev: true
 
-  mlly@1.8.0:
+  /mlly@0.5.17:
+    resolution: {integrity: sha512-Rn+ai4G+CQXptDFSRNnChEgNr+xAEauYhwRvpPl/UHStTlgkIftplgJRsA2OXPuoUn86K4XAjB26+x5CEvVb6A==}
+    dependencies:
+      acorn: 8.15.0
+      pathe: 1.1.2
+      pkg-types: 1.3.1
+      ufo: 1.6.1
+    dev: true
+
+  /mlly@1.8.0:
+    resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
     dependencies:
       acorn: 8.15.0
       pathe: 2.0.3
       pkg-types: 1.3.1
       ufo: 1.6.1
+    dev: true
 
-  moddle-xml@10.1.0:
+  /moddle-xml@10.1.0:
+    resolution: {integrity: sha512-erWckwLt+dYskewKXJso9u+aAZ5172lOiYxSOqKCPTy7L/xmqH1PoeoA7eVC7oJTt3PqF5TkZzUmbjGH6soQBg==}
     dependencies:
       min-dash: 4.2.3
       moddle: 6.2.3
       saxen: 8.1.2
+    dev: false
 
-  moddle@6.2.3:
+  /moddle@6.2.3:
+    resolution: {integrity: sha512-bLVN+ZHL3aKnhxc19XtjUfvdJsS3EsiEJC7bT6YPD11qYmTzvsxrGgyYz1Ouof7TZuGw0lDJ1OLmEnxcpQWk3Q==}
     dependencies:
       min-dash: 4.2.3
+    dev: false
 
-  mpd-parser@1.3.1:
+  /mpd-parser@1.3.1:
+    resolution: {integrity: sha512-1FuyEWI5k2HcmhS1HkKnUAQV7yFPfXPht2DnRRGtoiiAAW+ESTbtEXIDpRkwdU+XyrQuwrIym7UkoPKsZ0SyFw==}
+    hasBin: true
     dependencies:
       '@babel/runtime': 7.28.4
       '@videojs/vhs-utils': 4.1.1
       '@xmldom/xmldom': 0.8.11
       global: 4.4.0
+    dev: false
 
-  mqtt-packet@9.0.2:
+  /mqtt-packet@9.0.2:
+    resolution: {integrity: sha512-MvIY0B8/qjq7bKxdN1eD+nrljoeaai+qjLJgfRn3TiMuz0pamsIWY2bFODPZMSNmabsLANXsLl4EMoWvlaTZWA==}
     dependencies:
       bl: 6.1.6
       debug: 4.4.3
       process-nextick-args: 2.0.1
     transitivePeerDependencies:
       - supports-color
+    dev: false
 
-  mqtt@5.14.1:
+  /mqtt@5.11.0:
+    resolution: {integrity: sha512-VDqfADTNvohwcY02NgxPb7OojIeDrNQ1q62r/DcM+bnIWY8LBi3nMTvdEaFEp6Bu4ejBIpHjJVthUEgnvGLemA==}
+    engines: {node: '>=16.0.0'}
+    hasBin: true
     dependencies:
       '@types/readable-stream': 4.0.23
       '@types/ws': 8.18.1
@@ -7127,32 +5293,45 @@
       mqtt-packet: 9.0.2
       number-allocator: 1.0.14
       readable-stream: 4.7.0
+      reinterval: 1.1.0
       rfdc: 1.4.1
       socks: 2.8.7
       split2: 4.2.0
-      worker-timers: 8.0.27
-      ws: 8.18.3
+      worker-timers: 7.1.8
+      ws: 8.19.0
     transitivePeerDependencies:
       - bufferutil
       - supports-color
       - utf-8-validate
+    dev: false
 
-  ms@2.0.0: {}
+  /ms@2.0.0:
+    resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
 
-  ms@2.1.3: {}
+  /ms@2.1.3:
+    resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
 
-  mux.js@7.1.0:
+  /mux.js@7.1.0:
+    resolution: {integrity: sha512-NTxawK/BBELJrYsZThEulyUMDVlLizKdxyAsMuzoCD1eFj97BVaA8D/CvKsKu6FOLYkFojN5CbM9h++ZTZtknA==}
+    engines: {node: '>=8', npm: '>=5'}
+    hasBin: true
     dependencies:
       '@babel/runtime': 7.28.4
       global: 4.4.0
+    dev: false
 
-  namespace-emitter@2.0.1: {}
+  /namespace-emitter@2.0.1:
+    resolution: {integrity: sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==}
+    dev: false
 
-  nanoid@3.3.11: {}
+  /nanoid@3.3.11:
+    resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+    engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+    hasBin: true
 
-  nanoid@5.1.6: {}
-
-  nanomatch@1.2.13:
+  /nanomatch@1.2.13:
+    resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       arr-diff: 4.0.0
       array-unique: 0.3.2
@@ -7167,61 +5346,108 @@
       to-regex: 3.0.2
     transitivePeerDependencies:
       - supports-color
+    dev: true
 
-  napi-build-utils@2.0.0: {}
+  /napi-build-utils@2.0.0:
+    resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==}
+    dev: true
 
-  next-tick@1.1.0: {}
+  /next-tick@1.1.0:
+    resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
+    dev: false
 
-  node-abi@3.85.0:
+  /node-abi@3.85.0:
+    resolution: {integrity: sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==}
+    engines: {node: '>=10'}
     dependencies:
       semver: 7.7.3
+    dev: true
 
-  node-addon-api@6.1.0: {}
+  /node-addon-api@6.1.0:
+    resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
+    dev: true
 
-  node-addon-api@7.1.1:
+  /node-addon-api@7.1.1:
+    resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
+    dev: true
     optional: true
 
-  normalize-wheel-es@1.2.0: {}
+  /normalize-path@3.0.0:
+    resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  nosleep.js@0.12.0: {}
+  /normalize-wheel-es@1.2.0:
+    resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==}
+    dev: false
 
-  nprogress@0.2.0: {}
+  /nosleep.js@0.12.0:
+    resolution: {integrity: sha512-9d1HbpKLh3sdWlhXMhU6MMH+wQzKkrgfRkYV0EBdvt99YJfj0ilCJrWRDYG2130Tm4GXbEoTCx5b34JSaP+HhA==}
+    dev: false
 
-  nth-check@2.1.1:
+  /nprogress@0.2.0:
+    resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
+    dev: false
+
+  /nth-check@2.1.1:
+    resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
     dependencies:
       boolbase: 1.0.0
+    dev: true
 
-  number-allocator@1.0.14:
+  /number-allocator@1.0.14:
+    resolution: {integrity: sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==}
     dependencies:
       debug: 4.4.3
       js-sdsl: 4.3.0
     transitivePeerDependencies:
       - supports-color
+    dev: false
 
-  object-assign@4.1.1: {}
+  /object-assign@4.1.1:
+    resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+    engines: {node: '>=0.10.0'}
 
-  object-copy@0.1.0:
+  /object-copy@0.1.0:
+    resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       copy-descriptor: 0.1.1
       define-property: 0.2.5
       kind-of: 3.2.2
+    dev: true
 
-  object-inspect@1.13.4: {}
+  /object-inspect@1.13.4:
+    resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+    engines: {node: '>= 0.4'}
+    dev: true
 
-  object-is@1.1.6:
+  /object-is@1.1.6:
+    resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind: 1.0.8
       define-properties: 1.2.1
+    dev: false
 
-  object-keys@1.1.1: {}
+  /object-keys@1.1.1:
+    resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+    engines: {node: '>= 0.4'}
 
-  object-refs@0.3.0: {}
+  /object-refs@0.3.0:
+    resolution: {integrity: sha512-eP0ywuoWOaDoiake/6kTJlPJhs+k0qNm4nYRzXLNHj6vh+5M3i9R1epJTdxIPGlhWc4fNRQ7a6XJNCX+/L4FOQ==}
+    dev: false
 
-  object-visit@1.0.1:
+  /object-visit@1.0.1:
+    resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       isobject: 3.0.1
+    dev: true
 
-  object.assign@4.1.7:
+  /object.assign@4.1.7:
+    resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind: 1.0.8
       call-bound: 1.0.4
@@ -7229,24 +5455,38 @@
       es-object-atoms: 1.1.1
       has-symbols: 1.1.0
       object-keys: 1.1.1
+    dev: true
 
-  object.pick@1.3.0:
+  /object.pick@1.3.0:
+    resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       isobject: 3.0.1
+    dev: true
 
-  on-finished@2.4.1:
+  /on-finished@2.4.1:
+    resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+    engines: {node: '>= 0.8'}
     dependencies:
       ee-first: 1.1.1
+    dev: false
 
-  once@1.4.0:
+  /once@1.4.0:
+    resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
     dependencies:
       wrappy: 1.0.2
+    dev: true
 
-  onetime@5.1.2:
+  /onetime@5.1.2:
+    resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+    engines: {node: '>=6'}
     dependencies:
       mimic-fn: 2.1.0
+    dev: true
 
-  ora@7.0.1:
+  /ora@7.0.1:
+    resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==}
+    engines: {node: '>=16'}
     dependencies:
       chalk: 5.6.2
       cli-cursor: 4.0.0
@@ -7257,112 +5497,198 @@
       stdin-discarder: 0.1.0
       string-width: 6.1.0
       strip-ansi: 7.1.2
+    dev: true
 
-  own-keys@1.0.1:
+  /own-keys@1.0.1:
+    resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       get-intrinsic: 1.3.0
       object-keys: 1.1.1
       safe-push-apply: 1.0.0
+    dev: true
 
-  package-json-from-dist@1.0.1: {}
+  /package-json-from-dist@1.0.1:
+    resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
+    dev: true
 
-  pako@1.0.11: {}
+  /pako@1.0.11:
+    resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
+    dev: false
 
-  pako@2.1.0: {}
+  /pako@2.1.0:
+    resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==}
+    dev: false
 
-  parseurl@1.3.3: {}
+  /parseurl@1.3.3:
+    resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+    engines: {node: '>= 0.8'}
+    dev: false
 
-  pascalcase@0.1.1: {}
+  /pascalcase@0.1.1:
+    resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  path-intersection@2.2.1: {}
+  /path-intersection@2.2.1:
+    resolution: {integrity: sha512-9u8xvMcSfuOiStv9bPdnRJQhGQXLKurew94n4GPQCdH1nj9QKC9ObbNoIpiRq8skiOBxKkt277PgOoFgAt3/rA==}
+    dev: false
 
-  path-key@3.1.1: {}
+  /path-key@3.1.1:
+    resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+    engines: {node: '>=8'}
+    dev: true
 
-  path-scurry@1.11.1:
+  /path-scurry@1.11.1:
+    resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+    engines: {node: '>=16 || 14 >=14.18'}
     dependencies:
       lru-cache: 10.4.3
       minipass: 7.1.2
+    dev: true
 
-  pathe@0.2.0: {}
+  /pathe@0.2.0:
+    resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==}
+    dev: true
 
-  pathe@1.1.2: {}
+  /pathe@0.3.9:
+    resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==}
+    dev: true
 
-  pathe@2.0.3: {}
+  /pathe@1.1.2:
+    resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+    dev: true
 
-  picocolors@1.1.1: {}
+  /pathe@2.0.3:
+    resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
+    dev: true
 
-  picomatch@2.3.1: {}
+  /picocolors@1.1.1:
+    resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
 
-  picomatch@4.0.3: {}
+  /picomatch@2.3.1:
+    resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+    engines: {node: '>=8.6'}
+    dev: true
 
-  pkcs7@1.0.4:
+  /picomatch@4.0.3:
+    resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /pkcs7@1.0.4:
+    resolution: {integrity: sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==}
+    hasBin: true
     dependencies:
       '@babel/runtime': 7.28.4
+    dev: false
 
-  pkg-types@1.3.1:
+  /pkg-types@1.3.1:
+    resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
     dependencies:
       confbox: 0.1.8
       mlly: 1.8.0
       pathe: 2.0.3
+    dev: true
 
-  point-in-polygon@1.1.0: {}
+  /point-in-polygon@1.1.0:
+    resolution: {integrity: sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==}
+    dev: false
 
-  polygon-clipping@0.15.7:
+  /polygon-clipping@0.15.7:
+    resolution: {integrity: sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==}
     dependencies:
       robust-predicates: 3.0.2
       splaytree: 3.2.3
+    dev: false
 
-  posix-character-classes@0.1.1: {}
+  /posix-character-classes@0.1.1:
+    resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  possible-typed-array-names@1.1.0: {}
+  /possible-typed-array-names@1.1.0:
+    resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
+    engines: {node: '>= 0.4'}
+    dev: true
 
-  postcss-prefix-selector@1.16.1(postcss@5.2.18):
+  /postcss-prefix-selector@1.16.1(postcss@5.2.18):
+    resolution: {integrity: sha512-Umxu+FvKMwlY6TyDzGFoSUnzW+NOfMBLyC1tAkIjgX+Z/qGspJeRjVC903D7mx7TuBpJlwti2ibXtWuA7fKMeQ==}
+    peerDependencies:
+      postcss: '>4 <9'
     dependencies:
       postcss: 5.2.18
+    dev: true
 
-  postcss-pxtorem@6.1.0(postcss@8.5.6):
+  /postcss-pxtorem@6.1.0(postcss@8.5.6):
+    resolution: {integrity: sha512-ROODSNci9ADal3zUcPHOF/K83TiCgNSPXQFSbwyPHNV8ioHIE4SaC+FPOufd8jsr5jV2uIz29v1Uqy1c4ov42g==}
+    peerDependencies:
+      postcss: ^8.0.0
     dependencies:
       postcss: 8.5.6
+    dev: false
 
-  postcss@5.2.18:
+  /postcss@5.2.18:
+    resolution: {integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==}
+    engines: {node: '>=0.12'}
     dependencies:
       chalk: 1.1.3
       js-base64: 2.6.4
       source-map: 0.5.7
       supports-color: 3.2.3
+    dev: true
 
-  postcss@8.5.6:
+  /postcss@8.5.6:
+    resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
+    engines: {node: ^10 || ^12 || >=14}
     dependencies:
       nanoid: 3.3.11
       picocolors: 1.1.1
       source-map-js: 1.2.1
 
-  posthtml-parser@0.2.1:
+  /posthtml-parser@0.2.1:
+    resolution: {integrity: sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==}
     dependencies:
       htmlparser2: 3.10.1
       isobject: 2.1.0
+    dev: true
 
-  posthtml-rename-id@1.0.12:
+  /posthtml-rename-id@1.0.12:
+    resolution: {integrity: sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==}
     dependencies:
       escape-string-regexp: 1.0.5
+    dev: true
 
-  posthtml-render@1.4.0: {}
+  /posthtml-render@1.4.0:
+    resolution: {integrity: sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==}
+    engines: {node: '>=10'}
+    dev: true
 
-  posthtml-svg-mode@1.0.3:
+  /posthtml-svg-mode@1.0.3:
+    resolution: {integrity: sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==}
     dependencies:
       merge-options: 1.0.1
       posthtml: 0.9.2
       posthtml-parser: 0.2.1
       posthtml-render: 1.4.0
+    dev: true
 
-  posthtml@0.9.2:
+  /posthtml@0.9.2:
+    resolution: {integrity: sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       posthtml-parser: 0.2.1
       posthtml-render: 1.4.0
+    dev: true
 
-  preact@10.28.1: {}
+  /preact@10.28.1:
+    resolution: {integrity: sha512-u1/ixq/lVQI0CakKNvLDEcW5zfCjUQfZdK9qqWuIJtsezuyG6pk9TWj75GMuI/EzRSZB/VAE43sNWWZfiy8psw==}
+    dev: false
 
-  prebuild-install@7.1.3:
+  /prebuild-install@7.1.3:
+    resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==}
+    engines: {node: '>=10'}
+    hasBin: true
     dependencies:
       detect-libc: 2.1.2
       expand-template: 2.0.3
@@ -7376,16 +5702,31 @@
       simple-get: 4.0.1
       tar-fs: 2.1.4
       tunnel-agent: 0.6.0
+    dev: true
 
-  prettier@2.8.8: {}
+  /prettier@2.8.7:
+    resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==}
+    engines: {node: '>=10.13.0'}
+    hasBin: true
+    dev: true
 
-  prismjs@1.30.0: {}
+  /prismjs@1.30.0:
+    resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
+    engines: {node: '>=6'}
+    dev: false
 
-  process-nextick-args@2.0.1: {}
+  /process-nextick-args@2.0.1:
+    resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+    dev: false
 
-  process@0.11.10: {}
+  /process@0.11.10:
+    resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+    engines: {node: '>= 0.6.0'}
+    dev: false
 
-  protobufjs@7.5.4:
+  /protobufjs@7.5.4:
+    resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==}
+    engines: {node: '>=12.0.0'}
     dependencies:
       '@protobufjs/aspromise': 1.1.2
       '@protobufjs/base64': 1.1.2
@@ -7399,53 +5740,86 @@
       '@protobufjs/utf8': 1.1.0
       '@types/node': 25.0.3
       long: 5.3.2
+    dev: false
 
-  proxy-from-env@1.1.0: {}
+  /proxy-from-env@1.1.0:
+    resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+    dev: false
 
-  pump@3.0.3:
+  /pump@3.0.3:
+    resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
     dependencies:
       end-of-stream: 1.4.5
       once: 1.4.0
+    dev: true
 
-  qrcodejs2-fix@0.0.1: {}
+  /qrcodejs2-fix@0.0.1:
+    resolution: {integrity: sha512-1R6jB87k1PUwjX65hh24FftDjrghPvryYfsajV3chCp//dQb8QUeL446DVLj2SIeotP8ro9rSYri0wOp7O+7Hg==}
+    dev: false
 
-  query-string@4.3.4:
+  /query-string@4.3.4:
+    resolution: {integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       object-assign: 4.1.1
       strict-uri-encode: 1.1.0
+    dev: true
 
-  queue-microtask@1.2.3: {}
+  /queue-microtask@1.2.3:
+    resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+    dev: true
 
-  quickselect@1.1.1: {}
+  /quickselect@1.1.1:
+    resolution: {integrity: sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==}
+    dev: false
 
-  quickselect@2.0.0: {}
+  /quickselect@2.0.0:
+    resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==}
+    dev: false
 
-  quickselect@3.0.0: {}
+  /quickselect@3.0.0:
+    resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==}
+    dev: false
 
-  randomcolor@0.6.2: {}
+  /randomcolor@0.6.2:
+    resolution: {integrity: sha512-Mn6TbyYpFgwFuQ8KJKqf3bqqY9O1y37/0jgSK/61PUxV4QfIMv0+K2ioq8DfOjkBslcjwSzRfIDEXfzA9aCx7A==}
+    dev: false
 
-  range-parser@1.2.1: {}
+  /range-parser@1.2.1:
+    resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+    engines: {node: '>= 0.6'}
+    dev: false
 
-  rbush@2.0.2:
+  /rbush@2.0.2:
+    resolution: {integrity: sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==}
     dependencies:
       quickselect: 1.1.1
+    dev: false
 
-  rbush@3.0.1:
+  /rbush@3.0.1:
+    resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==}
     dependencies:
       quickselect: 2.0.0
+    dev: false
 
-  rbush@4.0.1:
+  /rbush@4.0.1:
+    resolution: {integrity: sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==}
     dependencies:
       quickselect: 3.0.0
+    dev: false
 
-  rc@1.2.8:
+  /rc@1.2.8:
+    resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
+    hasBin: true
     dependencies:
       deep-extend: 0.6.0
       ini: 1.3.8
       minimist: 1.2.8
       strip-json-comments: 2.0.1
+    dev: true
 
-  readable-stream@2.3.8:
+  /readable-stream@2.3.8:
+    resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
     dependencies:
       core-util-is: 1.0.3
       inherits: 2.0.4
@@ -7454,26 +5828,46 @@
       safe-buffer: 5.1.2
       string_decoder: 1.1.1
       util-deprecate: 1.0.2
+    dev: false
 
-  readable-stream@3.6.2:
+  /readable-stream@3.6.2:
+    resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+    engines: {node: '>= 6'}
     dependencies:
       inherits: 2.0.4
       string_decoder: 1.3.0
       util-deprecate: 1.0.2
 
-  readable-stream@4.7.0:
+  /readable-stream@4.7.0:
+    resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==}
+    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     dependencies:
       abort-controller: 3.0.0
       buffer: 6.0.3
       events: 3.3.0
       process: 0.11.10
       string_decoder: 1.3.0
+    dev: false
 
-  readdirp@4.1.2: {}
+  /readdirp@3.6.0:
+    resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+    engines: {node: '>=8.10.0'}
+    dependencies:
+      picomatch: 2.3.1
+    dev: true
 
-  reconnecting-websocket@4.4.0: {}
+  /readdirp@4.1.2:
+    resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
+    engines: {node: '>= 14.18.0'}
+    dev: true
 
-  reflect.getprototypeof@1.0.10:
+  /reconnecting-websocket@4.4.0:
+    resolution: {integrity: sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==}
+    dev: false
+
+  /reflect.getprototypeof@1.0.10:
+    resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind: 1.0.8
       define-properties: 1.2.1
@@ -7483,13 +5877,19 @@
       get-intrinsic: 1.3.0
       get-proto: 1.0.1
       which-builtin-type: 1.2.1
+    dev: true
 
-  regex-not@1.0.2:
+  /regex-not@1.0.2:
+    resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       extend-shallow: 3.0.2
       safe-regex: 1.1.0
+    dev: true
 
-  regexp.prototype.flags@1.5.4:
+  /regexp.prototype.flags@1.5.4:
+    resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind: 1.0.8
       define-properties: 1.2.1
@@ -7498,113 +5898,180 @@
       gopd: 1.2.0
       set-function-name: 2.0.2
 
-  repeat-element@1.1.4: {}
+  /reinterval@1.1.0:
+    resolution: {integrity: sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==}
+    dev: false
 
-  repeat-string@1.6.1: {}
+  /repeat-element@1.1.4:
+    resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  resolve-url@0.2.1: {}
+  /repeat-string@1.6.1:
+    resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
+    engines: {node: '>=0.10'}
+    dev: true
 
-  restore-cursor@4.0.0:
+  /resolve-url@0.2.1:
+    resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
+    deprecated: https://github.com/lydell/resolve-url#deprecated
+    dev: true
+
+  /restore-cursor@4.0.0:
+    resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
+    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
     dependencies:
       onetime: 5.1.2
       signal-exit: 3.0.7
+    dev: true
 
-  ret@0.1.15: {}
+  /ret@0.1.15:
+    resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
+    engines: {node: '>=0.12'}
+    dev: true
 
-  reusify@1.1.0: {}
+  /reusify@1.1.0:
+    resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+    engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+    dev: true
 
-  rfdc@1.4.1: {}
+  /rfdc@1.4.1:
+    resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
+    dev: false
 
-  robust-predicates@3.0.2: {}
+  /robust-predicates@3.0.2:
+    resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
+    dev: false
 
-  rollup@4.54.0:
+  /rollup@4.55.1:
+    resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==}
+    engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+    hasBin: true
     dependencies:
       '@types/estree': 1.0.8
     optionalDependencies:
-      '@rollup/rollup-android-arm-eabi': 4.54.0
-      '@rollup/rollup-android-arm64': 4.54.0
-      '@rollup/rollup-darwin-arm64': 4.54.0
-      '@rollup/rollup-darwin-x64': 4.54.0
-      '@rollup/rollup-freebsd-arm64': 4.54.0
-      '@rollup/rollup-freebsd-x64': 4.54.0
-      '@rollup/rollup-linux-arm-gnueabihf': 4.54.0
-      '@rollup/rollup-linux-arm-musleabihf': 4.54.0
-      '@rollup/rollup-linux-arm64-gnu': 4.54.0
-      '@rollup/rollup-linux-arm64-musl': 4.54.0
-      '@rollup/rollup-linux-loong64-gnu': 4.54.0
-      '@rollup/rollup-linux-ppc64-gnu': 4.54.0
-      '@rollup/rollup-linux-riscv64-gnu': 4.54.0
-      '@rollup/rollup-linux-riscv64-musl': 4.54.0
-      '@rollup/rollup-linux-s390x-gnu': 4.54.0
-      '@rollup/rollup-linux-x64-gnu': 4.54.0
-      '@rollup/rollup-linux-x64-musl': 4.54.0
-      '@rollup/rollup-openharmony-arm64': 4.54.0
-      '@rollup/rollup-win32-arm64-msvc': 4.54.0
-      '@rollup/rollup-win32-ia32-msvc': 4.54.0
-      '@rollup/rollup-win32-x64-gnu': 4.54.0
-      '@rollup/rollup-win32-x64-msvc': 4.54.0
+      '@rollup/rollup-android-arm-eabi': 4.55.1
+      '@rollup/rollup-android-arm64': 4.55.1
+      '@rollup/rollup-darwin-arm64': 4.55.1
+      '@rollup/rollup-darwin-x64': 4.55.1
+      '@rollup/rollup-freebsd-arm64': 4.55.1
+      '@rollup/rollup-freebsd-x64': 4.55.1
+      '@rollup/rollup-linux-arm-gnueabihf': 4.55.1
+      '@rollup/rollup-linux-arm-musleabihf': 4.55.1
+      '@rollup/rollup-linux-arm64-gnu': 4.55.1
+      '@rollup/rollup-linux-arm64-musl': 4.55.1
+      '@rollup/rollup-linux-loong64-gnu': 4.55.1
+      '@rollup/rollup-linux-loong64-musl': 4.55.1
+      '@rollup/rollup-linux-ppc64-gnu': 4.55.1
+      '@rollup/rollup-linux-ppc64-musl': 4.55.1
+      '@rollup/rollup-linux-riscv64-gnu': 4.55.1
+      '@rollup/rollup-linux-riscv64-musl': 4.55.1
+      '@rollup/rollup-linux-s390x-gnu': 4.55.1
+      '@rollup/rollup-linux-x64-gnu': 4.55.1
+      '@rollup/rollup-linux-x64-musl': 4.55.1
+      '@rollup/rollup-openbsd-x64': 4.55.1
+      '@rollup/rollup-openharmony-arm64': 4.55.1
+      '@rollup/rollup-win32-arm64-msvc': 4.55.1
+      '@rollup/rollup-win32-ia32-msvc': 4.55.1
+      '@rollup/rollup-win32-x64-gnu': 4.55.1
+      '@rollup/rollup-win32-x64-msvc': 4.55.1
       fsevents: 2.3.3
+    dev: true
 
-  run-parallel@1.2.0:
+  /run-parallel@1.2.0:
+    resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
     dependencies:
       queue-microtask: 1.2.3
+    dev: true
 
-  safe-array-concat@1.1.3:
+  /safe-array-concat@1.1.3:
+    resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
+    engines: {node: '>=0.4'}
     dependencies:
       call-bind: 1.0.8
       call-bound: 1.0.4
       get-intrinsic: 1.3.0
       has-symbols: 1.1.0
       isarray: 2.0.5
+    dev: true
 
-  safe-buffer@5.1.2: {}
+  /safe-buffer@5.1.2:
+    resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+    dev: false
 
-  safe-buffer@5.2.1: {}
+  /safe-buffer@5.2.1:
+    resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
 
-  safe-push-apply@1.0.0:
+  /safe-push-apply@1.0.0:
+    resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
+    engines: {node: '>= 0.4'}
     dependencies:
       es-errors: 1.3.0
       isarray: 2.0.5
+    dev: true
 
-  safe-regex-test@1.1.0:
+  /safe-regex-test@1.1.0:
+    resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       es-errors: 1.3.0
       is-regex: 1.2.1
+    dev: true
 
-  safe-regex@1.1.0:
+  /safe-regex@1.1.0:
+    resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==}
     dependencies:
       ret: 0.1.15
+    dev: true
 
-  sass@1.97.1:
+  /sass@1.85.1:
+    resolution: {integrity: sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==}
+    engines: {node: '>=14.0.0'}
+    hasBin: true
     dependencies:
       chokidar: 4.0.3
       immutable: 5.1.4
       source-map-js: 1.2.1
     optionalDependencies:
       '@parcel/watcher': 2.5.1
+    dev: true
 
-  saxen@8.1.2: {}
+  /saxen@8.1.2:
+    resolution: {integrity: sha512-xUOiiFbc3Ow7p8KMxwsGICPx46ZQvy3+qfNVhrkwfz3Vvq45eGt98Ft5IQaA1R/7Tb5B5MKh9fUR9x3c3nDTxw==}
+    dev: false
 
-  scroll-into-view-if-needed@2.2.31:
+  /scroll-into-view-if-needed@2.2.31:
+    resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==}
     dependencies:
       compute-scroll-into-view: 1.0.20
+    dev: false
 
-  scroll-into-view-if-needed@3.1.0:
-    dependencies:
-      compute-scroll-into-view: 3.1.1
+  /scule@0.3.2:
+    resolution: {integrity: sha512-zIvPdjOH8fv8CgrPT5eqtxHQXmPNnV/vHJYffZhE43KZkvULvpCTvOt1HPlFaCZx287INL9qaqrZg34e8NgI4g==}
+    dev: true
 
-  scule@1.3.0: {}
+  /sdp@3.2.1:
+    resolution: {integrity: sha512-lwsAIzOPlH8/7IIjjz3K0zYBk7aBVVcvjMwt3M4fLxpjMYyy7i3I97SLHebgn4YBjirkzfp3RvRDWSKsh/+WFw==}
+    dev: false
 
-  sdp@3.2.1: {}
+  /seedrandom@3.0.5:
+    resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==}
+    dev: false
 
-  seedrandom@3.0.5: {}
+  /select@1.1.2:
+    resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==}
+    dev: false
 
-  select@1.1.2: {}
+  /semver@7.7.3:
+    resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
+    engines: {node: '>=10'}
+    hasBin: true
+    dev: true
 
-  semver@7.7.3: {}
-
-  send@0.19.2:
+  /send@0.19.2:
+    resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==}
+    engines: {node: '>= 0.8.0'}
     dependencies:
       debug: 2.6.9
       depd: 2.0.0
@@ -7621,8 +6088,11 @@
       statuses: 2.0.2
     transitivePeerDependencies:
       - supports-color
+    dev: false
 
-  serve-static@1.16.3:
+  /serve-static@1.16.3:
+    resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==}
+    engines: {node: '>= 0.8.0'}
     dependencies:
       encodeurl: 2.0.0
       escape-html: 1.0.3
@@ -7630,8 +6100,11 @@
       send: 0.19.2
     transitivePeerDependencies:
       - supports-color
+    dev: false
 
-  set-function-length@1.2.2:
+  /set-function-length@1.2.2:
+    resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       define-data-property: 1.1.4
       es-errors: 1.3.0
@@ -7640,31 +6113,46 @@
       gopd: 1.2.0
       has-property-descriptors: 1.0.2
 
-  set-function-name@2.0.2:
+  /set-function-name@2.0.2:
+    resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       define-data-property: 1.1.4
       es-errors: 1.3.0
       functions-have-names: 1.2.3
       has-property-descriptors: 1.0.2
 
-  set-proto@1.0.0:
+  /set-proto@1.0.0:
+    resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       dunder-proto: 1.0.1
       es-errors: 1.3.0
       es-object-atoms: 1.1.1
+    dev: true
 
-  set-value@2.0.1:
+  /set-value@2.0.1:
+    resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       extend-shallow: 2.0.1
       is-extendable: 0.1.1
       is-plain-object: 2.0.4
       split-string: 3.1.0
+    dev: true
 
-  setimmediate@1.0.5: {}
+  /setimmediate@1.0.5:
+    resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
+    dev: false
 
-  setprototypeof@1.2.0: {}
+  /setprototypeof@1.2.0:
+    resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+    dev: false
 
-  sharp@0.32.6:
+  /sharp@0.32.6:
+    resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==}
+    engines: {node: '>=14.15.0'}
+    requiresBuild: true
     dependencies:
       color: 4.2.3
       detect-libc: 2.1.2
@@ -7678,102 +6166,147 @@
       - bare-abort-controller
       - bare-buffer
       - react-native-b4a
+    dev: true
 
-  shebang-command@2.0.0:
+  /shebang-command@2.0.0:
+    resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+    engines: {node: '>=8'}
     dependencies:
       shebang-regex: 3.0.0
+    dev: true
 
-  shebang-regex@3.0.0: {}
+  /shebang-regex@3.0.0:
+    resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+    engines: {node: '>=8'}
+    dev: true
 
-  side-channel-list@1.0.0:
+  /side-channel-list@1.0.0:
+    resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+    engines: {node: '>= 0.4'}
     dependencies:
       es-errors: 1.3.0
       object-inspect: 1.13.4
+    dev: true
 
-  side-channel-map@1.0.1:
+  /side-channel-map@1.0.1:
+    resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       es-errors: 1.3.0
       get-intrinsic: 1.3.0
       object-inspect: 1.13.4
+    dev: true
 
-  side-channel-weakmap@1.0.2:
+  /side-channel-weakmap@1.0.2:
+    resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       es-errors: 1.3.0
       get-intrinsic: 1.3.0
       object-inspect: 1.13.4
       side-channel-map: 1.0.1
+    dev: true
 
-  side-channel@1.1.0:
+  /side-channel@1.1.0:
+    resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       es-errors: 1.3.0
       object-inspect: 1.13.4
       side-channel-list: 1.0.0
       side-channel-map: 1.0.1
       side-channel-weakmap: 1.0.2
+    dev: true
 
-  signal-exit@3.0.7: {}
+  /signal-exit@3.0.7:
+    resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+    dev: true
 
-  signal-exit@4.1.0: {}
+  /signal-exit@4.1.0:
+    resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+    engines: {node: '>=14'}
+    dev: true
 
-  signature_pad@5.1.3: {}
+  /signature_pad@5.1.3:
+    resolution: {integrity: sha512-zyxW5vuJVnQdGcU+kAj9FYl7WaAunY3kA5S7mPg0xJiujL9+sPAWfSQHS5tXaJXDUa4FuZeKhfdCDQ6K3wfkpQ==}
+    dev: false
 
-  simple-concat@1.0.1: {}
+  /simple-concat@1.0.1:
+    resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
+    dev: true
 
-  simple-get@4.0.1:
+  /simple-get@4.0.1:
+    resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
     dependencies:
       decompress-response: 6.0.0
       once: 1.4.0
       simple-concat: 1.0.1
+    dev: true
 
-  simple-swizzle@0.2.4:
+  /simple-swizzle@0.2.4:
+    resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==}
     dependencies:
       is-arrayish: 0.3.4
+    dev: true
 
-  skmeans@0.9.7: {}
+  /skmeans@0.9.7:
+    resolution: {integrity: sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==}
+    dev: false
 
-  slate-history@0.109.0(slate@0.82.1):
-    dependencies:
-      is-plain-object: 5.0.0
-      slate: 0.82.1
-
-  slate-history@0.66.0(slate@0.72.8):
+  /slate-history@0.66.0(slate@0.72.8):
+    resolution: {integrity: sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==}
+    peerDependencies:
+      slate: '>=0.65.3'
     dependencies:
       is-plain-object: 5.0.0
       slate: 0.72.8
+    dev: false
 
-  slate@0.72.8:
+  /slate@0.72.8:
+    resolution: {integrity: sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==}
     dependencies:
       immer: 9.0.21
       is-plain-object: 5.0.0
       tiny-warning: 1.0.3
+    dev: false
 
-  slate@0.82.1:
-    dependencies:
-      immer: 9.0.21
-      is-plain-object: 5.0.0
-      tiny-warning: 1.0.3
-
-  sm-crypto@0.3.13:
+  /sm-crypto@0.3.13:
+    resolution: {integrity: sha512-ztNF+pZq6viCPMA1A6KKu3bgpkmYti5avykRHbcFIdSipFdkVmfUw2CnpM2kBJyppIalqvczLNM3wR8OQ0pT5w==}
     dependencies:
       jsbn: 1.1.0
+    dev: false
 
-  smart-buffer@4.2.0: {}
+  /smart-buffer@4.2.0:
+    resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
+    engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
+    dev: false
 
-  snabbdom@3.6.3: {}
+  /snabbdom@3.6.3:
+    resolution: {integrity: sha512-W2lHLLw2qR2Vv0DcMmcxXqcfdBaIcoN+y/86SmHv8fn4DazEQSH6KN3TjZcWvwujW56OHiiirsbHWZb4vx/0fg==}
+    engines: {node: '>=12.17.0'}
+    dev: false
 
-  snapdragon-node@2.1.1:
+  /snapdragon-node@2.1.1:
+    resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       define-property: 1.0.0
       isobject: 3.0.1
       snapdragon-util: 3.0.1
+    dev: true
 
-  snapdragon-util@3.0.1:
+  /snapdragon-util@3.0.1:
+    resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       kind-of: 3.2.2
+    dev: true
 
-  snapdragon@0.8.2:
+  /snapdragon@0.8.2:
+    resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       base: 0.11.2
       debug: 2.6.9
@@ -7785,72 +6318,124 @@
       use: 3.1.1
     transitivePeerDependencies:
       - supports-color
+    dev: true
 
-  socks@2.8.7:
+  /socks@2.8.7:
+    resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==}
+    engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
     dependencies:
       ip-address: 10.1.0
       smart-buffer: 4.2.0
+    dev: false
 
-  sortablejs@1.14.0: {}
+  /sortablejs@1.14.0:
+    resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==}
+    dev: false
 
-  source-map-js@1.2.1: {}
+  /source-map-js@1.2.1:
+    resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+    engines: {node: '>=0.10.0'}
 
-  source-map-resolve@0.5.3:
+  /source-map-resolve@0.5.3:
+    resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
+    deprecated: See https://github.com/lydell/source-map-resolve#deprecated
     dependencies:
       atob: 2.1.2
       decode-uri-component: 0.2.2
       resolve-url: 0.2.1
       source-map-url: 0.4.1
       urix: 0.1.0
+    dev: true
 
-  source-map-support@0.5.21:
+  /source-map-support@0.5.21:
+    resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
     dependencies:
       buffer-from: 1.1.2
       source-map: 0.6.1
+    dev: true
 
-  source-map-url@0.4.1: {}
+  /source-map-url@0.4.1:
+    resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
+    deprecated: See https://github.com/lydell/source-map-url#deprecated
+    dev: true
 
-  source-map@0.5.7: {}
+  /source-map@0.5.7:
+    resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  source-map@0.6.1: {}
+  /source-map@0.6.1:
+    resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+    engines: {node: '>=0.10.0'}
 
-  sourcemap-codec@1.4.8: {}
+  /sourcemap-codec@1.4.8:
+    resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+    deprecated: Please use @jridgewell/sourcemap-codec instead
+    dev: true
 
-  splaytree@3.2.3: {}
+  /splaytree@3.2.3:
+    resolution: {integrity: sha512-7OXrNWzy6CK+r7Ch9OLPBDTKfB6XlWHjX4P0RU5B3IgFuWPeYN0XtRtlexGRjgbQxpfaUve6jTAwBGWuGntz/w==}
+    engines: {node: '>=18.20 || >=20'}
+    dev: false
 
-  split-string@3.1.0:
+  /split-string@3.1.0:
+    resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       extend-shallow: 3.0.2
+    dev: true
 
-  split2@4.2.0: {}
+  /split2@4.2.0:
+    resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
+    engines: {node: '>= 10.x'}
+    dev: false
 
-  ssf@0.11.2:
+  /ssf@0.11.2:
+    resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==}
+    engines: {node: '>=0.8'}
     dependencies:
       frac: 1.1.2
+    dev: false
 
-  ssr-window@3.0.0: {}
+  /ssr-window@3.0.0:
+    resolution: {integrity: sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==}
+    dev: false
 
-  ssr-window@4.0.2: {}
+  /stable@0.1.8:
+    resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
+    deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
+    dev: true
 
-  stable@0.1.8: {}
-
-  static-extend@0.1.2:
+  /static-extend@0.1.2:
+    resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       define-property: 0.2.5
       object-copy: 0.1.0
+    dev: true
 
-  statuses@2.0.2: {}
+  /statuses@2.0.2:
+    resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
+    engines: {node: '>= 0.8'}
+    dev: false
 
-  stdin-discarder@0.1.0:
+  /stdin-discarder@0.1.0:
+    resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==}
+    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
     dependencies:
       bl: 5.1.0
+    dev: true
 
-  stop-iteration-iterator@1.1.0:
+  /stop-iteration-iterator@1.1.0:
+    resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       es-errors: 1.3.0
       internal-slot: 1.1.0
+    dev: true
 
-  streamx@2.23.0:
+  /streamx@2.23.0:
+    resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==}
     dependencies:
       events-universal: 1.0.1
       fast-fifo: 1.3.2
@@ -7858,28 +6443,43 @@
     transitivePeerDependencies:
       - bare-abort-controller
       - react-native-b4a
+    dev: true
 
-  strict-uri-encode@1.1.0: {}
+  /strict-uri-encode@1.1.0:
+    resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  string-width@4.2.3:
+  /string-width@4.2.3:
+    resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+    engines: {node: '>=8'}
     dependencies:
       emoji-regex: 8.0.0
       is-fullwidth-code-point: 3.0.0
       strip-ansi: 6.0.1
+    dev: true
 
-  string-width@5.1.2:
+  /string-width@5.1.2:
+    resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+    engines: {node: '>=12'}
     dependencies:
       eastasianwidth: 0.2.0
       emoji-regex: 9.2.2
       strip-ansi: 7.1.2
+    dev: true
 
-  string-width@6.1.0:
+  /string-width@6.1.0:
+    resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==}
+    engines: {node: '>=16'}
     dependencies:
       eastasianwidth: 0.2.0
       emoji-regex: 10.6.0
       strip-ansi: 7.1.2
+    dev: true
 
-  string.prototype.trim@1.2.10:
+  /string.prototype.trim@1.2.10:
+    resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind: 1.0.8
       call-bound: 1.0.4
@@ -7888,57 +6488,91 @@
       es-abstract: 1.24.1
       es-object-atoms: 1.1.1
       has-property-descriptors: 1.0.2
+    dev: true
 
-  string.prototype.trimend@1.0.9:
+  /string.prototype.trimend@1.0.9:
+    resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind: 1.0.8
       call-bound: 1.0.4
       define-properties: 1.2.1
       es-object-atoms: 1.1.1
+    dev: true
 
-  string.prototype.trimstart@1.0.8:
+  /string.prototype.trimstart@1.0.8:
+    resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind: 1.0.8
       define-properties: 1.2.1
       es-object-atoms: 1.1.1
+    dev: true
 
-  string_decoder@1.1.1:
+  /string_decoder@1.1.1:
+    resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
     dependencies:
       safe-buffer: 5.1.2
+    dev: false
 
-  string_decoder@1.3.0:
+  /string_decoder@1.3.0:
+    resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
     dependencies:
       safe-buffer: 5.2.1
 
-  strip-ansi@3.0.1:
+  /strip-ansi@3.0.1:
+    resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       ansi-regex: 2.1.1
+    dev: true
 
-  strip-ansi@6.0.1:
+  /strip-ansi@6.0.1:
+    resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+    engines: {node: '>=8'}
     dependencies:
       ansi-regex: 5.0.1
+    dev: true
 
-  strip-ansi@7.1.2:
+  /strip-ansi@7.1.2:
+    resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}
+    engines: {node: '>=12'}
     dependencies:
       ansi-regex: 6.2.2
+    dev: true
 
-  strip-json-comments@2.0.1: {}
+  /strip-json-comments@2.0.1:
+    resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  strip-literal@1.3.0:
+  /strip-literal@0.4.2:
+    resolution: {integrity: sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==}
     dependencies:
       acorn: 8.15.0
+    dev: true
 
-  supports-color@2.0.0: {}
+  /supports-color@2.0.0:
+    resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==}
+    engines: {node: '>=0.8.0'}
+    dev: true
 
-  supports-color@3.2.3:
+  /supports-color@3.2.3:
+    resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==}
+    engines: {node: '>=0.8.0'}
     dependencies:
       has-flag: 1.0.0
+    dev: true
 
-  supports-color@7.2.0:
+  /supports-color@7.2.0:
+    resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+    engines: {node: '>=8'}
     dependencies:
       has-flag: 4.0.0
+    dev: true
 
-  svg-baker@1.7.0:
+  /svg-baker@1.7.0:
+    resolution: {integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==}
     dependencies:
       bluebird: 3.7.2
       clone: 2.1.2
@@ -7955,8 +6589,12 @@
       traverse: 0.6.11
     transitivePeerDependencies:
       - supports-color
+    dev: true
 
-  svgo@2.8.0:
+  /svgo@2.8.0:
+    resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==}
+    engines: {node: '>=10.13.0'}
+    hasBin: true
     dependencies:
       '@trysound/sax': 0.2.0
       commander: 7.2.0
@@ -7965,15 +6603,19 @@
       csso: 4.2.0
       picocolors: 1.1.1
       stable: 0.1.8
+    dev: true
 
-  tar-fs@2.1.4:
+  /tar-fs@2.1.4:
+    resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==}
     dependencies:
       chownr: 1.1.4
       mkdirp-classic: 0.5.3
       pump: 3.0.3
       tar-stream: 2.2.0
+    dev: true
 
-  tar-fs@3.1.1:
+  /tar-fs@3.1.1:
+    resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==}
     dependencies:
       pump: 3.0.3
       tar-stream: 3.1.7
@@ -7984,16 +6626,21 @@
       - bare-abort-controller
       - bare-buffer
       - react-native-b4a
+    dev: true
 
-  tar-stream@2.2.0:
+  /tar-stream@2.2.0:
+    resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
+    engines: {node: '>=6'}
     dependencies:
       bl: 4.1.0
       end-of-stream: 1.4.5
       fs-constants: 1.0.0
       inherits: 2.0.4
       readable-stream: 3.6.2
+    dev: true
 
-  tar-stream@3.1.7:
+  /tar-stream@3.1.7:
+    resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
     dependencies:
       b4a: 1.7.3
       fast-fifo: 1.3.2
@@ -8001,97 +6648,159 @@
     transitivePeerDependencies:
       - bare-abort-controller
       - react-native-b4a
+    dev: true
 
-  terser@5.44.1:
+  /terser@5.31.1:
+    resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==}
+    engines: {node: '>=10'}
+    hasBin: true
     dependencies:
       '@jridgewell/source-map': 0.3.11
       acorn: 8.15.0
       commander: 2.20.3
       source-map-support: 0.5.21
+    dev: true
 
-  text-decoder@1.2.3:
+  /text-decoder@1.2.3:
+    resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
     dependencies:
       b4a: 1.7.3
     transitivePeerDependencies:
       - react-native-b4a
+    dev: true
 
-  tiny-emitter@2.1.0: {}
+  /tiny-emitter@2.1.0:
+    resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==}
+    dev: false
 
-  tiny-svg@3.1.3: {}
+  /tiny-svg@3.1.3:
+    resolution: {integrity: sha512-9mwnPqXInRsBmH/DO6NMxBE++9LsqpVXQSSTZGc5bomoKKvL5OX/Hlotw7XVXP6XLRcHWIzZpxfovGqWKgCypQ==}
+    dev: false
 
-  tiny-warning@1.0.3: {}
+  /tiny-warning@1.0.3:
+    resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==}
+    dev: false
 
-  tinyqueue@3.0.0: {}
+  /tinyqueue@3.0.0:
+    resolution: {integrity: sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==}
+    dev: false
 
-  to-object-path@0.3.0:
+  /to-object-path@0.3.0:
+    resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       kind-of: 3.2.2
+    dev: true
 
-  to-regex-range@2.1.1:
+  /to-regex-range@2.1.1:
+    resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       is-number: 3.0.0
       repeat-string: 1.6.1
+    dev: true
 
-  to-regex-range@5.0.1:
+  /to-regex-range@5.0.1:
+    resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+    engines: {node: '>=8.0'}
     dependencies:
       is-number: 7.0.0
+    dev: true
 
-  to-regex@3.0.2:
+  /to-regex@3.0.2:
+    resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       define-property: 2.0.2
       extend-shallow: 3.0.2
       regex-not: 1.0.2
       safe-regex: 1.1.0
+    dev: true
 
-  toidentifier@1.0.1: {}
+  /toidentifier@1.0.1:
+    resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+    engines: {node: '>=0.6'}
+    dev: false
 
-  topojson-client@3.1.0:
+  /topojson-client@3.1.0:
+    resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==}
+    hasBin: true
     dependencies:
       commander: 2.20.3
+    dev: false
 
-  topojson-server@3.0.1:
+  /topojson-server@3.0.1:
+    resolution: {integrity: sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==}
+    hasBin: true
     dependencies:
       commander: 2.20.3
+    dev: false
 
-  traverse@0.6.11:
+  /traverse@0.6.11:
+    resolution: {integrity: sha512-vxXDZg8/+p3gblxB6BhhG5yWVn1kGRlaL8O78UDXc3wRnPizB5g83dcvWV1jpDMIPnjZjOFuxlMmE82XJ4407w==}
+    engines: {node: '>= 0.4'}
     dependencies:
       gopd: 1.2.0
       typedarray.prototype.slice: 1.0.5
       which-typed-array: 1.1.19
+    dev: true
 
-  trtc-sdk-v5@5.14.1:
+  /trtc-sdk-v5@5.14.0:
+    resolution: {integrity: sha512-DzPDAq0DX0OWJzQ1mDvj5IODvhfbjcCK3Q6s1qJLtXuXdYd3sa56YWOVw1tBbCLYuM8uBK2ZQ+FNpJkxpfO5Rw==}
     dependencies:
       webrtc-adapter: 8.2.4
+    dev: false
 
-  tslib@2.3.0: {}
+  /tslib@2.3.0:
+    resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
+    dev: false
 
-  tslib@2.8.1: {}
+  /tslib@2.8.1:
+    resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+    dev: false
 
-  tunnel-agent@0.6.0:
+  /tunnel-agent@0.6.0:
+    resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
     dependencies:
       safe-buffer: 5.2.1
+    dev: true
 
-  turf-jsts@1.2.3: {}
+  /turf-jsts@1.2.3:
+    resolution: {integrity: sha512-Ja03QIJlPuHt4IQ2FfGex4F4JAr8m3jpaHbFbQrgwr7s7L6U8ocrHiF3J1+wf9jzhGKxvDeaCAnGDot8OjGFyA==}
+    dev: false
 
-  type-fest@2.19.0: {}
+  /type-fest@2.19.0:
+    resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
+    engines: {node: '>=12.20'}
+    dev: true
 
-  type@2.7.3: {}
+  /type@2.7.3:
+    resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==}
+    dev: false
 
-  typed-array-buffer@1.0.3:
+  /typed-array-buffer@1.0.3:
+    resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       es-errors: 1.3.0
       is-typed-array: 1.1.15
+    dev: true
 
-  typed-array-byte-length@1.0.3:
+  /typed-array-byte-length@1.0.3:
+    resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind: 1.0.8
       for-each: 0.3.5
       gopd: 1.2.0
       has-proto: 1.2.0
       is-typed-array: 1.1.15
+    dev: true
 
-  typed-array-byte-offset@1.0.4:
+  /typed-array-byte-offset@1.0.4:
+    resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
+    engines: {node: '>= 0.4'}
     dependencies:
       available-typed-arrays: 1.0.7
       call-bind: 1.0.8
@@ -8100,8 +6809,11 @@
       has-proto: 1.2.0
       is-typed-array: 1.1.15
       reflect.getprototypeof: 1.0.10
+    dev: true
 
-  typed-array-length@1.0.7:
+  /typed-array-length@1.0.7:
+    resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind: 1.0.8
       for-each: 0.3.5
@@ -8109,10 +6821,16 @@
       is-typed-array: 1.1.15
       possible-typed-array-names: 1.1.0
       reflect.getprototypeof: 1.0.10
+    dev: true
 
-  typed-function@2.1.0: {}
+  /typed-function@2.1.0:
+    resolution: {integrity: sha512-bctQIOqx2iVbWGDGPWwIm18QScpu2XRmkC19D8rQGFsjKSgteq/o1hTZvIG/wuDq8fanpBDrLkLq+aEN/6y5XQ==}
+    engines: {node: '>= 10'}
+    dev: false
 
-  typedarray.prototype.slice@1.0.5:
+  /typedarray.prototype.slice@1.0.5:
+    resolution: {integrity: sha512-q7QNVDGTdl702bVFiI5eY4l/HkgCM6at9KhcFbgUAzezHFbOVy4+0O/lCjsABEQwbZPravVfBIiBVGo89yzHFg==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bind: 1.0.8
       define-properties: 1.2.1
@@ -8122,88 +6840,132 @@
       math-intrinsics: 1.1.0
       typed-array-buffer: 1.0.3
       typed-array-byte-offset: 1.0.4
+    dev: true
 
-  typedarray@0.0.6: {}
+  /typedarray@0.0.6:
+    resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
+    dev: false
 
-  ufo@1.6.1: {}
+  /ufo@1.6.1:
+    resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
+    dev: true
 
-  unbox-primitive@1.1.0:
+  /unbox-primitive@1.1.0:
+    resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       has-bigints: 1.1.0
       has-symbols: 1.1.0
       which-boxed-primitive: 1.1.1
+    dev: true
 
-  undici-types@7.16.0: {}
+  /undici-types@7.16.0:
+    resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
 
-  unimport@1.3.0(rollup@4.54.0):
+  /unimport@0.6.8:
+    resolution: {integrity: sha512-MWkaPYvN0j+6jfEuiVFhfmy+aOtgAP11CozSbu/I3Cx+8ybjXIueB7GVlKofHabtjzSlPeAvWKJSFjHWsG2JaA==}
     dependencies:
-      '@rollup/pluginutils': 5.3.0(rollup@4.54.0)
+      '@rollup/pluginutils': 4.2.1
       escape-string-regexp: 5.0.0
       fast-glob: 3.3.3
       local-pkg: 0.4.3
-      magic-string: 0.27.0
-      mlly: 1.8.0
-      pathe: 1.1.2
-      pkg-types: 1.3.1
-      scule: 1.3.0
-      strip-literal: 1.3.0
-      unplugin: 1.16.1
-    transitivePeerDependencies:
-      - rollup
+      magic-string: 0.26.7
+      mlly: 0.5.17
+      pathe: 0.3.9
+      scule: 0.3.2
+      strip-literal: 0.4.2
+      unplugin: 0.9.6
+    dev: true
 
-  union-value@1.0.1:
+  /union-value@1.0.1:
+    resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       arr-union: 3.1.0
       get-value: 2.0.6
       is-extendable: 0.1.1
       set-value: 2.0.1
+    dev: true
 
-  universalify@2.0.1: {}
+  /universalify@2.0.1:
+    resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+    engines: {node: '>= 10.0.0'}
 
-  unplugin-auto-import@0.11.5(@vueuse/core@9.13.0(vue@3.5.26))(rollup@4.54.0):
+  /unplugin-auto-import@0.11.2:
+    resolution: {integrity: sha512-1+VwBfn9dtiYv9SQLKP1AvZolUbK9xTVeAT+iOcEk4EHSFUlmIqBVLEKI76cifSQTLOJ3rZyPrEgptf3SZNLlQ==}
+    engines: {node: '>=14'}
+    peerDependencies:
+      '@vueuse/core': '*'
+    peerDependenciesMeta:
+      '@vueuse/core':
+        optional: true
     dependencies:
-      '@antfu/utils': 0.7.10
-      '@rollup/pluginutils': 5.3.0(rollup@4.54.0)
+      '@antfu/utils': 0.5.2
+      '@rollup/pluginutils': 4.2.1
       local-pkg: 0.4.3
       magic-string: 0.26.7
-      unimport: 1.3.0(rollup@4.54.0)
-      unplugin: 1.16.1
-    optionalDependencies:
-      '@vueuse/core': 9.13.0(vue@3.5.26)
-    transitivePeerDependencies:
-      - rollup
+      unimport: 0.6.8
+      unplugin: 0.9.6
+    dev: true
 
-  unplugin@1.16.1:
+  /unplugin@0.9.6:
+    resolution: {integrity: sha512-YYLtfoNiie/lxswy1GOsKXgnLJTE27la/PeCGznSItk+8METYZErO+zzV9KQ/hXhPwzIJsfJ4s0m1Rl7ZCWZ4Q==}
     dependencies:
       acorn: 8.15.0
-      webpack-virtual-modules: 0.6.2
+      chokidar: 3.6.0
+      webpack-sources: 3.3.3
+      webpack-virtual-modules: 0.4.6
+    dev: true
 
-  unset-value@1.0.0:
+  /unset-value@1.0.0:
+    resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
+    engines: {node: '>=0.10.0'}
     dependencies:
       has-value: 0.3.1
       isobject: 3.0.1
+    dev: true
 
-  urijs@1.19.11: {}
+  /urijs@1.19.11:
+    resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==}
+    dev: false
 
-  urix@0.1.0: {}
+  /urix@0.1.0:
+    resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
+    deprecated: Please see https://github.com/lydell/urix#deprecated
+    dev: true
 
-  use@3.1.1: {}
+  /use@3.1.1:
+    resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
 
-  util-deprecate@1.0.2: {}
+  /util-deprecate@1.0.2:
+    resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
 
-  uuid@11.1.0: {}
+  /uuid@11.1.0:
+    resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
+    hasBin: true
+    dev: false
 
-  vant@4.9.22(vue@3.5.26):
+  /vant@4.9.21(vue@3.5.13):
+    resolution: {integrity: sha512-hXUoZMrLLjykimFRLDlGNd+K2iYSRh9YwLMKnsVdVZ+9inUKxpqnjhOqlZwocbnYkvJlS+febf9u9aJpDol4Pw==}
+    peerDependencies:
+      vue: ^3.0.0
     dependencies:
       '@vant/popperjs': 1.3.0
-      '@vant/use': 1.6.0(vue@3.5.26)
+      '@vant/use': 1.6.0(vue@3.5.13)
       '@vue/shared': 3.5.26
-      vue: 3.5.26
+      vue: 3.5.13
+    dev: false
 
-  vary@1.1.2: {}
+  /vary@1.1.2:
+    resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+    engines: {node: '>= 0.8'}
+    dev: true
 
-  video.js@8.23.4:
+  /video.js@8.23.4:
+    resolution: {integrity: sha512-qI0VTlYmKzEqRsz1Nppdfcaww4RSxZAq77z2oNSl3cNg2h6do5C8Ffl0KqWQ1OpD8desWXsCrde7tKJ9gGTEyQ==}
     dependencies:
       '@babel/runtime': 7.28.4
       '@videojs/http-streaming': 3.17.2(video.js@8.23.4)
@@ -8217,48 +6979,71 @@
       videojs-contrib-quality-levels: 4.1.0(video.js@8.23.4)
       videojs-font: 4.2.0
       videojs-vtt.js: 0.15.5
+    dev: false
 
-  videojs-contrib-quality-levels@4.1.0(video.js@8.23.4):
+  /videojs-contrib-quality-levels@4.1.0(video.js@8.23.4):
+    resolution: {integrity: sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==}
+    engines: {node: '>=16', npm: '>=8'}
+    peerDependencies:
+      video.js: ^8
     dependencies:
       global: 4.4.0
       video.js: 8.23.4
+    dev: false
 
-  videojs-font@4.2.0: {}
+  /videojs-font@4.2.0:
+    resolution: {integrity: sha512-YPq+wiKoGy2/M7ccjmlvwi58z2xsykkkfNMyIg4xb7EZQQNwB71hcSsB3o75CqQV7/y5lXkXhI/rsGAS7jfEmQ==}
+    dev: false
 
-  videojs-markers@1.0.1(video.js@8.23.4):
+  /videojs-markers@1.0.1(video.js@8.23.4):
+    resolution: {integrity: sha512-jw3jRhanwno0YgdRR9+z6cbdmMs/jeXcrgkMr6mlEP+XfZN+isWNYp0GnPvdXrBcnb6AANdDHlnXSmIvecEzWA==}
+    peerDependencies:
+      video.js: '>=4'
     dependencies:
       video.js: 8.23.4
+    dev: false
 
-  videojs-vtt.js@0.15.5:
+  /videojs-vtt.js@0.15.5:
+    resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==}
     dependencies:
       global: 4.4.0
+    dev: false
 
-  vite-plugin-compression@0.5.1(vite@5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1)):
+  /vite-plugin-compression@0.5.1(vite@5.2.12):
+    resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==}
+    peerDependencies:
+      vite: '>=2.0.0'
     dependencies:
       chalk: 4.1.2
       debug: 4.4.3
       fs-extra: 10.1.0
-      vite: 5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1)
+      vite: 5.2.12(sass@1.85.1)(terser@5.31.1)
     transitivePeerDependencies:
       - supports-color
+    dev: true
 
-  vite-plugin-minipic@1.3.2:
+  /vite-plugin-minipic@1.3.0:
+    resolution: {integrity: sha512-iSfqsXqxDg0NZW+3UrSG9PkLjL2DbleDoXeI5jd48kze770bOuJa4WhH4/OYhaDvy8jaCTSVeV5jmDksIcXh+w==}
     dependencies:
-      '@rollup/pluginutils': 5.3.0(rollup@4.54.0)
+      '@rollup/pluginutils': 5.3.0(rollup@4.55.1)
       boxen: 7.1.1
       chalk: 5.6.2
       filesize: 10.1.6
       glob: 10.5.0
       lodash-es: 4.17.22
       ora: 7.0.1
-      rollup: 4.54.0
+      rollup: 4.55.1
       sharp: 0.32.6
     transitivePeerDependencies:
       - bare-abort-controller
       - bare-buffer
       - react-native-b4a
+    dev: true
 
-  vite-plugin-svg-icons@2.0.1(vite@5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1)):
+  /vite-plugin-svg-icons@2.0.1(vite@5.2.12):
+    resolution: {integrity: sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==}
+    peerDependencies:
+      vite: '>=2.0.0'
     dependencies:
       '@types/svgo': 2.6.4
       cors: 2.8.5
@@ -8268,81 +7053,165 @@
       pathe: 0.2.0
       svg-baker: 1.7.0
       svgo: 2.8.0
-      vite: 5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1)
+      vite: 5.2.12(sass@1.85.1)(terser@5.31.1)
     transitivePeerDependencies:
       - supports-color
+    dev: true
 
-  vite-plugin-vue-setup-extend@0.4.0(vite@5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1)):
+  /vite-plugin-vue-setup-extend@0.4.0(vite@5.2.12):
+    resolution: {integrity: sha512-WMbjPCui75fboFoUTHhdbXzu4Y/bJMv5N9QT9a7do3wNMNHHqrk+Tn2jrSJU0LS5fGl/EG+FEDBYVUeWIkDqXQ==}
+    peerDependencies:
+      vite: '>=2.0.0'
     dependencies:
-      '@vue/compiler-sfc': 3.5.26
+      '@vue/compiler-sfc': 3.4.27
       magic-string: 0.25.9
-      vite: 5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1)
+      vite: 5.2.12(sass@1.85.1)(terser@5.31.1)
+    dev: true
 
-  vite@5.2.12(@types/node@25.0.3)(sass@1.97.1)(terser@5.44.1):
+  /vite@5.2.12(sass@1.85.1)(terser@5.31.1):
+    resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==}
+    engines: {node: ^18.0.0 || >=20.0.0}
+    hasBin: true
+    peerDependencies:
+      '@types/node': ^18.0.0 || >=20.0.0
+      less: '*'
+      lightningcss: ^1.21.0
+      sass: '*'
+      stylus: '*'
+      sugarss: '*'
+      terser: ^5.4.0
+    peerDependenciesMeta:
+      '@types/node':
+        optional: true
+      less:
+        optional: true
+      lightningcss:
+        optional: true
+      sass:
+        optional: true
+      stylus:
+        optional: true
+      sugarss:
+        optional: true
+      terser:
+        optional: true
     dependencies:
       esbuild: 0.20.2
       postcss: 8.5.6
-      rollup: 4.54.0
+      rollup: 4.55.1
+      sass: 1.85.1
+      terser: 5.31.1
     optionalDependencies:
-      '@types/node': 25.0.3
       fsevents: 2.3.3
-      sass: 1.97.1
-      terser: 5.44.1
+    dev: true
 
-  vue-demi@0.14.10(vue@3.5.26):
+  /vue-demi@0.14.10(vue@3.5.13):
+    resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
+    engines: {node: '>=12'}
+    hasBin: true
+    peerDependencies:
+      '@vue/composition-api': ^1.0.0-rc.1
+      vue: ^3.0.0-0 || ^2.6.0
+    peerDependenciesMeta:
+      '@vue/composition-api':
+        optional: true
     dependencies:
-      vue: 3.5.26
+      vue: 3.5.13
+    dev: false
 
-  vue-i18n@9.14.5(vue@3.5.26):
+  /vue-i18n@9.1.9(vue@3.5.13):
+    resolution: {integrity: sha512-JeRdNVxS2OGp1E+pye5XB6+M6BBkHwAv9C80Q7+kzoMdUDGRna06tjC0vCB/jDX9aWrl5swxOMFcyAr7or8XTA==}
+    engines: {node: '>= 10'}
+    peerDependencies:
+      vue: ^3.0.0
     dependencies:
-      '@intlify/core-base': 9.14.5
-      '@intlify/shared': 9.14.5
+      '@intlify/core-base': 9.1.9
+      '@intlify/shared': 9.1.9
+      '@intlify/vue-devtools': 9.1.9
       '@vue/devtools-api': 6.6.4
-      vue: 3.5.26
+      vue: 3.5.13
+    dev: false
 
-  vue-router@4.6.4(vue@3.5.26):
+  /vue-router@4.3.2(vue@3.5.13):
+    resolution: {integrity: sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==}
+    peerDependencies:
+      vue: ^3.2.0
     dependencies:
       '@vue/devtools-api': 6.6.4
-      vue: 3.5.26
+      vue: 3.5.13
+    dev: false
 
-  vue3-clipboard@1.0.0(vue@3.5.26):
+  /vue3-clipboard@1.0.0(vue@3.5.13):
+    resolution: {integrity: sha512-GUqKh1oO79xDpq0z+cCv/NDVTpcJGNDzeNgT3PmTdTp/WJh3gcTrDqIYKycKhzMFOtIFJ7hO/+usgyWtT+fNhA==}
+    peerDependencies:
+      vue: ^3.0.0
     dependencies:
       clipboard: 2.0.11
-      vue: 3.5.26
+      vue: 3.5.13
+    dev: false
 
-  vue@3.5.26:
+  /vue@3.5.13:
+    resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==}
+    peerDependencies:
+      typescript: '*'
+    peerDependenciesMeta:
+      typescript:
+        optional: true
     dependencies:
-      '@vue/compiler-dom': 3.5.26
-      '@vue/compiler-sfc': 3.5.26
-      '@vue/runtime-dom': 3.5.26
-      '@vue/server-renderer': 3.5.26(vue@3.5.26)
-      '@vue/shared': 3.5.26
+      '@vue/compiler-dom': 3.5.13
+      '@vue/compiler-sfc': 3.5.13
+      '@vue/runtime-dom': 3.5.13
+      '@vue/server-renderer': 3.5.13(vue@3.5.13)
+      '@vue/shared': 3.5.13
 
-  vuedraggable@4.1.0(vue@3.5.26):
+  /vuedraggable@4.1.0(vue@3.5.13):
+    resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==}
+    peerDependencies:
+      vue: ^3.0.1
     dependencies:
       sortablejs: 1.14.0
-      vue: 3.5.26
+      vue: 3.5.13
+    dev: false
 
-  vuex@4.1.0(vue@3.5.26):
+  /vuex@4.1.0(vue@3.5.13):
+    resolution: {integrity: sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==}
+    peerDependencies:
+      vue: ^3.2.0
     dependencies:
       '@vue/devtools-api': 6.6.4
-      vue: 3.5.26
+      vue: 3.5.13
+    dev: false
 
-  webpack-virtual-modules@0.6.2: {}
+  /webpack-sources@3.3.3:
+    resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==}
+    engines: {node: '>=10.13.0'}
+    dev: true
 
-  webrtc-adapter@8.2.4:
+  /webpack-virtual-modules@0.4.6:
+    resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==}
+    dev: true
+
+  /webrtc-adapter@8.2.4:
+    resolution: {integrity: sha512-VwtwbYNKnVQW8koB9qb8YcxNwpSVHTvvKEZLzY6uQ3gFrA9E87VPbB5xE+m1AGwUjL1UgN35jRR9hQgteZI5bg==}
+    engines: {node: '>=6.0.0', npm: '>=3.10.0'}
     dependencies:
       sdp: 3.2.1
+    dev: false
 
-  which-boxed-primitive@1.1.1:
+  /which-boxed-primitive@1.1.1:
+    resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
+    engines: {node: '>= 0.4'}
     dependencies:
       is-bigint: 1.1.0
       is-boolean-object: 1.2.2
       is-number-object: 1.1.1
       is-string: 1.1.1
       is-symbol: 1.1.1
+    dev: true
 
-  which-builtin-type@1.2.1:
+  /which-builtin-type@1.2.1:
+    resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
+    engines: {node: '>= 0.4'}
     dependencies:
       call-bound: 1.0.4
       function.prototype.name: 1.1.8
@@ -8357,15 +7226,21 @@
       which-boxed-primitive: 1.1.1
       which-collection: 1.0.2
       which-typed-array: 1.1.19
+    dev: true
 
-  which-collection@1.0.2:
+  /which-collection@1.0.2:
+    resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       is-map: 2.0.3
       is-set: 2.0.3
       is-weakmap: 2.0.2
       is-weakset: 2.0.4
+    dev: true
 
-  which-typed-array@1.1.19:
+  /which-typed-array@1.1.19:
+    resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
+    engines: {node: '>= 0.4'}
     dependencies:
       available-typed-arrays: 1.0.7
       call-bind: 1.0.8
@@ -8374,65 +7249,101 @@
       get-proto: 1.0.1
       gopd: 1.2.0
       has-tostringtag: 1.0.2
+    dev: true
 
-  which@2.0.2:
+  /which@2.0.2:
+    resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+    engines: {node: '>= 8'}
+    hasBin: true
     dependencies:
       isexe: 2.0.0
+    dev: true
 
-  widest-line@4.0.1:
+  /widest-line@4.0.1:
+    resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==}
+    engines: {node: '>=12'}
     dependencies:
       string-width: 5.1.2
+    dev: true
 
-  wildcard@1.1.2: {}
+  /wildcard@1.1.2:
+    resolution: {integrity: sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==}
+    dev: false
 
-  wmf@1.0.2: {}
+  /wmf@1.0.2:
+    resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==}
+    engines: {node: '>=0.8'}
+    dev: false
 
-  word@0.3.0: {}
+  /word@0.3.0:
+    resolution: {integrity: sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==}
+    engines: {node: '>=0.8'}
+    dev: false
 
-  worker-factory@7.0.46:
+  /worker-timers-broker@6.1.8:
+    resolution: {integrity: sha512-FUCJu9jlK3A8WqLTKXM9E6kAmI/dR1vAJ8dHYLMisLNB/n3GuaFIjJ7pn16ZcD1zCOf7P6H62lWIEBi+yz/zQQ==}
     dependencies:
       '@babel/runtime': 7.28.4
-      fast-unique-numbers: 9.0.24
+      fast-unique-numbers: 8.0.13
       tslib: 2.8.1
+      worker-timers-worker: 7.0.71
+    dev: false
 
-  worker-timers-broker@8.0.13:
-    dependencies:
-      '@babel/runtime': 7.28.4
-      broker-factory: 3.1.11
-      fast-unique-numbers: 9.0.24
-      tslib: 2.8.1
-      worker-timers-worker: 9.0.11
-
-  worker-timers-worker@9.0.11:
+  /worker-timers-worker@7.0.71:
+    resolution: {integrity: sha512-ks/5YKwZsto1c2vmljroppOKCivB/ma97g9y77MAAz2TBBjPPgpoOiS1qYQKIgvGTr2QYPT3XhJWIB6Rj2MVPQ==}
     dependencies:
       '@babel/runtime': 7.28.4
       tslib: 2.8.1
-      worker-factory: 7.0.46
+    dev: false
 
-  worker-timers@8.0.27:
+  /worker-timers@7.1.8:
+    resolution: {integrity: sha512-R54psRKYVLuzff7c1OTFcq/4Hue5Vlz4bFtNEIarpSiCYhpifHU3aIQI29S84o1j87ePCYqbmEJPqwBTf+3sfw==}
     dependencies:
       '@babel/runtime': 7.28.4
       tslib: 2.8.1
-      worker-timers-broker: 8.0.13
-      worker-timers-worker: 9.0.11
+      worker-timers-broker: 6.1.8
+      worker-timers-worker: 7.0.71
+    dev: false
 
-  wrap-ansi@7.0.0:
+  /wrap-ansi@7.0.0:
+    resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+    engines: {node: '>=10'}
     dependencies:
       ansi-styles: 4.3.0
       string-width: 4.2.3
       strip-ansi: 6.0.1
+    dev: true
 
-  wrap-ansi@8.1.0:
+  /wrap-ansi@8.1.0:
+    resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+    engines: {node: '>=12'}
     dependencies:
       ansi-styles: 6.2.3
       string-width: 5.1.2
       strip-ansi: 7.1.2
+    dev: true
 
-  wrappy@1.0.2: {}
+  /wrappy@1.0.2:
+    resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+    dev: true
 
-  ws@8.18.3: {}
+  /ws@8.19.0:
+    resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==}
+    engines: {node: '>=10.0.0'}
+    peerDependencies:
+      bufferutil: ^4.0.1
+      utf-8-validate: '>=5.0.2'
+    peerDependenciesMeta:
+      bufferutil:
+        optional: true
+      utf-8-validate:
+        optional: true
+    dev: false
 
-  xlsx@0.18.5:
+  /xlsx@0.18.5:
+    resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==}
+    engines: {node: '>=0.8'}
+    hasBin: true
     dependencies:
       adler-32: 1.3.1
       cfb: 1.2.2
@@ -8441,7 +7352,10 @@
       ssf: 0.11.2
       wmf: 1.0.2
       word: 0.3.0
+    dev: false
 
-  zrender@5.6.1:
+  /zrender@5.6.1:
+    resolution: {integrity: sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==}
     dependencies:
       tslib: 2.3.0
+    dev: false

--
Gitblit v1.9.3