@openc3/vue-common 6.5.1 → 6.7.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-Ck6pzAyW.js → ArrayWidget-BSG8KEtf.js} +4 -4
- package/dist/{ArrayWidget-Ck6pzAyW.js.map → ArrayWidget-BSG8KEtf.js.map} +1 -1
- package/dist/{ArrayWidget-Bb_Ldxq7.cjs → ArrayWidget-B__t3xOt.cjs} +2 -2
- package/dist/{ArrayWidget-Bb_Ldxq7.cjs.map → ArrayWidget-B__t3xOt.cjs.map} +1 -1
- package/dist/ArrayplotWidget-BduWyJlL.cjs +2 -0
- package/dist/ArrayplotWidget-BduWyJlL.cjs.map +1 -0
- package/dist/{ArrayplotWidget-ntRLh6-B.js → ArrayplotWidget-WVu76Kqn.js} +22 -22
- package/dist/ArrayplotWidget-WVu76Kqn.js.map +1 -0
- package/dist/AstroStatus-CILMWL6F.cjs.map +1 -1
- package/dist/AstroStatus-CY9VkeTN.js.map +1 -1
- package/dist/{BarColumn-Bgz2YJ59.js → BarColumn-Cflh9pUz.js} +3 -3
- package/dist/{BarColumn-Bgz2YJ59.js.map → BarColumn-Cflh9pUz.js.map} +1 -1
- package/dist/{BarColumn-DtRNuOpa.cjs → BarColumn-DVn9f2WO.cjs} +2 -2
- package/dist/{BarColumn-DtRNuOpa.cjs.map → BarColumn-DVn9f2WO.cjs.map} +1 -1
- package/dist/{BlockWidget-DGH3Zz5p.js → BlockWidget-B7ryWGCq.js} +4 -4
- package/dist/{BlockWidget-DGH3Zz5p.js.map → BlockWidget-B7ryWGCq.js.map} +1 -1
- package/dist/{BlockWidget-DOY5lVfa.cjs → BlockWidget-CRqA09Ve.cjs} +2 -2
- package/dist/{BlockWidget-DOY5lVfa.cjs.map → BlockWidget-CRqA09Ve.cjs.map} +1 -1
- package/dist/{ButtonWidget-D_tupiPB.js → ButtonWidget-BKih3ix9.js} +17 -13
- package/dist/{ButtonWidget-D_tupiPB.js.map → ButtonWidget-BKih3ix9.js.map} +1 -1
- package/dist/{ButtonWidget-CFyZXGt6.cjs → ButtonWidget-Bb46aUCR.cjs} +3 -3
- package/dist/{ButtonWidget-CFyZXGt6.cjs.map → ButtonWidget-Bb46aUCR.cjs.map} +1 -1
- package/dist/{CanvasWidget-CzG2jYQb.js → CanvasWidget-DT9xMSfb.js} +2 -2
- package/dist/{CanvasWidget-CzG2jYQb.js.map → CanvasWidget-DT9xMSfb.js.map} +1 -1
- package/dist/{CanvasWidget-C6dc7mUw.cjs → CanvasWidget-DT_vPAoc.cjs} +2 -2
- package/dist/{CanvasWidget-C6dc7mUw.cjs.map → CanvasWidget-DT_vPAoc.cjs.map} +1 -1
- package/dist/{CanvasdotWidget-0FAaw4G2.js → CanvasdotWidget-7H5Hvcn-.js} +2 -2
- package/dist/{CanvasdotWidget-0FAaw4G2.js.map → CanvasdotWidget-7H5Hvcn-.js.map} +1 -1
- package/dist/{CanvasdotWidget-9bBVHC1l.cjs → CanvasdotWidget-DNSQriVo.cjs} +2 -2
- package/dist/{CanvasdotWidget-9bBVHC1l.cjs.map → CanvasdotWidget-DNSQriVo.cjs.map} +1 -1
- package/dist/{CanvasimageWidget-CNJlzLqo.js → CanvasimageWidget-BbWYx6Gj.js} +3 -3
- package/dist/{CanvasimageWidget-CNJlzLqo.js.map → CanvasimageWidget-BbWYx6Gj.js.map} +1 -1
- package/dist/{CanvasimageWidget-DjvdDCRS.cjs → CanvasimageWidget-CfleScIF.cjs} +2 -2
- package/dist/{CanvasimageWidget-DjvdDCRS.cjs.map → CanvasimageWidget-CfleScIF.cjs.map} +1 -1
- package/dist/{CanvasimagevalueWidget-DudwwOD6.js → CanvasimagevalueWidget-Blvoe2X4.js} +3 -3
- package/dist/{CanvasimagevalueWidget-DudwwOD6.js.map → CanvasimagevalueWidget-Blvoe2X4.js.map} +1 -1
- package/dist/{CanvasimagevalueWidget-C1fI-ftP.cjs → CanvasimagevalueWidget-ouM4DBeD.cjs} +2 -2
- package/dist/{CanvasimagevalueWidget-C1fI-ftP.cjs.map → CanvasimagevalueWidget-ouM4DBeD.cjs.map} +1 -1
- package/dist/{CanvaslabelWidget-BZQp16dH.js → CanvaslabelWidget-BPx_Rm4o.js} +2 -2
- package/dist/{CanvaslabelWidget-BZQp16dH.js.map → CanvaslabelWidget-BPx_Rm4o.js.map} +1 -1
- package/dist/{CanvaslabelWidget--6Sjc4E8.cjs → CanvaslabelWidget-DB3qox5N.cjs} +2 -2
- package/dist/{CanvaslabelWidget--6Sjc4E8.cjs.map → CanvaslabelWidget-DB3qox5N.cjs.map} +1 -1
- package/dist/{CanvaslabelvalueWidget-DZCxsIKk.cjs → CanvaslabelvalueWidget-2k6TjSNj.cjs} +2 -2
- package/dist/{CanvaslabelvalueWidget-DZCxsIKk.cjs.map → CanvaslabelvalueWidget-2k6TjSNj.cjs.map} +1 -1
- package/dist/{CanvaslabelvalueWidget-CHS36Te9.js → CanvaslabelvalueWidget-DzdWvL0W.js} +2 -2
- package/dist/{CanvaslabelvalueWidget-CHS36Te9.js.map → CanvaslabelvalueWidget-DzdWvL0W.js.map} +1 -1
- package/dist/{CanvaslineWidget-nhKEAGhs.js → CanvaslineWidget-CqskilGk.js} +2 -2
- package/dist/{CanvaslineWidget-nhKEAGhs.js.map → CanvaslineWidget-CqskilGk.js.map} +1 -1
- package/dist/{CanvaslineWidget-Bn83Rb10.cjs → CanvaslineWidget-oAoznYZP.cjs} +2 -2
- package/dist/{CanvaslineWidget-Bn83Rb10.cjs.map → CanvaslineWidget-oAoznYZP.cjs.map} +1 -1
- package/dist/{CanvaslinevalueWidget-C6x_4Gc9.cjs → CanvaslinevalueWidget-BmyIxGNz.cjs} +2 -2
- package/dist/{CanvaslinevalueWidget-C6x_4Gc9.cjs.map → CanvaslinevalueWidget-BmyIxGNz.cjs.map} +1 -1
- package/dist/{CanvaslinevalueWidget-DsyIDkJy.js → CanvaslinevalueWidget-C0JIKdvZ.js} +2 -2
- package/dist/{CanvaslinevalueWidget-DsyIDkJy.js.map → CanvaslinevalueWidget-C0JIKdvZ.js.map} +1 -1
- package/dist/{CheckbuttonWidget-BvggsGZY.cjs → CheckbuttonWidget-C548xrRy.cjs} +2 -2
- package/dist/{CheckbuttonWidget-BvggsGZY.cjs.map → CheckbuttonWidget-C548xrRy.cjs.map} +1 -1
- package/dist/{CheckbuttonWidget-DCam7Jd0.js → CheckbuttonWidget-C9FbJx2v.js} +2 -2
- package/dist/{CheckbuttonWidget-DCam7Jd0.js.map → CheckbuttonWidget-C9FbJx2v.js.map} +1 -1
- package/dist/ClassificationBanners-BTdLBSfy.cjs +2 -0
- package/dist/ClassificationBanners-BTdLBSfy.cjs.map +1 -0
- package/dist/ClassificationBanners-CgJiwgTp.js +35 -0
- package/dist/ClassificationBanners-CgJiwgTp.js.map +1 -0
- package/dist/{ComboboxWidget-BS5WSbrK.cjs → ComboboxWidget-AErojGw0.cjs} +2 -2
- package/dist/{ComboboxWidget-BS5WSbrK.cjs.map → ComboboxWidget-AErojGw0.cjs.map} +1 -1
- package/dist/{ComboboxWidget-ZX-k-_aK.js → ComboboxWidget-BbNKT0s8.js} +2 -2
- package/dist/{ComboboxWidget-ZX-k-_aK.js.map → ComboboxWidget-BbNKT0s8.js.map} +1 -1
- package/dist/{CriticalCmdDialog-Dylpoz_4.js → CriticalCmdDialog-CF7Sqjdm.js} +11 -8
- package/dist/{CriticalCmdDialog-Dylpoz_4.js.map → CriticalCmdDialog-CF7Sqjdm.js.map} +1 -1
- package/dist/CriticalCmdDialog-N06JxCHg.cjs +2 -0
- package/dist/{CriticalCmdDialog-7tOK2XQk.cjs.map → CriticalCmdDialog-N06JxCHg.cjs.map} +1 -1
- package/dist/CustomIcon-Bop2mEnu.cjs.map +1 -1
- package/dist/CustomIcon-h5X7369N.js.map +1 -1
- package/dist/{DateWidget-DuJ5uC2t.js → DateWidget-CBMsdRUE.js} +2 -2
- package/dist/{DateWidget-DuJ5uC2t.js.map → DateWidget-CBMsdRUE.js.map} +1 -1
- package/dist/{DateWidget-jejbk2-G.cjs → DateWidget-CCIkDM9_.cjs} +2 -2
- package/dist/{DateWidget-jejbk2-G.cjs.map → DateWidget-CCIkDM9_.cjs.map} +1 -1
- package/dist/DetailsDialog-CVYBgZll.cjs +2 -0
- package/dist/DetailsDialog-CVYBgZll.cjs.map +1 -0
- package/dist/{DetailsDialog-BQE0TraI.js → DetailsDialog-DRVahE5z.js} +129 -97
- package/dist/DetailsDialog-DRVahE5z.js.map +1 -0
- package/dist/DynamicWidget-BWEVCUfd.cjs.map +1 -1
- package/dist/DynamicWidget-CfMtj7H8.js.map +1 -1
- package/dist/EventListDialog-CjYLRdkb.cjs +2 -0
- package/dist/{EventListDialog-CDcJcxy5.cjs.map → EventListDialog-CjYLRdkb.cjs.map} +1 -1
- package/dist/{EventListDialog-CGUFCrJF.js → EventListDialog-DDWL9gIQ.js} +46 -31
- package/dist/{EventListDialog-CGUFCrJF.js.map → EventListDialog-DDWL9gIQ.js.map} +1 -1
- package/dist/{FormatvalueWidget-DYICPNcx.js → FormatvalueWidget-BLWsqhIZ.js} +3 -3
- package/dist/{FormatvalueWidget-DYICPNcx.js.map → FormatvalueWidget-BLWsqhIZ.js.map} +1 -1
- package/dist/{FormatvalueWidget-wu7Q3sXu.cjs → FormatvalueWidget-BiaqheLJ.cjs} +2 -2
- package/dist/{FormatvalueWidget-wu7Q3sXu.cjs.map → FormatvalueWidget-BiaqheLJ.cjs.map} +1 -1
- package/dist/Graph-BiU56Qj2.js +2669 -0
- package/dist/Graph-BiU56Qj2.js.map +1 -0
- package/dist/Graph-CWjf71TK.cjs +2 -0
- package/dist/Graph-CWjf71TK.cjs.map +1 -0
- package/dist/{GraphWidget-cTVq29cY.js → GraphWidget-Ga0AEfrJ.js} +31 -44
- package/dist/{GraphWidget-cTVq29cY.js.map → GraphWidget-Ga0AEfrJ.js.map} +1 -1
- package/dist/GraphWidget-cfgX_skM.cjs +2 -0
- package/dist/{GraphWidget-CQjKAMPR.cjs.map → GraphWidget-cfgX_skM.cjs.map} +1 -1
- package/dist/{HorizontalWidget-v1pfd94Z.js → HorizontalWidget-CsVhLwZO.js} +6 -6
- package/dist/{HorizontalWidget-v1pfd94Z.js.map → HorizontalWidget-CsVhLwZO.js.map} +1 -1
- package/dist/HorizontalWidget-i6aqMSRv.cjs +2 -0
- package/dist/{HorizontalWidget--AkRJPlL.cjs.map → HorizontalWidget-i6aqMSRv.cjs.map} +1 -1
- package/dist/HorizontalboxWidget-B_S8mswF.cjs +2 -0
- package/dist/{HorizontalboxWidget-synL-Bar.cjs.map → HorizontalboxWidget-B_S8mswF.cjs.map} +1 -1
- package/dist/{HorizontalboxWidget-B06-c_n4.js → HorizontalboxWidget-xC6PADl3.js} +15 -15
- package/dist/{HorizontalboxWidget-B06-c_n4.js.map → HorizontalboxWidget-xC6PADl3.js.map} +1 -1
- package/dist/{HorizontallineWidget-lTr2JTFY.cjs → HorizontallineWidget-Cpys-185.cjs} +2 -2
- package/dist/{HorizontallineWidget-lTr2JTFY.cjs.map → HorizontallineWidget-Cpys-185.cjs.map} +1 -1
- package/dist/{HorizontallineWidget-DEODVJCk.js → HorizontallineWidget-NZIxmRVN.js} +2 -2
- package/dist/{HorizontallineWidget-DEODVJCk.js.map → HorizontallineWidget-NZIxmRVN.js.map} +1 -1
- package/dist/{IframeWidget-n8lNXrpt.js → IframeWidget-BgzjSfag.js} +2 -2
- package/dist/{IframeWidget-n8lNXrpt.js.map → IframeWidget-BgzjSfag.js.map} +1 -1
- package/dist/{IframeWidget-ByhwW9yG.cjs → IframeWidget-CCdvd8rg.cjs} +2 -2
- package/dist/{IframeWidget-ByhwW9yG.cjs.map → IframeWidget-CCdvd8rg.cjs.map} +1 -1
- package/dist/{ImageLoader-DBWVFtNu.cjs → ImageLoader-BIKl6vGc.cjs} +2 -2
- package/dist/{ImageLoader-DBWVFtNu.cjs.map → ImageLoader-BIKl6vGc.cjs.map} +1 -1
- package/dist/{ImageLoader-CfcErydq.js → ImageLoader-DbFVK1Ui.js} +2 -2
- package/dist/{ImageLoader-CfcErydq.js.map → ImageLoader-DbFVK1Ui.js.map} +1 -1
- package/dist/{ImageviewerWidget-DE8fj06Z.js → ImageviewerWidget-BnT5m-nw.js} +2 -2
- package/dist/{ImageviewerWidget-DE8fj06Z.js.map → ImageviewerWidget-BnT5m-nw.js.map} +1 -1
- package/dist/{ImageviewerWidget-D4mU6wLX.cjs → ImageviewerWidget-lnralJZa.cjs} +2 -2
- package/dist/{ImageviewerWidget-D4mU6wLX.cjs.map → ImageviewerWidget-lnralJZa.cjs.map} +1 -1
- package/dist/{InterfacesTab-BF-Wx5gk.js → InterfacesTab-Cd_RITVP.js} +3 -3
- package/dist/{InterfacesTab-BF-Wx5gk.js.map → InterfacesTab-Cd_RITVP.js.map} +1 -1
- package/dist/{InterfacesTab-DTAAIx-y.cjs → InterfacesTab-DjlzjJYG.cjs} +2 -2
- package/dist/{InterfacesTab-DTAAIx-y.cjs.map → InterfacesTab-DjlzjJYG.cjs.map} +1 -1
- package/dist/{LabelWidget-DQZqRxKF.cjs → LabelWidget-CRHSFVPT.cjs} +2 -2
- package/dist/{LabelWidget-DQZqRxKF.cjs.map → LabelWidget-CRHSFVPT.cjs.map} +1 -1
- package/dist/{LabelWidget-iUIJLhdA.js → LabelWidget-DSDYmz6X.js} +2 -2
- package/dist/{LabelWidget-iUIJLhdA.js.map → LabelWidget-DSDYmz6X.js.map} +1 -1
- package/dist/{LabelledWidget-9HWChRmv.cjs → LabelledWidget-BXf9cTf_.cjs} +2 -2
- package/dist/{LabelledWidget-9HWChRmv.cjs.map → LabelledWidget-BXf9cTf_.cjs.map} +1 -1
- package/dist/{LabelledWidget-KI6fMlsr.js → LabelledWidget-DMb-myxs.js} +4 -4
- package/dist/{LabelledWidget-KI6fMlsr.js.map → LabelledWidget-DMb-myxs.js.map} +1 -1
- package/dist/{LabelprogressbarWidget-DwzTP73u.cjs → LabelprogressbarWidget-BNHaAUXq.cjs} +2 -2
- package/dist/{LabelprogressbarWidget-DwzTP73u.cjs.map → LabelprogressbarWidget-BNHaAUXq.cjs.map} +1 -1
- package/dist/{LabelprogressbarWidget-C2lzmqBH.js → LabelprogressbarWidget-CkjDJBao.js} +4 -4
- package/dist/{LabelprogressbarWidget-C2lzmqBH.js.map → LabelprogressbarWidget-CkjDJBao.js.map} +1 -1
- package/dist/{LabelsparklineWidget-DMjBshq8.cjs → LabelsparklineWidget-BpHMkt-L.cjs} +2 -2
- package/dist/{LabelsparklineWidget-DMjBshq8.cjs.map → LabelsparklineWidget-BpHMkt-L.cjs.map} +1 -1
- package/dist/{LabelsparklineWidget-Ci6GGm29.js → LabelsparklineWidget-DBYPFz3Y.js} +4 -4
- package/dist/{LabelsparklineWidget-Ci6GGm29.js.map → LabelsparklineWidget-DBYPFz3Y.js.map} +1 -1
- package/dist/{LabelvalueWidget-mAb0eLA8.cjs → LabelvalueWidget-BFHYb64m.cjs} +2 -2
- package/dist/{LabelvalueWidget-mAb0eLA8.cjs.map → LabelvalueWidget-BFHYb64m.cjs.map} +1 -1
- package/dist/{LabelvalueWidget-oiW-JDw6.js → LabelvalueWidget-DlTkJC4i.js} +4 -4
- package/dist/{LabelvalueWidget-oiW-JDw6.js.map → LabelvalueWidget-DlTkJC4i.js.map} +1 -1
- package/dist/{LabelvaluedescWidget-CZJ0kZN-.cjs → LabelvaluedescWidget-CUld9MqE.cjs} +2 -2
- package/dist/{LabelvaluedescWidget-CZJ0kZN-.cjs.map → LabelvaluedescWidget-CUld9MqE.cjs.map} +1 -1
- package/dist/{LabelvaluedescWidget-Ck0AJ9g0.js → LabelvaluedescWidget-dRqnGZub.js} +5 -5
- package/dist/{LabelvaluedescWidget-Ck0AJ9g0.js.map → LabelvaluedescWidget-dRqnGZub.js.map} +1 -1
- package/dist/{LabelvaluelimitsbarWidget-DjBqYxRr.cjs → LabelvaluelimitsbarWidget-Br_PXH0r.cjs} +2 -2
- package/dist/{LabelvaluelimitsbarWidget-DjBqYxRr.cjs.map → LabelvaluelimitsbarWidget-Br_PXH0r.cjs.map} +1 -1
- package/dist/{LabelvaluelimitsbarWidget-aaVLaejn.js → LabelvaluelimitsbarWidget-CS4NAPJ1.js} +4 -4
- package/dist/{LabelvaluelimitsbarWidget-aaVLaejn.js.map → LabelvaluelimitsbarWidget-CS4NAPJ1.js.map} +1 -1
- package/dist/{LabelvaluelimitscolumnWidget-Uur6aqOg.js → LabelvaluelimitscolumnWidget-D9x4Ppv8.js} +5 -5
- package/dist/{LabelvaluelimitscolumnWidget-Uur6aqOg.js.map → LabelvaluelimitscolumnWidget-D9x4Ppv8.js.map} +1 -1
- package/dist/{LabelvaluelimitscolumnWidget-GputlDZq.cjs → LabelvaluelimitscolumnWidget-DjLG10C5.cjs} +2 -2
- package/dist/{LabelvaluelimitscolumnWidget-GputlDZq.cjs.map → LabelvaluelimitscolumnWidget-DjLG10C5.cjs.map} +1 -1
- package/dist/{LabelvaluerangebarWidget-Ci-n_hxk.cjs → LabelvaluerangebarWidget-CsUfrGAM.cjs} +2 -2
- package/dist/{LabelvaluerangebarWidget-Ci-n_hxk.cjs.map → LabelvaluerangebarWidget-CsUfrGAM.cjs.map} +1 -1
- package/dist/{LabelvaluerangebarWidget-Bs9locqu.js → LabelvaluerangebarWidget-Dhyng4-n.js} +4 -4
- package/dist/{LabelvaluerangebarWidget-Bs9locqu.js.map → LabelvaluerangebarWidget-Dhyng4-n.js.map} +1 -1
- package/dist/Layout-DDktMnzb.cjs +2 -0
- package/dist/{Layout-kOQnicRa.cjs.map → Layout-DDktMnzb.cjs.map} +1 -1
- package/dist/{Layout-1z8iJV5-.js → Layout-mWR35VAD.js} +2 -2
- package/dist/{Layout-1z8iJV5-.js.map → Layout-mWR35VAD.js.map} +1 -1
- package/dist/LedWidget-CCQWCw80.cjs +2 -0
- package/dist/LedWidget-CCQWCw80.cjs.map +1 -0
- package/dist/{LedWidget-BN8IgAxJ.js → LedWidget-D8cq4pUv.js} +6 -6
- package/dist/LedWidget-D8cq4pUv.js.map +1 -0
- package/dist/{LimitsbarWidget-Co5GAHro.cjs → LimitsbarWidget-D4O0LWuC.cjs} +2 -2
- package/dist/{LimitsbarWidget-Co5GAHro.cjs.map → LimitsbarWidget-D4O0LWuC.cjs.map} +1 -1
- package/dist/{LimitsbarWidget-BxxoKTjp.js → LimitsbarWidget-VGJnDuVM.js} +2 -2
- package/dist/{LimitsbarWidget-BxxoKTjp.js.map → LimitsbarWidget-VGJnDuVM.js.map} +1 -1
- package/dist/{LimitscolorWidget-BpTcgqRC.cjs → LimitscolorWidget-BvxsopUs.cjs} +2 -2
- package/dist/{LimitscolorWidget-BpTcgqRC.cjs.map → LimitscolorWidget-BvxsopUs.cjs.map} +1 -1
- package/dist/{LimitscolorWidget-DFDwf4In.js → LimitscolorWidget-CG6Pqi12.js} +2 -2
- package/dist/{LimitscolorWidget-DFDwf4In.js.map → LimitscolorWidget-CG6Pqi12.js.map} +1 -1
- package/dist/{LimitscolumnWidget-CdBh2mJu.js → LimitscolumnWidget-DjovQdiT.js} +2 -2
- package/dist/{LimitscolumnWidget-CdBh2mJu.js.map → LimitscolumnWidget-DjovQdiT.js.map} +1 -1
- package/dist/{LimitscolumnWidget-CqJJKDzz.cjs → LimitscolumnWidget-Z9JnMlDS.cjs} +2 -2
- package/dist/{LimitscolumnWidget-CqJJKDzz.cjs.map → LimitscolumnWidget-Z9JnMlDS.cjs.map} +1 -1
- package/dist/LinegraphWidget-B_ECNLzU.cjs +2 -0
- package/dist/LinegraphWidget-B_ECNLzU.cjs.map +1 -0
- package/dist/{LinegraphWidget-jXksfbPb.js → LinegraphWidget-DSWAhXgZ.js} +13 -13
- package/dist/LinegraphWidget-DSWAhXgZ.js.map +1 -0
- package/dist/{MatrixbycolumnsWidget-DCwxPjwS.js → MatrixbycolumnsWidget-C3cuhRxz.js} +4 -4
- package/dist/{MatrixbycolumnsWidget-DCwxPjwS.js.map → MatrixbycolumnsWidget-C3cuhRxz.js.map} +1 -1
- package/dist/MatrixbycolumnsWidget-CPFzRQN5.cjs +2 -0
- package/dist/{MatrixbycolumnsWidget-DxRhvPGv.cjs.map → MatrixbycolumnsWidget-CPFzRQN5.cjs.map} +1 -1
- package/dist/{MicroservicesTab-DGaTcj-y.cjs → MicroservicesTab-BGgwT56M.cjs} +2 -2
- package/dist/{MicroservicesTab-DGaTcj-y.cjs.map → MicroservicesTab-BGgwT56M.cjs.map} +1 -1
- package/dist/{MicroservicesTab-B-SdMwek.js → MicroservicesTab-Dbp02UlV.js} +4 -4
- package/dist/{MicroservicesTab-B-SdMwek.js.map → MicroservicesTab-Dbp02UlV.js.map} +1 -1
- package/dist/Openc3Screen-BP2oW88G.cjs +6 -0
- package/dist/Openc3Screen-BP2oW88G.cjs.map +1 -0
- package/dist/{Openc3Screen-BZN0Wtrm.js → Openc3Screen-CkdegNDJ.js} +438 -310
- package/dist/Openc3Screen-CkdegNDJ.js.map +1 -0
- package/dist/{OutputDialog-CxKDhrg6.cjs → OutputDialog-2CmOBAEE.cjs} +2 -2
- package/dist/{OutputDialog-CxKDhrg6.cjs.map → OutputDialog-2CmOBAEE.cjs.map} +1 -1
- package/dist/{OutputDialog-CcSp-Uqo.js → OutputDialog-M5Xc_DqH.js} +12 -11
- package/dist/{OutputDialog-CcSp-Uqo.js.map → OutputDialog-M5Xc_DqH.js.map} +1 -1
- package/dist/PackagesTab-Dwp6g8W0.cjs +2 -0
- package/dist/{PackagesTab-B4V2n4io.cjs.map → PackagesTab-Dwp6g8W0.cjs.map} +1 -1
- package/dist/{PackagesTab-Dx25CfF0.js → PackagesTab-HQCOIGZK.js} +30 -24
- package/dist/{PackagesTab-Dx25CfF0.js.map → PackagesTab-HQCOIGZK.js.map} +1 -1
- package/dist/PluginsTab-COKDXShE.cjs +6 -0
- package/dist/PluginsTab-COKDXShE.cjs.map +1 -0
- package/dist/PluginsTab-CZApRILr.js +1288 -0
- package/dist/PluginsTab-CZApRILr.js.map +1 -0
- package/dist/{ProgressbarWidget-C0AkbX_o.cjs → ProgressbarWidget-BADSYuUN.cjs} +2 -2
- package/dist/{ProgressbarWidget-C0AkbX_o.cjs.map → ProgressbarWidget-BADSYuUN.cjs.map} +1 -1
- package/dist/{ProgressbarWidget-Cdu5nJC3.js → ProgressbarWidget-oCgAEFBO.js} +2 -2
- package/dist/{ProgressbarWidget-Cdu5nJC3.js.map → ProgressbarWidget-oCgAEFBO.js.map} +1 -1
- package/dist/{RadiobuttonWidget-DslmJO31.cjs → RadiobuttonWidget-Bklx2_Au.cjs} +2 -2
- package/dist/{RadiobuttonWidget-DslmJO31.cjs.map → RadiobuttonWidget-Bklx2_Au.cjs.map} +1 -1
- package/dist/{RadiobuttonWidget-CZZGbvdG.js → RadiobuttonWidget-D4Dak3lc.js} +2 -2
- package/dist/{RadiobuttonWidget-CZZGbvdG.js.map → RadiobuttonWidget-D4Dak3lc.js.map} +1 -1
- package/dist/{RadiogroupWidget-CQN3v8Ip.js → RadiogroupWidget-Dbe9T4fp.js} +2 -2
- package/dist/{RadiogroupWidget-CQN3v8Ip.js.map → RadiogroupWidget-Dbe9T4fp.js.map} +1 -1
- package/dist/{RadiogroupWidget-DKgBAR9E.cjs → RadiogroupWidget-Z2S2tgjG.cjs} +2 -2
- package/dist/{RadiogroupWidget-DKgBAR9E.cjs.map → RadiogroupWidget-Z2S2tgjG.cjs.map} +1 -1
- package/dist/{RangebarWidget-Tq80I5zA.cjs → RangebarWidget-C0TpxFDi.cjs} +2 -2
- package/dist/{RangebarWidget-Tq80I5zA.cjs.map → RangebarWidget-C0TpxFDi.cjs.map} +1 -1
- package/dist/{RangebarWidget-dZN9WjoZ.js → RangebarWidget-CIVrgqrW.js} +2 -2
- package/dist/{RangebarWidget-dZN9WjoZ.js.map → RangebarWidget-CIVrgqrW.js.map} +1 -1
- package/dist/{RedisTab-CkSwEwTZ.js → RedisTab-B8U-vEQZ.js} +19 -16
- package/dist/{RedisTab-CkSwEwTZ.js.map → RedisTab-B8U-vEQZ.js.map} +1 -1
- package/dist/RedisTab-cgicWb81.cjs +2 -0
- package/dist/{RedisTab-CdiSo-CO.cjs.map → RedisTab-cgicWb81.cjs.map} +1 -1
- package/dist/{RollupWidget-CHdZAUCb.cjs → RollupWidget-BEDf-mfg.cjs} +2 -2
- package/dist/{RollupWidget-CHdZAUCb.cjs.map → RollupWidget-BEDf-mfg.cjs.map} +1 -1
- package/dist/{RollupWidget-i9DnNJl6.js → RollupWidget-CH1-XNLV.js} +2 -2
- package/dist/{RollupWidget-i9DnNJl6.js.map → RollupWidget-CH1-XNLV.js.map} +1 -1
- package/dist/{RoutersTab-Cp8wM-mS.cjs → RoutersTab-BA-KlYIm.cjs} +2 -2
- package/dist/{RoutersTab-Cp8wM-mS.cjs.map → RoutersTab-BA-KlYIm.cjs.map} +1 -1
- package/dist/{RoutersTab-DiYEI1Nq.js → RoutersTab-WKa6K7B8.js} +3 -3
- package/dist/{RoutersTab-DiYEI1Nq.js.map → RoutersTab-WKa6K7B8.js.map} +1 -1
- package/dist/{ScriptChooser-Cua8ObYv.js → ScriptChooser-B5TkGuZ4.js} +2 -2
- package/dist/{ScriptChooser-Cua8ObYv.js.map → ScriptChooser-B5TkGuZ4.js.map} +1 -1
- package/dist/{ScriptChooser-BnTP6ucF.cjs → ScriptChooser-LsboGSgh.cjs} +2 -2
- package/dist/{ScriptChooser-BnTP6ucF.cjs.map → ScriptChooser-LsboGSgh.cjs.map} +1 -1
- package/dist/{ScrollwindowWidget-54GU96Ve.js → ScrollwindowWidget-BwFG6Wn8.js} +15 -15
- package/dist/{ScrollwindowWidget-54GU96Ve.js.map → ScrollwindowWidget-BwFG6Wn8.js.map} +1 -1
- package/dist/ScrollwindowWidget-DWxDmpFB.cjs +2 -0
- package/dist/ScrollwindowWidget-DWxDmpFB.cjs.map +1 -0
- package/dist/{SecretsTab-DY16usGc.cjs → SecretsTab-DKX5gLH_.cjs} +2 -2
- package/dist/{SecretsTab-DY16usGc.cjs.map → SecretsTab-DKX5gLH_.cjs.map} +1 -1
- package/dist/{SecretsTab-uWRVI1EE.js → SecretsTab-Vtvbb_1U.js} +7 -5
- package/dist/{SecretsTab-uWRVI1EE.js.map → SecretsTab-Vtvbb_1U.js.map} +1 -1
- package/dist/SettingsTab-Ch52foLm.cjs +3 -0
- package/dist/SettingsTab-Ch52foLm.cjs.map +1 -0
- package/dist/SettingsTab-DilFIQ3K.js +1817 -0
- package/dist/SettingsTab-DilFIQ3K.js.map +1 -0
- package/dist/{SignalWidget-COL8kXSJ.cjs → SignalWidget-1WqQFVq9.cjs} +2 -2
- package/dist/{SignalWidget-COL8kXSJ.cjs.map → SignalWidget-1WqQFVq9.cjs.map} +1 -1
- package/dist/{SignalWidget-B_kA9eCJ.js → SignalWidget-Gz2gHrUm.js} +2 -2
- package/dist/{SignalWidget-B_kA9eCJ.js.map → SignalWidget-Gz2gHrUm.js.map} +1 -1
- package/dist/{SimpleTextDialog-BWUqPlTv.cjs → SimpleTextDialog-BwOVWhRY.cjs} +2 -2
- package/dist/{SimpleTextDialog-BWUqPlTv.cjs.map → SimpleTextDialog-BwOVWhRY.cjs.map} +1 -1
- package/dist/{SimpleTextDialog-BulqUrdH.js → SimpleTextDialog-Cmtrmt79.js} +10 -9
- package/dist/{SimpleTextDialog-BulqUrdH.js.map → SimpleTextDialog-Cmtrmt79.js.map} +1 -1
- package/dist/{SpacerWidget-XoMPHak8.js → SpacerWidget-Bg7VDB0k.js} +2 -2
- package/dist/{SpacerWidget-XoMPHak8.js.map → SpacerWidget-Bg7VDB0k.js.map} +1 -1
- package/dist/{SpacerWidget-D_Ya_b1j.cjs → SpacerWidget-Bzp3aI40.cjs} +2 -2
- package/dist/{SpacerWidget-D_Ya_b1j.cjs.map → SpacerWidget-Bzp3aI40.cjs.map} +1 -1
- package/dist/{SparklineWidget-DQNsvEj9.js → SparklineWidget-D_b5rfJv.js} +4 -4
- package/dist/{SparklineWidget-DQNsvEj9.js.map → SparklineWidget-D_b5rfJv.js.map} +1 -1
- package/dist/{SparklineWidget-CRzXTS5z.cjs → SparklineWidget-kMWjVDrm.cjs} +2 -2
- package/dist/{SparklineWidget-CRzXTS5z.cjs.map → SparklineWidget-kMWjVDrm.cjs.map} +1 -1
- package/dist/{TabbookWidget-_HVA72t5.js → TabbookWidget-C30f9B6z.js} +2 -2
- package/dist/{TabbookWidget-_HVA72t5.js.map → TabbookWidget-C30f9B6z.js.map} +1 -1
- package/dist/{TabbookWidget-Bh-GDBXg.cjs → TabbookWidget-DlVrU3wK.cjs} +2 -2
- package/dist/{TabbookWidget-Bh-GDBXg.cjs.map → TabbookWidget-DlVrU3wK.cjs.map} +1 -1
- package/dist/{TargetsTab-BfoRYnTP.js → TargetsTab-CEPId9dL.js} +5 -4
- package/dist/{TargetsTab-BfoRYnTP.js.map → TargetsTab-CEPId9dL.js.map} +1 -1
- package/dist/{TargetsTab-CGE-jQAz.cjs → TargetsTab-uqjueXlq.cjs} +2 -2
- package/dist/{TargetsTab-CGE-jQAz.cjs.map → TargetsTab-uqjueXlq.cjs.map} +1 -1
- package/dist/{TextBoxDialog-DWt30tB8.cjs → TextBoxDialog--uIDsNPU.cjs} +2 -2
- package/dist/{TextBoxDialog-DWt30tB8.cjs.map → TextBoxDialog--uIDsNPU.cjs.map} +1 -1
- package/dist/{TextBoxDialog-C60jmnyN.js → TextBoxDialog-BlZ6MBoW.js} +4 -3
- package/dist/{TextBoxDialog-C60jmnyN.js.map → TextBoxDialog-BlZ6MBoW.js.map} +1 -1
- package/dist/{TextboxWidget-uDptDK_z.cjs → TextboxWidget-BJka_3dT.cjs} +2 -2
- package/dist/{TextboxWidget-uDptDK_z.cjs.map → TextboxWidget-BJka_3dT.cjs.map} +1 -1
- package/dist/{TextboxWidget-0JXn4bMH.js → TextboxWidget-CDqxsgys.js} +4 -4
- package/dist/{TextboxWidget-0JXn4bMH.js.map → TextboxWidget-CDqxsgys.js.map} +1 -1
- package/dist/{TextfieldWidget-B0FCskrL.cjs → TextfieldWidget-C7_48W7n.cjs} +2 -2
- package/dist/{TextfieldWidget-B0FCskrL.cjs.map → TextfieldWidget-C7_48W7n.cjs.map} +1 -1
- package/dist/{TextfieldWidget-BXr9MkVW.js → TextfieldWidget-CAyjKJs6.js} +2 -2
- package/dist/{TextfieldWidget-BXr9MkVW.js.map → TextfieldWidget-CAyjKJs6.js.map} +1 -1
- package/dist/{TimeWidget-C67uwMGH.js → TimeWidget-BQsP0G2X.js} +2 -2
- package/dist/{TimeWidget-C67uwMGH.js.map → TimeWidget-BQsP0G2X.js.map} +1 -1
- package/dist/{TimeWidget-q5tUvHC6.cjs → TimeWidget-WPWiADCI.cjs} +2 -2
- package/dist/{TimeWidget-q5tUvHC6.cjs.map → TimeWidget-WPWiADCI.cjs.map} +1 -1
- package/dist/{TitleWidget-t_YLgUMB.js → TitleWidget-DXVba53S.js} +2 -2
- package/dist/{TitleWidget-t_YLgUMB.js.map → TitleWidget-DXVba53S.js.map} +1 -1
- package/dist/{TitleWidget-REsd7MqR.cjs → TitleWidget-DavRJ5B5.cjs} +2 -2
- package/dist/{TitleWidget-REsd7MqR.cjs.map → TitleWidget-DavRJ5B5.cjs.map} +1 -1
- package/dist/{ToolsTab-DKYeIlXu.js → ToolsTab-CSmjz1H7.js} +6 -5
- package/dist/{ToolsTab-DKYeIlXu.js.map → ToolsTab-CSmjz1H7.js.map} +1 -1
- package/dist/{ToolsTab-CGztf9_j.cjs → ToolsTab-DUwXt5hn.cjs} +3 -3
- package/dist/{ToolsTab-CGztf9_j.cjs.map → ToolsTab-DUwXt5hn.cjs.map} +1 -1
- package/dist/TopBar-C5lQcY1W.cjs +2 -0
- package/dist/{TopBar-B0UcAtIW.cjs.map → TopBar-C5lQcY1W.cjs.map} +1 -1
- package/dist/{TopBar-BrCfgCxc.js → TopBar-D_2lT9RB.js} +14 -12
- package/dist/{TopBar-BrCfgCxc.js.map → TopBar-D_2lT9RB.js.map} +1 -1
- package/dist/UpgradeToEnterpriseDialog-BHDDrj0t.cjs +2 -0
- package/dist/{UpgradeToEnterpriseDialog-DJ3oth3I.cjs.map → UpgradeToEnterpriseDialog-BHDDrj0t.cjs.map} +1 -1
- package/dist/{UpgradeToEnterpriseDialog-CGyR2v7U.js → UpgradeToEnterpriseDialog-Cvt5MMTj.js} +19 -16
- package/dist/{UpgradeToEnterpriseDialog-CGyR2v7U.js.map → UpgradeToEnterpriseDialog-Cvt5MMTj.js.map} +1 -1
- package/dist/{UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-NIAkCgU6.js → UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-DWYRspHE.js} +12491 -12383
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-DWYRspHE.js.map +1 -0
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-mEnslAi4.cjs +1498 -0
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-mEnslAi4.cjs.map +1 -0
- package/dist/VWidget-C7V6pKTg.cjs +2 -0
- package/dist/VWidget-C7V6pKTg.cjs.map +1 -0
- package/dist/{VWidget-j2GIGGSX.js → VWidget-CFTCukCL.js} +16 -10
- package/dist/VWidget-CFTCukCL.js.map +1 -0
- package/dist/{ValueWidget-CjZeSiPQ.cjs → ValueWidget-5ulSOrPw.cjs} +2 -2
- package/dist/{ValueWidget-CjZeSiPQ.cjs.map → ValueWidget-5ulSOrPw.cjs.map} +1 -1
- package/dist/{ValueWidget-3jNtnh5i.js → ValueWidget-B-TWLPdM.js} +4 -4
- package/dist/{ValueWidget-3jNtnh5i.js.map → ValueWidget-B-TWLPdM.js.map} +1 -1
- package/dist/{ValuelimitsbarWidget-CkLbRP8P.cjs → ValuelimitsbarWidget-CTFVDwcL.cjs} +2 -2
- package/dist/{ValuelimitsbarWidget-CkLbRP8P.cjs.map → ValuelimitsbarWidget-CTFVDwcL.cjs.map} +1 -1
- package/dist/{ValuelimitsbarWidget-JSceOzGS.js → ValuelimitsbarWidget-jsDXdPdC.js} +4 -4
- package/dist/{ValuelimitsbarWidget-JSceOzGS.js.map → ValuelimitsbarWidget-jsDXdPdC.js.map} +1 -1
- package/dist/{ValuelimitscolumnWidget-DpU4BoB7.cjs → ValuelimitscolumnWidget-Du3Baz6G.cjs} +2 -2
- package/dist/{ValuelimitscolumnWidget-DpU4BoB7.cjs.map → ValuelimitscolumnWidget-Du3Baz6G.cjs.map} +1 -1
- package/dist/{ValuelimitscolumnWidget-HR1TNHwQ.js → ValuelimitscolumnWidget-I-uwnXM2.js} +4 -4
- package/dist/{ValuelimitscolumnWidget-HR1TNHwQ.js.map → ValuelimitscolumnWidget-I-uwnXM2.js.map} +1 -1
- package/dist/{ValuerangebarWidget-CpZYmUl_.cjs → ValuerangebarWidget-BjXDCLm3.cjs} +2 -2
- package/dist/{ValuerangebarWidget-CpZYmUl_.cjs.map → ValuerangebarWidget-BjXDCLm3.cjs.map} +1 -1
- package/dist/{ValuerangebarWidget-DnZrho8S.js → ValuerangebarWidget-OyhSTScu.js} +4 -4
- package/dist/{ValuerangebarWidget-DnZrho8S.js.map → ValuerangebarWidget-OyhSTScu.js.map} +1 -1
- package/dist/VerticalWidget-CKDTGmhp.cjs +2 -0
- package/dist/{VerticalWidget-CcJMMaK_.cjs.map → VerticalWidget-CKDTGmhp.cjs.map} +1 -1
- package/dist/{VerticalWidget-DJvoxqLE.js → VerticalWidget-CkFbX1Gq.js} +13 -13
- package/dist/{VerticalWidget-DJvoxqLE.js.map → VerticalWidget-CkFbX1Gq.js.map} +1 -1
- package/dist/VerticalboxWidget-D09UbA0I.cjs +2 -0
- package/dist/{VerticalboxWidget-CJR_mOLa.cjs.map → VerticalboxWidget-D09UbA0I.cjs.map} +1 -1
- package/dist/{VerticalboxWidget-CYYyLBoO.js → VerticalboxWidget-FEQgPM9r.js} +13 -13
- package/dist/{VerticalboxWidget-CYYyLBoO.js.map → VerticalboxWidget-FEQgPM9r.js.map} +1 -1
- package/dist/{Widget-Bn_S-zBo.js → Widget-C3-TBgP7.js} +4 -4
- package/dist/Widget-C3-TBgP7.js.map +1 -0
- package/dist/{Widget-O7wkmc39.cjs → Widget-CSBtgNwA.cjs} +2 -2
- package/dist/{Widget-O7wkmc39.cjs.map → Widget-CSBtgNwA.cjs.map} +1 -1
- package/dist/components.cjs +3 -3
- package/dist/components.cjs.map +1 -1
- package/dist/components.js +257 -804
- 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-qCq0L4jN.js → index-DDjz5VQq.js} +345 -327
- package/dist/index-DDjz5VQq.js.map +1 -0
- package/dist/index-DZh4NjG5.cjs +7 -0
- package/dist/index-DZh4NjG5.cjs.map +1 -0
- package/dist/parse-DnkEsW-3.js.map +1 -1
- package/dist/parse-DwfgQboe.cjs.map +1 -1
- package/dist/plugins.cjs +2 -2
- package/dist/plugins.cjs.map +1 -1
- package/dist/plugins.js +184 -175
- package/dist/plugins.js.map +1 -1
- package/dist/settings-BboN1VLt.cjs +2 -0
- package/dist/settings-BboN1VLt.cjs.map +1 -0
- package/dist/settings-spKii1fI.js +34 -0
- package/dist/settings-spKii1fI.js.map +1 -0
- package/dist/timeFilters-BKnCM4rv.js.map +1 -1
- package/dist/timeFilters-CJFxfjqN.cjs.map +1 -1
- package/dist/tools/admin.cjs +3 -3
- package/dist/tools/admin.cjs.map +1 -1
- package/dist/tools/admin.js +90 -59
- package/dist/tools/admin.js.map +1 -1
- package/dist/tools/base.cjs +1 -1
- package/dist/tools/base.cjs.map +1 -1
- package/dist/tools/base.js +530 -474
- package/dist/tools/base.js.map +1 -1
- package/dist/tools/calendar.cjs +1 -1
- package/dist/tools/calendar.js +1 -1
- package/dist/tools/scriptrunner.cjs +7 -7
- package/dist/tools/scriptrunner.cjs.map +1 -1
- package/dist/tools/scriptrunner.js +344 -293
- package/dist/tools/scriptrunner.js.map +1 -1
- package/dist/vue-common.css +1 -1
- package/dist/widgets.cjs +1 -1
- package/dist/widgets.js +63 -63
- package/package.json +14 -14
- package/dist/ArrayplotWidget-DC41cpv1.cjs +0 -2
- package/dist/ArrayplotWidget-DC41cpv1.cjs.map +0 -1
- package/dist/ArrayplotWidget-ntRLh6-B.js.map +0 -1
- package/dist/CriticalCmdDialog-7tOK2XQk.cjs +0 -2
- package/dist/DetailsDialog-BQE0TraI.js.map +0 -1
- package/dist/DetailsDialog-DmKpPDNn.cjs +0 -2
- package/dist/DetailsDialog-DmKpPDNn.cjs.map +0 -1
- package/dist/EventListDialog-CDcJcxy5.cjs +0 -2
- package/dist/Graph-DCihpnT0.js +0 -1853
- package/dist/Graph-DCihpnT0.js.map +0 -1
- package/dist/Graph-mSqImgca.cjs +0 -2
- package/dist/Graph-mSqImgca.cjs.map +0 -1
- package/dist/GraphWidget-CQjKAMPR.cjs +0 -2
- package/dist/HorizontalWidget--AkRJPlL.cjs +0 -2
- package/dist/HorizontalboxWidget-synL-Bar.cjs +0 -2
- package/dist/Layout-kOQnicRa.cjs +0 -2
- package/dist/LedWidget-BN8IgAxJ.js.map +0 -1
- package/dist/LedWidget-BUTbyEBi.cjs +0 -2
- package/dist/LedWidget-BUTbyEBi.cjs.map +0 -1
- package/dist/LinegraphWidget-Bay0EtbI.cjs +0 -2
- package/dist/LinegraphWidget-Bay0EtbI.cjs.map +0 -1
- package/dist/LinegraphWidget-jXksfbPb.js.map +0 -1
- package/dist/MatrixbycolumnsWidget-DxRhvPGv.cjs +0 -2
- package/dist/Openc3Screen-BZN0Wtrm.js.map +0 -1
- package/dist/Openc3Screen-dtpBWZdA.cjs +0 -5
- package/dist/Openc3Screen-dtpBWZdA.cjs.map +0 -1
- package/dist/PackagesTab-B4V2n4io.cjs +0 -2
- package/dist/PluginsTab-DHO1tK2S.cjs +0 -6
- package/dist/PluginsTab-DHO1tK2S.cjs.map +0 -1
- package/dist/PluginsTab-lHDR5v6S.js +0 -562
- package/dist/PluginsTab-lHDR5v6S.js.map +0 -1
- package/dist/RedisTab-CdiSo-CO.cjs +0 -2
- package/dist/ScrollwindowWidget-C5_X-KwQ.cjs +0 -2
- package/dist/ScrollwindowWidget-C5_X-KwQ.cjs.map +0 -1
- package/dist/SettingsTab-BVnr4OtU.js +0 -1445
- package/dist/SettingsTab-BVnr4OtU.js.map +0 -1
- package/dist/SettingsTab-BkwaDhYo.cjs +0 -3
- package/dist/SettingsTab-BkwaDhYo.cjs.map +0 -1
- package/dist/TopBar-B0UcAtIW.cjs +0 -2
- package/dist/UpgradeToEnterpriseDialog-DJ3oth3I.cjs +0 -2
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-C_HFbtFB.cjs +0 -1497
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-C_HFbtFB.cjs.map +0 -1
- package/dist/UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-NIAkCgU6.js.map +0 -1
- package/dist/VWidget-BMxLXtSO.cjs +0 -2
- package/dist/VWidget-BMxLXtSO.cjs.map +0 -1
- package/dist/VWidget-j2GIGGSX.js.map +0 -1
- package/dist/VerticalWidget-CcJMMaK_.cjs +0 -2
- package/dist/VerticalboxWidget-CJR_mOLa.cjs +0 -2
- package/dist/Widget-Bn_S-zBo.js.map +0 -1
- package/dist/index-DcL65Mqb.cjs +0 -7
- package/dist/index-DcL65Mqb.cjs.map +0 -1
- package/dist/index-qCq0L4jN.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Graph-BiU56Qj2.js","sources":["../src/components/TargetPacketItemChooser.vue","../src/components/GraphEditDialog.vue","../src/components/GraphEditItemDialog.vue","../src/components/Graph.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# A portion of this file was funded by Blue Origin Enterprises, L.P.\n# See https://github.com/OpenC3/cosmos/pull/1957\n-->\n\n<template>\n <div class=\"pt-4 pb-4\">\n <v-row :no-gutters=\"!vertical\">\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-target\">\n <v-autocomplete\n v-model=\"selectedTargetName\"\n label=\"Select Target\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"autocompleteDisabled || lockTarget\"\n :items=\"targetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"targetNameChanged\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"select-packet\">\n <v-autocomplete\n v-model=\"selectedPacketName\"\n label=\"Select Packet\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"packetsDisabled || autocompleteDisabled || lockPacket\"\n :items=\"packetNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"packetNameChanged\"\n >\n <template v-if=\"includeLatestPacketInDropdown\" #prepend-item>\n <v-list-item title=\"LATEST\" @click=\"packetNameChanged('LATEST')\" />\n <v-divider />\n </template>\n </v-autocomplete>\n </v-col>\n <v-col\n v-if=\"chooseItem\"\n :cols=\"colSize\"\n class=\"tpic-select pr-4\"\n data-test=\"select-item\"\n >\n <v-autocomplete\n v-model=\"selectedItemName\"\n label=\"Select Item\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"itemNames\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"itemNameChanged($event)\"\n />\n </v-col>\n <!-- min-width: 105px is enough to display a 2 digit index -->\n <v-col\n v-if=\"chooseItem && itemIsArray\"\n cols=\"1\"\n class=\"tpic-select pr-4\"\n data-test=\"array-index\"\n style=\"min-width: 105px\"\n >\n <v-combobox\n v-model=\"selectedArrayIndex\"\n label=\"Index\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"itemsDisabled || autocompleteDisabled\"\n :items=\"arrayIndexes\"\n item-title=\"label\"\n item-value=\"value\"\n @update:model-value=\"indexChanged($event)\"\n />\n </v-col>\n <v-col v-if=\"buttonText\" :cols=\"colSize\" style=\"max-width: 140px\">\n <v-btn\n :disabled=\"buttonDisabled\"\n color=\"primary\"\n data-test=\"select-send\"\n @click=\"buttonPressed\"\n >\n {{ actualButtonText }}\n </v-btn>\n </v-col>\n </v-row>\n <v-row v-if=\"selectTypes\" class=\"pt-6\" no-gutters>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"data-type\">\n <v-autocomplete\n v-model=\"selectedValueType\"\n label=\"Value Type\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"valueTypes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced\">\n <v-autocomplete\n v-model=\"selectedReduced\"\n label=\"Reduced\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :items=\"reductionModes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" class=\"tpic-select pr-4\" data-test=\"reduced-type\">\n <v-autocomplete\n v-model=\"selectedReducedType\"\n label=\"Reduced Type\"\n hide-details\n density=\"compact\"\n variant=\"outlined\"\n :disabled=\"selectedReduced === 'DECOM'\"\n :items=\"reducedTypes\"\n />\n </v-col>\n <v-col :cols=\"colSize\" style=\"max-width: 140px\"> </v-col>\n </v-row>\n <v-row no-gutters class=\"pa-3\">\n <v-col :cols=\"colSize\" :class=\"{ 'openc3-yellow': hazardous }\">\n Description: {{ description }}\n <template v-if=\"hazardous\"> (HAZARDOUS) </template>\n </v-col>\n </v-row>\n </div>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\n\nexport default {\n props: {\n allowAll: {\n type: Boolean,\n default: false,\n },\n allowAllTargets: {\n type: Boolean,\n default: false,\n },\n allowAllArrayIndex: {\n type: Boolean,\n default: false,\n },\n buttonText: {\n type: String,\n default: null,\n },\n chooseItem: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n initialTargetName: {\n type: String,\n default: '',\n },\n initialPacketName: {\n type: String,\n default: '',\n },\n initialItemName: {\n type: String,\n default: '',\n },\n selectTypes: {\n type: Boolean,\n default: false,\n },\n showLatest: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: 'tlm',\n // TODO: add validators throughout\n validator: (propValue) => {\n return ['cmd', 'tlm'].includes(propValue)\n },\n },\n unknown: {\n type: Boolean,\n default: false,\n },\n vertical: {\n type: Boolean,\n default: false,\n },\n hidden: {\n type: Boolean,\n default: false,\n },\n lockTarget: {\n type: Boolean,\n default: false,\n },\n lockPacket: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['on-set', 'addItem'],\n data() {\n return {\n targetNames: [],\n selectedTargetName: this.initialTargetName?.toUpperCase(),\n packetNames: [],\n selectedPacketName: this.initialPacketName?.toUpperCase(),\n itemNames: [],\n selectedItemName: this.initialItemName?.toUpperCase(),\n valueTypes: ['CONVERTED', 'RAW'],\n selectedValueType: 'CONVERTED',\n reductionModes: [\n // Map NONE to DECOM for clarity\n { title: 'NONE', value: 'DECOM' },\n { title: 'REDUCED_MINUTE', value: 'REDUCED_MINUTE' },\n { title: 'REDUCED_HOUR', value: 'REDUCED_HOUR' },\n { title: 'REDUCED_DAY', value: 'REDUCED_DAY' },\n ],\n selectedArrayIndex: null,\n selectedReduced: 'DECOM',\n reducedTypes: ['MIN', 'MAX', 'AVG', 'STDDEV'],\n selectedReducedType: 'AVG',\n description: '',\n hazardous: false,\n internalDisabled: false,\n packetsDisabled: false,\n itemsDisabled: false,\n api: null,\n ALL: {\n label: '[ ALL ]',\n value: 'ALL',\n description: 'ALL',\n }, // Constant to indicate all packets or items\n UNKNOWN: {\n label: '[ UNKNOWN ]',\n value: 'UNKNOWN',\n description: 'UNKNOWN',\n },\n }\n },\n computed: {\n actualButtonText: function () {\n if (this.selectedPacketName === 'ALL') {\n return 'Add Target'\n }\n if (this.selectedItemName === 'ALL') {\n return 'Add Packet'\n }\n return this.buttonText\n },\n autocompleteDisabled: function () {\n return this.disabled || this.internalDisabled\n },\n buttonDisabled: function () {\n return (\n this.disabled ||\n this.internalDisabled ||\n this.selectedTargetName === null ||\n this.selectedPacketName === null ||\n this.selectedItemNameWIndex === null\n )\n },\n colSize: function () {\n return this.vertical ? 12 : false\n },\n selectedItemNameWIndex: function () {\n if (\n this.itemIsArray &&\n this.selectedArrayIndex !== null &&\n this.selectedArrayIndex !== this.ALL.label\n ) {\n return `${this.selectedItemName}[${this.selectedArrayIndex}]`\n } else {\n return this.selectedItemName\n }\n },\n includeLatestPacketInDropdown: function () {\n return this.showLatest && this.mode === 'tlm' // because LATEST cmd doesn't have much use and thus isn't currently implemented\n },\n arrayIndexes: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n let indexes = [...Array(this.itemNames[i].array).keys()]\n if (this.allowAll || this.allowAllArrayIndex) {\n indexes.unshift(this.ALL.label)\n }\n return indexes\n },\n itemIsArray: function () {\n let i = this.itemNames.findIndex(\n (item) => item.value === this.selectedItemName,\n )\n if (i === -1 || isNaN(this.itemNames[i].array)) {\n return false\n } else {\n return true\n }\n },\n },\n watch: {\n initialTargetName: function (val) {\n // These three \"initial\" watchers are here in case the parent component doesn't figure out its initial values\n // until after this component has already been created. All this logic incl. the \"on-set\" events could be\n // simplified with a refactor to use named v-models, but that's probably a significant breaking change.\n if (val) {\n this.selectedTargetName = val.toUpperCase()\n }\n },\n initialPacketName: function (val) {\n if (val) {\n this.selectedPacketName = val.toUpperCase()\n }\n },\n initialItemName: function (val) {\n if (val) {\n this.selectedItemName = val.toUpperCase()\n }\n },\n mode: function (newVal, oldVal) {\n this.selectedPacketName = null\n this.selectedItemName = null\n // This also updates packets and items as needed\n this.targetNameChanged(this.selectedTargetName)\n },\n chooseItem: function (newVal, oldVal) {\n if (newVal) {\n this.updateItems()\n } else {\n this.itemNames = []\n }\n },\n itemIsArray: function (val) {\n if (val) {\n this.selectedArrayIndex ||= 0\n } else {\n this.selectedArrayIndex = null\n }\n },\n },\n created() {\n this.internalDisabled = true\n this.api = new OpenC3Api()\n this.api.get_target_names().then((result) => {\n this.targetNames = result.flatMap((target) => {\n // Ignore the UNKNOWN target as it doesn't make sense to select this\n if (target == 'UNKNOWN') {\n return []\n }\n return { label: target, value: target }\n })\n // TODO: This is a nice enhancement but results in logs of API calls for many targets\n // See if we can reduce this to a single API call\n // Filter out any targets without packets\n // for (let i = this.targetNames.length - 1; i >= 0; i--) {\n // const cmd =\n // this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n // await this.api[cmd](this.targetNames[i].value).then((names) => {\n // if (names.length === 0) {\n // this.targetNames.splice(i, 1)\n // }\n // })\n // }\n if (this.allowAllTargets) {\n this.targetNames.unshift(this.ALL)\n }\n // If the initial target name is not set, default to the first target\n // which also updates packets and items as needed\n if (!this.selectedTargetName) {\n this.selectedTargetName = this.targetNames[0].value\n this.targetNameChanged(this.selectedTargetName)\n } else {\n // Selected target name was set but we still have to update packets\n this.updatePackets()\n }\n if (this.unknown) {\n this.targetNames.push(this.UNKNOWN)\n }\n })\n },\n methods: {\n updatePackets: function () {\n if (this.selectedTargetName === 'UNKNOWN') {\n this.packetNames = [this.UNKNOWN]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.UNKNOWN.value)\n this.description = 'UNKNOWN'\n return\n }\n if (this.selectedTargetName === 'ALL') {\n this.packetNames = [this.ALL]\n this.selectedPacketName = this.packetNames[0].value\n this.updatePacketDetails(this.ALL.value)\n this.description = 'ALL'\n return\n }\n this.internalDisabled = true\n const cmd =\n this.mode === 'tlm' ? 'get_all_tlm_names' : 'get_all_cmd_names'\n this.api[cmd](this.selectedTargetName, this.hidden).then((names) => {\n this.packetNames = names.map((name) => {\n return {\n label: name,\n value: name,\n }\n })\n if (this.allowAll) {\n this.packetNames.unshift(this.ALL)\n }\n if (!this.selectedPacketName) {\n if (this.packetNames.length === 0) {\n this.selectedPacketName = null\n } else {\n this.selectedPacketName = this.packetNames[0].value\n }\n }\n this.updatePacketDetails(this.selectedPacketName)\n const item = this.packetNames.find((packet) => {\n return packet.value === this.selectedPacketName\n })\n if (item && this.chooseItem) {\n this.updateItems()\n }\n this.internalDisabled = false\n })\n },\n\n updateItems: function () {\n if (this.selectedPacketName === 'ALL') {\n return\n }\n this.internalDisabled = true\n\n if (this.selectedPacketName === 'LATEST') {\n this.api\n .get_all_tlm_item_names(this.selectedTargetName)\n .then((items) => {\n this.itemNames = items.map((item) => {\n return {\n label: item,\n value: item,\n description: `LATEST ${item}`,\n // Don't handle array for LATEST\n }\n })\n this.finishUpdateItems()\n })\n } else {\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.itemNames = packet.items.map((item) => {\n let label = item.name\n if (item.data_type == 'DERIVED') {\n label += ' *'\n }\n return {\n label: label,\n value: item.name,\n description: item.description,\n array: item.array_size / item.bit_size,\n }\n })\n this.itemNames.sort((a, b) => (a.label > b.label ? 1 : -1))\n this.finishUpdateItems()\n },\n )\n }\n },\n finishUpdateItems: function () {\n if (this.allowAll) {\n this.itemNames.unshift(this.ALL)\n }\n if (!this.selectedItemName) {\n this.selectedItemName = this.itemNames[0].value\n }\n this.description = this.itemNames[0].description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n this.internalDisabled = false\n },\n\n targetNameChanged: function (value) {\n this.selectedTargetName = value\n this.selectedPacketName = ''\n this.selectedItemName = ''\n // When the target name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packets\n if (value !== null) {\n this.updatePackets()\n }\n },\n\n packetNameChanged: function (value) {\n this.selectedItemName = ''\n // When the packet name is completed deleted in the v-autocomplete\n // the @change handler is fired but the value is null\n // In this case we don't want to update packet details\n if (value !== null) {\n this.updatePacketDetails(value)\n }\n },\n\n updatePacketDetails: function (value) {\n if (value === 'ALL') {\n this.itemsDisabled = true\n this.internalDisabled = false\n } else if (value === 'LATEST') {\n this.itemsDisabled = false\n this.selectedPacketName = 'LATEST'\n } else {\n this.itemsDisabled = false\n const packet = this.packetNames.find((packet) => {\n return value === packet.value\n })\n if (packet) {\n this.selectedPacketName = packet.value\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, this.selectedPacketName).then(\n (packet) => {\n this.description = packet.description\n this.hazardous = packet.hazardous\n },\n )\n }\n }\n if (this.chooseItem) {\n this.updateItems()\n } else {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n itemNameChanged: function (value) {\n const item = this.itemNames.find((item) => {\n return value === item.value\n })\n if (item) {\n this.selectedItemName = item.value\n this.description = item.description\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n indexChanged: function (value) {\n this.$emit('on-set', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n },\n\n buttonPressed: function () {\n if (this.selectedPacketName === 'ALL') {\n this.allTargetPacketItems()\n } else if (this.selectedItemName === 'ALL') {\n this.allPacketItems()\n } else if (this.chooseItem) {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: this.selectedItemNameWIndex,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n } else {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n }\n },\n\n allTargetPacketItems: function () {\n this.packetNames.forEach((packetName) => {\n if (packetName === this.ALL) return\n const cmd = this.mode === 'tlm' ? 'get_tlm' : 'get_cmd'\n this.api[cmd](this.selectedTargetName, packetName.value).then(\n (packet) => {\n packet.items.forEach((item) => {\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: packetName.value,\n itemName: item['name'],\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n })\n },\n )\n })\n },\n\n allPacketItems: function () {\n this.itemNames.forEach((item) => {\n if (item === this.ALL) return\n this.$emit('addItem', {\n targetName: this.selectedTargetName,\n packetName: this.selectedPacketName,\n itemName: item.value,\n valueType: this.selectedValueType,\n reduced: this.selectedReduced,\n reducedType: this.selectedReducedType,\n })\n })\n },\n },\n}\n</script>\n<style scoped>\n.button {\n padding: 4px;\n}\n.tpic-select {\n max-width: 300px;\n}\n</style>\n","<!--\n# Copyright 2024 OpenC3, Inc.\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# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <!-- Edit Item dialog -->\n <v-dialog v-model=\"show\" max-width=\"700\" @keydown.esc=\"$emit('cancel')\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span> Edit Graph </span>\n <v-spacer />\n </v-toolbar>\n <v-card class=\"pa-3\">\n <v-tabs v-model=\"tab\" class=\"ml-3\">\n <v-tab value=\"0\"> Settings </v-tab>\n <v-tab value=\"1\"> Scale / Lines </v-tab>\n <v-tab value=\"2\"> Items </v-tab>\n </v-tabs>\n <v-tabs-window v-model=\"tab\">\n <v-tabs-window-item value=\"0\" eager>\n <div class=\"edit-box\">\n <v-row>\n <v-col>\n <v-card-text class=\"pa-0\">\n <v-text-field\n v-model=\"graph.title\"\n class=\"pb-2\"\n label=\"Title\"\n hide-details\n />\n </v-card-text>\n </v-col>\n <v-col>\n <v-select\n v-model=\"graph.legendPosition\"\n label=\"Legend Position\"\n hide-details\n :items=\"legendPositions\"\n style=\"max-width: 280px\"\n />\n </v-col>\n </v-row>\n </div>\n <div class=\"edit-box\">\n <v-card-text class=\"pa-0\">\n Select a start date/time for the graph. Leave blank for start now.\n </v-card-text>\n <v-row>\n <v-col>\n <v-text-field\n v-model=\"startDate\"\n label=\"Start Date\"\n :name=\"`date${Date.now()}`\"\n :rules=\"[rules.date]\"\n type=\"date\"\n />\n </v-col>\n <v-col>\n <!-- We set the :name attribute to be unique to avoid auto-completion -->\n <v-text-field\n v-model=\"startTime\"\n label=\"Start Time\"\n :name=\"`time${Date.now()}`\"\n :rules=\"[rules.time]\"\n type=\"time\"\n step=\"1\"\n />\n </v-col>\n </v-row>\n <v-card-text class=\"pa-0\">\n Select a end date/time for the graph. Leave blank for continuous\n real-time graphing.\n </v-card-text>\n <v-row>\n <v-col>\n <v-text-field\n v-model=\"endDate\"\n label=\"End Date\"\n :name=\"`date${Date.now()}`\"\n :rules=\"[rules.date]\"\n type=\"date\"\n />\n </v-col>\n <v-col>\n <!-- We set the :name attribute to be unique to avoid auto-completion -->\n <v-text-field\n v-model=\"endTime\"\n label=\"End Time\"\n :name=\"`time${Date.now()}`\"\n :rules=\"[rules.time]\"\n type=\"time\"\n step=\"1\"\n />\n </v-col>\n </v-row>\n </div>\n </v-tabs-window-item>\n <v-tabs-window-item value=\"1\" eager>\n <div class=\"edit-box\">\n <v-card-text class=\"pa-0\">\n Set a min or max Y value to override automatic scaling\n </v-card-text>\n <v-row dense>\n <v-col class=\"px-2\">\n <v-text-field\n v-model=\"graph.graphMinY\"\n hide-details\n label=\"Min Y Axis (Optional)\"\n type=\"number\"\n />\n </v-col>\n <v-col class=\"px-2\">\n <v-text-field\n v-model=\"graph.graphMaxY\"\n hide-details\n label=\"Max Y Axis (Optional)\"\n type=\"number\"\n />\n </v-col>\n </v-row>\n </div>\n <div class=\"edit-box\">\n <v-list density=\"compact\" class=\"horizontal-lines\">\n <v-list-item>\n <span style=\"padding-top: 5px\">\n Add horizontal lines to the graph\n </span>\n <v-spacer />\n <v-btn @click=\"addLine()\"> New Line </v-btn>\n </v-list-item>\n <v-list-item\n v-for=\"(item, i) in graph.lines\"\n :key=\"i\"\n :value=\"item\"\n color=\"primary\"\n >\n <v-row>\n <v-col>\n <v-text-field v-model=\"item.yValue\" label=\"Y Value\" />\n </v-col>\n <v-col>\n <v-select\n v-model=\"item.color\"\n label=\"Color\"\n hide-details\n :items=\"colors\"\n />\n </v-col>\n <v-col>\n <v-btn\n style=\"padding: 30px\"\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Remove Line\"\n @click=\"removeLine(item)\"\n />\n </v-col>\n </v-row>\n </v-list-item>\n </v-list>\n </div>\n <div class=\"edit-box\">\n <v-card-text class=\"pa-0 text-medium-emphasis\">\n Choose a different item to use for the graph's X axis. If\n unchecked, the graph will use the packet's PACKET_TIME item if it\n exists, otherwise it will use the system received time for the\n packet.\n </v-card-text>\n <v-checkbox\n v-model=\"customXAxisEnabled\"\n :disabled=\"!xAxisItemPacket\"\n label=\"Custom X axis item\"\n density=\"compact\"\n hide-details\n @update:model-value=\"customXAxisToggled\"\n />\n <v-card-text\n v-if=\"!xAxisItemPacket\"\n class=\"pa-0 text-medium-emphasis\"\n >\n All items on the graph must be in the same packet to enable this\n feature.\n </v-card-text>\n <target-packet-item-chooser\n v-if=\"customXAxisEnabled && xAxisItemPacket\"\n :initial-target-name=\"xAxisItemPacket.targetName\"\n :initial-packet-name=\"xAxisItemPacket.packetName\"\n :initial-item-name=\"initialXAxisItem\"\n choose-item\n lock-target\n lock-packet\n button-text=\"Set\"\n @on-set=\"xAxisItemChanged\"\n @add-item=\"xAxisItemSelected\"\n />\n </div>\n </v-tabs-window-item>\n <v-tabs-window-item value=\"2\" eager>\n <v-data-table\n item-key=\"itemId\"\n class=\"elevation-1 my-2\"\n data-test=\"edit-graph-items\"\n :headers=\"itemHeaders\"\n :items=\"editItems\"\n :items-per-page=\"5\"\n :footer-props=\"{\n 'items-per-page-options': [5],\n }\"\n >\n <template #item.actions=\"{ item }\">\n <v-btn\n icon=\"mdi-delete\"\n variant=\"text\"\n aria-label=\"Remove Item\"\n @click=\"$emit('remove', item)\"\n />\n </template>\n <template #no-data>\n <span> Currently no items on this graph </span>\n </template>\n </v-data-table>\n </v-tabs-window-item>\n </v-tabs-window>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn variant=\"outlined\" @click=\"$emit('cancel')\"> Cancel </v-btn>\n <v-btn variant=\"flat\" @click=\"closeOk\"> Ok </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { TimeFilters } from '@/util'\nimport TargetPacketItemChooser from './TargetPacketItemChooser.vue'\nimport { isValid, parse, toDate } from 'date-fns'\nexport default {\n components: {\n TargetPacketItemChooser,\n },\n mixins: [TimeFilters],\n props: {\n modelValue: Boolean, // modelValue is the default prop when using v-model\n title: {\n type: String,\n required: true,\n },\n legendPosition: {\n type: String,\n required: true,\n },\n items: {\n type: Array,\n required: true,\n },\n graphMinY: {\n type: Number,\n },\n graphMaxY: {\n type: Number,\n },\n lines: {\n type: Array,\n required: true,\n },\n colors: {\n type: Array,\n required: true,\n },\n startDateTime: {\n type: Number,\n },\n endDateTime: {\n type: Number,\n },\n timeZone: {\n type: String,\n required: true,\n },\n xAxisItemPacket: {\n type: Object,\n default: undefined,\n },\n xAxisItem: {\n type: String,\n default: '__time',\n },\n },\n emits: ['cancel', 'ok', 'remove', 'update:modelValue', 'update:xAxisItem'],\n data: function () {\n return {\n tab: 0,\n graph: {},\n customXAxisEnabled: false,\n selectedXAxisItem: null,\n pendingXAxisSelection: null,\n legendPositions: ['top', 'bottom', 'left', 'right'],\n startDate: null,\n startTime: null,\n endDate: null,\n endTime: null,\n lineHeaders: [\n { title: 'Y Value', value: 'yValue' },\n { title: 'Color', value: 'color' },\n { title: 'Actions', value: 'actions', sortable: false },\n ],\n itemHeaders: [\n { title: 'Target Name', value: 'targetName' },\n { title: 'Packet Name', value: 'packetName' },\n { title: 'Item Name', value: 'itemName' },\n { title: 'Actions', value: 'actions', sortable: false },\n ],\n rules: {\n date: (value) => {\n if (!value) return true\n try {\n return (\n isValid(parse(value, 'yyyy-MM-dd', new Date())) ||\n 'Invalid date (YYYY-MM-DD)'\n )\n } catch (e) {\n return 'Invalid date (YYYY-MM-DD)'\n }\n },\n time: (value) => {\n if (!value) return true\n try {\n return (\n isValid(parse(value, 'HH:mm:ss', new Date())) ||\n 'Invalid time (HH:MM:SS)'\n )\n } catch (e) {\n return 'Invalid time (HH:MM:SS)'\n }\n },\n },\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value) // update is the default event when using v-model\n },\n },\n editItems: function () {\n if (!this.items) return []\n let itemId = 0\n return this.items.map((item) => {\n itemId += 1\n return { ...item, itemId }\n })\n },\n initialXAxisItem: function () {\n // Just for TargetPacketItemChooser\n if (this.xAxisItem === '__time') {\n return\n }\n return this.xAxisItem.split('__').at(4)\n },\n },\n created() {\n this.graph = {\n title: this.title,\n legendPosition: this.legendPosition,\n items: this.items,\n graphMinY: this.graphMinY,\n graphMaxY: this.graphMaxY,\n lines: [...this.lines],\n }\n this.customXAxisEnabled = this.xAxisItem && this.xAxisItem !== '__time'\n this.selectedXAxisItem = this.xAxisItem\n // Set the date and time if they pass a dateTime or set a default\n // Start needs a default because if the timeZone is UTC the time will still be local time\n if (this.startDateTime) {\n // Use the passed dateTime as is\n let date = toDate(this.startDateTime / 1000000)\n this.startDate = this.formatDate(date, this.timeZone)\n this.startTime = this.formatTimeHMS(date, this.timeZone)\n } else {\n // Create a new date 1 hr in the past as a default\n let date = new Date() - 3600000\n this.startDate = this.formatDate(date, this.timeZone)\n this.startTime = this.formatTimeHMS(date, this.timeZone)\n }\n // Only set end date / time if it is explicitly passed\n if (this.endDateTime) {\n let date = toDate(this.endDateTime / 1000000)\n this.endDate = this.formatDate(date, this.timeZone)\n this.endTime = this.formatTimeHMS(date, this.timeZone)\n }\n },\n methods: {\n closeOk() {\n if (!!this.startDate && !!this.startTime) {\n this.graph.startDateTime = this.startDate + ' ' + this.startTime\n } else {\n this.graph.startDateTime = null\n }\n if (!!this.endDate && !!this.endTime) {\n this.graph.endDateTime = this.endDate + ' ' + this.endTime\n } else {\n this.graph.endDateTime = null\n }\n this.$emit('ok', this.graph)\n },\n addLine() {\n this.graph.lines.push({ yValue: 0, color: 'white' })\n },\n removeLine(dline) {\n let i = this.graph.lines.indexOf(dline)\n this.graph.lines.splice(i, 1)\n },\n customXAxisToggled(enabled) {\n if (!enabled) {\n this.selectedXAxisItem = '__time'\n this.$emit('update:xAxisItem', '__time')\n }\n },\n xAxisItemChanged(selection) {\n this.pendingXAxisSelection = selection\n },\n xAxisItemSelected(selection) {\n if (selection.targetName && selection.packetName && selection.itemName) {\n const xAxisItemKey = `DECOM__TLM__${selection.targetName}__${selection.packetName}__${selection.itemName}__CONVERTED`\n this.selectedXAxisItem = xAxisItemKey\n this.$emit('update:xAxisItem', xAxisItemKey)\n }\n },\n },\n}\n</script>\n\n<style>\n.edit-box {\n color: hsla(0, 0%, 100%, 0.7);\n background-color: var(--color-background-surface-default);\n padding: 10px;\n margin-top: 10px;\n}\n\n/* For the Y Axis item editor within the Edit Dialog */\n.v-small-dialog__content {\n background-color: var(--color-background-surface-selected);\n padding: 5px 5px;\n}\n\n.horizontal-lines {\n background-color: var(--color-background-surface-default);\n}\n</style>\n","<!--\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 2023, 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 <!-- Edit Item dialog -->\n <v-dialog v-model=\"show\" width=\"400\" @keydown.enter=\"success()\">\n <v-card>\n <v-card-title class=\"mb-2\">Edit Item</v-card-title>\n <v-card-text>\n <v-select\n v-model=\"editItem.valueType\"\n variant=\"outlined\"\n hide-details\n label=\"Value Type\"\n :items=\"valueTypes\"\n class=\"mb-2\"\n />\n <v-select\n v-model=\"editItem.reduced\"\n variant=\"outlined\"\n hide-details\n label=\"Reduction\"\n :items=\"reduction\"\n class=\"mb-2\"\n />\n <v-select\n v-model=\"editItem.reducedType\"\n variant=\"outlined\"\n hide-details\n label=\"Reduced Type\"\n :items=\"reducedTypes\"\n :disabled=\"editItem.reduced === 'DECOM'\"\n class=\"mb-2\"\n />\n <v-select\n v-model=\"editItem.color\"\n variant=\"outlined\"\n hide-details\n label=\"Color\"\n :items=\"colors\"\n class=\"mb-2\"\n @update:model-value=\"$emit('changeColor', $event)\"\n />\n <div v-if=\"limitsNames.length > 1\">\n <v-select\n v-model=\"limitsName\"\n variant=\"outlined\"\n hide-details\n label=\"Display Limits\"\n :items=\"limitsNames\"\n @update:model-value=\"$emit('changeLimits', limits[limitsName])\"\n />\n <div class=\"pa-3\">{{ limitsName }}: {{ limits[limitsName] }}</div>\n </div>\n </v-card-text>\n <v-card-actions class=\"px-2\">\n <v-spacer />\n <v-btn variant=\"outlined\" @click=\"$emit('cancel')\"> Cancel </v-btn>\n <v-btn variant=\"flat\" @click=\"$emit('close', editItem)\"> Ok </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\nimport { OpenC3Api } from '@openc3/js-common/services'\nexport default {\n props: {\n modelValue: Boolean,\n item: {\n type: Object,\n required: true,\n },\n colors: {\n type: Array,\n required: true,\n },\n },\n emits: [\n 'cancel',\n 'changeColor',\n 'changeLimits',\n 'close',\n 'update:modelValue',\n ],\n data: function () {\n return {\n editItem: null,\n limitsName: 'NONE',\n // NONE: [] matches the default limits assigned in Graph addItems\n limits: { NONE: [] },\n valueTypes: ['CONVERTED', 'RAW'],\n reduction: [\n // Map NONE to DECOM for clarity\n { title: 'NONE', value: 'DECOM' },\n { title: 'REDUCED_MINUTE', value: 'REDUCED_MINUTE' },\n { title: 'REDUCED_HOUR', value: 'REDUCED_HOUR' },\n { title: 'REDUCED_DAY', value: 'REDUCED_DAY' },\n ],\n reducedTypes: ['MIN', 'MAX', 'AVG', 'STDDEV'],\n }\n },\n computed: {\n show: {\n get() {\n return this.modelValue\n },\n set(value) {\n this.$emit('update:modelValue', value)\n },\n },\n limitsNames() {\n return Object.keys(this.limits)\n },\n },\n async created() {\n this.editItem = { ...this.item }\n new OpenC3Api()\n .get_item(this.item.targetName, this.item.packetName, this.item.itemName)\n .then((details) => {\n for (const [key, value] of Object.entries(details.limits)) {\n if (Object.keys(value).includes('red_low')) {\n this.limits[key] = Object.values(value)\n }\n }\n // Locate the key for the value array that we pass in\n this.limitsName = Object.keys(this.limits).find(\n // Little hack to compare arrays you convert them to strings\n (key) => this.limits[key] + '' === this.editItem.limits + '',\n )\n })\n },\n}\n</script>\n","<!--\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# A portion of this file was funded by Blue Origin Enterprises, L.P.\n# See https://github.com/OpenC3/cosmos/pull/1957\n-->\n\n<template>\n <div @click.prevent=\"$emit('click')\">\n <v-card>\n <v-toolbar\n v-show=\"!hideToolbarData\"\n height=\"24\"\n class=\"pl-2 pr-2\"\n :class=\"selectedGraphId === id ? 'active' : ''\"\n >\n <v-btn\n v-show=\"errors.length !== 0\"\n class=\"mx-2\"\n icon=\"mdi-alert\"\n density=\"compact\"\n variant=\"text\"\n aria-label=\"Show Errors\"\n @click=\"\n () => {\n errorDialog = true\n }\n \"\n />\n\n <v-btn\n icon=\"mdi-pencil\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"edit-graph-icon\"\n aria-label=\"Edit Graph\"\n @click=\"\n () => {\n editGraph = true\n }\n \"\n />\n\n <v-spacer />\n <span> {{ title }} </span>\n <v-spacer />\n\n <template v-if=\"expand\">\n <v-btn\n v-if=\"calcFullSize\"\n icon=\"mdi-arrow-collapse\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"collapse-all\"\n @click=\"collapseAll\"\n />\n <v-btn\n v-else\n icon=\"mdi-arrow-expand\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"expand-all\"\n @click=\"expandAll\"\n />\n\n <v-btn\n v-if=\"fullWidth\"\n icon=\"mdi-arrow-collapse-horizontal\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"collapse-width\"\n @click=\"collapseWidth\"\n />\n <v-btn\n v-else\n icon=\"mdi-arrow-expand-horizontal\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"expand-width\"\n @click=\"expandWidth\"\n />\n\n <v-btn\n v-if=\"fullHeight\"\n icon=\"mdi-arrow-collapse-vertical\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"collapse-height\"\n @click=\"collapseHeight\"\n />\n <v-btn\n v-else\n icon=\"mdi-arrow-expand-vertical\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"expand-height\"\n @click=\"expandHeight\"\n />\n </template>\n\n <v-btn\n v-if=\"expand\"\n icon=\"mdi-window-minimize\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"minimize-screen-icon\"\n @click=\"minMaxTransition\"\n />\n <v-btn\n v-else\n icon=\"mdi-window-maximize\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"maximize-screen-icon\"\n @click=\"minMaxTransition\"\n />\n\n <v-btn\n icon=\"mdi-close-box\"\n variant=\"text\"\n density=\"compact\"\n data-test=\"close-graph-icon\"\n @click.stop=\"$emit('close-graph')\"\n />\n </v-toolbar>\n\n <v-expand-transition>\n <div v-show=\"expand\" id=\"chart\" ref=\"chart\" class=\"pa-1\">\n <div :id=\"`chart${id}`\"></div>\n <div id=\"betweenCharts\"></div>\n <div v-show=\"showOverview\" :id=\"`overview${id}`\"></div>\n </div>\n </v-expand-transition>\n </v-card>\n\n <!-- Edit graph dialog -->\n <graph-edit-dialog\n v-if=\"editGraph\"\n v-model=\"editGraph\"\n v-model:x-axis-item=\"xAxisItem\"\n :title=\"title\"\n :legend-position=\"legendPosition\"\n :items=\"items\"\n :graph-min-y=\"graphMinY\"\n :graph-max-y=\"graphMaxY\"\n :lines=\"lines\"\n :colors=\"colors\"\n :start-date-time=\"graphStartDateTime\"\n :end-date-time=\"graphEndDateTime\"\n :time-zone=\"timeZone\"\n :x-axis-item-packet=\"allowableXAxisItemPacket\"\n @remove=\"removeItems([$event])\"\n @ok=\"editGraphClose\"\n @cancel=\"editGraph = false\"\n />\n\n <!-- Error dialog -->\n <v-dialog v-model=\"errorDialog\" max-width=\"600\">\n <v-toolbar height=\"24\">\n <v-spacer />\n <span> Errors </span>\n <v-spacer />\n </v-toolbar>\n <v-card class=\"pa-3\">\n <v-row dense>\n <v-text-field\n v-model=\"title\"\n readonly\n hide-details\n class=\"pb-2\"\n label=\"Graph Title\"\n />\n </v-row>\n <v-row class=\"my-3\">\n <v-textarea readonly rows=\"8\" :value=\"error\" />\n </v-row>\n <v-row>\n <v-btn block @click=\"clearErrors\"> Clear </v-btn>\n </v-row>\n </v-card>\n </v-dialog>\n\n <!-- Edit right click context menu -->\n <v-menu\n v-if=\"editGraphMenu\"\n v-model=\"editGraphMenu\"\n :target=\"[editGraphMenuX, editGraphMenuY]\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item @click=\"editGraph = true\">\n <v-list-item-title style=\"cursor: pointer\">\n Edit {{ title }}\n </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <graph-edit-item-dialog\n v-if=\"editItem\"\n v-model=\"editItem\"\n :colors=\"colors\"\n :item=\"selectedItem\"\n @change-color=\"changeColor\"\n @change-limits=\"changeLimits\"\n @cancel=\"editItem = false\"\n @close=\"closeEditItem\"\n />\n\n <!-- Edit Item right click context menu -->\n <v-menu\n v-if=\"itemMenu\"\n v-model=\"itemMenu\"\n :target=\"[itemMenuX, itemMenuY]\"\n absolute\n offset-y\n >\n <v-list nav density=\"compact\">\n <v-list-subheader>\n {{ selectedItem.targetName }}\n {{ selectedItem.packetName }}\n {{ selectedItem.itemName }}\n </v-list-subheader>\n <v-list-item @click=\"editItem = true\">\n <template #prepend>\n <v-icon icon=\"mdi-pencil\" />\n </template>\n <v-list-item-title> Edit </v-list-item-title>\n </v-list-item>\n <v-list-item @click=\"clearData([selectedItem])\">\n <template #prepend>\n <v-icon icon=\"mdi-eraser\" />\n </template>\n <v-list-item-title> Clear </v-list-item-title>\n </v-list-item>\n <v-list-item @click=\"removeItems([selectedItem])\">\n <template #prepend>\n <v-icon icon=\"mdi-delete\" />\n </template>\n <v-list-item-title> Delete </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <!-- Edit Legend right click context menu -->\n <v-menu\n v-if=\"legendMenu\"\n v-model=\"legendMenu\"\n :target=\"[legendMenuX, legendMenuY]\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item @click=\"moveLegend('top')\">\n <v-list-item-title style=\"cursor: pointer\">\n Legend Top\n </v-list-item-title>\n </v-list-item>\n <v-list-item @click=\"moveLegend('bottom')\">\n <v-list-item-title style=\"cursor: pointer\">\n Legend Bottom\n </v-list-item-title>\n </v-list-item>\n <v-list-item @click=\"moveLegend('left')\">\n <v-list-item-title style=\"cursor: pointer\">\n Legend Left\n </v-list-item-title>\n </v-list-item>\n <v-list-item @click=\"moveLegend('right')\">\n <v-list-item-title style=\"cursor: pointer\">\n Legend RIght\n </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n\n <div v-if=\"!sparkline\" ref=\"info\" class=\"u-series\">\n <v-tooltip\n text=\"Click item to toggle, Right click to edit\"\n location=\"top\"\n >\n <template #activator=\"{ props }\">\n <v-icon v-bind=\"props\"> mdi-information-variant-circle </v-icon>\n </template>\n </v-tooltip>\n </div>\n </div>\n</template>\n\n<script>\nimport GraphEditDialog from './GraphEditDialog.vue'\nimport GraphEditItemDialog from './GraphEditItemDialog.vue'\nimport uPlot from 'uplot'\nimport bs from 'binary-search'\nimport { OpenC3Api, Cable } from '@openc3/js-common/services'\nimport { TimeFilters } from '@/util'\nimport 'uplot/dist/uPlot.min.css'\n\nconst DEFAULT_X_AXIS_ITEM = '__time'\n\nexport default {\n components: {\n GraphEditDialog,\n GraphEditItemDialog,\n },\n mixins: [TimeFilters],\n props: {\n id: {\n type: Number,\n required: true,\n },\n selectedGraphId: {\n type: Number,\n default: null,\n },\n state: {\n type: String,\n required: true,\n },\n // start time in nanoseconds to start the graph\n // this allows multiple graphs to be synchronized\n startTime: {\n type: Number,\n default: null,\n },\n secondsGraphed: {\n type: Number,\n required: true,\n },\n pointsSaved: {\n type: Number,\n required: true,\n },\n pointsGraphed: {\n type: Number,\n required: true,\n },\n refreshIntervalMs: {\n type: Number,\n default: 200,\n },\n hideToolbar: {\n type: Boolean,\n default: false,\n },\n hideOverview: {\n type: Boolean,\n default: false,\n },\n sparkline: {\n type: Boolean,\n default: false,\n },\n initialItems: {\n type: Array,\n default: () => [],\n },\n initialXAxisItem: {\n type: String,\n default: DEFAULT_X_AXIS_ITEM,\n },\n // These allow the parent to force a specific height and/or width\n height: {\n type: Number,\n default: null,\n },\n width: {\n type: Number,\n default: null,\n },\n timeZone: {\n type: String,\n default: 'local',\n },\n },\n emits: [\n 'click',\n 'close-graph',\n 'edit',\n 'min-max-graph',\n 'pause',\n 'resize',\n 'start',\n 'started',\n ],\n data() {\n return {\n api: null,\n lines: [],\n active: true,\n expand: true,\n fullWidth: true,\n fullHeight: true,\n graph: null,\n editGraph: false,\n editGraphMenu: false,\n editGraphMenuX: 0,\n editGraphMenuY: 0,\n editItem: false,\n itemMenu: false,\n itemMenuX: 0,\n itemMenuY: 0,\n legendMenu: false,\n legendMenuX: 0,\n legendMenuY: 0,\n legendPosition: 'bottom',\n selectedItem: null,\n hideToolbarData: this.hideToolbar,\n showOverview: !this.hideOverview,\n hideOverviewData: this.hideOverview,\n title: '',\n overview: null,\n data: [[]],\n dataChanged: false,\n timeout: null,\n graphMinY: null,\n graphMaxY: null,\n graphStartDateTime: null,\n graphEndDateTime: null,\n xAxisItem: this.initialXAxisItem, // '__time' or something like 'DECOM__TLM__INST__ADCS__RECEIVED_COUNT__CONVERTED'\n indexes: {},\n items: this.initialItems,\n graphItems: [],\n lastPlaybackDateTime: null,\n limitsValues: [],\n drawInterval: null,\n zoomChart: false,\n zoomOverview: false,\n cable: new Cable(),\n subscription: null,\n needToUpdate: false,\n errorDialog: false,\n errors: [],\n colorIndex: 0,\n colors: [\n // The first 3 are taken from the Astro css definitions for\n // --color-data-visualization-1 through 3\n '#00c7cb',\n '#938bdb',\n '#4dacff',\n 'lime',\n 'darkorange',\n 'red',\n 'gold',\n 'hotpink',\n 'tan',\n 'cyan',\n 'maroon',\n 'blue',\n 'teal',\n 'purple',\n 'green',\n 'brown',\n 'lightblue',\n 'white',\n 'black',\n ],\n }\n },\n computed: {\n calcFullSize: function () {\n return this.fullWidth || this.fullHeight\n },\n error: function () {\n if (this.errorDialog && this.errors.length > 0) {\n return JSON.stringify(this.errors, null, 4)\n }\n return null\n },\n allowableXAxisItemPacket: function () {\n if (!this.canUseCustomXAxisItem || this.items.length === 0) {\n return undefined\n }\n const { targetName, packetName } = this.items[0]\n return { targetName, packetName }\n },\n canUseCustomXAxisItem: function () {\n // Make sure we're not mixing packets, because items from different packets will be received at different times.\n // If it was mixed, e.g. `xAxisItem` is 'INST__ADCS__RECEIVED_COUNT' and you were graphing\n // 'INST__HEALTH_STATUS__TEMP1', then the `received` handler wouldn't know which x-axis values to apply to the\n // received TEMP1 data points.\n if (this.items.length === 0) {\n return true\n }\n const { targetName, packetName } = this.items[0]\n return this.items.every(\n (item) =>\n item.targetName === targetName && item.packetName === packetName,\n )\n },\n actualXAxisItem: function () {\n if (this.canUseCustomXAxisItem && this.xAxisItem) {\n return this.xAxisItem\n } else {\n return DEFAULT_X_AXIS_ITEM\n }\n },\n xAxisConverter: function () {\n if (this.xAxisIsDefault) {\n return (val) => val / 1_000_000_000.0 // nsec to sec\n }\n return (val) => val\n },\n xAxisFormatter: function () {\n return (val) => {\n if (val == null) {\n return '--'\n } else if (this.xAxisIsTime) {\n // Convert the unix timestamp into a formatted date / time\n return this.formatSeconds(val, this.timeZone)\n }\n return val\n }\n },\n xAxisLabel: function () {\n return this.xAxisIsTime ? 'Time' : this.actualXAxisItem.split('__').at(-2)\n },\n xAxisIsDefault: function () {\n return this.actualXAxisItem === DEFAULT_X_AXIS_ITEM\n },\n xAxisIsTime: function () {\n const timeItems = ['PACKET_TIMESECONDS', 'RECEIVED_TIMESECONDS']\n return (\n this.xAxisIsDefault ||\n timeItems.includes(this.actualXAxisItem.split('__').at(4))\n )\n },\n playbackMode: function () {\n return this.$store.state.playback.playbackMode\n },\n playbackDateTime: function () {\n return this.$store.state.playback.playbackDateTime\n },\n playbackStep: function () {\n return this.$store.state.playback.playbackStep\n },\n },\n watch: {\n state: function (newState, oldState) {\n switch (newState) {\n case 'start':\n // Only subscribe if we were previously stopped\n // If we were paused we do nothing ... see the data function\n if (oldState === 'stop') {\n this.startGraph()\n }\n break\n // case 'pause': Nothing to do ... see the data function\n case 'stop':\n this.stopGraph()\n break\n }\n },\n playbackMode: function (_newState, _oldState) {\n if (this.playbackMode === 'playback') {\n this.setupPlaybackMode()\n } else {\n // realtime\n this.lastPlaybackDateTime = null\n this.clearAllData()\n this.startGraph()\n }\n },\n playbackDateTime: function (_newState, _oldState) {\n if (this.playbackMode === 'playback') {\n if (\n this.lastPlaybackDateTime === null ||\n this.lastPlaybackDateTime > this.playbackDateTime\n ) {\n // If we are going backwards in time we need to clear the data\n this.clearAllData()\n } else {\n this.api\n .get_tlm_values(\n this.graphItems,\n 30, // stale timeout\n null, // no cache timeout\n this.lastPlaybackDateTime, // start time\n this.playbackDateTime, // end time\n )\n .then((data) => {\n if (data.length > 0) {\n if (Array.isArray(data[0]) && Array.isArray(data[0][0])) {\n // data is array of array of arrays\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n if (j === 0) {\n let dateStr = data[i][j][0]\n let dateObj = new Date(dateStr)\n this.data[0].push(dateObj.getTime() / 1000.0) // Convert to seconds\n } else {\n this.data[j].push(data[i][j][0])\n }\n }\n }\n } else if (Array.isArray(data) && data.length >= 2) {\n for (let i = 0; i < data.length; i++) {\n if (i === 0) {\n let dateStr = data[i][0]\n let dateObj = new Date(dateStr)\n this.data[0].push(dateObj.getTime() / 1000.0) // Convert to seconds\n } else {\n this.data[i].push(data[i][0])\n }\n }\n }\n }\n this.dataChanged = true\n this.updateGraphData()\n })\n }\n this.lastPlaybackDateTime = this.playbackDateTime\n }\n },\n data: function (newData, oldData) {\n this.dataChanged = true\n },\n graphMinY: function (newVal, oldVal) {\n let val = parseFloat(newVal)\n if (!isNaN(val)) {\n this.graphMinY = val\n }\n this.setGraphRange()\n },\n graphMaxY: function (newVal, oldVal) {\n let val = parseFloat(newVal)\n if (!isNaN(val)) {\n this.graphMaxY = val\n }\n this.setGraphRange()\n },\n graphStartDateTime: function (newVal, oldVal) {\n if (newVal && typeof newVal === 'string') {\n this.graphStartDateTime =\n this.parseDateTime(this.graphStartDateTime, this.timeZone) * 1000000\n if (this.graphStartDateTime !== oldVal) {\n this.needToUpdate = true\n }\n } else if (newVal === null && oldVal) {\n // If they clear the start date time we need to update\n this.graphStartDateTime = null\n this.needToUpdate = true\n }\n },\n graphEndDateTime: function (newVal, oldVal) {\n if (newVal && typeof newVal === 'string') {\n this.graphEndDateTime =\n this.parseDateTime(this.graphEndDateTime, this.timeZone) * 1000000\n if (this.graphEndDateTime !== oldVal) {\n this.needToUpdate = true\n }\n } else if (newVal === null && oldVal) {\n // If they clear the end date time we need to update\n this.graphEndDateTime = null\n this.needToUpdate = true\n }\n },\n actualXAxisItem: function (newVal, oldVal) {\n let clonedItems = JSON.parse(JSON.stringify(this.items))\n this.removeItems(clonedItems)\n this.graph.destroy()\n this.chartOpts.series[0].label = this.xAxisLabel\n this.chartOpts.scales.x.time = this.xAxisIsTime\n this.graph = new uPlot(\n this.chartOpts,\n this.data,\n document.getElementById(`chart${this.id}`),\n )\n if (!this.hideOverview) {\n this.overview.destroy()\n this.overviewOpts.scales.x.time = this.xAxisIsTime\n this.overview = new uPlot(\n this.overviewOpts,\n this.data,\n document.getElementById(`overview${this.id}`),\n )\n }\n this.addItems(clonedItems)\n // Don't need to $emit('edit') because addItems() does that\n },\n },\n created() {\n this.api = new OpenC3Api()\n this.title = `Graph ${this.id}`\n for (const [index, item] of this.items.entries()) {\n this.data.push([]) // initialize the empty data arrays\n this.indexes[this.subscriptionKey(item)] = index + 1\n if (item.color === undefined) {\n item.color = this.colors[this.colorIndex]\n }\n this.colorIndex++\n if (this.colorIndex === this.colors.length) {\n this.colorIndex = 0\n }\n }\n },\n mounted() {\n // This code allows for temporary pulling in a patched uPlot\n // Also note you need to add 'async' before the mounted method for await\n // const plugin = document.createElement('script')\n // plugin.setAttribute(\n // 'src',\n // 'https://leeoniya.github.io/uPlot/dist/uPlot.iife.min.js'\n // )\n // plugin.async = true\n // document.head.appendChild(plugin)\n // await new Promise(r => setTimeout(r, 500)) // Allow the js to load\n\n // TODO: This is demo / performance code of multiple items with many data points\n // 10 items at 500,000 each renders immediately and uses 180MB in Chrome\n // Refresh still works, chrome is sluggish but once you pause it is very performant\n // 500,000 pts at 1Hz is 138.9hrs .. almost 6 days\n //\n // 10 items at 100,000 each is very performant ... 1,000,000 pts is Qt TlmGrapher default\n // 100,000 pts at 1Hz is 27.8hrs\n //\n // 100,000 takes 40ms, Chrome uses 160MB\n // this.data = []\n // const dataPoints = 100000\n // const items = 10\n // let pts = new Array(dataPoints)\n // let times = new Array(dataPoints)\n // let time = 1589398007\n // let series = [{}]\n // for (let i = 0; i < dataPoints; i++) {\n // times[i] = time\n // pts[i] = i\n // time += 1\n // }\n // this.data.push(times)\n // for (let i = 0; i < items; i++) {\n // this.data.push(pts.map(x => x + i))\n // series.push({\n // label: 'Item' + i,\n // stroke: this.colors[i]\n // })\n // }\n\n // NOTE: These are just initial settings ... actual series are added by this.graph.addSeries\n const { chartSeries, overviewSeries } = this.items.reduce(\n (seriesObj, item) => {\n const commonProps = {\n spanGaps: true,\n }\n seriesObj.chartSeries.push({\n ...commonProps,\n item: item,\n label: this.formatLabel(item),\n stroke: (u, seriesIdx) => {\n return this.items[seriesIdx - 1].color\n },\n width: 2,\n value: (self, rawValue) => {\n if (typeof rawValue === 'string' || isNaN(rawValue)) {\n return 'NaN'\n } else {\n return rawValue == null ? '--' : rawValue.toFixed(3)\n }\n },\n })\n seriesObj.overviewSeries.push({\n ...commonProps,\n })\n return seriesObj\n },\n { chartSeries: [], overviewSeries: [] },\n )\n\n this.chartOpts = {}\n if (this.sparkline) {\n this.hideToolbarData = true\n this.hideOverviewData = true\n this.showOverview = false\n this.chartOpts = {\n width: this.width,\n height: this.height,\n pxAlign: false,\n cursor: {\n show: false,\n },\n select: {\n show: false,\n },\n legend: {\n show: false,\n },\n scales: {\n x: {\n time: false,\n },\n },\n axes: [\n {\n show: false,\n },\n {\n show: false,\n },\n ],\n series: [\n {},\n {\n stroke: 'white', // TODO: Light / dark theme\n },\n ],\n }\n this.graph = new uPlot(\n this.chartOpts,\n this.data,\n document.getElementById(`chart${this.id}`),\n )\n } else {\n // Uplot wants the real timezone name ('local' doesn't work)\n let timeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone\n if (this.timeZone && this.timeZone !== 'local') {\n timeZoneName = this.timeZone\n }\n this.chartOpts = {\n ...this.getSize('chart'),\n ...this.getScales(),\n ...this.getAxes('chart'),\n // series: series, // TODO: Uncomment with the performance code\n plugins: [this.linesPlugin()],\n tzDate: (ts) => uPlot.tzDate(new Date(ts * 1e3), timeZoneName),\n series: [\n {\n label: this.xAxisLabel,\n value: (u, v) => this.xAxisFormatter(v),\n },\n ...chartSeries,\n ],\n cursor: {\n drag: {\n x: true,\n y: false,\n },\n // Sync the cursor across graphs so mouseovers are synced\n sync: {\n key: 'openc3',\n // setSeries links graphs so clicking an item to hide it also hides the other graph item\n // setSeries: true,\n },\n bind: {\n mouseup: (self, targ, handler) => {\n return (e) => {\n // Single click while paused will resume the graph\n // This makes it possible to resume in TlmViewer widgets\n if (this.state === 'pause' && self.select.width === 0) {\n this.$emit('start')\n }\n handler(e)\n }\n },\n },\n },\n hooks: {\n setScale: [\n (chart, key) => {\n if (key === 'x' && !this.zoomOverview && this.overview) {\n this.zoomChart = true\n let left = Math.round(\n this.overview.valToPos(chart.scales.x.min, 'x'),\n )\n let right = Math.round(\n this.overview.valToPos(chart.scales.x.max, 'x'),\n )\n this.overview.setSelect({ left, width: right - left })\n this.zoomChart = false\n }\n },\n ],\n setSelect: [\n (chart) => {\n // Pause the graph while selecting a range to zoom\n if (this.state === 'start' && chart.select.width > 0) {\n this.$emit('pause')\n }\n },\n ],\n ready: [\n (u) => {\n let canvas = u.root.querySelector('.u-over')\n canvas.addEventListener('contextmenu', (e) => {\n e.preventDefault()\n this.itemMenu = false\n this.legendMenu = false\n this.editGraphMenuX = e.clientX\n this.editGraphMenuY = e.clientY\n this.editGraphMenu = true\n })\n let legend = u.root.querySelector('.u-legend')\n legend.addEventListener('contextmenu', (e) => {\n e.preventDefault()\n this.editGraphMenu = false\n this.legendMenu = false\n this.itemMenuX = e.clientX\n this.itemMenuY = e.clientY\n // Grab the closest series and then figure out which index it is\n let seriesEl = e.target.closest('.u-series')\n let seriesIdx = Array.prototype.slice\n .call(legend.childNodes[0].childNodes)\n .indexOf(seriesEl)\n let series = u.series[seriesIdx]\n if (series.item) {\n this.selectedItem = series.item\n this.itemMenu = true\n } else {\n this.itemMenu = false\n this.legendMenuX = e.clientX\n this.legendMenuY = e.clientY\n this.legendMenu = true\n }\n })\n // Append the info to the legend\n legend.querySelector('tbody').appendChild(this.$refs.info)\n },\n ],\n },\n }\n this.graph = new uPlot(\n this.chartOpts,\n this.data,\n document.getElementById(`chart${this.id}`),\n )\n\n this.overviewOpts = {\n ...this.getSize('overview'),\n ...this.getScales(),\n ...this.getAxes('overview'),\n // series: series, // TODO: Uncomment with the performance code\n tzDate: (ts) => uPlot.tzDate(new Date(ts * 1e3), timeZoneName),\n series: [...overviewSeries],\n cursor: {\n y: false,\n drag: {\n setScale: false,\n x: true,\n y: false,\n },\n },\n legend: {\n show: false,\n },\n hooks: {\n setSelect: [\n (chart) => {\n if (!this.zoomChart) {\n // Pause the graph while selecting an overview range to zoom\n if (this.state === 'start' && chart.select.width > 0) {\n this.$emit('pause')\n }\n this.zoomOverview = true\n let min = chart.posToVal(chart.select.left, 'x')\n let max = chart.posToVal(\n chart.select.left + chart.select.width,\n 'x',\n )\n this.graph.setScale('x', { min, max })\n this.zoomOverview = false\n }\n },\n ],\n },\n }\n if (!this.hideOverview) {\n this.overview = new uPlot(\n this.overviewOpts,\n this.data,\n document.getElementById(`overview${this.id}`),\n )\n }\n this.moveLegend(this.legendPosition)\n\n // Allow the charts to dynamically resize when the window resizes\n window.addEventListener('resize', this.resize)\n }\n\n if (this.playbackMode !== 'playback') {\n if (this.state !== 'stop') {\n this.startGraph()\n }\n } else {\n this.setupPlaybackMode()\n }\n },\n beforeUnmount: function () {\n this.stopGraph()\n this.cable.disconnect()\n window.removeEventListener('resize', this.resize)\n },\n methods: {\n setupPlaybackMode: function () {\n this.stopGraph()\n this.clearAllData()\n const screenItems = this.items.map((item) => {\n const keyParts = this.subscriptionKey(item).split('__')\n return keyParts.slice(2).join('__')\n })\n screenItems.unshift('INST__HEALTH_STATUS__PACKET_TIMESECONDS__RAW')\n this.api.get_tlm_available(screenItems).then((data) => {\n this.graphItems = data\n // This must be the same or we're going to have problems\n // because the data comes back in an ordered array\n if (screenItems.length != data.length) {\n console.log(\n 'Error getting tlm available',\n screenItems,\n this.graphItems,\n )\n }\n })\n },\n startGraph: function () {\n this.subscribe()\n this.timeout = setTimeout(() => {\n this.updateTimeout()\n }, this.refreshIntervalMs)\n },\n stopGraph: function () {\n if (this.subscription) {\n this.subscription.unsubscribe()\n this.subscription = null\n }\n if (this.timeout) {\n clearTimeout(this.timeout)\n this.timeout = null\n }\n },\n updateTimeout: function () {\n this.updateGraphData()\n this.timeout = setTimeout(() => {\n this.updateTimeout()\n }, this.refreshIntervalMs)\n },\n updateGraphData: function () {\n // Ignore changes to the data while we're paused\n if (this.state === 'pause' || !this.dataChanged) {\n return\n }\n this.graph.setData(this.data)\n if (this.overview) {\n this.overview.setData(this.data)\n }\n let max = this.data[0][this.data[0].length - 1]\n let ptsMin = this.data[0][this.data[0].length - this.pointsGraphed]\n let min = this.data[0][0]\n if (min < max - this.secondsGraphed) {\n min = max - this.secondsGraphed\n }\n if (ptsMin > min) {\n min = ptsMin\n }\n this.graph.setScale('x', { min, max })\n this.dataChanged = false\n },\n formatLabel(item) {\n if (item.valueType === 'CONVERTED' && item.reduced === 'DECOM') {\n return item.itemName\n } else {\n let description = ''\n // Only display valueType if we're not CONVERTED\n if (item.valueType !== 'CONVERTED') {\n description += item.valueType\n }\n // Only display reduced if we're not DECOM\n if (item.reduced !== 'DECOM') {\n // If we already have the valueType add a space\n if (description !== '') {\n description += ' '\n }\n description += `${item.reduced.split('_')[1]} ${item.reducedType}`\n }\n return `${item.itemName} (${description})`\n }\n },\n moveLegend: function (desired) {\n switch (desired) {\n case 'bottom':\n this.graph.root.classList.remove('side-legend')\n this.graph.root.classList.remove('left-legend')\n this.graph.root.classList.remove('top-legend')\n break\n case 'top':\n this.graph.root.classList.remove('side-legend')\n this.graph.root.classList.remove('left-legend')\n this.graph.root.classList.add('top-legend')\n break\n case 'left':\n this.graph.root.classList.remove('top-legend')\n this.graph.root.classList.add('side-legend')\n this.graph.root.classList.add('left-legend')\n break\n case 'right':\n this.graph.root.classList.remove('top-legend')\n this.graph.root.classList.remove('left-legend')\n this.graph.root.classList.add('side-legend')\n break\n }\n this.legendPosition = desired\n this.resize()\n },\n clearErrors: function () {\n this.errors = []\n },\n editGraphClose: function (graph) {\n this.editGraph = false\n this.title = graph.title\n // Don't need to copy items because we don't modify them\n this.legendPosition = graph.legendPosition\n this.graphMinY = graph.graphMinY\n this.graphMaxY = graph.graphMaxY\n this.lines = [...graph.lines]\n this.graphStartDateTime = graph.startDateTime\n this.graphEndDateTime = graph.endDateTime\n // Allow the watch to update needToUpdate\n this.$nextTick(() => {\n if (this.needToUpdate) {\n if (this.subscription == null) {\n this.startGraph()\n } else {\n // NOTE: removing and adding back to back broke the streaming_api\n // because the messages got out of order (add before remove)\n // Code in openc3-cosmos-cmd-tlm-api/app/channels/application_cable/channel.rb\n // fixed the issue to enforce ordering.\n // Clone the items first because removeItems modifies this.items\n let clonedItems = JSON.parse(JSON.stringify(this.items))\n this.removeItems(clonedItems)\n setTimeout(() => {\n this.addItems(clonedItems)\n }, 0)\n }\n this.needToUpdate = false\n }\n })\n this.moveLegend(this.legendPosition)\n this.$emit('edit')\n },\n resize: function () {\n this.graph.setSize(this.getSize('chart'))\n if (this.overview) {\n this.overview.setSize(this.getSize('overview'))\n }\n this.$emit('resize', this.id)\n },\n expandAll: function () {\n this.fullWidth = true\n this.fullHeight = true\n this.resize()\n },\n collapseAll: function () {\n this.fullWidth = false\n this.fullHeight = false\n this.resize()\n },\n expandWidth: function () {\n this.fullWidth = true\n this.resize()\n },\n collapseWidth: function () {\n this.fullWidth = false\n this.resize()\n },\n expandHeight: function () {\n this.fullHeight = true\n this.resize()\n },\n collapseHeight: function () {\n this.fullHeight = false\n this.resize()\n },\n minMaxTransition: function () {\n this.expand = !this.expand\n this.$emit('min-max-graph', this.id)\n },\n setGraphRange: function () {\n let pad = 0.1\n if (\n this.graphMinY ||\n this.graphMinY === 0 ||\n this.graphMaxY ||\n this.graphMaxY === 0\n ) {\n pad = 0\n }\n this.graph.scales.y.range = (u, dataMin, dataMax) => {\n let min = dataMin\n if (this.graphMinY || this.graphMinY === 0) {\n min = this.graphMinY\n }\n let max = dataMax\n if (this.graphMaxY || this.graphMaxY === 0) {\n max = this.graphMaxY\n }\n return uPlot.rangeNum(min, max, pad, true)\n }\n },\n subscribe: function () {\n this.cable\n .createSubscription('StreamingChannel', window.openc3Scope, {\n received: (data) => this.received(data),\n connected: () => {\n const itemsToAdd = [...this.items]\n if (this.actualXAxisItem !== DEFAULT_X_AXIS_ITEM) {\n itemsToAdd.push(this.actualXAxisItem)\n }\n this.addItemsToSubscription(itemsToAdd)\n },\n disconnected: (data) => {\n // If allowReconnect is true it means we got a disconnect due to connection lost or server disconnect\n // If allowReconnect is false this is a normal server close or client close\n if (data.allowReconnect) {\n this.errors.push({\n type: 'disconnected',\n message: 'OpenC3 backend connection disconnected',\n time: new Date().getTime(),\n })\n }\n },\n rejected: () => {\n this.errors.push({\n type: 'rejected',\n message: 'OpenC3 backend connection rejected',\n time: new Date().getTime(),\n })\n },\n })\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n // throttle(cb, limit) {\n // let wait = false\n // return () => {\n // if (!wait) {\n // requestAnimationFrame(cb)\n // wait = true\n // setTimeout(() => {\n // wait = false\n // }, limit)\n // }\n // }\n // },\n getSize: function (type) {\n let navDrawerWidth = 0\n const navDrawer = document.getElementById('openc3-nav-drawer')\n if (navDrawer) {\n navDrawerWidth = navDrawer.classList.contains(\n 'v-navigation-drawer--active',\n )\n ? navDrawer.clientWidth\n : 0\n }\n let legendWidth = 0\n if (this.legendPosition === 'right' || this.legendPosition === 'left') {\n const legend = document.getElementsByClassName('u-legend')[0]\n legendWidth = legend.clientWidth\n }\n const viewWidth =\n Math.max(document.documentElement.clientWidth, window.innerWidth || 0) -\n navDrawerWidth -\n legendWidth\n const viewHeight = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0,\n )\n\n const panel = document.getElementsByClassName('v-expansion-panel')[0]\n let height = 100\n if (type === 'overview') {\n // Show overview if we're full height and we're not explicitly hiding it\n if (this.fullHeight && !this.hideOverviewData) {\n this.showOverview = true\n } else {\n this.showOverview = false\n }\n } else {\n // Height of chart is viewportSize - expansion-panel - overview - fudge factor (primarily padding)\n height = viewHeight - panel.clientHeight - height - 250\n if (!this.fullHeight) {\n height = height / 2.0 + 10 // 5px padding top and bottom\n }\n }\n // subtract off some arbitrary padding left and right to make the layout work\n let width = viewWidth - 70\n if (!this.fullWidth) {\n // 6px padding left and right defined in TlmGrapher.vue .item-content\n width = width / 2.0 - 12\n }\n return {\n width: this.width || width,\n height: this.height || height,\n }\n },\n getScales: function () {\n return {\n scales: {\n x: {\n range(u, dataMin, dataMax) {\n if (dataMin == null) {\n if (this.xAxisIsTime) {\n return [1566453600, 1566497660]\n }\n return [0, 1]\n }\n return [dataMin, dataMax]\n },\n time: this.xAxisIsTime,\n },\n y: {\n range(u, dataMin, dataMax) {\n if (dataMin == null) return [-100, 100]\n return uPlot.rangeNum(dataMin, dataMax, 0.1, true)\n },\n },\n },\n }\n },\n getAxes: function (type) {\n let strokeColor = 'rgba(255, 255, 255, .1)'\n let axisColor = 'white'\n return {\n axes: [\n {\n stroke: axisColor,\n grid: {\n show: true,\n stroke: strokeColor,\n width: 2,\n },\n },\n {\n size: 80, // This size supports values up to 8 digits plus sign\n stroke: axisColor,\n grid: {\n show: type === 'overview' ? false : true,\n stroke: strokeColor,\n width: 2,\n },\n // Forces the axis values to be formatted correctly\n // especially with really small or large values\n values(u, splits) {\n if (\n splits.some((el) => el >= 10000000) ||\n splits.every((el) => el < 0.01)\n ) {\n splits = splits.map((split) => split.toExponential(3))\n }\n return splits\n },\n },\n ],\n }\n },\n closeEditItem: function (event) {\n this.editItem = false\n if (\n // If we have an end time and anything was changed we basically regraph\n (this.graphEndDateTime !== null && this.selectedItem !== event) ||\n // If we're live graphing we just regraph if the types change\n this.selectedItem.valueType !== event.valueType ||\n this.selectedItem.reduced !== event.reduced ||\n this.selectedItem.reducedType !== event.reducedType\n ) {\n this.changeItem(event)\n }\n },\n changeColor: function (event) {\n let key = this.subscriptionKey(this.selectedItem)\n let index = this.indexes[key]\n this.items[index - 1].color = event\n this.selectedItem.color = event\n this.graph.root.querySelectorAll('.u-marker')[index].style.borderColor =\n event\n },\n changeLimits: function (limits) {\n let key = this.subscriptionKey(this.selectedItem)\n let index = this.indexes[key]\n this.items[index - 1].limits = limits\n this.selectedItem.limits = limits\n this.limitsValues = limits\n },\n linesPlugin: function () {\n return {\n hooks: {\n draw: (u) => {\n const { ctx, bbox } = u\n // These are all in canvas units\n const yMin = u.valToPos(u.scales.y.min, 'y', true)\n const yMax = u.valToPos(u.scales.y.max, 'y', true)\n const redLow = u.valToPos(this.limitsValues[0], 'y', true)\n const yellowLow = u.valToPos(this.limitsValues[1], 'y', true)\n const yellowHigh = u.valToPos(this.limitsValues[2], 'y', true)\n const redHigh = u.valToPos(this.limitsValues[3], 'y', true)\n let height = 0\n\n // NOTE: These comparisons are tricky because the canvas\n // starts in the upper left with 0,0. Thus it grows downward\n // and to the right with increasing values. The comparisons\n // of scale and limitsValues use graph coordinates but the\n // fillRect calculations use the canvas coordinates.\n\n // Draw Y axis lines\n this.lines.forEach((line) => {\n if (\n u.scales.y.min <= line.yValue &&\n line.yValue <= u.scales.y.max\n ) {\n ctx.save()\n ctx.beginPath()\n ctx.strokeStyle = line.color\n ctx.lineWidth = 2\n ctx.moveTo(bbox.left, u.valToPos(line.yValue, 'y', true))\n ctx.lineTo(\n bbox.left + bbox.width,\n u.valToPos(line.yValue, 'y', true),\n )\n ctx.stroke()\n ctx.restore()\n }\n })\n\n ctx.save()\n ctx.beginPath()\n\n // Draw red limits\n ctx.fillStyle = 'rgba(255,0,0,0.15)'\n if (u.scales.y.min < this.limitsValues[0]) {\n let start = redLow < yMax ? yMax : redLow\n ctx.fillRect(bbox.left, redLow, bbox.width, yMin - start)\n }\n if (u.scales.y.max > this.limitsValues[3]) {\n let end = yMin < redHigh ? yMin : redHigh\n ctx.fillRect(bbox.left, yMax, bbox.width, end - yMax)\n }\n\n // Draw yellow limits\n ctx.fillStyle = 'rgba(255,255,0,0.15)'\n if (\n u.scales.y.min < this.limitsValues[1] && // yellowLow\n u.scales.y.max > this.limitsValues[0] // redLow\n ) {\n let start = yellowLow < yMax ? yMax : yellowLow\n ctx.fillRect(bbox.left, start, bbox.width, redLow - start)\n }\n if (\n u.scales.y.max > this.limitsValues[2] && // yellowHigh\n u.scales.y.min < this.limitsValues[3] // redHigh\n ) {\n let start = yMin < redHigh ? yMin : redHigh\n let end = yMin < yellowHigh ? yMin : yellowHigh\n ctx.fillRect(bbox.left, start, bbox.width, end - start)\n }\n\n // Draw green limits & operational limits\n ctx.fillStyle = 'rgba(0,255,0,0.15)'\n // If there are no operational limits the interior is all green\n if (this.limitsValues.length === 4) {\n // Determine if we show any green\n if (\n u.scales.y.min < this.limitsValues[2] && // yellowHigh\n u.scales.y.max > this.limitsValues[1] // yellowLow\n ) {\n let start = yellowHigh < yMax ? yMax : yellowHigh\n let end = yMin < yellowLow ? yMin : yellowLow\n ctx.fillRect(bbox.left, start, bbox.width, end - start)\n }\n } else {\n // Operational limits\n const greenLow = u.valToPos(this.limitsValues[4], 'y', true)\n const greenHigh = u.valToPos(this.limitsValues[5], 'y', true)\n if (\n u.scales.y.min < this.limitsValues[4] && // greenLow\n u.scales.y.max > this.limitsValues[1] // yellowLow\n ) {\n let start = greenLow < yMax ? yMax : greenLow\n ctx.fillRect(bbox.left, start, bbox.width, yellowLow - start)\n }\n if (\n u.scales.y.max > this.limitsValues[5] && // greenHigh\n u.scales.y.min < this.limitsValues[2] // yellowHigh\n ) {\n let start = yMin < yellowHigh ? yMin : yellowHigh\n let end = yMin < greenHigh ? yMin : greenHigh\n ctx.fillRect(bbox.left, start, bbox.width, end - start)\n }\n ctx.fillStyle = 'rgba(0,0,255,0.15)'\n let start = greenHigh < yMax ? yMax : greenHigh\n let end = yMin < greenLow ? yMin : greenLow\n ctx.fillRect(bbox.left, start, bbox.width, end - start)\n }\n ctx.stroke()\n ctx.restore()\n },\n },\n }\n },\n changeItem: function (event) {\n // NOTE: removing and adding items back to back broke the streaming_api\n // because the messages got out of order (add before remove)\n // Code in openc3-cosmos-cmd-tlm-api/app/channels/application_cable/channel.rb\n // fixed the issue to enforce ordering.\n this.removeItems([this.selectedItem])\n this.selectedItem.valueType = event.valueType\n this.selectedItem.reduced = event.reduced\n this.selectedItem.reducedType = event.reducedType\n setTimeout(() => {\n this.addItems([this.selectedItem])\n }, 0)\n },\n addItems: function (itemArray, type = 'CONVERTED') {\n itemArray.forEach((item) => {\n item.valueType ||= type // set the default type\n item.color ||= this.colors[this.colorIndex]\n item.limits ||= []\n\n if (item.limits.length > 0) {\n this.limitsValues = item.limits\n }\n\n this.colorIndex = (this.colorIndex + 1) % this.colors.length\n this.items.push(item)\n\n const index = this.data.length\n this.graph.addSeries(this.createSeriesConfig(item), index)\n\n if (this.overview) {\n this.overview.addSeries(this.createOverviewSeriesConfig(), index)\n }\n\n this.data.splice(index, 0, Array(this.data[0].length))\n this.indexes[this.subscriptionKey(item)] = index\n })\n\n this.updateColorIndex(itemArray)\n if (!this.xAxisIsDefault) {\n itemArray.push(this.actualXAxisItem)\n }\n this.addItemsToSubscription(itemArray)\n this.$emit('resize')\n this.$emit('edit')\n },\n createSeriesConfig: function (item) {\n return {\n spanGaps: true,\n item: item,\n label: this.formatLabel(item),\n stroke: (u, seriesIdx) => this.items[seriesIdx - 1].color,\n width: 2,\n value: (self, rawValue) => {\n if (typeof rawValue === 'string' || isNaN(rawValue)) {\n return 'NaN'\n } else if (rawValue == null) {\n return '--'\n } else if (\n (Math.abs(rawValue) < 0.01 && rawValue !== 0) ||\n Math.abs(rawValue) >= 10000000\n ) {\n return rawValue.toExponential(6)\n } else {\n return rawValue.toFixed(6)\n }\n },\n }\n },\n createOverviewSeriesConfig: function () {\n return {\n spanGaps: true,\n stroke: (u, seriesIdx) => this.items[seriesIdx - 1].color,\n }\n },\n updateColorIndex: function (itemArray) {\n const lastItem = itemArray[itemArray.length - 1]\n if (lastItem) {\n const index = this.colors.indexOf(lastItem.color)\n if (index !== -1) {\n this.colorIndex = (index + 1) % this.colors.length\n }\n }\n },\n addItemsToSubscription: function (itemArray = this.items) {\n let theStartTime = this.startTime\n if (this.graphStartDateTime) {\n theStartTime = this.graphStartDateTime\n }\n const items = itemArray.map((item) => {\n if (typeof item === 'object') {\n return this.subscriptionKey(item)\n } else if (typeof item === 'string') {\n return item\n } else {\n throw new Error(\n `Invalid subscription item type for ${item}: ${typeof item}`,\n )\n }\n })\n if (this.subscription) {\n OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity).then(\n (refreshed) => {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n this.subscription.perform('add', {\n scope: window.openc3Scope,\n token: localStorage.openc3Token,\n items: items,\n start_time: theStartTime,\n end_time: this.graphEndDateTime,\n })\n },\n )\n }\n },\n clearAllData: function () {\n // Clear all data so delete the time data as well\n this.data[0] = []\n this.clearData(this.items)\n },\n clearData: function (itemArray) {\n for (const key of itemArray.map(this.subscriptionKey)) {\n let index = this.indexes[key]\n this.data[index] = Array(this.data[0].length).fill(null)\n this.graph.setData(this.data)\n if (this.overview) {\n this.overview.setData(this.data)\n }\n }\n // data.length of 2 means we only have 1 item\n // so delete all the time (data[0]) to start fresh\n if (this.data.length === 2) {\n this.data[0] = []\n this.graph.setData(this.data)\n if (this.overview) {\n this.overview.setData(this.data)\n }\n }\n },\n removeItems: function (itemArray) {\n this.removeItemsFromSubscription(itemArray)\n\n for (const key of itemArray.map(this.subscriptionKey)) {\n const index = this.reorderIndexes(key)\n this.items.splice(index - 1, 1)\n this.data.splice(index, 1)\n this.graph.delSeries(index)\n this.graph.setData(this.data)\n if (this.overview) {\n this.overview.delSeries(index)\n this.overview.setData(this.data)\n }\n }\n // data.length of 1 means we've deleted all our items\n // so delete all the time (data[0]) to start fresh\n if (this.data.length === 1) {\n this.data[0] = []\n this.graph.setData(this.data)\n if (this.overview) {\n this.overview.setData(this.data)\n }\n }\n this.$emit('resize')\n this.$emit('edit')\n },\n removeItemsFromSubscription: function (itemArray = this.items) {\n if (this.subscription) {\n const items = itemArray.map((item) => {\n if (typeof item === 'object') {\n return this.subscriptionKey(item)\n } else if (typeof item === 'string') {\n return item\n } else {\n throw new Error(\n `Invalid subscription item type for ${item}: ${typeof item}`,\n )\n }\n })\n this.subscription.perform('remove', {\n scope: window.openc3Scope,\n token: localStorage.openc3Token,\n items: items,\n })\n }\n },\n reorderIndexes: function (key) {\n let index = this.indexes[key]\n delete this.indexes[key]\n for (let i in this.indexes) {\n if (this.indexes[i] > index) {\n this.indexes[i] -= 1\n }\n }\n return index\n },\n received: function (data) {\n this.cable.recordPing()\n // TODO: Shouldn't get errors but should we handle this every time?\n // if (json_data.error) {\n // console.log(json_data.error)\n // return\n // }\n for (let i = 0; i < data.length; i++) {\n if (!data[i].hasOwnProperty(this.actualXAxisItem)) {\n // This happens if the streaming thread was already sending something when we switched xAxisItems.\n // Nothing we can do but throw away the point. It'll come back when the graph is reset anyway.\n continue\n }\n let xAxisVal = this.xAxisConverter(data[i][this.actualXAxisItem])\n let length = this.data[0].length\n if (length === 0 || xAxisVal > this.data[0][length - 1]) {\n // Nominal case - append new data to end\n for (let j = 0; j < this.data.length; j++) {\n this.data[j].push(null)\n }\n this.set_data_at_index(this.data[0].length - 1, xAxisVal, data[i])\n } else {\n let index = bs(this.data[0], xAxisVal, this.bs_comparator)\n if (index >= 0) {\n // Found a slot with the exact same time value\n // Handle duplicate time by subtracting a small amount until we find an open slot\n if (!Number.isFinite(xAxisVal)) {\n // Make sure this exists so that we don't create an infinite loop\n // (Infinity or NaN -= 1e-5 results in Infinity or NaN)\n throw new RangeError(`Invalid x-axis value: ${xAxisVal}`)\n }\n while (index >= 0) {\n xAxisVal -= 1e-5 // Subtract a small amount (10 microseconds if x-axis is time in seconds)\n index = bs(this.data[0], xAxisVal, this.bs_comparator)\n }\n // Now that we have a unique time, insert at the ideal index\n let ideal_index = -index - 1\n for (let j = 0; j < this.data.length; j++) {\n this.data[j].splice(ideal_index, 0, null)\n }\n // Use the adjusted time but keep the original data\n this.set_data_at_index(ideal_index, xAxisVal, data[i])\n } else {\n // Insert a new null slot at the ideal index\n let ideal_index = -index - 1\n for (let j = 0; j < this.data.length; j++) {\n this.data[j].splice(ideal_index, 0, null)\n }\n this.set_data_at_index(ideal_index, xAxisVal, data[i])\n }\n }\n }\n // If we weren't passed a startTime notify grapher of our start\n if (this.startTime == null && this.data[0][0]) {\n let newStartTime = this.data[0][0] * 1000000000\n this.$emit('started', newStartTime)\n }\n this.dataChanged = true\n },\n bs_comparator: function (element, needle) {\n return element - needle\n },\n set_data_at_index: function (index, time, new_data) {\n this.data[0][index] = time\n for (const [key, value] of Object.entries(new_data)) {\n if (key === 'time' || key === this.actualXAxisItem) {\n continue\n }\n let key_index = this.indexes[key]\n if (key_index) {\n let array = this.data[key_index]\n // NaN and Infinite values are sent as objects with raw attribute set\n // to 'NaN', '-Infinity', or 'Infinity', just set data to null\n if (value?.raw) {\n array[index] = null\n } else if (typeof value === 'string') {\n // Can't graph strings so just set to null\n array[index] = null\n // If it's not already RAW, change the type to RAW\n // NOTE: Some items are RAW strings so they won't ever work\n if (!key.includes('__RAW')) {\n for (let item of this.items) {\n if (this.subscriptionKey(item) === key) {\n this.selectedItem = item\n break\n }\n }\n this.changeItem({\n valueType: 'RAW',\n reduced: this.selectedItem.reduced,\n reducedType: this.selectedItem.reducedType,\n })\n }\n } else {\n array[index] = value\n }\n }\n }\n },\n subscriptionKey: function (item) {\n let key = `${item.reduced}__TLM__${item.targetName}__${item.packetName}__${item.itemName}__${item.valueType}`\n if (\n item.reduced === 'REDUCED_MINUTE' ||\n item.reduced === 'REDUCED_HOUR' ||\n item.reduced === 'REDUCED_DAY'\n ) {\n key += `__${item.reducedType}`\n }\n return key\n },\n },\n}\n</script>\n\n<style>\n.v-window-item {\n background-color: var(--color-background-surface-default);\n}\n\n/* left right stacked legend */\n.uplot.side-legend {\n display: flex;\n width: auto;\n}\n\n.uplot.side-legend .u-wrap {\n flex: none;\n}\n\n.uplot.side-legend .u-legend {\n text-align: left;\n margin-left: 0;\n width: 220px;\n}\n\n.uplot.side-legend .u-legend,\n.uplot.side-legend .u-legend tr,\n.uplot.side-legend .u-legend th,\n.uplot.side-legend .u-legend td {\n display: revert;\n}\n\n/* left side we need to order the legend before the plot */\n.uplot.left-legend .u-legend {\n order: -1;\n}\n\n/* top legend */\n.uplot.top-legend {\n display: flex;\n flex-direction: column;\n}\n\n.uplot.top-legend .u-legend {\n order: -1;\n}\n\n/* This value is large enough to support negative scientific notation\n that we use on the value with rawValue.toExponential(6) */\n.u-legend.u-inline .u-series .u-value {\n width: 105px;\n}\n\n/* This value is large enough to support our date format: YYYY-MM-DD HH:MM:SS.sss */\n.u-legend.u-inline .u-series:first-child .u-value {\n width: 185px;\n}\n\n.u-select {\n background-color: rgba(255, 255, 255, 0.07);\n}\n</style>\n<style scoped>\n.active {\n background-color: var(--color-background-surface-selected) !important;\n}\n</style>\n"],"names":["_sfc_main","propValue","_a","_b","_c","i","item","indexes","val","newVal","oldVal","OpenC3Api","result","target","cmd","names","name","packet","items","label","a","b","value","packetName","_hoisted_1","_openBlock","_createElementBlock","_createVNode","_component_v_row","$props","_component_v_col","$options","_component_v_autocomplete","$data","$event","_component_v_list_item","_component_v_divider","_createBlock","_cache","_component_v_combobox","_component_v_btn","_toDisplayString","_Fragment","TargetPacketItemChooser","TimeFilters","isValid","parse","itemId","date","toDate","dline","enabled","selection","xAxisItemKey","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_component_v_dialog","_ctx","_component_v_toolbar","_component_v_spacer","_createElementVNode","_component_v_card","_component_v_tabs","_component_v_tab","_component_v_tabs_window","_component_v_tabs_window_item","_component_v_card_text","_component_v_text_field","_component_v_select","_component_v_list","_component_v_checkbox","_component_target_packet_item_chooser","_component_v_data_table","_withCtx","_component_v_card_actions","details","key","_component_v_card_title","DEFAULT_X_AXIS_ITEM","GraphEditDialog","GraphEditItemDialog","Cable","targetName","timeItems","newState","oldState","_newState","_oldState","data","j","dateStr","dateObj","newData","oldData","clonedItems","uPlot","index","chartSeries","overviewSeries","seriesObj","commonProps","u","seriesIdx","self","rawValue","timeZoneName","ts","v","targ","handler","e","chart","left","right","legend","seriesEl","series","min","max","screenItems","ptsMin","description","desired","graph","pad","dataMin","dataMax","itemsToAdd","subscription","type","navDrawerWidth","navDrawer","legendWidth","viewWidth","viewHeight","panel","height","width","strokeColor","axisColor","splits","el","split","event","limits","ctx","bbox","yMin","yMax","redLow","yellowLow","yellowHigh","redHigh","line","start","end","greenLow","greenHigh","itemArray","lastItem","theStartTime","refreshed","xAxisVal","length","bs","ideal_index","newStartTime","element","needle","time","new_data","key_index","array","_normalizeClass","_vShow","_component_v_expand_transition","_withDirectives","_component_graph_edit_dialog","_component_v_textarea","_component_v_menu","_component_v_list_item_title","_createTextVNode","_component_graph_edit_item_dialog","_component_v_list_subheader","_component_v_icon","_component_v_tooltip","props"],"mappings":";;;;;;AA8JA,MAAKA,KAAU;AAAA,EACb,OAAO;AAAA,IACL,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,oBAAoB;AAAA,MAClB,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,MAET,WAAW,CAACC,MACH,CAAC,OAAO,KAAK,EAAE,SAASA,CAAS;AAAA;IAG5C,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,OAAO,CAAC,UAAU,SAAS;AAAA,EAC3B,OAAO;;AACL,WAAO;AAAA,MACL,aAAa,CAAA;AAAA,MACb,qBAAoBC,IAAA,KAAK,sBAAL,gBAAAA,EAAwB;AAAA,MAC5C,aAAa,CAAA;AAAA,MACb,qBAAoBC,IAAA,KAAK,sBAAL,gBAAAA,EAAwB;AAAA,MAC5C,WAAW,CAAA;AAAA,MACX,mBAAkBC,IAAA,KAAK,oBAAL,gBAAAA,EAAsB;AAAA,MACxC,YAAY,CAAC,aAAa,KAAK;AAAA,MAC/B,mBAAmB;AAAA,MACnB,gBAAgB;AAAA;AAAA,QAEd,EAAE,OAAO,QAAQ,OAAO,QAAM;AAAA,QAC9B,EAAE,OAAO,kBAAkB,OAAO,iBAAe;AAAA,QACjD,EAAE,OAAO,gBAAgB,OAAO;QAChC,EAAE,OAAO,eAAe,OAAO;;MAEjC,oBAAoB;AAAA,MACpB,iBAAiB;AAAA,MACjB,cAAc,CAAC,OAAO,OAAO,OAAO,QAAQ;AAAA,MAC5C,qBAAqB;AAAA,MACrB,aAAa;AAAA,MACb,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,KAAK;AAAA,MACL,KAAK;AAAA,QACH,OAAO;AAAA,QACP,OAAO;AAAA,QACP,aAAa;AAAA,MACf;AAAA;AAAA,MACA,SAAS;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,aAAa;AAAA;IAEjB;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,kBAAkB,WAAY;AAC5B,aAAI,KAAK,uBAAuB,QACvB,eAEL,KAAK,qBAAqB,QACrB,eAEF,KAAK;AAAA,IACd;AAAA,IACA,sBAAsB,WAAY;AAChC,aAAO,KAAK,YAAY,KAAK;AAAA,IAC/B;AAAA,IACA,gBAAgB,WAAY;AAC1B,aACE,KAAK,YACL,KAAK,oBACL,KAAK,uBAAuB,QAC5B,KAAK,uBAAuB,QAC5B,KAAK,2BAA2B;AAAA,IAEpC;AAAA,IACA,SAAS,WAAY;AACnB,aAAO,KAAK,WAAW,KAAK;AAAA,IAC9B;AAAA,IACA,wBAAwB,WAAY;AAClC,aACE,KAAK,eACL,KAAK,uBAAuB,QAC5B,KAAK,uBAAuB,KAAK,IAAI,QAE9B,GAAG,KAAK,gBAAgB,IAAI,KAAK,kBAAkB,MAEnD,KAAK;AAAA,IAEhB;AAAA,IACA,+BAA+B,WAAY;AACzC,aAAO,KAAK,cAAc,KAAK,SAAS;AAAA,IAC1C;AAAA,IACA,cAAc,WAAY;AACxB,UAAIC,IAAI,KAAK,UAAU;AAAA,QACrB,CAACC,MAASA,EAAK,UAAU,KAAK;AAAA,MAChC,GACIC,IAAU,CAAC,GAAG,MAAM,KAAK,UAAUF,CAAC,EAAE,KAAK,EAAE,KAAI,CAAE;AACvD,cAAI,KAAK,YAAY,KAAK,uBACxBE,EAAQ,QAAQ,KAAK,IAAI,KAAK,GAEzBA;AAAA,IACT;AAAA,IACA,aAAa,WAAY;AACvB,UAAIF,IAAI,KAAK,UAAU;AAAA,QACrB,CAACC,MAASA,EAAK,UAAU,KAAK;AAAA,MAChC;AACA,aAAI,EAAAD,MAAM,MAAM,MAAM,KAAK,UAAUA,CAAC,EAAE,KAAK;AAAA,IAK/C;AAAA;EAEF,OAAO;AAAA,IACL,mBAAmB,SAAUG,GAAK;AAIhC,MAAIA,MACF,KAAK,qBAAqBA,EAAI,YAAW;AAAA,IAE7C;AAAA,IACA,mBAAmB,SAAUA,GAAK;AAChC,MAAIA,MACF,KAAK,qBAAqBA,EAAI,YAAW;AAAA,IAE7C;AAAA,IACA,iBAAiB,SAAUA,GAAK;AAC9B,MAAIA,MACF,KAAK,mBAAmBA,EAAI,YAAW;AAAA,IAE3C;AAAA,IACA,MAAM,SAAUC,GAAQC,GAAQ;AAC9B,WAAK,qBAAqB,MAC1B,KAAK,mBAAmB,MAExB,KAAK,kBAAkB,KAAK,kBAAkB;AAAA,IAChD;AAAA,IACA,YAAY,SAAUD,GAAQC,GAAQ;AACpC,MAAID,IACF,KAAK,YAAW,IAEhB,KAAK,YAAY,CAAA;AAAA,IAErB;AAAA,IACA,aAAa,SAAUD,GAAK;AAC1B,MAAIA,IACF,KAAK,uBAAL,KAAK,qBAAuB,KAE5B,KAAK,qBAAqB;AAAA,IAE9B;AAAA;EAEF,UAAU;AACR,SAAK,mBAAmB,IACxB,KAAK,MAAM,IAAIG,EAAS,GACxB,KAAK,IAAI,iBAAgB,EAAG,KAAK,CAACC,MAAW;AAC3C,WAAK,cAAcA,EAAO,QAAQ,CAACC,MAE7BA,KAAU,YACL,CAAA,IAEF,EAAE,OAAOA,GAAQ,OAAOA,EAAK,CACrC,GAaG,KAAK,mBACP,KAAK,YAAY,QAAQ,KAAK,GAAG,GAI9B,KAAK,qBAKR,KAAK,cAAa,KAJlB,KAAK,qBAAqB,KAAK,YAAY,CAAC,EAAE,OAC9C,KAAK,kBAAkB,KAAK,kBAAkB,IAK5C,KAAK,WACP,KAAK,YAAY,KAAK,KAAK,OAAO;AAAA,IAEtC,CAAC;AAAA,EACH;AAAA,EACA,SAAS;AAAA,IACP,eAAe,WAAY;AACzB,UAAI,KAAK,uBAAuB,WAAW;AACzC,aAAK,cAAc,CAAC,KAAK,OAAO,GAChC,KAAK,qBAAqB,KAAK,YAAY,CAAC,EAAE,OAC9C,KAAK,oBAAoB,KAAK,QAAQ,KAAK,GAC3C,KAAK,cAAc;AACnB;AAAA,MACF;AACA,UAAI,KAAK,uBAAuB,OAAO;AACrC,aAAK,cAAc,CAAC,KAAK,GAAG,GAC5B,KAAK,qBAAqB,KAAK,YAAY,CAAC,EAAE,OAC9C,KAAK,oBAAoB,KAAK,IAAI,KAAK,GACvC,KAAK,cAAc;AACnB;AAAA,MACF;AACA,WAAK,mBAAmB;AACxB,YAAMC,IACJ,KAAK,SAAS,QAAQ,sBAAsB;AAC9C,WAAK,IAAIA,CAAG,EAAE,KAAK,oBAAoB,KAAK,MAAM,EAAE,KAAK,CAACC,MAAU;AAClE,aAAK,cAAcA,EAAM,IAAI,CAACC,OACrB;AAAA,UACL,OAAOA;AAAA,UACP,OAAOA;AAAA,QACT,EACD,GACG,KAAK,YACP,KAAK,YAAY,QAAQ,KAAK,GAAG,GAE9B,KAAK,uBACJ,KAAK,YAAY,WAAW,IAC9B,KAAK,qBAAqB,OAE1B,KAAK,qBAAqB,KAAK,YAAY,CAAC,EAAE,QAGlD,KAAK,oBAAoB,KAAK,kBAAkB,GACnC,KAAK,YAAY,KAAK,CAACC,MAC3BA,EAAO,UAAU,KAAK,kBAC9B,KACW,KAAK,cACf,KAAK,YAAW,GAElB,KAAK,mBAAmB;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,IAEA,aAAa,WAAY;AACvB,UAAI,KAAK,uBAAuB;AAKhC,YAFA,KAAK,mBAAmB,IAEpB,KAAK,uBAAuB;AAC9B,eAAK,IACF,uBAAuB,KAAK,kBAAkB,EAC9C,KAAK,CAACC,MAAU;AACf,iBAAK,YAAYA,EAAM,IAAI,CAACZ,OACnB;AAAA,cACL,OAAOA;AAAA,cACP,OAAOA;AAAA,cACP,aAAa,UAAUA,CAAI;AAAA;AAAA,YAE7B,EACD,GACD,KAAK,kBAAiB;AAAA,UACxB,CAAC;AAAA,aACE;AACL,gBAAMQ,IAAM,KAAK,SAAS,QAAQ,YAAY;AAC9C,eAAK,IAAIA,CAAG,EAAE,KAAK,oBAAoB,KAAK,kBAAkB,EAAE;AAAA,YAC9D,CAACG,MAAW;AACV,mBAAK,YAAYA,EAAO,MAAM,IAAI,CAACX,MAAS;AAC1C,oBAAIa,IAAQb,EAAK;AACjB,uBAAIA,EAAK,aAAa,cACpBa,KAAS,OAEJ;AAAA,kBACL,OAAOA;AAAA,kBACP,OAAOb,EAAK;AAAA,kBACZ,aAAaA,EAAK;AAAA,kBAClB,OAAOA,EAAK,aAAaA,EAAK;AAAA,gBAChC;AAAA,cACF,CAAC,GACD,KAAK,UAAU,KAAK,CAACc,GAAGC,MAAOD,EAAE,QAAQC,EAAE,QAAQ,IAAI,EAAG,GAC1D,KAAK,kBAAiB;AAAA,YACxB;AAAA,UACF;AAAA,QACF;AAAA,IACF;AAAA,IACA,mBAAmB,WAAY;AAC7B,MAAI,KAAK,YACP,KAAK,UAAU,QAAQ,KAAK,GAAG,GAE5B,KAAK,qBACR,KAAK,mBAAmB,KAAK,UAAU,CAAC,EAAE,QAE5C,KAAK,cAAc,KAAK,UAAU,CAAC,EAAE,aACrC,KAAK,MAAM,UAAU;AAAA,QACnB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,OACnB,GACD,KAAK,mBAAmB;AAAA,IAC1B;AAAA,IAEA,mBAAmB,SAAUC,GAAO;AAClC,WAAK,qBAAqBA,GAC1B,KAAK,qBAAqB,IAC1B,KAAK,mBAAmB,IAIpBA,MAAU,QACZ,KAAK,cAAa;AAAA,IAEtB;AAAA,IAEA,mBAAmB,SAAUA,GAAO;AAClC,WAAK,mBAAmB,IAIpBA,MAAU,QACZ,KAAK,oBAAoBA,CAAK;AAAA,IAElC;AAAA,IAEA,qBAAqB,SAAUA,GAAO;AACpC,UAAIA,MAAU;AACZ,aAAK,gBAAgB,IACrB,KAAK,mBAAmB;AAAA,eACfA,MAAU;AACnB,aAAK,gBAAgB,IACrB,KAAK,qBAAqB;AAAA,WACrB;AACL,aAAK,gBAAgB;AACrB,cAAML,IAAS,KAAK,YAAY,KAAK,CAACA,MAC7BK,MAAUL,EAAO,KACzB;AACD,YAAIA,GAAQ;AACV,eAAK,qBAAqBA,EAAO;AACjC,gBAAMH,IAAM,KAAK,SAAS,QAAQ,YAAY;AAC9C,eAAK,IAAIA,CAAG,EAAE,KAAK,oBAAoB,KAAK,kBAAkB,EAAE;AAAA,YAC9D,CAACG,MAAW;AACV,mBAAK,cAAcA,EAAO,aAC1B,KAAK,YAAYA,EAAO;AAAA,YAC1B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,MAAI,KAAK,aACP,KAAK,YAAW,IAEhB,KAAK,MAAM,UAAU;AAAA,QACnB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,OACnB;AAAA,IAEL;AAAA,IAEA,iBAAiB,SAAUK,GAAO;AAChC,YAAMhB,IAAO,KAAK,UAAU,KAAK,CAACA,MACzBgB,MAAUhB,EAAK,KACvB;AACD,MAAIA,MACF,KAAK,mBAAmBA,EAAK,OAC7B,KAAK,cAAcA,EAAK,aACxB,KAAK,MAAM,UAAU;AAAA,QACnB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,OACnB;AAAA,IAEL;AAAA,IAEA,cAAc,SAAUgB,GAAO;AAC7B,WAAK,MAAM,UAAU;AAAA,QACnB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,OACnB;AAAA,IACH;AAAA,IAEA,eAAe,WAAY;AACzB,MAAI,KAAK,uBAAuB,QAC9B,KAAK,qBAAoB,IAChB,KAAK,qBAAqB,QACnC,KAAK,eAAc,IACV,KAAK,aACd,KAAK,MAAM,WAAW;AAAA,QACpB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,OACnB,IAED,KAAK,MAAM,WAAW;AAAA,QACpB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,OACnB;AAAA,IAEL;AAAA,IAEA,sBAAsB,WAAY;AAChC,WAAK,YAAY,QAAQ,CAACC,MAAe;AACvC,YAAIA,MAAe,KAAK,IAAK;AAC7B,cAAMT,IAAM,KAAK,SAAS,QAAQ,YAAY;AAC9C,aAAK,IAAIA,CAAG,EAAE,KAAK,oBAAoBS,EAAW,KAAK,EAAE;AAAA,UACvD,CAACN,MAAW;AACV,YAAAA,EAAO,MAAM,QAAQ,CAACX,MAAS;AAC7B,mBAAK,MAAM,WAAW;AAAA,gBACpB,YAAY,KAAK;AAAA,gBACjB,YAAYiB,EAAW;AAAA,gBACvB,UAAUjB,EAAK;AAAA,gBACf,WAAW,KAAK;AAAA,gBAChB,SAAS,KAAK;AAAA,gBACd,aAAa,KAAK;AAAA,eACnB;AAAA,YACH,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,gBAAgB,WAAY;AAC1B,WAAK,UAAU,QAAQ,CAACA,MAAS;AAC/B,QAAIA,MAAS,KAAK,OAClB,KAAK,MAAM,WAAW;AAAA,UACpB,YAAY,KAAK;AAAA,UACjB,YAAY,KAAK;AAAA,UACjB,UAAUA,EAAK;AAAA,UACf,WAAW,KAAK;AAAA,UAChB,SAAS,KAAK;AAAA,UACd,aAAa,KAAK;AAAA,SACnB;AAAA,MACH,CAAC;AAAA,IACH;AAAA;AAEJ,GAnoBOkB,KAAA,EAAA,OAAM,YAAW;;;AAAtB,SAAAC,EAAA,GAAAC,EA8HM,OA9HNF,IA8HM;AAAA,IA7HJG,EAoFQC,GAAA;AAAA,MApFA,eAAaC,EAAA;AAAA;iBACnB,MAaQ;AAAA,QAbRF,EAaQG,GAAA;AAAA,UAbA,MAAMC,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;qBACxD,MAWE;AAAA,YAXFJ,EAWEK,GAAA;AAAA,0BAVSC,EAAA;AAAA;uCAAAA,EAAA,qBAAkBC;AAAA,gBASNH,EAAA;AAAA;cARrB,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUA,EAAA,wBAAwBF,EAAA;AAAA,cAClC,OAAOI,EAAA;AAAA,cACR,cAAW;AAAA,cACX,cAAW;AAAA;;;;QAIfN,EAkBQG,GAAA;AAAA,UAlBA,MAAMC,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;qBACxD,MAgBiB;AAAA,YAhBjBJ,EAgBiBK,GAAA;AAAA,0BAfNC,EAAA;AAAA;uCAAAA,EAAA,qBAAkBC;AAAA,gBASNH,EAAA;AAAA;cARrB,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUE,EAAA,mBAAmBF,EAAA,wBAAwBF,EAAA;AAAA,cACrD,OAAOI,EAAA;AAAA,cACR,cAAW;AAAA,cACX,cAAW;AAAA;cAGKF,EAAA;sBAAgC;AAAA,sBAC9C,MAAmE;AAAA,kBAAnEJ,EAAmEQ,GAAA;AAAA,oBAAtD,OAAM;AAAA,oBAAU,gCAAOJ,EAAA,kBAAiB,QAAA;AAAA;kBACrDJ,EAAaS,CAAA;AAAA;;;;;;;QAKXP,EAAA,mBADRQ,EAkBQP,GAAA;AAAA;UAhBL,MAAMC,EAAA;AAAA,UACP,OAAM;AAAA,UACN,aAAU;AAAA;qBAEV,MAWE;AAAA,YAXFJ,EAWEK,GAAA;AAAA,0BAVSC,EAAA;AAAA;uCAAAA,EAAA,mBAAgBC;AAAA,gBASJI,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAAH,EAAA,gBAAgBG,CAAM;AAAA;cAR3C,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUD,EAAA,iBAAiBF,EAAA;AAAA,cAC3B,OAAOE,EAAA;AAAA,cACR,cAAW;AAAA,cACX,cAAW;AAAA;;;;QAMPJ,EAAA,cAAcE,EAAA,oBADtBM,EAmBQP,GAAA;AAAA;UAjBN,MAAK;AAAA,UACL,OAAM;AAAA,UACN,aAAU;AAAA,UACV,OAAA,EAAA,aAAA,QAAA;AAAA;qBAEA,MAWE;AAAA,YAXFH,EAWEY,GAAA;AAAA,0BAVSN,EAAA;AAAA;uCAAAA,EAAA,qBAAkBC;AAAA,gBASNI,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAAH,EAAA,aAAaG,CAAM;AAAA;cARxC,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUD,EAAA,iBAAiBF,EAAA;AAAA,cAC3B,OAAOA,EAAA;AAAA,cACR,cAAW;AAAA,cACX,cAAW;AAAA;;;;QAIFF,EAAA,mBAAbQ,EASQP,GAAA;AAAA;UATkB,MAAMC,EAAA;AAAA,UAAS,OAAA,EAAA,aAAA,QAAA;AAAA;qBACvC,MAOQ;AAAA,YAPRJ,EAOQa,GAAA;AAAA,cANL,UAAUT,EAAA;AAAA,cACX,OAAM;AAAA,cACN,aAAU;AAAA,cACT,SAAOA,EAAA;AAAA;yBAER,MAAsB;AAAA,oBAAnBA,EAAA,gBAAgB,GAAA,CAAA;AAAA;;;;;;;;;IAIZF,EAAA,oBAAbQ,EAiCQT,GAAA;AAAA;MAjCkB,OAAM;AAAA,MAAO,cAAA;AAAA;iBACrC,MASQ;AAAA,QATRD,EASQG,GAAA;AAAA,UATA,MAAMC,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;qBACxD,MAOE;AAAA,YAPFJ,EAOEK,GAAA;AAAA,0BANSC,EAAA;AAAA,4DAAAA,EAAA,oBAAiBC;AAAA,cAC1B,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,OAAOD,EAAA;AAAA;;;;QAGZN,EASQG,GAAA;AAAA,UATA,MAAMC,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;qBACxD,MAOE;AAAA,YAPFJ,EAOEK,GAAA;AAAA,0BANSC,EAAA;AAAA,4DAAAA,EAAA,kBAAeC;AAAA,cACxB,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,OAAOD,EAAA;AAAA;;;;QAGZN,EAUQG,GAAA;AAAA,UAVA,MAAMC,EAAA;AAAA,UAAS,OAAM;AAAA,UAAmB,aAAU;AAAA;qBACxD,MAQE;AAAA,YARFJ,EAQEK,GAAA;AAAA,0BAPSC,EAAA;AAAA,4DAAAA,EAAA,sBAAmBC;AAAA,cAC5B,OAAM;AAAA,cACN,gBAAA;AAAA,cACA,SAAQ;AAAA,cACR,SAAQ;AAAA,cACP,UAAUD,EAAA,oBAAe;AAAA,cACzB,OAAOA,EAAA;AAAA;;;;QAGZN,EAAyDG,GAAA;AAAA,UAAjD,MAAMC,EAAA;AAAA,UAAS,OAAA,EAAA,aAAA,QAAA;AAAA;;;;IAEzBJ,EAKQC,GAAA;AAAA,MALD,cAAA;AAAA,MAAW,OAAM;AAAA;iBACtB,MAGQ;AAAA,QAHRD,EAGQG,GAAA;AAAA,UAHA,MAAMC,EAAA;AAAA,UAAU,4BAA0BE,EAAA,UAAS,CAAA;AAAA;qBAAI,MAChD;AAAA,cADgD,mBAChDQ,EAAGR,EAAA,WAAW,IAAG,KAC9B,CAAA;AAAA,YAAgBA,EAAA,kBAAhBP,EAAmDgB,GAAA,EAAA,KAAA,EAAA,GAAA;AAAA,gBAAxB,eAAa;AAAA;;;;;;;;;sFCqG3C1C,KAAU;AAAA,EACb,YAAY;AAAA,IACV,yBAAA2C;AAAA;EAEF,QAAQ,CAACC,CAAW;AAAA,EACpB,OAAO;AAAA,IACL,YAAY;AAAA;AAAA,IACZ,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,WAAW;AAAA,MACT,MAAM;AAAA;IAER,WAAW;AAAA,MACT,MAAM;AAAA;IAER,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,eAAe;AAAA,MACb,MAAM;AAAA;IAER,aAAa;AAAA,MACX,MAAM;AAAA;IAER,UAAU;AAAA,MACR,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,OAAO,CAAC,UAAU,MAAM,UAAU,qBAAqB,kBAAkB;AAAA,EACzE,MAAM,WAAY;AAChB,WAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO,CAAA;AAAA,MACP,oBAAoB;AAAA,MACpB,mBAAmB;AAAA,MACnB,uBAAuB;AAAA,MACvB,iBAAiB,CAAC,OAAO,UAAU,QAAQ,OAAO;AAAA,MAClD,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa;AAAA,QACX,EAAE,OAAO,WAAW,OAAO;QAC3B,EAAE,OAAO,SAAS,OAAO,QAAM;AAAA,QAC/B,EAAE,OAAO,WAAW,OAAO,WAAW,UAAU,GAAI;AAAA;MAEtD,aAAa;AAAA,QACX,EAAE,OAAO,eAAe,OAAO;QAC/B,EAAE,OAAO,eAAe,OAAO;QAC/B,EAAE,OAAO,aAAa,OAAO;QAC7B,EAAE,OAAO,WAAW,OAAO,WAAW,UAAU,GAAI;AAAA;MAEtD,OAAO;AAAA,QACL,MAAM,CAACtB,MAAU;AACf,cAAI,CAACA,EAAO,QAAO;AACnB,cAAI;AACF,mBACEuB,EAAQC,EAAMxB,GAAO,cAAc,oBAAI,KAAI,CAAE,CAAC,KAC9C;AAAA,UAEJ,QAAY;AACV,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,MAAM,CAACA,MAAU;AACf,cAAI,CAACA,EAAO,QAAO;AACnB,cAAI;AACF,mBACEuB,EAAQC,EAAMxB,GAAO,YAAY,oBAAI,KAAI,CAAE,CAAC,KAC5C;AAAA,UAEJ,QAAY;AACV,mBAAO;AAAA,UACT;AAAA,QACF;AAAA;IAEJ;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,MAAM;AACJ,eAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAIA,GAAO;AACT,aAAK,MAAM,qBAAqBA,CAAK;AAAA,MACvC;AAAA;IAEF,WAAW,WAAY;AACrB,UAAI,CAAC,KAAK,MAAO,QAAO,CAAA;AACxB,UAAIyB,IAAS;AACb,aAAO,KAAK,MAAM,IAAI,CAACzC,OACrByC,KAAU,GACH,EAAE,GAAGzC,GAAM,QAAAyC,EAAK,EACxB;AAAA,IACH;AAAA,IACA,kBAAkB,WAAY;AAE5B,UAAI,KAAK,cAAc;AAGvB,eAAO,KAAK,UAAU,MAAM,IAAI,EAAE,GAAG,CAAC;AAAA,IACxC;AAAA;EAEF,UAAU;AAaR,QAZA,KAAK,QAAQ;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,gBAAgB,KAAK;AAAA,MACrB,OAAO,KAAK;AAAA,MACZ,WAAW,KAAK;AAAA,MAChB,WAAW,KAAK;AAAA,MAChB,OAAO,CAAC,GAAG,KAAK,KAAK;AAAA,IACvB,GACA,KAAK,qBAAqB,KAAK,aAAa,KAAK,cAAc,UAC/D,KAAK,oBAAoB,KAAK,WAG1B,KAAK,eAAe;AAEtB,UAAIC,IAAOC,EAAO,KAAK,gBAAgB,GAAO;AAC9C,WAAK,YAAY,KAAK,WAAWD,GAAM,KAAK,QAAQ,GACpD,KAAK,YAAY,KAAK,cAAcA,GAAM,KAAK,QAAQ;AAAA,IACzD,OAAO;AAEL,UAAIA,IAAO,oBAAI,SAAS;AACxB,WAAK,YAAY,KAAK,WAAWA,GAAM,KAAK,QAAQ,GACpD,KAAK,YAAY,KAAK,cAAcA,GAAM,KAAK,QAAQ;AAAA,IACzD;AAEA,QAAI,KAAK,aAAa;AACpB,UAAIA,IAAOC,EAAO,KAAK,cAAc,GAAO;AAC5C,WAAK,UAAU,KAAK,WAAWD,GAAM,KAAK,QAAQ,GAClD,KAAK,UAAU,KAAK,cAAcA,GAAM,KAAK,QAAQ;AAAA,IACvD;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,UAAU;AACR,MAAM,KAAK,aAAe,KAAK,YAC7B,KAAK,MAAM,gBAAgB,KAAK,YAAY,MAAM,KAAK,YAEvD,KAAK,MAAM,gBAAgB,MAEvB,KAAK,WAAa,KAAK,UAC3B,KAAK,MAAM,cAAc,KAAK,UAAU,MAAM,KAAK,UAEnD,KAAK,MAAM,cAAc,MAE3B,KAAK,MAAM,MAAM,KAAK,KAAK;AAAA,IAC7B;AAAA,IACA,UAAU;AACR,WAAK,MAAM,MAAM,KAAK,EAAE,QAAQ,GAAG,OAAO,SAAS;AAAA,IACrD;AAAA,IACA,WAAWE,GAAO;AAChB,UAAI7C,IAAI,KAAK,MAAM,MAAM,QAAQ6C,CAAK;AACtC,WAAK,MAAM,MAAM,OAAO7C,GAAG,CAAC;AAAA,IAC9B;AAAA,IACA,mBAAmB8C,GAAS;AAC1B,MAAKA,MACH,KAAK,oBAAoB,UACzB,KAAK,MAAM,oBAAoB,QAAQ;AAAA,IAE3C;AAAA,IACA,iBAAiBC,GAAW;AAC1B,WAAK,wBAAwBA;AAAA,IAC/B;AAAA,IACA,kBAAkBA,GAAW;AAC3B,UAAIA,EAAU,cAAcA,EAAU,cAAcA,EAAU,UAAU;AACtE,cAAMC,IAAe,eAAeD,EAAU,UAAU,KAAKA,EAAU,UAAU,KAAKA,EAAU,QAAQ;AACxG,aAAK,oBAAoBC,GACzB,KAAK,MAAM,oBAAoBA,CAAY;AAAA,MAC7C;AAAA,IACF;AAAA;AAEJ,GA5Ze7B,KAAA,EAAA,OAAM,WAAU,GAuBhB8B,KAAA,EAAA,OAAM,WAAU,GAuDhBC,KAAA,EAAA,OAAM,WAAU,GAuBhBC,KAAA,EAAA,OAAM,WAAU,GAwChBC,KAAA,EAAA,OAAM,WAAU;;;cA3J7BpB,EA+NWqB,GAAA;AAAA,gBA/NQ3B,EAAA;AAAA,oDAAAA,EAAA,OAAIG;AAAA,IAAE,aAAU;AAAA,IAAO,sCAAayB,EAAA,MAAK,QAAA,GAAA,CAAA,KAAA,CAAA;AAAA;eAC1D,MAIY;AAAA,MAJZhC,EAIYiC,GAAA,EAJD,QAAO,KAAI,GAAA;AAAA,mBACpB,MAAY;AAAA,UAAZjC,EAAYkC,CAAA;AAAA,UACZvB,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAAwB,EAAyB,cAAnB,gBAAY,EAAA;AAAA,UAClBnC,EAAYkC,CAAA;AAAA;;;;MAEdlC,EAwNSoC,GAAA,EAxND,OAAM,OAAM,GAAA;AAAA,mBAClB,MAIS;AAAA,UAJTpC,EAISqC,GAAA;AAAA,wBAJQL,EAAA;AAAA,0DAAAA,EAAA,MAAGzB;AAAA,YAAE,OAAM;AAAA;uBAC1B,MAAmC;AAAA,cAAnCP,EAAmCsC,GAAA,EAA5B,OAAM,IAAG,GAAA;AAAA,2BAAC,MAAU3B,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,oBAAV,cAAU,EAAA;AAAA;;;;cAC3BX,EAAwCsC,GAAA,EAAjC,OAAM,IAAG,GAAA;AAAA,2BAAC,MAAe3B,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,oBAAf,mBAAe,EAAA;AAAA;;;;cAChCX,EAAgCsC,GAAA,EAAzB,OAAM,IAAG,GAAA;AAAA,2BAAC,MAAO3B,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,oBAAP,WAAO,EAAA;AAAA;;;;;;;UAE1BX,EA4MgBuC,GAAA;AAAA,wBA5MQP,EAAA;AAAA,4DAAAA,EAAA,MAAGzB;AAAA;uBACzB,MA6EqB;AAAA,cA7ErBP,EA6EqBwC,GAAA;AAAA,gBA7ED,OAAM;AAAA,gBAAI,OAAA;AAAA;2BAC5B,MAsBM;AAAA,kBAtBNL,EAsBM,OAtBNtC,IAsBM;AAAA,oBArBJG,EAoBQC,GAAA,MAAA;AAAA,iCAnBN,MASQ;AAAA,wBATRD,EASQG,GAAA,MAAA;AAAA,qCARN,MAOc;AAAA,4BAPdH,EAOcyC,GAAA,EAPD,OAAM,OAAM,GAAA;AAAA,yCACvB,MAKE;AAAA,gCALFzC,EAKE0C,GAAA;AAAA,kCAJS,YAAAV,EAAA,MAAM;AAAA,kCAAN,uBAAArB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAAyB,EAAA,MAAM,QAAKzB;AAAA,kCACpB,OAAM;AAAA,kCACN,OAAM;AAAA,kCACN,gBAAA;AAAA;;;;;;;wBAINP,EAQQG,GAAA,MAAA;AAAA,qCAPN,MAME;AAAA,4BANFH,EAME2C,GAAA;AAAA,8BALS,YAAAX,EAAA,MAAM;AAAA,8BAAN,uBAAArB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAAyB,EAAA,MAAM,iBAAczB;AAAA,8BAC7B,OAAM;AAAA,8BACN,gBAAA;AAAA,8BACC,OAAOyB,EAAA;AAAA,8BACR,OAAA,EAAA,aAAA,QAAA;AAAA;;;;;;;;kBAKRG,EAoDM,OApDNR,IAoDM;AAAA,oBAnDJ3B,EAEcyC,GAAA,EAFD,OAAM,OAAM,GAAA;AAAA,iCAAC,MAE1B9B,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,0BAF0B,wEAE1B,EAAA;AAAA;;;;oBACAX,EAqBQC,GAAA,MAAA;AAAA,iCApBN,MAQQ;AAAA,wBARRD,EAQQG,GAAA,MAAA;AAAA,qCAPN,MAME;AAAA,4BANFH,EAME0C,GAAA;AAAA,0CALSV,EAAA;AAAA,4EAAAA,EAAA,YAASzB;AAAA,8BAClB,OAAM;AAAA,8BACL,MAAI,OAAS,KAAK,IAAG,CAAA;AAAA,8BACrB,OAAK,CAAGyB,EAAA,MAAM,IAAI;AAAA,8BACnB,MAAK;AAAA;;;;wBAGThC,EAUQG,GAAA,MAAA;AAAA,qCARN,MAOE;AAAA,4BAPFH,EAOE0C,GAAA;AAAA,0CANSV,EAAA;AAAA,4EAAAA,EAAA,YAASzB;AAAA,8BAClB,OAAM;AAAA,8BACL,MAAI,OAAS,KAAK,IAAG,CAAA;AAAA,8BACrB,OAAK,CAAGyB,EAAA,MAAM,IAAI;AAAA,8BACnB,MAAK;AAAA,8BACL,MAAK;AAAA;;;;;;;oBAIXhC,EAGcyC,GAAA,EAHD,OAAM,OAAM,GAAA;AAAA,iCAAC,MAG1B9B,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,0BAH0B,0FAG1B,EAAA;AAAA;;;;oBACAX,EAqBQC,GAAA,MAAA;AAAA,iCApBN,MAQQ;AAAA,wBARRD,EAQQG,GAAA,MAAA;AAAA,qCAPN,MAME;AAAA,4BANFH,EAME0C,GAAA;AAAA,0CALSV,EAAA;AAAA,4EAAAA,EAAA,UAAOzB;AAAA,8BAChB,OAAM;AAAA,8BACL,MAAI,OAAS,KAAK,IAAG,CAAA;AAAA,8BACrB,OAAK,CAAGyB,EAAA,MAAM,IAAI;AAAA,8BACnB,MAAK;AAAA;;;;wBAGThC,EAUQG,GAAA,MAAA;AAAA,qCARN,MAOE;AAAA,4BAPFH,EAOE0C,GAAA;AAAA,0CANSV,EAAA;AAAA,4EAAAA,EAAA,UAAOzB;AAAA,8BAChB,OAAM;AAAA,8BACL,MAAI,OAAS,KAAK,IAAG,CAAA;AAAA,8BACrB,OAAK,CAAGyB,EAAA,MAAM,IAAI;AAAA,8BACnB,MAAK;AAAA,8BACL,MAAK;AAAA;;;;;;;;;;;cAMfhC,EAmGqBwC,GAAA;AAAA,gBAnGD,OAAM;AAAA,gBAAI,OAAA;AAAA;2BAC5B,MAsBM;AAAA,kBAtBNL,EAsBM,OAtBNP,IAsBM;AAAA,oBArBJ5B,EAEcyC,GAAA,EAFD,OAAM,OAAM,GAAA;AAAA,iCAAC,MAE1B9B,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,0BAF0B,4DAE1B,EAAA;AAAA;;;;oBACAX,EAiBQC,GAAA,EAjBD,OAAA,GAAK,GAAA;AAAA,iCACV,MAOQ;AAAA,wBAPRD,EAOQG,GAAA,EAPD,OAAM,OAAM,GAAA;AAAA,qCACjB,MAKE;AAAA,4BALFH,EAKE0C,GAAA;AAAA,8BAJS,YAAAV,EAAA,MAAM;AAAA,8BAAN,uBAAArB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAAyB,EAAA,MAAM,YAASzB;AAAA,8BACxB,gBAAA;AAAA,8BACA,OAAM;AAAA,8BACN,MAAK;AAAA;;;;wBAGTP,EAOQG,GAAA,EAPD,OAAM,OAAM,GAAA;AAAA,qCACjB,MAKE;AAAA,4BALFH,EAKE0C,GAAA;AAAA,8BAJS,YAAAV,EAAA,MAAM;AAAA,8BAAN,uBAAArB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAAyB,EAAA,MAAM,YAASzB;AAAA,8BACxB,gBAAA;AAAA,8BACA,OAAM;AAAA,8BACN,MAAK;AAAA;;;;;;;;kBAKb4B,EAuCM,OAvCNN,IAuCM;AAAA,oBAtCJ7B,EAqCS4C,GAAA;AAAA,sBArCD,SAAQ;AAAA,sBAAU,OAAM;AAAA;iCAC9B,MAMc;AAAA,wBANd5C,EAMcQ,GAAA,MAAA;AAAA,qCALZ,MAEO;AAAA,4BAFPG,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAAwB,EAEO,QAAA,EAFD,OAAA,EAAA,eAAA,MAAA,EAAwB,GAAC,uCAE/B,EAAA;AAAA,4BACAnC,EAAYkC,CAAA;AAAA,4BACZlC,EAA4Ca,GAAA;AAAA,8BAApC,gCAAOT,EAAA;;yCAAW,MAAUO,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,kCAAV,cAAU,EAAA;AAAA;;;;;;;;yBAEtCb,EAAA,EAAA,GAAAC,EA4BcgB,YA3BQiB,EAAA,MAAM,OAAK,CAAvBrD,GAAMD,YADhBgC,EA4BcF,GAAA;AAAA,0BA1BX,KAAK9B;AAAA,0BACL,OAAOC;AAAA,0BACR,OAAM;AAAA;qCAEN,MAqBQ;AAAA,4BArBRqB,EAqBQC,GAAA,MAAA;AAAA,yCApBN,MAEQ;AAAA,gCAFRD,EAEQG,GAAA,MAAA;AAAA,6CADN,MAAsD;AAAA,oCAAtDH,EAAsD0C,GAAA;AAAA,sCAA/B,YAAA/D,EAAK;AAAA,sCAAL,uBAAA,CAAA4B,MAAA5B,EAAK,SAAM4B;AAAA,sCAAE,OAAM;AAAA;;;;gCAE5CP,EAOQG,GAAA,MAAA;AAAA,6CANN,MAKE;AAAA,oCALFH,EAKE2C,GAAA;AAAA,sCAJS,YAAAhE,EAAK;AAAA,sCAAL,uBAAA,CAAA4B,MAAA5B,EAAK,QAAK4B;AAAA,sCACnB,OAAM;AAAA,sCACN,gBAAA;AAAA,sCACC,OAAOL,EAAA;AAAA;;;;gCAGZF,EAQQG,GAAA,MAAA;AAAA,6CAPN,MAME;AAAA,oCANFH,EAMEa,GAAA;AAAA,sCALA,OAAA,EAAA,SAAA,OAAA;AAAA,sCACA,MAAK;AAAA,sCACL,SAAQ;AAAA,sCACR,cAAW;AAAA,sCACV,SAAK,CAAAN,MAAEH,EAAA,WAAWzB,CAAI;AAAA;;;;;;;;;;;;;;kBAOnCwD,EAkCM,OAlCNL,IAkCM;AAAA,oBAjCJ9B,EAKcyC,GAAA,EALD,OAAM,4BAA2B,GAAA;AAAA,iCAAC,MAK/C9B,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,0BAL+C,wMAK/C,EAAA;AAAA;;;;oBACAX,EAOE6C,GAAA;AAAA,kCANSb,EAAA;AAAA;iDAAAA,EAAA,qBAAkBzB;AAAA,wBAKNH,EAAA;AAAA;sBAJpB,WAAWF,EAAA;AAAA,sBACZ,OAAM;AAAA,sBACN,SAAQ;AAAA,sBACR,gBAAA;AAAA;oBAIOA,EAAA,oCADTQ,EAMc+B,GAAA;AAAA;sBAJZ,OAAM;AAAA;iCACP,MAGD9B,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,0BAHC,+EAGD,EAAA;AAAA;;;;oBAEQqB,EAAA,sBAAsB9B,EAAA,wBAD9BQ,EAWEoC,GAAA;AAAA;sBATC,uBAAqB5C,EAAA,gBAAgB;AAAA,sBACrC,uBAAqBA,EAAA,gBAAgB;AAAA,sBACrC,qBAAmBE,EAAA;AAAA,sBACpB,eAAA;AAAA,sBACA,eAAA;AAAA,sBACA,eAAA;AAAA,sBACA,eAAY;AAAA,sBACX,SAAQA,EAAA;AAAA,sBACR,WAAUA,EAAA;AAAA;;;;;cAIjBJ,EAwBqBwC,GAAA;AAAA,gBAxBD,OAAM;AAAA,gBAAI,OAAA;AAAA;2BAC5B,MAsBe;AAAA,kBAtBfxC,EAsBe+C,GAAA;AAAA,oBArBb,YAAS;AAAA,oBACT,OAAM;AAAA,oBACN,aAAU;AAAA,oBACT,SAASf,EAAA;AAAA,oBACT,OAAO5B,EAAA;AAAA,oBACP,kBAAgB;AAAA,oBAChB,gBAAc;AAAA;oBAEd;AAAA;oBAEU,gBAAY4C,EACrB,CAKE,EANuB,MAAArE,QAAI;AAAA,sBAC7BqB,EAKEa,GAAA;AAAA,wBAJA,MAAK;AAAA,wBACL,SAAQ;AAAA,wBACR,cAAW;AAAA,wBACV,SAAK,CAAAN,MAAEyB,EAAA,MAAK,UAAWrD,CAAI;AAAA;;oBAGrB,aACT,MAA+CgC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,sBAA/CwB,EAA+C,cAAzC,sCAAkC,EAAA;AAAA;;;;;;;;;UAKhDnC,EAIiBiD,GAAA,EAJD,OAAM,OAAM,GAAA;AAAA,uBAC1B,MAAY;AAAA,cAAZjD,EAAYkC,CAAA;AAAA,cACZlC,EAAmEa,GAAA;AAAA,gBAA5D,SAAQ;AAAA,gBAAY,kCAAOmB,EAAA,MAAK,QAAA;AAAA;2BAAY,MAAQrB,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,oBAAR,YAAQ,EAAA;AAAA;;;;cAC3DX,EAAmDa,GAAA;AAAA,gBAA5C,SAAQ;AAAA,gBAAQ,SAAOT,EAAA;AAAA;2BAAS,MAAIO,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,oBAAJ,QAAI,EAAA;AAAA;;;;;;;;;;;;;;oDC3J9CtC,KAAU;AAAA,EACb,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA;;EAGd,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;EAEF,MAAM,WAAY;AAChB,WAAO;AAAA,MACL,UAAU;AAAA,MACV,YAAY;AAAA;AAAA,MAEZ,QAAQ,EAAE,MAAM;MAChB,YAAY,CAAC,aAAa,KAAK;AAAA,MAC/B,WAAW;AAAA;AAAA,QAET,EAAE,OAAO,QAAQ,OAAO,QAAM;AAAA,QAC9B,EAAE,OAAO,kBAAkB,OAAO,iBAAe;AAAA,QACjD,EAAE,OAAO,gBAAgB,OAAO;QAChC,EAAE,OAAO,eAAe,OAAO;;MAEjC,cAAc,CAAC,OAAO,OAAO,OAAO,QAAQ;AAAA,IAC9C;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,MAAM;AACJ,eAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAIsB,GAAO;AACT,aAAK,MAAM,qBAAqBA,CAAK;AAAA,MACvC;AAAA;IAEF,cAAc;AACZ,aAAO,OAAO,KAAK,KAAK,MAAM;AAAA,IAChC;AAAA;EAEF,MAAM,UAAU;AACd,SAAK,WAAW,EAAE,GAAG,KAAK,KAAG,GAC7B,IAAIX,EAAS,EACV,SAAS,KAAK,KAAK,YAAY,KAAK,KAAK,YAAY,KAAK,KAAK,QAAQ,EACvE,KAAK,CAACkE,MAAY;AACjB,iBAAW,CAACC,GAAKxD,CAAK,KAAK,OAAO,QAAQuD,EAAQ,MAAM;AACtD,QAAI,OAAO,KAAKvD,CAAK,EAAE,SAAS,SAAS,MACvC,KAAK,OAAOwD,CAAG,IAAI,OAAO,OAAOxD,CAAK;AAI1C,WAAK,aAAa,OAAO,KAAK,KAAK,MAAM,EAAE;AAAA;AAAA,QAEzC,CAACwD,MAAQ,KAAK,OAAOA,CAAG,IAAI,MAAO,KAAK,SAAS,SAAS;AAAA,MAC5D;AAAA,IACF,CAAC;AAAA,EACL;AACF,oBAhFexB,KAAA,EAAA,OAAM,OAAM;;;cA/CzBjB,EAwDWqB,GAAA;AAAA,gBAxDQ3B,EAAA;AAAA,kDAAAA,EAAA,OAAIG;AAAA,IAAE,OAAM;AAAA,IAAO,sCAAeyB,EAAA,QAAO,GAAA,CAAA,OAAA,CAAA;AAAA;eAC1D,MAsDS;AAAA,MAtDThC,EAsDSoC,GAAA,MAAA;AAAA,mBArDP,MAAmD;AAAA,UAAnDpC,EAAmDoD,GAAA,EAArC,OAAM,OAAM,GAAA;AAAA,uBAAC,MAASzC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,gBAAT,aAAS,EAAA;AAAA;;;;UACpCX,EA8CcyC,GAAA,MAAA;AAAA,uBA7CZ,MAOE;AAAA,cAPFzC,EAOE2C,GAAA;AAAA,gBANS,YAAAX,EAAA,SAAS;AAAA,gBAAT,uBAAArB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAAyB,EAAA,SAAS,YAASzB;AAAA,gBAC3B,SAAQ;AAAA,gBACR,gBAAA;AAAA,gBACA,OAAM;AAAA,gBACL,OAAOyB,EAAA;AAAA,gBACR,OAAM;AAAA;cAERhC,EAOE2C,GAAA;AAAA,gBANS,YAAAX,EAAA,SAAS;AAAA,gBAAT,uBAAArB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAAyB,EAAA,SAAS,UAAOzB;AAAA,gBACzB,SAAQ;AAAA,gBACR,gBAAA;AAAA,gBACA,OAAM;AAAA,gBACL,OAAOyB,EAAA;AAAA,gBACR,OAAM;AAAA;cAERhC,EAQE2C,GAAA;AAAA,gBAPS,YAAAX,EAAA,SAAS;AAAA,gBAAT,uBAAArB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAAyB,EAAA,SAAS,cAAWzB;AAAA,gBAC7B,SAAQ;AAAA,gBACR,gBAAA;AAAA,gBACA,OAAM;AAAA,gBACL,OAAOyB,EAAA;AAAA,gBACP,UAAUA,EAAA,SAAS,YAAO;AAAA,gBAC3B,OAAM;AAAA;cAERhC,EAQE2C,GAAA;AAAA,gBAPS,YAAAX,EAAA,SAAS;AAAA;kBAATrB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAAyB,EAAA,SAAS,QAAKzB;AAAA,kBAMFI,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAAyB,EAAA,qBAAqBzB,CAAM;AAAA;gBALhD,SAAQ;AAAA,gBACR,gBAAA;AAAA,gBACA,OAAM;AAAA,gBACL,OAAOL,EAAA;AAAA,gBACR,OAAM;AAAA;cAGGE,EAAA,YAAY,SAAM,UAA7BL,EAUM,OAAAF,IAAA;AAAA,gBATJG,EAOE2C,GAAA;AAAA,8BANSX,EAAA;AAAA;2CAAAA,EAAA,aAAUzB;AAAA,2CAKEyB,EAAA,MAAK,gBAAiBA,EAAA,OAAOA,EAAA,UAAU,CAAA;AAAA;kBAJ5D,SAAQ;AAAA,kBACR,gBAAA;AAAA,kBACA,OAAM;AAAA,kBACL,OAAO5B,EAAA;AAAA;gBAGV+B,EAAkE,OAAlER,IAAkEb,EAA7CkB,EAAA,UAAU,IAAG,OAAElB,EAAGkB,EAAA,OAAOA,EAAA,UAAU,CAAA,GAAA,CAAA;AAAA;;;;UAG5DhC,EAIiBiD,GAAA,EAJD,OAAM,OAAM,GAAA;AAAA,uBAC1B,MAAY;AAAA,cAAZjD,EAAYkC,CAAA;AAAA,cACZlC,EAAmEa,GAAA;AAAA,gBAA5D,SAAQ;AAAA,gBAAY,gCAAOmB,EAAA,MAAK,QAAA;AAAA;2BAAY,MAAQrB,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,oBAAR,YAAQ,EAAA;AAAA;;;;cAC3DX,EAAoEa,GAAA;AAAA,gBAA7D,SAAQ;AAAA,gBAAQ,SAAKF,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAEyB,EAAA,MAAK,SAAUA,EAAA,QAAQ;AAAA;2BAAG,MAAIrB,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,oBAAJ,QAAI,EAAA;AAAA;;;;;;;;;;;;;;oDCgP9D0C,IAAsB,UAEvBhF,KAAU;AAAA,EACb,YAAY;AAAA,IACV,iBAAAiF;AAAA,IACA,qBAAAC;AAAA;EAEF,QAAQ,CAACtC,CAAW;AAAA,EACpB,OAAO;AAAA,IACL,IAAI;AAAA,MACF,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,OAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA;;;IAIZ,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,aAAa;AAAA,MACX,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,eAAe;AAAA,MACb,MAAM;AAAA,MACN,UAAU;AAAA;IAEZ,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA;IAEjB,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAASoC;AAAA;;IAGX,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA;IAEX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;;EAGb,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;EAEF,OAAO;AACL,WAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO,CAAA;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,UAAU;AAAA,MACV,WAAW;AAAA,MACX,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,iBAAiB,KAAK;AAAA,MACtB,cAAc,CAAC,KAAK;AAAA,MACpB,kBAAkB,KAAK;AAAA,MACvB,OAAO;AAAA,MACP,UAAU;AAAA,MACV,MAAM,CAAC,CAAA,CAAE;AAAA,MACT,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAW;AAAA,MACX,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,WAAW,KAAK;AAAA;AAAA,MAChB,SAAS,CAAA;AAAA,MACT,OAAO,KAAK;AAAA,MACZ,YAAY,CAAA;AAAA,MACZ,sBAAsB;AAAA,MACtB,cAAc,CAAA;AAAA,MACd,cAAc;AAAA,MACd,WAAW;AAAA,MACX,cAAc;AAAA,MACd,OAAO,IAAIG,GAAK;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,aAAa;AAAA,MACb,QAAQ,CAAA;AAAA,MACR,YAAY;AAAA,MACZ,QAAQ;AAAA;AAAA;AAAA,QAGN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;IAEJ;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,cAAc,WAAY;AACxB,aAAO,KAAK,aAAa,KAAK;AAAA,IAChC;AAAA,IACA,OAAO,WAAY;AACjB,aAAI,KAAK,eAAe,KAAK,OAAO,SAAS,IACpC,KAAK,UAAU,KAAK,QAAQ,MAAM,CAAC,IAErC;AAAA,IACT;AAAA,IACA,0BAA0B,WAAY;AACpC,UAAI,CAAC,KAAK,yBAAyB,KAAK,MAAM,WAAW;AACvD;AAEF,YAAM,EAAE,YAAAC,GAAY,YAAA7D,EAAS,IAAM,KAAK,MAAM,CAAC;AAC/C,aAAO,EAAE,YAAA6D,GAAY,YAAA7D,EAAS;AAAA,IAChC;AAAA,IACA,uBAAuB,WAAY;AAKjC,UAAI,KAAK,MAAM,WAAW;AACxB,eAAO;AAET,YAAM,EAAE,YAAA6D,GAAY,YAAA7D,EAAS,IAAM,KAAK,MAAM,CAAC;AAC/C,aAAO,KAAK,MAAM;AAAA,QAChB,CAACjB,MACCA,EAAK,eAAe8E,KAAc9E,EAAK,eAAeiB;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,iBAAiB,WAAY;AAC3B,aAAI,KAAK,yBAAyB,KAAK,YAC9B,KAAK,YAELyD;AAAA,IAEX;AAAA,IACA,gBAAgB,WAAY;AAC1B,aAAI,KAAK,iBACA,CAACxE,MAAQA,IAAM,MAEjB,CAACA,MAAQA;AAAA,IAClB;AAAA,IACA,gBAAgB,WAAY;AAC1B,aAAO,CAACA,MACFA,KAAO,OACF,OACE,KAAK,cAEP,KAAK,cAAcA,GAAK,KAAK,QAAQ,IAEvCA;AAAA,IAEX;AAAA,IACA,YAAY,WAAY;AACtB,aAAO,KAAK,cAAc,SAAS,KAAK,gBAAgB,MAAM,IAAI,EAAE,GAAG,EAAE;AAAA,IAC3E;AAAA,IACA,gBAAgB,WAAY;AAC1B,aAAO,KAAK,oBAAoBwE;AAAA,IAClC;AAAA,IACA,aAAa,WAAY;AACvB,YAAMK,IAAY,CAAC,sBAAsB,sBAAsB;AAC/D,aACE,KAAK,kBACLA,EAAU,SAAS,KAAK,gBAAgB,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC;AAAA,IAE7D;AAAA,IACA,cAAc,WAAY;AACxB,aAAO,KAAK,OAAO,MAAM,SAAS;AAAA,IACpC;AAAA,IACA,kBAAkB,WAAY;AAC5B,aAAO,KAAK,OAAO,MAAM,SAAS;AAAA,IACpC;AAAA,IACA,cAAc,WAAY;AACxB,aAAO,KAAK,OAAO,MAAM,SAAS;AAAA,IACpC;AAAA;EAEF,OAAO;AAAA,IACL,OAAO,SAAUC,GAAUC,GAAU;AACnC,cAAQD,GAAQ;AAAA,QACd,KAAK;AAGH,UAAIC,MAAa,UACf,KAAK,WAAU;AAEjB;AAAA;AAAA,QAEF,KAAK;AACH,eAAK,UAAS;AACd;AAAA,MACJ;AAAA,IACF;AAAA,IACA,cAAc,SAAUC,GAAWC,GAAW;AAC5C,MAAI,KAAK,iBAAiB,aACxB,KAAK,kBAAiB,KAGtB,KAAK,uBAAuB,MAC5B,KAAK,aAAY,GACjB,KAAK,WAAU;AAAA,IAEnB;AAAA,IACA,kBAAkB,SAAUD,GAAWC,GAAW;AAChD,MAAI,KAAK,iBAAiB,eAEtB,KAAK,yBAAyB,QAC9B,KAAK,uBAAuB,KAAK,mBAGjC,KAAK,aAAY,IAEjB,KAAK,IACF;AAAA,QACC,KAAK;AAAA,QACL;AAAA;AAAA,QACA;AAAA;AAAA,QACA,KAAK;AAAA;AAAA,QACL,KAAK;AAAA;AAAA,MACP,EACC,KAAK,CAACC,MAAS;AACd,YAAIA,EAAK,SAAS;AAChB,cAAI,MAAM,QAAQA,EAAK,CAAC,CAAC,KAAK,MAAM,QAAQA,EAAK,CAAC,EAAE,CAAC,CAAC;AAEpD,qBAASrF,IAAI,GAAGA,IAAIqF,EAAK,QAAQrF;AAC/B,uBAASsF,IAAI,GAAGA,IAAID,EAAKrF,CAAC,EAAE,QAAQsF;AAClC,oBAAIA,MAAM,GAAG;AACX,sBAAIC,IAAUF,EAAKrF,CAAC,EAAEsF,CAAC,EAAE,CAAC,GACtBE,IAAU,IAAI,KAAKD,CAAO;AAC9B,uBAAK,KAAK,CAAC,EAAE,KAAKC,EAAQ,QAAO,IAAK,GAAM;AAAA,gBAC9C;AACE,uBAAK,KAAKF,CAAC,EAAE,KAAKD,EAAKrF,CAAC,EAAEsF,CAAC,EAAE,CAAC,CAAC;AAAA,mBAI5B,MAAM,QAAQD,CAAI,KAAKA,EAAK,UAAU;AAC/C,qBAASrF,IAAI,GAAGA,IAAIqF,EAAK,QAAQrF;AAC/B,kBAAIA,MAAM,GAAG;AACX,oBAAIuF,IAAUF,EAAKrF,CAAC,EAAE,CAAC,GACnBwF,IAAU,IAAI,KAAKD,CAAO;AAC9B,qBAAK,KAAK,CAAC,EAAE,KAAKC,EAAQ,QAAO,IAAK,GAAM;AAAA,cAC9C;AACE,qBAAK,KAAKxF,CAAC,EAAE,KAAKqF,EAAKrF,CAAC,EAAE,CAAC,CAAC;AAAA;AAKpC,aAAK,cAAc,IACnB,KAAK,gBAAe;AAAA,MACtB,CAAC,GAEL,KAAK,uBAAuB,KAAK;AAAA,IAErC;AAAA,IACA,MAAM,SAAUyF,GAASC,GAAS;AAChC,WAAK,cAAc;AAAA,IACrB;AAAA,IACA,WAAW,SAAUtF,GAAQC,GAAQ;AACnC,UAAIF,IAAM,WAAWC,CAAM;AAC3B,MAAK,MAAMD,CAAG,MACZ,KAAK,YAAYA,IAEnB,KAAK,cAAa;AAAA,IACpB;AAAA,IACA,WAAW,SAAUC,GAAQC,GAAQ;AACnC,UAAIF,IAAM,WAAWC,CAAM;AAC3B,MAAK,MAAMD,CAAG,MACZ,KAAK,YAAYA,IAEnB,KAAK,cAAa;AAAA,IACpB;AAAA,IACA,oBAAoB,SAAUC,GAAQC,GAAQ;AAC5C,MAAID,KAAU,OAAOA,KAAW,YAC9B,KAAK,qBACH,KAAK,cAAc,KAAK,oBAAoB,KAAK,QAAQ,IAAI,KAC3D,KAAK,uBAAuBC,MAC9B,KAAK,eAAe,OAEbD,MAAW,QAAQC,MAE5B,KAAK,qBAAqB,MAC1B,KAAK,eAAe;AAAA,IAExB;AAAA,IACA,kBAAkB,SAAUD,GAAQC,GAAQ;AAC1C,MAAID,KAAU,OAAOA,KAAW,YAC9B,KAAK,mBACH,KAAK,cAAc,KAAK,kBAAkB,KAAK,QAAQ,IAAI,KACzD,KAAK,qBAAqBC,MAC5B,KAAK,eAAe,OAEbD,MAAW,QAAQC,MAE5B,KAAK,mBAAmB,MACxB,KAAK,eAAe;AAAA,IAExB;AAAA,IACA,iBAAiB,SAAUD,GAAQC,GAAQ;AACzC,UAAIsF,IAAc,KAAK,MAAM,KAAK,UAAU,KAAK,KAAK,CAAC;AACvD,WAAK,YAAYA,CAAW,GAC5B,KAAK,MAAM,QAAO,GAClB,KAAK,UAAU,OAAO,CAAC,EAAE,QAAQ,KAAK,YACtC,KAAK,UAAU,OAAO,EAAE,OAAO,KAAK,aACpC,KAAK,QAAQ,IAAIC;AAAA,QACf,KAAK;AAAA,QACL,KAAK;AAAA,QACL,SAAS,eAAe,QAAQ,KAAK,EAAE,EAAE;AAAA,MAC3C,GACK,KAAK,iBACR,KAAK,SAAS,QAAO,GACrB,KAAK,aAAa,OAAO,EAAE,OAAO,KAAK,aACvC,KAAK,WAAW,IAAIA;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,SAAS,eAAe,WAAW,KAAK,EAAE,EAAE;AAAA,MAC9C,IAEF,KAAK,SAASD,CAAW;AAAA,IAE3B;AAAA;EAEF,UAAU;AACR,SAAK,MAAM,IAAIrF,EAAS,GACxB,KAAK,QAAQ,SAAS,KAAK,EAAE;AAC7B,eAAW,CAACuF,GAAO5F,CAAI,KAAK,KAAK,MAAM;AACrC,WAAK,KAAK,KAAK,EAAE,GACjB,KAAK,QAAQ,KAAK,gBAAgBA,CAAI,CAAC,IAAI4F,IAAQ,GAC/C5F,EAAK,UAAU,WACjBA,EAAK,QAAQ,KAAK,OAAO,KAAK,UAAU,IAE1C,KAAK,cACD,KAAK,eAAe,KAAK,OAAO,WAClC,KAAK,aAAa;AAAA,EAGxB;AAAA,EACA,UAAU;AA2CR,UAAM,EAAE,aAAA6F,GAAa,gBAAAC,MAAmB,KAAK,MAAM;AAAA,MACjD,CAACC,GAAW/F,MAAS;AACnB,cAAMgG,IAAc;AAAA,UAClB,UAAU;AAAA,QACZ;AACA,eAAAD,EAAU,YAAY,KAAK;AAAA,UACzB,GAAGC;AAAA,UACH,MAAMhG;AAAA,UACN,OAAO,KAAK,YAAYA,CAAI;AAAA,UAC5B,QAAQ,CAACiG,GAAGC,MACH,KAAK,MAAMA,IAAY,CAAC,EAAE;AAAA,UAEnC,OAAO;AAAA,UACP,OAAO,CAACC,GAAMC,MACR,OAAOA,KAAa,YAAY,MAAMA,CAAQ,IACzC,QAEAA,KAAY,OAAO,OAAOA,EAAS,QAAQ,CAAC;AAAA,SAGxD,GACDL,EAAU,eAAe,KAAK;AAAA,UAC5B,GAAGC;AAAA,SACJ,GACMD;AAAA,MACT;AAAA,MACA,EAAE,aAAa,CAAA,GAAI,gBAAgB;IACrC;AAGA,QADA,KAAK,YAAY,CAAA,GACb,KAAK;AACP,WAAK,kBAAkB,IACvB,KAAK,mBAAmB,IACxB,KAAK,eAAe,IACpB,KAAK,YAAY;AAAA,QACf,OAAO,KAAK;AAAA,QACZ,QAAQ,KAAK;AAAA,QACb,SAAS;AAAA,QACT,QAAQ;AAAA,UACN,MAAM;AAAA;QAER,QAAQ;AAAA,UACN,MAAM;AAAA;QAER,QAAQ;AAAA,UACN,MAAM;AAAA;QAER,QAAQ;AAAA,UACN,GAAG;AAAA,YACD,MAAM;AAAA;;QAGV,MAAM;AAAA,UACJ;AAAA,YACE,MAAM;AAAA;UAER;AAAA,YACE,MAAM;AAAA;;QAGV,QAAQ;AAAA,UACN,CAAA;AAAA,UACA;AAAA,YACE,QAAQ;AAAA;AAAA;;MAGd,GACA,KAAK,QAAQ,IAAIJ;AAAA,QACf,KAAK;AAAA,QACL,KAAK;AAAA,QACL,SAAS,eAAe,QAAQ,KAAK,EAAE,EAAE;AAAA,MAC3C;AAAA,SACK;AAEL,UAAIU,IAAe,KAAK,eAAc,EAAG,gBAAe,EAAG;AAC3D,MAAI,KAAK,YAAY,KAAK,aAAa,YACrCA,IAAe,KAAK,WAEtB,KAAK,YAAY;AAAA,QACf,GAAG,KAAK,QAAQ,OAAO;AAAA,QACvB,GAAG,KAAK,UAAS;AAAA,QACjB,GAAG,KAAK,QAAQ,OAAO;AAAA;AAAA,QAEvB,SAAS,CAAC,KAAK,aAAa;AAAA,QAC5B,QAAQ,CAACC,MAAOX,EAAM,OAAO,IAAI,KAAKW,IAAK,GAAG,GAAGD,CAAY;AAAA,QAC7D,QAAQ;AAAA,UACN;AAAA,YACE,OAAO,KAAK;AAAA,YACZ,OAAO,CAACJ,GAAGM,MAAM,KAAK,eAAeA,CAAC;AAAA;UAExC,GAAGV;AAAA;QAEL,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ,GAAG;AAAA,YACH,GAAG;AAAA;;UAGL,MAAM;AAAA,YACJ,KAAK;AAAA;AAAA;AAAA;UAIP,MAAM;AAAA,YACJ,SAAS,CAACM,GAAMK,GAAMC,MACb,CAACC,MAAM;AAGZ,cAAI,KAAK,UAAU,WAAWP,EAAK,OAAO,UAAU,KAClD,KAAK,MAAM,OAAO,GAEpBM,EAAQC,CAAC;AAAA,YACX;AAAA;;QAIN,OAAO;AAAA,UACL,UAAU;AAAA,YACR,CAACC,GAAOnC,MAAQ;AACd,kBAAIA,MAAQ,OAAO,CAAC,KAAK,gBAAgB,KAAK,UAAU;AACtD,qBAAK,YAAY;AACjB,oBAAIoC,IAAO,KAAK;AAAA,kBACd,KAAK,SAAS,SAASD,EAAM,OAAO,EAAE,KAAK,GAAG;AAAA,gBAChD,GACIE,IAAQ,KAAK;AAAA,kBACf,KAAK,SAAS,SAASF,EAAM,OAAO,EAAE,KAAK,GAAG;AAAA,gBAChD;AACA,qBAAK,SAAS,UAAU,EAAE,MAAAC,GAAM,OAAOC,IAAQD,EAAG,CAAG,GACrD,KAAK,YAAY;AAAA,cACnB;AAAA,YACF;AAAA;UAEF,WAAW;AAAA,YACT,CAACD,MAAU;AAET,cAAI,KAAK,UAAU,WAAWA,EAAM,OAAO,QAAQ,KACjD,KAAK,MAAM,OAAO;AAAA,YAEtB;AAAA;UAEF,OAAO;AAAA,YACL,CAACV,MAAM;AAEL,cADaA,EAAE,KAAK,cAAc,SAAS,EACpC,iBAAiB,eAAe,CAACS,MAAM;AAC5C,gBAAAA,EAAE,eAAc,GAChB,KAAK,WAAW,IAChB,KAAK,aAAa,IAClB,KAAK,iBAAiBA,EAAE,SACxB,KAAK,iBAAiBA,EAAE,SACxB,KAAK,gBAAgB;AAAA,cACvB,CAAC;AACD,kBAAII,IAASb,EAAE,KAAK,cAAc,WAAW;AAC7C,cAAAa,EAAO,iBAAiB,eAAe,CAACJ,MAAM;AAC5C,gBAAAA,EAAE,eAAc,GAChB,KAAK,gBAAgB,IACrB,KAAK,aAAa,IAClB,KAAK,YAAYA,EAAE,SACnB,KAAK,YAAYA,EAAE;AAEnB,oBAAIK,IAAWL,EAAE,OAAO,QAAQ,WAAW,GACvCR,IAAY,MAAM,UAAU,MAC7B,KAAKY,EAAO,WAAW,CAAC,EAAE,UAAU,EACpC,QAAQC,CAAQ,GACfC,IAASf,EAAE,OAAOC,CAAS;AAC/B,gBAAIc,EAAO,QACT,KAAK,eAAeA,EAAO,MAC3B,KAAK,WAAW,OAEhB,KAAK,WAAW,IAChB,KAAK,cAAcN,EAAE,SACrB,KAAK,cAAcA,EAAE,SACrB,KAAK,aAAa;AAAA,cAEtB,CAAC,GAEDI,EAAO,cAAc,OAAO,EAAE,YAAY,KAAK,MAAM,IAAI;AAAA,YAC3D;AAAA;;MAGN,GACA,KAAK,QAAQ,IAAInB;AAAA,QACf,KAAK;AAAA,QACL,KAAK;AAAA,QACL,SAAS,eAAe,QAAQ,KAAK,EAAE,EAAE;AAAA,MAC3C,GAEA,KAAK,eAAe;AAAA,QAClB,GAAG,KAAK,QAAQ,UAAU;AAAA,QAC1B,GAAG,KAAK,UAAS;AAAA,QACjB,GAAG,KAAK,QAAQ,UAAU;AAAA;AAAA,QAE1B,QAAQ,CAACW,MAAOX,EAAM,OAAO,IAAI,KAAKW,IAAK,GAAG,GAAGD,CAAY;AAAA,QAC7D,QAAQ,CAAC,GAAGP,CAAc;AAAA,QAC1B,QAAQ;AAAA,UACN,GAAG;AAAA,UACH,MAAM;AAAA,YACJ,UAAU;AAAA,YACV,GAAG;AAAA,YACH,GAAG;AAAA;;QAGP,QAAQ;AAAA,UACN,MAAM;AAAA;QAER,OAAO;AAAA,UACL,WAAW;AAAA,YACT,CAACa,MAAU;AACT,kBAAI,CAAC,KAAK,WAAW;AAEnB,gBAAI,KAAK,UAAU,WAAWA,EAAM,OAAO,QAAQ,KACjD,KAAK,MAAM,OAAO,GAEpB,KAAK,eAAe;AACpB,oBAAIM,IAAMN,EAAM,SAASA,EAAM,OAAO,MAAM,GAAG,GAC3CO,IAAMP,EAAM;AAAA,kBACdA,EAAM,OAAO,OAAOA,EAAM,OAAO;AAAA,kBACjC;AAAA,gBACF;AACA,qBAAK,MAAM,SAAS,KAAK,EAAE,KAAAM,GAAK,KAAAC,GAAK,GACrC,KAAK,eAAe;AAAA,cACtB;AAAA,YACF;AAAA;;MAGN,GACK,KAAK,iBACR,KAAK,WAAW,IAAIvB;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,SAAS,eAAe,WAAW,KAAK,EAAE,EAAE;AAAA,MAC9C,IAEF,KAAK,WAAW,KAAK,cAAc,GAGnC,OAAO,iBAAiB,UAAU,KAAK,MAAM;AAAA,IAC/C;AAEA,IAAI,KAAK,iBAAiB,aACpB,KAAK,UAAU,UACjB,KAAK,WAAU,IAGjB,KAAK,kBAAiB;AAAA,EAE1B;AAAA,EACA,eAAe,WAAY;AACzB,SAAK,UAAS,GACd,KAAK,MAAM,WAAU,GACrB,OAAO,oBAAoB,UAAU,KAAK,MAAM;AAAA,EAClD;AAAA,EACA,SAAS;AAAA,IACP,mBAAmB,WAAY;AAC7B,WAAK,UAAS,GACd,KAAK,aAAY;AACjB,YAAMwB,IAAc,KAAK,MAAM,IAAI,CAACnH,MACjB,KAAK,gBAAgBA,CAAI,EAAE,MAAM,IAAI,EACtC,MAAM,CAAC,EAAE,KAAK,IAAI,CACnC;AACD,MAAAmH,EAAY,QAAQ,8CAA8C,GAClE,KAAK,IAAI,kBAAkBA,CAAW,EAAE,KAAK,CAAC/B,MAAS;AACrD,aAAK,aAAaA,GAGd+B,EAAY,UAAU/B,EAAK,UAC7B,QAAQ;AAAA,UACN;AAAA,UACA+B;AAAA,UACA,KAAK;AAAA,QACP;AAAA,MAEJ,CAAC;AAAA,IACH;AAAA,IACA,YAAY,WAAY;AACtB,WAAK,UAAS,GACd,KAAK,UAAU,WAAW,MAAM;AAC9B,aAAK,cAAa;AAAA,MACpB,GAAG,KAAK,iBAAiB;AAAA,IAC3B;AAAA,IACA,WAAW,WAAY;AACrB,MAAI,KAAK,iBACP,KAAK,aAAa,YAAW,GAC7B,KAAK,eAAe,OAElB,KAAK,YACP,aAAa,KAAK,OAAO,GACzB,KAAK,UAAU;AAAA,IAEnB;AAAA,IACA,eAAe,WAAY;AACzB,WAAK,gBAAe,GACpB,KAAK,UAAU,WAAW,MAAM;AAC9B,aAAK,cAAa;AAAA,MACpB,GAAG,KAAK,iBAAiB;AAAA,IAC3B;AAAA,IACA,iBAAiB,WAAY;AAE3B,UAAI,KAAK,UAAU,WAAW,CAAC,KAAK;AAClC;AAEF,WAAK,MAAM,QAAQ,KAAK,IAAI,GACxB,KAAK,YACP,KAAK,SAAS,QAAQ,KAAK,IAAI;AAEjC,UAAID,IAAM,KAAK,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,SAAS,CAAC,GAC1CE,IAAS,KAAK,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,SAAS,KAAK,aAAa,GAC9DH,IAAM,KAAK,KAAK,CAAC,EAAE,CAAC;AACxB,MAAIA,IAAMC,IAAM,KAAK,mBACnBD,IAAMC,IAAM,KAAK,iBAEfE,IAASH,MACXA,IAAMG,IAER,KAAK,MAAM,SAAS,KAAK,EAAE,KAAAH,GAAK,KAAAC,GAAK,GACrC,KAAK,cAAc;AAAA,IACrB;AAAA,IACA,YAAYlH,GAAM;AAChB,UAAIA,EAAK,cAAc,eAAeA,EAAK,YAAY;AACrD,eAAOA,EAAK;AACP;AACL,YAAIqH,IAAc;AAElB,eAAIrH,EAAK,cAAc,gBACrBqH,KAAerH,EAAK,YAGlBA,EAAK,YAAY,YAEfqH,MAAgB,OAClBA,KAAe,MAEjBA,KAAe,GAAGrH,EAAK,QAAQ,MAAM,GAAG,EAAE,CAAC,CAAC,IAAIA,EAAK,WAAW,KAE3D,GAAGA,EAAK,QAAQ,KAAKqH,CAAW;AAAA,MACzC;AAAA,IACF;AAAA,IACA,YAAY,SAAUC,GAAS;AAC7B,cAAQA,GAAO;AAAA,QACb,KAAK;AACH,eAAK,MAAM,KAAK,UAAU,OAAO,aAAa,GAC9C,KAAK,MAAM,KAAK,UAAU,OAAO,aAAa,GAC9C,KAAK,MAAM,KAAK,UAAU,OAAO,YAAY;AAC7C;AAAA,QACF,KAAK;AACH,eAAK,MAAM,KAAK,UAAU,OAAO,aAAa,GAC9C,KAAK,MAAM,KAAK,UAAU,OAAO,aAAa,GAC9C,KAAK,MAAM,KAAK,UAAU,IAAI,YAAY;AAC1C;AAAA,QACF,KAAK;AACH,eAAK,MAAM,KAAK,UAAU,OAAO,YAAY,GAC7C,KAAK,MAAM,KAAK,UAAU,IAAI,aAAa,GAC3C,KAAK,MAAM,KAAK,UAAU,IAAI,aAAa;AAC3C;AAAA,QACF,KAAK;AACH,eAAK,MAAM,KAAK,UAAU,OAAO,YAAY,GAC7C,KAAK,MAAM,KAAK,UAAU,OAAO,aAAa,GAC9C,KAAK,MAAM,KAAK,UAAU,IAAI,aAAa;AAC3C;AAAA,MACJ;AACA,WAAK,iBAAiBA,GACtB,KAAK,OAAM;AAAA,IACb;AAAA,IACA,aAAa,WAAY;AACvB,WAAK,SAAS,CAAA;AAAA,IAChB;AAAA,IACA,gBAAgB,SAAUC,GAAO;AAC/B,WAAK,YAAY,IACjB,KAAK,QAAQA,EAAM,OAEnB,KAAK,iBAAiBA,EAAM,gBAC5B,KAAK,YAAYA,EAAM,WACvB,KAAK,YAAYA,EAAM,WACvB,KAAK,QAAQ,CAAC,GAAGA,EAAM,KAAK,GAC5B,KAAK,qBAAqBA,EAAM,eAChC,KAAK,mBAAmBA,EAAM,aAE9B,KAAK,UAAU,MAAM;AACnB,YAAI,KAAK,cAAc;AACrB,cAAI,KAAK,gBAAgB;AACvB,iBAAK,WAAU;AAAA,eACV;AAML,gBAAI7B,IAAc,KAAK,MAAM,KAAK,UAAU,KAAK,KAAK,CAAC;AACvD,iBAAK,YAAYA,CAAW,GAC5B,WAAW,MAAM;AACf,mBAAK,SAASA,CAAW;AAAA,YAC3B,GAAG,CAAC;AAAA,UACN;AACA,eAAK,eAAe;AAAA,QACtB;AAAA,MACF,CAAC,GACD,KAAK,WAAW,KAAK,cAAc,GACnC,KAAK,MAAM,MAAM;AAAA,IACnB;AAAA,IACA,QAAQ,WAAY;AAClB,WAAK,MAAM,QAAQ,KAAK,QAAQ,OAAO,CAAC,GACpC,KAAK,YACP,KAAK,SAAS,QAAQ,KAAK,QAAQ,UAAU,CAAC,GAEhD,KAAK,MAAM,UAAU,KAAK,EAAE;AAAA,IAC9B;AAAA,IACA,WAAW,WAAY;AACrB,WAAK,YAAY,IACjB,KAAK,aAAa,IAClB,KAAK,OAAM;AAAA,IACb;AAAA,IACA,aAAa,WAAY;AACvB,WAAK,YAAY,IACjB,KAAK,aAAa,IAClB,KAAK,OAAM;AAAA,IACb;AAAA,IACA,aAAa,WAAY;AACvB,WAAK,YAAY,IACjB,KAAK,OAAM;AAAA,IACb;AAAA,IACA,eAAe,WAAY;AACzB,WAAK,YAAY,IACjB,KAAK,OAAM;AAAA,IACb;AAAA,IACA,cAAc,WAAY;AACxB,WAAK,aAAa,IAClB,KAAK,OAAM;AAAA,IACb;AAAA,IACA,gBAAgB,WAAY;AAC1B,WAAK,aAAa,IAClB,KAAK,OAAM;AAAA,IACb;AAAA,IACA,kBAAkB,WAAY;AAC5B,WAAK,SAAS,CAAC,KAAK,QACpB,KAAK,MAAM,iBAAiB,KAAK,EAAE;AAAA,IACrC;AAAA,IACA,eAAe,WAAY;AACzB,UAAI8B,IAAM;AACV,OACE,KAAK,aACL,KAAK,cAAc,KACnB,KAAK,aACL,KAAK,cAAc,OAEnBA,IAAM,IAER,KAAK,MAAM,OAAO,EAAE,QAAQ,CAACvB,GAAGwB,GAASC,MAAY;AACnD,YAAIT,IAAMQ;AACV,SAAI,KAAK,aAAa,KAAK,cAAc,OACvCR,IAAM,KAAK;AAEb,YAAIC,IAAMQ;AACV,gBAAI,KAAK,aAAa,KAAK,cAAc,OACvCR,IAAM,KAAK,YAENvB,EAAM,SAASsB,GAAKC,GAAKM,GAAK,EAAI;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,WAAW,WAAY;AACrB,WAAK,MACF,mBAAmB,oBAAoB,OAAO,aAAa;AAAA,QAC1D,UAAU,CAACpC,MAAS,KAAK,SAASA,CAAI;AAAA,QACtC,WAAW,MAAM;AACf,gBAAMuC,IAAa,CAAC,GAAG,KAAK,KAAK;AACjC,UAAI,KAAK,oBAAoBjD,KAC3BiD,EAAW,KAAK,KAAK,eAAe,GAEtC,KAAK,uBAAuBA,CAAU;AAAA,QACxC;AAAA,QACA,cAAc,CAACvC,MAAS;AAGtB,UAAIA,EAAK,kBACP,KAAK,OAAO,KAAK;AAAA,YACf,MAAM;AAAA,YACN,SAAS;AAAA,YACT,OAAM,oBAAI,KAAI,GAAG,QAAO;AAAA,WACzB;AAAA,QAEL;AAAA,QACA,UAAU,MAAM;AACd,eAAK,OAAO,KAAK;AAAA,YACf,MAAM;AAAA,YACN,SAAS;AAAA,YACT,OAAM,oBAAI,KAAI,GAAG,QAAO;AAAA,WACzB;AAAA,QACH;AAAA,OACD,EACA,KAAK,CAACwC,MAAiB;AACtB,aAAK,eAAeA;AAAA,MACtB,CAAC;AAAA,IACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaA,SAAS,SAAUC,GAAM;AACvB,UAAIC,IAAiB;AACrB,YAAMC,IAAY,SAAS,eAAe,mBAAmB;AAC7D,MAAIA,MACFD,IAAiBC,EAAU,UAAU;AAAA,QACnC;AAAA,MACF,IACIA,EAAU,cACV;AAEN,UAAIC,IAAc;AAClB,OAAI,KAAK,mBAAmB,WAAW,KAAK,mBAAmB,YAE7DA,IADe,SAAS,uBAAuB,UAAU,EAAE,CAAC,EACvC;AAEvB,YAAMC,IACJ,KAAK,IAAI,SAAS,gBAAgB,aAAa,OAAO,cAAc,CAAC,IACrEH,IACAE,GACIE,IAAa,KAAK;AAAA,QACtB,SAAS,gBAAgB;AAAA,QACzB,OAAO,eAAe;AAAA,MACxB,GAEMC,IAAQ,SAAS,uBAAuB,mBAAmB,EAAE,CAAC;AACpE,UAAIC,IAAS;AACb,MAAIP,MAAS,aAEP,KAAK,cAAc,CAAC,KAAK,mBAC3B,KAAK,eAAe,KAEpB,KAAK,eAAe,MAItBO,IAASF,IAAaC,EAAM,eAAeC,IAAS,KAC/C,KAAK,eACRA,IAASA,IAAS,IAAM;AAI5B,UAAIC,IAAQJ,IAAY;AACxB,aAAK,KAAK,cAERI,IAAQA,IAAQ,IAAM,KAEjB;AAAA,QACL,OAAO,KAAK,SAASA;AAAA,QACrB,QAAQ,KAAK,UAAUD;AAAA,MACzB;AAAA,IACF;AAAA,IACA,WAAW,WAAY;AACrB,aAAO;AAAA,QACL,QAAQ;AAAA,UACN,GAAG;AAAA,YACD,MAAMnC,GAAGwB,GAASC,GAAS;AACzB,qBAAID,KAAW,OACT,KAAK,cACA,CAAC,YAAY,UAAU,IAEzB,CAAC,GAAG,CAAC,IAEP,CAACA,GAASC,CAAO;AAAA,YAC1B;AAAA,YACA,MAAM,KAAK;AAAA;UAEb,GAAG;AAAA,YACD,MAAMzB,GAAGwB,GAASC,GAAS;AACzB,qBAAID,KAAW,OAAa,CAAC,MAAM,GAAG,IAC/B9B,EAAM,SAAS8B,GAASC,GAAS,KAAK,EAAI;AAAA,YACnD;AAAA;;MAGN;AAAA,IACF;AAAA,IACA,SAAS,SAAUG,GAAM;AACvB,UAAIS,IAAc,2BACdC,IAAY;AAChB,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,YACE,QAAQA;AAAA,YACR,MAAM;AAAA,cACJ,MAAM;AAAA,cACN,QAAQD;AAAA,cACR,OAAO;AAAA;;UAGX;AAAA,YACE,MAAM;AAAA;AAAA,YACN,QAAQC;AAAA,YACR,MAAM;AAAA,cACJ,MAAMV,MAAS;AAAA,cACf,QAAQS;AAAA,cACR,OAAO;AAAA;;;YAIT,OAAOrC,GAAGuC,GAAQ;AAChB,sBACEA,EAAO,KAAK,CAACC,MAAOA,KAAM,GAAQ,KAClCD,EAAO,MAAM,CAACC,MAAOA,IAAK,IAAI,OAE9BD,IAASA,EAAO,IAAI,CAACE,MAAUA,EAAM,cAAc,CAAC,CAAC,IAEhDF;AAAA,YACT;AAAA;;MAGN;AAAA,IACF;AAAA,IACA,eAAe,SAAUG,GAAO;AAC9B,WAAK,WAAW;AAAA,OAGb,KAAK,qBAAqB,QAAQ,KAAK,iBAAiBA;AAAA,MAEzD,KAAK,aAAa,cAAcA,EAAM,aACtC,KAAK,aAAa,YAAYA,EAAM,WACpC,KAAK,aAAa,gBAAgBA,EAAM,gBAExC,KAAK,WAAWA,CAAK;AAAA,IAEzB;AAAA,IACA,aAAa,SAAUA,GAAO;AAC5B,UAAInE,IAAM,KAAK,gBAAgB,KAAK,YAAY,GAC5CoB,IAAQ,KAAK,QAAQpB,CAAG;AAC5B,WAAK,MAAMoB,IAAQ,CAAC,EAAE,QAAQ+C,GAC9B,KAAK,aAAa,QAAQA,GAC1B,KAAK,MAAM,KAAK,iBAAiB,WAAW,EAAE/C,CAAK,EAAE,MAAM,cACzD+C;AAAA,IACJ;AAAA,IACA,cAAc,SAAUC,GAAQ;AAC9B,UAAIpE,IAAM,KAAK,gBAAgB,KAAK,YAAY,GAC5CoB,IAAQ,KAAK,QAAQpB,CAAG;AAC5B,WAAK,MAAMoB,IAAQ,CAAC,EAAE,SAASgD,GAC/B,KAAK,aAAa,SAASA,GAC3B,KAAK,eAAeA;AAAA,IACtB;AAAA,IACA,aAAa,WAAY;AACvB,aAAO;AAAA,QACL,OAAO;AAAA,UACL,MAAM,CAAC3C,MAAM;AACX,kBAAM,EAAE,KAAA4C,GAAK,MAAAC,MAAS7C,GAEhB8C,IAAO9C,EAAE,SAASA,EAAE,OAAO,EAAE,KAAK,KAAK,EAAI,GAC3C+C,IAAO/C,EAAE,SAASA,EAAE,OAAO,EAAE,KAAK,KAAK,EAAI,GAC3CgD,IAAShD,EAAE,SAAS,KAAK,aAAa,CAAC,GAAG,KAAK,EAAI,GACnDiD,IAAYjD,EAAE,SAAS,KAAK,aAAa,CAAC,GAAG,KAAK,EAAI,GACtDkD,IAAalD,EAAE,SAAS,KAAK,aAAa,CAAC,GAAG,KAAK,EAAI,GACvDmD,IAAUnD,EAAE,SAAS,KAAK,aAAa,CAAC,GAAG,KAAK,EAAI;AAkC1D,gBAxBA,KAAK,MAAM,QAAQ,CAACoD,MAAS;AAC3B,cACEpD,EAAE,OAAO,EAAE,OAAOoD,EAAK,UACvBA,EAAK,UAAUpD,EAAE,OAAO,EAAE,QAE1B4C,EAAI,KAAI,GACRA,EAAI,UAAS,GACbA,EAAI,cAAcQ,EAAK,OACvBR,EAAI,YAAY,GAChBA,EAAI,OAAOC,EAAK,MAAM7C,EAAE,SAASoD,EAAK,QAAQ,KAAK,EAAI,CAAC,GACxDR,EAAI;AAAA,gBACFC,EAAK,OAAOA,EAAK;AAAA,gBACjB7C,EAAE,SAASoD,EAAK,QAAQ,KAAK,EAAI;AAAA,cACnC,GACAR,EAAI,OAAM,GACVA,EAAI,QAAO;AAAA,YAEf,CAAC,GAEDA,EAAI,KAAI,GACRA,EAAI,UAAS,GAGbA,EAAI,YAAY,sBACZ5C,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,GAAG;AACzC,kBAAIqD,IAAQL,IAASD,IAAOA,IAAOC;AACnC,cAAAJ,EAAI,SAASC,EAAK,MAAMG,GAAQH,EAAK,OAAOC,IAAOO,CAAK;AAAA,YAC1D;AACA,gBAAIrD,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,GAAG;AACzC,kBAAIsD,IAAMR,IAAOK,IAAUL,IAAOK;AAClC,cAAAP,EAAI,SAASC,EAAK,MAAME,GAAMF,EAAK,OAAOS,IAAMP,CAAI;AAAA,YACtD;AAIA,gBADAH,EAAI,YAAY,wBAEd5C,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC;AAAA,YACpCA,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,GACpC;AACA,kBAAIqD,IAAQJ,IAAYF,IAAOA,IAAOE;AACtC,cAAAL,EAAI,SAASC,EAAK,MAAMQ,GAAOR,EAAK,OAAOG,IAASK,CAAK;AAAA,YAC3D;AACA,gBACErD,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC;AAAA,YACpCA,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,GACpC;AACA,kBAAIqD,IAAQP,IAAOK,IAAUL,IAAOK,GAChCG,IAAMR,IAAOI,IAAaJ,IAAOI;AACrC,cAAAN,EAAI,SAASC,EAAK,MAAMQ,GAAOR,EAAK,OAAOS,IAAMD,CAAK;AAAA,YACxD;AAKA,gBAFAT,EAAI,YAAY,sBAEZ,KAAK,aAAa,WAAW;AAE/B,kBACE5C,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC;AAAA,cACpCA,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,GACpC;AACA,oBAAIqD,IAAQH,IAAaH,IAAOA,IAAOG,GACnCI,IAAMR,IAAOG,IAAYH,IAAOG;AACpC,gBAAAL,EAAI,SAASC,EAAK,MAAMQ,GAAOR,EAAK,OAAOS,IAAMD,CAAK;AAAA,cACxD;AAAA,mBACK;AAEL,oBAAME,IAAWvD,EAAE,SAAS,KAAK,aAAa,CAAC,GAAG,KAAK,EAAI,GACrDwD,IAAYxD,EAAE,SAAS,KAAK,aAAa,CAAC,GAAG,KAAK,EAAI;AAC5D,kBACEA,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC;AAAA,cACpCA,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,GACpC;AACA,oBAAIqD,IAAQE,IAAWR,IAAOA,IAAOQ;AACrC,gBAAAX,EAAI,SAASC,EAAK,MAAMQ,GAAOR,EAAK,OAAOI,IAAYI,CAAK;AAAA,cAC9D;AACA,kBACErD,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC;AAAA,cACpCA,EAAE,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC,GACpC;AACA,oBAAIqD,IAAQP,IAAOI,IAAaJ,IAAOI,GACnCI,IAAMR,IAAOU,IAAYV,IAAOU;AACpC,gBAAAZ,EAAI,SAASC,EAAK,MAAMQ,GAAOR,EAAK,OAAOS,IAAMD,CAAK;AAAA,cACxD;AACA,cAAAT,EAAI,YAAY;AAChB,kBAAIS,IAAQG,IAAYT,IAAOA,IAAOS,GAClCF,IAAMR,IAAOS,IAAWT,IAAOS;AACnC,cAAAX,EAAI,SAASC,EAAK,MAAMQ,GAAOR,EAAK,OAAOS,IAAMD,CAAK;AAAA,YACxD;AACA,YAAAT,EAAI,OAAM,GACVA,EAAI,QAAO;AAAA,UACb;AAAA;MAEJ;AAAA,IACF;AAAA,IACA,YAAY,SAAUF,GAAO;AAK3B,WAAK,YAAY,CAAC,KAAK,YAAY,CAAC,GACpC,KAAK,aAAa,YAAYA,EAAM,WACpC,KAAK,aAAa,UAAUA,EAAM,SAClC,KAAK,aAAa,cAAcA,EAAM,aACtC,WAAW,MAAM;AACf,aAAK,SAAS,CAAC,KAAK,YAAY,CAAC;AAAA,MACnC,GAAG,CAAC;AAAA,IACN;AAAA,IACA,UAAU,SAAUe,GAAW7B,IAAO,aAAa;AACjD,MAAA6B,EAAU,QAAQ,CAAC1J,MAAS;AAC1B,QAAAA,EAAK,cAALA,EAAK,YAAc6H,IACnB7H,EAAK,UAALA,EAAK,QAAU,KAAK,OAAO,KAAK,UAAU,IAC1CA,EAAK,WAALA,EAAK,SAAW,CAAA,IAEZA,EAAK,OAAO,SAAS,MACvB,KAAK,eAAeA,EAAK,SAG3B,KAAK,cAAc,KAAK,aAAa,KAAK,KAAK,OAAO,QACtD,KAAK,MAAM,KAAKA,CAAI;AAEpB,cAAM4F,IAAQ,KAAK,KAAK;AACxB,aAAK,MAAM,UAAU,KAAK,mBAAmB5F,CAAI,GAAG4F,CAAK,GAErD,KAAK,YACP,KAAK,SAAS,UAAU,KAAK,2BAA0B,GAAIA,CAAK,GAGlE,KAAK,KAAK,OAAOA,GAAO,GAAG,MAAM,KAAK,KAAK,CAAC,EAAE,MAAM,CAAC,GACrD,KAAK,QAAQ,KAAK,gBAAgB5F,CAAI,CAAC,IAAI4F;AAAA,MAC7C,CAAC,GAED,KAAK,iBAAiB8D,CAAS,GAC1B,KAAK,kBACRA,EAAU,KAAK,KAAK,eAAe,GAErC,KAAK,uBAAuBA,CAAS,GACrC,KAAK,MAAM,QAAQ,GACnB,KAAK,MAAM,MAAM;AAAA,IACnB;AAAA,IACA,oBAAoB,SAAU1J,GAAM;AAClC,aAAO;AAAA,QACL,UAAU;AAAA,QACV,MAAMA;AAAA,QACN,OAAO,KAAK,YAAYA,CAAI;AAAA,QAC5B,QAAQ,CAACiG,GAAGC,MAAc,KAAK,MAAMA,IAAY,CAAC,EAAE;AAAA,QACpD,OAAO;AAAA,QACP,OAAO,CAACC,GAAMC,MACR,OAAOA,KAAa,YAAY,MAAMA,CAAQ,IACzC,QACEA,KAAY,OACd,OAEN,KAAK,IAAIA,CAAQ,IAAI,QAAQA,MAAa,KAC3C,KAAK,IAAIA,CAAQ,KAAK,MAEfA,EAAS,cAAc,CAAC,IAExBA,EAAS,QAAQ,CAAC;AAAA,MAG/B;AAAA,IACF;AAAA,IACA,4BAA4B,WAAY;AACtC,aAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ,CAACH,GAAGC,MAAc,KAAK,MAAMA,IAAY,CAAC,EAAE;AAAA,MACtD;AAAA,IACF;AAAA,IACA,kBAAkB,SAAUwD,GAAW;AACrC,YAAMC,IAAWD,EAAUA,EAAU,SAAS,CAAC;AAC/C,UAAIC,GAAU;AACZ,cAAM/D,IAAQ,KAAK,OAAO,QAAQ+D,EAAS,KAAK;AAChD,QAAI/D,MAAU,OACZ,KAAK,cAAcA,IAAQ,KAAK,KAAK,OAAO;AAAA,MAEhD;AAAA,IACF;AAAA,IACA,wBAAwB,SAAU8D,IAAY,KAAK,OAAO;AACxD,UAAIE,IAAe,KAAK;AACxB,MAAI,KAAK,uBACPA,IAAe,KAAK;AAEtB,YAAMhJ,IAAQ8I,EAAU,IAAI,CAAC1J,MAAS;AACpC,YAAI,OAAOA,KAAS;AAClB,iBAAO,KAAK,gBAAgBA,CAAI;AAC3B,YAAI,OAAOA,KAAS;AACzB,iBAAOA;AAEP,cAAM,IAAI;AAAA,UACR,sCAAsCA,CAAI,KAAK,OAAOA,CAAI;AAAA,QAC5D;AAAA,MAEJ,CAAC;AACD,MAAI,KAAK,gBACP,WAAW,YAAY,WAAW,kBAAkB,EAAE;AAAA,QACpD,CAAC6J,MAAc;AACb,UAAIA,KACF,WAAW,UAAS,GAEtB,KAAK,aAAa,QAAQ,OAAO;AAAA,YAC/B,OAAO,OAAO;AAAA,YACd,OAAO,aAAa;AAAA,YACpB,OAAOjJ;AAAA,YACP,YAAYgJ;AAAA,YACZ,UAAU,KAAK;AAAA,WAChB;AAAA,QACH;AAAA,MACF;AAAA,IAEJ;AAAA,IACA,cAAc,WAAY;AAExB,WAAK,KAAK,CAAC,IAAI,CAAA,GACf,KAAK,UAAU,KAAK,KAAK;AAAA,IAC3B;AAAA,IACA,WAAW,SAAUF,GAAW;AAC9B,iBAAWlF,KAAOkF,EAAU,IAAI,KAAK,eAAe,GAAG;AACrD,YAAI9D,IAAQ,KAAK,QAAQpB,CAAG;AAC5B,aAAK,KAAKoB,CAAK,IAAI,MAAM,KAAK,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,GACvD,KAAK,MAAM,QAAQ,KAAK,IAAI,GACxB,KAAK,YACP,KAAK,SAAS,QAAQ,KAAK,IAAI;AAAA,MAEnC;AAGA,MAAI,KAAK,KAAK,WAAW,MACvB,KAAK,KAAK,CAAC,IAAI,CAAA,GACf,KAAK,MAAM,QAAQ,KAAK,IAAI,GACxB,KAAK,YACP,KAAK,SAAS,QAAQ,KAAK,IAAI;AAAA,IAGrC;AAAA,IACA,aAAa,SAAU8D,GAAW;AAChC,WAAK,4BAA4BA,CAAS;AAE1C,iBAAWlF,KAAOkF,EAAU,IAAI,KAAK,eAAe,GAAG;AACrD,cAAM9D,IAAQ,KAAK,eAAepB,CAAG;AACrC,aAAK,MAAM,OAAOoB,IAAQ,GAAG,CAAC,GAC9B,KAAK,KAAK,OAAOA,GAAO,CAAC,GACzB,KAAK,MAAM,UAAUA,CAAK,GAC1B,KAAK,MAAM,QAAQ,KAAK,IAAI,GACxB,KAAK,aACP,KAAK,SAAS,UAAUA,CAAK,GAC7B,KAAK,SAAS,QAAQ,KAAK,IAAI;AAAA,MAEnC;AAGA,MAAI,KAAK,KAAK,WAAW,MACvB,KAAK,KAAK,CAAC,IAAI,CAAA,GACf,KAAK,MAAM,QAAQ,KAAK,IAAI,GACxB,KAAK,YACP,KAAK,SAAS,QAAQ,KAAK,IAAI,IAGnC,KAAK,MAAM,QAAQ,GACnB,KAAK,MAAM,MAAM;AAAA,IACnB;AAAA,IACA,6BAA6B,SAAU8D,IAAY,KAAK,OAAO;AAC7D,UAAI,KAAK,cAAc;AACrB,cAAM9I,IAAQ8I,EAAU,IAAI,CAAC1J,MAAS;AACpC,cAAI,OAAOA,KAAS;AAClB,mBAAO,KAAK,gBAAgBA,CAAI;AAC3B,cAAI,OAAOA,KAAS;AACzB,mBAAOA;AAEP,gBAAM,IAAI;AAAA,YACR,sCAAsCA,CAAI,KAAK,OAAOA,CAAI;AAAA,UAC5D;AAAA,QAEJ,CAAC;AACD,aAAK,aAAa,QAAQ,UAAU;AAAA,UAClC,OAAO,OAAO;AAAA,UACd,OAAO,aAAa;AAAA,UACpB,OAAOY;AAAA,SACR;AAAA,MACH;AAAA,IACF;AAAA,IACA,gBAAgB,SAAU4D,GAAK;AAC7B,UAAIoB,IAAQ,KAAK,QAAQpB,CAAG;AAC5B,aAAO,KAAK,QAAQA,CAAG;AACvB,eAAS,KAAK,KAAK;AACjB,QAAI,KAAK,QAAQ,CAAC,IAAIoB,MACpB,KAAK,QAAQ,CAAC,KAAK;AAGvB,aAAOA;AAAA,IACT;AAAA,IACA,UAAU,SAAUR,GAAM;AACxB,WAAK,MAAM,WAAU;AAMrB,eAASrF,IAAI,GAAGA,IAAIqF,EAAK,QAAQrF,KAAK;AACpC,YAAI,CAACqF,EAAKrF,CAAC,EAAE,eAAe,KAAK,eAAe;AAG9C;AAEF,YAAI+J,IAAW,KAAK,eAAe1E,EAAKrF,CAAC,EAAE,KAAK,eAAe,CAAC,GAC5DgK,IAAS,KAAK,KAAK,CAAC,EAAE;AAC1B,YAAIA,MAAW,KAAKD,IAAW,KAAK,KAAK,CAAC,EAAEC,IAAS,CAAC,GAAG;AAEvD,mBAAS1E,IAAI,GAAGA,IAAI,KAAK,KAAK,QAAQA;AACpC,iBAAK,KAAKA,CAAC,EAAE,KAAK,IAAI;AAExB,eAAK,kBAAkB,KAAK,KAAK,CAAC,EAAE,SAAS,GAAGyE,GAAU1E,EAAKrF,CAAC,CAAC;AAAA,QACnE,OAAO;AACL,cAAI6F,IAAQoE,EAAG,KAAK,KAAK,CAAC,GAAGF,GAAU,KAAK,aAAa;AACzD,cAAIlE,KAAS,GAAG;AAGd,gBAAI,CAAC,OAAO,SAASkE,CAAQ;AAG3B,oBAAM,IAAI,WAAW,yBAAyBA,CAAQ,EAAE;AAE1D,mBAAOlE,KAAS;AACd,cAAAkE,KAAY,MACZlE,IAAQoE,EAAG,KAAK,KAAK,CAAC,GAAGF,GAAU,KAAK,aAAa;AAGvD,gBAAIG,IAAc,CAACrE,IAAQ;AAC3B,qBAASP,IAAI,GAAGA,IAAI,KAAK,KAAK,QAAQA;AACpC,mBAAK,KAAKA,CAAC,EAAE,OAAO4E,GAAa,GAAG,IAAI;AAG1C,iBAAK,kBAAkBA,GAAaH,GAAU1E,EAAKrF,CAAC,CAAC;AAAA,UACvD,OAAO;AAEL,gBAAIkK,IAAc,CAACrE,IAAQ;AAC3B,qBAASP,IAAI,GAAGA,IAAI,KAAK,KAAK,QAAQA;AACpC,mBAAK,KAAKA,CAAC,EAAE,OAAO4E,GAAa,GAAG,IAAI;AAE1C,iBAAK,kBAAkBA,GAAaH,GAAU1E,EAAKrF,CAAC,CAAC;AAAA,UACvD;AAAA,QACF;AAAA,MACF;AAEA,UAAI,KAAK,aAAa,QAAQ,KAAK,KAAK,CAAC,EAAE,CAAC,GAAG;AAC7C,YAAImK,IAAe,KAAK,KAAK,CAAC,EAAE,CAAC,IAAI;AACrC,aAAK,MAAM,WAAWA,CAAY;AAAA,MACpC;AACA,WAAK,cAAc;AAAA,IACrB;AAAA,IACA,eAAe,SAAUC,GAASC,GAAQ;AACxC,aAAOD,IAAUC;AAAA,IACnB;AAAA,IACA,mBAAmB,SAAUxE,GAAOyE,GAAMC,GAAU;AAClD,WAAK,KAAK,CAAC,EAAE1E,CAAK,IAAIyE;AACtB,iBAAW,CAAC7F,GAAKxD,CAAK,KAAK,OAAO,QAAQsJ,CAAQ,GAAG;AACnD,YAAI9F,MAAQ,UAAUA,MAAQ,KAAK;AACjC;AAEF,YAAI+F,IAAY,KAAK,QAAQ/F,CAAG;AAChC,YAAI+F,GAAW;AACb,cAAIC,IAAQ,KAAK,KAAKD,CAAS;AAG/B,cAAIvJ,KAAA,QAAAA,EAAO;AACT,YAAAwJ,EAAM5E,CAAK,IAAI;AAAA,mBACN,OAAO5E,KAAU;AAK1B,gBAHAwJ,EAAM5E,CAAK,IAAI,MAGX,CAACpB,EAAI,SAAS,OAAO,GAAG;AAC1B,uBAASxE,KAAQ,KAAK;AACpB,oBAAI,KAAK,gBAAgBA,CAAI,MAAMwE,GAAK;AACtC,uBAAK,eAAexE;AACpB;AAAA,gBACF;AAEF,mBAAK,WAAW;AAAA,gBACd,WAAW;AAAA,gBACX,SAAS,KAAK,aAAa;AAAA,gBAC3B,aAAa,KAAK,aAAa;AAAA,eAChC;AAAA,YACH;AAAA;AAEA,YAAAwK,EAAM5E,CAAK,IAAI5E;AAAA,QAEnB;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB,SAAUhB,GAAM;AAC/B,UAAIwE,IAAM,GAAGxE,EAAK,OAAO,UAAUA,EAAK,UAAU,KAAKA,EAAK,UAAU,KAAKA,EAAK,QAAQ,KAAKA,EAAK,SAAS;AAC3G,cACEA,EAAK,YAAY,oBACjBA,EAAK,YAAY,kBACjBA,EAAK,YAAY,mBAEjBwE,KAAO,KAAKxE,EAAK,WAAW,KAEvBwE;AAAA,IACT;AAAA;AAEJ;EA7oD6B,IAAG;AAAA,EAAQ,KAAI;AAAA,EAAQ,OAAM;;;EAsJ/B,KAAI;AAAA,EAAO,OAAM;;;;cA7Q1CpD,EAuRM,OAAA;AAAA,IAvRA,oCAAeiC,EAAA,MAAK,OAAA,GAAA,CAAA,SAAA,CAAA;AAAA;IACxBhC,EA4HSoC,GAAA,MAAA;AAAA,iBA3HP,MAkHY;AAAA,UAlHZpC,EAkHYiC,GAAA;AAAA,UAhHV,QAAO;AAAA,UACP,OAAKmH,EAAA,CAAC,aACElJ,EAAA,oBAAoBA,EAAA,KAAE,WAAA,EAAA,CAAA;AAAA;qBAE9B,MAYE;AAAA,cAZFF,EAYEa,GAAA;AAAA,cAVA,OAAM;AAAA,cACN,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,SAAQ;AAAA,cACR,cAAW;AAAA,cACV,SAAKF,EAAA,CAAA,MAAAA,EAAA,CAAA;AAAqC,gBAAAL,EAAA,cAAW;AAAA;;cAN9C,CAAA+I,GAAA/I,EAAA,OAAO,WAAM,CAAA;AAAA;YAavBN,EAWEa,GAAA;AAAA,cAVA,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,SAAQ;AAAA,cACR,aAAU;AAAA,cACV,cAAW;AAAA,cACV,SAAKF,EAAA,CAAA,MAAAA,EAAA,CAAA;AAAqC,gBAAAL,EAAA,YAAS;AAAA;;YAOtDN,EAAYkC,CAAA;AAAA,YACZC,EAA0B,gBAAhB7B,EAAA,KAAK,GAAA,CAAA;AAAA,YACfN,EAAYkC,CAAA;AAAA,YAEI5B,EAAA,eAAhBP,EAmDWgB,GAAA,EAAA,KAAA,EAAA,GAAA;AAAA,cAjDDX,EAAA,qBADRM,EAOEG,GAAA;AAAA;gBALA,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,SAAQ;AAAA,gBACR,aAAU;AAAA,gBACT,SAAOT,EAAA;AAAA,gDAEVM,EAOEG,GAAA;AAAA;gBALA,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,SAAQ;AAAA,gBACR,aAAU;AAAA,gBACT,SAAOT,EAAA;AAAA;cAIFE,EAAA,kBADRI,EAOEG,GAAA;AAAA;gBALA,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,SAAQ;AAAA,gBACR,aAAU;AAAA,gBACT,SAAOT,EAAA;AAAA,gDAEVM,EAOEG,GAAA;AAAA;gBALA,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,SAAQ;AAAA,gBACR,aAAU;AAAA,gBACT,SAAOT,EAAA;AAAA;cAIFE,EAAA,mBADRI,EAOEG,GAAA;AAAA;gBALA,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,SAAQ;AAAA,gBACR,aAAU;AAAA,gBACT,SAAOT,EAAA;AAAA,gDAEVM,EAOEG,GAAA;AAAA;gBALA,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,SAAQ;AAAA,gBACR,aAAU;AAAA,gBACT,SAAOT,EAAA;AAAA;;YAKJE,EAAA,eADRI,EAOEG,GAAA;AAAA;cALA,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,SAAQ;AAAA,cACR,aAAU;AAAA,cACT,SAAOT,EAAA;AAAA,8CAEVM,EAOEG,GAAA;AAAA;cALA,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,SAAQ;AAAA,cACR,aAAU;AAAA,cACT,SAAOT,EAAA;AAAA;YAGVJ,EAMEa,GAAA;AAAA,cALA,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,SAAQ;AAAA,cACR,aAAU;AAAA,cACT,kCAAYmB,EAAA,MAAK,aAAA,GAAA,CAAA,MAAA,CAAA;AAAA;;;;eA/GX1B,EAAA,eAAe;AAAA;QAmH1BN,EAMsBsJ,GAAA,MAAA;AAAA,qBALpB,MAIM;AAAA,YAJNC,EAAApH,EAIM,OAJNtC,IAIM;AAAA,cAHJsC,EAA8B,OAAA;AAAA,gBAAxB,YAAYjC,EAAA,EAAE;AAAA;gCACpBiC,EAA8B,OAAA,EAAzB,IAAG,gBAAe,GAAA,MAAA,EAAA;AAAA,gBACvBA,EAAuD,OAAA;AAAA,gBAA3B,eAAejC,EAAA,EAAE;AAAA;oBAAhCI,EAAA,YAAY;AAAA;;kBAHdA,EAAA,MAAM;AAAA;;;;;;;IAUfA,EAAA,kBADRI,EAkBE8I,GAAA;AAAA;kBAhBSlJ,EAAA;AAAA,oDAAAA,EAAA,YAASC;AAAA,MACV,eAAaD,EAAA;AAAA,mDAAAA,EAAA,YAASC;AAAA,MAC7B,OAAOD,EAAA;AAAA,MACP,mBAAiBA,EAAA;AAAA,MACjB,OAAOA,EAAA;AAAA,MACP,eAAaA,EAAA;AAAA,MACb,eAAaA,EAAA;AAAA,MACb,OAAOA,EAAA;AAAA,MACP,QAAQA,EAAA;AAAA,MACR,mBAAiBA,EAAA;AAAA,MACjB,iBAAeA,EAAA;AAAA,MACf,aAAWJ,EAAA;AAAA,MACX,sBAAoBE,EAAA;AAAA,MACpB,UAAMO,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAJ,MAAEH,EAAA,YAAW,CAAEG,CAAM,CAAA;AAAA,MAC3B,MAAIH,EAAA;AAAA,MACJ,iCAAQE,EAAA,YAAS;AAAA;IAIpBN,EAuBW+B,GAAA;AAAA,kBAvBQzB,EAAA;AAAA,oDAAAA,EAAA,cAAWC;AAAA,MAAE,aAAU;AAAA;iBACxC,MAIY;AAAA,QAJZP,EAIYiC,GAAA,EAJD,QAAO,KAAI,GAAA;AAAA,qBACpB,MAAY;AAAA,YAAZjC,EAAYkC,CAAA;AAAA,YACZvB,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAAwB,EAAqB,cAAf,YAAQ,EAAA;AAAA,YACdnC,EAAYkC,CAAA;AAAA;;;;QAEdlC,EAgBSoC,GAAA,EAhBD,OAAM,OAAM,GAAA;AAAA,qBAClB,MAQQ;AAAA,YARRpC,EAQQC,GAAA,EARD,OAAA,GAAK,GAAA;AAAA,yBACV,MAME;AAAA,gBANFD,EAME0C,GAAA;AAAA,8BALSpC,EAAA;AAAA,gEAAAA,EAAA,QAAKC;AAAA,kBACd,UAAA;AAAA,kBACA,gBAAA;AAAA,kBACA,OAAM;AAAA,kBACN,OAAM;AAAA;;;;YAGVP,EAEQC,GAAA,EAFD,OAAM,OAAM,GAAA;AAAA,yBACjB,MAA+C;AAAA,gBAA/CD,EAA+CyJ,GAAA;AAAA,kBAAnC,UAAA;AAAA,kBAAS,MAAK;AAAA,kBAAK,OAAOrJ,EAAA;AAAA;;;;YAExCJ,EAEQC,GAAA,MAAA;AAAA,yBADN,MAAiD;AAAA,gBAAjDD,EAAiDa,GAAA;AAAA,kBAA1C,OAAA;AAAA,kBAAO,SAAOT,EAAA;AAAA;6BAAa,MAAOO,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,sBAAP,WAAO,EAAA;AAAA;;;;;;;;;;;;;IAOvCL,EAAA,sBADRI,EAcSgJ,GAAA;AAAA;kBAZEpJ,EAAA;AAAA,sDAAAA,EAAA,gBAAaC;AAAA,MACrB,QAAM,CAAGD,EAAA,gBAAgBA,EAAA,cAAc;AAAA,MACxC,UAAA;AAAA,MACA,YAAA;AAAA;iBAEA,MAMS;AAAA,QANTN,EAMS4C,GAAA,MAAA;AAAA,qBALP,MAIc;AAAA,YAJd5C,EAIcQ,GAAA;AAAA,cAJA,gCAAOF,EAAA,YAAS;AAAA;yBAC5B,MAEoB;AAAA,gBAFpBN,EAEoB2J,GAAA,EAFD,OAAA,EAAA,QAAA,UAAA,KAAuB;AAAA,6BAAC,MACpC;AAAA,oBADoCC,EAAA,aACjCtJ,EAAA,KAAK,GAAA,CAAA;AAAA;;;;;;;;;;;;IAObA,EAAA,iBADRI,EASEmJ,GAAA;AAAA;kBAPSvJ,EAAA;AAAA,sDAAAA,EAAA,WAAQC;AAAA,MAChB,QAAQD,EAAA;AAAA,MACR,MAAMA,EAAA;AAAA,MACN,eAAcF,EAAA;AAAA,MACd,gBAAeA,EAAA;AAAA,MACf,mCAAQE,EAAA,WAAQ;AAAA,MAChB,SAAOF,EAAA;AAAA;IAKFE,EAAA,iBADRI,EAgCSgJ,GAAA;AAAA;kBA9BEpJ,EAAA;AAAA,sDAAAA,EAAA,WAAQC;AAAA,MAChB,QAAM,CAAGD,EAAA,WAAWA,EAAA,SAAS;AAAA,MAC9B,UAAA;AAAA,MACA,YAAA;AAAA;iBAEA,MAwBS;AAAA,QAxBTN,EAwBS4C,GAAA;AAAA,UAxBD,KAAA;AAAA,UAAI,SAAQ;AAAA;qBAClB,MAImB;AAAA,YAJnB5C,EAImB8J,GAAA,MAAA;AAAA,yBAHjB,MAA6B;AAAA,gBAA1BF,EAAA9I,EAAAR,EAAA,aAAa,UAAU,IAAG,MAC7BQ,EAAGR,EAAA,aAAa,UAAU,IAAG,MAC7BQ,EAAGR,EAAA,aAAa,QAAQ,GAAA,CAAA;AAAA;;;YAE1BN,EAKcQ,GAAA;AAAA,cALA,kCAAOF,EAAA,WAAQ;AAAA;cAChB,WACT,MAA4B;AAAA,gBAA5BN,EAA4B+J,GAAA,EAApB,MAAK,aAAY,CAAA;AAAA;yBAE3B,MAA6C;AAAA,gBAA7C/J,EAA6C2J,GAAA,MAAA;AAAA,6BAA1B,MAAMhJ,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,sBAAN,UAAM,EAAA;AAAA;;;;;;;YAE3BX,EAKcQ,GAAA;AAAA,cALA,SAAKG,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAAJ,MAAEH,EAAA,UAAS,CAAEE,EAAA,YAAY,CAAA;AAAA;cAC/B,WACT,MAA4B;AAAA,gBAA5BN,EAA4B+J,GAAA,EAApB,MAAK,aAAY,CAAA;AAAA;yBAE3B,MAA8C;AAAA,gBAA9C/J,EAA8C2J,GAAA,MAAA;AAAA,6BAA3B,MAAOhJ,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,sBAAP,WAAO,EAAA;AAAA;;;;;;;YAE5BX,EAKcQ,GAAA;AAAA,cALA,SAAKG,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAAJ,MAAEH,EAAA,YAAW,CAAEE,EAAA,YAAY,CAAA;AAAA;cACjC,WACT,MAA4B;AAAA,gBAA5BN,EAA4B+J,GAAA,EAApB,MAAK,aAAY,CAAA;AAAA;yBAE3B,MAA+C;AAAA,gBAA/C/J,EAA+C2J,GAAA,MAAA;AAAA,6BAA5B,MAAQhJ,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,sBAAR,YAAQ,EAAA;AAAA;;;;;;;;;;;;;IAOzBL,EAAA,mBADRI,EA6BSgJ,GAAA;AAAA;kBA3BEpJ,EAAA;AAAA,sDAAAA,EAAA,aAAUC;AAAA,MAClB,QAAM,CAAGD,EAAA,aAAaA,EAAA,WAAW;AAAA,MAClC,UAAA;AAAA,MACA,YAAA;AAAA;iBAEA,MAqBS;AAAA,QArBTN,EAqBS4C,GAAA,MAAA;AAAA,qBApBP,MAIc;AAAA,YAJd5C,EAIcQ,GAAA;AAAA,cAJA,kCAAOJ,EAAA,WAAU,KAAA;AAAA;yBAC7B,MAEoB;AAAA,gBAFpBJ,EAEoB2J,GAAA,EAFD,OAAA,EAAA,QAAA,UAAA,KAAuB;AAAA,6BAAC,MAE3ChJ,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,sBAF2C,gBAE3C,EAAA;AAAA;;;;;;;YAEFX,EAIcQ,GAAA;AAAA,cAJA,kCAAOJ,EAAA,WAAU,QAAA;AAAA;yBAC7B,MAEoB;AAAA,gBAFpBJ,EAEoB2J,GAAA,EAFD,OAAA,EAAA,QAAA,UAAA,KAAuB;AAAA,6BAAC,MAE3ChJ,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,sBAF2C,mBAE3C,EAAA;AAAA;;;;;;;YAEFX,EAIcQ,GAAA;AAAA,cAJA,kCAAOJ,EAAA,WAAU,MAAA;AAAA;yBAC7B,MAEoB;AAAA,gBAFpBJ,EAEoB2J,GAAA,EAFD,OAAA,EAAA,QAAA,UAAA,KAAuB;AAAA,6BAAC,MAE3ChJ,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,sBAF2C,iBAE3C,EAAA;AAAA;;;;;;;YAEFX,EAIcQ,GAAA;AAAA,cAJA,kCAAOJ,EAAA,WAAU,OAAA;AAAA;yBAC7B,MAEoB;AAAA,gBAFpBJ,EAEoB2J,GAAA,EAFD,OAAA,EAAA,QAAA,UAAA,KAAuB;AAAA,6BAAC,MAE3ChJ,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,sBAF2C,kBAE3C,EAAA;AAAA;;;;;;;;;;;;;IAKMT,EAAA,yBAAZJ,KAAAC,EASM,OATN8B,IASM;AAAA,MARJ7B,EAOYgK,GAAA;AAAA,QANV,MAAK;AAAA,QACL,UAAS;AAAA;QAEE,WAAShH,EAClB,CAAgE,EAD1C,OAAAiH,QAAK;AAAA,UAC3BjK,EAAgE+J,SAAhDE,CAAK,CAAA,GAAA;AAAA,uBAAE,MAAgCtJ,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA;AAAA,gBAAhC,oCAAgC,EAAA;AAAA;;;;;;;;;;;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const P=require("./timeFilters-CJFxfjqN.cjs"),N=require("./UpgradeToEnterpriseDialog.vue_vue_type_style_index_0_scoped_2c757408_lang-mEnslAi4.cjs"),e=require("vue"),I=require("./CustomIcon-Bop2mEnu.cjs"),b=require("./format-B22VpiOS.cjs"),M=require("./parse-DwfgQboe.cjs"),R={props:{allowAll:{type:Boolean,default:!1},allowAllTargets:{type:Boolean,default:!1},allowAllArrayIndex:{type:Boolean,default:!1},buttonText:{type:String,default:null},chooseItem:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},initialTargetName:{type:String,default:""},initialPacketName:{type:String,default:""},initialItemName:{type:String,default:""},selectTypes:{type:Boolean,default:!1},showLatest:{type:Boolean,default:!1},mode:{type:String,default:"tlm",validator:i=>["cmd","tlm"].includes(i)},unknown:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},hidden:{type:Boolean,default:!1},lockTarget:{type:Boolean,default:!1},lockPacket:{type:Boolean,default:!1}},emits:["on-set","addItem"],data(){var i,t,s;return{targetNames:[],selectedTargetName:(i=this.initialTargetName)==null?void 0:i.toUpperCase(),packetNames:[],selectedPacketName:(t=this.initialPacketName)==null?void 0:t.toUpperCase(),itemNames:[],selectedItemName:(s=this.initialItemName)==null?void 0:s.toUpperCase(),valueTypes:["CONVERTED","RAW"],selectedValueType:"CONVERTED",reductionModes:[{title:"NONE",value:"DECOM"},{title:"REDUCED_MINUTE",value:"REDUCED_MINUTE"},{title:"REDUCED_HOUR",value:"REDUCED_HOUR"},{title:"REDUCED_DAY",value:"REDUCED_DAY"}],selectedArrayIndex:null,selectedReduced:"DECOM",reducedTypes:["MIN","MAX","AVG","STDDEV"],selectedReducedType:"AVG",description:"",hazardous:!1,internalDisabled:!1,packetsDisabled:!1,itemsDisabled:!1,api:null,ALL:{label:"[ ALL ]",value:"ALL",description:"ALL"},UNKNOWN:{label:"[ UNKNOWN ]",value:"UNKNOWN",description:"UNKNOWN"}}},computed:{actualButtonText:function(){return this.selectedPacketName==="ALL"?"Add Target":this.selectedItemName==="ALL"?"Add Packet":this.buttonText},autocompleteDisabled:function(){return this.disabled||this.internalDisabled},buttonDisabled:function(){return this.disabled||this.internalDisabled||this.selectedTargetName===null||this.selectedPacketName===null||this.selectedItemNameWIndex===null},colSize:function(){return this.vertical?12:!1},selectedItemNameWIndex:function(){return this.itemIsArray&&this.selectedArrayIndex!==null&&this.selectedArrayIndex!==this.ALL.label?`${this.selectedItemName}[${this.selectedArrayIndex}]`:this.selectedItemName},includeLatestPacketInDropdown:function(){return this.showLatest&&this.mode==="tlm"},arrayIndexes:function(){let i=this.itemNames.findIndex(s=>s.value===this.selectedItemName),t=[...Array(this.itemNames[i].array).keys()];return(this.allowAll||this.allowAllArrayIndex)&&t.unshift(this.ALL.label),t},itemIsArray:function(){let i=this.itemNames.findIndex(t=>t.value===this.selectedItemName);return!(i===-1||isNaN(this.itemNames[i].array))}},watch:{initialTargetName:function(i){i&&(this.selectedTargetName=i.toUpperCase())},initialPacketName:function(i){i&&(this.selectedPacketName=i.toUpperCase())},initialItemName:function(i){i&&(this.selectedItemName=i.toUpperCase())},mode:function(i,t){this.selectedPacketName=null,this.selectedItemName=null,this.targetNameChanged(this.selectedTargetName)},chooseItem:function(i,t){i?this.updateItems():this.itemNames=[]},itemIsArray:function(i){i?this.selectedArrayIndex||(this.selectedArrayIndex=0):this.selectedArrayIndex=null}},created(){this.internalDisabled=!0,this.api=new N.di,this.api.get_target_names().then(i=>{this.targetNames=i.flatMap(t=>t=="UNKNOWN"?[]:{label:t,value:t}),this.allowAllTargets&&this.targetNames.unshift(this.ALL),this.selectedTargetName?this.updatePackets():(this.selectedTargetName=this.targetNames[0].value,this.targetNameChanged(this.selectedTargetName)),this.unknown&&this.targetNames.push(this.UNKNOWN)})},methods:{updatePackets:function(){if(this.selectedTargetName==="UNKNOWN"){this.packetNames=[this.UNKNOWN],this.selectedPacketName=this.packetNames[0].value,this.updatePacketDetails(this.UNKNOWN.value),this.description="UNKNOWN";return}if(this.selectedTargetName==="ALL"){this.packetNames=[this.ALL],this.selectedPacketName=this.packetNames[0].value,this.updatePacketDetails(this.ALL.value),this.description="ALL";return}this.internalDisabled=!0;const i=this.mode==="tlm"?"get_all_tlm_names":"get_all_cmd_names";this.api[i](this.selectedTargetName,this.hidden).then(t=>{this.packetNames=t.map(o=>({label:o,value:o})),this.allowAll&&this.packetNames.unshift(this.ALL),this.selectedPacketName||(this.packetNames.length===0?this.selectedPacketName=null:this.selectedPacketName=this.packetNames[0].value),this.updatePacketDetails(this.selectedPacketName),this.packetNames.find(o=>o.value===this.selectedPacketName)&&this.chooseItem&&this.updateItems(),this.internalDisabled=!1})},updateItems:function(){if(this.selectedPacketName!=="ALL")if(this.internalDisabled=!0,this.selectedPacketName==="LATEST")this.api.get_all_tlm_item_names(this.selectedTargetName).then(i=>{this.itemNames=i.map(t=>({label:t,value:t,description:`LATEST ${t}`})),this.finishUpdateItems()});else{const i=this.mode==="tlm"?"get_tlm":"get_cmd";this.api[i](this.selectedTargetName,this.selectedPacketName).then(t=>{this.itemNames=t.items.map(s=>{let o=s.name;return s.data_type=="DERIVED"&&(o+=" *"),{label:o,value:s.name,description:s.description,array:s.array_size/s.bit_size}}),this.itemNames.sort((s,o)=>s.label>o.label?1:-1),this.finishUpdateItems()})}},finishUpdateItems:function(){this.allowAll&&this.itemNames.unshift(this.ALL),this.selectedItemName||(this.selectedItemName=this.itemNames[0].value),this.description=this.itemNames[0].description,this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType}),this.internalDisabled=!1},targetNameChanged:function(i){this.selectedTargetName=i,this.selectedPacketName="",this.selectedItemName="",i!==null&&this.updatePackets()},packetNameChanged:function(i){this.selectedItemName="",i!==null&&this.updatePacketDetails(i)},updatePacketDetails:function(i){if(i==="ALL")this.itemsDisabled=!0,this.internalDisabled=!1;else if(i==="LATEST")this.itemsDisabled=!1,this.selectedPacketName="LATEST";else{this.itemsDisabled=!1;const t=this.packetNames.find(s=>i===s.value);if(t){this.selectedPacketName=t.value;const s=this.mode==="tlm"?"get_tlm":"get_cmd";this.api[s](this.selectedTargetName,this.selectedPacketName).then(o=>{this.description=o.description,this.hazardous=o.hazardous})}}this.chooseItem?this.updateItems():this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})},itemNameChanged:function(i){const t=this.itemNames.find(s=>i===s.value);t&&(this.selectedItemName=t.value,this.description=t.description,this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType}))},indexChanged:function(i){this.$emit("on-set",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})},buttonPressed:function(){this.selectedPacketName==="ALL"?this.allTargetPacketItems():this.selectedItemName==="ALL"?this.allPacketItems():this.chooseItem?this.$emit("addItem",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:this.selectedItemNameWIndex,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType}):this.$emit("addItem",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})},allTargetPacketItems:function(){this.packetNames.forEach(i=>{if(i===this.ALL)return;const t=this.mode==="tlm"?"get_tlm":"get_cmd";this.api[t](this.selectedTargetName,i.value).then(s=>{s.items.forEach(o=>{this.$emit("addItem",{targetName:this.selectedTargetName,packetName:i.value,itemName:o.name,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})})})})},allPacketItems:function(){this.itemNames.forEach(i=>{i!==this.ALL&&this.$emit("addItem",{targetName:this.selectedTargetName,packetName:this.selectedPacketName,itemName:i.value,valueType:this.selectedValueType,reduced:this.selectedReduced,reducedType:this.selectedReducedType})})}}},z={class:"pt-4 pb-4"};function Y(i,t,s,o,l,a){const n=e.resolveComponent("v-autocomplete"),r=e.resolveComponent("v-col"),f=e.resolveComponent("v-list-item"),d=e.resolveComponent("v-divider"),p=e.resolveComponent("v-combobox"),v=e.resolveComponent("v-btn"),g=e.resolveComponent("v-row");return e.openBlock(),e.createElementBlock("div",z,[e.createVNode(g,{"no-gutters":!s.vertical},{default:e.withCtx(()=>[e.createVNode(r,{cols:a.colSize,class:"tpic-select pr-4","data-test":"select-target"},{default:e.withCtx(()=>[e.createVNode(n,{modelValue:l.selectedTargetName,"onUpdate:modelValue":[t[0]||(t[0]=c=>l.selectedTargetName=c),a.targetNameChanged],label:"Select Target","hide-details":"",density:"compact",variant:"outlined",disabled:a.autocompleteDisabled||s.lockTarget,items:l.targetNames,"item-title":"label","item-value":"value"},null,8,["modelValue","disabled","items","onUpdate:modelValue"])]),_:1},8,["cols"]),e.createVNode(r,{cols:a.colSize,class:"tpic-select pr-4","data-test":"select-packet"},{default:e.withCtx(()=>[e.createVNode(n,{modelValue:l.selectedPacketName,"onUpdate:modelValue":[t[2]||(t[2]=c=>l.selectedPacketName=c),a.packetNameChanged],label:"Select Packet","hide-details":"",density:"compact",variant:"outlined",disabled:l.packetsDisabled||a.autocompleteDisabled||s.lockPacket,items:l.packetNames,"item-title":"label","item-value":"value"},e.createSlots({_:2},[a.includeLatestPacketInDropdown?{name:"prepend-item",fn:e.withCtx(()=>[e.createVNode(f,{title:"LATEST",onClick:t[1]||(t[1]=c=>a.packetNameChanged("LATEST"))}),e.createVNode(d)]),key:"0"}:void 0]),1032,["modelValue","disabled","items","onUpdate:modelValue"])]),_:1},8,["cols"]),s.chooseItem?(e.openBlock(),e.createBlock(r,{key:0,cols:a.colSize,class:"tpic-select pr-4","data-test":"select-item"},{default:e.withCtx(()=>[e.createVNode(n,{modelValue:l.selectedItemName,"onUpdate:modelValue":[t[3]||(t[3]=c=>l.selectedItemName=c),t[4]||(t[4]=c=>a.itemNameChanged(c))],label:"Select Item","hide-details":"",density:"compact",variant:"outlined",disabled:l.itemsDisabled||a.autocompleteDisabled,items:l.itemNames,"item-title":"label","item-value":"value"},null,8,["modelValue","disabled","items"])]),_:1},8,["cols"])):e.createCommentVNode("",!0),s.chooseItem&&a.itemIsArray?(e.openBlock(),e.createBlock(r,{key:1,cols:"1",class:"tpic-select pr-4","data-test":"array-index",style:{"min-width":"105px"}},{default:e.withCtx(()=>[e.createVNode(p,{modelValue:l.selectedArrayIndex,"onUpdate:modelValue":[t[5]||(t[5]=c=>l.selectedArrayIndex=c),t[6]||(t[6]=c=>a.indexChanged(c))],label:"Index","hide-details":"",density:"compact",variant:"outlined",disabled:l.itemsDisabled||a.autocompleteDisabled,items:a.arrayIndexes,"item-title":"label","item-value":"value"},null,8,["modelValue","disabled","items"])]),_:1})):e.createCommentVNode("",!0),s.buttonText?(e.openBlock(),e.createBlock(r,{key:2,cols:a.colSize,style:{"max-width":"140px"}},{default:e.withCtx(()=>[e.createVNode(v,{disabled:a.buttonDisabled,color:"primary","data-test":"select-send",onClick:a.buttonPressed},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.actualButtonText),1)]),_:1},8,["disabled","onClick"])]),_:1},8,["cols"])):e.createCommentVNode("",!0)]),_:1},8,["no-gutters"]),s.selectTypes?(e.openBlock(),e.createBlock(g,{key:0,class:"pt-6","no-gutters":""},{default:e.withCtx(()=>[e.createVNode(r,{cols:a.colSize,class:"tpic-select pr-4","data-test":"data-type"},{default:e.withCtx(()=>[e.createVNode(n,{modelValue:l.selectedValueType,"onUpdate:modelValue":t[7]||(t[7]=c=>l.selectedValueType=c),label:"Value Type","hide-details":"",density:"compact",variant:"outlined",items:l.valueTypes},null,8,["modelValue","items"])]),_:1},8,["cols"]),e.createVNode(r,{cols:a.colSize,class:"tpic-select pr-4","data-test":"reduced"},{default:e.withCtx(()=>[e.createVNode(n,{modelValue:l.selectedReduced,"onUpdate:modelValue":t[8]||(t[8]=c=>l.selectedReduced=c),label:"Reduced","hide-details":"",density:"compact",variant:"outlined",items:l.reductionModes},null,8,["modelValue","items"])]),_:1},8,["cols"]),e.createVNode(r,{cols:a.colSize,class:"tpic-select pr-4","data-test":"reduced-type"},{default:e.withCtx(()=>[e.createVNode(n,{modelValue:l.selectedReducedType,"onUpdate:modelValue":t[9]||(t[9]=c=>l.selectedReducedType=c),label:"Reduced Type","hide-details":"",density:"compact",variant:"outlined",disabled:l.selectedReduced==="DECOM",items:l.reducedTypes},null,8,["modelValue","disabled","items"])]),_:1},8,["cols"]),e.createVNode(r,{cols:a.colSize,style:{"max-width":"140px"}},null,8,["cols"])]),_:1})):e.createCommentVNode("",!0),e.createVNode(g,{"no-gutters":"",class:"pa-3"},{default:e.withCtx(()=>[e.createVNode(r,{cols:a.colSize,class:e.normalizeClass({"openc3-yellow":l.hazardous})},{default:e.withCtx(()=>[e.createTextVNode(" Description: "+e.toDisplayString(l.description)+" ",1),l.hazardous?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" (HAZARDOUS) ")],64)):e.createCommentVNode("",!0)]),_:1},8,["cols","class"])]),_:1})])}const L=I._export_sfc(R,[["render",Y],["__scopeId","data-v-fe1b8081"]]),G={components:{TargetPacketItemChooser:L},mixins:[P.TimeFilters],props:{modelValue:Boolean,title:{type:String,required:!0},legendPosition:{type:String,required:!0},items:{type:Array,required:!0},graphMinY:{type:Number},graphMaxY:{type:Number},lines:{type:Array,required:!0},colors:{type:Array,required:!0},startDateTime:{type:Number},endDateTime:{type:Number},timeZone:{type:String,required:!0},xAxisItemPacket:{type:Object,default:void 0},xAxisItem:{type:String,default:"__time"}},emits:["cancel","ok","remove","update:modelValue","update:xAxisItem"],data:function(){return{tab:0,graph:{},customXAxisEnabled:!1,selectedXAxisItem:null,pendingXAxisSelection:null,legendPositions:["top","bottom","left","right"],startDate:null,startTime:null,endDate:null,endTime:null,lineHeaders:[{title:"Y Value",value:"yValue"},{title:"Color",value:"color"},{title:"Actions",value:"actions",sortable:!1}],itemHeaders:[{title:"Target Name",value:"targetName"},{title:"Packet Name",value:"packetName"},{title:"Item Name",value:"itemName"},{title:"Actions",value:"actions",sortable:!1}],rules:{date:i=>{if(!i)return!0;try{return b.isValid(M.parse(i,"yyyy-MM-dd",new Date))||"Invalid date (YYYY-MM-DD)"}catch{return"Invalid date (YYYY-MM-DD)"}},time:i=>{if(!i)return!0;try{return b.isValid(M.parse(i,"HH:mm:ss",new Date))||"Invalid time (HH:MM:SS)"}catch{return"Invalid time (HH:MM:SS)"}}}}},computed:{show:{get(){return this.modelValue},set(i){this.$emit("update:modelValue",i)}},editItems:function(){if(!this.items)return[];let i=0;return this.items.map(t=>(i+=1,{...t,itemId:i}))},initialXAxisItem:function(){if(this.xAxisItem!=="__time")return this.xAxisItem.split("__").at(4)}},created(){if(this.graph={title:this.title,legendPosition:this.legendPosition,items:this.items,graphMinY:this.graphMinY,graphMaxY:this.graphMaxY,lines:[...this.lines]},this.customXAxisEnabled=this.xAxisItem&&this.xAxisItem!=="__time",this.selectedXAxisItem=this.xAxisItem,this.startDateTime){let i=b.toDate(this.startDateTime/1e6);this.startDate=this.formatDate(i,this.timeZone),this.startTime=this.formatTimeHMS(i,this.timeZone)}else{let i=new Date-36e5;this.startDate=this.formatDate(i,this.timeZone),this.startTime=this.formatTimeHMS(i,this.timeZone)}if(this.endDateTime){let i=b.toDate(this.endDateTime/1e6);this.endDate=this.formatDate(i,this.timeZone),this.endTime=this.formatTimeHMS(i,this.timeZone)}},methods:{closeOk(){this.startDate&&this.startTime?this.graph.startDateTime=this.startDate+" "+this.startTime:this.graph.startDateTime=null,this.endDate&&this.endTime?this.graph.endDateTime=this.endDate+" "+this.endTime:this.graph.endDateTime=null,this.$emit("ok",this.graph)},addLine(){this.graph.lines.push({yValue:0,color:"white"})},removeLine(i){let t=this.graph.lines.indexOf(i);this.graph.lines.splice(t,1)},customXAxisToggled(i){i||(this.selectedXAxisItem="__time",this.$emit("update:xAxisItem","__time"))},xAxisItemChanged(i){this.pendingXAxisSelection=i},xAxisItemSelected(i){if(i.targetName&&i.packetName&&i.itemName){const t=`DECOM__TLM__${i.targetName}__${i.packetName}__${i.itemName}__CONVERTED`;this.selectedXAxisItem=t,this.$emit("update:xAxisItem",t)}}}},X={class:"edit-box"},W={class:"edit-box"},H={class:"edit-box"},K={class:"edit-box"},q={class:"edit-box"};function F(i,t,s,o,l,a){const n=e.resolveComponent("v-spacer"),r=e.resolveComponent("v-toolbar"),f=e.resolveComponent("v-tab"),d=e.resolveComponent("v-tabs"),p=e.resolveComponent("v-text-field"),v=e.resolveComponent("v-card-text"),g=e.resolveComponent("v-col"),c=e.resolveComponent("v-select"),u=e.resolveComponent("v-row"),k=e.resolveComponent("v-tabs-window-item"),x=e.resolveComponent("v-btn"),y=e.resolveComponent("v-list-item"),w=e.resolveComponent("v-list"),C=e.resolveComponent("v-checkbox"),D=e.resolveComponent("target-packet-item-chooser"),A=e.resolveComponent("v-data-table"),V=e.resolveComponent("v-tabs-window"),E=e.resolveComponent("v-card-actions"),h=e.resolveComponent("v-card"),B=e.resolveComponent("v-dialog");return e.openBlock(),e.createBlock(B,{modelValue:a.show,"onUpdate:modelValue":t[13]||(t[13]=m=>a.show=m),"max-width":"700",onKeydown:t[14]||(t[14]=e.withKeys(m=>i.$emit("cancel"),["esc"]))},{default:e.withCtx(()=>[e.createVNode(r,{height:"24"},{default:e.withCtx(()=>[e.createVNode(n),t[15]||(t[15]=e.createElementVNode("span",null," Edit Graph ",-1)),e.createVNode(n)]),_:1,__:[15]}),e.createVNode(h,{class:"pa-3"},{default:e.withCtx(()=>[e.createVNode(d,{modelValue:i.tab,"onUpdate:modelValue":t[0]||(t[0]=m=>i.tab=m),class:"ml-3"},{default:e.withCtx(()=>[e.createVNode(f,{value:"0"},{default:e.withCtx(()=>t[16]||(t[16]=[e.createTextVNode(" Settings ",-1)])),_:1,__:[16]}),e.createVNode(f,{value:"1"},{default:e.withCtx(()=>t[17]||(t[17]=[e.createTextVNode(" Scale / Lines ",-1)])),_:1,__:[17]}),e.createVNode(f,{value:"2"},{default:e.withCtx(()=>t[18]||(t[18]=[e.createTextVNode(" Items ",-1)])),_:1,__:[18]})]),_:1},8,["modelValue"]),e.createVNode(V,{modelValue:i.tab,"onUpdate:modelValue":t[11]||(t[11]=m=>i.tab=m)},{default:e.withCtx(()=>[e.createVNode(k,{value:"0",eager:""},{default:e.withCtx(()=>[e.createElementVNode("div",X,[e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(g,null,{default:e.withCtx(()=>[e.createVNode(v,{class:"pa-0"},{default:e.withCtx(()=>[e.createVNode(p,{modelValue:i.graph.title,"onUpdate:modelValue":t[1]||(t[1]=m=>i.graph.title=m),class:"pb-2",label:"Title","hide-details":""},null,8,["modelValue"])]),_:1})]),_:1}),e.createVNode(g,null,{default:e.withCtx(()=>[e.createVNode(c,{modelValue:i.graph.legendPosition,"onUpdate:modelValue":t[2]||(t[2]=m=>i.graph.legendPosition=m),label:"Legend Position","hide-details":"",items:i.legendPositions,style:{"max-width":"280px"}},null,8,["modelValue","items"])]),_:1})]),_:1})]),e.createElementVNode("div",W,[e.createVNode(v,{class:"pa-0"},{default:e.withCtx(()=>t[19]||(t[19]=[e.createTextVNode(" Select a start date/time for the graph. Leave blank for start now. ",-1)])),_:1,__:[19]}),e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(g,null,{default:e.withCtx(()=>[e.createVNode(p,{modelValue:i.startDate,"onUpdate:modelValue":t[3]||(t[3]=m=>i.startDate=m),label:"Start Date",name:`date${Date.now()}`,rules:[i.rules.date],type:"date"},null,8,["modelValue","name","rules"])]),_:1}),e.createVNode(g,null,{default:e.withCtx(()=>[e.createVNode(p,{modelValue:i.startTime,"onUpdate:modelValue":t[4]||(t[4]=m=>i.startTime=m),label:"Start Time",name:`time${Date.now()}`,rules:[i.rules.time],type:"time",step:"1"},null,8,["modelValue","name","rules"])]),_:1})]),_:1}),e.createVNode(v,{class:"pa-0"},{default:e.withCtx(()=>t[20]||(t[20]=[e.createTextVNode(" Select a end date/time for the graph. Leave blank for continuous real-time graphing. ",-1)])),_:1,__:[20]}),e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(g,null,{default:e.withCtx(()=>[e.createVNode(p,{modelValue:i.endDate,"onUpdate:modelValue":t[5]||(t[5]=m=>i.endDate=m),label:"End Date",name:`date${Date.now()}`,rules:[i.rules.date],type:"date"},null,8,["modelValue","name","rules"])]),_:1}),e.createVNode(g,null,{default:e.withCtx(()=>[e.createVNode(p,{modelValue:i.endTime,"onUpdate:modelValue":t[6]||(t[6]=m=>i.endTime=m),label:"End Time",name:`time${Date.now()}`,rules:[i.rules.time],type:"time",step:"1"},null,8,["modelValue","name","rules"])]),_:1})]),_:1})])]),_:1}),e.createVNode(k,{value:"1",eager:""},{default:e.withCtx(()=>[e.createElementVNode("div",H,[e.createVNode(v,{class:"pa-0"},{default:e.withCtx(()=>t[21]||(t[21]=[e.createTextVNode(" Set a min or max Y value to override automatic scaling ",-1)])),_:1,__:[21]}),e.createVNode(u,{dense:""},{default:e.withCtx(()=>[e.createVNode(g,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(p,{modelValue:i.graph.graphMinY,"onUpdate:modelValue":t[7]||(t[7]=m=>i.graph.graphMinY=m),"hide-details":"",label:"Min Y Axis (Optional)",type:"number"},null,8,["modelValue"])]),_:1}),e.createVNode(g,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(p,{modelValue:i.graph.graphMaxY,"onUpdate:modelValue":t[8]||(t[8]=m=>i.graph.graphMaxY=m),"hide-details":"",label:"Max Y Axis (Optional)",type:"number"},null,8,["modelValue"])]),_:1})]),_:1})]),e.createElementVNode("div",K,[e.createVNode(w,{density:"compact",class:"horizontal-lines"},{default:e.withCtx(()=>[e.createVNode(y,null,{default:e.withCtx(()=>[t[23]||(t[23]=e.createElementVNode("span",{style:{"padding-top":"5px"}}," Add horizontal lines to the graph ",-1)),e.createVNode(n),e.createVNode(x,{onClick:t[9]||(t[9]=m=>a.addLine())},{default:e.withCtx(()=>t[22]||(t[22]=[e.createTextVNode(" New Line ",-1)])),_:1,__:[22]})]),_:1,__:[23]}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.graph.lines,(m,S)=>(e.openBlock(),e.createBlock(y,{key:S,value:m,color:"primary"},{default:e.withCtx(()=>[e.createVNode(u,null,{default:e.withCtx(()=>[e.createVNode(g,null,{default:e.withCtx(()=>[e.createVNode(p,{modelValue:m.yValue,"onUpdate:modelValue":T=>m.yValue=T,label:"Y Value"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e.createVNode(g,null,{default:e.withCtx(()=>[e.createVNode(c,{modelValue:m.color,"onUpdate:modelValue":T=>m.color=T,label:"Color","hide-details":"",items:s.colors},null,8,["modelValue","onUpdate:modelValue","items"])]),_:2},1024),e.createVNode(g,null,{default:e.withCtx(()=>[e.createVNode(x,{style:{padding:"30px"},icon:"mdi-delete",variant:"text","aria-label":"Remove Line",onClick:T=>a.removeLine(m)},null,8,["onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1})]),e.createElementVNode("div",q,[e.createVNode(v,{class:"pa-0 text-medium-emphasis"},{default:e.withCtx(()=>t[24]||(t[24]=[e.createTextVNode(" Choose a different item to use for the graph's X axis. If unchecked, the graph will use the packet's PACKET_TIME item if it exists, otherwise it will use the system received time for the packet. ",-1)])),_:1,__:[24]}),e.createVNode(C,{modelValue:i.customXAxisEnabled,"onUpdate:modelValue":[t[10]||(t[10]=m=>i.customXAxisEnabled=m),a.customXAxisToggled],disabled:!s.xAxisItemPacket,label:"Custom X axis item",density:"compact","hide-details":""},null,8,["modelValue","disabled","onUpdate:modelValue"]),s.xAxisItemPacket?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(v,{key:0,class:"pa-0 text-medium-emphasis"},{default:e.withCtx(()=>t[25]||(t[25]=[e.createTextVNode(" All items on the graph must be in the same packet to enable this feature. ",-1)])),_:1,__:[25]})),i.customXAxisEnabled&&s.xAxisItemPacket?(e.openBlock(),e.createBlock(D,{key:1,"initial-target-name":s.xAxisItemPacket.targetName,"initial-packet-name":s.xAxisItemPacket.packetName,"initial-item-name":a.initialXAxisItem,"choose-item":"","lock-target":"","lock-packet":"","button-text":"Set",onOnSet:a.xAxisItemChanged,onAddItem:a.xAxisItemSelected},null,8,["initial-target-name","initial-packet-name","initial-item-name","onOnSet","onAddItem"])):e.createCommentVNode("",!0)])]),_:1}),e.createVNode(k,{value:"2",eager:""},{default:e.withCtx(()=>[e.createVNode(A,{"item-key":"itemId",class:"elevation-1 my-2","data-test":"edit-graph-items",headers:i.itemHeaders,items:a.editItems,"items-per-page":5,"footer-props":{"items-per-page-options":[5]}},{"item.actions":e.withCtx(({item:m})=>[e.createVNode(x,{icon:"mdi-delete",variant:"text","aria-label":"Remove Item",onClick:S=>i.$emit("remove",m)},null,8,["onClick"])]),"no-data":e.withCtx(()=>t[26]||(t[26]=[e.createElementVNode("span",null," Currently no items on this graph ",-1)])),_:1},8,["headers","items"])]),_:1})]),_:1},8,["modelValue"]),e.createVNode(E,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(n),e.createVNode(x,{variant:"outlined",onClick:t[12]||(t[12]=m=>i.$emit("cancel"))},{default:e.withCtx(()=>t[27]||(t[27]=[e.createTextVNode(" Cancel ",-1)])),_:1,__:[27]}),e.createVNode(x,{variant:"flat",onClick:a.closeOk},{default:e.withCtx(()=>t[28]||(t[28]=[e.createTextVNode(" Ok ",-1)])),_:1,__:[28]},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])}const O=I._export_sfc(G,[["render",F]]),j={props:{modelValue:Boolean,item:{type:Object,required:!0},colors:{type:Array,required:!0}},emits:["cancel","changeColor","changeLimits","close","update:modelValue"],data:function(){return{editItem:null,limitsName:"NONE",limits:{NONE:[]},valueTypes:["CONVERTED","RAW"],reduction:[{title:"NONE",value:"DECOM"},{title:"REDUCED_MINUTE",value:"REDUCED_MINUTE"},{title:"REDUCED_HOUR",value:"REDUCED_HOUR"},{title:"REDUCED_DAY",value:"REDUCED_DAY"}],reducedTypes:["MIN","MAX","AVG","STDDEV"]}},computed:{show:{get(){return this.modelValue},set(i){this.$emit("update:modelValue",i)}},limitsNames(){return Object.keys(this.limits)}},async created(){this.editItem={...this.item},new N.di().get_item(this.item.targetName,this.item.packetName,this.item.itemName).then(i=>{for(const[t,s]of Object.entries(i.limits))Object.keys(s).includes("red_low")&&(this.limits[t]=Object.values(s));this.limitsName=Object.keys(this.limits).find(t=>this.limits[t]+""==this.editItem.limits+"")})}},Z={key:0},J={class:"pa-3"};function Q(i,t,s,o,l,a){const n=e.resolveComponent("v-card-title"),r=e.resolveComponent("v-select"),f=e.resolveComponent("v-card-text"),d=e.resolveComponent("v-spacer"),p=e.resolveComponent("v-btn"),v=e.resolveComponent("v-card-actions"),g=e.resolveComponent("v-card"),c=e.resolveComponent("v-dialog");return e.openBlock(),e.createBlock(c,{modelValue:a.show,"onUpdate:modelValue":t[9]||(t[9]=u=>a.show=u),width:"400",onKeydown:t[10]||(t[10]=e.withKeys(u=>i.success(),["enter"]))},{default:e.withCtx(()=>[e.createVNode(g,null,{default:e.withCtx(()=>[e.createVNode(n,{class:"mb-2"},{default:e.withCtx(()=>t[11]||(t[11]=[e.createTextVNode("Edit Item",-1)])),_:1,__:[11]}),e.createVNode(f,null,{default:e.withCtx(()=>[e.createVNode(r,{modelValue:i.editItem.valueType,"onUpdate:modelValue":t[0]||(t[0]=u=>i.editItem.valueType=u),variant:"outlined","hide-details":"",label:"Value Type",items:i.valueTypes,class:"mb-2"},null,8,["modelValue","items"]),e.createVNode(r,{modelValue:i.editItem.reduced,"onUpdate:modelValue":t[1]||(t[1]=u=>i.editItem.reduced=u),variant:"outlined","hide-details":"",label:"Reduction",items:i.reduction,class:"mb-2"},null,8,["modelValue","items"]),e.createVNode(r,{modelValue:i.editItem.reducedType,"onUpdate:modelValue":t[2]||(t[2]=u=>i.editItem.reducedType=u),variant:"outlined","hide-details":"",label:"Reduced Type",items:i.reducedTypes,disabled:i.editItem.reduced==="DECOM",class:"mb-2"},null,8,["modelValue","items","disabled"]),e.createVNode(r,{modelValue:i.editItem.color,"onUpdate:modelValue":[t[3]||(t[3]=u=>i.editItem.color=u),t[4]||(t[4]=u=>i.$emit("changeColor",u))],variant:"outlined","hide-details":"",label:"Color",items:s.colors,class:"mb-2"},null,8,["modelValue","items"]),a.limitsNames.length>1?(e.openBlock(),e.createElementBlock("div",Z,[e.createVNode(r,{modelValue:i.limitsName,"onUpdate:modelValue":[t[5]||(t[5]=u=>i.limitsName=u),t[6]||(t[6]=u=>i.$emit("changeLimits",i.limits[i.limitsName]))],variant:"outlined","hide-details":"",label:"Display Limits",items:a.limitsNames},null,8,["modelValue","items"]),e.createElementVNode("div",J,e.toDisplayString(i.limitsName)+": "+e.toDisplayString(i.limits[i.limitsName]),1)])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(v,{class:"px-2"},{default:e.withCtx(()=>[e.createVNode(d),e.createVNode(p,{variant:"outlined",onClick:t[7]||(t[7]=u=>i.$emit("cancel"))},{default:e.withCtx(()=>t[12]||(t[12]=[e.createTextVNode(" Cancel ",-1)])),_:1,__:[12]}),e.createVNode(p,{variant:"flat",onClick:t[8]||(t[8]=u=>i.$emit("close",i.editItem))},{default:e.withCtx(()=>t[13]||(t[13]=[e.createTextVNode(" Ok ",-1)])),_:1,__:[13]})]),_:1})]),_:1})]),_:1},8,["modelValue"])}const U=I._export_sfc(j,[["render",Q]]),_="__time",$={components:{GraphEditDialog:O,GraphEditItemDialog:U},mixins:[P.TimeFilters],props:{id:{type:Number,required:!0},selectedGraphId:{type:Number,default:null},state:{type:String,required:!0},startTime:{type:Number,default:null},secondsGraphed:{type:Number,required:!0},pointsSaved:{type:Number,required:!0},pointsGraphed:{type:Number,required:!0},refreshIntervalMs:{type:Number,default:200},hideToolbar:{type:Boolean,default:!1},hideOverview:{type:Boolean,default:!1},sparkline:{type:Boolean,default:!1},initialItems:{type:Array,default:()=>[]},initialXAxisItem:{type:String,default:_},height:{type:Number,default:null},width:{type:Number,default:null},timeZone:{type:String,default:"local"}},emits:["click","close-graph","edit","min-max-graph","pause","resize","start","started"],data(){return{api:null,lines:[],active:!0,expand:!0,fullWidth:!0,fullHeight:!0,graph:null,editGraph:!1,editGraphMenu:!1,editGraphMenuX:0,editGraphMenuY:0,editItem:!1,itemMenu:!1,itemMenuX:0,itemMenuY:0,legendMenu:!1,legendMenuX:0,legendMenuY:0,legendPosition:"bottom",selectedItem:null,hideToolbarData:this.hideToolbar,showOverview:!this.hideOverview,hideOverviewData:this.hideOverview,title:"",overview:null,data:[[]],dataChanged:!1,timeout:null,graphMinY:null,graphMaxY:null,graphStartDateTime:null,graphEndDateTime:null,xAxisItem:this.initialXAxisItem,indexes:{},items:this.initialItems,graphItems:[],lastPlaybackDateTime:null,limitsValues:[],drawInterval:null,zoomChart:!1,zoomOverview:!1,cable:new N.ui,subscription:null,needToUpdate:!1,errorDialog:!1,errors:[],colorIndex:0,colors:["#00c7cb","#938bdb","#4dacff","lime","darkorange","red","gold","hotpink","tan","cyan","maroon","blue","teal","purple","green","brown","lightblue","white","black"]}},computed:{calcFullSize:function(){return this.fullWidth||this.fullHeight},error:function(){return this.errorDialog&&this.errors.length>0?JSON.stringify(this.errors,null,4):null},allowableXAxisItemPacket:function(){if(!this.canUseCustomXAxisItem||this.items.length===0)return;const{targetName:i,packetName:t}=this.items[0];return{targetName:i,packetName:t}},canUseCustomXAxisItem:function(){if(this.items.length===0)return!0;const{targetName:i,packetName:t}=this.items[0];return this.items.every(s=>s.targetName===i&&s.packetName===t)},actualXAxisItem:function(){return this.canUseCustomXAxisItem&&this.xAxisItem?this.xAxisItem:_},xAxisConverter:function(){return this.xAxisIsDefault?i=>i/1e9:i=>i},xAxisFormatter:function(){return i=>i==null?"--":this.xAxisIsTime?this.formatSeconds(i,this.timeZone):i},xAxisLabel:function(){return this.xAxisIsTime?"Time":this.actualXAxisItem.split("__").at(-2)},xAxisIsDefault:function(){return this.actualXAxisItem===_},xAxisIsTime:function(){const i=["PACKET_TIMESECONDS","RECEIVED_TIMESECONDS"];return this.xAxisIsDefault||i.includes(this.actualXAxisItem.split("__").at(4))},playbackMode:function(){return this.$store.state.playback.playbackMode},playbackDateTime:function(){return this.$store.state.playback.playbackDateTime},playbackStep:function(){return this.$store.state.playback.playbackStep}},watch:{state:function(i,t){switch(i){case"start":t==="stop"&&this.startGraph();break;case"stop":this.stopGraph();break}},playbackMode:function(i,t){this.playbackMode==="playback"?this.setupPlaybackMode():(this.lastPlaybackDateTime=null,this.clearAllData(),this.startGraph())},playbackDateTime:function(i,t){this.playbackMode==="playback"&&(this.lastPlaybackDateTime===null||this.lastPlaybackDateTime>this.playbackDateTime?this.clearAllData():this.api.get_tlm_values(this.graphItems,30,null,this.lastPlaybackDateTime,this.playbackDateTime).then(s=>{if(s.length>0){if(Array.isArray(s[0])&&Array.isArray(s[0][0]))for(let o=0;o<s.length;o++)for(let l=0;l<s[o].length;l++)if(l===0){let a=s[o][l][0],n=new Date(a);this.data[0].push(n.getTime()/1e3)}else this.data[l].push(s[o][l][0]);else if(Array.isArray(s)&&s.length>=2)for(let o=0;o<s.length;o++)if(o===0){let l=s[o][0],a=new Date(l);this.data[0].push(a.getTime()/1e3)}else this.data[o].push(s[o][0])}this.dataChanged=!0,this.updateGraphData()}),this.lastPlaybackDateTime=this.playbackDateTime)},data:function(i,t){this.dataChanged=!0},graphMinY:function(i,t){let s=parseFloat(i);isNaN(s)||(this.graphMinY=s),this.setGraphRange()},graphMaxY:function(i,t){let s=parseFloat(i);isNaN(s)||(this.graphMaxY=s),this.setGraphRange()},graphStartDateTime:function(i,t){i&&typeof i=="string"?(this.graphStartDateTime=this.parseDateTime(this.graphStartDateTime,this.timeZone)*1e6,this.graphStartDateTime!==t&&(this.needToUpdate=!0)):i===null&&t&&(this.graphStartDateTime=null,this.needToUpdate=!0)},graphEndDateTime:function(i,t){i&&typeof i=="string"?(this.graphEndDateTime=this.parseDateTime(this.graphEndDateTime,this.timeZone)*1e6,this.graphEndDateTime!==t&&(this.needToUpdate=!0)):i===null&&t&&(this.graphEndDateTime=null,this.needToUpdate=!0)},actualXAxisItem:function(i,t){let s=JSON.parse(JSON.stringify(this.items));this.removeItems(s),this.graph.destroy(),this.chartOpts.series[0].label=this.xAxisLabel,this.chartOpts.scales.x.time=this.xAxisIsTime,this.graph=new N.uPlot(this.chartOpts,this.data,document.getElementById(`chart${this.id}`)),this.hideOverview||(this.overview.destroy(),this.overviewOpts.scales.x.time=this.xAxisIsTime,this.overview=new N.uPlot(this.overviewOpts,this.data,document.getElementById(`overview${this.id}`))),this.addItems(s)}},created(){this.api=new N.di,this.title=`Graph ${this.id}`;for(const[i,t]of this.items.entries())this.data.push([]),this.indexes[this.subscriptionKey(t)]=i+1,t.color===void 0&&(t.color=this.colors[this.colorIndex]),this.colorIndex++,this.colorIndex===this.colors.length&&(this.colorIndex=0)},mounted(){const{chartSeries:i,overviewSeries:t}=this.items.reduce((s,o)=>{const l={spanGaps:!0};return s.chartSeries.push({...l,item:o,label:this.formatLabel(o),stroke:(a,n)=>this.items[n-1].color,width:2,value:(a,n)=>typeof n=="string"||isNaN(n)?"NaN":n==null?"--":n.toFixed(3)}),s.overviewSeries.push({...l}),s},{chartSeries:[],overviewSeries:[]});if(this.chartOpts={},this.sparkline)this.hideToolbarData=!0,this.hideOverviewData=!0,this.showOverview=!1,this.chartOpts={width:this.width,height:this.height,pxAlign:!1,cursor:{show:!1},select:{show:!1},legend:{show:!1},scales:{x:{time:!1}},axes:[{show:!1},{show:!1}],series:[{},{stroke:"white"}]},this.graph=new N.uPlot(this.chartOpts,this.data,document.getElementById(`chart${this.id}`));else{let s=Intl.DateTimeFormat().resolvedOptions().timeZone;this.timeZone&&this.timeZone!=="local"&&(s=this.timeZone),this.chartOpts={...this.getSize("chart"),...this.getScales(),...this.getAxes("chart"),plugins:[this.linesPlugin()],tzDate:o=>N.uPlot.tzDate(new Date(o*1e3),s),series:[{label:this.xAxisLabel,value:(o,l)=>this.xAxisFormatter(l)},...i],cursor:{drag:{x:!0,y:!1},sync:{key:"openc3"},bind:{mouseup:(o,l,a)=>n=>{this.state==="pause"&&o.select.width===0&&this.$emit("start"),a(n)}}},hooks:{setScale:[(o,l)=>{if(l==="x"&&!this.zoomOverview&&this.overview){this.zoomChart=!0;let a=Math.round(this.overview.valToPos(o.scales.x.min,"x")),n=Math.round(this.overview.valToPos(o.scales.x.max,"x"));this.overview.setSelect({left:a,width:n-a}),this.zoomChart=!1}}],setSelect:[o=>{this.state==="start"&&o.select.width>0&&this.$emit("pause")}],ready:[o=>{o.root.querySelector(".u-over").addEventListener("contextmenu",n=>{n.preventDefault(),this.itemMenu=!1,this.legendMenu=!1,this.editGraphMenuX=n.clientX,this.editGraphMenuY=n.clientY,this.editGraphMenu=!0});let a=o.root.querySelector(".u-legend");a.addEventListener("contextmenu",n=>{n.preventDefault(),this.editGraphMenu=!1,this.legendMenu=!1,this.itemMenuX=n.clientX,this.itemMenuY=n.clientY;let r=n.target.closest(".u-series"),f=Array.prototype.slice.call(a.childNodes[0].childNodes).indexOf(r),d=o.series[f];d.item?(this.selectedItem=d.item,this.itemMenu=!0):(this.itemMenu=!1,this.legendMenuX=n.clientX,this.legendMenuY=n.clientY,this.legendMenu=!0)}),a.querySelector("tbody").appendChild(this.$refs.info)}]}},this.graph=new N.uPlot(this.chartOpts,this.data,document.getElementById(`chart${this.id}`)),this.overviewOpts={...this.getSize("overview"),...this.getScales(),...this.getAxes("overview"),tzDate:o=>N.uPlot.tzDate(new Date(o*1e3),s),series:[...t],cursor:{y:!1,drag:{setScale:!1,x:!0,y:!1}},legend:{show:!1},hooks:{setSelect:[o=>{if(!this.zoomChart){this.state==="start"&&o.select.width>0&&this.$emit("pause"),this.zoomOverview=!0;let l=o.posToVal(o.select.left,"x"),a=o.posToVal(o.select.left+o.select.width,"x");this.graph.setScale("x",{min:l,max:a}),this.zoomOverview=!1}}]}},this.hideOverview||(this.overview=new N.uPlot(this.overviewOpts,this.data,document.getElementById(`overview${this.id}`))),this.moveLegend(this.legendPosition),window.addEventListener("resize",this.resize)}this.playbackMode!=="playback"?this.state!=="stop"&&this.startGraph():this.setupPlaybackMode()},beforeUnmount:function(){this.stopGraph(),this.cable.disconnect(),window.removeEventListener("resize",this.resize)},methods:{setupPlaybackMode:function(){this.stopGraph(),this.clearAllData();const i=this.items.map(t=>this.subscriptionKey(t).split("__").slice(2).join("__"));i.unshift("INST__HEALTH_STATUS__PACKET_TIMESECONDS__RAW"),this.api.get_tlm_available(i).then(t=>{this.graphItems=t,i.length!=t.length&&console.log("Error getting tlm available",i,this.graphItems)})},startGraph:function(){this.subscribe(),this.timeout=setTimeout(()=>{this.updateTimeout()},this.refreshIntervalMs)},stopGraph:function(){this.subscription&&(this.subscription.unsubscribe(),this.subscription=null),this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},updateTimeout:function(){this.updateGraphData(),this.timeout=setTimeout(()=>{this.updateTimeout()},this.refreshIntervalMs)},updateGraphData:function(){if(this.state==="pause"||!this.dataChanged)return;this.graph.setData(this.data),this.overview&&this.overview.setData(this.data);let i=this.data[0][this.data[0].length-1],t=this.data[0][this.data[0].length-this.pointsGraphed],s=this.data[0][0];s<i-this.secondsGraphed&&(s=i-this.secondsGraphed),t>s&&(s=t),this.graph.setScale("x",{min:s,max:i}),this.dataChanged=!1},formatLabel(i){if(i.valueType==="CONVERTED"&&i.reduced==="DECOM")return i.itemName;{let t="";return i.valueType!=="CONVERTED"&&(t+=i.valueType),i.reduced!=="DECOM"&&(t!==""&&(t+=" "),t+=`${i.reduced.split("_")[1]} ${i.reducedType}`),`${i.itemName} (${t})`}},moveLegend:function(i){switch(i){case"bottom":this.graph.root.classList.remove("side-legend"),this.graph.root.classList.remove("left-legend"),this.graph.root.classList.remove("top-legend");break;case"top":this.graph.root.classList.remove("side-legend"),this.graph.root.classList.remove("left-legend"),this.graph.root.classList.add("top-legend");break;case"left":this.graph.root.classList.remove("top-legend"),this.graph.root.classList.add("side-legend"),this.graph.root.classList.add("left-legend");break;case"right":this.graph.root.classList.remove("top-legend"),this.graph.root.classList.remove("left-legend"),this.graph.root.classList.add("side-legend");break}this.legendPosition=i,this.resize()},clearErrors:function(){this.errors=[]},editGraphClose:function(i){this.editGraph=!1,this.title=i.title,this.legendPosition=i.legendPosition,this.graphMinY=i.graphMinY,this.graphMaxY=i.graphMaxY,this.lines=[...i.lines],this.graphStartDateTime=i.startDateTime,this.graphEndDateTime=i.endDateTime,this.$nextTick(()=>{if(this.needToUpdate){if(this.subscription==null)this.startGraph();else{let t=JSON.parse(JSON.stringify(this.items));this.removeItems(t),setTimeout(()=>{this.addItems(t)},0)}this.needToUpdate=!1}}),this.moveLegend(this.legendPosition),this.$emit("edit")},resize:function(){this.graph.setSize(this.getSize("chart")),this.overview&&this.overview.setSize(this.getSize("overview")),this.$emit("resize",this.id)},expandAll:function(){this.fullWidth=!0,this.fullHeight=!0,this.resize()},collapseAll:function(){this.fullWidth=!1,this.fullHeight=!1,this.resize()},expandWidth:function(){this.fullWidth=!0,this.resize()},collapseWidth:function(){this.fullWidth=!1,this.resize()},expandHeight:function(){this.fullHeight=!0,this.resize()},collapseHeight:function(){this.fullHeight=!1,this.resize()},minMaxTransition:function(){this.expand=!this.expand,this.$emit("min-max-graph",this.id)},setGraphRange:function(){let i=.1;(this.graphMinY||this.graphMinY===0||this.graphMaxY||this.graphMaxY===0)&&(i=0),this.graph.scales.y.range=(t,s,o)=>{let l=s;(this.graphMinY||this.graphMinY===0)&&(l=this.graphMinY);let a=o;return(this.graphMaxY||this.graphMaxY===0)&&(a=this.graphMaxY),N.uPlot.rangeNum(l,a,i,!0)}},subscribe:function(){this.cable.createSubscription("StreamingChannel",window.openc3Scope,{received:i=>this.received(i),connected:()=>{const i=[...this.items];this.actualXAxisItem!==_&&i.push(this.actualXAxisItem),this.addItemsToSubscription(i)},disconnected:i=>{i.allowReconnect&&this.errors.push({type:"disconnected",message:"OpenC3 backend connection disconnected",time:new Date().getTime()})},rejected:()=>{this.errors.push({type:"rejected",message:"OpenC3 backend connection rejected",time:new Date().getTime()})}}).then(i=>{this.subscription=i})},getSize:function(i){let t=0;const s=document.getElementById("openc3-nav-drawer");s&&(t=s.classList.contains("v-navigation-drawer--active")?s.clientWidth:0);let o=0;(this.legendPosition==="right"||this.legendPosition==="left")&&(o=document.getElementsByClassName("u-legend")[0].clientWidth);const l=Math.max(document.documentElement.clientWidth,window.innerWidth||0)-t-o,a=Math.max(document.documentElement.clientHeight,window.innerHeight||0),n=document.getElementsByClassName("v-expansion-panel")[0];let r=100;i==="overview"?this.fullHeight&&!this.hideOverviewData?this.showOverview=!0:this.showOverview=!1:(r=a-n.clientHeight-r-250,this.fullHeight||(r=r/2+10));let f=l-70;return this.fullWidth||(f=f/2-12),{width:this.width||f,height:this.height||r}},getScales:function(){return{scales:{x:{range(i,t,s){return t==null?this.xAxisIsTime?[1566453600,1566497660]:[0,1]:[t,s]},time:this.xAxisIsTime},y:{range(i,t,s){return t==null?[-100,100]:N.uPlot.rangeNum(t,s,.1,!0)}}}}},getAxes:function(i){let t="rgba(255, 255, 255, .1)",s="white";return{axes:[{stroke:s,grid:{show:!0,stroke:t,width:2}},{size:80,stroke:s,grid:{show:i!=="overview",stroke:t,width:2},values(o,l){return(l.some(a=>a>=1e7)||l.every(a=>a<.01))&&(l=l.map(a=>a.toExponential(3))),l}}]}},closeEditItem:function(i){this.editItem=!1,(this.graphEndDateTime!==null&&this.selectedItem!==i||this.selectedItem.valueType!==i.valueType||this.selectedItem.reduced!==i.reduced||this.selectedItem.reducedType!==i.reducedType)&&this.changeItem(i)},changeColor:function(i){let t=this.subscriptionKey(this.selectedItem),s=this.indexes[t];this.items[s-1].color=i,this.selectedItem.color=i,this.graph.root.querySelectorAll(".u-marker")[s].style.borderColor=i},changeLimits:function(i){let t=this.subscriptionKey(this.selectedItem),s=this.indexes[t];this.items[s-1].limits=i,this.selectedItem.limits=i,this.limitsValues=i},linesPlugin:function(){return{hooks:{draw:i=>{const{ctx:t,bbox:s}=i,o=i.valToPos(i.scales.y.min,"y",!0),l=i.valToPos(i.scales.y.max,"y",!0),a=i.valToPos(this.limitsValues[0],"y",!0),n=i.valToPos(this.limitsValues[1],"y",!0),r=i.valToPos(this.limitsValues[2],"y",!0),f=i.valToPos(this.limitsValues[3],"y",!0);if(this.lines.forEach(d=>{i.scales.y.min<=d.yValue&&d.yValue<=i.scales.y.max&&(t.save(),t.beginPath(),t.strokeStyle=d.color,t.lineWidth=2,t.moveTo(s.left,i.valToPos(d.yValue,"y",!0)),t.lineTo(s.left+s.width,i.valToPos(d.yValue,"y",!0)),t.stroke(),t.restore())}),t.save(),t.beginPath(),t.fillStyle="rgba(255,0,0,0.15)",i.scales.y.min<this.limitsValues[0]){let d=a<l?l:a;t.fillRect(s.left,a,s.width,o-d)}if(i.scales.y.max>this.limitsValues[3]){let d=o<f?o:f;t.fillRect(s.left,l,s.width,d-l)}if(t.fillStyle="rgba(255,255,0,0.15)",i.scales.y.min<this.limitsValues[1]&&i.scales.y.max>this.limitsValues[0]){let d=n<l?l:n;t.fillRect(s.left,d,s.width,a-d)}if(i.scales.y.max>this.limitsValues[2]&&i.scales.y.min<this.limitsValues[3]){let d=o<f?o:f,p=o<r?o:r;t.fillRect(s.left,d,s.width,p-d)}if(t.fillStyle="rgba(0,255,0,0.15)",this.limitsValues.length===4){if(i.scales.y.min<this.limitsValues[2]&&i.scales.y.max>this.limitsValues[1]){let d=r<l?l:r,p=o<n?o:n;t.fillRect(s.left,d,s.width,p-d)}}else{const d=i.valToPos(this.limitsValues[4],"y",!0),p=i.valToPos(this.limitsValues[5],"y",!0);if(i.scales.y.min<this.limitsValues[4]&&i.scales.y.max>this.limitsValues[1]){let c=d<l?l:d;t.fillRect(s.left,c,s.width,n-c)}if(i.scales.y.max>this.limitsValues[5]&&i.scales.y.min<this.limitsValues[2]){let c=o<r?o:r,u=o<p?o:p;t.fillRect(s.left,c,s.width,u-c)}t.fillStyle="rgba(0,0,255,0.15)";let v=p<l?l:p,g=o<d?o:d;t.fillRect(s.left,v,s.width,g-v)}t.stroke(),t.restore()}}}},changeItem:function(i){this.removeItems([this.selectedItem]),this.selectedItem.valueType=i.valueType,this.selectedItem.reduced=i.reduced,this.selectedItem.reducedType=i.reducedType,setTimeout(()=>{this.addItems([this.selectedItem])},0)},addItems:function(i,t="CONVERTED"){i.forEach(s=>{s.valueType||(s.valueType=t),s.color||(s.color=this.colors[this.colorIndex]),s.limits||(s.limits=[]),s.limits.length>0&&(this.limitsValues=s.limits),this.colorIndex=(this.colorIndex+1)%this.colors.length,this.items.push(s);const o=this.data.length;this.graph.addSeries(this.createSeriesConfig(s),o),this.overview&&this.overview.addSeries(this.createOverviewSeriesConfig(),o),this.data.splice(o,0,Array(this.data[0].length)),this.indexes[this.subscriptionKey(s)]=o}),this.updateColorIndex(i),this.xAxisIsDefault||i.push(this.actualXAxisItem),this.addItemsToSubscription(i),this.$emit("resize"),this.$emit("edit")},createSeriesConfig:function(i){return{spanGaps:!0,item:i,label:this.formatLabel(i),stroke:(t,s)=>this.items[s-1].color,width:2,value:(t,s)=>typeof s=="string"||isNaN(s)?"NaN":s==null?"--":Math.abs(s)<.01&&s!==0||Math.abs(s)>=1e7?s.toExponential(6):s.toFixed(6)}},createOverviewSeriesConfig:function(){return{spanGaps:!0,stroke:(i,t)=>this.items[t-1].color}},updateColorIndex:function(i){const t=i[i.length-1];if(t){const s=this.colors.indexOf(t.color);s!==-1&&(this.colorIndex=(s+1)%this.colors.length)}},addItemsToSubscription:function(i=this.items){let t=this.startTime;this.graphStartDateTime&&(t=this.graphStartDateTime);const s=i.map(o=>{if(typeof o=="object")return this.subscriptionKey(o);if(typeof o=="string")return o;throw new Error(`Invalid subscription item type for ${o}: ${typeof o}`)});this.subscription&&OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity).then(o=>{o&&OpenC3Auth.setTokens(),this.subscription.perform("add",{scope:window.openc3Scope,token:localStorage.openc3Token,items:s,start_time:t,end_time:this.graphEndDateTime})})},clearAllData:function(){this.data[0]=[],this.clearData(this.items)},clearData:function(i){for(const t of i.map(this.subscriptionKey)){let s=this.indexes[t];this.data[s]=Array(this.data[0].length).fill(null),this.graph.setData(this.data),this.overview&&this.overview.setData(this.data)}this.data.length===2&&(this.data[0]=[],this.graph.setData(this.data),this.overview&&this.overview.setData(this.data))},removeItems:function(i){this.removeItemsFromSubscription(i);for(const t of i.map(this.subscriptionKey)){const s=this.reorderIndexes(t);this.items.splice(s-1,1),this.data.splice(s,1),this.graph.delSeries(s),this.graph.setData(this.data),this.overview&&(this.overview.delSeries(s),this.overview.setData(this.data))}this.data.length===1&&(this.data[0]=[],this.graph.setData(this.data),this.overview&&this.overview.setData(this.data)),this.$emit("resize"),this.$emit("edit")},removeItemsFromSubscription:function(i=this.items){if(this.subscription){const t=i.map(s=>{if(typeof s=="object")return this.subscriptionKey(s);if(typeof s=="string")return s;throw new Error(`Invalid subscription item type for ${s}: ${typeof s}`)});this.subscription.perform("remove",{scope:window.openc3Scope,token:localStorage.openc3Token,items:t})}},reorderIndexes:function(i){let t=this.indexes[i];delete this.indexes[i];for(let s in this.indexes)this.indexes[s]>t&&(this.indexes[s]-=1);return t},received:function(i){this.cable.recordPing();for(let t=0;t<i.length;t++){if(!i[t].hasOwnProperty(this.actualXAxisItem))continue;let s=this.xAxisConverter(i[t][this.actualXAxisItem]),o=this.data[0].length;if(o===0||s>this.data[0][o-1]){for(let l=0;l<this.data.length;l++)this.data[l].push(null);this.set_data_at_index(this.data[0].length-1,s,i[t])}else{let l=N.bs(this.data[0],s,this.bs_comparator);if(l>=0){if(!Number.isFinite(s))throw new RangeError(`Invalid x-axis value: ${s}`);for(;l>=0;)s-=1e-5,l=N.bs(this.data[0],s,this.bs_comparator);let a=-l-1;for(let n=0;n<this.data.length;n++)this.data[n].splice(a,0,null);this.set_data_at_index(a,s,i[t])}else{let a=-l-1;for(let n=0;n<this.data.length;n++)this.data[n].splice(a,0,null);this.set_data_at_index(a,s,i[t])}}}if(this.startTime==null&&this.data[0][0]){let t=this.data[0][0]*1e9;this.$emit("started",t)}this.dataChanged=!0},bs_comparator:function(i,t){return i-t},set_data_at_index:function(i,t,s){this.data[0][i]=t;for(const[o,l]of Object.entries(s)){if(o==="time"||o===this.actualXAxisItem)continue;let a=this.indexes[o];if(a){let n=this.data[a];if(l!=null&&l.raw)n[i]=null;else if(typeof l=="string"){if(n[i]=null,!o.includes("__RAW")){for(let r of this.items)if(this.subscriptionKey(r)===o){this.selectedItem=r;break}this.changeItem({valueType:"RAW",reduced:this.selectedItem.reduced,reducedType:this.selectedItem.reducedType})}}else n[i]=l}}},subscriptionKey:function(i){let t=`${i.reduced}__TLM__${i.targetName}__${i.packetName}__${i.itemName}__${i.valueType}`;return(i.reduced==="REDUCED_MINUTE"||i.reduced==="REDUCED_HOUR"||i.reduced==="REDUCED_DAY")&&(t+=`__${i.reducedType}`),t}}},ee={id:"chart",ref:"chart",class:"pa-1"},te=["id"],ie=["id"],se={key:5,ref:"info",class:"u-series"};function le(i,t,s,o,l,a){const n=e.resolveComponent("v-btn"),r=e.resolveComponent("v-spacer"),f=e.resolveComponent("v-toolbar"),d=e.resolveComponent("v-expand-transition"),p=e.resolveComponent("v-card"),v=e.resolveComponent("graph-edit-dialog"),g=e.resolveComponent("v-text-field"),c=e.resolveComponent("v-row"),u=e.resolveComponent("v-textarea"),k=e.resolveComponent("v-dialog"),x=e.resolveComponent("v-list-item-title"),y=e.resolveComponent("v-list-item"),w=e.resolveComponent("v-list"),C=e.resolveComponent("v-menu"),D=e.resolveComponent("graph-edit-item-dialog"),A=e.resolveComponent("v-list-subheader"),V=e.resolveComponent("v-icon"),E=e.resolveComponent("v-tooltip");return e.openBlock(),e.createElementBlock("div",{onClick:t[22]||(t[22]=e.withModifiers(h=>i.$emit("click"),["prevent"]))},[e.createVNode(p,null,{default:e.withCtx(()=>[e.withDirectives(e.createVNode(f,{height:"24",class:e.normalizeClass(["pl-2 pr-2",s.selectedGraphId===s.id?"active":""])},{default:e.withCtx(()=>[e.withDirectives(e.createVNode(n,{class:"mx-2",icon:"mdi-alert",density:"compact",variant:"text","aria-label":"Show Errors",onClick:t[0]||(t[0]=()=>{l.errorDialog=!0})},null,512),[[e.vShow,l.errors.length!==0]]),e.createVNode(n,{icon:"mdi-pencil",variant:"text",density:"compact","data-test":"edit-graph-icon","aria-label":"Edit Graph",onClick:t[1]||(t[1]=()=>{l.editGraph=!0})}),e.createVNode(r),e.createElementVNode("span",null,e.toDisplayString(l.title),1),e.createVNode(r),l.expand?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[a.calcFullSize?(e.openBlock(),e.createBlock(n,{key:0,icon:"mdi-arrow-collapse",variant:"text",density:"compact","data-test":"collapse-all",onClick:a.collapseAll},null,8,["onClick"])):(e.openBlock(),e.createBlock(n,{key:1,icon:"mdi-arrow-expand",variant:"text",density:"compact","data-test":"expand-all",onClick:a.expandAll},null,8,["onClick"])),l.fullWidth?(e.openBlock(),e.createBlock(n,{key:2,icon:"mdi-arrow-collapse-horizontal",variant:"text",density:"compact","data-test":"collapse-width",onClick:a.collapseWidth},null,8,["onClick"])):(e.openBlock(),e.createBlock(n,{key:3,icon:"mdi-arrow-expand-horizontal",variant:"text",density:"compact","data-test":"expand-width",onClick:a.expandWidth},null,8,["onClick"])),l.fullHeight?(e.openBlock(),e.createBlock(n,{key:4,icon:"mdi-arrow-collapse-vertical",variant:"text",density:"compact","data-test":"collapse-height",onClick:a.collapseHeight},null,8,["onClick"])):(e.openBlock(),e.createBlock(n,{key:5,icon:"mdi-arrow-expand-vertical",variant:"text",density:"compact","data-test":"expand-height",onClick:a.expandHeight},null,8,["onClick"]))],64)):e.createCommentVNode("",!0),l.expand?(e.openBlock(),e.createBlock(n,{key:1,icon:"mdi-window-minimize",variant:"text",density:"compact","data-test":"minimize-screen-icon",onClick:a.minMaxTransition},null,8,["onClick"])):(e.openBlock(),e.createBlock(n,{key:2,icon:"mdi-window-maximize",variant:"text",density:"compact","data-test":"maximize-screen-icon",onClick:a.minMaxTransition},null,8,["onClick"])),e.createVNode(n,{icon:"mdi-close-box",variant:"text",density:"compact","data-test":"close-graph-icon",onClick:t[2]||(t[2]=e.withModifiers(h=>i.$emit("close-graph"),["stop"]))})]),_:1},8,["class"]),[[e.vShow,!l.hideToolbarData]]),e.createVNode(d,null,{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",ee,[e.createElementVNode("div",{id:`chart${s.id}`},null,8,te),t[23]||(t[23]=e.createElementVNode("div",{id:"betweenCharts"},null,-1)),e.withDirectives(e.createElementVNode("div",{id:`overview${s.id}`},null,8,ie),[[e.vShow,l.showOverview]])],512),[[e.vShow,l.expand]])]),_:1})]),_:1}),l.editGraph?(e.openBlock(),e.createBlock(v,{key:0,modelValue:l.editGraph,"onUpdate:modelValue":t[3]||(t[3]=h=>l.editGraph=h),"x-axis-item":l.xAxisItem,"onUpdate:xAxisItem":t[4]||(t[4]=h=>l.xAxisItem=h),title:l.title,"legend-position":l.legendPosition,items:l.items,"graph-min-y":l.graphMinY,"graph-max-y":l.graphMaxY,lines:l.lines,colors:l.colors,"start-date-time":l.graphStartDateTime,"end-date-time":l.graphEndDateTime,"time-zone":s.timeZone,"x-axis-item-packet":a.allowableXAxisItemPacket,onRemove:t[5]||(t[5]=h=>a.removeItems([h])),onOk:a.editGraphClose,onCancel:t[6]||(t[6]=h=>l.editGraph=!1)},null,8,["modelValue","x-axis-item","title","legend-position","items","graph-min-y","graph-max-y","lines","colors","start-date-time","end-date-time","time-zone","x-axis-item-packet","onOk"])):e.createCommentVNode("",!0),e.createVNode(k,{modelValue:l.errorDialog,"onUpdate:modelValue":t[8]||(t[8]=h=>l.errorDialog=h),"max-width":"600"},{default:e.withCtx(()=>[e.createVNode(f,{height:"24"},{default:e.withCtx(()=>[e.createVNode(r),t[24]||(t[24]=e.createElementVNode("span",null," Errors ",-1)),e.createVNode(r)]),_:1,__:[24]}),e.createVNode(p,{class:"pa-3"},{default:e.withCtx(()=>[e.createVNode(c,{dense:""},{default:e.withCtx(()=>[e.createVNode(g,{modelValue:l.title,"onUpdate:modelValue":t[7]||(t[7]=h=>l.title=h),readonly:"","hide-details":"",class:"pb-2",label:"Graph Title"},null,8,["modelValue"])]),_:1}),e.createVNode(c,{class:"my-3"},{default:e.withCtx(()=>[e.createVNode(u,{readonly:"",rows:"8",value:a.error},null,8,["value"])]),_:1}),e.createVNode(c,null,{default:e.withCtx(()=>[e.createVNode(n,{block:"",onClick:a.clearErrors},{default:e.withCtx(()=>t[25]||(t[25]=[e.createTextVNode(" Clear ",-1)])),_:1,__:[25]},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),l.editGraphMenu?(e.openBlock(),e.createBlock(C,{key:1,modelValue:l.editGraphMenu,"onUpdate:modelValue":t[10]||(t[10]=h=>l.editGraphMenu=h),target:[l.editGraphMenuX,l.editGraphMenuY],absolute:"","offset-y":""},{default:e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[e.createVNode(y,{onClick:t[9]||(t[9]=h=>l.editGraph=!0)},{default:e.withCtx(()=>[e.createVNode(x,{style:{cursor:"pointer"}},{default:e.withCtx(()=>[e.createTextVNode(" Edit "+e.toDisplayString(l.title),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue","target"])):e.createCommentVNode("",!0),l.editItem?(e.openBlock(),e.createBlock(D,{key:2,modelValue:l.editItem,"onUpdate:modelValue":t[11]||(t[11]=h=>l.editItem=h),colors:l.colors,item:l.selectedItem,onChangeColor:a.changeColor,onChangeLimits:a.changeLimits,onCancel:t[12]||(t[12]=h=>l.editItem=!1),onClose:a.closeEditItem},null,8,["modelValue","colors","item","onChangeColor","onChangeLimits","onClose"])):e.createCommentVNode("",!0),l.itemMenu?(e.openBlock(),e.createBlock(C,{key:3,modelValue:l.itemMenu,"onUpdate:modelValue":t[16]||(t[16]=h=>l.itemMenu=h),target:[l.itemMenuX,l.itemMenuY],absolute:"","offset-y":""},{default:e.withCtx(()=>[e.createVNode(w,{nav:"",density:"compact"},{default:e.withCtx(()=>[e.createVNode(A,null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.selectedItem.targetName)+" "+e.toDisplayString(l.selectedItem.packetName)+" "+e.toDisplayString(l.selectedItem.itemName),1)]),_:1}),e.createVNode(y,{onClick:t[13]||(t[13]=h=>l.editItem=!0)},{prepend:e.withCtx(()=>[e.createVNode(V,{icon:"mdi-pencil"})]),default:e.withCtx(()=>[e.createVNode(x,null,{default:e.withCtx(()=>t[26]||(t[26]=[e.createTextVNode(" Edit ",-1)])),_:1,__:[26]})]),_:1}),e.createVNode(y,{onClick:t[14]||(t[14]=h=>a.clearData([l.selectedItem]))},{prepend:e.withCtx(()=>[e.createVNode(V,{icon:"mdi-eraser"})]),default:e.withCtx(()=>[e.createVNode(x,null,{default:e.withCtx(()=>t[27]||(t[27]=[e.createTextVNode(" Clear ",-1)])),_:1,__:[27]})]),_:1}),e.createVNode(y,{onClick:t[15]||(t[15]=h=>a.removeItems([l.selectedItem]))},{prepend:e.withCtx(()=>[e.createVNode(V,{icon:"mdi-delete"})]),default:e.withCtx(()=>[e.createVNode(x,null,{default:e.withCtx(()=>t[28]||(t[28]=[e.createTextVNode(" Delete ",-1)])),_:1,__:[28]})]),_:1})]),_:1})]),_:1},8,["modelValue","target"])):e.createCommentVNode("",!0),l.legendMenu?(e.openBlock(),e.createBlock(C,{key:4,modelValue:l.legendMenu,"onUpdate:modelValue":t[21]||(t[21]=h=>l.legendMenu=h),target:[l.legendMenuX,l.legendMenuY],absolute:"","offset-y":""},{default:e.withCtx(()=>[e.createVNode(w,null,{default:e.withCtx(()=>[e.createVNode(y,{onClick:t[17]||(t[17]=h=>a.moveLegend("top"))},{default:e.withCtx(()=>[e.createVNode(x,{style:{cursor:"pointer"}},{default:e.withCtx(()=>t[29]||(t[29]=[e.createTextVNode(" Legend Top ",-1)])),_:1,__:[29]})]),_:1}),e.createVNode(y,{onClick:t[18]||(t[18]=h=>a.moveLegend("bottom"))},{default:e.withCtx(()=>[e.createVNode(x,{style:{cursor:"pointer"}},{default:e.withCtx(()=>t[30]||(t[30]=[e.createTextVNode(" Legend Bottom ",-1)])),_:1,__:[30]})]),_:1}),e.createVNode(y,{onClick:t[19]||(t[19]=h=>a.moveLegend("left"))},{default:e.withCtx(()=>[e.createVNode(x,{style:{cursor:"pointer"}},{default:e.withCtx(()=>t[31]||(t[31]=[e.createTextVNode(" Legend Left ",-1)])),_:1,__:[31]})]),_:1}),e.createVNode(y,{onClick:t[20]||(t[20]=h=>a.moveLegend("right"))},{default:e.withCtx(()=>[e.createVNode(x,{style:{cursor:"pointer"}},{default:e.withCtx(()=>t[32]||(t[32]=[e.createTextVNode(" Legend RIght ",-1)])),_:1,__:[32]})]),_:1})]),_:1})]),_:1},8,["modelValue","target"])):e.createCommentVNode("",!0),s.sparkline?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",se,[e.createVNode(E,{text:"Click item to toggle, Right click to edit",location:"top"},{activator:e.withCtx(({props:h})=>[e.createVNode(V,e.normalizeProps(e.guardReactiveProps(h)),{default:e.withCtx(()=>t[33]||(t[33]=[e.createTextVNode(" mdi-information-variant-circle ",-1)])),_:2,__:[33]},1040)]),_:1})],512))])}const ae=I._export_sfc($,[["render",le],["__scopeId","data-v-f2b1570f"]]);exports.Graph=ae;exports.GraphEditDialog=O;exports.GraphEditItemDialog=U;exports.TargetPacketItemChooser=L;
|
|
2
|
+
//# sourceMappingURL=Graph-CWjf71TK.cjs.map
|