@openc3/vue-common 6.5.1 → 6.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ArrayWidget-Bb_Ldxq7.cjs.map +1 -1
- package/dist/ArrayWidget-Ck6pzAyW.js.map +1 -1
- package/dist/ArrayplotWidget-DC41cpv1.cjs.map +1 -1
- package/dist/ArrayplotWidget-ntRLh6-B.js.map +1 -1
- package/dist/AstroStatus-CILMWL6F.cjs.map +1 -1
- package/dist/AstroStatus-CY9VkeTN.js.map +1 -1
- package/dist/BarColumn-Bgz2YJ59.js.map +1 -1
- package/dist/BarColumn-DtRNuOpa.cjs.map +1 -1
- package/dist/BlockWidget-DGH3Zz5p.js.map +1 -1
- package/dist/BlockWidget-DOY5lVfa.cjs.map +1 -1
- package/dist/ButtonWidget-CFyZXGt6.cjs.map +1 -1
- package/dist/ButtonWidget-D_tupiPB.js.map +1 -1
- package/dist/CanvasWidget-C6dc7mUw.cjs.map +1 -1
- package/dist/CanvasWidget-CzG2jYQb.js.map +1 -1
- package/dist/CanvasimageWidget-CNJlzLqo.js.map +1 -1
- package/dist/CanvasimageWidget-DjvdDCRS.cjs.map +1 -1
- package/dist/CanvasimagevalueWidget-C1fI-ftP.cjs.map +1 -1
- package/dist/CanvasimagevalueWidget-DudwwOD6.js.map +1 -1
- package/dist/CanvaslabelWidget--6Sjc4E8.cjs.map +1 -1
- package/dist/CanvaslabelWidget-BZQp16dH.js.map +1 -1
- package/dist/CanvaslabelvalueWidget-CHS36Te9.js.map +1 -1
- package/dist/CanvaslabelvalueWidget-DZCxsIKk.cjs.map +1 -1
- package/dist/CanvaslineWidget-Bn83Rb10.cjs.map +1 -1
- package/dist/CanvaslineWidget-nhKEAGhs.js.map +1 -1
- package/dist/CanvaslinevalueWidget-C6x_4Gc9.cjs.map +1 -1
- package/dist/CanvaslinevalueWidget-DsyIDkJy.js.map +1 -1
- package/dist/CheckbuttonWidget-BvggsGZY.cjs.map +1 -1
- package/dist/CheckbuttonWidget-DCam7Jd0.js.map +1 -1
- package/dist/ComboboxWidget-BS5WSbrK.cjs.map +1 -1
- package/dist/ComboboxWidget-ZX-k-_aK.js.map +1 -1
- package/dist/CriticalCmdDialog-7tOK2XQk.cjs.map +1 -1
- package/dist/CriticalCmdDialog-Dylpoz_4.js.map +1 -1
- package/dist/CustomIcon-Bop2mEnu.cjs.map +1 -1
- package/dist/CustomIcon-h5X7369N.js.map +1 -1
- package/dist/DateWidget-DuJ5uC2t.js.map +1 -1
- package/dist/DateWidget-jejbk2-G.cjs.map +1 -1
- package/dist/DetailsDialog-BQE0TraI.js.map +1 -1
- package/dist/DetailsDialog-DmKpPDNn.cjs.map +1 -1
- package/dist/DynamicWidget-BWEVCUfd.cjs.map +1 -1
- package/dist/DynamicWidget-CfMtj7H8.js.map +1 -1
- package/dist/EventListDialog-CDcJcxy5.cjs.map +1 -1
- package/dist/EventListDialog-CGUFCrJF.js.map +1 -1
- package/dist/FormatvalueWidget-DYICPNcx.js.map +1 -1
- package/dist/FormatvalueWidget-wu7Q3sXu.cjs.map +1 -1
- package/dist/Graph-DCihpnT0.js.map +1 -1
- package/dist/Graph-mSqImgca.cjs.map +1 -1
- package/dist/GraphWidget-CQjKAMPR.cjs.map +1 -1
- package/dist/GraphWidget-cTVq29cY.js.map +1 -1
- package/dist/HorizontalWidget--AkRJPlL.cjs.map +1 -1
- package/dist/HorizontalWidget-v1pfd94Z.js.map +1 -1
- package/dist/HorizontalboxWidget-B06-c_n4.js.map +1 -1
- package/dist/HorizontalboxWidget-synL-Bar.cjs.map +1 -1
- package/dist/IframeWidget-ByhwW9yG.cjs.map +1 -1
- package/dist/IframeWidget-n8lNXrpt.js.map +1 -1
- package/dist/ImageLoader-CfcErydq.js.map +1 -1
- package/dist/ImageLoader-DBWVFtNu.cjs.map +1 -1
- package/dist/ImageviewerWidget-D4mU6wLX.cjs.map +1 -1
- package/dist/ImageviewerWidget-DE8fj06Z.js.map +1 -1
- package/dist/InterfacesTab-BF-Wx5gk.js.map +1 -1
- package/dist/InterfacesTab-DTAAIx-y.cjs.map +1 -1
- package/dist/LabelWidget-DQZqRxKF.cjs.map +1 -1
- package/dist/LabelWidget-iUIJLhdA.js.map +1 -1
- package/dist/LabelledWidget-9HWChRmv.cjs.map +1 -1
- package/dist/LabelledWidget-KI6fMlsr.js.map +1 -1
- package/dist/LabelprogressbarWidget-C2lzmqBH.js.map +1 -1
- package/dist/LabelprogressbarWidget-DwzTP73u.cjs.map +1 -1
- package/dist/LabelsparklineWidget-Ci6GGm29.js.map +1 -1
- package/dist/LabelsparklineWidget-DMjBshq8.cjs.map +1 -1
- package/dist/LabelvalueWidget-mAb0eLA8.cjs.map +1 -1
- package/dist/LabelvalueWidget-oiW-JDw6.js.map +1 -1
- package/dist/LabelvaluedescWidget-CZJ0kZN-.cjs.map +1 -1
- package/dist/LabelvaluedescWidget-Ck0AJ9g0.js.map +1 -1
- package/dist/LabelvaluelimitsbarWidget-DjBqYxRr.cjs.map +1 -1
- package/dist/LabelvaluelimitsbarWidget-aaVLaejn.js.map +1 -1
- package/dist/LabelvaluerangebarWidget-Bs9locqu.js.map +1 -1
- package/dist/LabelvaluerangebarWidget-Ci-n_hxk.cjs.map +1 -1
- package/dist/LedWidget-BN8IgAxJ.js.map +1 -1
- package/dist/LedWidget-BUTbyEBi.cjs.map +1 -1
- package/dist/LimitsbarWidget-BxxoKTjp.js.map +1 -1
- package/dist/LimitsbarWidget-Co5GAHro.cjs.map +1 -1
- package/dist/LimitscolorWidget-BpTcgqRC.cjs.map +1 -1
- package/dist/LimitscolorWidget-DFDwf4In.js.map +1 -1
- package/dist/LimitscolumnWidget-CdBh2mJu.js.map +1 -1
- package/dist/LimitscolumnWidget-CqJJKDzz.cjs.map +1 -1
- package/dist/MatrixbycolumnsWidget-DCwxPjwS.js.map +1 -1
- package/dist/MatrixbycolumnsWidget-DxRhvPGv.cjs.map +1 -1
- package/dist/MicroservicesTab-B-SdMwek.js.map +1 -1
- package/dist/MicroservicesTab-DGaTcj-y.cjs.map +1 -1
- package/dist/Openc3Screen-BZN0Wtrm.js.map +1 -1
- package/dist/Openc3Screen-dtpBWZdA.cjs.map +1 -1
- package/dist/OutputDialog-CcSp-Uqo.js.map +1 -1
- package/dist/OutputDialog-CxKDhrg6.cjs.map +1 -1
- package/dist/PackagesTab-B4V2n4io.cjs.map +1 -1
- package/dist/PackagesTab-Dx25CfF0.js.map +1 -1
- package/dist/PluginsTab-DHO1tK2S.cjs.map +1 -1
- package/dist/PluginsTab-lHDR5v6S.js.map +1 -1
- package/dist/ProgressbarWidget-C0AkbX_o.cjs.map +1 -1
- package/dist/ProgressbarWidget-Cdu5nJC3.js.map +1 -1
- package/dist/RadiobuttonWidget-CZZGbvdG.js.map +1 -1
- package/dist/RadiobuttonWidget-DslmJO31.cjs.map +1 -1
- package/dist/RadiogroupWidget-CQN3v8Ip.js.map +1 -1
- package/dist/RadiogroupWidget-DKgBAR9E.cjs.map +1 -1
- package/dist/RangebarWidget-Tq80I5zA.cjs.map +1 -1
- package/dist/RangebarWidget-dZN9WjoZ.js.map +1 -1
- package/dist/RedisTab-CdiSo-CO.cjs.map +1 -1
- package/dist/RedisTab-CkSwEwTZ.js.map +1 -1
- package/dist/RollupWidget-CHdZAUCb.cjs.map +1 -1
- package/dist/RollupWidget-i9DnNJl6.js.map +1 -1
- package/dist/RoutersTab-Cp8wM-mS.cjs.map +1 -1
- package/dist/RoutersTab-DiYEI1Nq.js.map +1 -1
- package/dist/ScriptChooser-BnTP6ucF.cjs.map +1 -1
- package/dist/ScriptChooser-Cua8ObYv.js.map +1 -1
- package/dist/ScrollwindowWidget-54GU96Ve.js.map +1 -1
- package/dist/ScrollwindowWidget-C5_X-KwQ.cjs.map +1 -1
- package/dist/SecretsTab-DY16usGc.cjs.map +1 -1
- package/dist/SecretsTab-uWRVI1EE.js.map +1 -1
- package/dist/SettingsTab-BVnr4OtU.js.map +1 -1
- package/dist/SettingsTab-BkwaDhYo.cjs.map +1 -1
- package/dist/SignalWidget-B_kA9eCJ.js.map +1 -1
- package/dist/SignalWidget-COL8kXSJ.cjs.map +1 -1
- package/dist/SimpleTextDialog-BWUqPlTv.cjs.map +1 -1
- package/dist/SimpleTextDialog-BulqUrdH.js.map +1 -1
- package/dist/SpacerWidget-D_Ya_b1j.cjs.map +1 -1
- package/dist/SpacerWidget-XoMPHak8.js.map +1 -1
- package/dist/SparklineWidget-CRzXTS5z.cjs.map +1 -1
- package/dist/SparklineWidget-DQNsvEj9.js.map +1 -1
- package/dist/TabbookWidget-Bh-GDBXg.cjs.map +1 -1
- package/dist/TabbookWidget-_HVA72t5.js.map +1 -1
- package/dist/TargetsTab-BfoRYnTP.js.map +1 -1
- package/dist/TargetsTab-CGE-jQAz.cjs.map +1 -1
- package/dist/TextBoxDialog-C60jmnyN.js.map +1 -1
- package/dist/TextBoxDialog-DWt30tB8.cjs.map +1 -1
- package/dist/TextboxWidget-0JXn4bMH.js.map +1 -1
- package/dist/TextboxWidget-uDptDK_z.cjs.map +1 -1
- package/dist/TextfieldWidget-B0FCskrL.cjs.map +1 -1
- package/dist/TextfieldWidget-BXr9MkVW.js.map +1 -1
- package/dist/TimeWidget-C67uwMGH.js.map +1 -1
- package/dist/TimeWidget-q5tUvHC6.cjs.map +1 -1
- package/dist/TitleWidget-REsd7MqR.cjs.map +1 -1
- package/dist/TitleWidget-t_YLgUMB.js.map +1 -1
- package/dist/ToolsTab-CGztf9_j.cjs.map +1 -1
- package/dist/ToolsTab-DKYeIlXu.js.map +1 -1
- package/dist/TopBar-B0UcAtIW.cjs.map +1 -1
- package/dist/TopBar-BrCfgCxc.js.map +1 -1
- package/dist/UpgradeToEnterpriseDialog-CGyR2v7U.js.map +1 -1
- package/dist/UpgradeToEnterpriseDialog-DJ3oth3I.cjs.map +1 -1
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-C_HFbtFB.cjs.map +1 -1
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-NIAkCgU6.js.map +1 -1
- package/dist/VWidget-BMxLXtSO.cjs.map +1 -1
- package/dist/VWidget-j2GIGGSX.js.map +1 -1
- package/dist/ValueWidget-3jNtnh5i.js.map +1 -1
- package/dist/ValueWidget-CjZeSiPQ.cjs.map +1 -1
- package/dist/ValuerangebarWidget-CpZYmUl_.cjs.map +1 -1
- package/dist/ValuerangebarWidget-DnZrho8S.js.map +1 -1
- package/dist/VerticalWidget-CcJMMaK_.cjs.map +1 -1
- package/dist/VerticalWidget-DJvoxqLE.js.map +1 -1
- package/dist/VerticalboxWidget-CJR_mOLa.cjs.map +1 -1
- package/dist/VerticalboxWidget-CYYyLBoO.js.map +1 -1
- package/dist/Widget-Bn_S-zBo.js.map +1 -1
- package/dist/Widget-O7wkmc39.cjs.map +1 -1
- package/dist/components.cjs.map +1 -1
- package/dist/components.js.map +1 -1
- package/dist/fileIcon-BduOQcTc.cjs.map +1 -1
- package/dist/fileIcon-DqRHb1_Z.js.map +1 -1
- package/dist/format-B22VpiOS.cjs.map +1 -1
- package/dist/format-CVeawcIv.js.map +1 -1
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js.map +1 -1
- package/dist/index-DcL65Mqb.cjs.map +1 -1
- package/dist/index-qCq0L4jN.js.map +1 -1
- package/dist/parse-DnkEsW-3.js.map +1 -1
- package/dist/parse-DwfgQboe.cjs.map +1 -1
- package/dist/plugins.cjs.map +1 -1
- package/dist/plugins.js.map +1 -1
- package/dist/timeFilters-BKnCM4rv.js.map +1 -1
- package/dist/timeFilters-CJFxfjqN.cjs.map +1 -1
- package/dist/tools/admin.cjs.map +1 -1
- package/dist/tools/admin.js.map +1 -1
- package/dist/tools/base.cjs.map +1 -1
- package/dist/tools/base.js.map +1 -1
- package/dist/tools/scriptrunner.cjs.map +1 -1
- package/dist/tools/scriptrunner.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MicroservicesTab-B-SdMwek.js","sources":["../src/tools/admin/tabs/MicroservicesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-alert\n v-model=\"showAlert\"\n dismissible\n transition=\"scale-transition\"\n :type=\"alertType\"\n >{{ alert }}</v-alert\n >\n <v-list class=\"list\" data-test=\"microserviceList\">\n <div v-for=\"microservice in microservices\" :key=\"microservice\">\n <v-list-item>\n <v-list-item-title>{{ microservice.name }}</v-list-item-title>\n <v-list-item-subtitle v-if=\"microservice_status[microservice.name]\">\n Updated:\n {{ formatDate(microservice_status[microservice.name].updated_at) }},\n State: {{ microservice_status[microservice.name].state }}, Enabled:\n {{ microservice.enabled === false ? 'False' : 'True' }}, Count:\n {{ microservice_status[microservice.name].count }}\n </v-list-item-subtitle>\n\n <template #append>\n <v-btn\n v-show=\"microservice_status[microservice.name]?.error\"\n icon=\"mdi-alert\"\n variant=\"text\"\n @click=\"showMicroserviceError(microservice.name)\"\n />\n <v-list-item-icon>\n <v-btn\n aria-label=\"Start Microservice\"\n icon=\"mdi-play\"\n variant=\"text\"\n @click=\"startMicroservice(microservice.name)\"\n />\n </v-list-item-icon>\n <v-list-item-icon>\n <v-btn\n aria-label=\"Stop Microservice\"\n icon=\"mdi-stop\"\n variant=\"text\"\n @click=\"stopMicroservice(microservice.name)\"\n />\n </v-list-item-icon>\n <v-list-item-icon>\n <v-btn\n aria-label=\"Show Microservice Details\"\n icon=\"mdi-eye\"\n variant=\"text\"\n @click=\"showMicroservice(microservice.name)\"\n />\n </v-list-item-icon>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :content=\"jsonContent\"\n type=\"Microservice\"\n :name=\"dialogTitle\"\n @submit=\"dialogCallback\"\n />\n <text-box-dialog\n v-if=\"showError\"\n v-model=\"showError\"\n :text=\"jsonContent\"\n :title=\"dialogTitle\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog, TextBoxDialog } from '@/components'\n\nexport default {\n components: {\n OutputDialog,\n TextBoxDialog,\n },\n data() {\n return {\n microservices: [],\n microservice_status: {},\n microservice_id: null,\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n showError: false,\n alert: '',\n alertType: 'success',\n showAlert: false,\n updater: null,\n }\n },\n mounted() {\n this.update()\n this.updater = setInterval(() => {\n this.update()\n }, 2000)\n },\n beforeUnmount() {\n clearInterval(this.updater)\n this.updater = null\n },\n methods: {\n update: function () {\n Api.get('/openc3-api/microservice_status/all').then((response) => {\n this.microservice_status = response.data\n })\n Api.get('/openc3-api/microservices/all').then((response) => {\n // Convert hash of microservices to array of microservices\n let microservices = []\n for (const [microservice_name, microservice] of Object.entries(\n response.data,\n )) {\n microservices.push(microservice)\n }\n microservices.sort((a, b) => a.name.localeCompare(b.name))\n this.microservices = microservices\n })\n },\n startMicroservice: function (name) {\n this.$dialog\n .confirm(`Are you sure you want to restart microservice: ${name}?`, {\n okText: 'Start',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n Api.post(`/openc3-api/microservices/${name}/start`)\n .then((response) => {\n this.alert = `Started ${name}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n })\n .then(() => {\n this.update()\n })\n })\n },\n stopMicroservice: function (name) {\n this.$dialog\n .confirm(`Are you sure you want to stop microservice: ${name}?`, {\n okText: 'Stop',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n Api.post(`/openc3-api/microservices/${name}/stop`)\n .then((response) => {\n this.alert = `Stopped ${name}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n })\n .then(() => {\n this.update()\n })\n })\n },\n showMicroservice: function (name) {\n Api.get(`/openc3-api/microservices/${name}`).then((response) => {\n this.microservice_id = name\n this.dialogTitle = name\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.showDialog = true\n })\n },\n showMicroserviceError: function (name) {\n this.dialogTitle = name\n const e = this.microservice_status[name].error\n this.jsonContent = JSON.stringify(e, null, '\\t')\n this.showError = true\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n dialogCallback: function (content) {\n this.showDialog = false\n if (content !== null) {\n let parsed = JSON.parse(content)\n let method = 'put'\n let url = `/openc3-api/microservices/${this.microservice_id}`\n if (parsed['name'] !== this.microservice_id) {\n method = 'post'\n url = '/openc3-api/microservices'\n }\n\n Api[method](url, {\n data: {\n json: content,\n },\n }).then((response) => {\n this.alert = 'Modified Microservice'\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n })\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","TextBoxDialog","Api","response","microservices","microservice_name","microservice","a","b","name","dialog","e","nanoSecs","format","toDate","content","parsed","method","url","_createElementBlock","_createVNode","_component_v_alert","$data","_cache","$event","_withCtx","_createTextVNode","_toDisplayString","_component_v_list","_openBlock","_Fragment","_renderList","_component_v_list_item","_component_v_btn","$options","_vShow","_a","_component_v_list_item_icon","_component_v_list_item_title","_createBlock","_component_v_list_item_subtitle","_createCommentVNode","_component_v_divider","_component_output_dialog","_component_text_box_dialog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MicroservicesTab-B-SdMwek.js","sources":["../src/tools/admin/tabs/MicroservicesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-alert\n v-model=\"showAlert\"\n dismissible\n transition=\"scale-transition\"\n :type=\"alertType\"\n >{{ alert }}</v-alert\n >\n <v-list class=\"list\" data-test=\"microserviceList\">\n <div v-for=\"microservice in microservices\" :key=\"microservice\">\n <v-list-item>\n <v-list-item-title>{{ microservice.name }}</v-list-item-title>\n <v-list-item-subtitle v-if=\"microservice_status[microservice.name]\">\n Updated:\n {{ formatDate(microservice_status[microservice.name].updated_at) }},\n State: {{ microservice_status[microservice.name].state }}, Enabled:\n {{ microservice.enabled === false ? 'False' : 'True' }}, Count:\n {{ microservice_status[microservice.name].count }}\n </v-list-item-subtitle>\n\n <template #append>\n <v-btn\n v-show=\"microservice_status[microservice.name]?.error\"\n icon=\"mdi-alert\"\n variant=\"text\"\n @click=\"showMicroserviceError(microservice.name)\"\n />\n <v-list-item-icon>\n <v-btn\n aria-label=\"Start Microservice\"\n icon=\"mdi-play\"\n variant=\"text\"\n @click=\"startMicroservice(microservice.name)\"\n />\n </v-list-item-icon>\n <v-list-item-icon>\n <v-btn\n aria-label=\"Stop Microservice\"\n icon=\"mdi-stop\"\n variant=\"text\"\n @click=\"stopMicroservice(microservice.name)\"\n />\n </v-list-item-icon>\n <v-list-item-icon>\n <v-btn\n aria-label=\"Show Microservice Details\"\n icon=\"mdi-eye\"\n variant=\"text\"\n @click=\"showMicroservice(microservice.name)\"\n />\n </v-list-item-icon>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :content=\"jsonContent\"\n type=\"Microservice\"\n :name=\"dialogTitle\"\n @submit=\"dialogCallback\"\n />\n <text-box-dialog\n v-if=\"showError\"\n v-model=\"showError\"\n :text=\"jsonContent\"\n :title=\"dialogTitle\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog, TextBoxDialog } from '@/components'\n\nexport default {\n components: {\n OutputDialog,\n TextBoxDialog,\n },\n data() {\n return {\n microservices: [],\n microservice_status: {},\n microservice_id: null,\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n showError: false,\n alert: '',\n alertType: 'success',\n showAlert: false,\n updater: null,\n }\n },\n mounted() {\n this.update()\n this.updater = setInterval(() => {\n this.update()\n }, 2000)\n },\n beforeUnmount() {\n clearInterval(this.updater)\n this.updater = null\n },\n methods: {\n update: function () {\n Api.get('/openc3-api/microservice_status/all').then((response) => {\n this.microservice_status = response.data\n })\n Api.get('/openc3-api/microservices/all').then((response) => {\n // Convert hash of microservices to array of microservices\n let microservices = []\n for (const [microservice_name, microservice] of Object.entries(\n response.data,\n )) {\n microservices.push(microservice)\n }\n microservices.sort((a, b) => a.name.localeCompare(b.name))\n this.microservices = microservices\n })\n },\n startMicroservice: function (name) {\n this.$dialog\n .confirm(`Are you sure you want to restart microservice: ${name}?`, {\n okText: 'Start',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n Api.post(`/openc3-api/microservices/${name}/start`)\n .then((response) => {\n this.alert = `Started ${name}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n })\n .then(() => {\n this.update()\n })\n })\n },\n stopMicroservice: function (name) {\n this.$dialog\n .confirm(`Are you sure you want to stop microservice: ${name}?`, {\n okText: 'Stop',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n Api.post(`/openc3-api/microservices/${name}/stop`)\n .then((response) => {\n this.alert = `Stopped ${name}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n })\n .then(() => {\n this.update()\n })\n })\n },\n showMicroservice: function (name) {\n Api.get(`/openc3-api/microservices/${name}`).then((response) => {\n this.microservice_id = name\n this.dialogTitle = name\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.showDialog = true\n })\n },\n showMicroserviceError: function (name) {\n this.dialogTitle = name\n const e = this.microservice_status[name].error\n this.jsonContent = JSON.stringify(e, null, '\\t')\n this.showError = true\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n dialogCallback: function (content) {\n this.showDialog = false\n if (content !== null) {\n let parsed = JSON.parse(content)\n let method = 'put'\n let url = `/openc3-api/microservices/${this.microservice_id}`\n if (parsed['name'] !== this.microservice_id) {\n method = 'post'\n url = '/openc3-api/microservices'\n }\n\n Api[method](url, {\n data: {\n json: content,\n },\n }).then((response) => {\n this.alert = 'Modified Microservice'\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n })\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","TextBoxDialog","Api","response","microservices","microservice_name","microservice","a","b","name","dialog","e","nanoSecs","format","toDate","content","parsed","method","url","_createElementBlock","_createVNode","_component_v_alert","$data","_cache","$event","_withCtx","_createTextVNode","_toDisplayString","_component_v_list","_openBlock","_Fragment","_renderList","_component_v_list_item","_component_v_btn","$options","_vShow","_a","_component_v_list_item_icon","_component_v_list_item_title","_createBlock","_component_v_list_item_subtitle","_createCommentVNode","_component_v_divider","_component_output_dialog","_component_text_box_dialog"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MicroservicesTab-DGaTcj-y.cjs","sources":["../src/tools/admin/tabs/MicroservicesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-alert\n v-model=\"showAlert\"\n dismissible\n transition=\"scale-transition\"\n :type=\"alertType\"\n >{{ alert }}</v-alert\n >\n <v-list class=\"list\" data-test=\"microserviceList\">\n <div v-for=\"microservice in microservices\" :key=\"microservice\">\n <v-list-item>\n <v-list-item-title>{{ microservice.name }}</v-list-item-title>\n <v-list-item-subtitle v-if=\"microservice_status[microservice.name]\">\n Updated:\n {{ formatDate(microservice_status[microservice.name].updated_at) }},\n State: {{ microservice_status[microservice.name].state }}, Enabled:\n {{ microservice.enabled === false ? 'False' : 'True' }}, Count:\n {{ microservice_status[microservice.name].count }}\n </v-list-item-subtitle>\n\n <template #append>\n <v-btn\n v-show=\"microservice_status[microservice.name]?.error\"\n icon=\"mdi-alert\"\n variant=\"text\"\n @click=\"showMicroserviceError(microservice.name)\"\n />\n <v-list-item-icon>\n <v-btn\n aria-label=\"Start Microservice\"\n icon=\"mdi-play\"\n variant=\"text\"\n @click=\"startMicroservice(microservice.name)\"\n />\n </v-list-item-icon>\n <v-list-item-icon>\n <v-btn\n aria-label=\"Stop Microservice\"\n icon=\"mdi-stop\"\n variant=\"text\"\n @click=\"stopMicroservice(microservice.name)\"\n />\n </v-list-item-icon>\n <v-list-item-icon>\n <v-btn\n aria-label=\"Show Microservice Details\"\n icon=\"mdi-eye\"\n variant=\"text\"\n @click=\"showMicroservice(microservice.name)\"\n />\n </v-list-item-icon>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :content=\"jsonContent\"\n type=\"Microservice\"\n :name=\"dialogTitle\"\n @submit=\"dialogCallback\"\n />\n <text-box-dialog\n v-if=\"showError\"\n v-model=\"showError\"\n :text=\"jsonContent\"\n :title=\"dialogTitle\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog, TextBoxDialog } from '@/components'\n\nexport default {\n components: {\n OutputDialog,\n TextBoxDialog,\n },\n data() {\n return {\n microservices: [],\n microservice_status: {},\n microservice_id: null,\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n showError: false,\n alert: '',\n alertType: 'success',\n showAlert: false,\n updater: null,\n }\n },\n mounted() {\n this.update()\n this.updater = setInterval(() => {\n this.update()\n }, 2000)\n },\n beforeUnmount() {\n clearInterval(this.updater)\n this.updater = null\n },\n methods: {\n update: function () {\n Api.get('/openc3-api/microservice_status/all').then((response) => {\n this.microservice_status = response.data\n })\n Api.get('/openc3-api/microservices/all').then((response) => {\n // Convert hash of microservices to array of microservices\n let microservices = []\n for (const [microservice_name, microservice] of Object.entries(\n response.data,\n )) {\n microservices.push(microservice)\n }\n microservices.sort((a, b) => a.name.localeCompare(b.name))\n this.microservices = microservices\n })\n },\n startMicroservice: function (name) {\n this.$dialog\n .confirm(`Are you sure you want to restart microservice: ${name}?`, {\n okText: 'Start',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n Api.post(`/openc3-api/microservices/${name}/start`)\n .then((response) => {\n this.alert = `Started ${name}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n })\n .then(() => {\n this.update()\n })\n })\n },\n stopMicroservice: function (name) {\n this.$dialog\n .confirm(`Are you sure you want to stop microservice: ${name}?`, {\n okText: 'Stop',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n Api.post(`/openc3-api/microservices/${name}/stop`)\n .then((response) => {\n this.alert = `Stopped ${name}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n })\n .then(() => {\n this.update()\n })\n })\n },\n showMicroservice: function (name) {\n Api.get(`/openc3-api/microservices/${name}`).then((response) => {\n this.microservice_id = name\n this.dialogTitle = name\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.showDialog = true\n })\n },\n showMicroserviceError: function (name) {\n this.dialogTitle = name\n const e = this.microservice_status[name].error\n this.jsonContent = JSON.stringify(e, null, '\\t')\n this.showError = true\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n dialogCallback: function (content) {\n this.showDialog = false\n if (content !== null) {\n let parsed = JSON.parse(content)\n let method = 'put'\n let url = `/openc3-api/microservices/${this.microservice_id}`\n if (parsed['name'] !== this.microservice_id) {\n method = 'post'\n url = '/openc3-api/microservices'\n }\n\n Api[method](url, {\n data: {\n json: content,\n },\n }).then((response) => {\n this.alert = 'Modified Microservice'\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n })\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","TextBoxDialog","Api","response","microservices","microservice_name","microservice","a","b","name","dialog","e","nanoSecs","format","toDate","content","parsed","method","url","_createElementBlock","_createVNode","_component_v_alert","$data","_cache","$event","_withCtx","_createTextVNode","_toDisplayString","_component_v_list","_openBlock","_Fragment","_renderList","_component_v_list_item","_component_v_btn","$options","_vShow","_a","_component_v_list_item_icon","_component_v_list_item_title","_createBlock","_component_v_list_item_subtitle","_createCommentVNode","_component_v_divider","_component_output_dialog","_component_text_box_dialog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MicroservicesTab-DGaTcj-y.cjs","sources":["../src/tools/admin/tabs/MicroservicesTab.vue"],"sourcesContent":["<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2025, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-alert\n v-model=\"showAlert\"\n dismissible\n transition=\"scale-transition\"\n :type=\"alertType\"\n >{{ alert }}</v-alert\n >\n <v-list class=\"list\" data-test=\"microserviceList\">\n <div v-for=\"microservice in microservices\" :key=\"microservice\">\n <v-list-item>\n <v-list-item-title>{{ microservice.name }}</v-list-item-title>\n <v-list-item-subtitle v-if=\"microservice_status[microservice.name]\">\n Updated:\n {{ formatDate(microservice_status[microservice.name].updated_at) }},\n State: {{ microservice_status[microservice.name].state }}, Enabled:\n {{ microservice.enabled === false ? 'False' : 'True' }}, Count:\n {{ microservice_status[microservice.name].count }}\n </v-list-item-subtitle>\n\n <template #append>\n <v-btn\n v-show=\"microservice_status[microservice.name]?.error\"\n icon=\"mdi-alert\"\n variant=\"text\"\n @click=\"showMicroserviceError(microservice.name)\"\n />\n <v-list-item-icon>\n <v-btn\n aria-label=\"Start Microservice\"\n icon=\"mdi-play\"\n variant=\"text\"\n @click=\"startMicroservice(microservice.name)\"\n />\n </v-list-item-icon>\n <v-list-item-icon>\n <v-btn\n aria-label=\"Stop Microservice\"\n icon=\"mdi-stop\"\n variant=\"text\"\n @click=\"stopMicroservice(microservice.name)\"\n />\n </v-list-item-icon>\n <v-list-item-icon>\n <v-btn\n aria-label=\"Show Microservice Details\"\n icon=\"mdi-eye\"\n variant=\"text\"\n @click=\"showMicroservice(microservice.name)\"\n />\n </v-list-item-icon>\n </template>\n </v-list-item>\n <v-divider />\n </div>\n </v-list>\n <output-dialog\n v-if=\"showDialog\"\n v-model=\"showDialog\"\n :content=\"jsonContent\"\n type=\"Microservice\"\n :name=\"dialogTitle\"\n @submit=\"dialogCallback\"\n />\n <text-box-dialog\n v-if=\"showError\"\n v-model=\"showError\"\n :text=\"jsonContent\"\n :title=\"dialogTitle\"\n />\n </div>\n</template>\n\n<script>\nimport { toDate, format } from 'date-fns'\nimport { Api } from '@openc3/js-common/services'\nimport { OutputDialog, TextBoxDialog } from '@/components'\n\nexport default {\n components: {\n OutputDialog,\n TextBoxDialog,\n },\n data() {\n return {\n microservices: [],\n microservice_status: {},\n microservice_id: null,\n jsonContent: '',\n dialogTitle: '',\n showDialog: false,\n showError: false,\n alert: '',\n alertType: 'success',\n showAlert: false,\n updater: null,\n }\n },\n mounted() {\n this.update()\n this.updater = setInterval(() => {\n this.update()\n }, 2000)\n },\n beforeUnmount() {\n clearInterval(this.updater)\n this.updater = null\n },\n methods: {\n update: function () {\n Api.get('/openc3-api/microservice_status/all').then((response) => {\n this.microservice_status = response.data\n })\n Api.get('/openc3-api/microservices/all').then((response) => {\n // Convert hash of microservices to array of microservices\n let microservices = []\n for (const [microservice_name, microservice] of Object.entries(\n response.data,\n )) {\n microservices.push(microservice)\n }\n microservices.sort((a, b) => a.name.localeCompare(b.name))\n this.microservices = microservices\n })\n },\n startMicroservice: function (name) {\n this.$dialog\n .confirm(`Are you sure you want to restart microservice: ${name}?`, {\n okText: 'Start',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n Api.post(`/openc3-api/microservices/${name}/start`)\n .then((response) => {\n this.alert = `Started ${name}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n })\n .then(() => {\n this.update()\n })\n })\n },\n stopMicroservice: function (name) {\n this.$dialog\n .confirm(`Are you sure you want to stop microservice: ${name}?`, {\n okText: 'Stop',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n Api.post(`/openc3-api/microservices/${name}/stop`)\n .then((response) => {\n this.alert = `Stopped ${name}`\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n })\n .then(() => {\n this.update()\n })\n })\n },\n showMicroservice: function (name) {\n Api.get(`/openc3-api/microservices/${name}`).then((response) => {\n this.microservice_id = name\n this.dialogTitle = name\n this.jsonContent = JSON.stringify(response.data, null, '\\t')\n this.showDialog = true\n })\n },\n showMicroserviceError: function (name) {\n this.dialogTitle = name\n const e = this.microservice_status[name].error\n this.jsonContent = JSON.stringify(e, null, '\\t')\n this.showError = true\n },\n formatDate(nanoSecs) {\n return format(\n toDate(parseInt(nanoSecs) / 1000000),\n 'yyyy-MM-dd HH:mm:ss.SSS',\n )\n },\n dialogCallback: function (content) {\n this.showDialog = false\n if (content !== null) {\n let parsed = JSON.parse(content)\n let method = 'put'\n let url = `/openc3-api/microservices/${this.microservice_id}`\n if (parsed['name'] !== this.microservice_id) {\n method = 'post'\n url = '/openc3-api/microservices'\n }\n\n Api[method](url, {\n data: {\n json: content,\n },\n }).then((response) => {\n this.alert = 'Modified Microservice'\n this.alertType = 'success'\n this.showAlert = true\n setTimeout(() => {\n this.showAlert = false\n }, 5000)\n this.update()\n })\n }\n },\n },\n}\n</script>\n\n<style scoped>\n.list {\n background-color: var(--color-background-surface-default) !important;\n overflow-x: hidden;\n}\n.v-theme--cosmosDark.v-list div:nth-child(odd) .v-list-item {\n background-color: var(--color-background-base-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","OutputDialog","TextBoxDialog","Api","response","microservices","microservice_name","microservice","a","b","name","dialog","e","nanoSecs","format","toDate","content","parsed","method","url","_createElementBlock","_createVNode","_component_v_alert","$data","_cache","$event","_withCtx","_createTextVNode","_toDisplayString","_component_v_list","_openBlock","_Fragment","_renderList","_component_v_list_item","_component_v_btn","$options","_vShow","_a","_component_v_list_item_icon","_component_v_list_item_title","_createBlock","_component_v_list_item_subtitle","_createCommentVNode","_component_v_divider","_component_output_dialog","_component_text_box_dialog"],"mappings":"sYAqGKA,EAAU,CACb,WAAY,cACVC,EAAAA,2BACAC,EAAAA,eAEF,MAAO,CACL,MAAO,CACL,cAAe,CAAA,EACf,oBAAqB,CAAA,EACrB,gBAAiB,KACjB,YAAa,GACb,YAAa,GACb,WAAY,GACZ,UAAW,GACX,MAAO,GACP,UAAW,UACX,UAAW,GACX,QAAS,IACX,CACF,EACA,SAAU,CACR,KAAK,OAAM,EACX,KAAK,QAAU,YAAY,IAAM,CAC/B,KAAK,OAAM,CACb,EAAG,GAAI,CACT,EACA,eAAgB,CACd,cAAc,KAAK,OAAO,EAC1B,KAAK,QAAU,IACjB,EACA,QAAS,CACP,OAAQ,UAAY,CAClBC,EAAAA,GAAI,IAAI,qCAAqC,EAAE,KAAMC,GAAa,CAChE,KAAK,oBAAsBA,EAAS,IACtC,CAAC,EACDD,EAAAA,GAAI,IAAI,+BAA+B,EAAE,KAAMC,GAAa,CAE1D,IAAIC,EAAgB,CAAA,EACpB,SAAW,CAACC,EAAmBC,CAAY,IAAK,OAAO,QACrDH,EAAS,IACX,EACEC,EAAc,KAAKE,CAAY,EAEjCF,EAAc,KAAK,CAACG,EAAGC,IAAMD,EAAE,KAAK,cAAcC,EAAE,IAAI,CAAC,EACzD,KAAK,cAAgBJ,CACvB,CAAC,CACH,EACA,kBAAmB,SAAUK,EAAM,CACjC,KAAK,QACF,QAAQ,kDAAkDA,CAAI,IAAK,CAClE,OAAQ,QACR,WAAY,SACb,EACA,KAAMC,GAAW,CAChBR,EAAAA,GAAI,KAAK,6BAA6BO,CAAI,QAAQ,EAC/C,KAAMN,GAAa,CAClB,KAAK,MAAQ,WAAWM,CAAI,GAC5B,KAAK,UAAY,UACjB,KAAK,UAAY,GACjB,WAAW,IAAM,CACf,KAAK,UAAY,EACnB,EAAG,GAAI,CACT,CAAC,EACA,KAAK,IAAM,CACV,KAAK,OAAM,CACb,CAAC,CACL,CAAC,CACL,EACA,iBAAkB,SAAUA,EAAM,CAChC,KAAK,QACF,QAAQ,+CAA+CA,CAAI,IAAK,CAC/D,OAAQ,OACR,WAAY,SACb,EACA,KAAMC,GAAW,CAChBR,EAAAA,GAAI,KAAK,6BAA6BO,CAAI,OAAO,EAC9C,KAAMN,GAAa,CAClB,KAAK,MAAQ,WAAWM,CAAI,GAC5B,KAAK,UAAY,UACjB,KAAK,UAAY,GACjB,WAAW,IAAM,CACf,KAAK,UAAY,EACnB,EAAG,GAAI,CACT,CAAC,EACA,KAAK,IAAM,CACV,KAAK,OAAM,CACb,CAAC,CACL,CAAC,CACL,EACA,iBAAkB,SAAUA,EAAM,CAChCP,KAAI,IAAI,6BAA6BO,CAAI,EAAE,EAAE,KAAMN,GAAa,CAC9D,KAAK,gBAAkBM,EACvB,KAAK,YAAcA,EACnB,KAAK,YAAc,KAAK,UAAUN,EAAS,KAAM,KAAM,GAAI,EAC3D,KAAK,WAAa,EACpB,CAAC,CACH,EACA,sBAAuB,SAAUM,EAAM,CACrC,KAAK,YAAcA,EACnB,MAAME,EAAI,KAAK,oBAAoBF,CAAI,EAAE,MACzC,KAAK,YAAc,KAAK,UAAUE,EAAG,KAAM,GAAI,EAC/C,KAAK,UAAY,EACnB,EACA,WAAWC,EAAU,CACnB,OAAOC,EAAAA,OACLC,EAAAA,OAAO,SAASF,CAAQ,EAAI,GAAO,EACnC,yBACF,CACF,EACA,eAAgB,SAAUG,EAAS,CAEjC,GADA,KAAK,WAAa,GACdA,IAAY,KAAM,CACpB,IAAIC,EAAS,KAAK,MAAMD,CAAO,EAC3BE,EAAS,MACTC,EAAM,6BAA6B,KAAK,eAAe,GACvDF,EAAO,OAAY,KAAK,kBAC1BC,EAAS,OACTC,EAAM,6BAGRhB,KAAIe,CAAM,EAAEC,EAAK,CACf,KAAM,CACJ,KAAMH,EAEV,CAAC,EAAE,KAAMZ,GAAa,CACpB,KAAK,MAAQ,wBACb,KAAK,UAAY,UACjB,KAAK,UAAY,GACjB,WAAW,IAAM,CACf,KAAK,UAAY,EACnB,EAAG,GAAI,EACP,KAAK,OAAM,CACb,CAAC,CACH,CACF,EAEJ,saAtNEgB,qBAsEM,MAAA,KAAA,CArEJC,EAAAA,YAMCC,EAAA,CA9BL,WAyBeC,EAAA,UAzBf,sBAAAC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAyBeF,EAAA,UAASE,GAClB,YAAA,GACA,WAAW,mBACV,KAAMF,EAAA,YA5Bb,QAAAG,EAAAA,QA6BO,IAAW,CA7BlBC,EAAAA,gBAAAC,EAAAA,gBA6BUL,EAAA,KAAK,EAAA,CAAA,IA7Bf,EAAA,4BA+BIF,EAAAA,YA+CSQ,EAAA,CA/CD,MAAM,OAAO,YAAU,qBA/BnC,QAAAH,EAAAA,QAgCW,IAAqC,EAA1CI,YAAA,EAAA,EAAAV,EAAAA,mBA6CMW,EAAAA,SAAA,KA7EZC,EAAAA,WAgCkCT,EAAA,cAAhBhB,kBAAZa,EAAAA,mBA6CM,MAAA,CA7CsC,IAAKb,GAAY,CAC3Dc,EAAAA,YA0CcY,EAAA,KAAA,CAhCD,iBACT,IAAA,OAKE,wBALFZ,EAAAA,YAKEa,EAAA,CAHA,KAAK,YACL,QAAQ,OACP,QAAKT,GAAEU,EAAA,sBAAsB5B,EAAa,IAAI,wBAHvC,CAAA6B,EAAAA,OAAAC,EAAAd,EAAA,oBAAoBhB,EAAa,IAAI,IAArC,YAAA8B,EAAwC,KAAK,IAKvDhB,EAAAA,YAOmBiB,EAAA,KAAA,CAzD/B,QAAAZ,EAAAA,QAmDc,IAKE,CALFL,EAAAA,YAKEa,EAAA,CAJA,aAAW,qBACX,KAAK,WACL,QAAQ,OACP,QAAKT,GAAEU,EAAA,kBAAkB5B,EAAa,IAAI,yBAvD3D,EAAA,SA0DYc,EAAAA,YAOmBiB,EAAA,KAAA,CAjE/B,QAAAZ,EAAAA,QA2Dc,IAKE,CALFL,EAAAA,YAKEa,EAAA,CAJA,aAAW,oBACX,KAAK,WACL,QAAQ,OACP,QAAKT,GAAEU,EAAA,iBAAiB5B,EAAa,IAAI,yBA/D1D,EAAA,SAkEYc,EAAAA,YAOmBiB,EAAA,KAAA,CAzE/B,QAAAZ,EAAAA,QAmEc,IAKE,CALFL,EAAAA,YAKEa,EAAA,CAJA,aAAW,4BACX,KAAK,UACL,QAAQ,OACP,QAAKT,GAAEU,EAAA,iBAAiB5B,EAAa,IAAI,yBAvE1D,EAAA,YAAA,QAAAmB,EAAAA,QAkCU,IAA8D,CAA9DL,EAAAA,YAA8DkB,EAAA,KAAA,CAlCxE,QAAAb,EAAAA,QAkC6B,IAAuB,CAlCpDC,EAAAA,gBAAAC,EAAAA,gBAkCgCrB,EAAa,IAAI,EAAA,CAAA,IAlCjD,EAAA,SAmCsCgB,EAAA,oBAAoBhB,EAAa,IAAI,GAAjEuB,EAAAA,UAAA,EAAAU,EAAAA,YAMuBC,GAzCjC,IAAA,CAAA,EAAA,CAAA,QAAAf,EAAAA,QAmC8E,IAElE,CArCZC,EAAAA,gBAmC8E,aAElEC,kBAAGO,EAAA,WAAWZ,EAAA,oBAAoBhB,EAAa,IAAI,EAAE,UAAU,CAAA,EAAI,YAC5DqB,EAAAA,gBAAGL,EAAA,oBAAoBhB,EAAa,IAAI,EAAE,KAAK,EAAG,cACzDqB,kBAAGrB,EAAa,UAAO,GAAA,QAAA,MAAA,EAAgC,YACvDqB,EAAAA,gBAAGL,sBAAoBhB,EAAa,IAAI,EAAE,KAAK,EAAA,CAAA,IAxC3D,EAAA,UAAAmC,EAAAA,mBAAA,GAAA,EAAA,IAAA,EAAA,SA4EQrB,EAAAA,YAAasB,CAAA,cA5ErB,EAAA,IAgFYpB,EAAA,0BADRiB,EAAAA,YAOEI,EAAA,CAtFN,IAAA,EAAA,WAiFerB,EAAA,WAjFf,sBAAAC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAiFeF,EAAA,WAAUE,GAClB,QAASF,EAAA,YACV,KAAK,eACJ,KAAMA,EAAA,YACN,SAAQY,EAAA,oEArFfO,EAAAA,mBAAA,GAAA,EAAA,EAwFYnB,EAAA,yBADRiB,EAAAA,YAKEK,EAAA,CA5FN,IAAA,EAAA,WAyFetB,EAAA,UAzFf,sBAAAC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAyFeF,EAAA,UAASE,GACjB,KAAMF,EAAA,YACN,MAAOA,EAAA,oDA3FdmB,EAAAA,mBAAA,GAAA,EAAA"}
|