Browse Source

fix: sites not getting enabled on deploy #541

Jacky 9 months ago
parent
commit
745e98d1a9

+ 1 - 1
app/package.json

@@ -40,7 +40,7 @@
     "vue-router": "^4.4.5",
     "vue-router": "^4.4.5",
     "vue3-ace-editor": "2.2.4",
     "vue3-ace-editor": "2.2.4",
     "vue3-apexcharts": "1.5.3",
     "vue3-apexcharts": "1.5.3",
-    "vue3-gettext": "3.0.0-beta.5",
+    "vue3-gettext": "3.0.0-beta.6",
     "vue3-otp-input": "^0.5.21",
     "vue3-otp-input": "^0.5.21",
     "vuedraggable": "^4.1.0"
     "vuedraggable": "^4.1.0"
   },
   },

+ 5 - 6
app/pnpm-lock.yaml

@@ -96,8 +96,8 @@ importers:
         specifier: 1.5.3
         specifier: 1.5.3
         version: 1.5.3(apexcharts@3.53.0)(vue@3.5.5(typescript@5.5.4))
         version: 1.5.3(apexcharts@3.53.0)(vue@3.5.5(typescript@5.5.4))
       vue3-gettext:
       vue3-gettext:
-        specifier: 3.0.0-beta.5
-        version: 3.0.0-beta.5(@vue/compiler-sfc@3.5.5)(typescript@5.5.4)(vue@3.5.5(typescript@5.5.4))
+        specifier: 3.0.0-beta.6
+        version: 3.0.0-beta.6(@vue/compiler-sfc@3.5.5)(typescript@5.5.4)(vue@3.5.5(typescript@5.5.4))
       vue3-otp-input:
       vue3-otp-input:
         specifier: ^0.5.21
         specifier: ^0.5.21
         version: 0.5.21(vue@3.5.5(typescript@5.5.4))
         version: 0.5.21(vue@3.5.5(typescript@5.5.4))
@@ -3076,8 +3076,8 @@ packages:
       apexcharts: '> 3.0.0'
       apexcharts: '> 3.0.0'
       vue: '> 3.0.0'
       vue: '> 3.0.0'
 
 
-  vue3-gettext@3.0.0-beta.5:
-    resolution: {integrity: sha512-Dn1qZrFgtaKg/9mMMypvQn+lyyHPAAylQBN4kPGqqr8oAMOJGyKg+rCLCcoyuLGLDvPGBgtawOTQ/0dFmGbDrw==}
+  vue3-gettext@3.0.0-beta.6:
+    resolution: {integrity: sha512-wal9FJEcCrUm807ksxP1fE1xpyk6mGC6bI7laX55wmN1ZJ2pFKnAjia1gRzgJNf/pR5D0qUezx4PGBf6DHoTkA==}
     engines: {node: '>= 18.0.0'}
     engines: {node: '>= 18.0.0'}
     hasBin: true
     hasBin: true
     peerDependencies:
     peerDependencies:
@@ -6349,7 +6349,7 @@ snapshots:
       apexcharts: 3.53.0
       apexcharts: 3.53.0
       vue: 3.5.5(typescript@5.5.4)
       vue: 3.5.5(typescript@5.5.4)
 
 
-  vue3-gettext@3.0.0-beta.5(@vue/compiler-sfc@3.5.5)(typescript@5.5.4)(vue@3.5.5(typescript@5.5.4)):
+  vue3-gettext@3.0.0-beta.6(@vue/compiler-sfc@3.5.5)(typescript@5.5.4)(vue@3.5.5(typescript@5.5.4)):
     dependencies:
     dependencies:
       '@vue/compiler-sfc': 3.5.5
       '@vue/compiler-sfc': 3.5.5
       chalk: 4.1.2
       chalk: 4.1.2
@@ -6360,7 +6360,6 @@ snapshots:
       parse5: 6.0.1
       parse5: 6.0.1
       parse5-htmlparser2-tree-adapter: 6.0.1
       parse5-htmlparser2-tree-adapter: 6.0.1
       pofile: 1.1.4
       pofile: 1.1.4
-      tslib: 2.7.0
       vue: 3.5.5(typescript@5.5.4)
       vue: 3.5.5(typescript@5.5.4)
     transitivePeerDependencies:
     transitivePeerDependencies:
       - typescript
       - typescript

+ 13 - 10
app/src/components/NodeSelector/NodeSelector.vue

@@ -4,12 +4,11 @@ import type { Environment } from '@/api/environment'
 import environment from '@/api/environment'
 import environment from '@/api/environment'
 
 
 const props = defineProps<{
 const props = defineProps<{
-  target?: number[]
-  map?: Record<number, string>
   hiddenLocal?: boolean
   hiddenLocal?: boolean
 }>()
 }>()
 
 
-const emit = defineEmits(['update:target', 'update:map'])
+const target = defineModel<number[]>('target')
+const map = defineModel<Record<number, string>>('map')
 
 
 const data = ref([]) as Ref<Environment[]>
 const data = ref([]) as Ref<Environment[]>
 const data_map = ref({}) as Ref<Record<number, Environment>>
 const data_map = ref({}) as Ref<Record<number, Environment>>
@@ -33,16 +32,20 @@ onMounted(async () => {
 
 
 const value = computed({
 const value = computed({
   get() {
   get() {
-    return props.target
+    return target.value
   },
   },
-  set(v) {
-    if (typeof props.map === 'object') {
-      v?.forEach(id => {
-        if (id !== 0)
-          emit('update:map', { ...props.map, [id]: data_map.value[id].name })
+  set(v: number[]) {
+    console.log(v)
+    if (typeof map.value === 'object') {
+      const _map = {}
+
+      v?.filter(id => id !== 0).forEach(id => {
+        _map[id] = data_map.value[id].name
       })
       })
+
+      map.value = _map
     }
     }
-    emit('update:target', v)
+    target.value = v.filter(id => id !== 0)
   },
   },
 })
 })
 
 

+ 1 - 1
app/src/language/LINGUAS

@@ -1 +1 @@
-es fr_FR ko_KR ru_RU vi_VN zh_CN zh_TW
+en zh_CN zh_TW fr_FR es ru_RU vi_VN ko_KR

+ 70 - 70
app/src/language/en/app.po

@@ -42,8 +42,8 @@ msgstr "Username"
 msgid "Action"
 msgid "Action"
 msgstr "Action"
 msgstr "Action"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:203
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
@@ -52,8 +52,8 @@ msgstr "Action"
 msgid "Add"
 msgid "Add"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:135
-#: src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:143
+#: src/views/config/ConfigEditor.vue:204
 #, fuzzy
 #, fuzzy
 msgid "Add Configuration"
 msgid "Add Configuration"
 msgstr "Edit Configuration"
 msgstr "Edit Configuration"
@@ -172,7 +172,7 @@ msgstr ""
 msgid "Attempts"
 msgid "Attempts"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:116
+#: src/views/preference/Preference.vue:122
 msgid "Auth"
 msgid "Auth"
 msgstr ""
 msgstr ""
 
 
@@ -194,8 +194,8 @@ msgid "Auto-renewal enabled for %{name}"
 msgstr "Auto-renewal enabled for %{name}"
 msgstr "Auto-renewal enabled for %{name}"
 
 
 #: src/views/certificate/CertificateEditor.vue:247
 #: src/views/certificate/CertificateEditor.vue:247
-#: src/views/config/ConfigEditor.vue:205 src/views/config/ConfigList.vue:173
-#: src/views/config/ConfigList.vue:99 src/views/domain/DomainEdit.vue:253
+#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:107
+#: src/views/config/ConfigList.vue:181 src/views/domain/DomainEdit.vue:253
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 msgid "Back"
 msgid "Back"
 msgstr "Back"
 msgstr "Back"
@@ -205,7 +205,7 @@ msgstr "Back"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "Back"
 msgstr "Back"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:215
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:216
 msgid "Back to list"
 msgid "Back to list"
 msgstr ""
 msgstr ""
 
 
@@ -225,9 +225,9 @@ msgstr ""
 msgid "Base information"
 msgid "Base information"
 msgstr "Base information"
 msgstr "Base information"
 
 
-#: src/views/config/ConfigEditor.vue:233
+#: src/views/config/ConfigEditor.vue:241
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/preference/Preference.vue:110
+#: src/views/preference/Preference.vue:116
 #: src/views/stream/components/RightSettings.vue:74
 #: src/views/stream/components/RightSettings.vue:74
 #, fuzzy
 #, fuzzy
 msgid "Basic"
 msgid "Basic"
@@ -261,7 +261,7 @@ msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:21
 #: src/views/domain/components/Deploy.vue:21
@@ -315,7 +315,7 @@ msgid_plural "Changed Certificates"
 msgstr[0] "Certificate is valid"
 msgstr[0] "Certificate is valid"
 msgstr[1] "Certificate is valid"
 msgstr[1] "Certificate is valid"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 #, fuzzy
 #, fuzzy
 msgid "Changed Path"
 msgid "Changed Path"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
@@ -369,7 +369,7 @@ msgstr ""
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "Configuration Name"
 msgstr "Configuration Name"
 
 
-#: src/views/config/ConfigList.vue:91
+#: src/views/config/ConfigList.vue:99
 msgid "Configurations"
 msgid "Configurations"
 msgstr "Configurations"
 msgstr "Configurations"
 
 
@@ -420,12 +420,12 @@ msgstr "Created at"
 msgid "Create Another"
 msgid "Create Another"
 msgstr "Create Another"
 msgstr "Create Another"
 
 
-#: src/views/config/ConfigList.vue:109
+#: src/views/config/ConfigList.vue:117
 #, fuzzy
 #, fuzzy
 msgid "Create File"
 msgid "Create File"
 msgstr "Created at"
 msgstr "Created at"
 
 
-#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:116
+#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:124
 #, fuzzy
 #, fuzzy
 msgid "Create Folder"
 msgid "Create Folder"
 msgstr "Create Another"
 msgstr "Create Another"
@@ -475,8 +475,8 @@ msgid ""
 "indicator."
 "indicator."
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:125
-#: src/views/config/ConfigEditor.vue:86 src/views/config/ConfigList.vue:57
+#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:133
+#: src/views/config/ConfigEditor.vue:94 src/views/config/ConfigList.vue:65
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "Dashboard"
 msgstr "Dashboard"
 
 
@@ -513,7 +513,7 @@ msgstr ""
 msgid "Deleted successfully"
 msgid "Deleted successfully"
 msgstr "Disabled successfully"
 msgstr "Disabled successfully"
 
 
-#: src/views/config/ConfigEditor.vue:276
+#: src/views/config/ConfigEditor.vue:284
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/stream/components/Deploy.vue:103
 #: src/views/stream/components/Deploy.vue:103
@@ -713,7 +713,7 @@ msgstr "Saved successfully"
 msgid "Edit %{n}"
 msgid "Edit %{n}"
 msgstr "Edit %{n}"
 msgstr "Edit %{n}"
 
 
-#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:204
 msgid "Edit Configuration"
 msgid "Edit Configuration"
 msgstr "Edit Configuration"
 msgstr "Edit Configuration"
 
 
@@ -902,16 +902,16 @@ msgstr "Finished"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:208
+#: src/views/config/ConfigEditor.vue:216
 msgid "Format Code"
 msgid "Format Code"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:175
+#: src/views/config/ConfigEditor.vue:183
 #, fuzzy
 #, fuzzy
 msgid "Format error %{msg}"
 msgid "Format error %{msg}"
 msgstr "Save error %{msg}"
 msgstr "Save error %{msg}"
 
 
-#: src/views/config/ConfigEditor.vue:173
+#: src/views/config/ConfigEditor.vue:181
 #, fuzzy
 #, fuzzy
 msgid "Format successfully"
 msgid "Format successfully"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
@@ -997,7 +997,7 @@ msgstr ""
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
 
 
-#: src/views/other/Login.vue:71
+#: src/views/other/Login.vue:76
 msgid "Incorrect username or password"
 msgid "Incorrect username or password"
 msgstr ""
 msgstr ""
 
 
@@ -1040,12 +1040,12 @@ msgstr ""
 msgid "Invalid"
 msgid "Invalid"
 msgstr "Invalid E-mail!"
 msgstr "Invalid E-mail!"
 
 
-#: src/views/other/Login.vue:81
+#: src/views/other/Login.vue:86
 msgid "Invalid 2FA or recovery code"
 msgid "Invalid 2FA or recovery code"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
-#: src/views/config/ConfigEditor.vue:242
+#: src/views/config/ConfigEditor.vue:250
 #, fuzzy
 #, fuzzy
 msgid "Invalid filename"
 msgid "Invalid filename"
 msgstr "Invalid E-mail!"
 msgstr "Invalid E-mail!"
@@ -1122,7 +1122,7 @@ msgstr "License"
 msgid "Link Start"
 msgid "Link Start"
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:192
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:193
 msgid "List"
 msgid "List"
 msgstr ""
 msgstr ""
 
 
@@ -1141,7 +1141,7 @@ msgid "Load successfully"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
 
 
 #: src/components/EnvIndicator/EnvIndicator.vue:39
 #: src/components/EnvIndicator/EnvIndicator.vue:39
-#: src/components/NodeSelector/NodeSelector.vue:68
+#: src/components/NodeSelector/NodeSelector.vue:71
 #, fuzzy
 #, fuzzy
 msgid "Local"
 msgid "Local"
 msgstr "Location"
 msgstr "Location"
@@ -1159,11 +1159,11 @@ msgstr "Locations"
 msgid "Log"
 msgid "Log"
 msgstr "Login"
 msgstr "Login"
 
 
-#: src/routes/index.ts:305 src/views/other/Login.vue:192
+#: src/routes/index.ts:305 src/views/other/Login.vue:207
 msgid "Login"
 msgid "Login"
 msgstr "Login"
 msgstr "Login"
 
 
-#: src/views/other/Login.vue:125 src/views/other/Login.vue:60
+#: src/views/other/Login.vue:130 src/views/other/Login.vue:63
 msgid "Login successful"
 msgid "Login successful"
 msgstr "Login successful"
 msgstr "Login successful"
 
 
@@ -1171,7 +1171,7 @@ msgstr "Login successful"
 msgid "Logout successful"
 msgid "Logout successful"
 msgstr "Logout successful"
 msgstr "Logout successful"
 
 
-#: src/views/preference/Preference.vue:134
+#: src/views/preference/Preference.vue:140
 msgid "Logrotate"
 msgid "Logrotate"
 msgstr ""
 msgstr ""
 
 
@@ -1194,8 +1194,8 @@ msgstr ""
 "Make sure you have configured a reverse proxy for .well-known directory to "
 "Make sure you have configured a reverse proxy for .well-known directory to "
 "HTTPChallengePort (default: 9180) before getting the certificate."
 "HTTPChallengePort (default: 9180) before getting the certificate."
 
 
-#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:130
-#: src/views/config/ConfigEditor.vue:91 src/views/config/ConfigList.vue:62
+#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:138
+#: src/views/config/ConfigEditor.vue:99 src/views/config/ConfigList.vue:70
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "Manage Configs"
 msgstr "Manage Configs"
 
 
@@ -1240,9 +1240,9 @@ msgid "Model"
 msgstr "Advance Mode"
 msgstr "Advance Mode"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:248
 #: src/components/ChatGPT/ChatGPT.vue:248
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
-#: src/views/config/ConfigList.vue:151
+#: src/views/config/ConfigList.vue:159
 #, fuzzy
 #, fuzzy
 msgid "Modify"
 msgid "Modify"
 msgstr "Modify Config"
 msgstr "Modify Config"
@@ -1256,7 +1256,7 @@ msgstr "Certificate Status"
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "Modify Config"
 msgstr "Modify Config"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 #, fuzzy
 #, fuzzy
 msgid "Modify Mode"
 msgid "Modify Mode"
 msgstr "Modify Config"
 msgstr "Modify Config"
@@ -1271,7 +1271,7 @@ msgstr "Single Directive"
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
-#: src/views/config/ConfigEditor.vue:248
+#: src/views/config/ConfigEditor.vue:256
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/DomainList.vue:13
 #: src/views/domain/DomainList.vue:13
@@ -1304,7 +1304,7 @@ msgstr "Network Total Send"
 msgid "New name"
 msgid "New name"
 msgstr "Username"
 msgstr "Username"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 #, fuzzy
 #, fuzzy
 msgid "New Path"
 msgid "New Path"
 msgstr "Path"
 msgstr "Path"
@@ -1319,7 +1319,7 @@ msgstr ""
 msgid "Next"
 msgid "Next"
 msgstr "Next"
 msgstr "Next"
 
 
-#: src/views/preference/Preference.vue:122
+#: src/views/preference/Preference.vue:128
 msgid "Nginx"
 msgid "Nginx"
 msgstr ""
 msgstr ""
 
 
@@ -1419,13 +1419,13 @@ msgid ""
 "Firefox."
 "Firefox."
 msgstr ""
 msgstr ""
 
 
-#: src/components/NodeSelector/NodeSelector.vue:91
+#: src/components/NodeSelector/NodeSelector.vue:94
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environment/envColumns.tsx:90
 #: src/views/environment/envColumns.tsx:90
 msgid "Offline"
 msgid "Offline"
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:254
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 msgid "Ok"
 msgid "Ok"
 msgstr ""
 msgstr ""
@@ -1454,14 +1454,14 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 msgstr ""
 
 
-#: src/components/NodeSelector/NodeSelector.vue:71
-#: src/components/NodeSelector/NodeSelector.vue:85
+#: src/components/NodeSelector/NodeSelector.vue:74
+#: src/components/NodeSelector/NodeSelector.vue:88
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
 #: src/views/environment/envColumns.tsx:86
 #: src/views/environment/envColumns.tsx:86
 msgid "Online"
 msgid "Online"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:128
+#: src/views/preference/Preference.vue:134
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr ""
 msgstr ""
 
 
@@ -1478,13 +1478,13 @@ msgstr "OS:"
 msgid "OS:"
 msgid "OS:"
 msgstr "OS:"
 msgstr "OS:"
 
 
-#: src/views/config/ConfigEditor.vue:285
+#: src/views/config/ConfigEditor.vue:293
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/stream/components/Deploy.vue:87
 #: src/views/stream/components/Deploy.vue:87
 msgid "Overwrite"
 msgid "Overwrite"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:289
+#: src/views/config/ConfigEditor.vue:297
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/stream/components/Deploy.vue:91
 #: src/views/stream/components/Deploy.vue:91
 msgid "Overwrite exist file"
 msgid "Overwrite exist file"
@@ -1494,7 +1494,7 @@ msgstr ""
 msgid "Params"
 msgid "Params"
 msgstr "Params"
 msgstr "Params"
 
 
-#: src/views/other/Login.vue:169 src/views/user/userColumns.tsx:18
+#: src/views/other/Login.vue:174 src/views/user/userColumns.tsx:18
 msgid "Password"
 msgid "Password"
 msgstr "Password"
 msgstr "Password"
 
 
@@ -1502,7 +1502,7 @@ msgstr "Password"
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "Password (*)"
 msgstr "Password (*)"
 
 
-#: src/views/config/ConfigEditor.vue:254
+#: src/views/config/ConfigEditor.vue:262
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 msgid "Path"
 msgid "Path"
@@ -1530,7 +1530,7 @@ msgid ""
 "provider."
 "provider."
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:132
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:133
 msgid "Please fill in the required fields"
 msgid "Please fill in the required fields"
 msgstr ""
 msgstr ""
 
 
@@ -1541,7 +1541,7 @@ msgid ""
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:64
 #: src/views/config/components/Rename.vue:64
-#: src/views/config/ConfigEditor.vue:241
+#: src/views/config/ConfigEditor.vue:249
 #, fuzzy
 #, fuzzy
 msgid "Please input a filename"
 msgid "Please input a filename"
 msgstr "Please input your username!"
 msgstr "Please input your username!"
@@ -1562,11 +1562,11 @@ msgstr ""
 msgid "Please input your E-mail!"
 msgid "Please input your E-mail!"
 msgstr "Please input your E-mail!"
 msgstr "Please input your E-mail!"
 
 
-#: src/views/other/Install.vue:44 src/views/other/Login.vue:43
+#: src/views/other/Install.vue:44 src/views/other/Login.vue:44
 msgid "Please input your password!"
 msgid "Please input your password!"
 msgstr "Please input your password!"
 msgstr "Please input your password!"
 
 
-#: src/views/other/Install.vue:38 src/views/other/Login.vue:37
+#: src/views/other/Install.vue:38 src/views/other/Login.vue:38
 msgid "Please input your username!"
 msgid "Please input your username!"
 msgstr "Please input your username!"
 msgstr "Please input your username!"
 
 
@@ -1586,7 +1586,7 @@ msgstr ""
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:260 src/views/preference/Preference.vue:105
+#: src/routes/index.ts:260 src/views/preference/Preference.vue:111
 msgid "Preference"
 msgid "Preference"
 msgstr ""
 msgstr ""
 
 
@@ -1710,7 +1710,7 @@ msgid "Removed successfully"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
 
 
 #: src/views/config/components/Rename.vue:55
 #: src/views/config/components/Rename.vue:55
-#: src/views/config/ConfigList.vue:159
+#: src/views/config/ConfigList.vue:167
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 #, fuzzy
 #, fuzzy
 msgid "Rename"
 msgid "Rename"
@@ -1802,9 +1802,9 @@ msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/views/certificate/CertificateEditor.vue:254
 #: src/views/certificate/CertificateEditor.vue:254
-#: src/views/config/ConfigEditor.vue:214 src/views/domain/DomainEdit.vue:260
+#: src/views/config/ConfigEditor.vue:222 src/views/domain/DomainEdit.vue:260
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
-#: src/views/preference/Preference.vue:145 src/views/stream/StreamEdit.vue:252
+#: src/views/preference/Preference.vue:151 src/views/stream/StreamEdit.vue:252
 msgid "Save"
 msgid "Save"
 msgstr "Save"
 msgstr "Save"
 
 
@@ -1812,20 +1812,20 @@ msgstr "Save"
 msgid "Save Directive"
 msgid "Save Directive"
 msgstr "Save Directive"
 msgstr "Save Directive"
 
 
-#: src/views/config/ConfigEditor.vue:163 src/views/domain/DomainAdd.vue:46
+#: src/views/config/ConfigEditor.vue:171 src/views/domain/DomainAdd.vue:46
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 msgid "Save error %{msg}"
 msgid "Save error %{msg}"
 msgstr "Save error %{msg}"
 msgstr "Save error %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:121
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:122
 #: src/views/certificate/CertificateEditor.vue:46
 #: src/views/certificate/CertificateEditor.vue:46
-#: src/views/preference/Preference.vue:74
+#: src/views/preference/Preference.vue:79
 #, fuzzy
 #, fuzzy
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
 
 
-#: src/views/config/ConfigEditor.vue:159 src/views/domain/DomainAdd.vue:37
+#: src/views/config/ConfigEditor.vue:167 src/views/domain/DomainAdd.vue:37
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/stream/StreamEdit.vue:138
 #: src/views/stream/StreamEdit.vue:138
@@ -1858,13 +1858,13 @@ msgstr "Send"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Rename.vue:44
 #: src/views/config/components/Rename.vue:44
-#: src/views/config/ConfigEditor.vue:100 src/views/domain/DomainList.vue:81
+#: src/views/config/ConfigEditor.vue:108 src/views/domain/DomainList.vue:81
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:55
 #: src/views/preference/components/TOTP.vue:55
-#: src/views/preference/Preference.vue:78 src/views/stream/StreamList.vue:113
+#: src/views/preference/Preference.vue:83 src/views/stream/StreamList.vue:113
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 msgid "Server error"
 msgid "Server error"
 msgstr "Server error"
 msgstr "Server error"
@@ -1941,7 +1941,7 @@ msgstr "Certificate Status"
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr "Certificate Status"
 msgstr "Certificate Status"
 
 
-#: src/views/other/Login.vue:203
+#: src/views/other/Login.vue:189
 #, fuzzy
 #, fuzzy
 msgid "SSO Login"
 msgid "SSO Login"
 msgstr "Login"
 msgstr "Login"
@@ -2025,7 +2025,7 @@ msgstr "Certificate is valid"
 #: src/components/Notification/config.ts:12
 #: src/components/Notification/config.ts:12
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
-"Sync config %{cert_name} to %{env_name} failed, please upgrade the remote "
+"Sync config %{config_name} to %{env_name} failed, please upgrade the remote "
 "Nginx UI to the latest version"
 "Nginx UI to the latest version"
 msgstr "Saved successfully"
 msgstr "Saved successfully"
 
 
@@ -2203,7 +2203,7 @@ msgstr ""
 msgid "Token is not valid"
 msgid "Token is not valid"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:74
+#: src/views/other/Login.vue:79
 msgid "Too many login failed attempts, please try again later"
 msgid "Too many login failed attempts, please try again later"
 msgstr ""
 msgstr ""
 
 
@@ -2213,7 +2213,7 @@ msgid ""
 "password algorithm."
 "password algorithm."
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:209
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:210
 msgid "Trash"
 msgid "Trash"
 msgstr ""
 msgstr ""
 
 
@@ -2229,7 +2229,7 @@ msgstr ""
 
 
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/certificate/DNSCredential.vue:27
-#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:267
+#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:275
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/stream/components/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:85
@@ -2286,11 +2286,11 @@ msgstr ""
 msgid "User"
 msgid "User"
 msgstr "Username"
 msgstr "Username"
 
 
-#: src/views/other/Login.vue:77
+#: src/views/other/Login.vue:82
 msgid "User is banned"
 msgid "User is banned"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:159 src/views/user/userColumns.tsx:9
+#: src/views/other/Login.vue:164 src/views/user/userColumns.tsx:9
 msgid "Username"
 msgid "Username"
 msgstr "Username"
 msgstr "Username"
 
 
@@ -2318,11 +2318,11 @@ msgstr ""
 msgid "View all notifications"
 msgid "View all notifications"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 msgid "View Details"
 msgid "View Details"
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 #, fuzzy
 #, fuzzy
 msgid "View Mode"
 msgid "View Mode"
 msgstr "Basic Mode"
 msgstr "Basic Mode"

+ 71 - 70
app/src/language/es/app.po

@@ -48,8 +48,8 @@ msgstr "Usuario ACME"
 msgid "Action"
 msgid "Action"
 msgstr "Acción"
 msgstr "Acción"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:203
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
@@ -58,8 +58,8 @@ msgstr "Acción"
 msgid "Add"
 msgid "Add"
 msgstr "Agregar"
 msgstr "Agregar"
 
 
-#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:135
-#: src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:143
+#: src/views/config/ConfigEditor.vue:204
 msgid "Add Configuration"
 msgid "Add Configuration"
 msgstr "Agregar configuración"
 msgstr "Agregar configuración"
 
 
@@ -165,7 +165,7 @@ msgstr "Asistente"
 msgid "Attempts"
 msgid "Attempts"
 msgstr "Intentos"
 msgstr "Intentos"
 
 
-#: src/views/preference/Preference.vue:116
+#: src/views/preference/Preference.vue:122
 msgid "Auth"
 msgid "Auth"
 msgstr "Autenticación"
 msgstr "Autenticación"
 
 
@@ -187,8 +187,8 @@ msgid "Auto-renewal enabled for %{name}"
 msgstr "Renovación automática habilitada por %{name}"
 msgstr "Renovación automática habilitada por %{name}"
 
 
 #: src/views/certificate/CertificateEditor.vue:247
 #: src/views/certificate/CertificateEditor.vue:247
-#: src/views/config/ConfigEditor.vue:205 src/views/config/ConfigList.vue:173
-#: src/views/config/ConfigList.vue:99 src/views/domain/DomainEdit.vue:253
+#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:107
+#: src/views/config/ConfigList.vue:181 src/views/domain/DomainEdit.vue:253
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 msgid "Back"
 msgid "Back"
 msgstr "Volver"
 msgstr "Volver"
@@ -197,7 +197,7 @@ msgstr "Volver"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "Volver al Inicio"
 msgstr "Volver al Inicio"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:215
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:216
 msgid "Back to list"
 msgid "Back to list"
 msgstr "Volver a la lista"
 msgstr "Volver a la lista"
 
 
@@ -217,9 +217,9 @@ msgstr "Bloqueado hasta"
 msgid "Base information"
 msgid "Base information"
 msgstr "Información general"
 msgstr "Información general"
 
 
-#: src/views/config/ConfigEditor.vue:233
+#: src/views/config/ConfigEditor.vue:241
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/preference/Preference.vue:110
+#: src/views/preference/Preference.vue:116
 #: src/views/stream/components/RightSettings.vue:74
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
 msgid "Basic"
 msgstr "Básico"
 msgstr "Básico"
@@ -251,7 +251,7 @@ msgstr "Directorio CA"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:21
 #: src/views/domain/components/Deploy.vue:21
@@ -299,7 +299,7 @@ msgid_plural "Changed Certificates"
 msgstr[0] "Cambiar Certificado"
 msgstr[0] "Cambiar Certificado"
 msgstr[1] "Cambiar Certificados"
 msgstr[1] "Cambiar Certificados"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 msgid "Changed Path"
 msgid "Changed Path"
 msgstr "Ruta cambiada"
 msgstr "Ruta cambiada"
 
 
@@ -349,7 +349,7 @@ msgstr "El archivo de configuración se probó exitosamente"
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "Nombre de la configuración"
 msgstr "Nombre de la configuración"
 
 
-#: src/views/config/ConfigList.vue:91
+#: src/views/config/ConfigList.vue:99
 msgid "Configurations"
 msgid "Configurations"
 msgstr "Configuraciones"
 msgstr "Configuraciones"
 
 
@@ -399,11 +399,11 @@ msgstr "Crear"
 msgid "Create Another"
 msgid "Create Another"
 msgstr "Crear otro"
 msgstr "Crear otro"
 
 
-#: src/views/config/ConfigList.vue:109
+#: src/views/config/ConfigList.vue:117
 msgid "Create File"
 msgid "Create File"
 msgstr "Crear Archivo"
 msgstr "Crear Archivo"
 
 
-#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:116
+#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:124
 msgid "Create Folder"
 msgid "Create Folder"
 msgstr "Crear carpeta"
 msgstr "Crear carpeta"
 
 
@@ -455,8 +455,8 @@ msgstr ""
 "Personalice el nombre del servidor local para que se muestre en el indicador "
 "Personalice el nombre del servidor local para que se muestre en el indicador "
 "de entorno."
 "de entorno."
 
 
-#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:125
-#: src/views/config/ConfigEditor.vue:86 src/views/config/ConfigList.vue:57
+#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:133
+#: src/views/config/ConfigEditor.vue:94 src/views/config/ConfigList.vue:65
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "Panel"
 msgstr "Panel"
 
 
@@ -492,7 +492,7 @@ msgstr "Eliminar stream: %{site_name}"
 msgid "Deleted successfully"
 msgid "Deleted successfully"
 msgstr "Borrado exitoso"
 msgstr "Borrado exitoso"
 
 
-#: src/views/config/ConfigEditor.vue:276
+#: src/views/config/ConfigEditor.vue:284
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/stream/components/Deploy.vue:103
 #: src/views/stream/components/Deploy.vue:103
@@ -679,7 +679,7 @@ msgstr "Duplicado con éxito a local"
 msgid "Edit %{n}"
 msgid "Edit %{n}"
 msgstr "Editar %{n}"
 msgstr "Editar %{n}"
 
 
-#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:204
 msgid "Edit Configuration"
 msgid "Edit Configuration"
 msgstr "Editar Configuración"
 msgstr "Editar Configuración"
 
 
@@ -859,15 +859,15 @@ msgstr "Terminado"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "Para usuario chino: https://mirror.ghproxy.com/"
 msgstr "Para usuario chino: https://mirror.ghproxy.com/"
 
 
-#: src/views/config/ConfigEditor.vue:208
+#: src/views/config/ConfigEditor.vue:216
 msgid "Format Code"
 msgid "Format Code"
 msgstr "Código de formato"
 msgstr "Código de formato"
 
 
-#: src/views/config/ConfigEditor.vue:175
+#: src/views/config/ConfigEditor.vue:183
 msgid "Format error %{msg}"
 msgid "Format error %{msg}"
 msgstr "Error de formato %{msg}"
 msgstr "Error de formato %{msg}"
 
 
-#: src/views/config/ConfigEditor.vue:173
+#: src/views/config/ConfigEditor.vue:181
 msgid "Format successfully"
 msgid "Format successfully"
 msgstr "Formateado correctamente"
 msgstr "Formateado correctamente"
 
 
@@ -956,7 +956,7 @@ msgstr "Importar"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Importar Certificado"
 msgstr "Importar Certificado"
 
 
-#: src/views/other/Login.vue:71
+#: src/views/other/Login.vue:76
 msgid "Incorrect username or password"
 msgid "Incorrect username or password"
 msgstr "Nombre de usuario o contraseña incorrectos"
 msgstr "Nombre de usuario o contraseña incorrectos"
 
 
@@ -997,12 +997,12 @@ msgstr "Intervalo"
 msgid "Invalid"
 msgid "Invalid"
 msgstr "Inválido"
 msgstr "Inválido"
 
 
-#: src/views/other/Login.vue:81
+#: src/views/other/Login.vue:86
 msgid "Invalid 2FA or recovery code"
 msgid "Invalid 2FA or recovery code"
 msgstr "Código 2FA o de recuperación inválido"
 msgstr "Código 2FA o de recuperación inválido"
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
-#: src/views/config/ConfigEditor.vue:242
+#: src/views/config/ConfigEditor.vue:250
 msgid "Invalid filename"
 msgid "Invalid filename"
 msgstr "Nombre de archivo inválido"
 msgstr "Nombre de archivo inválido"
 
 
@@ -1073,7 +1073,7 @@ msgstr "Licencia"
 msgid "Link Start"
 msgid "Link Start"
 msgstr "Iniciar conexión"
 msgstr "Iniciar conexión"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:192
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:193
 msgid "List"
 msgid "List"
 msgstr "Lista"
 msgstr "Lista"
 
 
@@ -1090,7 +1090,7 @@ msgid "Load successfully"
 msgstr "Cargado con éxito"
 msgstr "Cargado con éxito"
 
 
 #: src/components/EnvIndicator/EnvIndicator.vue:39
 #: src/components/EnvIndicator/EnvIndicator.vue:39
-#: src/components/NodeSelector/NodeSelector.vue:68
+#: src/components/NodeSelector/NodeSelector.vue:71
 msgid "Local"
 msgid "Local"
 msgstr "Local"
 msgstr "Local"
 
 
@@ -1106,11 +1106,11 @@ msgstr "Ubicaciones"
 msgid "Log"
 msgid "Log"
 msgstr "Registro"
 msgstr "Registro"
 
 
-#: src/routes/index.ts:305 src/views/other/Login.vue:192
+#: src/routes/index.ts:305 src/views/other/Login.vue:207
 msgid "Login"
 msgid "Login"
 msgstr "Acceso"
 msgstr "Acceso"
 
 
-#: src/views/other/Login.vue:125 src/views/other/Login.vue:60
+#: src/views/other/Login.vue:130 src/views/other/Login.vue:63
 msgid "Login successful"
 msgid "Login successful"
 msgstr "Acceso exitoso"
 msgstr "Acceso exitoso"
 
 
@@ -1118,7 +1118,7 @@ msgstr "Acceso exitoso"
 msgid "Logout successful"
 msgid "Logout successful"
 msgstr "Cierre de sesión exitoso"
 msgstr "Cierre de sesión exitoso"
 
 
-#: src/views/preference/Preference.vue:134
+#: src/views/preference/Preference.vue:140
 msgid "Logrotate"
 msgid "Logrotate"
 msgstr "Rotación de logs"
 msgstr "Rotación de logs"
 
 
@@ -1147,8 +1147,8 @@ msgstr ""
 "Asegúrese de haber configurado un proxy reverso para el directorio .well-"
 "Asegúrese de haber configurado un proxy reverso para el directorio .well-"
 "known en HTTPChallengePort antes de obtener el certificado."
 "known en HTTPChallengePort antes de obtener el certificado."
 
 
-#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:130
-#: src/views/config/ConfigEditor.vue:91 src/views/config/ConfigList.vue:62
+#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:138
+#: src/views/config/ConfigEditor.vue:99 src/views/config/ConfigList.vue:70
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "Administrar configuraciones"
 msgstr "Administrar configuraciones"
 
 
@@ -1190,9 +1190,9 @@ msgid "Model"
 msgstr "Modelo"
 msgstr "Modelo"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:248
 #: src/components/ChatGPT/ChatGPT.vue:248
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
-#: src/views/config/ConfigList.vue:151
+#: src/views/config/ConfigList.vue:159
 msgid "Modify"
 msgid "Modify"
 msgstr "Modificar"
 msgstr "Modificar"
 
 
@@ -1204,7 +1204,7 @@ msgstr "Modificar Certificado"
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "Modificar configuración"
 msgstr "Modificar configuración"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 msgid "Modify Mode"
 msgid "Modify Mode"
 msgstr "Modo Modificar"
 msgstr "Modo Modificar"
 
 
@@ -1217,7 +1217,7 @@ msgstr "Directiva multilínea"
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
-#: src/views/config/ConfigEditor.vue:248
+#: src/views/config/ConfigEditor.vue:256
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/DomainList.vue:13
 #: src/views/domain/DomainList.vue:13
@@ -1249,7 +1249,7 @@ msgstr "Total enviado por la red"
 msgid "New name"
 msgid "New name"
 msgstr "Nuevo nombre"
 msgstr "Nuevo nombre"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 msgid "New Path"
 msgid "New Path"
 msgstr "Nueva ruta"
 msgstr "Nueva ruta"
 
 
@@ -1263,7 +1263,7 @@ msgstr "Se liberó una nueva versión"
 msgid "Next"
 msgid "Next"
 msgstr "Siguiente"
 msgstr "Siguiente"
 
 
-#: src/views/preference/Preference.vue:122
+#: src/views/preference/Preference.vue:128
 msgid "Nginx"
 msgid "Nginx"
 msgstr "Nginx"
 msgstr "Nginx"
 
 
@@ -1359,13 +1359,13 @@ msgstr ""
 "OCSP Must Staple puede causar errores para algunos usuarios en el primer "
 "OCSP Must Staple puede causar errores para algunos usuarios en el primer "
 "acceso usando Firefox."
 "acceso usando Firefox."
 
 
-#: src/components/NodeSelector/NodeSelector.vue:91
+#: src/components/NodeSelector/NodeSelector.vue:94
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environment/envColumns.tsx:90
 #: src/views/environment/envColumns.tsx:90
 msgid "Offline"
 msgid "Offline"
 msgstr "Desconectado"
 msgstr "Desconectado"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:254
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 msgid "Ok"
 msgid "Ok"
 msgstr "Ok"
 msgstr "Ok"
@@ -1394,14 +1394,14 @@ msgstr "OK"
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "Una vez que se complete la verificación, los registros se eliminarán."
 msgstr "Una vez que se complete la verificación, los registros se eliminarán."
 
 
-#: src/components/NodeSelector/NodeSelector.vue:71
-#: src/components/NodeSelector/NodeSelector.vue:85
+#: src/components/NodeSelector/NodeSelector.vue:74
+#: src/components/NodeSelector/NodeSelector.vue:88
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
 #: src/views/environment/envColumns.tsx:86
 #: src/views/environment/envColumns.tsx:86
 msgid "Online"
 msgid "Online"
 msgstr "En línea"
 msgstr "En línea"
 
 
-#: src/views/preference/Preference.vue:128
+#: src/views/preference/Preference.vue:134
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
@@ -1417,13 +1417,13 @@ msgstr "SO"
 msgid "OS:"
 msgid "OS:"
 msgstr "SO:"
 msgstr "SO:"
 
 
-#: src/views/config/ConfigEditor.vue:285
+#: src/views/config/ConfigEditor.vue:293
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/stream/components/Deploy.vue:87
 #: src/views/stream/components/Deploy.vue:87
 msgid "Overwrite"
 msgid "Overwrite"
 msgstr "Sobrescribir"
 msgstr "Sobrescribir"
 
 
-#: src/views/config/ConfigEditor.vue:289
+#: src/views/config/ConfigEditor.vue:297
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/stream/components/Deploy.vue:91
 #: src/views/stream/components/Deploy.vue:91
 msgid "Overwrite exist file"
 msgid "Overwrite exist file"
@@ -1433,7 +1433,7 @@ msgstr "Sobrescribir archivo existente"
 msgid "Params"
 msgid "Params"
 msgstr "Parámetros"
 msgstr "Parámetros"
 
 
-#: src/views/other/Login.vue:169 src/views/user/userColumns.tsx:18
+#: src/views/other/Login.vue:174 src/views/user/userColumns.tsx:18
 msgid "Password"
 msgid "Password"
 msgstr "Contraseña"
 msgstr "Contraseña"
 
 
@@ -1441,7 +1441,7 @@ msgstr "Contraseña"
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "Contraseña (*)"
 msgstr "Contraseña (*)"
 
 
-#: src/views/config/ConfigEditor.vue:254
+#: src/views/config/ConfigEditor.vue:262
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 msgid "Path"
 msgid "Path"
@@ -1471,7 +1471,7 @@ msgstr ""
 "Por favor, complete las credenciales de autenticación API proporcionadas por "
 "Por favor, complete las credenciales de autenticación API proporcionadas por "
 "su proveedor de DNS."
 "su proveedor de DNS."
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:132
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:133
 msgid "Please fill in the required fields"
 msgid "Please fill in the required fields"
 msgstr "Por favor, complete los campos requeridos"
 msgstr "Por favor, complete los campos requeridos"
 
 
@@ -1485,7 +1485,7 @@ msgstr ""
 "del proveedor de DNS."
 "del proveedor de DNS."
 
 
 #: src/views/config/components/Rename.vue:64
 #: src/views/config/components/Rename.vue:64
-#: src/views/config/ConfigEditor.vue:241
+#: src/views/config/ConfigEditor.vue:249
 msgid "Please input a filename"
 msgid "Please input a filename"
 msgstr "Por favor, ingrese un nombre de archivo"
 msgstr "Por favor, ingrese un nombre de archivo"
 
 
@@ -1506,11 +1506,11 @@ msgstr ""
 msgid "Please input your E-mail!"
 msgid "Please input your E-mail!"
 msgstr "¡Por favor ingrese su correo electrónico!"
 msgstr "¡Por favor ingrese su correo electrónico!"
 
 
-#: src/views/other/Install.vue:44 src/views/other/Login.vue:43
+#: src/views/other/Install.vue:44 src/views/other/Login.vue:44
 msgid "Please input your password!"
 msgid "Please input your password!"
 msgstr "¡Por favor ingrese su contraseña!"
 msgstr "¡Por favor ingrese su contraseña!"
 
 
-#: src/views/other/Install.vue:38 src/views/other/Login.vue:37
+#: src/views/other/Install.vue:38 src/views/other/Login.vue:38
 msgid "Please input your username!"
 msgid "Please input your username!"
 msgstr "¡Por favor ingrese su nombre de usuario!"
 msgstr "¡Por favor ingrese su nombre de usuario!"
 
 
@@ -1532,7 +1532,7 @@ msgstr "¡Seleccione al menos un nodo!"
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr "Prelanzamiento"
 msgstr "Prelanzamiento"
 
 
-#: src/routes/index.ts:260 src/views/preference/Preference.vue:105
+#: src/routes/index.ts:260 src/views/preference/Preference.vue:111
 msgid "Preference"
 msgid "Preference"
 msgstr "Configuración"
 msgstr "Configuración"
 
 
@@ -1649,7 +1649,7 @@ msgid "Removed successfully"
 msgstr "Eliminado con éxito"
 msgstr "Eliminado con éxito"
 
 
 #: src/views/config/components/Rename.vue:55
 #: src/views/config/components/Rename.vue:55
-#: src/views/config/ConfigList.vue:159
+#: src/views/config/ConfigList.vue:167
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 msgid "Rename"
 msgid "Rename"
 msgstr "Renombrar"
 msgstr "Renombrar"
@@ -1732,9 +1732,9 @@ msgstr "Corriendo"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/views/certificate/CertificateEditor.vue:254
 #: src/views/certificate/CertificateEditor.vue:254
-#: src/views/config/ConfigEditor.vue:214 src/views/domain/DomainEdit.vue:260
+#: src/views/config/ConfigEditor.vue:222 src/views/domain/DomainEdit.vue:260
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
-#: src/views/preference/Preference.vue:145 src/views/stream/StreamEdit.vue:252
+#: src/views/preference/Preference.vue:151 src/views/stream/StreamEdit.vue:252
 msgid "Save"
 msgid "Save"
 msgstr "Guardar"
 msgstr "Guardar"
 
 
@@ -1742,19 +1742,19 @@ msgstr "Guardar"
 msgid "Save Directive"
 msgid "Save Directive"
 msgstr "Guardar Directiva"
 msgstr "Guardar Directiva"
 
 
-#: src/views/config/ConfigEditor.vue:163 src/views/domain/DomainAdd.vue:46
+#: src/views/config/ConfigEditor.vue:171 src/views/domain/DomainAdd.vue:46
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 msgid "Save error %{msg}"
 msgid "Save error %{msg}"
 msgstr "Error al guardar %{msg}"
 msgstr "Error al guardar %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:121
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:122
 #: src/views/certificate/CertificateEditor.vue:46
 #: src/views/certificate/CertificateEditor.vue:46
-#: src/views/preference/Preference.vue:74
+#: src/views/preference/Preference.vue:79
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "Guardado con éxito"
 msgstr "Guardado con éxito"
 
 
-#: src/views/config/ConfigEditor.vue:159 src/views/domain/DomainAdd.vue:37
+#: src/views/config/ConfigEditor.vue:167 src/views/domain/DomainAdd.vue:37
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/stream/StreamEdit.vue:138
 #: src/views/stream/StreamEdit.vue:138
@@ -1789,13 +1789,13 @@ msgstr "Enviado"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Rename.vue:44
 #: src/views/config/components/Rename.vue:44
-#: src/views/config/ConfigEditor.vue:100 src/views/domain/DomainList.vue:81
+#: src/views/config/ConfigEditor.vue:108 src/views/domain/DomainList.vue:81
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:55
 #: src/views/preference/components/TOTP.vue:55
-#: src/views/preference/Preference.vue:78 src/views/stream/StreamList.vue:113
+#: src/views/preference/Preference.vue:83 src/views/stream/StreamList.vue:113
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 msgid "Server error"
 msgid "Server error"
 msgstr "Error del servidor"
 msgstr "Error del servidor"
@@ -1868,7 +1868,7 @@ msgstr "Ruta de la llave del certificado SSL"
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr "Ruta del certificado SSL"
 msgstr "Ruta del certificado SSL"
 
 
-#: src/views/other/Login.vue:203
+#: src/views/other/Login.vue:189
 msgid "SSO Login"
 msgid "SSO Login"
 msgstr "Acceso SSO"
 msgstr "Acceso SSO"
 
 
@@ -1946,8 +1946,9 @@ msgid "Sync Certificate Success"
 msgstr "Sincronización del Certificado exitosa"
 msgstr "Sincronización del Certificado exitosa"
 
 
 #: src/components/Notification/config.ts:12
 #: src/components/Notification/config.ts:12
+#, fuzzy
 msgid ""
 msgid ""
-"Sync config %{cert_name} to %{env_name} failed, please upgrade the remote "
+"Sync config %{config_name} to %{env_name} failed, please upgrade the remote "
 "Nginx UI to the latest version"
 "Nginx UI to the latest version"
 msgstr ""
 msgstr ""
 "Sincronización de la configuración %{cert_name} a %{env_name} falló, por "
 "Sincronización de la configuración %{cert_name} a %{env_name} falló, por "
@@ -2141,7 +2142,7 @@ msgstr ""
 msgid "Token is not valid"
 msgid "Token is not valid"
 msgstr "El token no es válido"
 msgstr "El token no es válido"
 
 
-#: src/views/other/Login.vue:74
+#: src/views/other/Login.vue:79
 msgid "Too many login failed attempts, please try again later"
 msgid "Too many login failed attempts, please try again later"
 msgstr ""
 msgstr ""
 "Demasiados intentos fallidos de inicio de sesión, por favor intente "
 "Demasiados intentos fallidos de inicio de sesión, por favor intente "
@@ -2155,7 +2156,7 @@ msgstr ""
 "TOTP es un método de autenticación de dos factores que utiliza un algoritmo "
 "TOTP es un método de autenticación de dos factores que utiliza un algoritmo "
 "de contraseña de un solo uso basado en el tiempo."
 "de contraseña de un solo uso basado en el tiempo."
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:209
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:210
 msgid "Trash"
 msgid "Trash"
 msgstr "Basura"
 msgstr "Basura"
 
 
@@ -2171,7 +2172,7 @@ msgstr "Tipo"
 
 
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/certificate/DNSCredential.vue:27
-#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:267
+#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:275
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/stream/components/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:85
@@ -2224,11 +2225,11 @@ msgstr "Usar código de recuperación"
 msgid "User"
 msgid "User"
 msgstr "Usuario"
 msgstr "Usuario"
 
 
-#: src/views/other/Login.vue:77
+#: src/views/other/Login.vue:82
 msgid "User is banned"
 msgid "User is banned"
 msgstr "El usuario está bloqueado"
 msgstr "El usuario está bloqueado"
 
 
-#: src/views/other/Login.vue:159 src/views/user/userColumns.tsx:9
+#: src/views/other/Login.vue:164 src/views/user/userColumns.tsx:9
 msgid "Username"
 msgid "Username"
 msgstr "Nombre de usuario"
 msgstr "Nombre de usuario"
 
 
@@ -2255,11 +2256,11 @@ msgstr "Ver"
 msgid "View all notifications"
 msgid "View all notifications"
 msgstr "Ver todas las notificaciones"
 msgstr "Ver todas las notificaciones"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 msgid "View Details"
 msgid "View Details"
 msgstr "Ver detalles"
 msgstr "Ver detalles"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 msgid "View Mode"
 msgid "View Mode"
 msgstr "Modo de vista"
 msgstr "Modo de vista"
 
 

+ 70 - 70
app/src/language/fr_FR/app.po

@@ -44,8 +44,8 @@ msgstr "Nom d'utilisateur"
 msgid "Action"
 msgid "Action"
 msgstr "Action"
 msgstr "Action"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:203
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
@@ -54,8 +54,8 @@ msgstr "Action"
 msgid "Add"
 msgid "Add"
 msgstr "Ajouter"
 msgstr "Ajouter"
 
 
-#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:135
-#: src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:143
+#: src/views/config/ConfigEditor.vue:204
 #, fuzzy
 #, fuzzy
 msgid "Add Configuration"
 msgid "Add Configuration"
 msgstr "Modifier la configuration"
 msgstr "Modifier la configuration"
@@ -174,7 +174,7 @@ msgstr ""
 msgid "Attempts"
 msgid "Attempts"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:116
+#: src/views/preference/Preference.vue:122
 #, fuzzy
 #, fuzzy
 msgid "Auth"
 msgid "Auth"
 msgstr "Autheur"
 msgstr "Autheur"
@@ -197,8 +197,8 @@ msgid "Auto-renewal enabled for %{name}"
 msgstr "Renouvellement automatique activé pour %{name}"
 msgstr "Renouvellement automatique activé pour %{name}"
 
 
 #: src/views/certificate/CertificateEditor.vue:247
 #: src/views/certificate/CertificateEditor.vue:247
-#: src/views/config/ConfigEditor.vue:205 src/views/config/ConfigList.vue:173
-#: src/views/config/ConfigList.vue:99 src/views/domain/DomainEdit.vue:253
+#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:107
+#: src/views/config/ConfigList.vue:181 src/views/domain/DomainEdit.vue:253
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 msgid "Back"
 msgid "Back"
 msgstr "Retour"
 msgstr "Retour"
@@ -207,7 +207,7 @@ msgstr "Retour"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "Retour au menu principal"
 msgstr "Retour au menu principal"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:215
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:216
 msgid "Back to list"
 msgid "Back to list"
 msgstr ""
 msgstr ""
 
 
@@ -227,9 +227,9 @@ msgstr ""
 msgid "Base information"
 msgid "Base information"
 msgstr "Information générale"
 msgstr "Information générale"
 
 
-#: src/views/config/ConfigEditor.vue:233
+#: src/views/config/ConfigEditor.vue:241
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/preference/Preference.vue:110
+#: src/views/preference/Preference.vue:116
 #: src/views/stream/components/RightSettings.vue:74
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
 msgid "Basic"
 msgstr "Basique"
 msgstr "Basique"
@@ -263,7 +263,7 @@ msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:21
 #: src/views/domain/components/Deploy.vue:21
@@ -316,7 +316,7 @@ msgid_plural "Changed Certificates"
 msgstr[0] "Changer de certificat"
 msgstr[0] "Changer de certificat"
 msgstr[1] "Changer de certificat"
 msgstr[1] "Changer de certificat"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 #, fuzzy
 #, fuzzy
 msgid "Changed Path"
 msgid "Changed Path"
 msgstr "Changer de certificat"
 msgstr "Changer de certificat"
@@ -369,7 +369,7 @@ msgstr "Le fichier de configuration est testé avec succès"
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "Nom de la configuration"
 msgstr "Nom de la configuration"
 
 
-#: src/views/config/ConfigList.vue:91
+#: src/views/config/ConfigList.vue:99
 msgid "Configurations"
 msgid "Configurations"
 msgstr "Configurations"
 msgstr "Configurations"
 
 
@@ -420,12 +420,12 @@ msgstr "Créé le"
 msgid "Create Another"
 msgid "Create Another"
 msgstr "Créer un autre"
 msgstr "Créer un autre"
 
 
-#: src/views/config/ConfigList.vue:109
+#: src/views/config/ConfigList.vue:117
 #, fuzzy
 #, fuzzy
 msgid "Create File"
 msgid "Create File"
 msgstr "Créé le"
 msgstr "Créé le"
 
 
-#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:116
+#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:124
 #, fuzzy
 #, fuzzy
 msgid "Create Folder"
 msgid "Create Folder"
 msgstr "Créer un autre"
 msgstr "Créer un autre"
@@ -475,8 +475,8 @@ msgid ""
 "indicator."
 "indicator."
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:125
-#: src/views/config/ConfigEditor.vue:86 src/views/config/ConfigList.vue:57
+#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:133
+#: src/views/config/ConfigEditor.vue:94 src/views/config/ConfigList.vue:65
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "Dashboard"
 msgstr "Dashboard"
 
 
@@ -514,7 +514,7 @@ msgstr "Supprimer le site : %{site_name}"
 msgid "Deleted successfully"
 msgid "Deleted successfully"
 msgstr "Désactivé avec succès"
 msgstr "Désactivé avec succès"
 
 
-#: src/views/config/ConfigEditor.vue:276
+#: src/views/config/ConfigEditor.vue:284
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/stream/components/Deploy.vue:103
 #: src/views/stream/components/Deploy.vue:103
@@ -713,7 +713,7 @@ msgstr "Dupliqué avec succès"
 msgid "Edit %{n}"
 msgid "Edit %{n}"
 msgstr "Modifier %{n}"
 msgstr "Modifier %{n}"
 
 
-#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:204
 msgid "Edit Configuration"
 msgid "Edit Configuration"
 msgstr "Modifier la configuration"
 msgstr "Modifier la configuration"
 
 
@@ -906,15 +906,15 @@ msgstr "Finie"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "Utilisateur chinois : https://mirror.ghproxy.com/"
 msgstr "Utilisateur chinois : https://mirror.ghproxy.com/"
 
 
-#: src/views/config/ConfigEditor.vue:208
+#: src/views/config/ConfigEditor.vue:216
 msgid "Format Code"
 msgid "Format Code"
 msgstr "Code de formatage"
 msgstr "Code de formatage"
 
 
-#: src/views/config/ConfigEditor.vue:175
+#: src/views/config/ConfigEditor.vue:183
 msgid "Format error %{msg}"
 msgid "Format error %{msg}"
 msgstr "Erreur de format %{msg}"
 msgstr "Erreur de format %{msg}"
 
 
-#: src/views/config/ConfigEditor.vue:173
+#: src/views/config/ConfigEditor.vue:181
 msgid "Format successfully"
 msgid "Format successfully"
 msgstr "Formaté avec succès"
 msgstr "Formaté avec succès"
 
 
@@ -999,7 +999,7 @@ msgstr "Exporter"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "État du certificat"
 msgstr "État du certificat"
 
 
-#: src/views/other/Login.vue:71
+#: src/views/other/Login.vue:76
 #, fuzzy
 #, fuzzy
 msgid "Incorrect username or password"
 msgid "Incorrect username or password"
 msgstr "Le pseudo ou mot de passe est incorect"
 msgstr "Le pseudo ou mot de passe est incorect"
@@ -1041,12 +1041,12 @@ msgstr ""
 msgid "Invalid"
 msgid "Invalid"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:81
+#: src/views/other/Login.vue:86
 msgid "Invalid 2FA or recovery code"
 msgid "Invalid 2FA or recovery code"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
-#: src/views/config/ConfigEditor.vue:242
+#: src/views/config/ConfigEditor.vue:250
 msgid "Invalid filename"
 msgid "Invalid filename"
 msgstr ""
 msgstr ""
 
 
@@ -1122,7 +1122,7 @@ msgstr "Licence"
 msgid "Link Start"
 msgid "Link Start"
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:192
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:193
 msgid "List"
 msgid "List"
 msgstr ""
 msgstr ""
 
 
@@ -1141,7 +1141,7 @@ msgid "Load successfully"
 msgstr "Enregistré avec succès"
 msgstr "Enregistré avec succès"
 
 
 #: src/components/EnvIndicator/EnvIndicator.vue:39
 #: src/components/EnvIndicator/EnvIndicator.vue:39
-#: src/components/NodeSelector/NodeSelector.vue:68
+#: src/components/NodeSelector/NodeSelector.vue:71
 #, fuzzy
 #, fuzzy
 msgid "Local"
 msgid "Local"
 msgstr "Localisation"
 msgstr "Localisation"
@@ -1161,11 +1161,11 @@ msgstr "Localisations"
 msgid "Log"
 msgid "Log"
 msgstr "Connexion"
 msgstr "Connexion"
 
 
-#: src/routes/index.ts:305 src/views/other/Login.vue:192
+#: src/routes/index.ts:305 src/views/other/Login.vue:207
 msgid "Login"
 msgid "Login"
 msgstr "Connexion"
 msgstr "Connexion"
 
 
-#: src/views/other/Login.vue:125 src/views/other/Login.vue:60
+#: src/views/other/Login.vue:130 src/views/other/Login.vue:63
 msgid "Login successful"
 msgid "Login successful"
 msgstr "Connexion réussie"
 msgstr "Connexion réussie"
 
 
@@ -1173,7 +1173,7 @@ msgstr "Connexion réussie"
 msgid "Logout successful"
 msgid "Logout successful"
 msgstr "Déconnexion réussie"
 msgstr "Déconnexion réussie"
 
 
-#: src/views/preference/Preference.vue:134
+#: src/views/preference/Preference.vue:140
 msgid "Logrotate"
 msgid "Logrotate"
 msgstr ""
 msgstr ""
 
 
@@ -1196,8 +1196,8 @@ msgstr ""
 "Assurez vous d'avoir configuré un reverse proxy pour le répertoire .well-"
 "Assurez vous d'avoir configuré un reverse proxy pour le répertoire .well-"
 "known vers HTTPChallengePort avant d'obtenir le certificat."
 "known vers HTTPChallengePort avant d'obtenir le certificat."
 
 
-#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:130
-#: src/views/config/ConfigEditor.vue:91 src/views/config/ConfigList.vue:62
+#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:138
+#: src/views/config/ConfigEditor.vue:99 src/views/config/ConfigList.vue:70
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "Gérer les configurations"
 msgstr "Gérer les configurations"
 
 
@@ -1242,9 +1242,9 @@ msgid "Model"
 msgstr "Mode d'exécution"
 msgstr "Mode d'exécution"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:248
 #: src/components/ChatGPT/ChatGPT.vue:248
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
-#: src/views/config/ConfigList.vue:151
+#: src/views/config/ConfigList.vue:159
 msgid "Modify"
 msgid "Modify"
 msgstr "Modifier"
 msgstr "Modifier"
 
 
@@ -1257,7 +1257,7 @@ msgstr "État du certificat"
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "Modifier la configuration"
 msgstr "Modifier la configuration"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 #, fuzzy
 #, fuzzy
 msgid "Modify Mode"
 msgid "Modify Mode"
 msgstr "Modifier"
 msgstr "Modifier"
@@ -1271,7 +1271,7 @@ msgstr "Directive multiligne"
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
-#: src/views/config/ConfigEditor.vue:248
+#: src/views/config/ConfigEditor.vue:256
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/DomainList.vue:13
 #: src/views/domain/DomainList.vue:13
@@ -1304,7 +1304,7 @@ msgstr "Envoi total réseau"
 msgid "New name"
 msgid "New name"
 msgstr "Nom d'utilisateur"
 msgstr "Nom d'utilisateur"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 #, fuzzy
 #, fuzzy
 msgid "New Path"
 msgid "New Path"
 msgstr "Chemin"
 msgstr "Chemin"
@@ -1319,7 +1319,7 @@ msgstr "Nouvelle version publiée"
 msgid "Next"
 msgid "Next"
 msgstr "Suivant"
 msgstr "Suivant"
 
 
-#: src/views/preference/Preference.vue:122
+#: src/views/preference/Preference.vue:128
 #, fuzzy
 #, fuzzy
 msgid "Nginx"
 msgid "Nginx"
 msgstr "Journal Nginx"
 msgstr "Journal Nginx"
@@ -1417,13 +1417,13 @@ msgid ""
 "Firefox."
 "Firefox."
 msgstr ""
 msgstr ""
 
 
-#: src/components/NodeSelector/NodeSelector.vue:91
+#: src/components/NodeSelector/NodeSelector.vue:94
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environment/envColumns.tsx:90
 #: src/views/environment/envColumns.tsx:90
 msgid "Offline"
 msgid "Offline"
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:254
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 msgid "Ok"
 msgid "Ok"
 msgstr ""
 msgstr ""
@@ -1452,14 +1452,14 @@ msgstr "OK"
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 msgstr ""
 
 
-#: src/components/NodeSelector/NodeSelector.vue:71
-#: src/components/NodeSelector/NodeSelector.vue:85
+#: src/components/NodeSelector/NodeSelector.vue:74
+#: src/components/NodeSelector/NodeSelector.vue:88
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
 #: src/views/environment/envColumns.tsx:86
 #: src/views/environment/envColumns.tsx:86
 msgid "Online"
 msgid "Online"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:128
+#: src/views/preference/Preference.vue:134
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
@@ -1475,13 +1475,13 @@ msgstr "OS"
 msgid "OS:"
 msgid "OS:"
 msgstr "OS :"
 msgstr "OS :"
 
 
-#: src/views/config/ConfigEditor.vue:285
+#: src/views/config/ConfigEditor.vue:293
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/stream/components/Deploy.vue:87
 #: src/views/stream/components/Deploy.vue:87
 msgid "Overwrite"
 msgid "Overwrite"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:289
+#: src/views/config/ConfigEditor.vue:297
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/stream/components/Deploy.vue:91
 #: src/views/stream/components/Deploy.vue:91
 msgid "Overwrite exist file"
 msgid "Overwrite exist file"
@@ -1491,7 +1491,7 @@ msgstr ""
 msgid "Params"
 msgid "Params"
 msgstr "Paramètres"
 msgstr "Paramètres"
 
 
-#: src/views/other/Login.vue:169 src/views/user/userColumns.tsx:18
+#: src/views/other/Login.vue:174 src/views/user/userColumns.tsx:18
 msgid "Password"
 msgid "Password"
 msgstr "Mot de passe"
 msgstr "Mot de passe"
 
 
@@ -1499,7 +1499,7 @@ msgstr "Mot de passe"
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "Mot de passe (*)"
 msgstr "Mot de passe (*)"
 
 
-#: src/views/config/ConfigEditor.vue:254
+#: src/views/config/ConfigEditor.vue:262
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 msgid "Path"
 msgid "Path"
@@ -1527,7 +1527,7 @@ msgid ""
 "provider."
 "provider."
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:132
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:133
 msgid "Please fill in the required fields"
 msgid "Please fill in the required fields"
 msgstr ""
 msgstr ""
 
 
@@ -1543,7 +1543,7 @@ msgstr ""
 "fournisseur DNS."
 "fournisseur DNS."
 
 
 #: src/views/config/components/Rename.vue:64
 #: src/views/config/components/Rename.vue:64
-#: src/views/config/ConfigEditor.vue:241
+#: src/views/config/ConfigEditor.vue:249
 #, fuzzy
 #, fuzzy
 msgid "Please input a filename"
 msgid "Please input a filename"
 msgstr "Veuillez saisir votre nom d'utilisateur !"
 msgstr "Veuillez saisir votre nom d'utilisateur !"
@@ -1566,11 +1566,11 @@ msgstr ""
 msgid "Please input your E-mail!"
 msgid "Please input your E-mail!"
 msgstr "Veuillez saisir votre e-mail !"
 msgstr "Veuillez saisir votre e-mail !"
 
 
-#: src/views/other/Install.vue:44 src/views/other/Login.vue:43
+#: src/views/other/Install.vue:44 src/views/other/Login.vue:44
 msgid "Please input your password!"
 msgid "Please input your password!"
 msgstr "Veuillez saisir votre mot de passe !"
 msgstr "Veuillez saisir votre mot de passe !"
 
 
-#: src/views/other/Install.vue:38 src/views/other/Login.vue:37
+#: src/views/other/Install.vue:38 src/views/other/Login.vue:38
 msgid "Please input your username!"
 msgid "Please input your username!"
 msgstr "Veuillez saisir votre nom d'utilisateur !"
 msgstr "Veuillez saisir votre nom d'utilisateur !"
 
 
@@ -1590,7 +1590,7 @@ msgstr ""
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:260 src/views/preference/Preference.vue:105
+#: src/routes/index.ts:260 src/views/preference/Preference.vue:111
 msgid "Preference"
 msgid "Preference"
 msgstr "Préférence"
 msgstr "Préférence"
 
 
@@ -1717,7 +1717,7 @@ msgid "Removed successfully"
 msgstr "Enregistré avec succès"
 msgstr "Enregistré avec succès"
 
 
 #: src/views/config/components/Rename.vue:55
 #: src/views/config/components/Rename.vue:55
-#: src/views/config/ConfigList.vue:159
+#: src/views/config/ConfigList.vue:167
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 #, fuzzy
 #, fuzzy
 msgid "Rename"
 msgid "Rename"
@@ -1809,9 +1809,9 @@ msgstr "En cours d'éxécution"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/views/certificate/CertificateEditor.vue:254
 #: src/views/certificate/CertificateEditor.vue:254
-#: src/views/config/ConfigEditor.vue:214 src/views/domain/DomainEdit.vue:260
+#: src/views/config/ConfigEditor.vue:222 src/views/domain/DomainEdit.vue:260
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
-#: src/views/preference/Preference.vue:145 src/views/stream/StreamEdit.vue:252
+#: src/views/preference/Preference.vue:151 src/views/stream/StreamEdit.vue:252
 msgid "Save"
 msgid "Save"
 msgstr "Enregistrer"
 msgstr "Enregistrer"
 
 
@@ -1819,19 +1819,19 @@ msgstr "Enregistrer"
 msgid "Save Directive"
 msgid "Save Directive"
 msgstr "Enregistrer la directive"
 msgstr "Enregistrer la directive"
 
 
-#: src/views/config/ConfigEditor.vue:163 src/views/domain/DomainAdd.vue:46
+#: src/views/config/ConfigEditor.vue:171 src/views/domain/DomainAdd.vue:46
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 msgid "Save error %{msg}"
 msgid "Save error %{msg}"
 msgstr "Enregistrer l'erreur %{msg}"
 msgstr "Enregistrer l'erreur %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:121
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:122
 #: src/views/certificate/CertificateEditor.vue:46
 #: src/views/certificate/CertificateEditor.vue:46
-#: src/views/preference/Preference.vue:74
+#: src/views/preference/Preference.vue:79
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "Sauvegarde réussie"
 msgstr "Sauvegarde réussie"
 
 
-#: src/views/config/ConfigEditor.vue:159 src/views/domain/DomainAdd.vue:37
+#: src/views/config/ConfigEditor.vue:167 src/views/domain/DomainAdd.vue:37
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/stream/StreamEdit.vue:138
 #: src/views/stream/StreamEdit.vue:138
@@ -1864,13 +1864,13 @@ msgstr "Envoyer"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Rename.vue:44
 #: src/views/config/components/Rename.vue:44
-#: src/views/config/ConfigEditor.vue:100 src/views/domain/DomainList.vue:81
+#: src/views/config/ConfigEditor.vue:108 src/views/domain/DomainList.vue:81
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:55
 #: src/views/preference/components/TOTP.vue:55
-#: src/views/preference/Preference.vue:78 src/views/stream/StreamList.vue:113
+#: src/views/preference/Preference.vue:83 src/views/stream/StreamList.vue:113
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 msgid "Server error"
 msgid "Server error"
 msgstr "Erreur du serveur"
 msgstr "Erreur du serveur"
@@ -1946,7 +1946,7 @@ msgstr "Chemin de la clé du certificat SSL"
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr "Chemin du certificat SSL"
 msgstr "Chemin du certificat SSL"
 
 
-#: src/views/other/Login.vue:203
+#: src/views/other/Login.vue:189
 #, fuzzy
 #, fuzzy
 msgid "SSO Login"
 msgid "SSO Login"
 msgstr "Connexion"
 msgstr "Connexion"
@@ -2031,7 +2031,7 @@ msgstr "Changer de certificat"
 #: src/components/Notification/config.ts:12
 #: src/components/Notification/config.ts:12
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
-"Sync config %{cert_name} to %{env_name} failed, please upgrade the remote "
+"Sync config %{config_name} to %{env_name} failed, please upgrade the remote "
 "Nginx UI to the latest version"
 "Nginx UI to the latest version"
 msgstr "Dupliqué avec succès"
 msgstr "Dupliqué avec succès"
 
 
@@ -2217,7 +2217,7 @@ msgstr ""
 msgid "Token is not valid"
 msgid "Token is not valid"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:74
+#: src/views/other/Login.vue:79
 msgid "Too many login failed attempts, please try again later"
 msgid "Too many login failed attempts, please try again later"
 msgstr ""
 msgstr ""
 
 
@@ -2227,7 +2227,7 @@ msgid ""
 "password algorithm."
 "password algorithm."
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:209
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:210
 msgid "Trash"
 msgid "Trash"
 msgstr ""
 msgstr ""
 
 
@@ -2243,7 +2243,7 @@ msgstr "Type"
 
 
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/certificate/DNSCredential.vue:27
-#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:267
+#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:275
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/stream/components/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:85
@@ -2298,11 +2298,11 @@ msgstr ""
 msgid "User"
 msgid "User"
 msgstr "Nom d'utilisateur"
 msgstr "Nom d'utilisateur"
 
 
-#: src/views/other/Login.vue:77
+#: src/views/other/Login.vue:82
 msgid "User is banned"
 msgid "User is banned"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:159 src/views/user/userColumns.tsx:9
+#: src/views/other/Login.vue:164 src/views/user/userColumns.tsx:9
 msgid "Username"
 msgid "Username"
 msgstr "Nom d'utilisateur"
 msgstr "Nom d'utilisateur"
 
 
@@ -2331,11 +2331,11 @@ msgstr "Voir"
 msgid "View all notifications"
 msgid "View all notifications"
 msgstr "Certification"
 msgstr "Certification"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 msgid "View Details"
 msgid "View Details"
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 #, fuzzy
 #, fuzzy
 msgid "View Mode"
 msgid "View Mode"
 msgstr "Mode simple"
 msgstr "Mode simple"

+ 70 - 70
app/src/language/ko_KR/app.po

@@ -46,8 +46,8 @@ msgstr "ACME 사용자"
 msgid "Action"
 msgid "Action"
 msgstr "작업"
 msgstr "작업"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:203
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
@@ -56,8 +56,8 @@ msgstr "작업"
 msgid "Add"
 msgid "Add"
 msgstr "추가"
 msgstr "추가"
 
 
-#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:135
-#: src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:143
+#: src/views/config/ConfigEditor.vue:204
 msgid "Add Configuration"
 msgid "Add Configuration"
 msgstr "구성 추가"
 msgstr "구성 추가"
 
 
@@ -163,7 +163,7 @@ msgstr "조수"
 msgid "Attempts"
 msgid "Attempts"
 msgstr "시도 횟수"
 msgstr "시도 횟수"
 
 
-#: src/views/preference/Preference.vue:116
+#: src/views/preference/Preference.vue:122
 msgid "Auth"
 msgid "Auth"
 msgstr "인증"
 msgstr "인증"
 
 
@@ -185,8 +185,8 @@ msgid "Auto-renewal enabled for %{name}"
 msgstr "%{name}에 대한 자동 갱신 활성화됨"
 msgstr "%{name}에 대한 자동 갱신 활성화됨"
 
 
 #: src/views/certificate/CertificateEditor.vue:247
 #: src/views/certificate/CertificateEditor.vue:247
-#: src/views/config/ConfigEditor.vue:205 src/views/config/ConfigList.vue:173
-#: src/views/config/ConfigList.vue:99 src/views/domain/DomainEdit.vue:253
+#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:107
+#: src/views/config/ConfigList.vue:181 src/views/domain/DomainEdit.vue:253
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 msgid "Back"
 msgid "Back"
 msgstr "뒤로"
 msgstr "뒤로"
@@ -195,7 +195,7 @@ msgstr "뒤로"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "홈으로"
 msgstr "홈으로"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:215
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:216
 msgid "Back to list"
 msgid "Back to list"
 msgstr "목록으로 돌아가기"
 msgstr "목록으로 돌아가기"
 
 
@@ -215,9 +215,9 @@ msgstr "차단될 시간"
 msgid "Base information"
 msgid "Base information"
 msgstr "기본 정보"
 msgstr "기본 정보"
 
 
-#: src/views/config/ConfigEditor.vue:233
+#: src/views/config/ConfigEditor.vue:241
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/preference/Preference.vue:110
+#: src/views/preference/Preference.vue:116
 #: src/views/stream/components/RightSettings.vue:74
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
 msgid "Basic"
 msgstr "기본"
 msgstr "기본"
@@ -249,7 +249,7 @@ msgstr "CA 디렉토리"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:21
 #: src/views/domain/components/Deploy.vue:21
@@ -298,7 +298,7 @@ msgid_plural "Changed Certificates"
 msgstr[0] "인증서 변경"
 msgstr[0] "인증서 변경"
 msgstr[1] "인증서 변경"
 msgstr[1] "인증서 변경"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 #, fuzzy
 #, fuzzy
 msgid "Changed Path"
 msgid "Changed Path"
 msgstr "인증서 변경"
 msgstr "인증서 변경"
@@ -349,7 +349,7 @@ msgstr "구성 파일 테스트 성공"
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "구성 이름"
 msgstr "구성 이름"
 
 
-#: src/views/config/ConfigList.vue:91
+#: src/views/config/ConfigList.vue:99
 msgid "Configurations"
 msgid "Configurations"
 msgstr "구성들"
 msgstr "구성들"
 
 
@@ -399,12 +399,12 @@ msgstr "생성"
 msgid "Create Another"
 msgid "Create Another"
 msgstr "다른 것 생성하기"
 msgstr "다른 것 생성하기"
 
 
-#: src/views/config/ConfigList.vue:109
+#: src/views/config/ConfigList.vue:117
 #, fuzzy
 #, fuzzy
 msgid "Create File"
 msgid "Create File"
 msgstr "생성"
 msgstr "생성"
 
 
-#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:116
+#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:124
 #, fuzzy
 #, fuzzy
 msgid "Create Folder"
 msgid "Create Folder"
 msgstr "다른 것 생성하기"
 msgstr "다른 것 생성하기"
@@ -454,8 +454,8 @@ msgid ""
 "indicator."
 "indicator."
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:125
-#: src/views/config/ConfigEditor.vue:86 src/views/config/ConfigList.vue:57
+#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:133
+#: src/views/config/ConfigEditor.vue:94 src/views/config/ConfigList.vue:65
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "대시보드"
 msgstr "대시보드"
 
 
@@ -491,7 +491,7 @@ msgstr "스트림 삭제: %{stream_name}"
 msgid "Deleted successfully"
 msgid "Deleted successfully"
 msgstr "성공적으로 삭제됨"
 msgstr "성공적으로 삭제됨"
 
 
-#: src/views/config/ConfigEditor.vue:276
+#: src/views/config/ConfigEditor.vue:284
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/stream/components/Deploy.vue:103
 #: src/views/stream/components/Deploy.vue:103
@@ -678,7 +678,7 @@ msgstr "로컬로 성공적으로 복제됨"
 msgid "Edit %{n}"
 msgid "Edit %{n}"
 msgstr "%{n} 편집"
 msgstr "%{n} 편집"
 
 
-#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:204
 msgid "Edit Configuration"
 msgid "Edit Configuration"
 msgstr "구성 편집"
 msgstr "구성 편집"
 
 
@@ -864,16 +864,16 @@ msgstr "완료됨"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "중국 사용자를 위해: https://mirror.ghproxy.com/"
 msgstr "중국 사용자를 위해: https://mirror.ghproxy.com/"
 
 
-#: src/views/config/ConfigEditor.vue:208
+#: src/views/config/ConfigEditor.vue:216
 msgid "Format Code"
 msgid "Format Code"
 msgstr "코드 형식"
 msgstr "코드 형식"
 
 
-#: src/views/config/ConfigEditor.vue:175
+#: src/views/config/ConfigEditor.vue:183
 #, fuzzy
 #, fuzzy
 msgid "Format error %{msg}"
 msgid "Format error %{msg}"
 msgstr "형식 오류 %{msg}"
 msgstr "형식 오류 %{msg}"
 
 
-#: src/views/config/ConfigEditor.vue:173
+#: src/views/config/ConfigEditor.vue:181
 #, fuzzy
 #, fuzzy
 msgid "Format successfully"
 msgid "Format successfully"
 msgstr "성공적으로 형식 지정됨"
 msgstr "성공적으로 형식 지정됨"
@@ -959,7 +959,7 @@ msgstr "가져오기"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "인증서 상태"
 msgstr "인증서 상태"
 
 
-#: src/views/other/Login.vue:71
+#: src/views/other/Login.vue:76
 #, fuzzy
 #, fuzzy
 msgid "Incorrect username or password"
 msgid "Incorrect username or password"
 msgstr "사용자 이름 또는 비밀번호가 올바르지 않습니다"
 msgstr "사용자 이름 또는 비밀번호가 올바르지 않습니다"
@@ -1003,12 +1003,12 @@ msgstr "간격"
 msgid "Invalid"
 msgid "Invalid"
 msgstr "유효함"
 msgstr "유효함"
 
 
-#: src/views/other/Login.vue:81
+#: src/views/other/Login.vue:86
 msgid "Invalid 2FA or recovery code"
 msgid "Invalid 2FA or recovery code"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
-#: src/views/config/ConfigEditor.vue:242
+#: src/views/config/ConfigEditor.vue:250
 #, fuzzy
 #, fuzzy
 msgid "Invalid filename"
 msgid "Invalid filename"
 msgstr "Invalid E-mail!"
 msgstr "Invalid E-mail!"
@@ -1085,7 +1085,7 @@ msgstr "라이센스"
 msgid "Link Start"
 msgid "Link Start"
 msgstr "링크 시작"
 msgstr "링크 시작"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:192
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:193
 msgid "List"
 msgid "List"
 msgstr ""
 msgstr ""
 
 
@@ -1104,7 +1104,7 @@ msgid "Load successfully"
 msgstr "성공적으로 저장됨"
 msgstr "성공적으로 저장됨"
 
 
 #: src/components/EnvIndicator/EnvIndicator.vue:39
 #: src/components/EnvIndicator/EnvIndicator.vue:39
-#: src/components/NodeSelector/NodeSelector.vue:68
+#: src/components/NodeSelector/NodeSelector.vue:71
 #, fuzzy
 #, fuzzy
 msgid "Local"
 msgid "Local"
 msgstr "지역"
 msgstr "지역"
@@ -1122,11 +1122,11 @@ msgstr "위치들"
 msgid "Log"
 msgid "Log"
 msgstr "로그인"
 msgstr "로그인"
 
 
-#: src/routes/index.ts:305 src/views/other/Login.vue:192
+#: src/routes/index.ts:305 src/views/other/Login.vue:207
 msgid "Login"
 msgid "Login"
 msgstr "로그인"
 msgstr "로그인"
 
 
-#: src/views/other/Login.vue:125 src/views/other/Login.vue:60
+#: src/views/other/Login.vue:130 src/views/other/Login.vue:63
 msgid "Login successful"
 msgid "Login successful"
 msgstr "로그인 성공"
 msgstr "로그인 성공"
 
 
@@ -1134,7 +1134,7 @@ msgstr "로그인 성공"
 msgid "Logout successful"
 msgid "Logout successful"
 msgstr "로그아웃 성공"
 msgstr "로그아웃 성공"
 
 
-#: src/views/preference/Preference.vue:134
+#: src/views/preference/Preference.vue:140
 msgid "Logrotate"
 msgid "Logrotate"
 msgstr "로그관리"
 msgstr "로그관리"
 
 
@@ -1162,8 +1162,8 @@ msgstr ""
 "인증서를 획득하기 전에 .well-known 디렉토리에 대한역방향 프록시를 "
 "인증서를 획득하기 전에 .well-known 디렉토리에 대한역방향 프록시를 "
 "HTTPChallengePort(기본값: 9180)로 구성했는지 확인하세요."
 "HTTPChallengePort(기본값: 9180)로 구성했는지 확인하세요."
 
 
-#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:130
-#: src/views/config/ConfigEditor.vue:91 src/views/config/ConfigList.vue:62
+#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:138
+#: src/views/config/ConfigEditor.vue:99 src/views/config/ConfigList.vue:70
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "구성 관리"
 msgstr "구성 관리"
 
 
@@ -1208,9 +1208,9 @@ msgid "Model"
 msgstr "실행 모드"
 msgstr "실행 모드"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:248
 #: src/components/ChatGPT/ChatGPT.vue:248
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
-#: src/views/config/ConfigList.vue:151
+#: src/views/config/ConfigList.vue:159
 #, fuzzy
 #, fuzzy
 msgid "Modify"
 msgid "Modify"
 msgstr "설정 수정"
 msgstr "설정 수정"
@@ -1224,7 +1224,7 @@ msgstr "인증서 상태"
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "설정 수정"
 msgstr "설정 수정"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 #, fuzzy
 #, fuzzy
 msgid "Modify Mode"
 msgid "Modify Mode"
 msgstr "설정 수정"
 msgstr "설정 수정"
@@ -1239,7 +1239,7 @@ msgstr "단일 지시문"
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
-#: src/views/config/ConfigEditor.vue:248
+#: src/views/config/ConfigEditor.vue:256
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/DomainList.vue:13
 #: src/views/domain/DomainList.vue:13
@@ -1272,7 +1272,7 @@ msgstr "네트워크 총 송신"
 msgid "New name"
 msgid "New name"
 msgstr "이름 변경"
 msgstr "이름 변경"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 #, fuzzy
 #, fuzzy
 msgid "New Path"
 msgid "New Path"
 msgstr "경로"
 msgstr "경로"
@@ -1287,7 +1287,7 @@ msgstr "새 버전 출시"
 msgid "Next"
 msgid "Next"
 msgstr "다음"
 msgstr "다음"
 
 
-#: src/views/preference/Preference.vue:122
+#: src/views/preference/Preference.vue:128
 msgid "Nginx"
 msgid "Nginx"
 msgstr "Nginx"
 msgstr "Nginx"
 
 
@@ -1387,13 +1387,13 @@ msgid ""
 "Firefox."
 "Firefox."
 msgstr ""
 msgstr ""
 
 
-#: src/components/NodeSelector/NodeSelector.vue:91
+#: src/components/NodeSelector/NodeSelector.vue:94
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environment/envColumns.tsx:90
 #: src/views/environment/envColumns.tsx:90
 msgid "Offline"
 msgid "Offline"
 msgstr "오프라인"
 msgstr "오프라인"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:254
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 msgid "Ok"
 msgid "Ok"
 msgstr ""
 msgstr ""
@@ -1422,14 +1422,14 @@ msgstr "확인"
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "검증이 완료되면, 레코드는 제거됩니다."
 msgstr "검증이 완료되면, 레코드는 제거됩니다."
 
 
-#: src/components/NodeSelector/NodeSelector.vue:71
-#: src/components/NodeSelector/NodeSelector.vue:85
+#: src/components/NodeSelector/NodeSelector.vue:74
+#: src/components/NodeSelector/NodeSelector.vue:88
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
 #: src/views/environment/envColumns.tsx:86
 #: src/views/environment/envColumns.tsx:86
 msgid "Online"
 msgid "Online"
 msgstr "온라인"
 msgstr "온라인"
 
 
-#: src/views/preference/Preference.vue:128
+#: src/views/preference/Preference.vue:134
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "오픈AI"
 msgstr "오픈AI"
 
 
@@ -1446,13 +1446,13 @@ msgstr "OS"
 msgid "OS:"
 msgid "OS:"
 msgstr "OS:"
 msgstr "OS:"
 
 
-#: src/views/config/ConfigEditor.vue:285
+#: src/views/config/ConfigEditor.vue:293
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/stream/components/Deploy.vue:87
 #: src/views/stream/components/Deploy.vue:87
 msgid "Overwrite"
 msgid "Overwrite"
 msgstr "덮어쓰기"
 msgstr "덮어쓰기"
 
 
-#: src/views/config/ConfigEditor.vue:289
+#: src/views/config/ConfigEditor.vue:297
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/stream/components/Deploy.vue:91
 #: src/views/stream/components/Deploy.vue:91
 msgid "Overwrite exist file"
 msgid "Overwrite exist file"
@@ -1462,7 +1462,7 @@ msgstr "기존 파일 덮어쓰기"
 msgid "Params"
 msgid "Params"
 msgstr "파라미터"
 msgstr "파라미터"
 
 
-#: src/views/other/Login.vue:169 src/views/user/userColumns.tsx:18
+#: src/views/other/Login.vue:174 src/views/user/userColumns.tsx:18
 msgid "Password"
 msgid "Password"
 msgstr "비밀번호"
 msgstr "비밀번호"
 
 
@@ -1470,7 +1470,7 @@ msgstr "비밀번호"
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "비밀번호 (*)"
 msgstr "비밀번호 (*)"
 
 
-#: src/views/config/ConfigEditor.vue:254
+#: src/views/config/ConfigEditor.vue:262
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 msgid "Path"
 msgid "Path"
@@ -1498,7 +1498,7 @@ msgid ""
 "provider."
 "provider."
 msgstr "DNS 제공자가 제공한 API 인증 자격 증명을 입력해주세요."
 msgstr "DNS 제공자가 제공한 API 인증 자격 증명을 입력해주세요."
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:132
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:133
 msgid "Please fill in the required fields"
 msgid "Please fill in the required fields"
 msgstr ""
 msgstr ""
 
 
@@ -1511,7 +1511,7 @@ msgstr ""
 "하려면 아래 자격 증명 중 하나를 선택해주세요."
 "하려면 아래 자격 증명 중 하나를 선택해주세요."
 
 
 #: src/views/config/components/Rename.vue:64
 #: src/views/config/components/Rename.vue:64
-#: src/views/config/ConfigEditor.vue:241
+#: src/views/config/ConfigEditor.vue:249
 #, fuzzy
 #, fuzzy
 msgid "Please input a filename"
 msgid "Please input a filename"
 msgstr "사용자 이름을 입력해주세요!"
 msgstr "사용자 이름을 입력해주세요!"
@@ -1532,11 +1532,11 @@ msgstr "이름을 입력해주세요, 이것은 새 구성의 파일 이름으
 msgid "Please input your E-mail!"
 msgid "Please input your E-mail!"
 msgstr "이메일을 입력해주세요!"
 msgstr "이메일을 입력해주세요!"
 
 
-#: src/views/other/Install.vue:44 src/views/other/Login.vue:43
+#: src/views/other/Install.vue:44 src/views/other/Login.vue:44
 msgid "Please input your password!"
 msgid "Please input your password!"
 msgstr "비밀번호를 입력해주세요!"
 msgstr "비밀번호를 입력해주세요!"
 
 
-#: src/views/other/Install.vue:38 src/views/other/Login.vue:37
+#: src/views/other/Install.vue:38 src/views/other/Login.vue:38
 msgid "Please input your username!"
 msgid "Please input your username!"
 msgstr "사용자 이름을 입력해주세요!"
 msgstr "사용자 이름을 입력해주세요!"
 
 
@@ -1556,7 +1556,7 @@ msgstr "적어도 하나의 노드를 선택해주세요!"
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr "사전 출시"
 msgstr "사전 출시"
 
 
-#: src/routes/index.ts:260 src/views/preference/Preference.vue:105
+#: src/routes/index.ts:260 src/views/preference/Preference.vue:111
 msgid "Preference"
 msgid "Preference"
 msgstr "환경설정"
 msgstr "환경설정"
 
 
@@ -1682,7 +1682,7 @@ msgid "Removed successfully"
 msgstr "성공적으로 제거됨"
 msgstr "성공적으로 제거됨"
 
 
 #: src/views/config/components/Rename.vue:55
 #: src/views/config/components/Rename.vue:55
-#: src/views/config/ConfigList.vue:159
+#: src/views/config/ConfigList.vue:167
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 #, fuzzy
 #, fuzzy
 msgid "Rename"
 msgid "Rename"
@@ -1775,9 +1775,9 @@ msgstr "실행 중"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/views/certificate/CertificateEditor.vue:254
 #: src/views/certificate/CertificateEditor.vue:254
-#: src/views/config/ConfigEditor.vue:214 src/views/domain/DomainEdit.vue:260
+#: src/views/config/ConfigEditor.vue:222 src/views/domain/DomainEdit.vue:260
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
-#: src/views/preference/Preference.vue:145 src/views/stream/StreamEdit.vue:252
+#: src/views/preference/Preference.vue:151 src/views/stream/StreamEdit.vue:252
 msgid "Save"
 msgid "Save"
 msgstr "저장"
 msgstr "저장"
 
 
@@ -1785,20 +1785,20 @@ msgstr "저장"
 msgid "Save Directive"
 msgid "Save Directive"
 msgstr "지시문 저장"
 msgstr "지시문 저장"
 
 
-#: src/views/config/ConfigEditor.vue:163 src/views/domain/DomainAdd.vue:46
+#: src/views/config/ConfigEditor.vue:171 src/views/domain/DomainAdd.vue:46
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 msgid "Save error %{msg}"
 msgid "Save error %{msg}"
 msgstr "저장 오류 %{msg}"
 msgstr "저장 오류 %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:121
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:122
 #: src/views/certificate/CertificateEditor.vue:46
 #: src/views/certificate/CertificateEditor.vue:46
-#: src/views/preference/Preference.vue:74
+#: src/views/preference/Preference.vue:79
 #, fuzzy
 #, fuzzy
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "성공적으로 저장됨"
 msgstr "성공적으로 저장됨"
 
 
-#: src/views/config/ConfigEditor.vue:159 src/views/domain/DomainAdd.vue:37
+#: src/views/config/ConfigEditor.vue:167 src/views/domain/DomainAdd.vue:37
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/stream/StreamEdit.vue:138
 #: src/views/stream/StreamEdit.vue:138
@@ -1831,13 +1831,13 @@ msgstr "보내기"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Rename.vue:44
 #: src/views/config/components/Rename.vue:44
-#: src/views/config/ConfigEditor.vue:100 src/views/domain/DomainList.vue:81
+#: src/views/config/ConfigEditor.vue:108 src/views/domain/DomainList.vue:81
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:55
 #: src/views/preference/components/TOTP.vue:55
-#: src/views/preference/Preference.vue:78 src/views/stream/StreamList.vue:113
+#: src/views/preference/Preference.vue:83 src/views/stream/StreamList.vue:113
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 msgid "Server error"
 msgid "Server error"
 msgstr "서버 오류"
 msgstr "서버 오류"
@@ -1913,7 +1913,7 @@ msgstr "SSL 인증서 키 경로"
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr "SSL 인증서 경로"
 msgstr "SSL 인증서 경로"
 
 
-#: src/views/other/Login.vue:203
+#: src/views/other/Login.vue:189
 #, fuzzy
 #, fuzzy
 msgid "SSO Login"
 msgid "SSO Login"
 msgstr "SSO 로그인"
 msgstr "SSO 로그인"
@@ -1997,7 +1997,7 @@ msgstr "인증서 갱신 성공"
 #: src/components/Notification/config.ts:12
 #: src/components/Notification/config.ts:12
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
-"Sync config %{cert_name} to %{env_name} failed, please upgrade the remote "
+"Sync config %{config_name} to %{env_name} failed, please upgrade the remote "
 "Nginx UI to the latest version"
 "Nginx UI to the latest version"
 msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 msgstr "%{conf_name}을(를) %{node_name}(으)로 성공적으로 복제함"
 
 
@@ -2180,7 +2180,7 @@ msgstr ""
 msgid "Token is not valid"
 msgid "Token is not valid"
 msgstr "토큰이 유효하지 않습니다"
 msgstr "토큰이 유효하지 않습니다"
 
 
-#: src/views/other/Login.vue:74
+#: src/views/other/Login.vue:79
 msgid "Too many login failed attempts, please try again later"
 msgid "Too many login failed attempts, please try again later"
 msgstr ""
 msgstr ""
 
 
@@ -2190,7 +2190,7 @@ msgid ""
 "password algorithm."
 "password algorithm."
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:209
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:210
 msgid "Trash"
 msgid "Trash"
 msgstr ""
 msgstr ""
 
 
@@ -2206,7 +2206,7 @@ msgstr "유형"
 
 
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/certificate/DNSCredential.vue:27
-#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:267
+#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:275
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/stream/components/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:85
@@ -2263,11 +2263,11 @@ msgstr ""
 msgid "User"
 msgid "User"
 msgstr "사용자 이름"
 msgstr "사용자 이름"
 
 
-#: src/views/other/Login.vue:77
+#: src/views/other/Login.vue:82
 msgid "User is banned"
 msgid "User is banned"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:159 src/views/user/userColumns.tsx:9
+#: src/views/other/Login.vue:164 src/views/user/userColumns.tsx:9
 msgid "Username"
 msgid "Username"
 msgstr "사용자 이름"
 msgstr "사용자 이름"
 
 
@@ -2296,12 +2296,12 @@ msgstr "보기"
 msgid "View all notifications"
 msgid "View all notifications"
 msgstr "Certificate is valid"
 msgstr "Certificate is valid"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 #, fuzzy
 #, fuzzy
 msgid "View Details"
 msgid "View Details"
 msgstr "세부 사항"
 msgstr "세부 사항"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 #, fuzzy
 #, fuzzy
 msgid "View Mode"
 msgid "View Mode"
 msgstr "기본 모드"
 msgstr "기본 모드"

+ 74 - 74
app/src/language/messages.pot

@@ -38,8 +38,8 @@ msgstr ""
 msgid "Action"
 msgid "Action"
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:203
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
@@ -49,8 +49,8 @@ msgid "Add"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:112
 #: src/routes/index.ts:112
-#: src/views/config/ConfigEditor.vue:135
-#: src/views/config/ConfigEditor.vue:196
+#: src/views/config/ConfigEditor.vue:143
+#: src/views/config/ConfigEditor.vue:204
 msgid "Add Configuration"
 msgid "Add Configuration"
 msgstr ""
 msgstr ""
 
 
@@ -159,7 +159,7 @@ msgstr ""
 msgid "Attempts"
 msgid "Attempts"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:116
+#: src/views/preference/Preference.vue:122
 msgid "Auth"
 msgid "Auth"
 msgstr ""
 msgstr ""
 
 
@@ -181,9 +181,9 @@ msgid "Auto-renewal enabled for %{name}"
 msgstr ""
 msgstr ""
 
 
 #: src/views/certificate/CertificateEditor.vue:247
 #: src/views/certificate/CertificateEditor.vue:247
-#: src/views/config/ConfigEditor.vue:205
-#: src/views/config/ConfigList.vue:173
-#: src/views/config/ConfigList.vue:99
+#: src/views/config/ConfigEditor.vue:213
+#: src/views/config/ConfigList.vue:107
+#: src/views/config/ConfigList.vue:181
 #: src/views/domain/DomainEdit.vue:253
 #: src/views/domain/DomainEdit.vue:253
 #: src/views/nginx_log/NginxLog.vue:168
 #: src/views/nginx_log/NginxLog.vue:168
 #: src/views/stream/StreamEdit.vue:245
 #: src/views/stream/StreamEdit.vue:245
@@ -194,7 +194,7 @@ msgstr ""
 msgid "Back Home"
 msgid "Back Home"
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:215
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:216
 msgid "Back to list"
 msgid "Back to list"
 msgstr ""
 msgstr ""
 
 
@@ -214,9 +214,9 @@ msgstr ""
 msgid "Base information"
 msgid "Base information"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:233
+#: src/views/config/ConfigEditor.vue:241
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/preference/Preference.vue:110
+#: src/views/preference/Preference.vue:116
 #: src/views/stream/components/RightSettings.vue:74
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
 msgid "Basic"
 msgstr ""
 msgstr ""
@@ -249,7 +249,7 @@ msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:21
 #: src/views/domain/components/Deploy.vue:21
@@ -297,7 +297,7 @@ msgid_plural "Changed Certificates"
 msgstr[0] ""
 msgstr[0] ""
 msgstr[1] ""
 msgstr[1] ""
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 msgid "Changed Path"
 msgid "Changed Path"
 msgstr ""
 msgstr ""
 
 
@@ -348,7 +348,7 @@ msgstr ""
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigList.vue:91
+#: src/views/config/ConfigList.vue:99
 msgid "Configurations"
 msgid "Configurations"
 msgstr ""
 msgstr ""
 
 
@@ -398,12 +398,12 @@ msgstr ""
 msgid "Create Another"
 msgid "Create Another"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigList.vue:109
+#: src/views/config/ConfigList.vue:117
 msgid "Create File"
 msgid "Create File"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Mkdir.vue:48
 #: src/views/config/components/Mkdir.vue:48
-#: src/views/config/ConfigList.vue:116
+#: src/views/config/ConfigList.vue:124
 msgid "Create Folder"
 msgid "Create Folder"
 msgstr ""
 msgstr ""
 
 
@@ -450,9 +450,9 @@ msgid "Customize the name of local server to be displayed in the environment ind
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:39
 #: src/routes/index.ts:39
-#: src/views/config/ConfigEditor.vue:125
-#: src/views/config/ConfigEditor.vue:86
-#: src/views/config/ConfigList.vue:57
+#: src/views/config/ConfigEditor.vue:133
+#: src/views/config/ConfigEditor.vue:94
+#: src/views/config/ConfigList.vue:65
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr ""
 msgstr ""
 
 
@@ -488,7 +488,7 @@ msgstr ""
 msgid "Deleted successfully"
 msgid "Deleted successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:276
+#: src/views/config/ConfigEditor.vue:284
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/stream/components/Deploy.vue:103
 #: src/views/stream/components/Deploy.vue:103
@@ -681,7 +681,7 @@ msgid "Edit %{n}"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:122
 #: src/routes/index.ts:122
-#: src/views/config/ConfigEditor.vue:196
+#: src/views/config/ConfigEditor.vue:204
 msgid "Edit Configuration"
 msgid "Edit Configuration"
 msgstr ""
 msgstr ""
 
 
@@ -868,15 +868,15 @@ msgstr ""
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:208
+#: src/views/config/ConfigEditor.vue:216
 msgid "Format Code"
 msgid "Format Code"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:175
+#: src/views/config/ConfigEditor.vue:183
 msgid "Format error %{msg}"
 msgid "Format error %{msg}"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:173
+#: src/views/config/ConfigEditor.vue:181
 msgid "Format successfully"
 msgid "Format successfully"
 msgstr ""
 msgstr ""
 
 
@@ -954,7 +954,7 @@ msgstr ""
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:71
+#: src/views/other/Login.vue:76
 msgid "Incorrect username or password"
 msgid "Incorrect username or password"
 msgstr ""
 msgstr ""
 
 
@@ -997,12 +997,12 @@ msgstr ""
 msgid "Invalid"
 msgid "Invalid"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:81
+#: src/views/other/Login.vue:86
 msgid "Invalid 2FA or recovery code"
 msgid "Invalid 2FA or recovery code"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
-#: src/views/config/ConfigEditor.vue:242
+#: src/views/config/ConfigEditor.vue:250
 msgid "Invalid filename"
 msgid "Invalid filename"
 msgstr ""
 msgstr ""
 
 
@@ -1073,7 +1073,7 @@ msgstr ""
 msgid "Link Start"
 msgid "Link Start"
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:192
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:193
 msgid "List"
 msgid "List"
 msgstr ""
 msgstr ""
 
 
@@ -1090,7 +1090,7 @@ msgid "Load successfully"
 msgstr ""
 msgstr ""
 
 
 #: src/components/EnvIndicator/EnvIndicator.vue:39
 #: src/components/EnvIndicator/EnvIndicator.vue:39
-#: src/components/NodeSelector/NodeSelector.vue:68
+#: src/components/NodeSelector/NodeSelector.vue:71
 msgid "Local"
 msgid "Local"
 msgstr ""
 msgstr ""
 
 
@@ -1107,12 +1107,12 @@ msgid "Log"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:305
 #: src/routes/index.ts:305
-#: src/views/other/Login.vue:192
+#: src/views/other/Login.vue:207
 msgid "Login"
 msgid "Login"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:125
-#: src/views/other/Login.vue:60
+#: src/views/other/Login.vue:130
+#: src/views/other/Login.vue:63
 msgid "Login successful"
 msgid "Login successful"
 msgstr ""
 msgstr ""
 
 
@@ -1120,7 +1120,7 @@ msgstr ""
 msgid "Logout successful"
 msgid "Logout successful"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:134
+#: src/views/preference/Preference.vue:140
 msgid "Logrotate"
 msgid "Logrotate"
 msgstr ""
 msgstr ""
 
 
@@ -1133,9 +1133,9 @@ msgid "Make sure you have configured a reverse proxy for .well-known directory t
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:102
 #: src/routes/index.ts:102
-#: src/views/config/ConfigEditor.vue:130
-#: src/views/config/ConfigEditor.vue:91
-#: src/views/config/ConfigList.vue:62
+#: src/views/config/ConfigEditor.vue:138
+#: src/views/config/ConfigEditor.vue:99
+#: src/views/config/ConfigList.vue:70
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr ""
 msgstr ""
 
 
@@ -1180,9 +1180,9 @@ msgid "Model"
 msgstr ""
 msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:248
 #: src/components/ChatGPT/ChatGPT.vue:248
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
-#: src/views/config/ConfigList.vue:151
+#: src/views/config/ConfigList.vue:159
 msgid "Modify"
 msgid "Modify"
 msgstr ""
 msgstr ""
 
 
@@ -1195,7 +1195,7 @@ msgstr ""
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 msgid "Modify Mode"
 msgid "Modify Mode"
 msgstr ""
 msgstr ""
 
 
@@ -1209,7 +1209,7 @@ msgstr ""
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/config/components/Mkdir.vue:65
 #: src/views/config/components/Mkdir.vue:65
 #: src/views/config/configColumns.ts:8
 #: src/views/config/configColumns.ts:8
-#: src/views/config/ConfigEditor.vue:248
+#: src/views/config/ConfigEditor.vue:256
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/DomainList.vue:13
 #: src/views/domain/DomainList.vue:13
@@ -1242,7 +1242,7 @@ msgstr ""
 msgid "New name"
 msgid "New name"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 msgid "New Path"
 msgid "New Path"
 msgstr ""
 msgstr ""
 
 
@@ -1256,7 +1256,7 @@ msgstr ""
 msgid "Next"
 msgid "Next"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:122
+#: src/views/preference/Preference.vue:128
 msgid "Nginx"
 msgid "Nginx"
 msgstr ""
 msgstr ""
 
 
@@ -1351,13 +1351,13 @@ msgstr ""
 msgid "OCSP Must Staple may cause errors for some users on first access using Firefox."
 msgid "OCSP Must Staple may cause errors for some users on first access using Firefox."
 msgstr ""
 msgstr ""
 
 
-#: src/components/NodeSelector/NodeSelector.vue:91
+#: src/components/NodeSelector/NodeSelector.vue:94
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environment/envColumns.tsx:90
 #: src/views/environment/envColumns.tsx:90
 msgid "Offline"
 msgid "Offline"
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:254
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 msgid "Ok"
 msgid "Ok"
 msgstr ""
 msgstr ""
@@ -1386,14 +1386,14 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr ""
 msgstr ""
 
 
-#: src/components/NodeSelector/NodeSelector.vue:71
-#: src/components/NodeSelector/NodeSelector.vue:85
+#: src/components/NodeSelector/NodeSelector.vue:74
+#: src/components/NodeSelector/NodeSelector.vue:88
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
 #: src/views/environment/envColumns.tsx:86
 #: src/views/environment/envColumns.tsx:86
 msgid "Online"
 msgid "Online"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:128
+#: src/views/preference/Preference.vue:134
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr ""
 msgstr ""
 
 
@@ -1409,13 +1409,13 @@ msgstr ""
 msgid "OS:"
 msgid "OS:"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:285
+#: src/views/config/ConfigEditor.vue:293
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/stream/components/Deploy.vue:87
 #: src/views/stream/components/Deploy.vue:87
 msgid "Overwrite"
 msgid "Overwrite"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:289
+#: src/views/config/ConfigEditor.vue:297
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/stream/components/Deploy.vue:91
 #: src/views/stream/components/Deploy.vue:91
 msgid "Overwrite exist file"
 msgid "Overwrite exist file"
@@ -1425,7 +1425,7 @@ msgstr ""
 msgid "Params"
 msgid "Params"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:169
+#: src/views/other/Login.vue:174
 #: src/views/user/userColumns.tsx:18
 #: src/views/user/userColumns.tsx:18
 msgid "Password"
 msgid "Password"
 msgstr ""
 msgstr ""
@@ -1434,7 +1434,7 @@ msgstr ""
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:254
+#: src/views/config/ConfigEditor.vue:262
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 msgid "Path"
 msgid "Path"
@@ -1460,7 +1460,7 @@ msgstr ""
 msgid "Please fill in the API authentication credentials provided by your DNS provider."
 msgid "Please fill in the API authentication credentials provided by your DNS provider."
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:132
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:133
 msgid "Please fill in the required fields"
 msgid "Please fill in the required fields"
 msgstr ""
 msgstr ""
 
 
@@ -1469,7 +1469,7 @@ msgid "Please first add credentials in Certification > DNS Credentials, and then
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:64
 #: src/views/config/components/Rename.vue:64
-#: src/views/config/ConfigEditor.vue:241
+#: src/views/config/ConfigEditor.vue:249
 msgid "Please input a filename"
 msgid "Please input a filename"
 msgstr ""
 msgstr ""
 
 
@@ -1487,12 +1487,12 @@ msgid "Please input your E-mail!"
 msgstr ""
 msgstr ""
 
 
 #: src/views/other/Install.vue:44
 #: src/views/other/Install.vue:44
-#: src/views/other/Login.vue:43
+#: src/views/other/Login.vue:44
 msgid "Please input your password!"
 msgid "Please input your password!"
 msgstr ""
 msgstr ""
 
 
 #: src/views/other/Install.vue:38
 #: src/views/other/Install.vue:38
-#: src/views/other/Login.vue:37
+#: src/views/other/Login.vue:38
 msgid "Please input your username!"
 msgid "Please input your username!"
 msgstr ""
 msgstr ""
 
 
@@ -1513,7 +1513,7 @@ msgid "Pre-release"
 msgstr ""
 msgstr ""
 
 
 #: src/routes/index.ts:260
 #: src/routes/index.ts:260
-#: src/views/preference/Preference.vue:105
+#: src/views/preference/Preference.vue:111
 msgid "Preference"
 msgid "Preference"
 msgstr ""
 msgstr ""
 
 
@@ -1630,7 +1630,7 @@ msgid "Removed successfully"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:55
 #: src/views/config/components/Rename.vue:55
-#: src/views/config/ConfigList.vue:159
+#: src/views/config/ConfigList.vue:167
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 msgid "Rename"
 msgid "Rename"
 msgstr ""
 msgstr ""
@@ -1707,10 +1707,10 @@ msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/views/certificate/CertificateEditor.vue:254
 #: src/views/certificate/CertificateEditor.vue:254
-#: src/views/config/ConfigEditor.vue:214
+#: src/views/config/ConfigEditor.vue:222
 #: src/views/domain/DomainEdit.vue:260
 #: src/views/domain/DomainEdit.vue:260
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
-#: src/views/preference/Preference.vue:145
+#: src/views/preference/Preference.vue:151
 #: src/views/stream/StreamEdit.vue:252
 #: src/views/stream/StreamEdit.vue:252
 msgid "Save"
 msgid "Save"
 msgstr ""
 msgstr ""
@@ -1719,20 +1719,20 @@ msgstr ""
 msgid "Save Directive"
 msgid "Save Directive"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:163
+#: src/views/config/ConfigEditor.vue:171
 #: src/views/domain/DomainAdd.vue:46
 #: src/views/domain/DomainAdd.vue:46
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 msgid "Save error %{msg}"
 msgid "Save error %{msg}"
 msgstr ""
 msgstr ""
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:121
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:122
 #: src/views/certificate/CertificateEditor.vue:46
 #: src/views/certificate/CertificateEditor.vue:46
-#: src/views/preference/Preference.vue:74
+#: src/views/preference/Preference.vue:79
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr ""
 msgstr ""
 
 
-#: src/views/config/ConfigEditor.vue:159
+#: src/views/config/ConfigEditor.vue:167
 #: src/views/domain/DomainAdd.vue:37
 #: src/views/domain/DomainAdd.vue:37
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
@@ -1766,7 +1766,7 @@ msgstr ""
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Rename.vue:44
 #: src/views/config/components/Rename.vue:44
-#: src/views/config/ConfigEditor.vue:100
+#: src/views/config/ConfigEditor.vue:108
 #: src/views/domain/DomainList.vue:81
 #: src/views/domain/DomainList.vue:81
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/Environment.vue:15
 #: src/views/environment/Environment.vue:15
@@ -1774,7 +1774,7 @@ msgstr ""
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:55
 #: src/views/preference/components/TOTP.vue:55
-#: src/views/preference/Preference.vue:78
+#: src/views/preference/Preference.vue:83
 #: src/views/stream/StreamList.vue:113
 #: src/views/stream/StreamList.vue:113
 #: src/views/stream/StreamList.vue:81
 #: src/views/stream/StreamList.vue:81
 #: src/views/system/Upgrade.vue:42
 #: src/views/system/Upgrade.vue:42
@@ -1845,7 +1845,7 @@ msgstr ""
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:203
+#: src/views/other/Login.vue:189
 msgid "SSO Login"
 msgid "SSO Login"
 msgstr ""
 msgstr ""
 
 
@@ -1920,7 +1920,7 @@ msgid "Sync Certificate Success"
 msgstr ""
 msgstr ""
 
 
 #: src/components/Notification/config.ts:12
 #: src/components/Notification/config.ts:12
-msgid "Sync config %{cert_name} to %{env_name} failed, please upgrade the remote Nginx UI to the latest version"
+msgid "Sync config %{config_name} to %{env_name} failed, please upgrade the remote Nginx UI to the latest version"
 msgstr ""
 msgstr ""
 
 
 #: src/components/Notification/config.ts:16
 #: src/components/Notification/config.ts:16
@@ -2066,7 +2066,7 @@ msgstr ""
 msgid "Token is not valid"
 msgid "Token is not valid"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:74
+#: src/views/other/Login.vue:79
 msgid "Too many login failed attempts, please try again later"
 msgid "Too many login failed attempts, please try again later"
 msgstr ""
 msgstr ""
 
 
@@ -2074,7 +2074,7 @@ msgstr ""
 msgid "TOTP is a two-factor authentication method that uses a time-based one-time password algorithm."
 msgid "TOTP is a two-factor authentication method that uses a time-based one-time password algorithm."
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:209
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:210
 msgid "Trash"
 msgid "Trash"
 msgstr ""
 msgstr ""
 
 
@@ -2091,7 +2091,7 @@ msgstr ""
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/config/configColumns.ts:31
 #: src/views/config/configColumns.ts:31
-#: src/views/config/ConfigEditor.vue:267
+#: src/views/config/ConfigEditor.vue:275
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/DomainList.vue:41
 #: src/views/domain/DomainList.vue:41
 #: src/views/environment/envColumns.tsx:124
 #: src/views/environment/envColumns.tsx:124
@@ -2149,11 +2149,11 @@ msgstr ""
 msgid "User"
 msgid "User"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:77
+#: src/views/other/Login.vue:82
 msgid "User is banned"
 msgid "User is banned"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:159
+#: src/views/other/Login.vue:164
 #: src/views/user/userColumns.tsx:9
 #: src/views/user/userColumns.tsx:9
 msgid "Username"
 msgid "Username"
 msgstr ""
 msgstr ""
@@ -2181,11 +2181,11 @@ msgstr ""
 msgid "View all notifications"
 msgid "View all notifications"
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 msgid "View Details"
 msgid "View Details"
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 msgid "View Mode"
 msgid "View Mode"
 msgstr ""
 msgstr ""
 
 

+ 71 - 70
app/src/language/ru_RU/app.po

@@ -46,8 +46,8 @@ msgstr "Пользователь ACME"
 msgid "Action"
 msgid "Action"
 msgstr "Действие"
 msgstr "Действие"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:203
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
@@ -56,8 +56,8 @@ msgstr "Действие"
 msgid "Add"
 msgid "Add"
 msgstr "Добавить"
 msgstr "Добавить"
 
 
-#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:135
-#: src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:143
+#: src/views/config/ConfigEditor.vue:204
 msgid "Add Configuration"
 msgid "Add Configuration"
 msgstr "Добавить конфигурацию"
 msgstr "Добавить конфигурацию"
 
 
@@ -165,7 +165,7 @@ msgstr "Ассистент"
 msgid "Attempts"
 msgid "Attempts"
 msgstr "Попытки"
 msgstr "Попытки"
 
 
-#: src/views/preference/Preference.vue:116
+#: src/views/preference/Preference.vue:122
 msgid "Auth"
 msgid "Auth"
 msgstr "Авторизация"
 msgstr "Авторизация"
 
 
@@ -187,8 +187,8 @@ msgid "Auto-renewal enabled for %{name}"
 msgstr "Автообновление включено для %{name}"
 msgstr "Автообновление включено для %{name}"
 
 
 #: src/views/certificate/CertificateEditor.vue:247
 #: src/views/certificate/CertificateEditor.vue:247
-#: src/views/config/ConfigEditor.vue:205 src/views/config/ConfigList.vue:173
-#: src/views/config/ConfigList.vue:99 src/views/domain/DomainEdit.vue:253
+#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:107
+#: src/views/config/ConfigList.vue:181 src/views/domain/DomainEdit.vue:253
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 msgid "Back"
 msgid "Back"
 msgstr "Назад"
 msgstr "Назад"
@@ -197,7 +197,7 @@ msgstr "Назад"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "Вернуться на главную"
 msgstr "Вернуться на главную"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:215
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:216
 msgid "Back to list"
 msgid "Back to list"
 msgstr "Возврат к списку"
 msgstr "Возврат к списку"
 
 
@@ -217,9 +217,9 @@ msgstr "Заблокирован до"
 msgid "Base information"
 msgid "Base information"
 msgstr "Основная информация"
 msgstr "Основная информация"
 
 
-#: src/views/config/ConfigEditor.vue:233
+#: src/views/config/ConfigEditor.vue:241
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/preference/Preference.vue:110
+#: src/views/preference/Preference.vue:116
 #: src/views/stream/components/RightSettings.vue:74
 #: src/views/stream/components/RightSettings.vue:74
 #, fuzzy
 #, fuzzy
 msgid "Basic"
 msgid "Basic"
@@ -252,7 +252,7 @@ msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:21
 #: src/views/domain/components/Deploy.vue:21
@@ -300,7 +300,7 @@ msgid_plural "Changed Certificates"
 msgstr[0] "Сертификат изменен"
 msgstr[0] "Сертификат изменен"
 msgstr[1] "Сертификаты изменены"
 msgstr[1] "Сертификаты изменены"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 msgid "Changed Path"
 msgid "Changed Path"
 msgstr "Путь изменён"
 msgstr "Путь изменён"
 
 
@@ -350,7 +350,7 @@ msgstr "Проверка конфигурации успешна"
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "Название конфигурации"
 msgstr "Название конфигурации"
 
 
-#: src/views/config/ConfigList.vue:91
+#: src/views/config/ConfigList.vue:99
 msgid "Configurations"
 msgid "Configurations"
 msgstr "Конфигурации"
 msgstr "Конфигурации"
 
 
@@ -400,11 +400,11 @@ msgstr "Создать"
 msgid "Create Another"
 msgid "Create Another"
 msgstr "Создать еще"
 msgstr "Создать еще"
 
 
-#: src/views/config/ConfigList.vue:109
+#: src/views/config/ConfigList.vue:117
 msgid "Create File"
 msgid "Create File"
 msgstr "Создать файл"
 msgstr "Создать файл"
 
 
-#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:116
+#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:124
 msgid "Create Folder"
 msgid "Create Folder"
 msgstr "Создать папку"
 msgstr "Создать папку"
 
 
@@ -453,8 +453,8 @@ msgid ""
 "indicator."
 "indicator."
 msgstr "Настройте имя локального сервера для отображения в индикаторе среды."
 msgstr "Настройте имя локального сервера для отображения в индикаторе среды."
 
 
-#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:125
-#: src/views/config/ConfigEditor.vue:86 src/views/config/ConfigList.vue:57
+#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:133
+#: src/views/config/ConfigEditor.vue:94 src/views/config/ConfigList.vue:65
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "Доска"
 msgstr "Доска"
 
 
@@ -490,7 +490,7 @@ msgstr "Удалить поток: %{stream_name}"
 msgid "Deleted successfully"
 msgid "Deleted successfully"
 msgstr "Удалено успешно"
 msgstr "Удалено успешно"
 
 
-#: src/views/config/ConfigEditor.vue:276
+#: src/views/config/ConfigEditor.vue:284
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/stream/components/Deploy.vue:103
 #: src/views/stream/components/Deploy.vue:103
@@ -679,7 +679,7 @@ msgstr "Успешно дублировано на локальный"
 msgid "Edit %{n}"
 msgid "Edit %{n}"
 msgstr "Редактировать %{n}"
 msgstr "Редактировать %{n}"
 
 
-#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:204
 msgid "Edit Configuration"
 msgid "Edit Configuration"
 msgstr "Редактировать Конфигурацию"
 msgstr "Редактировать Конфигурацию"
 
 
@@ -858,15 +858,15 @@ msgstr "Готово"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "Для китайских пользователей: https://mirror.ghproxy.com/"
 msgstr "Для китайских пользователей: https://mirror.ghproxy.com/"
 
 
-#: src/views/config/ConfigEditor.vue:208
+#: src/views/config/ConfigEditor.vue:216
 msgid "Format Code"
 msgid "Format Code"
 msgstr "Форматировать код"
 msgstr "Форматировать код"
 
 
-#: src/views/config/ConfigEditor.vue:175
+#: src/views/config/ConfigEditor.vue:183
 msgid "Format error %{msg}"
 msgid "Format error %{msg}"
 msgstr "Ошибка формата %{msg}"
 msgstr "Ошибка формата %{msg}"
 
 
-#: src/views/config/ConfigEditor.vue:173
+#: src/views/config/ConfigEditor.vue:181
 msgid "Format successfully"
 msgid "Format successfully"
 msgstr "Форматирование успешно"
 msgstr "Форматирование успешно"
 
 
@@ -955,7 +955,7 @@ msgstr "Импорт"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Импортировать сертификат"
 msgstr "Импортировать сертификат"
 
 
-#: src/views/other/Login.vue:71
+#: src/views/other/Login.vue:76
 msgid "Incorrect username or password"
 msgid "Incorrect username or password"
 msgstr "Неверное имя пользователя или пароль"
 msgstr "Неверное имя пользователя или пароль"
 
 
@@ -996,12 +996,12 @@ msgstr "Интервал"
 msgid "Invalid"
 msgid "Invalid"
 msgstr "Недействительно"
 msgstr "Недействительно"
 
 
-#: src/views/other/Login.vue:81
+#: src/views/other/Login.vue:86
 msgid "Invalid 2FA or recovery code"
 msgid "Invalid 2FA or recovery code"
 msgstr "Неверный 2FA или код восстановления"
 msgstr "Неверный 2FA или код восстановления"
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
-#: src/views/config/ConfigEditor.vue:242
+#: src/views/config/ConfigEditor.vue:250
 msgid "Invalid filename"
 msgid "Invalid filename"
 msgstr "Неверное имя файла"
 msgstr "Неверное имя файла"
 
 
@@ -1072,7 +1072,7 @@ msgstr "Лицензия"
 msgid "Link Start"
 msgid "Link Start"
 msgstr "Начало ссылки"
 msgstr "Начало ссылки"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:192
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:193
 msgid "List"
 msgid "List"
 msgstr "Список"
 msgstr "Список"
 
 
@@ -1089,7 +1089,7 @@ msgid "Load successfully"
 msgstr "Загружено успешно"
 msgstr "Загружено успешно"
 
 
 #: src/components/EnvIndicator/EnvIndicator.vue:39
 #: src/components/EnvIndicator/EnvIndicator.vue:39
-#: src/components/NodeSelector/NodeSelector.vue:68
+#: src/components/NodeSelector/NodeSelector.vue:71
 msgid "Local"
 msgid "Local"
 msgstr "Локальный"
 msgstr "Локальный"
 
 
@@ -1105,11 +1105,11 @@ msgstr "Locations"
 msgid "Log"
 msgid "Log"
 msgstr "Журнал"
 msgstr "Журнал"
 
 
-#: src/routes/index.ts:305 src/views/other/Login.vue:192
+#: src/routes/index.ts:305 src/views/other/Login.vue:207
 msgid "Login"
 msgid "Login"
 msgstr "Логин"
 msgstr "Логин"
 
 
-#: src/views/other/Login.vue:125 src/views/other/Login.vue:60
+#: src/views/other/Login.vue:130 src/views/other/Login.vue:63
 msgid "Login successful"
 msgid "Login successful"
 msgstr "Авторизация успешна"
 msgstr "Авторизация успешна"
 
 
@@ -1117,7 +1117,7 @@ msgstr "Авторизация успешна"
 msgid "Logout successful"
 msgid "Logout successful"
 msgstr "Выход выполнен успешно"
 msgstr "Выход выполнен успешно"
 
 
-#: src/views/preference/Preference.vue:134
+#: src/views/preference/Preference.vue:140
 msgid "Logrotate"
 msgid "Logrotate"
 msgstr "Прокрутка"
 msgstr "Прокрутка"
 
 
@@ -1145,8 +1145,8 @@ msgstr ""
 "Убедитесь, что вы настроили обратный прокси для каталога .well-known на "
 "Убедитесь, что вы настроили обратный прокси для каталога .well-known на "
 "HTTPChallengePort перед получением сертификата."
 "HTTPChallengePort перед получением сертификата."
 
 
-#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:130
-#: src/views/config/ConfigEditor.vue:91 src/views/config/ConfigList.vue:62
+#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:138
+#: src/views/config/ConfigEditor.vue:99 src/views/config/ConfigList.vue:70
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "Конфигурации"
 msgstr "Конфигурации"
 
 
@@ -1188,9 +1188,9 @@ msgid "Model"
 msgstr "Модель"
 msgstr "Модель"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:248
 #: src/components/ChatGPT/ChatGPT.vue:248
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
-#: src/views/config/ConfigList.vue:151
+#: src/views/config/ConfigList.vue:159
 msgid "Modify"
 msgid "Modify"
 msgstr "Изменить"
 msgstr "Изменить"
 
 
@@ -1202,7 +1202,7 @@ msgstr "Изменить сертификат"
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "Изменить конфигурацию"
 msgstr "Изменить конфигурацию"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 msgid "Modify Mode"
 msgid "Modify Mode"
 msgstr "Изменить режим"
 msgstr "Изменить режим"
 
 
@@ -1215,7 +1215,7 @@ msgstr "Многострочная директива"
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
-#: src/views/config/ConfigEditor.vue:248
+#: src/views/config/ConfigEditor.vue:256
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/DomainList.vue:13
 #: src/views/domain/DomainList.vue:13
@@ -1247,7 +1247,7 @@ msgstr "Всего отправлено"
 msgid "New name"
 msgid "New name"
 msgstr "Новое имя"
 msgstr "Новое имя"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 msgid "New Path"
 msgid "New Path"
 msgstr "Новый путь"
 msgstr "Новый путь"
 
 
@@ -1261,7 +1261,7 @@ msgstr "Вышла новая версия"
 msgid "Next"
 msgid "Next"
 msgstr "Дальше"
 msgstr "Дальше"
 
 
-#: src/views/preference/Preference.vue:122
+#: src/views/preference/Preference.vue:128
 msgid "Nginx"
 msgid "Nginx"
 msgstr "Nginx"
 msgstr "Nginx"
 
 
@@ -1357,13 +1357,13 @@ msgstr ""
 "OCSP Must Staple может вызвать ошибки у некоторых пользователей при первом "
 "OCSP Must Staple может вызвать ошибки у некоторых пользователей при первом "
 "доступе через Firefox."
 "доступе через Firefox."
 
 
-#: src/components/NodeSelector/NodeSelector.vue:91
+#: src/components/NodeSelector/NodeSelector.vue:94
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environment/envColumns.tsx:90
 #: src/views/environment/envColumns.tsx:90
 msgid "Offline"
 msgid "Offline"
 msgstr "Оффлайн"
 msgstr "Оффлайн"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:254
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 msgid "Ok"
 msgid "Ok"
 msgstr "Ок"
 msgstr "Ок"
@@ -1392,14 +1392,14 @@ msgstr "ОК"
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "После завершения проверки записи будут удалены."
 msgstr "После завершения проверки записи будут удалены."
 
 
-#: src/components/NodeSelector/NodeSelector.vue:71
-#: src/components/NodeSelector/NodeSelector.vue:85
+#: src/components/NodeSelector/NodeSelector.vue:74
+#: src/components/NodeSelector/NodeSelector.vue:88
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
 #: src/views/environment/envColumns.tsx:86
 #: src/views/environment/envColumns.tsx:86
 msgid "Online"
 msgid "Online"
 msgstr "Онлайн"
 msgstr "Онлайн"
 
 
-#: src/views/preference/Preference.vue:128
+#: src/views/preference/Preference.vue:134
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
@@ -1415,13 +1415,13 @@ msgstr "ОС"
 msgid "OS:"
 msgid "OS:"
 msgstr "OS:"
 msgstr "OS:"
 
 
-#: src/views/config/ConfigEditor.vue:285
+#: src/views/config/ConfigEditor.vue:293
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/stream/components/Deploy.vue:87
 #: src/views/stream/components/Deploy.vue:87
 msgid "Overwrite"
 msgid "Overwrite"
 msgstr "Перезаписать"
 msgstr "Перезаписать"
 
 
-#: src/views/config/ConfigEditor.vue:289
+#: src/views/config/ConfigEditor.vue:297
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/stream/components/Deploy.vue:91
 #: src/views/stream/components/Deploy.vue:91
 msgid "Overwrite exist file"
 msgid "Overwrite exist file"
@@ -1431,7 +1431,7 @@ msgstr "Перезаписать существующий файл"
 msgid "Params"
 msgid "Params"
 msgstr "Параметры"
 msgstr "Параметры"
 
 
-#: src/views/other/Login.vue:169 src/views/user/userColumns.tsx:18
+#: src/views/other/Login.vue:174 src/views/user/userColumns.tsx:18
 msgid "Password"
 msgid "Password"
 msgstr "Пароль"
 msgstr "Пароль"
 
 
@@ -1439,7 +1439,7 @@ msgstr "Пароль"
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "Пароль (*)"
 msgstr "Пароль (*)"
 
 
-#: src/views/config/ConfigEditor.vue:254
+#: src/views/config/ConfigEditor.vue:262
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 msgid "Path"
 msgid "Path"
@@ -1469,7 +1469,7 @@ msgstr ""
 "Пожалуйста, заполните учетные данные API, предоставленные вашим DNS-"
 "Пожалуйста, заполните учетные данные API, предоставленные вашим DNS-"
 "провайдером."
 "провайдером."
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:132
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:133
 msgid "Please fill in the required fields"
 msgid "Please fill in the required fields"
 msgstr "Пожалуйста, заполните обязательные поля"
 msgstr "Пожалуйста, заполните обязательные поля"
 
 
@@ -1483,7 +1483,7 @@ msgstr ""
 "API провайдера DNS."
 "API провайдера DNS."
 
 
 #: src/views/config/components/Rename.vue:64
 #: src/views/config/components/Rename.vue:64
-#: src/views/config/ConfigEditor.vue:241
+#: src/views/config/ConfigEditor.vue:249
 msgid "Please input a filename"
 msgid "Please input a filename"
 msgstr "Пожалуйста, введите имя файла"
 msgstr "Пожалуйста, введите имя файла"
 
 
@@ -1504,11 +1504,11 @@ msgstr ""
 msgid "Please input your E-mail!"
 msgid "Please input your E-mail!"
 msgstr "Введите ваш E-mail!"
 msgstr "Введите ваш E-mail!"
 
 
-#: src/views/other/Install.vue:44 src/views/other/Login.vue:43
+#: src/views/other/Install.vue:44 src/views/other/Login.vue:44
 msgid "Please input your password!"
 msgid "Please input your password!"
 msgstr "Введите ваш пароль!"
 msgstr "Введите ваш пароль!"
 
 
-#: src/views/other/Install.vue:38 src/views/other/Login.vue:37
+#: src/views/other/Install.vue:38 src/views/other/Login.vue:38
 msgid "Please input your username!"
 msgid "Please input your username!"
 msgstr "Введите ваше имя пользователя!"
 msgstr "Введите ваше имя пользователя!"
 
 
@@ -1530,7 +1530,7 @@ msgstr "Пожалуйста, выберите хотя бы один узел!"
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr "Предварительный выпуск"
 msgstr "Предварительный выпуск"
 
 
-#: src/routes/index.ts:260 src/views/preference/Preference.vue:105
+#: src/routes/index.ts:260 src/views/preference/Preference.vue:111
 msgid "Preference"
 msgid "Preference"
 msgstr "Настройки"
 msgstr "Настройки"
 
 
@@ -1647,7 +1647,7 @@ msgid "Removed successfully"
 msgstr "Успешно удалено"
 msgstr "Успешно удалено"
 
 
 #: src/views/config/components/Rename.vue:55
 #: src/views/config/components/Rename.vue:55
-#: src/views/config/ConfigList.vue:159
+#: src/views/config/ConfigList.vue:167
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 msgid "Rename"
 msgid "Rename"
 msgstr "Переименовать"
 msgstr "Переименовать"
@@ -1731,9 +1731,9 @@ msgstr "Выполняется"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/views/certificate/CertificateEditor.vue:254
 #: src/views/certificate/CertificateEditor.vue:254
-#: src/views/config/ConfigEditor.vue:214 src/views/domain/DomainEdit.vue:260
+#: src/views/config/ConfigEditor.vue:222 src/views/domain/DomainEdit.vue:260
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
-#: src/views/preference/Preference.vue:145 src/views/stream/StreamEdit.vue:252
+#: src/views/preference/Preference.vue:151 src/views/stream/StreamEdit.vue:252
 msgid "Save"
 msgid "Save"
 msgstr "Сохранить"
 msgstr "Сохранить"
 
 
@@ -1741,19 +1741,19 @@ msgstr "Сохранить"
 msgid "Save Directive"
 msgid "Save Directive"
 msgstr "Сохранить директиву"
 msgstr "Сохранить директиву"
 
 
-#: src/views/config/ConfigEditor.vue:163 src/views/domain/DomainAdd.vue:46
+#: src/views/config/ConfigEditor.vue:171 src/views/domain/DomainAdd.vue:46
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 msgid "Save error %{msg}"
 msgid "Save error %{msg}"
 msgstr "Ошибка сохранения %{msg}"
 msgstr "Ошибка сохранения %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:121
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:122
 #: src/views/certificate/CertificateEditor.vue:46
 #: src/views/certificate/CertificateEditor.vue:46
-#: src/views/preference/Preference.vue:74
+#: src/views/preference/Preference.vue:79
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "Сохранено успешно"
 msgstr "Сохранено успешно"
 
 
-#: src/views/config/ConfigEditor.vue:159 src/views/domain/DomainAdd.vue:37
+#: src/views/config/ConfigEditor.vue:167 src/views/domain/DomainAdd.vue:37
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/stream/StreamEdit.vue:138
 #: src/views/stream/StreamEdit.vue:138
@@ -1788,13 +1788,13 @@ msgstr "Отправлено"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Rename.vue:44
 #: src/views/config/components/Rename.vue:44
-#: src/views/config/ConfigEditor.vue:100 src/views/domain/DomainList.vue:81
+#: src/views/config/ConfigEditor.vue:108 src/views/domain/DomainList.vue:81
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:55
 #: src/views/preference/components/TOTP.vue:55
-#: src/views/preference/Preference.vue:78 src/views/stream/StreamList.vue:113
+#: src/views/preference/Preference.vue:83 src/views/stream/StreamList.vue:113
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 msgid "Server error"
 msgid "Server error"
 msgstr "Ошибка сервера"
 msgstr "Ошибка сервера"
@@ -1867,7 +1867,7 @@ msgstr "Путь к ключу SSL-сертификата"
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr "Путь к SSL сертификату"
 msgstr "Путь к SSL сертификату"
 
 
-#: src/views/other/Login.vue:203
+#: src/views/other/Login.vue:189
 msgid "SSO Login"
 msgid "SSO Login"
 msgstr "SSO Вход"
 msgstr "SSO Вход"
 
 
@@ -1945,8 +1945,9 @@ msgid "Sync Certificate Success"
 msgstr "Сертификат успешно синхронизирован"
 msgstr "Сертификат успешно синхронизирован"
 
 
 #: src/components/Notification/config.ts:12
 #: src/components/Notification/config.ts:12
+#, fuzzy
 msgid ""
 msgid ""
-"Sync config %{cert_name} to %{env_name} failed, please upgrade the remote "
+"Sync config %{config_name} to %{env_name} failed, please upgrade the remote "
 "Nginx UI to the latest version"
 "Nginx UI to the latest version"
 msgstr ""
 msgstr ""
 "Синхронизация конфигурации %{cert_name} с %{env_name} не удалась, "
 "Синхронизация конфигурации %{cert_name} с %{env_name} не удалась, "
@@ -2138,7 +2139,7 @@ msgstr ""
 msgid "Token is not valid"
 msgid "Token is not valid"
 msgstr "Токен недействителен"
 msgstr "Токен недействителен"
 
 
-#: src/views/other/Login.vue:74
+#: src/views/other/Login.vue:79
 msgid "Too many login failed attempts, please try again later"
 msgid "Too many login failed attempts, please try again later"
 msgstr "Слишком много неудачных попыток входа, попробуйте позже"
 msgstr "Слишком много неудачных попыток входа, попробуйте позже"
 
 
@@ -2150,7 +2151,7 @@ msgstr ""
 "TOTP — это метод двухфакторной аутентификации, который использует алгоритм "
 "TOTP — это метод двухфакторной аутентификации, который использует алгоритм "
 "одноразового пароля на основе времени."
 "одноразового пароля на основе времени."
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:209
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:210
 msgid "Trash"
 msgid "Trash"
 msgstr "Корзина"
 msgstr "Корзина"
 
 
@@ -2166,7 +2167,7 @@ msgstr "Тип"
 
 
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/certificate/DNSCredential.vue:27
-#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:267
+#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:275
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/stream/components/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:85
@@ -2219,11 +2220,11 @@ msgstr "Использовать код восстановления"
 msgid "User"
 msgid "User"
 msgstr "Пользователь"
 msgstr "Пользователь"
 
 
-#: src/views/other/Login.vue:77
+#: src/views/other/Login.vue:82
 msgid "User is banned"
 msgid "User is banned"
 msgstr "Пользователь заблокирован"
 msgstr "Пользователь заблокирован"
 
 
-#: src/views/other/Login.vue:159 src/views/user/userColumns.tsx:9
+#: src/views/other/Login.vue:164 src/views/user/userColumns.tsx:9
 msgid "Username"
 msgid "Username"
 msgstr "Имя пользователя"
 msgstr "Имя пользователя"
 
 
@@ -2250,11 +2251,11 @@ msgstr "Просмотр"
 msgid "View all notifications"
 msgid "View all notifications"
 msgstr "Просмотреть все уведомления"
 msgstr "Просмотреть все уведомления"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 msgid "View Details"
 msgid "View Details"
 msgstr "Подробно"
 msgstr "Подробно"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 #, fuzzy
 #, fuzzy
 msgid "View Mode"
 msgid "View Mode"
 msgstr "Простой режим"
 msgstr "Простой режим"

+ 70 - 70
app/src/language/vi_VN/app.po

@@ -42,8 +42,8 @@ msgstr "Người dùng"
 msgid "Action"
 msgid "Action"
 msgstr "Hành động"
 msgstr "Hành động"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:203
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
@@ -52,8 +52,8 @@ msgstr "Hành động"
 msgid "Add"
 msgid "Add"
 msgstr "Thêm"
 msgstr "Thêm"
 
 
-#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:135
-#: src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:143
+#: src/views/config/ConfigEditor.vue:204
 #, fuzzy
 #, fuzzy
 msgid "Add Configuration"
 msgid "Add Configuration"
 msgstr "Sửa cấu hình"
 msgstr "Sửa cấu hình"
@@ -172,7 +172,7 @@ msgstr "Trợ lý"
 msgid "Attempts"
 msgid "Attempts"
 msgstr ""
 msgstr ""
 
 
-#: src/views/preference/Preference.vue:116
+#: src/views/preference/Preference.vue:122
 #, fuzzy
 #, fuzzy
 msgid "Auth"
 msgid "Auth"
 msgstr "Tác giả"
 msgstr "Tác giả"
@@ -195,8 +195,8 @@ msgid "Auto-renewal enabled for %{name}"
 msgstr "Đã bật tự động gia hạn SSL cho %{name}"
 msgstr "Đã bật tự động gia hạn SSL cho %{name}"
 
 
 #: src/views/certificate/CertificateEditor.vue:247
 #: src/views/certificate/CertificateEditor.vue:247
-#: src/views/config/ConfigEditor.vue:205 src/views/config/ConfigList.vue:173
-#: src/views/config/ConfigList.vue:99 src/views/domain/DomainEdit.vue:253
+#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:107
+#: src/views/config/ConfigList.vue:181 src/views/domain/DomainEdit.vue:253
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 msgid "Back"
 msgid "Back"
 msgstr "Quay lại"
 msgstr "Quay lại"
@@ -206,7 +206,7 @@ msgstr "Quay lại"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "Quay lại"
 msgstr "Quay lại"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:215
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:216
 msgid "Back to list"
 msgid "Back to list"
 msgstr ""
 msgstr ""
 
 
@@ -226,9 +226,9 @@ msgstr ""
 msgid "Base information"
 msgid "Base information"
 msgstr "Thông tin"
 msgstr "Thông tin"
 
 
-#: src/views/config/ConfigEditor.vue:233
+#: src/views/config/ConfigEditor.vue:241
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/preference/Preference.vue:110
+#: src/views/preference/Preference.vue:116
 #: src/views/stream/components/RightSettings.vue:74
 #: src/views/stream/components/RightSettings.vue:74
 #, fuzzy
 #, fuzzy
 msgid "Basic"
 msgid "Basic"
@@ -263,7 +263,7 @@ msgstr ""
 
 
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:21
 #: src/views/domain/components/Deploy.vue:21
@@ -317,7 +317,7 @@ msgid_plural "Changed Certificates"
 msgstr[0] "Thay đổi chứng chỉ"
 msgstr[0] "Thay đổi chứng chỉ"
 msgstr[1] "Thay đổi chứng chỉ"
 msgstr[1] "Thay đổi chứng chỉ"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 #, fuzzy
 #, fuzzy
 msgid "Changed Path"
 msgid "Changed Path"
 msgstr "Thay đổi chứng chỉ"
 msgstr "Thay đổi chứng chỉ"
@@ -371,7 +371,7 @@ msgstr "Tệp cấu hình được kiểm tra thành công"
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "Tên cấu hình"
 msgstr "Tên cấu hình"
 
 
-#: src/views/config/ConfigList.vue:91
+#: src/views/config/ConfigList.vue:99
 msgid "Configurations"
 msgid "Configurations"
 msgstr "Cấu hình"
 msgstr "Cấu hình"
 
 
@@ -422,12 +422,12 @@ msgstr "Ngày tạo"
 msgid "Create Another"
 msgid "Create Another"
 msgstr "Tạo thêm"
 msgstr "Tạo thêm"
 
 
-#: src/views/config/ConfigList.vue:109
+#: src/views/config/ConfigList.vue:117
 #, fuzzy
 #, fuzzy
 msgid "Create File"
 msgid "Create File"
 msgstr "Ngày tạo"
 msgstr "Ngày tạo"
 
 
-#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:116
+#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:124
 #, fuzzy
 #, fuzzy
 msgid "Create Folder"
 msgid "Create Folder"
 msgstr "Tạo thêm"
 msgstr "Tạo thêm"
@@ -477,8 +477,8 @@ msgid ""
 "indicator."
 "indicator."
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:125
-#: src/views/config/ConfigEditor.vue:86 src/views/config/ConfigList.vue:57
+#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:133
+#: src/views/config/ConfigEditor.vue:94 src/views/config/ConfigList.vue:65
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "Bảng điều khiển"
 msgstr "Bảng điều khiển"
 
 
@@ -516,7 +516,7 @@ msgstr "Xoá trang web: %{site_name}"
 msgid "Deleted successfully"
 msgid "Deleted successfully"
 msgstr "Đã xoá thành công"
 msgstr "Đã xoá thành công"
 
 
-#: src/views/config/ConfigEditor.vue:276
+#: src/views/config/ConfigEditor.vue:284
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/stream/components/Deploy.vue:103
 #: src/views/stream/components/Deploy.vue:103
@@ -718,7 +718,7 @@ msgstr "Đã sao chép thành công vào máy cục bộ"
 msgid "Edit %{n}"
 msgid "Edit %{n}"
 msgstr "Sửa %{n}"
 msgstr "Sửa %{n}"
 
 
-#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:204
 msgid "Edit Configuration"
 msgid "Edit Configuration"
 msgstr "Sửa cấu hình"
 msgstr "Sửa cấu hình"
 
 
@@ -909,16 +909,16 @@ msgstr "Đã hoàn thành"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "Người dùng Trung Quốc: https://mirror.ghproxy.com/"
 msgstr "Người dùng Trung Quốc: https://mirror.ghproxy.com/"
 
 
-#: src/views/config/ConfigEditor.vue:208
+#: src/views/config/ConfigEditor.vue:216
 msgid "Format Code"
 msgid "Format Code"
 msgstr "Định dạng code"
 msgstr "Định dạng code"
 
 
-#: src/views/config/ConfigEditor.vue:175
+#: src/views/config/ConfigEditor.vue:183
 #, fuzzy
 #, fuzzy
 msgid "Format error %{msg}"
 msgid "Format error %{msg}"
 msgstr "Lưu lỗi %{msg}"
 msgstr "Lưu lỗi %{msg}"
 
 
-#: src/views/config/ConfigEditor.vue:173
+#: src/views/config/ConfigEditor.vue:181
 #, fuzzy
 #, fuzzy
 msgid "Format successfully"
 msgid "Format successfully"
 msgstr "Định dạng thành công"
 msgstr "Định dạng thành công"
@@ -1005,7 +1005,7 @@ msgstr "Xuất"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "Chứng chỉ"
 msgstr "Chứng chỉ"
 
 
-#: src/views/other/Login.vue:71
+#: src/views/other/Login.vue:76
 #, fuzzy
 #, fuzzy
 msgid "Incorrect username or password"
 msgid "Incorrect username or password"
 msgstr "Tên người dùng hoặc mật khẩu không chính xác"
 msgstr "Tên người dùng hoặc mật khẩu không chính xác"
@@ -1049,12 +1049,12 @@ msgstr ""
 msgid "Invalid"
 msgid "Invalid"
 msgstr "Hợp lệ"
 msgstr "Hợp lệ"
 
 
-#: src/views/other/Login.vue:81
+#: src/views/other/Login.vue:86
 msgid "Invalid 2FA or recovery code"
 msgid "Invalid 2FA or recovery code"
 msgstr ""
 msgstr ""
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
-#: src/views/config/ConfigEditor.vue:242
+#: src/views/config/ConfigEditor.vue:250
 #, fuzzy
 #, fuzzy
 msgid "Invalid filename"
 msgid "Invalid filename"
 msgstr "E-mail không chính xác!"
 msgstr "E-mail không chính xác!"
@@ -1132,7 +1132,7 @@ msgstr "Giấy phép"
 msgid "Link Start"
 msgid "Link Start"
 msgstr "Liên kết bắt đầu"
 msgstr "Liên kết bắt đầu"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:192
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:193
 msgid "List"
 msgid "List"
 msgstr ""
 msgstr ""
 
 
@@ -1151,7 +1151,7 @@ msgid "Load successfully"
 msgstr "Lưu thành công"
 msgstr "Lưu thành công"
 
 
 #: src/components/EnvIndicator/EnvIndicator.vue:39
 #: src/components/EnvIndicator/EnvIndicator.vue:39
-#: src/components/NodeSelector/NodeSelector.vue:68
+#: src/components/NodeSelector/NodeSelector.vue:71
 #, fuzzy
 #, fuzzy
 msgid "Local"
 msgid "Local"
 msgstr "Location"
 msgstr "Location"
@@ -1169,11 +1169,11 @@ msgstr "Locations"
 msgid "Log"
 msgid "Log"
 msgstr "Log"
 msgstr "Log"
 
 
-#: src/routes/index.ts:305 src/views/other/Login.vue:192
+#: src/routes/index.ts:305 src/views/other/Login.vue:207
 msgid "Login"
 msgid "Login"
 msgstr "Đăng nhập"
 msgstr "Đăng nhập"
 
 
-#: src/views/other/Login.vue:125 src/views/other/Login.vue:60
+#: src/views/other/Login.vue:130 src/views/other/Login.vue:63
 msgid "Login successful"
 msgid "Login successful"
 msgstr "Đăng nhập thành công"
 msgstr "Đăng nhập thành công"
 
 
@@ -1181,7 +1181,7 @@ msgstr "Đăng nhập thành công"
 msgid "Logout successful"
 msgid "Logout successful"
 msgstr "Đã đăng xuất"
 msgstr "Đã đăng xuất"
 
 
-#: src/views/preference/Preference.vue:134
+#: src/views/preference/Preference.vue:140
 msgid "Logrotate"
 msgid "Logrotate"
 msgstr ""
 msgstr ""
 
 
@@ -1204,8 +1204,8 @@ msgstr ""
 "Đảm bảo rằng bạn đã định cấu hình proxy ngược (reverse proxy) thư mục .well-"
 "Đảm bảo rằng bạn đã định cấu hình proxy ngược (reverse proxy) thư mục .well-"
 "known tới HTTPChallengePort (default: 9180) trước khi ký chứng chỉ SSL."
 "known tới HTTPChallengePort (default: 9180) trước khi ký chứng chỉ SSL."
 
 
-#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:130
-#: src/views/config/ConfigEditor.vue:91 src/views/config/ConfigList.vue:62
+#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:138
+#: src/views/config/ConfigEditor.vue:99 src/views/config/ConfigList.vue:70
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "Quản lý cấu hình"
 msgstr "Quản lý cấu hình"
 
 
@@ -1249,9 +1249,9 @@ msgid "Model"
 msgstr "Run Mode"
 msgstr "Run Mode"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:248
 #: src/components/ChatGPT/ChatGPT.vue:248
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
-#: src/views/config/ConfigList.vue:151
+#: src/views/config/ConfigList.vue:159
 #, fuzzy
 #, fuzzy
 msgid "Modify"
 msgid "Modify"
 msgstr "Sửa"
 msgstr "Sửa"
@@ -1265,7 +1265,7 @@ msgstr "Sửa chứng chỉ"
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "Sửa cấu hình"
 msgstr "Sửa cấu hình"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 #, fuzzy
 #, fuzzy
 msgid "Modify Mode"
 msgid "Modify Mode"
 msgstr "Sửa"
 msgstr "Sửa"
@@ -1280,7 +1280,7 @@ msgstr "Single Directive"
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
-#: src/views/config/ConfigEditor.vue:248
+#: src/views/config/ConfigEditor.vue:256
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/DomainList.vue:13
 #: src/views/domain/DomainList.vue:13
@@ -1313,7 +1313,7 @@ msgstr "Tổng lưu lượng mạng đã gửi"
 msgid "New name"
 msgid "New name"
 msgstr "Username"
 msgstr "Username"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 #, fuzzy
 #, fuzzy
 msgid "New Path"
 msgid "New Path"
 msgstr "Đường dẫn"
 msgstr "Đường dẫn"
@@ -1328,7 +1328,7 @@ msgstr "Đã có phiên bản mới"
 msgid "Next"
 msgid "Next"
 msgstr "Tiếp theo"
 msgstr "Tiếp theo"
 
 
-#: src/views/preference/Preference.vue:122
+#: src/views/preference/Preference.vue:128
 msgid "Nginx"
 msgid "Nginx"
 msgstr ""
 msgstr ""
 
 
@@ -1428,13 +1428,13 @@ msgid ""
 "Firefox."
 "Firefox."
 msgstr ""
 msgstr ""
 
 
-#: src/components/NodeSelector/NodeSelector.vue:91
+#: src/components/NodeSelector/NodeSelector.vue:94
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environment/envColumns.tsx:90
 #: src/views/environment/envColumns.tsx:90
 msgid "Offline"
 msgid "Offline"
 msgstr "Ngoại tuyến"
 msgstr "Ngoại tuyến"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:254
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 msgid "Ok"
 msgid "Ok"
 msgstr ""
 msgstr ""
@@ -1463,14 +1463,14 @@ msgstr ""
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "Sau khi quá trình xác minh hoàn tất, bản ghi sẽ bị xóa."
 msgstr "Sau khi quá trình xác minh hoàn tất, bản ghi sẽ bị xóa."
 
 
-#: src/components/NodeSelector/NodeSelector.vue:71
-#: src/components/NodeSelector/NodeSelector.vue:85
+#: src/components/NodeSelector/NodeSelector.vue:74
+#: src/components/NodeSelector/NodeSelector.vue:88
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
 #: src/views/environment/envColumns.tsx:86
 #: src/views/environment/envColumns.tsx:86
 msgid "Online"
 msgid "Online"
 msgstr "Trực tuyến"
 msgstr "Trực tuyến"
 
 
-#: src/views/preference/Preference.vue:128
+#: src/views/preference/Preference.vue:134
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr ""
 msgstr ""
 
 
@@ -1487,13 +1487,13 @@ msgstr "Hệ điều hành"
 msgid "OS:"
 msgid "OS:"
 msgstr "Hệ điều hành:"
 msgstr "Hệ điều hành:"
 
 
-#: src/views/config/ConfigEditor.vue:285
+#: src/views/config/ConfigEditor.vue:293
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/stream/components/Deploy.vue:87
 #: src/views/stream/components/Deploy.vue:87
 msgid "Overwrite"
 msgid "Overwrite"
 msgstr "Ghi đè"
 msgstr "Ghi đè"
 
 
-#: src/views/config/ConfigEditor.vue:289
+#: src/views/config/ConfigEditor.vue:297
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/stream/components/Deploy.vue:91
 #: src/views/stream/components/Deploy.vue:91
 msgid "Overwrite exist file"
 msgid "Overwrite exist file"
@@ -1503,7 +1503,7 @@ msgstr "Ghi đè tập tin đã tồn tại"
 msgid "Params"
 msgid "Params"
 msgstr "Tham số"
 msgstr "Tham số"
 
 
-#: src/views/other/Login.vue:169 src/views/user/userColumns.tsx:18
+#: src/views/other/Login.vue:174 src/views/user/userColumns.tsx:18
 msgid "Password"
 msgid "Password"
 msgstr "Mật khẩu"
 msgstr "Mật khẩu"
 
 
@@ -1511,7 +1511,7 @@ msgstr "Mật khẩu"
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "Mật khẩu (*)"
 msgstr "Mật khẩu (*)"
 
 
-#: src/views/config/ConfigEditor.vue:254
+#: src/views/config/ConfigEditor.vue:262
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 msgid "Path"
 msgid "Path"
@@ -1540,7 +1540,7 @@ msgid ""
 msgstr ""
 msgstr ""
 "Vui lòng điền thông tin xác thực API do nhà cung cấp DNS của bạn cung cấp"
 "Vui lòng điền thông tin xác thực API do nhà cung cấp DNS của bạn cung cấp"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:132
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:133
 msgid "Please fill in the required fields"
 msgid "Please fill in the required fields"
 msgstr ""
 msgstr ""
 
 
@@ -1553,7 +1553,7 @@ msgstr ""
 "thực DNS, sau đó chọn nhà cung cấp DNS"
 "thực DNS, sau đó chọn nhà cung cấp DNS"
 
 
 #: src/views/config/components/Rename.vue:64
 #: src/views/config/components/Rename.vue:64
-#: src/views/config/ConfigEditor.vue:241
+#: src/views/config/ConfigEditor.vue:249
 #, fuzzy
 #, fuzzy
 msgid "Please input a filename"
 msgid "Please input a filename"
 msgstr "Vui lòng nhập username!"
 msgstr "Vui lòng nhập username!"
@@ -1575,11 +1575,11 @@ msgstr ""
 msgid "Please input your E-mail!"
 msgid "Please input your E-mail!"
 msgstr "Vui lòng nhập E-mail của bạn!"
 msgstr "Vui lòng nhập E-mail của bạn!"
 
 
-#: src/views/other/Install.vue:44 src/views/other/Login.vue:43
+#: src/views/other/Install.vue:44 src/views/other/Login.vue:44
 msgid "Please input your password!"
 msgid "Please input your password!"
 msgstr "Vui lòng nhập mật khẩu!"
 msgstr "Vui lòng nhập mật khẩu!"
 
 
-#: src/views/other/Install.vue:38 src/views/other/Login.vue:37
+#: src/views/other/Install.vue:38 src/views/other/Login.vue:38
 msgid "Please input your username!"
 msgid "Please input your username!"
 msgstr "Vui lòng nhập username!"
 msgstr "Vui lòng nhập username!"
 
 
@@ -1599,7 +1599,7 @@ msgstr ""
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr ""
 msgstr ""
 
 
-#: src/routes/index.ts:260 src/views/preference/Preference.vue:105
+#: src/routes/index.ts:260 src/views/preference/Preference.vue:111
 msgid "Preference"
 msgid "Preference"
 msgstr "Cài đặt"
 msgstr "Cài đặt"
 
 
@@ -1725,7 +1725,7 @@ msgid "Removed successfully"
 msgstr "Xoá thành công"
 msgstr "Xoá thành công"
 
 
 #: src/views/config/components/Rename.vue:55
 #: src/views/config/components/Rename.vue:55
-#: src/views/config/ConfigList.vue:159
+#: src/views/config/ConfigList.vue:167
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 #, fuzzy
 #, fuzzy
 msgid "Rename"
 msgid "Rename"
@@ -1818,9 +1818,9 @@ msgstr "Running"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/views/certificate/CertificateEditor.vue:254
 #: src/views/certificate/CertificateEditor.vue:254
-#: src/views/config/ConfigEditor.vue:214 src/views/domain/DomainEdit.vue:260
+#: src/views/config/ConfigEditor.vue:222 src/views/domain/DomainEdit.vue:260
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
-#: src/views/preference/Preference.vue:145 src/views/stream/StreamEdit.vue:252
+#: src/views/preference/Preference.vue:151 src/views/stream/StreamEdit.vue:252
 msgid "Save"
 msgid "Save"
 msgstr "Lưu"
 msgstr "Lưu"
 
 
@@ -1828,20 +1828,20 @@ msgstr "Lưu"
 msgid "Save Directive"
 msgid "Save Directive"
 msgstr "Lưu Directive"
 msgstr "Lưu Directive"
 
 
-#: src/views/config/ConfigEditor.vue:163 src/views/domain/DomainAdd.vue:46
+#: src/views/config/ConfigEditor.vue:171 src/views/domain/DomainAdd.vue:46
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 msgid "Save error %{msg}"
 msgid "Save error %{msg}"
 msgstr "Đã xảy ra lỗi khi lưu %{msg}"
 msgstr "Đã xảy ra lỗi khi lưu %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:121
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:122
 #: src/views/certificate/CertificateEditor.vue:46
 #: src/views/certificate/CertificateEditor.vue:46
-#: src/views/preference/Preference.vue:74
+#: src/views/preference/Preference.vue:79
 #, fuzzy
 #, fuzzy
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "Lưu thành công"
 msgstr "Lưu thành công"
 
 
-#: src/views/config/ConfigEditor.vue:159 src/views/domain/DomainAdd.vue:37
+#: src/views/config/ConfigEditor.vue:167 src/views/domain/DomainAdd.vue:37
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/stream/StreamEdit.vue:138
 #: src/views/stream/StreamEdit.vue:138
@@ -1874,13 +1874,13 @@ msgstr "Gửi"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Rename.vue:44
 #: src/views/config/components/Rename.vue:44
-#: src/views/config/ConfigEditor.vue:100 src/views/domain/DomainList.vue:81
+#: src/views/config/ConfigEditor.vue:108 src/views/domain/DomainList.vue:81
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:55
 #: src/views/preference/components/TOTP.vue:55
-#: src/views/preference/Preference.vue:78 src/views/stream/StreamList.vue:113
+#: src/views/preference/Preference.vue:83 src/views/stream/StreamList.vue:113
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 msgid "Server error"
 msgid "Server error"
 msgstr "Lỗi máy chủ"
 msgstr "Lỗi máy chủ"
@@ -1954,7 +1954,7 @@ msgstr ""
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:203
+#: src/views/other/Login.vue:189
 msgid "SSO Login"
 msgid "SSO Login"
 msgstr ""
 msgstr ""
 
 
@@ -2037,7 +2037,7 @@ msgstr "Gia hạn chứng chỉ SSL thành công"
 #: src/components/Notification/config.ts:12
 #: src/components/Notification/config.ts:12
 #, fuzzy
 #, fuzzy
 msgid ""
 msgid ""
-"Sync config %{cert_name} to %{env_name} failed, please upgrade the remote "
+"Sync config %{config_name} to %{env_name} failed, please upgrade the remote "
 "Nginx UI to the latest version"
 "Nginx UI to the latest version"
 msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 msgstr "Nhân bản %{conf_name} thành %{node_name} thành công"
 
 
@@ -2216,7 +2216,7 @@ msgstr ""
 msgid "Token is not valid"
 msgid "Token is not valid"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:74
+#: src/views/other/Login.vue:79
 msgid "Too many login failed attempts, please try again later"
 msgid "Too many login failed attempts, please try again later"
 msgstr ""
 msgstr ""
 
 
@@ -2226,7 +2226,7 @@ msgid ""
 "password algorithm."
 "password algorithm."
 msgstr ""
 msgstr ""
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:209
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:210
 msgid "Trash"
 msgid "Trash"
 msgstr ""
 msgstr ""
 
 
@@ -2242,7 +2242,7 @@ msgstr "Loại"
 
 
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/certificate/DNSCredential.vue:27
-#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:267
+#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:275
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/stream/components/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:85
@@ -2299,11 +2299,11 @@ msgstr ""
 msgid "User"
 msgid "User"
 msgstr "Người dùng"
 msgstr "Người dùng"
 
 
-#: src/views/other/Login.vue:77
+#: src/views/other/Login.vue:82
 msgid "User is banned"
 msgid "User is banned"
 msgstr ""
 msgstr ""
 
 
-#: src/views/other/Login.vue:159 src/views/user/userColumns.tsx:9
+#: src/views/other/Login.vue:164 src/views/user/userColumns.tsx:9
 msgid "Username"
 msgid "Username"
 msgstr "Username"
 msgstr "Username"
 
 
@@ -2332,12 +2332,12 @@ msgstr "Xem"
 msgid "View all notifications"
 msgid "View all notifications"
 msgstr "Xem tất cả thông báo"
 msgstr "Xem tất cả thông báo"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 #, fuzzy
 #, fuzzy
 msgid "View Details"
 msgid "View Details"
 msgstr "Chi tiết"
 msgstr "Chi tiết"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 #, fuzzy
 #, fuzzy
 msgid "View Mode"
 msgid "View Mode"
 msgstr "Cơ bản"
 msgstr "Cơ bản"

BIN
app/src/language/zh_CN/app.mo


+ 74 - 74
app/src/language/zh_CN/app.po

@@ -11,7 +11,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "Generated-By: easygettext\n"
 "Generated-By: easygettext\n"
-"X-Generator: Poedit 3.4.4\n"
+"X-Generator: Poedit 3.5\n"
 
 
 #: src/views/user/userColumns.tsx:32
 #: src/views/user/userColumns.tsx:32
 msgid "2FA"
 msgid "2FA"
@@ -45,8 +45,8 @@ msgstr "ACME 用户"
 msgid "Action"
 msgid "Action"
 msgstr "操作"
 msgstr "操作"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:203
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
@@ -55,8 +55,8 @@ msgstr "操作"
 msgid "Add"
 msgid "Add"
 msgstr "添加"
 msgstr "添加"
 
 
-#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:135
-#: src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:143
+#: src/views/config/ConfigEditor.vue:204
 msgid "Add Configuration"
 msgid "Add Configuration"
 msgstr "添加配置"
 msgstr "添加配置"
 
 
@@ -162,7 +162,7 @@ msgstr "助手"
 msgid "Attempts"
 msgid "Attempts"
 msgstr "尝试次数"
 msgstr "尝试次数"
 
 
-#: src/views/preference/Preference.vue:116
+#: src/views/preference/Preference.vue:122
 msgid "Auth"
 msgid "Auth"
 msgstr "认证"
 msgstr "认证"
 
 
@@ -184,8 +184,8 @@ msgid "Auto-renewal enabled for %{name}"
 msgstr "成功启用 %{name} 自动续签"
 msgstr "成功启用 %{name} 自动续签"
 
 
 #: src/views/certificate/CertificateEditor.vue:247
 #: src/views/certificate/CertificateEditor.vue:247
-#: src/views/config/ConfigEditor.vue:205 src/views/config/ConfigList.vue:173
-#: src/views/config/ConfigList.vue:99 src/views/domain/DomainEdit.vue:253
+#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:107
+#: src/views/config/ConfigList.vue:181 src/views/domain/DomainEdit.vue:253
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 msgid "Back"
 msgid "Back"
 msgstr "返回"
 msgstr "返回"
@@ -194,7 +194,7 @@ msgstr "返回"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "返回首页"
 msgstr "返回首页"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:215
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:216
 msgid "Back to list"
 msgid "Back to list"
 msgstr "返回列表"
 msgstr "返回列表"
 
 
@@ -214,9 +214,9 @@ msgstr "禁用至"
 msgid "Base information"
 msgid "Base information"
 msgstr "基本信息"
 msgstr "基本信息"
 
 
-#: src/views/config/ConfigEditor.vue:233
+#: src/views/config/ConfigEditor.vue:241
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/preference/Preference.vue:110
+#: src/views/preference/Preference.vue:116
 #: src/views/stream/components/RightSettings.vue:74
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
 msgid "Basic"
 msgstr "基本"
 msgstr "基本"
@@ -248,7 +248,7 @@ msgstr "CADir"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:21
 #: src/views/domain/components/Deploy.vue:21
@@ -294,7 +294,7 @@ msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgid_plural "Changed Certificates"
 msgstr[0] "变更证书"
 msgstr[0] "变更证书"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 msgid "Changed Path"
 msgid "Changed Path"
 msgstr "变更后的路径"
 msgstr "变更后的路径"
 
 
@@ -344,7 +344,7 @@ msgstr "配置文件测试成功"
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "配置名称"
 msgstr "配置名称"
 
 
-#: src/views/config/ConfigList.vue:91
+#: src/views/config/ConfigList.vue:99
 msgid "Configurations"
 msgid "Configurations"
 msgstr "配置"
 msgstr "配置"
 
 
@@ -394,11 +394,11 @@ msgstr "创建"
 msgid "Create Another"
 msgid "Create Another"
 msgstr "再创建一个"
 msgstr "再创建一个"
 
 
-#: src/views/config/ConfigList.vue:109
+#: src/views/config/ConfigList.vue:117
 msgid "Create File"
 msgid "Create File"
 msgstr "创建文件"
 msgstr "创建文件"
 
 
-#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:116
+#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:124
 msgid "Create Folder"
 msgid "Create Folder"
 msgstr "创建文件夹"
 msgstr "创建文件夹"
 
 
@@ -446,8 +446,8 @@ msgid ""
 "indicator."
 "indicator."
 msgstr "自定义显示在环境指示器中的本地服务器名称。"
 msgstr "自定义显示在环境指示器中的本地服务器名称。"
 
 
-#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:125
-#: src/views/config/ConfigEditor.vue:86 src/views/config/ConfigList.vue:57
+#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:133
+#: src/views/config/ConfigEditor.vue:94 src/views/config/ConfigList.vue:65
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "仪表盘"
 msgstr "仪表盘"
 
 
@@ -483,7 +483,7 @@ msgstr "删除 Stream: %{stream_name}"
 msgid "Deleted successfully"
 msgid "Deleted successfully"
 msgstr "删除成功"
 msgstr "删除成功"
 
 
-#: src/views/config/ConfigEditor.vue:276
+#: src/views/config/ConfigEditor.vue:284
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/stream/components/Deploy.vue:103
 #: src/views/stream/components/Deploy.vue:103
@@ -494,12 +494,12 @@ msgstr "部署"
 #: src/views/domain/components/Deploy.vue:60
 #: src/views/domain/components/Deploy.vue:60
 #: src/views/stream/components/Deploy.vue:60
 #: src/views/stream/components/Deploy.vue:60
 msgid "Deploy %{conf_name} to %{node_name} failed"
 msgid "Deploy %{conf_name} to %{node_name} failed"
-msgstr "部署%{conf_name}到%{node_name}失败"
+msgstr "部署 %{conf_name}  %{node_name} 失败"
 
 
 #: src/views/domain/components/Deploy.vue:37
 #: src/views/domain/components/Deploy.vue:37
 #: src/views/stream/components/Deploy.vue:37
 #: src/views/stream/components/Deploy.vue:37
 msgid "Deploy %{conf_name} to %{node_name} successfully"
 msgid "Deploy %{conf_name} to %{node_name} successfully"
-msgstr "成功地将%{conf_name}部署到%{node_name}"
+msgstr "部署 %{conf_name} 到 %{node_name} 成功"
 
 
 #: src/views/domain/components/Deploy.vue:35
 #: src/views/domain/components/Deploy.vue:35
 #: src/views/stream/components/Deploy.vue:35
 #: src/views/stream/components/Deploy.vue:35
@@ -667,7 +667,7 @@ msgstr "成功复制到本地"
 msgid "Edit %{n}"
 msgid "Edit %{n}"
 msgstr "编辑 %{n}"
 msgstr "编辑 %{n}"
 
 
-#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:204
 msgid "Edit Configuration"
 msgid "Edit Configuration"
 msgstr "编辑配置"
 msgstr "编辑配置"
 
 
@@ -846,15 +846,15 @@ msgstr "完成"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "中国用户:https://mirror.ghproxy.com/"
 msgstr "中国用户:https://mirror.ghproxy.com/"
 
 
-#: src/views/config/ConfigEditor.vue:208
+#: src/views/config/ConfigEditor.vue:216
 msgid "Format Code"
 msgid "Format Code"
 msgstr "代码格式化"
 msgstr "代码格式化"
 
 
-#: src/views/config/ConfigEditor.vue:175
+#: src/views/config/ConfigEditor.vue:183
 msgid "Format error %{msg}"
 msgid "Format error %{msg}"
 msgstr "保存错误 %{msg}"
 msgstr "保存错误 %{msg}"
 
 
-#: src/views/config/ConfigEditor.vue:173
+#: src/views/config/ConfigEditor.vue:181
 msgid "Format successfully"
 msgid "Format successfully"
 msgstr "格式化成功"
 msgstr "格式化成功"
 
 
@@ -938,7 +938,7 @@ msgstr "导入"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "导入证书"
 msgstr "导入证书"
 
 
-#: src/views/other/Login.vue:71
+#: src/views/other/Login.vue:76
 msgid "Incorrect username or password"
 msgid "Incorrect username or password"
 msgstr "用户名或密码错误"
 msgstr "用户名或密码错误"
 
 
@@ -979,12 +979,12 @@ msgstr "间隔"
 msgid "Invalid"
 msgid "Invalid"
 msgstr "无效的"
 msgstr "无效的"
 
 
-#: src/views/other/Login.vue:81
+#: src/views/other/Login.vue:86
 msgid "Invalid 2FA or recovery code"
 msgid "Invalid 2FA or recovery code"
 msgstr "无效的二步验证码或恢复密码"
 msgstr "无效的二步验证码或恢复密码"
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
-#: src/views/config/ConfigEditor.vue:242
+#: src/views/config/ConfigEditor.vue:250
 msgid "Invalid filename"
 msgid "Invalid filename"
 msgstr "文件名无效"
 msgstr "文件名无效"
 
 
@@ -1055,7 +1055,7 @@ msgstr "开源许可"
 msgid "Link Start"
 msgid "Link Start"
 msgstr "链接"
 msgstr "链接"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:192
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:193
 msgid "List"
 msgid "List"
 msgstr "列表"
 msgstr "列表"
 
 
@@ -1072,7 +1072,7 @@ msgid "Load successfully"
 msgstr "加载成功"
 msgstr "加载成功"
 
 
 #: src/components/EnvIndicator/EnvIndicator.vue:39
 #: src/components/EnvIndicator/EnvIndicator.vue:39
-#: src/components/NodeSelector/NodeSelector.vue:68
+#: src/components/NodeSelector/NodeSelector.vue:71
 msgid "Local"
 msgid "Local"
 msgstr "本地"
 msgstr "本地"
 
 
@@ -1088,11 +1088,11 @@ msgstr "Locations"
 msgid "Log"
 msgid "Log"
 msgstr "日志"
 msgstr "日志"
 
 
-#: src/routes/index.ts:305 src/views/other/Login.vue:192
+#: src/routes/index.ts:305 src/views/other/Login.vue:207
 msgid "Login"
 msgid "Login"
 msgstr "登录"
 msgstr "登录"
 
 
-#: src/views/other/Login.vue:125 src/views/other/Login.vue:60
+#: src/views/other/Login.vue:130 src/views/other/Login.vue:63
 msgid "Login successful"
 msgid "Login successful"
 msgstr "登录成功"
 msgstr "登录成功"
 
 
@@ -1100,7 +1100,7 @@ msgstr "登录成功"
 msgid "Logout successful"
 msgid "Logout successful"
 msgstr "登出成功"
 msgstr "登出成功"
 
 
-#: src/views/preference/Preference.vue:134
+#: src/views/preference/Preference.vue:140
 msgid "Logrotate"
 msgid "Logrotate"
 msgstr "Logrotate"
 msgstr "Logrotate"
 
 
@@ -1126,8 +1126,8 @@ msgstr ""
 "在获取签发证书前,请确保配置文件中已将 .well-known 目录反向代理到 "
 "在获取签发证书前,请确保配置文件中已将 .well-known 目录反向代理到 "
 "HTTPChallengePort。"
 "HTTPChallengePort。"
 
 
-#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:130
-#: src/views/config/ConfigEditor.vue:91 src/views/config/ConfigList.vue:62
+#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:138
+#: src/views/config/ConfigEditor.vue:99 src/views/config/ConfigList.vue:70
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "配置管理"
 msgstr "配置管理"
 
 
@@ -1169,9 +1169,9 @@ msgid "Model"
 msgstr "模型"
 msgstr "模型"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:248
 #: src/components/ChatGPT/ChatGPT.vue:248
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
-#: src/views/config/ConfigList.vue:151
+#: src/views/config/ConfigList.vue:159
 msgid "Modify"
 msgid "Modify"
 msgstr "修改"
 msgstr "修改"
 
 
@@ -1183,7 +1183,7 @@ msgstr "修改证书"
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "修改配置文件"
 msgstr "修改配置文件"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 msgid "Modify Mode"
 msgid "Modify Mode"
 msgstr "修改模式"
 msgstr "修改模式"
 
 
@@ -1196,7 +1196,7 @@ msgstr "多行指令"
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
-#: src/views/config/ConfigEditor.vue:248
+#: src/views/config/ConfigEditor.vue:256
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/DomainList.vue:13
 #: src/views/domain/DomainList.vue:13
@@ -1228,7 +1228,7 @@ msgstr "上传流量"
 msgid "New name"
 msgid "New name"
 msgstr "新名称"
 msgstr "新名称"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 msgid "New Path"
 msgid "New Path"
 msgstr "新路径"
 msgstr "新路径"
 
 
@@ -1242,7 +1242,7 @@ msgstr "新版本发布"
 msgid "Next"
 msgid "Next"
 msgstr "下一步"
 msgstr "下一步"
 
 
-#: src/views/preference/Preference.vue:122
+#: src/views/preference/Preference.vue:128
 msgid "Nginx"
 msgid "Nginx"
 msgstr "Nginx"
 msgstr "Nginx"
 
 
@@ -1336,13 +1336,13 @@ msgid ""
 "Firefox."
 "Firefox."
 msgstr "某些用户在使用 Firefox 首次访问时,OCSP Must Staple 可能会导致错误。"
 msgstr "某些用户在使用 Firefox 首次访问时,OCSP Must Staple 可能会导致错误。"
 
 
-#: src/components/NodeSelector/NodeSelector.vue:91
+#: src/components/NodeSelector/NodeSelector.vue:94
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environment/envColumns.tsx:90
 #: src/views/environment/envColumns.tsx:90
 msgid "Offline"
 msgid "Offline"
 msgstr "离线"
 msgstr "离线"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:254
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 msgid "Ok"
 msgid "Ok"
 msgstr "确定"
 msgstr "确定"
@@ -1371,14 +1371,14 @@ msgstr "确定"
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "一旦验证完成,这些记录将被删除。"
 msgstr "一旦验证完成,这些记录将被删除。"
 
 
-#: src/components/NodeSelector/NodeSelector.vue:71
-#: src/components/NodeSelector/NodeSelector.vue:85
+#: src/components/NodeSelector/NodeSelector.vue:74
+#: src/components/NodeSelector/NodeSelector.vue:88
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
 #: src/views/environment/envColumns.tsx:86
 #: src/views/environment/envColumns.tsx:86
 msgid "Online"
 msgid "Online"
 msgstr "在线"
 msgstr "在线"
 
 
-#: src/views/preference/Preference.vue:128
+#: src/views/preference/Preference.vue:134
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
@@ -1394,13 +1394,13 @@ msgstr "OS"
 msgid "OS:"
 msgid "OS:"
 msgstr "OS:"
 msgstr "OS:"
 
 
-#: src/views/config/ConfigEditor.vue:285
+#: src/views/config/ConfigEditor.vue:293
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/stream/components/Deploy.vue:87
 #: src/views/stream/components/Deploy.vue:87
 msgid "Overwrite"
 msgid "Overwrite"
 msgstr "覆盖"
 msgstr "覆盖"
 
 
-#: src/views/config/ConfigEditor.vue:289
+#: src/views/config/ConfigEditor.vue:297
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/stream/components/Deploy.vue:91
 #: src/views/stream/components/Deploy.vue:91
 msgid "Overwrite exist file"
 msgid "Overwrite exist file"
@@ -1410,7 +1410,7 @@ msgstr "覆盖现有文件"
 msgid "Params"
 msgid "Params"
 msgstr "参数"
 msgstr "参数"
 
 
-#: src/views/other/Login.vue:169 src/views/user/userColumns.tsx:18
+#: src/views/other/Login.vue:174 src/views/user/userColumns.tsx:18
 msgid "Password"
 msgid "Password"
 msgstr "密码"
 msgstr "密码"
 
 
@@ -1418,7 +1418,7 @@ msgstr "密码"
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "密码 (*)"
 msgstr "密码 (*)"
 
 
-#: src/views/config/ConfigEditor.vue:254
+#: src/views/config/ConfigEditor.vue:262
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 msgid "Path"
 msgid "Path"
@@ -1446,7 +1446,7 @@ msgid ""
 "provider."
 "provider."
 msgstr "请填写 DNS 提供商提供的 API 验证凭据。"
 msgstr "请填写 DNS 提供商提供的 API 验证凭据。"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:132
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:133
 msgid "Please fill in the required fields"
 msgid "Please fill in the required fields"
 msgstr "请填写必填字段"
 msgstr "请填写必填字段"
 
 
@@ -1459,7 +1459,7 @@ msgstr ""
 "商的 API。"
 "商的 API。"
 
 
 #: src/views/config/components/Rename.vue:64
 #: src/views/config/components/Rename.vue:64
-#: src/views/config/ConfigEditor.vue:241
+#: src/views/config/ConfigEditor.vue:249
 msgid "Please input a filename"
 msgid "Please input a filename"
 msgstr "请输入文件名"
 msgstr "请输入文件名"
 
 
@@ -1478,11 +1478,11 @@ msgstr "请输入名称,这将被用作新配置的文件名!"
 msgid "Please input your E-mail!"
 msgid "Please input your E-mail!"
 msgstr "请输入您的邮箱!"
 msgstr "请输入您的邮箱!"
 
 
-#: src/views/other/Install.vue:44 src/views/other/Login.vue:43
+#: src/views/other/Install.vue:44 src/views/other/Login.vue:44
 msgid "Please input your password!"
 msgid "Please input your password!"
 msgstr "请输入您的密码!"
 msgstr "请输入您的密码!"
 
 
-#: src/views/other/Install.vue:38 src/views/other/Login.vue:37
+#: src/views/other/Install.vue:38 src/views/other/Login.vue:38
 msgid "Please input your username!"
 msgid "Please input your username!"
 msgstr "请输入您的用户名!"
 msgstr "请输入您的用户名!"
 
 
@@ -1502,7 +1502,7 @@ msgstr "请至少选择一个节点!"
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr "预发布"
 msgstr "预发布"
 
 
-#: src/routes/index.ts:260 src/views/preference/Preference.vue:105
+#: src/routes/index.ts:260 src/views/preference/Preference.vue:111
 msgid "Preference"
 msgid "Preference"
 msgstr "偏好设置"
 msgstr "偏好设置"
 
 
@@ -1619,7 +1619,7 @@ msgid "Removed successfully"
 msgstr "删除成功"
 msgstr "删除成功"
 
 
 #: src/views/config/components/Rename.vue:55
 #: src/views/config/components/Rename.vue:55
-#: src/views/config/ConfigList.vue:159
+#: src/views/config/ConfigList.vue:167
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 msgid "Rename"
 msgid "Rename"
 msgstr "重命名"
 msgstr "重命名"
@@ -1702,9 +1702,9 @@ msgstr "运行中"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/views/certificate/CertificateEditor.vue:254
 #: src/views/certificate/CertificateEditor.vue:254
-#: src/views/config/ConfigEditor.vue:214 src/views/domain/DomainEdit.vue:260
+#: src/views/config/ConfigEditor.vue:222 src/views/domain/DomainEdit.vue:260
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
-#: src/views/preference/Preference.vue:145 src/views/stream/StreamEdit.vue:252
+#: src/views/preference/Preference.vue:151 src/views/stream/StreamEdit.vue:252
 msgid "Save"
 msgid "Save"
 msgstr "保存"
 msgstr "保存"
 
 
@@ -1712,19 +1712,19 @@ msgstr "保存"
 msgid "Save Directive"
 msgid "Save Directive"
 msgstr "保存指令"
 msgstr "保存指令"
 
 
-#: src/views/config/ConfigEditor.vue:163 src/views/domain/DomainAdd.vue:46
+#: src/views/config/ConfigEditor.vue:171 src/views/domain/DomainAdd.vue:46
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 msgid "Save error %{msg}"
 msgid "Save error %{msg}"
 msgstr "保存错误 %{msg}"
 msgstr "保存错误 %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:121
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:122
 #: src/views/certificate/CertificateEditor.vue:46
 #: src/views/certificate/CertificateEditor.vue:46
-#: src/views/preference/Preference.vue:74
+#: src/views/preference/Preference.vue:79
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "保存成功"
 msgstr "保存成功"
 
 
-#: src/views/config/ConfigEditor.vue:159 src/views/domain/DomainAdd.vue:37
+#: src/views/config/ConfigEditor.vue:167 src/views/domain/DomainAdd.vue:37
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/stream/StreamEdit.vue:138
 #: src/views/stream/StreamEdit.vue:138
@@ -1757,13 +1757,13 @@ msgstr "上传"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Rename.vue:44
 #: src/views/config/components/Rename.vue:44
-#: src/views/config/ConfigEditor.vue:100 src/views/domain/DomainList.vue:81
+#: src/views/config/ConfigEditor.vue:108 src/views/domain/DomainList.vue:81
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:55
 #: src/views/preference/components/TOTP.vue:55
-#: src/views/preference/Preference.vue:78 src/views/stream/StreamList.vue:113
+#: src/views/preference/Preference.vue:83 src/views/stream/StreamList.vue:113
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 msgid "Server error"
 msgid "Server error"
 msgstr "服务器错误"
 msgstr "服务器错误"
@@ -1834,7 +1834,7 @@ msgstr "SSL证书密钥路径"
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr "SSL证书路径"
 msgstr "SSL证书路径"
 
 
-#: src/views/other/Login.vue:203
+#: src/views/other/Login.vue:189
 msgid "SSO Login"
 msgid "SSO Login"
 msgstr "SSO 登录"
 msgstr "SSO 登录"
 
 
@@ -1911,10 +1911,10 @@ msgstr "同步证书成功"
 
 
 #: src/components/Notification/config.ts:12
 #: src/components/Notification/config.ts:12
 msgid ""
 msgid ""
-"Sync config %{cert_name} to %{env_name} failed, please upgrade the remote "
+"Sync config %{config_name} to %{env_name} failed, please upgrade the remote "
 "Nginx UI to the latest version"
 "Nginx UI to the latest version"
 msgstr ""
 msgstr ""
-"同步配置 %{cert_name} 到 %{env_name} 失败,请将远程 Nginx UI 升级到最新版本"
+"同步配置 %{config_name} 到 %{env_name} 失败,请将远程 Nginx UI 升级到最新版本"
 
 
 #: src/components/Notification/config.ts:16
 #: src/components/Notification/config.ts:16
 msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}"
 msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}"
@@ -2085,7 +2085,7 @@ msgstr ""
 msgid "Token is not valid"
 msgid "Token is not valid"
 msgstr "Token 无效"
 msgstr "Token 无效"
 
 
-#: src/views/other/Login.vue:74
+#: src/views/other/Login.vue:79
 msgid "Too many login failed attempts, please try again later"
 msgid "Too many login failed attempts, please try again later"
 msgstr "登录失败次数过多,请稍后再试"
 msgstr "登录失败次数过多,请稍后再试"
 
 
@@ -2095,7 +2095,7 @@ msgid ""
 "password algorithm."
 "password algorithm."
 msgstr "TOTP 是一种使用基于时间的一次性密码算法的双因素身份验证方法。"
 msgstr "TOTP 是一种使用基于时间的一次性密码算法的双因素身份验证方法。"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:209
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:210
 msgid "Trash"
 msgid "Trash"
 msgstr "回收站"
 msgstr "回收站"
 
 
@@ -2111,7 +2111,7 @@ msgstr "类型"
 
 
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/certificate/DNSCredential.vue:27
-#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:267
+#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:275
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/stream/components/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:85
@@ -2164,11 +2164,11 @@ msgstr "使用恢复代码"
 msgid "User"
 msgid "User"
 msgstr "用户"
 msgstr "用户"
 
 
-#: src/views/other/Login.vue:77
+#: src/views/other/Login.vue:82
 msgid "User is banned"
 msgid "User is banned"
 msgstr "用户被禁止"
 msgstr "用户被禁止"
 
 
-#: src/views/other/Login.vue:159 src/views/user/userColumns.tsx:9
+#: src/views/other/Login.vue:164 src/views/user/userColumns.tsx:9
 msgid "Username"
 msgid "Username"
 msgstr "用户名"
 msgstr "用户名"
 
 
@@ -2195,11 +2195,11 @@ msgstr "查看"
 msgid "View all notifications"
 msgid "View all notifications"
 msgstr "查看全部通知"
 msgstr "查看全部通知"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 msgid "View Details"
 msgid "View Details"
 msgstr "查看详情"
 msgstr "查看详情"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 msgid "View Mode"
 msgid "View Mode"
 msgstr "预览模式"
 msgstr "预览模式"
 
 

+ 96 - 86
app/src/language/zh_TW/app.po

@@ -49,8 +49,8 @@ msgstr "ACME 用戶"
 msgid "Action"
 msgid "Action"
 msgstr "操作"
 msgstr "操作"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:202
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:203
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/config_template/ConfigTemplate.vue:117
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxServer.vue:162
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
 #: src/views/domain/ngx_conf/NgxUpstream.vue:152
@@ -59,8 +59,8 @@ msgstr "操作"
 msgid "Add"
 msgid "Add"
 msgstr "新增"
 msgstr "新增"
 
 
-#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:135
-#: src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:112 src/views/config/ConfigEditor.vue:143
+#: src/views/config/ConfigEditor.vue:204
 msgid "Add Configuration"
 msgid "Add Configuration"
 msgstr "添加配置"
 msgstr "添加配置"
 
 
@@ -166,7 +166,7 @@ msgstr "助理"
 msgid "Attempts"
 msgid "Attempts"
 msgstr "嘗試次數"
 msgstr "嘗試次數"
 
 
-#: src/views/preference/Preference.vue:116
+#: src/views/preference/Preference.vue:122
 msgid "Auth"
 msgid "Auth"
 msgstr "身份驗證"
 msgstr "身份驗證"
 
 
@@ -188,8 +188,8 @@ msgid "Auto-renewal enabled for %{name}"
 msgstr "已啟用 %{name} 的自動續簽"
 msgstr "已啟用 %{name} 的自動續簽"
 
 
 #: src/views/certificate/CertificateEditor.vue:247
 #: src/views/certificate/CertificateEditor.vue:247
-#: src/views/config/ConfigEditor.vue:205 src/views/config/ConfigList.vue:173
-#: src/views/config/ConfigList.vue:99 src/views/domain/DomainEdit.vue:253
+#: src/views/config/ConfigEditor.vue:213 src/views/config/ConfigList.vue:107
+#: src/views/config/ConfigList.vue:181 src/views/domain/DomainEdit.vue:253
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 #: src/views/nginx_log/NginxLog.vue:168 src/views/stream/StreamEdit.vue:245
 msgid "Back"
 msgid "Back"
 msgstr "返回"
 msgstr "返回"
@@ -198,7 +198,7 @@ msgstr "返回"
 msgid "Back Home"
 msgid "Back Home"
 msgstr "返回首頁"
 msgstr "返回首頁"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:215
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:216
 msgid "Back to list"
 msgid "Back to list"
 msgstr "返回列表"
 msgstr "返回列表"
 
 
@@ -218,9 +218,9 @@ msgstr "禁止至"
 msgid "Base information"
 msgid "Base information"
 msgstr "基本資訊"
 msgstr "基本資訊"
 
 
-#: src/views/config/ConfigEditor.vue:233
+#: src/views/config/ConfigEditor.vue:241
 #: src/views/domain/components/RightSettings.vue:75
 #: src/views/domain/components/RightSettings.vue:75
-#: src/views/preference/Preference.vue:110
+#: src/views/preference/Preference.vue:116
 #: src/views/stream/components/RightSettings.vue:74
 #: src/views/stream/components/RightSettings.vue:74
 msgid "Basic"
 msgid "Basic"
 msgstr "基本"
 msgstr "基本"
@@ -252,7 +252,7 @@ msgstr "CADir"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/ChatGPT/ChatGPT.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:55
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:252
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:153
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/cert/components/ObtainCert.vue:137
 #: src/views/domain/components/Deploy.vue:21
 #: src/views/domain/components/Deploy.vue:21
@@ -298,7 +298,7 @@ msgid "Changed Certificate"
 msgid_plural "Changed Certificates"
 msgid_plural "Changed Certificates"
 msgstr[0] "變更後憑證"
 msgstr[0] "變更後憑證"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 msgid "Changed Path"
 msgid "Changed Path"
 msgstr "變更後路徑"
 msgstr "變更後路徑"
 
 
@@ -348,7 +348,7 @@ msgstr "設定檔案測試成功"
 msgid "Configuration Name"
 msgid "Configuration Name"
 msgstr "設定名稱"
 msgstr "設定名稱"
 
 
-#: src/views/config/ConfigList.vue:91
+#: src/views/config/ConfigList.vue:99
 msgid "Configurations"
 msgid "Configurations"
 msgstr "設定"
 msgstr "設定"
 
 
@@ -398,11 +398,11 @@ msgstr "創建"
 msgid "Create Another"
 msgid "Create Another"
 msgstr "再建立一個"
 msgstr "再建立一個"
 
 
-#: src/views/config/ConfigList.vue:109
+#: src/views/config/ConfigList.vue:117
 msgid "Create File"
 msgid "Create File"
 msgstr "創建檔案"
 msgstr "創建檔案"
 
 
-#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:116
+#: src/views/config/components/Mkdir.vue:48 src/views/config/ConfigList.vue:124
 msgid "Create Folder"
 msgid "Create Folder"
 msgstr "創建資料夾"
 msgstr "創建資料夾"
 
 
@@ -450,8 +450,8 @@ msgid ""
 "indicator."
 "indicator."
 msgstr "自訂本地伺服器名稱以顯示在環境指示器中。"
 msgstr "自訂本地伺服器名稱以顯示在環境指示器中。"
 
 
-#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:125
-#: src/views/config/ConfigEditor.vue:86 src/views/config/ConfigList.vue:57
+#: src/routes/index.ts:39 src/views/config/ConfigEditor.vue:133
+#: src/views/config/ConfigEditor.vue:94 src/views/config/ConfigList.vue:65
 msgid "Dashboard"
 msgid "Dashboard"
 msgstr "儀表板"
 msgstr "儀表板"
 
 
@@ -487,7 +487,7 @@ msgstr "刪除 Stream:%{stream_name}"
 msgid "Deleted successfully"
 msgid "Deleted successfully"
 msgstr "刪除成功"
 msgstr "刪除成功"
 
 
-#: src/views/config/ConfigEditor.vue:276
+#: src/views/config/ConfigEditor.vue:284
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/Deploy.vue:104
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/domain/components/RightSettings.vue:93
 #: src/views/stream/components/Deploy.vue:103
 #: src/views/stream/components/Deploy.vue:103
@@ -671,7 +671,7 @@ msgstr "成功複製至本機"
 msgid "Edit %{n}"
 msgid "Edit %{n}"
 msgstr "編輯 %{n}"
 msgstr "編輯 %{n}"
 
 
-#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:196
+#: src/routes/index.ts:122 src/views/config/ConfigEditor.vue:204
 msgid "Edit Configuration"
 msgid "Edit Configuration"
 msgstr "編輯設定"
 msgstr "編輯設定"
 
 
@@ -850,15 +850,15 @@ msgstr "完成"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgid "For Chinese user: https://mirror.ghproxy.com/"
 msgstr "中國使用者:https://mirror.ghproxy.com/"
 msgstr "中國使用者:https://mirror.ghproxy.com/"
 
 
-#: src/views/config/ConfigEditor.vue:208
+#: src/views/config/ConfigEditor.vue:216
 msgid "Format Code"
 msgid "Format Code"
 msgstr "格式化程式碼"
 msgstr "格式化程式碼"
 
 
-#: src/views/config/ConfigEditor.vue:175
+#: src/views/config/ConfigEditor.vue:183
 msgid "Format error %{msg}"
 msgid "Format error %{msg}"
 msgstr "格式錯誤 %{msg}"
 msgstr "格式錯誤 %{msg}"
 
 
-#: src/views/config/ConfigEditor.vue:173
+#: src/views/config/ConfigEditor.vue:181
 msgid "Format successfully"
 msgid "Format successfully"
 msgstr "成功格式化"
 msgstr "成功格式化"
 
 
@@ -918,8 +918,9 @@ msgstr "如果留空,將使用默認的 CA Dir。"
 msgid ""
 msgid ""
 "If the number of login failed attempts from a ip reach the max attempts in "
 "If the number of login failed attempts from a ip reach the max attempts in "
 "ban threshold minutes, the ip will be banned for a period of time."
 "ban threshold minutes, the ip will be banned for a period of time."
-msgstr "如果來自某個 IP 的登錄失敗次數在禁止閾值分鐘內達到最大嘗試次數,該 IP "
-"將被禁止一段時間。"
+msgstr ""
+"如果來自某個 IP 的登錄失敗次數在禁止閾值分鐘內達到最大嘗試次數,該 IP 將被禁"
+"止一段時間。"
 
 
 #: src/views/preference/components/TOTP.vue:108
 #: src/views/preference/components/TOTP.vue:108
 msgid ""
 msgid ""
@@ -941,7 +942,7 @@ msgstr "導入"
 msgid "Import Certificate"
 msgid "Import Certificate"
 msgstr "導入憑證"
 msgstr "導入憑證"
 
 
-#: src/views/other/Login.vue:71
+#: src/views/other/Login.vue:76
 msgid "Incorrect username or password"
 msgid "Incorrect username or password"
 msgstr "使用者名稱或密碼不正確"
 msgstr "使用者名稱或密碼不正確"
 
 
@@ -982,12 +983,12 @@ msgstr "間隔"
 msgid "Invalid"
 msgid "Invalid"
 msgstr "無效"
 msgstr "無效"
 
 
-#: src/views/other/Login.vue:81
+#: src/views/other/Login.vue:86
 msgid "Invalid 2FA or recovery code"
 msgid "Invalid 2FA or recovery code"
 msgstr "無效的多重因素驗證或恢復碼"
 msgstr "無效的多重因素驗證或恢復碼"
 
 
 #: src/views/config/components/Rename.vue:65
 #: src/views/config/components/Rename.vue:65
-#: src/views/config/ConfigEditor.vue:242
+#: src/views/config/ConfigEditor.vue:250
 msgid "Invalid filename"
 msgid "Invalid filename"
 msgstr "無效的檔案名"
 msgstr "無效的檔案名"
 
 
@@ -1058,7 +1059,7 @@ msgstr "開源授權"
 msgid "Link Start"
 msgid "Link Start"
 msgstr "連結開始"
 msgstr "連結開始"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:192
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:193
 msgid "List"
 msgid "List"
 msgstr "列表"
 msgstr "列表"
 
 
@@ -1075,7 +1076,7 @@ msgid "Load successfully"
 msgstr "加載成功"
 msgstr "加載成功"
 
 
 #: src/components/EnvIndicator/EnvIndicator.vue:39
 #: src/components/EnvIndicator/EnvIndicator.vue:39
-#: src/components/NodeSelector/NodeSelector.vue:68
+#: src/components/NodeSelector/NodeSelector.vue:71
 msgid "Local"
 msgid "Local"
 msgstr "本機"
 msgstr "本機"
 
 
@@ -1091,11 +1092,11 @@ msgstr "Locations"
 msgid "Log"
 msgid "Log"
 msgstr "日誌"
 msgstr "日誌"
 
 
-#: src/routes/index.ts:305 src/views/other/Login.vue:192
+#: src/routes/index.ts:305 src/views/other/Login.vue:207
 msgid "Login"
 msgid "Login"
 msgstr "登入"
 msgstr "登入"
 
 
-#: src/views/other/Login.vue:125 src/views/other/Login.vue:60
+#: src/views/other/Login.vue:130 src/views/other/Login.vue:63
 msgid "Login successful"
 msgid "Login successful"
 msgstr "登入成功"
 msgstr "登入成功"
 
 
@@ -1103,7 +1104,7 @@ msgstr "登入成功"
 msgid "Logout successful"
 msgid "Logout successful"
 msgstr "登出成功"
 msgstr "登出成功"
 
 
-#: src/views/preference/Preference.vue:134
+#: src/views/preference/Preference.vue:140
 msgid "Logrotate"
 msgid "Logrotate"
 msgstr "Logrotate"
 msgstr "Logrotate"
 
 
@@ -1116,10 +1117,10 @@ msgid ""
 "of Nginx UI will execute the logrotate command at the interval you set in "
 "of Nginx UI will execute the logrotate command at the interval you set in "
 "minutes."
 "minutes."
 msgstr ""
 msgstr ""
-"預設情況下,對於在主機上安裝 Nginx UI 的用戶,大多數主流 Linux "
-"發行版都啟用了 logrotate,因此您無需修改此頁面的參數。對於使用 Docker "
-"容器安裝 Nginx UI 的用戶,您可以手動啟用此選項。Nginx UI 的 crontab "
-"任務調度器將按照您設定的分鐘間隔執行 logrotate 命令。"
+"預設情況下,對於在主機上安裝 Nginx UI 的用戶,大多數主流 Linux 發行版都啟用"
+"了 logrotate,因此您無需修改此頁面的參數。對於使用 Docker 容器安裝 Nginx UI "
+"的用戶,您可以手動啟用此選項。Nginx UI 的 crontab 任務調度器將按照您設定的分"
+"鐘間隔執行 logrotate 命令。"
 
 
 #: src/views/domain/cert/components/AutoCertStepOne.vue:54
 #: src/views/domain/cert/components/AutoCertStepOne.vue:54
 msgid ""
 msgid ""
@@ -1128,8 +1129,8 @@ msgid ""
 msgstr ""
 msgstr ""
 "在取得憑證前,請確保您已將 .well-known 目錄反向代理到 HTTPChallengePort。"
 "在取得憑證前,請確保您已將 .well-known 目錄反向代理到 HTTPChallengePort。"
 
 
-#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:130
-#: src/views/config/ConfigEditor.vue:91 src/views/config/ConfigList.vue:62
+#: src/routes/index.ts:102 src/views/config/ConfigEditor.vue:138
+#: src/views/config/ConfigEditor.vue:99 src/views/config/ConfigList.vue:70
 msgid "Manage Configs"
 msgid "Manage Configs"
 msgstr "管理設定"
 msgstr "管理設定"
 
 
@@ -1171,9 +1172,9 @@ msgid "Model"
 msgstr "模型"
 msgstr "模型"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:248
 #: src/components/ChatGPT/ChatGPT.vue:248
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:531
-#: src/views/config/ConfigList.vue:151
+#: src/views/config/ConfigList.vue:159
 msgid "Modify"
 msgid "Modify"
 msgstr "修改"
 msgstr "修改"
 
 
@@ -1185,7 +1186,7 @@ msgstr "修改憑證"
 msgid "Modify Config"
 msgid "Modify Config"
 msgstr "修改設定"
 msgstr "修改設定"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 msgid "Modify Mode"
 msgid "Modify Mode"
 msgstr "修改模式"
 msgstr "修改模式"
 
 
@@ -1198,7 +1199,7 @@ msgstr "多行指令"
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/CertificateList/certColumns.tsx:10
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/certificate/DNSCredential.vue:11
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
 #: src/views/config/components/Mkdir.vue:65 src/views/config/configColumns.ts:8
-#: src/views/config/ConfigEditor.vue:248
+#: src/views/config/ConfigEditor.vue:256
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/RightSettings.vue:83
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/components/SiteDuplicate.vue:129
 #: src/views/domain/DomainList.vue:13
 #: src/views/domain/DomainList.vue:13
@@ -1230,7 +1231,7 @@ msgstr "上傳流量"
 msgid "New name"
 msgid "New name"
 msgstr "新名稱"
 msgstr "新名稱"
 
 
-#: src/views/config/ConfigEditor.vue:260
+#: src/views/config/ConfigEditor.vue:268
 msgid "New Path"
 msgid "New Path"
 msgstr "新路徑"
 msgstr "新路徑"
 
 
@@ -1244,7 +1245,7 @@ msgstr "新版本發布"
 msgid "Next"
 msgid "Next"
 msgstr "下一步"
 msgstr "下一步"
 
 
-#: src/views/preference/Preference.vue:122
+#: src/views/preference/Preference.vue:128
 msgid "Nginx"
 msgid "Nginx"
 msgstr "Nginx"
 msgstr "Nginx"
 
 
@@ -1338,13 +1339,13 @@ msgid ""
 "Firefox."
 "Firefox."
 msgstr "OCSP 必須裝訂可能會導致某些用戶在首次使用 Firefox 訪問時出現錯誤。"
 msgstr "OCSP 必須裝訂可能會導致某些用戶在首次使用 Firefox 訪問時出現錯誤。"
 
 
-#: src/components/NodeSelector/NodeSelector.vue:91
+#: src/components/NodeSelector/NodeSelector.vue:94
 #: src/views/dashboard/Environments.vue:107
 #: src/views/dashboard/Environments.vue:107
 #: src/views/environment/envColumns.tsx:90
 #: src/views/environment/envColumns.tsx:90
 msgid "Offline"
 msgid "Offline"
 msgstr "離線"
 msgstr "離線"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:253
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:254
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 #: src/components/StdDesign/StdDataEntry/components/StdSelector.vue:154
 msgid "Ok"
 msgid "Ok"
 msgstr "確定"
 msgstr "確定"
@@ -1373,14 +1374,14 @@ msgstr "確定"
 msgid "Once the verification is complete, the records will be removed."
 msgid "Once the verification is complete, the records will be removed."
 msgstr "驗證完成後,記錄將被刪除。"
 msgstr "驗證完成後,記錄將被刪除。"
 
 
-#: src/components/NodeSelector/NodeSelector.vue:71
-#: src/components/NodeSelector/NodeSelector.vue:85
+#: src/components/NodeSelector/NodeSelector.vue:74
+#: src/components/NodeSelector/NodeSelector.vue:88
 #: src/views/dashboard/Environments.vue:100
 #: src/views/dashboard/Environments.vue:100
 #: src/views/environment/envColumns.tsx:86
 #: src/views/environment/envColumns.tsx:86
 msgid "Online"
 msgid "Online"
 msgstr "線上"
 msgstr "線上"
 
 
-#: src/views/preference/Preference.vue:128
+#: src/views/preference/Preference.vue:134
 msgid "OpenAI"
 msgid "OpenAI"
 msgstr "OpenAI"
 msgstr "OpenAI"
 
 
@@ -1396,13 +1397,13 @@ msgstr "作業系統"
 msgid "OS:"
 msgid "OS:"
 msgstr "作業系統:"
 msgstr "作業系統:"
 
 
-#: src/views/config/ConfigEditor.vue:285
+#: src/views/config/ConfigEditor.vue:293
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/domain/components/Deploy.vue:88
 #: src/views/stream/components/Deploy.vue:87
 #: src/views/stream/components/Deploy.vue:87
 msgid "Overwrite"
 msgid "Overwrite"
 msgstr "覆蓋"
 msgstr "覆蓋"
 
 
-#: src/views/config/ConfigEditor.vue:289
+#: src/views/config/ConfigEditor.vue:297
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/domain/components/Deploy.vue:92
 #: src/views/stream/components/Deploy.vue:91
 #: src/views/stream/components/Deploy.vue:91
 msgid "Overwrite exist file"
 msgid "Overwrite exist file"
@@ -1412,7 +1413,7 @@ msgstr "覆蓋現有檔案"
 msgid "Params"
 msgid "Params"
 msgstr "參數"
 msgstr "參數"
 
 
-#: src/views/other/Login.vue:169 src/views/user/userColumns.tsx:18
+#: src/views/other/Login.vue:174 src/views/user/userColumns.tsx:18
 msgid "Password"
 msgid "Password"
 msgstr "密碼"
 msgstr "密碼"
 
 
@@ -1420,7 +1421,7 @@ msgstr "密碼"
 msgid "Password (*)"
 msgid "Password (*)"
 msgstr "密碼 (*)"
 msgstr "密碼 (*)"
 
 
-#: src/views/config/ConfigEditor.vue:254
+#: src/views/config/ConfigEditor.vue:262
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:118
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 #: src/views/domain/ngx_conf/LocationEditor.vue:90
 msgid "Path"
 msgid "Path"
@@ -1448,7 +1449,7 @@ msgid ""
 "provider."
 "provider."
 msgstr "請填寫您的 DNS 提供商提供的 API 認證憑據。"
 msgstr "請填寫您的 DNS 提供商提供的 API 認證憑據。"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:132
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:133
 msgid "Please fill in the required fields"
 msgid "Please fill in the required fields"
 msgstr "請填寫必填欄位"
 msgstr "請填寫必填欄位"
 
 
@@ -1456,11 +1457,12 @@ msgstr "請填寫必填欄位"
 msgid ""
 msgid ""
 "Please first add credentials in Certification > DNS Credentials, and then "
 "Please first add credentials in Certification > DNS Credentials, and then "
 "select one of the credentialsbelow to request the API of the DNS provider."
 "select one of the credentialsbelow to request the API of the DNS provider."
-msgstr "請先在「憑證」 > 「DNS 認證」中新增認證,然後選擇以下認證之一以請求 DNS "
-"供應商的 API。"
+msgstr ""
+"請先在「憑證」 > 「DNS 認證」中新增認證,然後選擇以下認證之一以請求 DNS 供應"
+"商的 API。"
 
 
 #: src/views/config/components/Rename.vue:64
 #: src/views/config/components/Rename.vue:64
-#: src/views/config/ConfigEditor.vue:241
+#: src/views/config/ConfigEditor.vue:249
 msgid "Please input a filename"
 msgid "Please input a filename"
 msgstr "請輸入檔案名稱"
 msgstr "請輸入檔案名稱"
 
 
@@ -1479,11 +1481,11 @@ msgstr "請輸入名稱,這將作為新設定的檔名!"
 msgid "Please input your E-mail!"
 msgid "Please input your E-mail!"
 msgstr "請輸入您的電子郵件!"
 msgstr "請輸入您的電子郵件!"
 
 
-#: src/views/other/Install.vue:44 src/views/other/Login.vue:43
+#: src/views/other/Install.vue:44 src/views/other/Login.vue:44
 msgid "Please input your password!"
 msgid "Please input your password!"
 msgstr "請輸入您的密碼!"
 msgstr "請輸入您的密碼!"
 
 
-#: src/views/other/Install.vue:38 src/views/other/Login.vue:37
+#: src/views/other/Install.vue:38 src/views/other/Login.vue:38
 msgid "Please input your username!"
 msgid "Please input your username!"
 msgstr "請輸入您的使用者名稱!"
 msgstr "請輸入您的使用者名稱!"
 
 
@@ -1503,7 +1505,7 @@ msgstr "請至少選擇一個節點!"
 msgid "Pre-release"
 msgid "Pre-release"
 msgstr "預先發布"
 msgstr "預先發布"
 
 
-#: src/routes/index.ts:260 src/views/preference/Preference.vue:105
+#: src/routes/index.ts:260 src/views/preference/Preference.vue:111
 msgid "Preference"
 msgid "Preference"
 msgstr "偏好設定"
 msgstr "偏好設定"
 
 
@@ -1620,7 +1622,7 @@ msgid "Removed successfully"
 msgstr "移除成功"
 msgstr "移除成功"
 
 
 #: src/views/config/components/Rename.vue:55
 #: src/views/config/components/Rename.vue:55
-#: src/views/config/ConfigList.vue:159
+#: src/views/config/ConfigList.vue:167
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 #: src/views/domain/ngx_conf/NgxUpstream.vue:123
 msgid "Rename"
 msgid "Rename"
 msgstr "重命名"
 msgstr "重命名"
@@ -1629,13 +1631,15 @@ msgstr "重命名"
 msgid ""
 msgid ""
 "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade the "
 "Rename %{orig_path} to %{new_path} on %{env_name} failed, please upgrade the "
 "remote Nginx UI to the latest version"
 "remote Nginx UI to the latest version"
-msgstr "將 %{orig_path} 重命名為 %{new_path} 在 %{env_name} 失敗,請將遠程 Nginx UI "
+msgstr ""
+"將 %{orig_path} 重命名為 %{new_path} 在 %{env_name} 失敗,請將遠程 Nginx UI "
 "升級到最新版本"
 "升級到最新版本"
 
 
 #: src/components/Notification/config.ts:35
 #: src/components/Notification/config.ts:35
 msgid ""
 msgid ""
 "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}"
 "Rename %{orig_path} to %{new_path} on %{env_name} failed, response: %{resp}"
-msgstr "在 %{env_name} 上將 %{orig_path} 重命名為 %{new_path} 失敗,回應:%{resp}"
+msgstr ""
+"在 %{env_name} 上將 %{orig_path} 重命名為 %{new_path} 失敗,回應:%{resp}"
 
 
 #: src/components/Notification/config.ts:23
 #: src/components/Notification/config.ts:23
 msgid "Rename %{orig_path} to %{new_path} on %{env_name} successfully"
 msgid "Rename %{orig_path} to %{new_path} on %{env_name} successfully"
@@ -1701,9 +1705,9 @@ msgstr "執行中"
 
 
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/components/ChatGPT/ChatGPT.vue:251
 #: src/views/certificate/CertificateEditor.vue:254
 #: src/views/certificate/CertificateEditor.vue:254
-#: src/views/config/ConfigEditor.vue:214 src/views/domain/DomainEdit.vue:260
+#: src/views/config/ConfigEditor.vue:222 src/views/domain/DomainEdit.vue:260
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:120
-#: src/views/preference/Preference.vue:145 src/views/stream/StreamEdit.vue:252
+#: src/views/preference/Preference.vue:151 src/views/stream/StreamEdit.vue:252
 msgid "Save"
 msgid "Save"
 msgstr "儲存"
 msgstr "儲存"
 
 
@@ -1711,19 +1715,19 @@ msgstr "儲存"
 msgid "Save Directive"
 msgid "Save Directive"
 msgstr "儲存指令"
 msgstr "儲存指令"
 
 
-#: src/views/config/ConfigEditor.vue:163 src/views/domain/DomainAdd.vue:46
+#: src/views/config/ConfigEditor.vue:171 src/views/domain/DomainAdd.vue:46
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:41
 msgid "Save error %{msg}"
 msgid "Save error %{msg}"
 msgstr "儲存錯誤 %{msg}"
 msgstr "儲存錯誤 %{msg}"
 
 
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
 #: src/components/StdDesign/StdDataDisplay/StdBatchEdit.vue:39
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:121
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:122
 #: src/views/certificate/CertificateEditor.vue:46
 #: src/views/certificate/CertificateEditor.vue:46
-#: src/views/preference/Preference.vue:74
+#: src/views/preference/Preference.vue:79
 msgid "Save successfully"
 msgid "Save successfully"
 msgstr "儲存成功"
 msgstr "儲存成功"
 
 
-#: src/views/config/ConfigEditor.vue:159 src/views/domain/DomainAdd.vue:37
+#: src/views/config/ConfigEditor.vue:167 src/views/domain/DomainAdd.vue:37
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/DomainEdit.vue:143
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/domain/ngx_conf/directive/DirectiveEditorItem.vue:39
 #: src/views/stream/StreamEdit.vue:138
 #: src/views/stream/StreamEdit.vue:138
@@ -1756,13 +1760,13 @@ msgstr "傳送"
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:252
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Mkdir.vue:37
 #: src/views/config/components/Rename.vue:44
 #: src/views/config/components/Rename.vue:44
-#: src/views/config/ConfigEditor.vue:100 src/views/domain/DomainList.vue:81
+#: src/views/config/ConfigEditor.vue:108 src/views/domain/DomainList.vue:81
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/BatchUpgrader.vue:57
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/environment/Environment.vue:15 src/views/other/Install.vue:68
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/AuthSettings.vue:49
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:42
 #: src/views/preference/components/TOTP.vue:55
 #: src/views/preference/components/TOTP.vue:55
-#: src/views/preference/Preference.vue:78 src/views/stream/StreamList.vue:113
+#: src/views/preference/Preference.vue:83 src/views/stream/StreamList.vue:113
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 #: src/views/stream/StreamList.vue:81 src/views/system/Upgrade.vue:42
 msgid "Server error"
 msgid "Server error"
 msgstr "伺服器錯誤"
 msgstr "伺服器錯誤"
@@ -1833,7 +1837,7 @@ msgstr "SSL 憑證金鑰路徑"
 msgid "SSL Certificate Path"
 msgid "SSL Certificate Path"
 msgstr "SSL 憑證路徑"
 msgstr "SSL 憑證路徑"
 
 
-#: src/views/other/Login.vue:203
+#: src/views/other/Login.vue:189
 msgid "SSO Login"
 msgid "SSO Login"
 msgstr "SSO 登錄"
 msgstr "SSO 登錄"
 
 
@@ -1888,7 +1892,8 @@ msgstr "同步憑證"
 msgid ""
 msgid ""
 "Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the "
 "Sync Certificate %{cert_name} to %{env_name} failed, please upgrade the "
 "remote Nginx UI to the latest version"
 "remote Nginx UI to the latest version"
-msgstr "同步憑證 %{cert_name} 到 %{env_name} 失敗,請將遠端 Nginx UI 升級到最新版本"
+msgstr ""
+"同步憑證 %{cert_name} 到 %{env_name} 失敗,請將遠端 Nginx UI 升級到最新版本"
 
 
 #: src/components/Notification/cert.ts:16
 #: src/components/Notification/cert.ts:16
 msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
 msgid "Sync Certificate %{cert_name} to %{env_name} failed, response: %{resp}"
@@ -1907,10 +1912,12 @@ msgid "Sync Certificate Success"
 msgstr "同步憑證成功"
 msgstr "同步憑證成功"
 
 
 #: src/components/Notification/config.ts:12
 #: src/components/Notification/config.ts:12
+#, fuzzy
 msgid ""
 msgid ""
-"Sync config %{cert_name} to %{env_name} failed, please upgrade the remote "
+"Sync config %{config_name} to %{env_name} failed, please upgrade the remote "
 "Nginx UI to the latest version"
 "Nginx UI to the latest version"
-msgstr "同步配置 %{cert_name} 到 %{env_name} 失敗,請將遠程 Nginx UI 升級到最新版本"
+msgstr ""
+"同步配置 %{cert_name} 到 %{env_name} 失敗,請將遠程 Nginx UI 升級到最新版本"
 
 
 #: src/components/Notification/config.ts:16
 #: src/components/Notification/config.ts:16
 msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}"
 msgid "Sync config %{config_name} to %{env_name} failed, response: %{resp}"
@@ -1958,8 +1965,9 @@ msgid ""
 "The certificate for the domain will be checked 30 minutes, and will be "
 "The certificate for the domain will be checked 30 minutes, and will be "
 "renewed if it has been more than 1 week or the period you set in settings "
 "renewed if it has been more than 1 week or the period you set in settings "
 "since it was last issued."
 "since it was last issued."
-msgstr "網域憑證將在 30 分鐘內接受檢查,如果自上次簽發以來已超過 1 "
-"週或您在設置中設定的時間,憑證將會自動更新。"
+msgstr ""
+"網域憑證將在 30 分鐘內接受檢查,如果自上次簽發以來已超過 1 週或您在設置中設定"
+"的時間,憑證將會自動更新。"
 
 
 #: src/views/other/Install.vue:50
 #: src/views/other/Install.vue:50
 msgid "The filename cannot contain the following characters: %{c}"
 msgid "The filename cannot contain the following characters: %{c}"
@@ -1997,7 +2005,8 @@ msgid ""
 "The remote Nginx UI version is not compatible with the local Nginx UI "
 "The remote Nginx UI version is not compatible with the local Nginx UI "
 "version. To avoid potential errors, please upgrade the remote Nginx UI to "
 "version. To avoid potential errors, please upgrade the remote Nginx UI to "
 "match the local version."
 "match the local version."
-msgstr "遠端 Nginx UI 版本與本地 Nginx UI 版本不兼容。為避免潛在錯誤,請升級遠端 "
+msgstr ""
+"遠端 Nginx UI 版本與本地 Nginx UI 版本不兼容。為避免潛在錯誤,請升級遠端 "
 "Nginx UI 以匹配本地版本。"
 "Nginx UI 以匹配本地版本。"
 
 
 #: src/views/preference/BasicSettings.vue:120
 #: src/views/preference/BasicSettings.vue:120
@@ -2062,7 +2071,8 @@ msgstr "標題"
 msgid ""
 msgid ""
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "To enable it, you need to install the Google or Microsoft Authenticator app "
 "on your mobile phone."
 "on your mobile phone."
-msgstr "要啟用它,您需要在手機上安裝 Google 或 Microsoft Authenticator 應用程序。"
+msgstr ""
+"要啟用它,您需要在手機上安裝 Google 或 Microsoft Authenticator 應用程序。"
 
 
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:44
 #: src/views/domain/ngx_conf/NgxConfigEditor.vue:44
 msgid ""
 msgid ""
@@ -2078,7 +2088,7 @@ msgstr ""
 msgid "Token is not valid"
 msgid "Token is not valid"
 msgstr "令牌無效"
 msgstr "令牌無效"
 
 
-#: src/views/other/Login.vue:74
+#: src/views/other/Login.vue:79
 msgid "Too many login failed attempts, please try again later"
 msgid "Too many login failed attempts, please try again later"
 msgstr "登錄失敗次數過多,請稍後再試"
 msgstr "登錄失敗次數過多,請稍後再試"
 
 
@@ -2088,7 +2098,7 @@ msgid ""
 "password algorithm."
 "password algorithm."
 msgstr "TOTP 是一種使用基於時間的一次性密碼算法的多重因素驗證方法。"
 msgstr "TOTP 是一種使用基於時間的一次性密碼算法的多重因素驗證方法。"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:209
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:210
 msgid "Trash"
 msgid "Trash"
 msgstr "垃圾桶"
 msgstr "垃圾桶"
 
 
@@ -2104,7 +2114,7 @@ msgstr "類型"
 
 
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/ACMEUser.vue:53
 #: src/views/certificate/DNSCredential.vue:27
 #: src/views/certificate/DNSCredential.vue:27
-#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:267
+#: src/views/config/configColumns.ts:31 src/views/config/ConfigEditor.vue:275
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/components/RightSettings.vue:86
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/domain/DomainList.vue:41 src/views/environment/envColumns.tsx:124
 #: src/views/stream/components/RightSettings.vue:85
 #: src/views/stream/components/RightSettings.vue:85
@@ -2157,11 +2167,11 @@ msgstr "使用恢復碼"
 msgid "User"
 msgid "User"
 msgstr "使用者名稱"
 msgstr "使用者名稱"
 
 
-#: src/views/other/Login.vue:77
+#: src/views/other/Login.vue:82
 msgid "User is banned"
 msgid "User is banned"
 msgstr "用戶被禁止"
 msgstr "用戶被禁止"
 
 
-#: src/views/other/Login.vue:159 src/views/user/userColumns.tsx:9
+#: src/views/other/Login.vue:164 src/views/user/userColumns.tsx:9
 msgid "Username"
 msgid "Username"
 msgstr "使用者名稱"
 msgstr "使用者名稱"
 
 
@@ -2188,11 +2198,11 @@ msgstr "檢視"
 msgid "View all notifications"
 msgid "View all notifications"
 msgstr "查看所有通知"
 msgstr "查看所有通知"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:181
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:182
 msgid "View Details"
 msgid "View Details"
 msgstr "查看詳情"
 msgstr "查看詳情"
 
 
-#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:268
+#: src/components/StdDesign/StdDataDisplay/StdCurd.vue:269
 msgid "View Mode"
 msgid "View Mode"
 msgstr "查看模式"
 msgstr "查看模式"
 
 

+ 4 - 4
app/src/views/domain/components/Deploy.vue

@@ -5,7 +5,7 @@ import type { Ref } from 'vue'
 import domain from '@/api/domain'
 import domain from '@/api/domain'
 import NodeSelector from '@/components/NodeSelector/NodeSelector.vue'
 import NodeSelector from '@/components/NodeSelector/NodeSelector.vue'
 
 
-const node_map = reactive({})
+const node_map = ref({})
 const target = ref([])
 const target = ref([])
 const overwrite = ref(false)
 const overwrite = ref(false)
 const enabled = ref(false)
 const enabled = ref(false)
@@ -21,7 +21,7 @@ function deploy() {
     cancelText: $gettext('Cancel'),
     cancelText: $gettext('Cancel'),
     onOk() {
     onOk() {
       target.value.forEach(id => {
       target.value.forEach(id => {
-        const node_name = node_map[id]
+        const node_name = node_map.value[id]
 
 
         // get source content
         // get source content
         domain.get(name.value).then(r => {
         domain.get(name.value).then(r => {
@@ -38,7 +38,7 @@ function deploy() {
                   { conf_name: name.value, node_name }),
                   { conf_name: name.value, node_name }),
             })
             })
             if (enabled.value) {
             if (enabled.value) {
-              domain.enable(name.value).then(() => {
+              domain.enable(name.value, { headers: { 'X-Node-ID': id } }).then(() => {
                 notification.success({
                 notification.success({
                   message: $gettext('Enable successfully'),
                   message: $gettext('Enable successfully'),
                   description:
                   description:
@@ -76,8 +76,8 @@ function deploy() {
     <ContextHolder />
     <ContextHolder />
     <NodeSelector
     <NodeSelector
       v-model:target="target"
       v-model:target="target"
+      v-model:map="node_map"
       hidden-local
       hidden-local
-      :map="node_map"
     />
     />
     <div class="node-deploy-control">
     <div class="node-deploy-control">
       <ACheckbox v-model:checked="enabled">
       <ACheckbox v-model:checked="enabled">

+ 1 - 1
app/src/views/domain/components/SiteDuplicate.vue

@@ -138,7 +138,7 @@ watch(() => gettext.current, () => {
       >
       >
         <NodeSelector
         <NodeSelector
           v-model:target="modelRef.target"
           v-model:target="modelRef.target"
-          :map="node_map"
+          v-model:map="node_map"
         />
         />
       </AFormItem>
       </AFormItem>
     </AForm>
     </AForm>

+ 1 - 1
app/src/views/stream/components/StreamDuplicate.vue

@@ -138,7 +138,7 @@ watch(() => gettext.current, () => {
       >
       >
         <NodeSelector
         <NodeSelector
           v-model:target="modelRef.target"
           v-model:target="modelRef.target"
-          :map="node_map"
+          v-model:map="node_map"
         />
         />
       </AFormItem>
       </AFormItem>
     </AForm>
     </AForm>

+ 52 - 52
go.mod

@@ -15,7 +15,7 @@ require (
 	github.com/gin-gonic/gin v1.10.0
 	github.com/gin-gonic/gin v1.10.0
 	github.com/go-acme/lego/v4 v4.18.0
 	github.com/go-acme/lego/v4 v4.18.0
 	github.com/go-co-op/gocron v1.37.0
 	github.com/go-co-op/gocron v1.37.0
-	github.com/go-playground/validator/v10 v10.22.0
+	github.com/go-playground/validator/v10 v10.22.1
 	github.com/golang-jwt/jwt/v4 v4.5.0
 	github.com/golang-jwt/jwt/v4 v4.5.0
 	github.com/google/uuid v1.6.0
 	github.com/google/uuid v1.6.0
 	github.com/gorilla/websocket v1.5.3
 	github.com/gorilla/websocket v1.5.3
@@ -28,27 +28,27 @@ require (
 	github.com/pquerna/otp v1.4.0
 	github.com/pquerna/otp v1.4.0
 	github.com/pretty66/websocketproxy v0.0.0-20220507015215-930b3a686308
 	github.com/pretty66/websocketproxy v0.0.0-20220507015215-930b3a686308
 	github.com/samber/lo v1.47.0
 	github.com/samber/lo v1.47.0
-	github.com/sashabaranov/go-openai v1.29.1
+	github.com/sashabaranov/go-openai v1.29.2
 	github.com/shirou/gopsutil/v3 v3.24.5
 	github.com/shirou/gopsutil/v3 v3.24.5
 	github.com/shopspring/decimal v1.4.0
 	github.com/shopspring/decimal v1.4.0
 	github.com/spf13/cast v1.7.0
 	github.com/spf13/cast v1.7.0
 	github.com/stretchr/testify v1.9.0
 	github.com/stretchr/testify v1.9.0
 	github.com/tufanbarisyildirim/gonginx v0.0.0-20240109151651-bb3e845a7a2a
 	github.com/tufanbarisyildirim/gonginx v0.0.0-20240109151651-bb3e845a7a2a
 	go.uber.org/zap v1.27.0
 	go.uber.org/zap v1.27.0
-	golang.org/x/crypto v0.26.0
+	golang.org/x/crypto v0.27.0
 	gopkg.in/guregu/null.v4 v4.0.0
 	gopkg.in/guregu/null.v4 v4.0.0
 	gopkg.in/ini.v1 v1.67.0
 	gopkg.in/ini.v1 v1.67.0
 	gorm.io/driver/sqlite v1.5.6
 	gorm.io/driver/sqlite v1.5.6
 	gorm.io/gen v0.3.26
 	gorm.io/gen v0.3.26
-	gorm.io/gorm v1.25.11
-	gorm.io/plugin/dbresolver v1.5.2
+	gorm.io/gorm v1.25.12
+	gorm.io/plugin/dbresolver v1.5.3
 )
 )
 
 
 require (
 require (
 	aead.dev/minisign v0.3.0 // indirect
 	aead.dev/minisign v0.3.0 // indirect
-	cloud.google.com/go/auth v0.9.2 // indirect
+	cloud.google.com/go/auth v0.9.4 // indirect
 	cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
 	cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
-	cloud.google.com/go/compute/metadata v0.5.0 // indirect
+	cloud.google.com/go/compute/metadata v0.5.1 // indirect
 	filippo.io/edwards25519 v1.1.0 // indirect
 	filippo.io/edwards25519 v1.1.0 // indirect
 	github.com/AdamSLevy/jsonrpc2/v14 v14.1.0 // indirect
 	github.com/AdamSLevy/jsonrpc2/v14 v14.1.0 // indirect
 	github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
 	github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
@@ -75,23 +75,23 @@ require (
 	github.com/Shopify/goreferrer v0.0.0-20240724165105-aceaa0259138 // indirect
 	github.com/Shopify/goreferrer v0.0.0-20240724165105-aceaa0259138 // indirect
 	github.com/StackExchange/wmi v1.2.1 // indirect
 	github.com/StackExchange/wmi v1.2.1 // indirect
 	github.com/akamai/AkamaiOPEN-edgegrid-golang v1.2.2 // indirect
 	github.com/akamai/AkamaiOPEN-edgegrid-golang v1.2.2 // indirect
-	github.com/aliyun/alibaba-cloud-sdk-go v1.63.11 // indirect
+	github.com/aliyun/alibaba-cloud-sdk-go v1.63.16 // indirect
 	github.com/andybalholm/brotli v1.1.0 // indirect
 	github.com/andybalholm/brotli v1.1.0 // indirect
 	github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
 	github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
-	github.com/aws/aws-sdk-go-v2 v1.30.4 // indirect
-	github.com/aws/aws-sdk-go-v2/config v1.27.31 // indirect
-	github.com/aws/aws-sdk-go-v2/credentials v1.17.30 // indirect
-	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12 // indirect
-	github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16 // indirect
-	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16 // indirect
+	github.com/aws/aws-sdk-go-v2 v1.30.5 // indirect
+	github.com/aws/aws-sdk-go-v2/config v1.27.33 // indirect
+	github.com/aws/aws-sdk-go-v2/credentials v1.17.32 // indirect
+	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13 // indirect
+	github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17 // indirect
+	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17 // indirect
 	github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
 	github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
 	github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 // indirect
 	github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 // indirect
-	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18 // indirect
-	github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.4 // indirect
-	github.com/aws/aws-sdk-go-v2/service/route53 v1.43.0 // indirect
-	github.com/aws/aws-sdk-go-v2/service/sso v1.22.5 // indirect
-	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.5 // indirect
-	github.com/aws/aws-sdk-go-v2/service/sts v1.30.5 // indirect
+	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19 // indirect
+	github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.6 // indirect
+	github.com/aws/aws-sdk-go-v2/service/route53 v1.43.2 // indirect
+	github.com/aws/aws-sdk-go-v2/service/sso v1.22.7 // indirect
+	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.7 // indirect
+	github.com/aws/aws-sdk-go-v2/service/sts v1.30.7 // indirect
 	github.com/aws/smithy-go v1.20.4 // indirect
 	github.com/aws/smithy-go v1.20.4 // indirect
 	github.com/aymerick/douceur v0.2.0 // indirect
 	github.com/aymerick/douceur v0.2.0 // indirect
 	github.com/benbjohnson/clock v1.3.5 // indirect
 	github.com/benbjohnson/clock v1.3.5 // indirect
@@ -100,8 +100,8 @@ require (
 	github.com/bytedance/sonic/loader v0.2.0 // indirect
 	github.com/bytedance/sonic/loader v0.2.0 // indirect
 	github.com/cenkalti/backoff/v4 v4.3.0 // indirect
 	github.com/cenkalti/backoff/v4 v4.3.0 // indirect
 	github.com/cespare/xxhash/v2 v2.3.0 // indirect
 	github.com/cespare/xxhash/v2 v2.3.0 // indirect
-	github.com/civo/civogo v0.3.75 // indirect
-	github.com/cloudflare/cloudflare-go v0.103.0 // indirect
+	github.com/civo/civogo v0.3.77 // indirect
+	github.com/cloudflare/cloudflare-go v0.104.0 // indirect
 	github.com/cloudwego/base64x v0.1.4 // indirect
 	github.com/cloudwego/base64x v0.1.4 // indirect
 	github.com/cloudwego/iasm v0.2.0 // indirect
 	github.com/cloudwego/iasm v0.2.0 // indirect
 	github.com/cpu/goacmedns v0.1.1 // indirect
 	github.com/cpu/goacmedns v0.1.1 // indirect
@@ -125,7 +125,7 @@ require (
 	github.com/go-ole/go-ole v1.3.0 // indirect
 	github.com/go-ole/go-ole v1.3.0 // indirect
 	github.com/go-playground/locales v0.14.1 // indirect
 	github.com/go-playground/locales v0.14.1 // indirect
 	github.com/go-playground/universal-translator v0.18.1 // indirect
 	github.com/go-playground/universal-translator v0.18.1 // indirect
-	github.com/go-resty/resty/v2 v2.14.0 // indirect
+	github.com/go-resty/resty/v2 v2.15.0 // indirect
 	github.com/go-sql-driver/mysql v1.8.1 // indirect
 	github.com/go-sql-driver/mysql v1.8.1 // indirect
 	github.com/go-viper/mapstructure/v2 v2.1.0 // indirect
 	github.com/go-viper/mapstructure/v2 v2.1.0 // indirect
 	github.com/goccy/go-json v0.10.3 // indirect
 	github.com/goccy/go-json v0.10.3 // indirect
@@ -140,7 +140,7 @@ require (
 	github.com/google/go-querystring v1.1.0 // indirect
 	github.com/google/go-querystring v1.1.0 // indirect
 	github.com/google/gofuzz v1.2.0 // indirect
 	github.com/google/gofuzz v1.2.0 // indirect
 	github.com/google/s2a-go v0.1.8 // indirect
 	github.com/google/s2a-go v0.1.8 // indirect
-	github.com/googleapis/enterprise-certificate-proxy v0.3.3 // indirect
+	github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect
 	github.com/googleapis/gax-go/v2 v2.13.0 // indirect
 	github.com/googleapis/gax-go/v2 v2.13.0 // indirect
 	github.com/gophercloud/gophercloud v1.14.0 // indirect
 	github.com/gophercloud/gophercloud v1.14.0 // indirect
 	github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56 // indirect
 	github.com/gophercloud/utils v0.0.0-20231010081019-80377eca5d56 // indirect
@@ -179,12 +179,12 @@ require (
 	github.com/linode/linodego v1.40.0 // indirect
 	github.com/linode/linodego v1.40.0 // indirect
 	github.com/liquidweb/liquidweb-cli v0.7.0 // indirect
 	github.com/liquidweb/liquidweb-cli v0.7.0 // indirect
 	github.com/liquidweb/liquidweb-go v1.6.4 // indirect
 	github.com/liquidweb/liquidweb-go v1.6.4 // indirect
-	github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7 // indirect
+	github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 // indirect
 	github.com/mailgun/raymond/v2 v2.0.48 // indirect
 	github.com/mailgun/raymond/v2 v2.0.48 // indirect
 	github.com/mailru/easyjson v0.7.7 // indirect
 	github.com/mailru/easyjson v0.7.7 // indirect
 	github.com/mattn/go-colorable v0.1.13 // indirect
 	github.com/mattn/go-colorable v0.1.13 // indirect
 	github.com/mattn/go-isatty v0.0.20 // indirect
 	github.com/mattn/go-isatty v0.0.20 // indirect
-	github.com/mattn/go-sqlite3 v1.14.22 // indirect
+	github.com/mattn/go-sqlite3 v1.14.23 // indirect
 	github.com/microcosm-cc/bluemonday v1.0.27 // indirect
 	github.com/microcosm-cc/bluemonday v1.0.27 // indirect
 	github.com/miekg/dns v1.1.62 // indirect
 	github.com/miekg/dns v1.1.62 // indirect
 	github.com/mimuret/golang-iij-dpf v0.9.1 // indirect
 	github.com/mimuret/golang-iij-dpf v0.9.1 // indirect
@@ -217,7 +217,7 @@ require (
 	github.com/sacloud/go-http v0.1.8 // indirect
 	github.com/sacloud/go-http v0.1.8 // indirect
 	github.com/sacloud/iaas-api-go v1.12.0 // indirect
 	github.com/sacloud/iaas-api-go v1.12.0 // indirect
 	github.com/sacloud/packages-go v0.0.10 // indirect
 	github.com/sacloud/packages-go v0.0.10 // indirect
-	github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29 // indirect
+	github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30 // indirect
 	github.com/schollz/closestmatch v2.1.0+incompatible // indirect
 	github.com/schollz/closestmatch v2.1.0+incompatible // indirect
 	github.com/selectel/domains-go v1.1.0 // indirect
 	github.com/selectel/domains-go v1.1.0 // indirect
 	github.com/selectel/go-selvpcclient/v3 v3.1.1 // indirect
 	github.com/selectel/go-selvpcclient/v3 v3.1.1 // indirect
@@ -230,14 +230,14 @@ require (
 	github.com/stretchr/objx v0.5.2 // indirect
 	github.com/stretchr/objx v0.5.2 // indirect
 	github.com/tdewolff/minify/v2 v2.20.37 // indirect
 	github.com/tdewolff/minify/v2 v2.20.37 // indirect
 	github.com/tdewolff/parse/v2 v2.7.15 // indirect
 	github.com/tdewolff/parse/v2 v2.7.15 // indirect
-	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.993 // indirect
-	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.993 // indirect
+	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1002 // indirect
+	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1002 // indirect
 	github.com/tklauser/go-sysconf v0.3.14 // indirect
 	github.com/tklauser/go-sysconf v0.3.14 // indirect
 	github.com/tklauser/numcpus v0.8.0 // indirect
 	github.com/tklauser/numcpus v0.8.0 // indirect
 	github.com/transip/gotransip/v6 v6.26.0 // indirect
 	github.com/transip/gotransip/v6 v6.26.0 // indirect
 	github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
 	github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
 	github.com/ugorji/go/codec v1.2.12 // indirect
 	github.com/ugorji/go/codec v1.2.12 // indirect
-	github.com/ultradns/ultradns-go-sdk v1.6.2-20240501171831-432d643 // indirect
+	github.com/ultradns/ultradns-go-sdk v1.7.0-20240913052650-970ca9a // indirect
 	github.com/valyala/bytebufferpool v1.0.0 // indirect
 	github.com/valyala/bytebufferpool v1.0.0 // indirect
 	github.com/valyala/fasttemplate v1.2.2 // indirect
 	github.com/valyala/fasttemplate v1.2.2 // indirect
 	github.com/vinyldns/go-vinyldns v0.9.16 // indirect
 	github.com/vinyldns/go-vinyldns v0.9.16 // indirect
@@ -246,33 +246,33 @@ require (
 	github.com/vultr/govultr/v2 v2.17.2 // indirect
 	github.com/vultr/govultr/v2 v2.17.2 // indirect
 	github.com/vultr/govultr/v3 v3.9.1 // indirect
 	github.com/vultr/govultr/v3 v3.9.1 // indirect
 	github.com/x448/float16 v0.8.4 // indirect
 	github.com/x448/float16 v0.8.4 // indirect
-	github.com/yandex-cloud/go-genproto v0.0.0-20240829130658-0568052c5a6a // indirect
-	github.com/yandex-cloud/go-sdk v0.0.0-20240829131820-fa8ad79f88a4 // indirect
+	github.com/yandex-cloud/go-genproto v0.0.0-20240911120709-1fa0cb6f47c2 // indirect
+	github.com/yandex-cloud/go-sdk v0.0.0-20240911121212-e4e74d0d02f5 // indirect
 	github.com/yosssi/ace v0.0.5 // indirect
 	github.com/yosssi/ace v0.0.5 // indirect
 	github.com/yusufpapurcu/wmi v1.2.4 // indirect
 	github.com/yusufpapurcu/wmi v1.2.4 // indirect
 	go.opencensus.io v0.24.0 // indirect
 	go.opencensus.io v0.24.0 // indirect
-	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect
-	go.opentelemetry.io/otel v1.29.0 // indirect
-	go.opentelemetry.io/otel/metric v1.29.0 // indirect
-	go.opentelemetry.io/otel/trace v1.29.0 // indirect
+	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 // indirect
+	go.opentelemetry.io/otel v1.30.0 // indirect
+	go.opentelemetry.io/otel/metric v1.30.0 // indirect
+	go.opentelemetry.io/otel/trace v1.30.0 // indirect
 	go.uber.org/atomic v1.11.0 // indirect
 	go.uber.org/atomic v1.11.0 // indirect
 	go.uber.org/multierr v1.11.0 // indirect
 	go.uber.org/multierr v1.11.0 // indirect
 	go.uber.org/ratelimit v0.3.1 // indirect
 	go.uber.org/ratelimit v0.3.1 // indirect
-	golang.org/x/arch v0.9.0 // indirect
-	golang.org/x/exp v0.0.0-20240823005443-9b4947da3948 // indirect
-	golang.org/x/mod v0.20.0 // indirect
-	golang.org/x/net v0.28.0 // indirect
-	golang.org/x/oauth2 v0.22.0 // indirect
+	golang.org/x/arch v0.10.0 // indirect
+	golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect
+	golang.org/x/mod v0.21.0 // indirect
+	golang.org/x/net v0.29.0 // indirect
+	golang.org/x/oauth2 v0.23.0 // indirect
 	golang.org/x/sync v0.8.0 // indirect
 	golang.org/x/sync v0.8.0 // indirect
-	golang.org/x/sys v0.24.0 // indirect
-	golang.org/x/text v0.17.0 // indirect
+	golang.org/x/sys v0.25.0 // indirect
+	golang.org/x/text v0.18.0 // indirect
 	golang.org/x/time v0.6.0 // indirect
 	golang.org/x/time v0.6.0 // indirect
-	golang.org/x/tools v0.24.0 // indirect
-	google.golang.org/api v0.195.0 // indirect
-	google.golang.org/genproto v0.0.0-20240827150818-7e3bb234dfed // indirect
-	google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed // indirect
-	google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed // indirect
-	google.golang.org/grpc v1.66.0 // indirect
+	golang.org/x/tools v0.25.0 // indirect
+	google.golang.org/api v0.197.0 // indirect
+	google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect
+	google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect
+	google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
+	google.golang.org/grpc v1.66.2 // indirect
 	google.golang.org/protobuf v1.34.2 // indirect
 	google.golang.org/protobuf v1.34.2 // indirect
 	gopkg.in/fsnotify.v1 v1.4.7 // indirect
 	gopkg.in/fsnotify.v1 v1.4.7 // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
@@ -280,12 +280,12 @@ require (
 	gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
 	gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
 	gopkg.in/yaml.v2 v2.4.0 // indirect
 	gopkg.in/yaml.v2 v2.4.0 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
-	gorm.io/datatypes v1.2.1 // indirect
+	gorm.io/datatypes v1.2.2 // indirect
 	gorm.io/driver/mysql v1.5.7 // indirect
 	gorm.io/driver/mysql v1.5.7 // indirect
 	gorm.io/driver/postgres v1.5.6 // indirect
 	gorm.io/driver/postgres v1.5.6 // indirect
 	gorm.io/hints v1.1.2 // indirect
 	gorm.io/hints v1.1.2 // indirect
-	k8s.io/api v0.31.0 // indirect
-	k8s.io/apimachinery v0.31.0 // indirect
+	k8s.io/api v0.31.1 // indirect
+	k8s.io/apimachinery v0.31.1 // indirect
 	k8s.io/klog/v2 v2.130.1 // indirect
 	k8s.io/klog/v2 v2.130.1 // indirect
 	k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3 // indirect
 	k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3 // indirect
 	sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
 	sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect

+ 104 - 0
go.sum

@@ -108,6 +108,8 @@ cloud.google.com/go/auth v0.9.1 h1:+pMtLEV2k0AXKvs/tGZojuj6QaioxfUjOpMsG5Gtx+w=
 cloud.google.com/go/auth v0.9.1/go.mod h1:Sw8ocT5mhhXxFklyhT12Eiy0ed6tTrPMCJjSI8KhYLk=
 cloud.google.com/go/auth v0.9.1/go.mod h1:Sw8ocT5mhhXxFklyhT12Eiy0ed6tTrPMCJjSI8KhYLk=
 cloud.google.com/go/auth v0.9.2 h1:I+Rq388FYU8QdbVB1IiPd+6KNdrqtAPE/asiKHShBLM=
 cloud.google.com/go/auth v0.9.2 h1:I+Rq388FYU8QdbVB1IiPd+6KNdrqtAPE/asiKHShBLM=
 cloud.google.com/go/auth v0.9.2/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk=
 cloud.google.com/go/auth v0.9.2/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk=
+cloud.google.com/go/auth v0.9.4 h1:DxF7imbEbiFu9+zdKC6cKBko1e8XeJnipNqIbWZ+kDI=
+cloud.google.com/go/auth v0.9.4/go.mod h1:SHia8n6//Ya940F1rLimhJCjjx7KE17t0ctFEci3HkA=
 cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
 cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
 cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
 cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
 cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=
 cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=
@@ -192,6 +194,8 @@ cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxB
 cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
 cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
 cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY=
 cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY=
 cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
 cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
+cloud.google.com/go/compute/metadata v0.5.1 h1:NM6oZeZNlYjiwYje+sYFjEpP0Q0zCan1bmQW/KmIrGs=
+cloud.google.com/go/compute/metadata v0.5.1/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k=
 cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY=
 cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY=
 cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck=
 cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck=
 cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w=
 cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w=
@@ -707,6 +711,8 @@ github.com/aliyun/alibaba-cloud-sdk-go v1.63.7 h1:MOFLOVlBI1MvP4I0cwb9cXf83GNcMs
 github.com/aliyun/alibaba-cloud-sdk-go v1.63.7/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ=
 github.com/aliyun/alibaba-cloud-sdk-go v1.63.7/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ=
 github.com/aliyun/alibaba-cloud-sdk-go v1.63.11 h1:U+8nVd9AEZrxpn3iuZNQq1NKhO65oZAsbcVgdvILxkI=
 github.com/aliyun/alibaba-cloud-sdk-go v1.63.11 h1:U+8nVd9AEZrxpn3iuZNQq1NKhO65oZAsbcVgdvILxkI=
 github.com/aliyun/alibaba-cloud-sdk-go v1.63.11/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ=
 github.com/aliyun/alibaba-cloud-sdk-go v1.63.11/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ=
+github.com/aliyun/alibaba-cloud-sdk-go v1.63.16 h1:LNaqt0rxIcqHYarmdIZ3ZM7lqUWaWZ1Sqi1XPV1zMko=
+github.com/aliyun/alibaba-cloud-sdk-go v1.63.16/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ=
 github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
 github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
 github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M=
 github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M=
 github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY=
 github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY=
@@ -725,26 +731,38 @@ github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP
 github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc=
 github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc=
 github.com/aws/aws-sdk-go-v2 v1.30.4 h1:frhcagrVNrzmT95RJImMHgabt99vkXGslubDaDagTk8=
 github.com/aws/aws-sdk-go-v2 v1.30.4 h1:frhcagrVNrzmT95RJImMHgabt99vkXGslubDaDagTk8=
 github.com/aws/aws-sdk-go-v2 v1.30.4/go.mod h1:CT+ZPWXbYrci8chcARI3OmI/qgd+f6WtuLOoaIA8PR0=
 github.com/aws/aws-sdk-go-v2 v1.30.4/go.mod h1:CT+ZPWXbYrci8chcARI3OmI/qgd+f6WtuLOoaIA8PR0=
+github.com/aws/aws-sdk-go-v2 v1.30.5 h1:mWSRTwQAb0aLE17dSzztCVJWI9+cRMgqebndjwDyK0g=
+github.com/aws/aws-sdk-go-v2 v1.30.5/go.mod h1:CT+ZPWXbYrci8chcARI3OmI/qgd+f6WtuLOoaIA8PR0=
 github.com/aws/aws-sdk-go-v2/config v1.27.27 h1:HdqgGt1OAP0HkEDDShEl0oSYa9ZZBSOmKpdpsDMdO90=
 github.com/aws/aws-sdk-go-v2/config v1.27.27 h1:HdqgGt1OAP0HkEDDShEl0oSYa9ZZBSOmKpdpsDMdO90=
 github.com/aws/aws-sdk-go-v2/config v1.27.27/go.mod h1:MVYamCg76dFNINkZFu4n4RjDixhVr51HLj4ErWzrVwg=
 github.com/aws/aws-sdk-go-v2/config v1.27.27/go.mod h1:MVYamCg76dFNINkZFu4n4RjDixhVr51HLj4ErWzrVwg=
 github.com/aws/aws-sdk-go-v2/config v1.27.31 h1:kxBoRsjhT3pq0cKthgj6RU6bXTm/2SgdoUMyrVw0rAI=
 github.com/aws/aws-sdk-go-v2/config v1.27.31 h1:kxBoRsjhT3pq0cKthgj6RU6bXTm/2SgdoUMyrVw0rAI=
 github.com/aws/aws-sdk-go-v2/config v1.27.31/go.mod h1:z04nZdSWFPaDwK3DdJOG2r+scLQzMYuJeW0CujEm9FM=
 github.com/aws/aws-sdk-go-v2/config v1.27.31/go.mod h1:z04nZdSWFPaDwK3DdJOG2r+scLQzMYuJeW0CujEm9FM=
+github.com/aws/aws-sdk-go-v2/config v1.27.33 h1:Nof9o/MsmH4oa0s2q9a0k7tMz5x/Yj5k06lDODWz3BU=
+github.com/aws/aws-sdk-go-v2/config v1.27.33/go.mod h1:kEqdYzRb8dd8Sy2pOdEbExTTF5v7ozEXX0McgPE7xks=
 github.com/aws/aws-sdk-go-v2/credentials v1.17.27 h1:2raNba6gr2IfA0eqqiP2XiQ0UVOpGPgDSi0I9iAP+UI=
 github.com/aws/aws-sdk-go-v2/credentials v1.17.27 h1:2raNba6gr2IfA0eqqiP2XiQ0UVOpGPgDSi0I9iAP+UI=
 github.com/aws/aws-sdk-go-v2/credentials v1.17.27/go.mod h1:gniiwbGahQByxan6YjQUMcW4Aov6bLC3m+evgcoN4r4=
 github.com/aws/aws-sdk-go-v2/credentials v1.17.27/go.mod h1:gniiwbGahQByxan6YjQUMcW4Aov6bLC3m+evgcoN4r4=
 github.com/aws/aws-sdk-go-v2/credentials v1.17.30 h1:aau/oYFtibVovr2rDt8FHlU17BTicFEMAi29V1U+L5Q=
 github.com/aws/aws-sdk-go-v2/credentials v1.17.30 h1:aau/oYFtibVovr2rDt8FHlU17BTicFEMAi29V1U+L5Q=
 github.com/aws/aws-sdk-go-v2/credentials v1.17.30/go.mod h1:BPJ/yXV92ZVq6G8uYvbU0gSl8q94UB63nMT5ctNO38g=
 github.com/aws/aws-sdk-go-v2/credentials v1.17.30/go.mod h1:BPJ/yXV92ZVq6G8uYvbU0gSl8q94UB63nMT5ctNO38g=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.32 h1:7Cxhp/BnT2RcGy4VisJ9miUPecY+lyE9I8JvcZofn9I=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.32/go.mod h1:P5/QMF3/DCHbXGEGkdbilXHsyTBX5D3HSwcrSc9p20I=
 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 h1:KreluoV8FZDEtI6Co2xuNk/UqI9iwMrOx/87PBNIKqw=
 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 h1:KreluoV8FZDEtI6Co2xuNk/UqI9iwMrOx/87PBNIKqw=
 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11/go.mod h1:SeSUYBLsMYFoRvHE0Tjvn7kbxaUhl75CJi1sbfhMxkU=
 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11/go.mod h1:SeSUYBLsMYFoRvHE0Tjvn7kbxaUhl75CJi1sbfhMxkU=
 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12 h1:yjwoSyDZF8Jth+mUk5lSPJCkMC0lMy6FaCD51jm6ayE=
 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12 h1:yjwoSyDZF8Jth+mUk5lSPJCkMC0lMy6FaCD51jm6ayE=
 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12/go.mod h1:fuR57fAgMk7ot3WcNQfb6rSEn+SUffl7ri+aa8uKysI=
 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.12/go.mod h1:fuR57fAgMk7ot3WcNQfb6rSEn+SUffl7ri+aa8uKysI=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13 h1:pfQ2sqNpMVK6xz2RbqLEL0GH87JOwSxPV2rzm8Zsb74=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13/go.mod h1:NG7RXPUlqfsCLLFfi0+IpKN4sCB9D9fw/qTaSB+xRoU=
 github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 h1:SoNJ4RlFEQEbtDcCEt+QG56MY4fm4W8rYirAmq+/DdU=
 github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 h1:SoNJ4RlFEQEbtDcCEt+QG56MY4fm4W8rYirAmq+/DdU=
 github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15/go.mod h1:U9ke74k1n2bf+RIgoX1SXFed1HLs51OgUSs+Ph0KJP8=
 github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15/go.mod h1:U9ke74k1n2bf+RIgoX1SXFed1HLs51OgUSs+Ph0KJP8=
 github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16 h1:TNyt/+X43KJ9IJJMjKfa3bNTiZbUP7DeCxfbTROESwY=
 github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16 h1:TNyt/+X43KJ9IJJMjKfa3bNTiZbUP7DeCxfbTROESwY=
 github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16/go.mod h1:2DwJF39FlNAUiX5pAc0UNeiz16lK2t7IaFcm0LFHEgc=
 github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.16/go.mod h1:2DwJF39FlNAUiX5pAc0UNeiz16lK2t7IaFcm0LFHEgc=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17 h1:pI7Bzt0BJtYA0N/JEC6B8fJ4RBrEMi1LBrkMdFYNSnQ=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17/go.mod h1:Dh5zzJYMtxfIjYW+/evjQ8uj2OyR/ve2KROHGHlSFqE=
 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 h1:C6WHdGnTDIYETAm5iErQUiVNsclNx9qbJVPIt03B6bI=
 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 h1:C6WHdGnTDIYETAm5iErQUiVNsclNx9qbJVPIt03B6bI=
 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15/go.mod h1:ZQLZqhcu+JhSrA9/NXRm8SkDvsycE+JkV3WGY41e+IM=
 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15/go.mod h1:ZQLZqhcu+JhSrA9/NXRm8SkDvsycE+JkV3WGY41e+IM=
 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16 h1:jYfy8UPmd+6kJW5YhY0L1/KftReOGxI/4NtVSTh9O/I=
 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16 h1:jYfy8UPmd+6kJW5YhY0L1/KftReOGxI/4NtVSTh9O/I=
 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16/go.mod h1:7ZfEPZxkW42Afq4uQB8H2E2e6ebh6mXTueEpYzjCzcs=
 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.16/go.mod h1:7ZfEPZxkW42Afq4uQB8H2E2e6ebh6mXTueEpYzjCzcs=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17 h1:Mqr/V5gvrhA2gvgnF42Zh5iMiQNcOYthFYwCyrnuWlc=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17/go.mod h1:aLJpZlCmjE+V+KtN1q1uyZkfnUWpQGpbsn89XPKyzfU=
 github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU=
 github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU=
 github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY=
 github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY=
 github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ=
 github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ=
@@ -757,26 +775,38 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 h1:HGErhhrx
 github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17/go.mod h1:RkZEx4l0EHYDJpWppMJ3nD9wZJAa8/0lq9aVC+r2UII=
 github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17/go.mod h1:RkZEx4l0EHYDJpWppMJ3nD9wZJAa8/0lq9aVC+r2UII=
 github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18 h1:tJ5RnkHCiSH0jyd6gROjlJtNwov0eGYNz8s8nFcR0jQ=
 github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18 h1:tJ5RnkHCiSH0jyd6gROjlJtNwov0eGYNz8s8nFcR0jQ=
 github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18/go.mod h1:++NHzT+nAF7ZPrHPsA+ENvsXkOO8wEu+C6RXltAG4/c=
 github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.18/go.mod h1:++NHzT+nAF7ZPrHPsA+ENvsXkOO8wEu+C6RXltAG4/c=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19 h1:rfprUlsdzgl7ZL2KlXiUAoJnI/VxfHCvDFr2QDFj6u4=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19/go.mod h1:SCWkEdRq8/7EK60NcvvQ6NXKuTcchAD4ROAsC37VEZE=
 github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.3 h1:dy4sbyGy7BS4c0KaPZwg1P5ZP+lW+auTVcPiwrmbn8M=
 github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.3 h1:dy4sbyGy7BS4c0KaPZwg1P5ZP+lW+auTVcPiwrmbn8M=
 github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.3/go.mod h1:EMgqMhof+RuaYvQavxKC0ZWvP7yB4B4NJhP+dbm13u0=
 github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.3/go.mod h1:EMgqMhof+RuaYvQavxKC0ZWvP7yB4B4NJhP+dbm13u0=
 github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.4 h1:nR4GnokNdp25C6Z6xvXz5VqmzIhp4+aWMcM4w5FhlJ4=
 github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.4 h1:nR4GnokNdp25C6Z6xvXz5VqmzIhp4+aWMcM4w5FhlJ4=
 github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.4/go.mod h1:w/6Ddm5GNEn0uLR6Wc35MGTvUXKDz8uNEMRrrdDB2ps=
 github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.4/go.mod h1:w/6Ddm5GNEn0uLR6Wc35MGTvUXKDz8uNEMRrrdDB2ps=
+github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.6 h1:ea6TO3HgVeVTB2Ie1djyBFWBOc9CohpKbo/QZbGTCJQ=
+github.com/aws/aws-sdk-go-v2/service/lightsail v1.40.6/go.mod h1:D2TUTD3v6AWmE5LzdCXLWNFtoYbSf6IEjKh1ggbuVdw=
 github.com/aws/aws-sdk-go-v2/service/route53 v1.42.3 h1:MmLCRqP4U4Cw9gJ4bNrCG0mWqEtBlmAVleyelcHARMU=
 github.com/aws/aws-sdk-go-v2/service/route53 v1.42.3 h1:MmLCRqP4U4Cw9gJ4bNrCG0mWqEtBlmAVleyelcHARMU=
 github.com/aws/aws-sdk-go-v2/service/route53 v1.42.3/go.mod h1:AMPjK2YnRh0YgOID3PqhJA1BRNfXDfGOnSsKHtAe8yA=
 github.com/aws/aws-sdk-go-v2/service/route53 v1.42.3/go.mod h1:AMPjK2YnRh0YgOID3PqhJA1BRNfXDfGOnSsKHtAe8yA=
 github.com/aws/aws-sdk-go-v2/service/route53 v1.43.0 h1:xtp7jye7KhWu4ptBs5yh1Vep0vLAGSNGmArOUp997DU=
 github.com/aws/aws-sdk-go-v2/service/route53 v1.43.0 h1:xtp7jye7KhWu4ptBs5yh1Vep0vLAGSNGmArOUp997DU=
 github.com/aws/aws-sdk-go-v2/service/route53 v1.43.0/go.mod h1:QN7tFo/W8QjLCR6aPZqMZKaVQJiAp95r/g78x1LWtkA=
 github.com/aws/aws-sdk-go-v2/service/route53 v1.43.0/go.mod h1:QN7tFo/W8QjLCR6aPZqMZKaVQJiAp95r/g78x1LWtkA=
+github.com/aws/aws-sdk-go-v2/service/route53 v1.43.2 h1:957e1/SwXIfPi/0OUJkH9YnPZRe9G6Kisd/xUhF7AUE=
+github.com/aws/aws-sdk-go-v2/service/route53 v1.43.2/go.mod h1:343vcjcyOTuHTBBgUrOxPM36/jE96qLZnGL447ldrB0=
 github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 h1:BXx0ZIxvrJdSgSvKTZ+yRBeSqqgPM89VPlulEcl37tM=
 github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 h1:BXx0ZIxvrJdSgSvKTZ+yRBeSqqgPM89VPlulEcl37tM=
 github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU=
 github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU=
 github.com/aws/aws-sdk-go-v2/service/sso v1.22.5 h1:zCsFCKvbj25i7p1u94imVoO447I/sFv8qq+lGJhRN0c=
 github.com/aws/aws-sdk-go-v2/service/sso v1.22.5 h1:zCsFCKvbj25i7p1u94imVoO447I/sFv8qq+lGJhRN0c=
 github.com/aws/aws-sdk-go-v2/service/sso v1.22.5/go.mod h1:ZeDX1SnKsVlejeuz41GiajjZpRSWR7/42q/EyA/QEiM=
 github.com/aws/aws-sdk-go-v2/service/sso v1.22.5/go.mod h1:ZeDX1SnKsVlejeuz41GiajjZpRSWR7/42q/EyA/QEiM=
+github.com/aws/aws-sdk-go-v2/service/sso v1.22.7 h1:pIaGg+08llrP7Q5aiz9ICWbY8cqhTkyy+0SHvfzQpTc=
+github.com/aws/aws-sdk-go-v2/service/sso v1.22.7/go.mod h1:eEygMHnTKH/3kNp9Jr1n3PdejuSNcgwLe1dWgQtO0VQ=
 github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE=
 github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE=
 github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw=
 github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw=
 github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.5 h1:SKvPgvdvmiTWoi0GAJ7AsJfOz3ngVkD/ERbs5pUnHNI=
 github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.5 h1:SKvPgvdvmiTWoi0GAJ7AsJfOz3ngVkD/ERbs5pUnHNI=
 github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.5/go.mod h1:20sz31hv/WsPa3HhU3hfrIet2kxM4Pe0r20eBZ20Tac=
 github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.5/go.mod h1:20sz31hv/WsPa3HhU3hfrIet2kxM4Pe0r20eBZ20Tac=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.7 h1:/Cfdu0XV3mONYKaOt1Gr0k1KvQzkzPyiKUdlWJqy+J4=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.7/go.mod h1:bCbAxKDqNvkHxRaIMnyVPXPo+OaPRwvmgzMxbz1VKSA=
 github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudrvuKpDKgMVRlepGE=
 github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudrvuKpDKgMVRlepGE=
 github.com/aws/aws-sdk-go-v2/service/sts v1.30.3/go.mod h1:zwySh8fpFyXp9yOr/KVzxOl8SRqgf/IDw5aUt9UKFcQ=
 github.com/aws/aws-sdk-go-v2/service/sts v1.30.3/go.mod h1:zwySh8fpFyXp9yOr/KVzxOl8SRqgf/IDw5aUt9UKFcQ=
 github.com/aws/aws-sdk-go-v2/service/sts v1.30.5 h1:OMsEmCyz2i89XwRwPouAJvhj81wINh+4UK+k/0Yo/q8=
 github.com/aws/aws-sdk-go-v2/service/sts v1.30.5 h1:OMsEmCyz2i89XwRwPouAJvhj81wINh+4UK+k/0Yo/q8=
 github.com/aws/aws-sdk-go-v2/service/sts v1.30.5/go.mod h1:vmSqFK+BVIwVpDAGZB3CoCXHzurt4qBE8lf+I/kRTh0=
 github.com/aws/aws-sdk-go-v2/service/sts v1.30.5/go.mod h1:vmSqFK+BVIwVpDAGZB3CoCXHzurt4qBE8lf+I/kRTh0=
+github.com/aws/aws-sdk-go-v2/service/sts v1.30.7 h1:NKTa1eqZYw8tiHSRGpP0VtTdub/8KNk8sDkNPFaOKDE=
+github.com/aws/aws-sdk-go-v2/service/sts v1.30.7/go.mod h1:NXi1dIAGteSaRLqYgarlhP/Ij0cFT+qmCwiJqWh/U5o=
 github.com/aws/smithy-go v1.20.4 h1:2HK1zBdPgRbjFOHlfeQZfpC4r72MOb9bZkiFwggKO+4=
 github.com/aws/smithy-go v1.20.4 h1:2HK1zBdPgRbjFOHlfeQZfpC4r72MOb9bZkiFwggKO+4=
 github.com/aws/smithy-go v1.20.4/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
 github.com/aws/smithy-go v1.20.4/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
 github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
 github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
@@ -831,11 +861,15 @@ github.com/civo/civogo v0.3.73 h1:thkNnkziU+xh+MEOChIUwRZI1forN20+SSAPe/VFDME=
 github.com/civo/civogo v0.3.73/go.mod h1:7UCYX+qeeJbrG55E1huv+0ySxcHTqq/26FcHLVelQJM=
 github.com/civo/civogo v0.3.73/go.mod h1:7UCYX+qeeJbrG55E1huv+0ySxcHTqq/26FcHLVelQJM=
 github.com/civo/civogo v0.3.75 h1:hrF+ALGDV5Be/jG9NmDo2wLhL4yuD8kIOxUbVRklGNU=
 github.com/civo/civogo v0.3.75 h1:hrF+ALGDV5Be/jG9NmDo2wLhL4yuD8kIOxUbVRklGNU=
 github.com/civo/civogo v0.3.75/go.mod h1:7UCYX+qeeJbrG55E1huv+0ySxcHTqq/26FcHLVelQJM=
 github.com/civo/civogo v0.3.75/go.mod h1:7UCYX+qeeJbrG55E1huv+0ySxcHTqq/26FcHLVelQJM=
+github.com/civo/civogo v0.3.77 h1:1rl5cpQruPhh+w8BBMpGQsaovjDvA44udPoDTAa45rk=
+github.com/civo/civogo v0.3.77/go.mod h1:7UCYX+qeeJbrG55E1huv+0ySxcHTqq/26FcHLVelQJM=
 github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
 github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
 github.com/cloudflare/cloudflare-go v0.102.0 h1:+0MGbkirM/yzVLOYpWMgW7CDdKzesSbdwA2Y+rABrWI=
 github.com/cloudflare/cloudflare-go v0.102.0 h1:+0MGbkirM/yzVLOYpWMgW7CDdKzesSbdwA2Y+rABrWI=
 github.com/cloudflare/cloudflare-go v0.102.0/go.mod h1:BOB41tXf31ti/qtBO9paYhyapotQbGRDbQoLOAF7pSg=
 github.com/cloudflare/cloudflare-go v0.102.0/go.mod h1:BOB41tXf31ti/qtBO9paYhyapotQbGRDbQoLOAF7pSg=
 github.com/cloudflare/cloudflare-go v0.103.0 h1:XXKzgXeUbAo7UTtM4T5wuD2bJPBtNZv7TlZAEy5QI4k=
 github.com/cloudflare/cloudflare-go v0.103.0 h1:XXKzgXeUbAo7UTtM4T5wuD2bJPBtNZv7TlZAEy5QI4k=
 github.com/cloudflare/cloudflare-go v0.103.0/go.mod h1:0DrjT4g8wgYFYIxhlqR8xi8dNWfyHFGilUkU3+XV8h0=
 github.com/cloudflare/cloudflare-go v0.103.0/go.mod h1:0DrjT4g8wgYFYIxhlqR8xi8dNWfyHFGilUkU3+XV8h0=
+github.com/cloudflare/cloudflare-go v0.104.0 h1:R/lB0dZupaZbOgibAH/BRrkFbZ6Acn/WsKg2iX2xXuY=
+github.com/cloudflare/cloudflare-go v0.104.0/go.mod h1:pfUQ4PIG4ISI0/Mmc21Bp86UnFU0ktmPf3iTgbSL+cM=
 github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
 github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
 github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
 github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
 github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
 github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
@@ -985,8 +1019,12 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn
 github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
 github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
 github.com/go-playground/validator/v10 v10.22.0 h1:k6HsTZ0sTnROkhS//R0O+55JgM8C4Bx7ia+JlgcnOao=
 github.com/go-playground/validator/v10 v10.22.0 h1:k6HsTZ0sTnROkhS//R0O+55JgM8C4Bx7ia+JlgcnOao=
 github.com/go-playground/validator/v10 v10.22.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
 github.com/go-playground/validator/v10 v10.22.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
+github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27HYW8P9FDk5PbgA=
+github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
 github.com/go-resty/resty/v2 v2.14.0 h1:/rhkzsAqGQkozwfKS5aFAbb6TyKd3zyFRWcdRXLPCAU=
 github.com/go-resty/resty/v2 v2.14.0 h1:/rhkzsAqGQkozwfKS5aFAbb6TyKd3zyFRWcdRXLPCAU=
 github.com/go-resty/resty/v2 v2.14.0/go.mod h1:IW6mekUOsElt9C7oWr0XRt9BNSD6D5rr9mhk6NjmNHg=
 github.com/go-resty/resty/v2 v2.14.0/go.mod h1:IW6mekUOsElt9C7oWr0XRt9BNSD6D5rr9mhk6NjmNHg=
+github.com/go-resty/resty/v2 v2.15.0 h1:clPQLZ2x9h4yGY81IzpMPnty+xoGyFaDg0XMkCsHf90=
+github.com/go-resty/resty/v2 v2.15.0/go.mod h1:0fHAoK7JoBy/Ch36N8VFeMsK7xQOHhvWaC3iOktwmIU=
 github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
 github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
 github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
 github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
 github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
 github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
@@ -1140,6 +1178,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF
 github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
 github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
 github.com/googleapis/enterprise-certificate-proxy v0.3.3 h1:QRje2j5GZimBzlbhGA2V2QlGNgL8G6e+wGo/+/2bWI0=
 github.com/googleapis/enterprise-certificate-proxy v0.3.3 h1:QRje2j5GZimBzlbhGA2V2QlGNgL8G6e+wGo/+/2bWI0=
 github.com/googleapis/enterprise-certificate-proxy v0.3.3/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA=
 github.com/googleapis/enterprise-certificate-proxy v0.3.3/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA=
+github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw=
+github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA=
 github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
 github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
 github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
 github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
 github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
 github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
@@ -1356,6 +1396,8 @@ github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae h1:dIZY4ULFcto4tA
 github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k=
 github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k=
 github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7 h1:5RK988zAqB3/AN3opGfRpoQgAVqr6/A5+qRTi67VUZY=
 github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7 h1:5RK988zAqB3/AN3opGfRpoQgAVqr6/A5+qRTi67VUZY=
 github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k=
 github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k=
+github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 h1:7UMa6KCCMjZEMDtTVdcGu0B1GmmC7QJKiCCjyTAWQy0=
+github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k=
 github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA=
 github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA=
 github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA=
 github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA=
 github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o=
 github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o=
@@ -1391,6 +1433,8 @@ github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S
 github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
 github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
 github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
 github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
 github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
 github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
+github.com/mattn/go-sqlite3 v1.14.23 h1:gbShiuAP1W5j9UOksQ06aiiqPMxYecovVGwmTxWtuw0=
+github.com/mattn/go-sqlite3 v1.14.23/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
 github.com/mattn/go-tty v0.0.3/go.mod h1:ihxohKRERHTVzN+aSVRwACLCeqIoZAWpoICkkvrWyR0=
 github.com/mattn/go-tty v0.0.3/go.mod h1:ihxohKRERHTVzN+aSVRwACLCeqIoZAWpoICkkvrWyR0=
 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 github.com/maxatome/go-testdeep v1.12.0 h1:Ql7Go8Tg0C1D/uMMX59LAoYK7LffeJQ6X2T04nTH68g=
 github.com/maxatome/go-testdeep v1.12.0 h1:Ql7Go8Tg0C1D/uMMX59LAoYK7LffeJQ6X2T04nTH68g=
@@ -1595,8 +1639,12 @@ github.com/sashabaranov/go-openai v1.29.0 h1:eBH6LSjtX4md5ImDCX8hNhHQvaRf22zujiE
 github.com/sashabaranov/go-openai v1.29.0/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
 github.com/sashabaranov/go-openai v1.29.0/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
 github.com/sashabaranov/go-openai v1.29.1 h1:AlB+vwpg1tibwr83OKXLsI4V1rnafVyTlw0BjR+6WUM=
 github.com/sashabaranov/go-openai v1.29.1 h1:AlB+vwpg1tibwr83OKXLsI4V1rnafVyTlw0BjR+6WUM=
 github.com/sashabaranov/go-openai v1.29.1/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
 github.com/sashabaranov/go-openai v1.29.1/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
+github.com/sashabaranov/go-openai v1.29.2 h1:jYpp1wktFoOvxHnum24f/w4+DFzUdJnu83trr5+Slh0=
+github.com/sashabaranov/go-openai v1.29.2/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
 github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29 h1:BkTk4gynLjguayxrYxZoMZjBnAOh7ntQvUkOFmkMqPU=
 github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29 h1:BkTk4gynLjguayxrYxZoMZjBnAOh7ntQvUkOFmkMqPU=
 github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg=
 github.com/scaleway/scaleway-sdk-go v1.0.0-beta.29/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg=
+github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30 h1:yoKAVkEVwAqbGbR8n87rHQ1dulL25rKloGadb3vm770=
+github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30/go.mod h1:sH0u6fq6x4R5M7WxkoQFY/o7UaiItec0o1LinLCJNq8=
 github.com/schollz/closestmatch v2.1.0+incompatible h1:Uel2GXEpJqOWBrlyI+oY9LTiyyjYS17cCYRqP13/SHk=
 github.com/schollz/closestmatch v2.1.0+incompatible h1:Uel2GXEpJqOWBrlyI+oY9LTiyyjYS17cCYRqP13/SHk=
 github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g=
 github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g=
 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
@@ -1696,12 +1744,16 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.991 h1:0Xg2
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.991/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.991/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.993 h1:+iJMmF0q1MPyhLs0+J7CcJ47w/vq6ICsCxnV4gc0dKw=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.993 h1:+iJMmF0q1MPyhLs0+J7CcJ47w/vq6ICsCxnV4gc0dKw=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.993/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.993/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1002 h1:RE84sHFFx6t24DJvSnF9fS1DzBNv9OpctzHK3t7AY+I=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1002/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.984 h1:ABZeSsOOkkBn+gToVp8KkMt4E69hQkBMEFegCD4w15Q=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.984 h1:ABZeSsOOkkBn+gToVp8KkMt4E69hQkBMEFegCD4w15Q=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.984/go.mod h1:r++X8dKvTZWltr4J83TIwqGlyvG5fKaVh7RGC2+BryI=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.984/go.mod h1:r++X8dKvTZWltr4J83TIwqGlyvG5fKaVh7RGC2+BryI=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.991 h1:GTf6Cp2beg/zfxuhj5qwEHrR1AhBJrk+CYGzt6pRxJo=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.991 h1:GTf6Cp2beg/zfxuhj5qwEHrR1AhBJrk+CYGzt6pRxJo=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.991/go.mod h1:9v9MJPZQHh7XMr7cESUHcIXpIJb/sFtp++OsanrwhaU=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.991/go.mod h1:9v9MJPZQHh7XMr7cESUHcIXpIJb/sFtp++OsanrwhaU=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.993 h1:x2nkr/Kok+DV1K1DHqnvNgZTXDjOZVgkBXwtqVptKWk=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.993 h1:x2nkr/Kok+DV1K1DHqnvNgZTXDjOZVgkBXwtqVptKWk=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.993/go.mod h1:lEQPVB5HPTf8LU4EE9C7VpYtOwM0xpaFQerX0b+a9Z4=
 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.993/go.mod h1:lEQPVB5HPTf8LU4EE9C7VpYtOwM0xpaFQerX0b+a9Z4=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1002 h1:QwE0dRkAAbdf+eACnkNULgDn9ZKUJpPWRyXdqJolP5E=
+github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1002/go.mod h1:WdC0FYbqYhJwQ3kbqri6hVP5HAEp+rzX9FToItTAzUg=
 github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU=
 github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU=
 github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY=
 github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY=
 github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY=
 github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY=
@@ -1722,6 +1774,8 @@ github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65E
 github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
 github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
 github.com/ultradns/ultradns-go-sdk v1.6.2-20240501171831-432d643 h1:Y2gOdFNdP0QrXN7HkhrT42686bxBmDPqq5Xu8RgeU2s=
 github.com/ultradns/ultradns-go-sdk v1.6.2-20240501171831-432d643 h1:Y2gOdFNdP0QrXN7HkhrT42686bxBmDPqq5Xu8RgeU2s=
 github.com/ultradns/ultradns-go-sdk v1.6.2-20240501171831-432d643/go.mod h1:mqka31zT/P4yfNKj1qbOXUqamham/YO05GgUc/dOrl8=
 github.com/ultradns/ultradns-go-sdk v1.6.2-20240501171831-432d643/go.mod h1:mqka31zT/P4yfNKj1qbOXUqamham/YO05GgUc/dOrl8=
+github.com/ultradns/ultradns-go-sdk v1.7.0-20240913052650-970ca9a h1:R6IR+Vj/RnGZLnX8PpPQsbbQthctO7Ah2q4tj5eoe2o=
+github.com/ultradns/ultradns-go-sdk v1.7.0-20240913052650-970ca9a/go.mod h1:BZr7Qs3ku1ckpqed8tCRSqTlp8NAeZfAVpfx4OzXMss=
 github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
 github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
 github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
 github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
 github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
 github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
@@ -1753,12 +1807,16 @@ github.com/yandex-cloud/go-genproto v0.0.0-20240819112322-98a264d392f6 h1:w57l27
 github.com/yandex-cloud/go-genproto v0.0.0-20240819112322-98a264d392f6/go.mod h1:HEUYX/p8966tMUHHT+TsS0hF/Ca/NYwqprC5WXSDMfE=
 github.com/yandex-cloud/go-genproto v0.0.0-20240819112322-98a264d392f6/go.mod h1:HEUYX/p8966tMUHHT+TsS0hF/Ca/NYwqprC5WXSDMfE=
 github.com/yandex-cloud/go-genproto v0.0.0-20240829130658-0568052c5a6a h1:GCVnt5H4CB4np3ReSNH0GpBg5HDaLz1rZKnjhQjQGL4=
 github.com/yandex-cloud/go-genproto v0.0.0-20240829130658-0568052c5a6a h1:GCVnt5H4CB4np3ReSNH0GpBg5HDaLz1rZKnjhQjQGL4=
 github.com/yandex-cloud/go-genproto v0.0.0-20240829130658-0568052c5a6a/go.mod h1:HEUYX/p8966tMUHHT+TsS0hF/Ca/NYwqprC5WXSDMfE=
 github.com/yandex-cloud/go-genproto v0.0.0-20240829130658-0568052c5a6a/go.mod h1:HEUYX/p8966tMUHHT+TsS0hF/Ca/NYwqprC5WXSDMfE=
+github.com/yandex-cloud/go-genproto v0.0.0-20240911120709-1fa0cb6f47c2 h1:WgeEP+8WizCQyccJNHOMLONq23qVAzYHtyg5qTdUWmg=
+github.com/yandex-cloud/go-genproto v0.0.0-20240911120709-1fa0cb6f47c2/go.mod h1:HEUYX/p8966tMUHHT+TsS0hF/Ca/NYwqprC5WXSDMfE=
 github.com/yandex-cloud/go-sdk v0.0.0-20240813144531-905aa41b481f h1:oetXcQPVH/CfyBD5MXnxOQY7IFvhTZpLLQKKLmTVRPM=
 github.com/yandex-cloud/go-sdk v0.0.0-20240813144531-905aa41b481f h1:oetXcQPVH/CfyBD5MXnxOQY7IFvhTZpLLQKKLmTVRPM=
 github.com/yandex-cloud/go-sdk v0.0.0-20240813144531-905aa41b481f/go.mod h1:9sGM6Epw7DGLLs57/XVQzzwY1ZRP3U5xyqg8j8wdn3M=
 github.com/yandex-cloud/go-sdk v0.0.0-20240813144531-905aa41b481f/go.mod h1:9sGM6Epw7DGLLs57/XVQzzwY1ZRP3U5xyqg8j8wdn3M=
 github.com/yandex-cloud/go-sdk v0.0.0-20240819112606-8a626cdc403d h1:eYs6TKjvjzYgAar7n2Ic4a+jIP08IfswtvCZ8iJqdKk=
 github.com/yandex-cloud/go-sdk v0.0.0-20240819112606-8a626cdc403d h1:eYs6TKjvjzYgAar7n2Ic4a+jIP08IfswtvCZ8iJqdKk=
 github.com/yandex-cloud/go-sdk v0.0.0-20240819112606-8a626cdc403d/go.mod h1:WYdfvXcvRn3kbVcwpav4J3jd1STOYtYvkTqx0wm4leM=
 github.com/yandex-cloud/go-sdk v0.0.0-20240819112606-8a626cdc403d/go.mod h1:WYdfvXcvRn3kbVcwpav4J3jd1STOYtYvkTqx0wm4leM=
 github.com/yandex-cloud/go-sdk v0.0.0-20240829131820-fa8ad79f88a4 h1:l9x2SuRwFBvCTZvIlr8JqnjrHlr0a2UF/m/zdGnl+cs=
 github.com/yandex-cloud/go-sdk v0.0.0-20240829131820-fa8ad79f88a4 h1:l9x2SuRwFBvCTZvIlr8JqnjrHlr0a2UF/m/zdGnl+cs=
 github.com/yandex-cloud/go-sdk v0.0.0-20240829131820-fa8ad79f88a4/go.mod h1:/kMfiARiUXWqYG9EX1g5cZuvW+vY5M/oFROiUg0na+0=
 github.com/yandex-cloud/go-sdk v0.0.0-20240829131820-fa8ad79f88a4/go.mod h1:/kMfiARiUXWqYG9EX1g5cZuvW+vY5M/oFROiUg0na+0=
+github.com/yandex-cloud/go-sdk v0.0.0-20240911121212-e4e74d0d02f5 h1:Q4LvUMF4kzaGtopoIdXReL9/qGtmzOewBhF3dQvuHMU=
+github.com/yandex-cloud/go-sdk v0.0.0-20240911121212-e4e74d0d02f5/go.mod h1:9dt2V80cfJGRZA+5SKP3Ky+R/DxH02XfKObi2Uy2uPc=
 github.com/yosssi/ace v0.0.5 h1:tUkIP/BLdKqrlrPwcmH0shwEEhTRHoGnc1wFIWmaBUA=
 github.com/yosssi/ace v0.0.5 h1:tUkIP/BLdKqrlrPwcmH0shwEEhTRHoGnc1wFIWmaBUA=
 github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0=
 github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0=
 github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA=
 github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA=
@@ -1796,18 +1854,26 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIX
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg=
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg=
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk=
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk=
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8=
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 h1:ZIg3ZT/aQ7AfKqdwp7ECpOK6vHqquXXuyTjIO8ZdmPs=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0/go.mod h1:DQAwmETtZV00skUwgD6+0U89g80NKsJE3DCKeLLPQMI=
 go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo=
 go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo=
 go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4=
 go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4=
 go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw=
 go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw=
 go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8=
 go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8=
+go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts=
+go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc=
 go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q=
 go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q=
 go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s=
 go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s=
 go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc=
 go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc=
 go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8=
 go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8=
+go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w=
+go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ=
 go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g=
 go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g=
 go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI=
 go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI=
 go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4=
 go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4=
 go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ=
 go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ=
+go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc=
+go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o=
 go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
 go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
 go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
 go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
@@ -1833,6 +1899,8 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
 go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
 go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
 golang.org/x/arch v0.9.0 h1:ub9TgUInamJ8mrZIGlBG6/4TqWeMszd4N8lNorbrr6k=
 golang.org/x/arch v0.9.0 h1:ub9TgUInamJ8mrZIGlBG6/4TqWeMszd4N8lNorbrr6k=
 golang.org/x/arch v0.9.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
 golang.org/x/arch v0.9.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
+golang.org/x/arch v0.10.0 h1:S3huipmSclq3PJMNe76NGwkBR504WFkQ5dhzWzP8ZW8=
+golang.org/x/arch v0.10.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
 golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
@@ -1861,6 +1929,8 @@ golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v
 golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
 golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
 golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
 golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
 golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
 golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
+golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A=
+golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70=
 golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1880,6 +1950,8 @@ golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDT
 golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
 golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
 golang.org/x/exp v0.0.0-20240823005443-9b4947da3948 h1:kx6Ds3MlpiUHKj7syVnbp57++8WpuKPcR5yjLBjvLEA=
 golang.org/x/exp v0.0.0-20240823005443-9b4947da3948 h1:kx6Ds3MlpiUHKj7syVnbp57++8WpuKPcR5yjLBjvLEA=
 golang.org/x/exp v0.0.0-20240823005443-9b4947da3948/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
 golang.org/x/exp v0.0.0-20240823005443-9b4947da3948/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
+golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk=
+golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY=
 golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
 golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
 golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
 golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
 golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
 golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
@@ -1927,6 +1999,8 @@ golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
 golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
 golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
 golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
 golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
 golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
 golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
+golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -2006,6 +2080,8 @@ golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
 golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
 golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
 golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
 golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
 golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
 golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
+golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
+golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -2037,6 +2113,8 @@ golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw
 golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
 golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
 golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA=
 golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA=
 golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
 golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
+golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -2178,6 +2256,8 @@ golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
 golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
 golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
+golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
 golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -2219,6 +2299,8 @@ golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
 golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
 golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
 golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
 golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
 golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
 golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
+golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
+golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -2300,6 +2382,8 @@ golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58
 golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
 golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
 golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
 golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
 golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
 golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
+golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE=
+golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -2380,6 +2464,8 @@ google.golang.org/api v0.194.0 h1:dztZKG9HgtIpbI35FhfuSNR/zmaMVdxNlntHj1sIS4s=
 google.golang.org/api v0.194.0/go.mod h1:AgvUFdojGANh3vI+P7EVnxj3AISHllxGCJSFmggmnd0=
 google.golang.org/api v0.194.0/go.mod h1:AgvUFdojGANh3vI+P7EVnxj3AISHllxGCJSFmggmnd0=
 google.golang.org/api v0.195.0 h1:Ude4N8FvTKnnQJHU48RFI40jOBgIrL8Zqr3/QeST6yU=
 google.golang.org/api v0.195.0 h1:Ude4N8FvTKnnQJHU48RFI40jOBgIrL8Zqr3/QeST6yU=
 google.golang.org/api v0.195.0/go.mod h1:DOGRWuv3P8TU8Lnz7uQc4hyNqrBpMtD9ppW3wBJurgc=
 google.golang.org/api v0.195.0/go.mod h1:DOGRWuv3P8TU8Lnz7uQc4hyNqrBpMtD9ppW3wBJurgc=
+google.golang.org/api v0.197.0 h1:x6CwqQLsFiA5JKAiGyGBjc2bNtHtLddhJCE2IKuhhcQ=
+google.golang.org/api v0.197.0/go.mod h1:AuOuo20GoQ331nq7DquGHlU6d+2wN2fZ8O0ta60nRNw=
 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
 google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -2526,18 +2612,24 @@ google.golang.org/genproto v0.0.0-20240826202546-f6391c0de4c7 h1:f9Ho9PuVgvteqb4
 google.golang.org/genproto v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:ICjniACoWvcDz8c8bOsHVKuuSGDJy1z5M4G0DM3HzTc=
 google.golang.org/genproto v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:ICjniACoWvcDz8c8bOsHVKuuSGDJy1z5M4G0DM3HzTc=
 google.golang.org/genproto v0.0.0-20240827150818-7e3bb234dfed h1:4C4dbrVFtfIp3GXJdMX1Sj25mahfn5DywOo65/2ISQ8=
 google.golang.org/genproto v0.0.0-20240827150818-7e3bb234dfed h1:4C4dbrVFtfIp3GXJdMX1Sj25mahfn5DywOo65/2ISQ8=
 google.golang.org/genproto v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:ICjniACoWvcDz8c8bOsHVKuuSGDJy1z5M4G0DM3HzTc=
 google.golang.org/genproto v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:ICjniACoWvcDz8c8bOsHVKuuSGDJy1z5M4G0DM3HzTc=
+google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU=
+google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4=
 google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8=
 google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8=
 google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo=
 google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo=
 google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7 h1:YcyjlL1PRr2Q17/I0dPk2JmYS5CDXfcdb2Z3YRioEbw=
 google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7 h1:YcyjlL1PRr2Q17/I0dPk2JmYS5CDXfcdb2Z3YRioEbw=
 google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo=
 google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo=
 google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed h1:3RgNmBoI9MZhsj3QxC+AP/qQhNwpCLOvYDYYsFrhFt0=
 google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed h1:3RgNmBoI9MZhsj3QxC+AP/qQhNwpCLOvYDYYsFrhFt0=
 google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo=
 google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo=
+google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc=
+google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7 h1:2035KHhUv+EpyB+hWgJnaWKJOdX1E95w2S8Rr4uWKTs=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7 h1:2035KHhUv+EpyB+hWgJnaWKJOdX1E95w2S8Rr4uWKTs=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed h1:J6izYgfBXAI3xTKLgxzTmUltdYaLsuBxFCgDHWJ/eXg=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed h1:J6izYgfBXAI3xTKLgxzTmUltdYaLsuBxFCgDHWJ/eXg=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
 google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
 google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
 google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
 google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
 google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
 google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
@@ -2584,6 +2676,8 @@ google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
 google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
 google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
 google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c=
 google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c=
 google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
 google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
+google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo=
+google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
 google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
 google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -2648,6 +2742,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gorm.io/datatypes v1.2.1 h1:r+g0bk4LPCW2v4+Ls7aeNgGme7JYdNDQ2VtvlNUfBh0=
 gorm.io/datatypes v1.2.1 h1:r+g0bk4LPCW2v4+Ls7aeNgGme7JYdNDQ2VtvlNUfBh0=
 gorm.io/datatypes v1.2.1/go.mod h1:hYK6OTb/1x+m96PgoZZq10UXJ6RvEBb9kRDQ2yyhzGs=
 gorm.io/datatypes v1.2.1/go.mod h1:hYK6OTb/1x+m96PgoZZq10UXJ6RvEBb9kRDQ2yyhzGs=
+gorm.io/datatypes v1.2.2 h1:sdn7ZmG4l7JWtMDUb3L98f2Ym7CO5F8mZLlrQJMfF9g=
+gorm.io/datatypes v1.2.2/go.mod h1:f4BsLcFAX67szSv8svwLRjklArSHAvHLeE3pXAS5DZI=
 gorm.io/driver/mysql v1.5.6/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
 gorm.io/driver/mysql v1.5.6/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
 gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo=
 gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo=
 gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
 gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
@@ -2665,10 +2761,14 @@ gorm.io/gorm v1.25.0/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
 gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
 gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
 gorm.io/gorm v1.25.11 h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg=
 gorm.io/gorm v1.25.11 h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg=
 gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
 gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
+gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8=
+gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
 gorm.io/hints v1.1.2 h1:b5j0kwk5p4+3BtDtYqqfY+ATSxjj+6ptPgVveuynn9o=
 gorm.io/hints v1.1.2 h1:b5j0kwk5p4+3BtDtYqqfY+ATSxjj+6ptPgVveuynn9o=
 gorm.io/hints v1.1.2/go.mod h1:/ARdpUHAtyEMCh5NNi3tI7FsGh+Cj/MIUlvNxCNCFWg=
 gorm.io/hints v1.1.2/go.mod h1:/ARdpUHAtyEMCh5NNi3tI7FsGh+Cj/MIUlvNxCNCFWg=
 gorm.io/plugin/dbresolver v1.5.2 h1:Iut7lW4TXNoVs++I+ra3zxjSxTRj4ocIeFEVp4lLhII=
 gorm.io/plugin/dbresolver v1.5.2 h1:Iut7lW4TXNoVs++I+ra3zxjSxTRj4ocIeFEVp4lLhII=
 gorm.io/plugin/dbresolver v1.5.2/go.mod h1:jPh59GOQbO7v7v28ZKZPd45tr+u3vyT+8tHdfdfOWcU=
 gorm.io/plugin/dbresolver v1.5.2/go.mod h1:jPh59GOQbO7v7v28ZKZPd45tr+u3vyT+8tHdfdfOWcU=
+gorm.io/plugin/dbresolver v1.5.3 h1:wFwINGZZmttuu9h7XpvbDHd8Lf9bb8GNzp/NpAMV2wU=
+gorm.io/plugin/dbresolver v1.5.3/go.mod h1:TSrVhaUg2DZAWP3PrHlDlITEJmNOkL0tFTjvTEsQ4XE=
 gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o=
 gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o=
 gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g=
 gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -2681,8 +2781,12 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9
 honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=
 honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=
 k8s.io/api v0.31.0 h1:b9LiSjR2ym/SzTOlfMHm1tr7/21aD7fSkqgD/CVJBCo=
 k8s.io/api v0.31.0 h1:b9LiSjR2ym/SzTOlfMHm1tr7/21aD7fSkqgD/CVJBCo=
 k8s.io/api v0.31.0/go.mod h1:0YiFF+JfFxMM6+1hQei8FY8M7s1Mth+z/q7eF1aJkTE=
 k8s.io/api v0.31.0/go.mod h1:0YiFF+JfFxMM6+1hQei8FY8M7s1Mth+z/q7eF1aJkTE=
+k8s.io/api v0.31.1 h1:Xe1hX/fPW3PXYYv8BlozYqw63ytA92snr96zMW9gWTU=
+k8s.io/api v0.31.1/go.mod h1:sbN1g6eY6XVLeqNsZGLnI5FwVseTrZX7Fv3O26rhAaI=
 k8s.io/apimachinery v0.31.0 h1:m9jOiSr3FoSSL5WO9bjm1n6B9KROYYgNZOb4tyZ1lBc=
 k8s.io/apimachinery v0.31.0 h1:m9jOiSr3FoSSL5WO9bjm1n6B9KROYYgNZOb4tyZ1lBc=
 k8s.io/apimachinery v0.31.0/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo=
 k8s.io/apimachinery v0.31.0/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo=
+k8s.io/apimachinery v0.31.1 h1:mhcUBbj7KUjaVhyXILglcVjuS4nYXiwC+KKFBgIVy7U=
+k8s.io/apimachinery v0.31.1/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo=
 k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
 k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
 k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
 k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
 k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A=
 k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A=