@camera.ui/server 2.0.24 → 2.1.1

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.
Files changed (324) hide show
  1. package/dist/interface/assets/{404-CRIhzt2J.js → 404-BLohRivq.js} +1 -1
  2. package/dist/interface/assets/{About-CvY4xvAU.js → About-CY0n3OBB.js} +1 -1
  3. package/dist/interface/assets/Adminpanel-C11HOLZO.js +1 -0
  4. package/dist/interface/assets/Automation-DOefiaJj.js +3 -0
  5. package/dist/interface/assets/{AutomationImport-RNgRv6Uc.js → AutomationImport-DCqF_Kg7.js} +2 -2
  6. package/dist/interface/assets/{AutomationStore-D8plMzVI.js → AutomationStore-Cm9mbUVu.js} +2 -2
  7. package/dist/interface/assets/{AutomationStoreDetail-BO-9XCRn.js → AutomationStoreDetail-C-4llF7V.js} +2 -2
  8. package/dist/interface/assets/Automations-BwlGOItY.js +2 -0
  9. package/dist/interface/assets/Camera-D_DY9F_D.js +2 -0
  10. package/dist/interface/assets/{CameraConsole-BnKiGukm.js → CameraConsole-BYwWyoKF.js} +2 -2
  11. package/dist/interface/assets/{Cameras-BuHNAHpD.js → Cameras-CghEdt7m.js} +2 -2
  12. package/dist/interface/assets/Camview-CienqE_s.js +1 -0
  13. package/dist/interface/assets/{Camview-Cj10uxGy.css → Camview-mLCaY0ld.css} +1 -1
  14. package/dist/interface/assets/Config-DI8pFgr0.js +2 -0
  15. package/dist/interface/assets/{ConfigActionCameraControl-C2qva2mT.js → ConfigActionCameraControl-D3lpO_-w.js} +1 -1
  16. package/dist/interface/assets/{ConfigActionDelay-C02w0yBx.js → ConfigActionDelay-Cv1q6noO.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionHttp-DVf26mYG.js → ConfigActionHttp-D8NUgGZ1.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionImageInput-BTlFV7kK.js → ConfigActionImageInput-DBRsJW_A.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionMqtt-CD9RW5Lq.js → ConfigActionMqtt-B86fFcxQ.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionNotification-CjbIPrEb.js → ConfigActionNotification-BxauFTos.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionNotificationControl-BCdKNvgC.js → ConfigActionNotificationControl-O2D9WWpM.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionOutput-wV9RFDQO.js → ConfigActionOutput-C0ib9PLZ.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionPlugin-DijuNALK.js → ConfigActionPlugin-BjcHk149.js} +1 -1
  24. package/dist/interface/assets/ConfigActionSensor-0tYVSASv.js +1 -0
  25. package/dist/interface/assets/{ConfigActionSnapshot-B79IJLFV.js → ConfigActionSnapshot-BOqdP-It.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionVariable-Do94c7oi.js → ConfigActionVariable-Dq7YjPoV.js} +1 -1
  27. package/dist/interface/assets/{ConfigConditionIfElse-BtbZhnCM.js → ConfigConditionIfElse-CT2cuUYH.js} +1 -1
  28. package/dist/interface/assets/{ConfigConditionSensorState-D1V_FhNU.js → ConfigConditionSensorState-BfUvxUEF.js} +1 -1
  29. package/dist/interface/assets/{ConfigConditionSwitch-C74dDt3R.js → ConfigConditionSwitch-0G3BqEQj.js} +1 -1
  30. package/dist/interface/assets/{ConfigConditionTime-5IrJQgAV.js → ConfigConditionTime-Pbl2smdz.js} +1 -1
  31. package/dist/interface/assets/ConfigSensorValueInput-CuTrBHsT.js +1 -0
  32. package/dist/interface/assets/ConfigTriggerDetection-CiE3Vjp2.js +1 -0
  33. package/dist/interface/assets/ConfigTriggerGeofence-CPn3drQV.js +1 -0
  34. package/dist/interface/assets/{ConfigTriggerManual-t-J-HbqF.js → ConfigTriggerManual-xBaOnpVY.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerMqtt-i57J8-Nq.js → ConfigTriggerMqtt-LJkIASv5.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerSchedule-Dv7wIG3G.js → ConfigTriggerSchedule-BD3Wph3i.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerSensor-Ba2lCSGc.js → ConfigTriggerSensor-CJWLgK9h.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerSystem-BWs3rP_W.js → ConfigTriggerSystem-BUKBqK_H.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerWebhook-CpQakeYG.js → ConfigTriggerWebhook-DTfV1By5.js} +1 -1
  40. package/dist/interface/assets/Console-BCTb_cA5.js +1 -0
  41. package/dist/interface/assets/CuiAutomationRunsDialog-BR7NAzJ4.js +1 -0
  42. package/dist/interface/assets/{CuiBottomSheet-DIg-nl0p.js → CuiBottomSheet-DoljrPAH.js} +1 -1
  43. package/dist/interface/assets/CuiBottomSheet-bbdtyXf2.js +1 -0
  44. package/dist/interface/assets/{CuiCameraPipCard-q3yeptLd.js → CuiCameraPipCard-Dgq8lF_V.js} +1 -1
  45. package/dist/interface/assets/CuiCameraRecordings-DtwHYkGE.js +1 -0
  46. package/dist/interface/assets/{CuiCameraShares-BggG5Ic_.js → CuiCameraShares-MAey7ufK.js} +1 -1
  47. package/dist/interface/assets/CuiCameraTable-B4WVkliT.js +2 -0
  48. package/dist/interface/assets/CuiDataTable-BGleWv6B.css +1 -0
  49. package/dist/interface/assets/CuiDataTable-BmGMKsJm.js +1 -0
  50. package/dist/interface/assets/CuiLightControl-jUzSwiWP.js +1 -0
  51. package/dist/interface/assets/CuiPluginCard-DAmNhiUu.js +2 -0
  52. package/dist/interface/assets/{CuiPluginCard-C9zsmIaC.css → CuiPluginCard-D_6UFFZW.css} +1 -1
  53. package/dist/interface/assets/{CuiPluginCategoryChip-DsEuwQrw.js → CuiPluginCategoryChip-DSPwTxQi.js} +1 -1
  54. package/dist/interface/assets/{CuiPluginOAuthButton-Bbwly_xJ.js → CuiPluginOAuthButton-BCcvYrt8.js} +2 -2
  55. package/dist/interface/assets/{CuiPluginTrustBadge-BC6F9f-3.js → CuiPluginTrustBadge-D6p-Cs5H.js} +1 -1
  56. package/dist/interface/assets/CuiQRCode-Dll6D9H0.js +1 -0
  57. package/dist/interface/assets/CuiRecordingsGrid-CBcFHQrq.js +1 -0
  58. package/dist/interface/assets/CuiSchema-cCkrONzF.js +1 -0
  59. package/dist/interface/assets/{CuiTopNavbarItem-BZawroJz.js → CuiTopNavbarItem-Dj1lpqE0.js} +1 -1
  60. package/dist/interface/assets/Faces-C-99fN6H.js +1 -0
  61. package/dist/interface/assets/{FirstSteps-Dg0Bvjs2.js → FirstSteps-BTcTmqRf.js} +1 -1
  62. package/dist/interface/assets/Instances-Czb39Tkc.js +1 -0
  63. package/dist/interface/assets/{Logs-DSSDjAY-.js → Logs-Cxug_P1Y.js} +2 -2
  64. package/dist/interface/assets/Menu-DVPNefJA.js +1 -0
  65. package/dist/interface/assets/{OAuthDeviceFlow-CKTokRaq.js → OAuthDeviceFlow-CxdoPgV9.js} +1 -1
  66. package/dist/interface/assets/Plugin-BoBgPYYY.js +1 -0
  67. package/dist/interface/assets/{PluginConsole-CcRMneFa.js → PluginConsole-Cb0aYqXf.js} +1 -1
  68. package/dist/interface/assets/PluginDetail-BUKn2x1R.js +2 -0
  69. package/dist/interface/assets/{PluginSchema-CP0JWUSD.js → PluginSchema-Czc6k-Yu.js} +1 -1
  70. package/dist/interface/assets/PluginSearch-CL0-IZD0.js +1 -0
  71. package/dist/interface/assets/{PluginSearch-Bbp8D7BJ.css → PluginSearch-CLjLT9JT.css} +1 -1
  72. package/dist/interface/assets/PluginSearch-RgI-CCYF.js +2 -0
  73. package/dist/interface/assets/Plugins-BihIbjoN.js +1 -0
  74. package/dist/interface/assets/Recordings-BMIf2FlS.js +1 -0
  75. package/dist/interface/assets/SensorEdit-BNQC_Typ.js +1 -0
  76. package/dist/interface/assets/{SensorHistory-BeCbNWJh.js → SensorHistory-CFLrj259.js} +1 -1
  77. package/dist/interface/assets/Sensors-DfE07b1Q.css +1 -0
  78. package/dist/interface/assets/Sensors-Dpwy5UT3.js +2 -0
  79. package/dist/interface/assets/Settings-BTWXZyrk.js +1 -0
  80. package/dist/interface/assets/SettingsAccount-3DkQ3Lxj.js +1 -0
  81. package/dist/interface/assets/SettingsAccount-DwVO8fq2.js +1 -0
  82. package/dist/interface/assets/SettingsAppearance-CFAwBkaK.js +1 -0
  83. package/dist/interface/assets/SettingsAppearance-xKZ26BqD.js +1 -0
  84. package/dist/interface/assets/SettingsBackup-BSyrNc3Z.js +1 -0
  85. package/dist/interface/assets/SettingsList-C077meHM.js +1 -0
  86. package/dist/interface/assets/{SettingsMqtt-DoYFVHoD.js → SettingsMqtt-BReb2PWO.js} +1 -1
  87. package/dist/interface/assets/SettingsNotifications-zfpvJfMb.js +2 -0
  88. package/dist/interface/assets/{SettingsPermissions-D33G-1kM.js → SettingsPermissions-CIv5OeZF.js} +1 -1
  89. package/dist/interface/assets/SettingsRecordings-dSPQF-by.js +1 -0
  90. package/dist/interface/assets/SettingsRemote-D0ZJX5wf.js +1 -0
  91. package/dist/interface/assets/SettingsSystem-BLEcpC-p.js +2 -0
  92. package/dist/interface/assets/{SettingsUsers-2uMPOpyC.js → SettingsUsers-BQQqlcRJ.js} +1 -1
  93. package/dist/interface/assets/Terminal-I3uC-c7V.js +4 -0
  94. package/dist/interface/assets/{VariableInput-Cx9tgiM4.js → VariableInput-Be7j2nen.js} +1 -1
  95. package/dist/interface/assets/{VariableSuggestions-DV_QjTtU.js → VariableSuggestions-Dr5nstx8.js} +1 -1
  96. package/dist/interface/assets/{VersionsHandler-v4hH23M_.js → VersionsHandler-Cb2CN1L7.js} +1 -1
  97. package/dist/interface/assets/{VirtualSensorCreate-DhuGE1Mf.js → VirtualSensorCreate-CA_F6RPb.js} +1 -1
  98. package/dist/interface/assets/{Workers-CzAz4N2_.css → Workers-7hKMBU4w.css} +1 -1
  99. package/dist/interface/assets/Workers-CTqGBl_F.js +2 -0
  100. package/dist/interface/assets/api-B3KZZ8rN.js +2 -0
  101. package/dist/interface/assets/api-BMM5CP59.css +2 -0
  102. package/dist/interface/assets/{api-BKU9IS3U.js → api-BWixZaOV.js} +1 -1
  103. package/dist/interface/assets/{auth-B4latCDR.js → auth-D-G85zNQ.js} +1 -1
  104. package/dist/interface/assets/{automations-BFkAMu3Y.js → automations-CDnI6oDm.js} +1 -1
  105. package/dist/interface/assets/{cameras.schema-BtaT3B32.js → cameras.schema-B6NhSVdK.js} +1 -1
  106. package/dist/interface/assets/chevron-right-DKkuIAth.js +1 -0
  107. package/dist/interface/assets/cloudHandoff-DOVTmlDw.js +1 -0
  108. package/dist/interface/assets/{config-B_lj3Myj.js → config-CuTS8b79.js} +1 -1
  109. package/dist/interface/assets/deployed-code-update-CHr3gyW9.js +1 -0
  110. package/dist/interface/assets/{flowSchema-CyZseAPD.js → flowSchema-CTDMgLvN.js} +1 -1
  111. package/dist/interface/assets/main-DRmCcFpa.js +3 -0
  112. package/dist/interface/assets/{mqtt-CFw_CCq8.js → mqtt-DaqGTQzc.js} +1 -1
  113. package/dist/interface/assets/{notifications-0_glcRlR.js → notifications-Dit0-wMf.js} +1 -1
  114. package/dist/interface/assets/{plugins-ICpmsguj.js → plugins-cZz4VMT0.js} +1 -1
  115. package/dist/interface/assets/round-restart-alt-BZXAnyzF.js +1 -0
  116. package/dist/interface/assets/round-restart-alt-D3sTGG7n.css +1 -0
  117. package/dist/interface/assets/sensors-D6TLuqrM.js +1 -0
  118. package/dist/interface/assets/{server-DbpDC3pc.js → server-CKNXGRUG.js} +1 -1
  119. package/dist/interface/assets/{theme-DlMdsvGC.js → theme-DlzhloFW.js} +1 -1
  120. package/dist/interface/assets/types-BDNk1b9h.js +1 -0
  121. package/dist/interface/assets/{types-CggzoTPX.js → types-DaO4wazK.js} +1 -1
  122. package/dist/interface/assets/{useAppVersion-CCxZnwIP.js → useAppVersion-C9RbfMSY.js} +1 -1
  123. package/dist/interface/assets/useBackupRestore-CXFWCOQy.js +1 -0
  124. package/dist/interface/assets/{useCameraOptions-DVlhUpbE.js → useCameraOptions-Baxr6kPX.js} +1 -1
  125. package/dist/interface/assets/{useElectron-KnqvZz0q.js → useElectron-_5uSFUvf.js} +1 -1
  126. package/dist/interface/assets/{useLogsSocket-CUQwZ6wm.js → useLogsSocket-B6JGfF3p.js} +2 -2
  127. package/dist/interface/assets/{usePermissions-C3D3JcPH.js → usePermissions-qSwLp41H.js} +1 -1
  128. package/dist/interface/assets/{useServerRestart-CqZRPCpR.js → useServerRestart-D8lCTOtI.js} +1 -1
  129. package/dist/interface/assets/{useStreamStatus-CVJFHRLZ.js → useStreamStatus-Dpu6Hkfi.js} +1 -1
  130. package/dist/interface/assets/{useUserOptions-drl3-JUC.js → useUserOptions-CBRlNL95.js} +1 -1
  131. package/dist/interface/assets/{vendor-cameraui-Cgb5z6NJ.js → vendor-cameraui-D2u3KrB1.js} +313 -27
  132. package/dist/interface/assets/vendor-core-BXi0Qi10.js +1 -0
  133. package/dist/interface/assets/{vendor-primevue-CyD8V_Ft.js → vendor-primevue-Bchwc-Ab.js} +85 -371
  134. package/dist/interface/index.html +23 -22
  135. package/dist/interface/sw.js +1 -1
  136. package/dist/server/package.json +6 -6
  137. package/dist/server/requirements.txt +2 -2
  138. package/dist/server/src/_camera_ui_tools/camera_ui_rpc/client.py +3 -0
  139. package/dist/server/src/_camera_ui_tools/camera_ui_rpc/types.py +3 -0
  140. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +14 -28
  141. package/dist/server/src/api/controllers/cameras.controller.d.ts +1 -10
  142. package/dist/server/src/api/controllers/cameras.controller.js +0 -99
  143. package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
  144. package/dist/server/src/api/controllers/plugins.controller.js +30 -4
  145. package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
  146. package/dist/server/src/api/controllers/workers.controller.d.ts +2 -1
  147. package/dist/server/src/api/controllers/workers.controller.js +9 -0
  148. package/dist/server/src/api/controllers/workers.controller.js.map +1 -1
  149. package/dist/server/src/api/database/index.d.ts +0 -1
  150. package/dist/server/src/api/database/index.js +1 -1
  151. package/dist/server/src/api/database/index.js.map +1 -1
  152. package/dist/server/src/api/database/record-schemas.js +1 -1
  153. package/dist/server/src/api/database/record-schemas.js.map +1 -1
  154. package/dist/server/src/api/database/types.d.ts +0 -1
  155. package/dist/server/src/api/index.js +1 -1
  156. package/dist/server/src/api/routes/cameras.routes.js +1 -42
  157. package/dist/server/src/api/routes/cameras.routes.js.map +1 -1
  158. package/dist/server/src/api/routes/workers.routes.js +11 -0
  159. package/dist/server/src/api/routes/workers.routes.js.map +1 -1
  160. package/dist/server/src/api/schemas/cameras.schema.d.ts +32 -18
  161. package/dist/server/src/api/schemas/cameras.schema.js +4 -11
  162. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  163. package/dist/server/src/api/services/cameras.service.d.ts +1 -0
  164. package/dist/server/src/api/services/cameras.service.js +23 -0
  165. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  166. package/dist/server/src/api/services/plugins.service.d.ts +1 -0
  167. package/dist/server/src/api/services/plugins.service.js +18 -0
  168. package/dist/server/src/api/services/plugins.service.js.map +1 -1
  169. package/dist/server/src/api/services/sensors.service.d.ts +1 -0
  170. package/dist/server/src/api/services/sensors.service.js +1 -0
  171. package/dist/server/src/api/services/sensors.service.js.map +1 -1
  172. package/dist/server/src/api/services/server.service.d.ts +2 -0
  173. package/dist/server/src/api/services/server.service.js +16 -2
  174. package/dist/server/src/api/services/server.service.js.map +1 -1
  175. package/dist/server/src/api/types/index.d.ts +33 -15
  176. package/dist/server/src/api/websocket/nsp/events.js +0 -3
  177. package/dist/server/src/api/websocket/nsp/events.js.map +1 -1
  178. package/dist/server/src/camera/controller.d.ts +0 -3
  179. package/dist/server/src/camera/controller.js +0 -18
  180. package/dist/server/src/camera/controller.js.map +1 -1
  181. package/dist/server/src/camera/decoder/detection-coordinator.d.ts +6 -0
  182. package/dist/server/src/camera/decoder/detection-coordinator.js +61 -7
  183. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  184. package/dist/server/src/camera/decoder/detection-pipeline.d.ts +16 -1
  185. package/dist/server/src/camera/decoder/detection-pipeline.js +92 -14
  186. package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
  187. package/dist/server/src/camera/decoder/frame-scaler.d.ts +20 -0
  188. package/dist/server/src/camera/decoder/frame-scaler.js +74 -10
  189. package/dist/server/src/camera/decoder/frame-scaler.js.map +1 -1
  190. package/dist/server/src/camera/decoder/secondary-stage.js +17 -14
  191. package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
  192. package/dist/server/src/camera/decoder/worker.js +2 -2
  193. package/dist/server/src/camera/decoder/worker.js.map +1 -1
  194. package/dist/server/src/camera/sensors/controller.d.ts +1 -10
  195. package/dist/server/src/camera/sensors/controller.js +8 -59
  196. package/dist/server/src/camera/sensors/controller.js.map +1 -1
  197. package/dist/server/src/main.js +2 -97
  198. package/dist/server/src/main.js.map +1 -1
  199. package/dist/server/src/manager/types.d.ts +1 -0
  200. package/dist/server/src/manager/types.js +2 -0
  201. package/dist/server/src/manager/types.js.map +1 -1
  202. package/dist/server/src/mqtt/bridge.d.ts +0 -5
  203. package/dist/server/src/mqtt/bridge.js +2 -5
  204. package/dist/server/src/mqtt/bridge.js.map +1 -1
  205. package/dist/server/src/plugins/plugin.js +3 -1
  206. package/dist/server/src/plugins/plugin.js.map +1 -1
  207. package/dist/server/src/plugins/runtime/base.d.ts +1 -0
  208. package/dist/server/src/plugins/runtime/base.js +19 -0
  209. package/dist/server/src/plugins/runtime/base.js.map +1 -1
  210. package/dist/server/src/plugins/runtime/go/index.js +1 -1
  211. package/dist/server/src/plugins/runtime/go/index.js.map +1 -1
  212. package/dist/server/src/plugins/runtime/node/child.d.ts +1 -0
  213. package/dist/server/src/plugins/runtime/node/child.js +5 -2
  214. package/dist/server/src/plugins/runtime/node/child.js.map +1 -1
  215. package/dist/server/src/plugins/runtime/node/index.d.ts +0 -1
  216. package/dist/server/src/plugins/runtime/node/index.js +1 -20
  217. package/dist/server/src/plugins/runtime/node/index.js.map +1 -1
  218. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +0 -5
  219. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -1
  220. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js +0 -5
  221. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js.map +1 -1
  222. package/dist/server/src/plugins/runtime/python/child.py +62 -5
  223. package/dist/server/src/plugins/runtime/python/index.js +3 -0
  224. package/dist/server/src/plugins/runtime/python/index.js.map +1 -1
  225. package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +0 -7
  226. package/dist/server/src/plugins/runtime/python/proxy/sensor_manager.py +0 -7
  227. package/dist/server/src/plugins/types.d.ts +3 -1
  228. package/dist/server/src/plugins/types.js +2 -0
  229. package/dist/server/src/plugins/types.js.map +1 -1
  230. package/dist/server/src/plugins/worker.d.ts +1 -0
  231. package/dist/server/src/plugins/worker.js +42 -3
  232. package/dist/server/src/plugins/worker.js.map +1 -1
  233. package/dist/server/src/rpc/interfaces/device.d.ts +0 -3
  234. package/dist/server/src/rpc/namespaces.d.ts +0 -7
  235. package/dist/server/src/rpc/namespaces.js +0 -7
  236. package/dist/server/src/rpc/namespaces.js.map +1 -1
  237. package/dist/server/src/rpc/server.js +10 -13
  238. package/dist/server/src/rpc/server.js.map +1 -1
  239. package/dist/server/src/sensors/registry.d.ts +5 -1
  240. package/dist/server/src/sensors/registry.js +53 -25
  241. package/dist/server/src/sensors/registry.js.map +1 -1
  242. package/dist/server/src/utils/engines.d.ts +3 -1
  243. package/dist/server/src/utils/engines.js +11 -0
  244. package/dist/server/src/utils/engines.js.map +1 -1
  245. package/dist/server/src/utils/ipc.d.ts +2 -0
  246. package/dist/server/src/utils/ipc.js +104 -0
  247. package/dist/server/src/utils/ipc.js.map +1 -1
  248. package/dist/server/src/utils/npm/index.d.ts +6 -1
  249. package/dist/server/src/utils/npm/index.js +3 -0
  250. package/dist/server/src/utils/npm/index.js.map +1 -1
  251. package/dist/server/src/utils/plugin-registry/index.d.ts +1 -0
  252. package/dist/server/src/utils/plugin-registry/index.js.map +1 -1
  253. package/dist/server/src/utils/pythonInstaller.d.ts +1 -0
  254. package/dist/server/src/utils/pythonInstaller.js +14 -0
  255. package/dist/server/src/utils/pythonInstaller.js.map +1 -1
  256. package/dist/server/src/workers/agent.d.ts +5 -0
  257. package/dist/server/src/workers/agent.js +49 -1
  258. package/dist/server/src/workers/agent.js.map +1 -1
  259. package/dist/server/src/workers/capabilities/plugin-host.js +8 -0
  260. package/dist/server/src/workers/capabilities/plugin-host.js.map +1 -1
  261. package/dist/server/src/workers/manager.d.ts +1 -0
  262. package/dist/server/src/workers/manager.js +22 -0
  263. package/dist/server/src/workers/manager.js.map +1 -1
  264. package/dist/server/src/workers/types.d.ts +8 -0
  265. package/package.json +6 -6
  266. package/dist/interface/assets/Adminpanel-4ilp8plp.js +0 -1
  267. package/dist/interface/assets/Automation-uaWWTeTZ.js +0 -3
  268. package/dist/interface/assets/Automations-PHMVe6wG.js +0 -2
  269. package/dist/interface/assets/Camera-Akukeq4_.js +0 -2
  270. package/dist/interface/assets/Camview-dF8o0iy2.js +0 -1
  271. package/dist/interface/assets/Config-iq-YI9Vg.js +0 -2
  272. package/dist/interface/assets/ConfigActionSensor-C9q3sRuI.js +0 -1
  273. package/dist/interface/assets/ConfigSensorValueInput-BcbzMf0g.js +0 -1
  274. package/dist/interface/assets/ConfigTriggerDetection-ld9Upgoc.js +0 -1
  275. package/dist/interface/assets/ConfigTriggerGeofence-DbfBc1AM.js +0 -1
  276. package/dist/interface/assets/Console-BTb5Yc32.js +0 -1
  277. package/dist/interface/assets/CuiAutomationRunsDialog-DX0xpNxx.js +0 -1
  278. package/dist/interface/assets/CuiBottomSheet-Bu0PtwX-.js +0 -1
  279. package/dist/interface/assets/CuiCameraRecordings-BWN8gBl4.js +0 -1
  280. package/dist/interface/assets/CuiCameraTable-BCrE4TMJ.js +0 -2
  281. package/dist/interface/assets/CuiDataTable-Dk8LJl5S.js +0 -1
  282. package/dist/interface/assets/CuiDataTable-W68cyoLf.css +0 -1
  283. package/dist/interface/assets/CuiLightControl-CaIl2eCO.js +0 -1
  284. package/dist/interface/assets/CuiList-Cjbxtb1E.js +0 -1
  285. package/dist/interface/assets/CuiPluginCard-cvZkF8Cz.js +0 -2
  286. package/dist/interface/assets/CuiQRCode-DKHFwuhr.js +0 -1
  287. package/dist/interface/assets/CuiRecordingsGrid-DSf7RXci.js +0 -1
  288. package/dist/interface/assets/CuiSchema-Dda4lNPz.js +0 -1
  289. package/dist/interface/assets/Faces-CvQCD53E.js +0 -1
  290. package/dist/interface/assets/Instances-DisNu3zt.js +0 -1
  291. package/dist/interface/assets/Menu-CJ-MMxvd.js +0 -1
  292. package/dist/interface/assets/Plugin-7daLGUVo.js +0 -1
  293. package/dist/interface/assets/PluginDetail-B1-NdurE.js +0 -2
  294. package/dist/interface/assets/PluginSearch-BHN0J_JP.js +0 -2
  295. package/dist/interface/assets/PluginSearch-Cx_lzDqC.js +0 -1
  296. package/dist/interface/assets/Plugins-DnMPdcQF.js +0 -1
  297. package/dist/interface/assets/Recordings-Dxs3srmh.js +0 -1
  298. package/dist/interface/assets/SensorEdit-Dq2nV1Wf.js +0 -1
  299. package/dist/interface/assets/Sensors-BA9P_Ray.css +0 -1
  300. package/dist/interface/assets/Sensors-D9DLdMaD.js +0 -2
  301. package/dist/interface/assets/Settings-DCHoD7r8.js +0 -1
  302. package/dist/interface/assets/SettingsAccount-BrhnlNuF.js +0 -1
  303. package/dist/interface/assets/SettingsAccount-djLxmQ9r.js +0 -1
  304. package/dist/interface/assets/SettingsAppearance-Bq-xM16S.js +0 -1
  305. package/dist/interface/assets/SettingsAppearance-JKbe5xiH.js +0 -1
  306. package/dist/interface/assets/SettingsBackup-CjlVk3hF.js +0 -1
  307. package/dist/interface/assets/SettingsList-C4mMOKJh.js +0 -1
  308. package/dist/interface/assets/SettingsNotifications-Cmr9Bvy0.js +0 -2
  309. package/dist/interface/assets/SettingsRecordings-DYiuW0rA.js +0 -1
  310. package/dist/interface/assets/SettingsRemote-CROA1Oa7.js +0 -1
  311. package/dist/interface/assets/SettingsSystem-rgucO68X.js +0 -2
  312. package/dist/interface/assets/Terminal-BMFWoJ_k.js +0 -4
  313. package/dist/interface/assets/Workers-DyJXudfY.js +0 -2
  314. package/dist/interface/assets/api-3va2gyB0.css +0 -2
  315. package/dist/interface/assets/api-Cc-rMHwl.js +0 -2
  316. package/dist/interface/assets/chevron-right-B4vB0gm4.js +0 -1
  317. package/dist/interface/assets/cloudHandoff-CPrXpD0L.js +0 -1
  318. package/dist/interface/assets/main-C4qjk6s5.js +0 -3
  319. package/dist/interface/assets/round-restart-alt-BhSxsPhN.css +0 -1
  320. package/dist/interface/assets/round-restart-alt-CxUkNgtt.js +0 -1
  321. package/dist/interface/assets/sensors-Bh5GuQ78.js +0 -1
  322. package/dist/interface/assets/types-C1VwkReu.js +0 -1
  323. package/dist/interface/assets/useBackupRestore-DQQc_D6D.js +0 -1
  324. package/dist/interface/assets/vendor-core-BJsSXMFQ.js +0 -1
@@ -382,51 +382,52 @@
382
382
  media="screen and (prefers-color-scheme: dark) and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
383
383
  href="./pwa/apple-splash-portrait-dark-640x1136.png"
384
384
  />
385
- <script type="module" crossorigin src="./assets/main-C4qjk6s5.js"></script>
385
+ <script type="module" crossorigin src="./assets/main-DRmCcFpa.js"></script>
386
386
  <link rel="modulepreload" crossorigin href="./assets/rolldown-runtime-C0FnF6B9.js">
387
387
  <link rel="modulepreload" crossorigin href="./assets/vendor-CSg6_Jfu.js">
388
- <link rel="modulepreload" crossorigin href="./assets/vendor-cameraui-Cgb5z6NJ.js">
389
- <link rel="modulepreload" crossorigin href="./assets/useElectron-KnqvZz0q.js">
388
+ <link rel="modulepreload" crossorigin href="./assets/vendor-cameraui-D2u3KrB1.js">
389
+ <link rel="modulepreload" crossorigin href="./assets/useElectron-_5uSFUvf.js">
390
390
  <link rel="modulepreload" crossorigin href="./assets/vendor-zod-Dbq0fBXY.js">
391
- <link rel="modulepreload" crossorigin href="./assets/types-C1VwkReu.js">
391
+ <link rel="modulepreload" crossorigin href="./assets/types-BDNk1b9h.js">
392
392
  <link rel="modulepreload" crossorigin href="./assets/lightbulb-outline-ccTlGyvW.js">
393
- <link rel="modulepreload" crossorigin href="./assets/vendor-core-BJsSXMFQ.js">
394
- <link rel="modulepreload" crossorigin href="./assets/vendor-primevue-CyD8V_Ft.js">
393
+ <link rel="modulepreload" crossorigin href="./assets/vendor-core-BXi0Qi10.js">
394
+ <link rel="modulepreload" crossorigin href="./assets/vendor-primevue-Bchwc-Ab.js">
395
395
  <link rel="modulepreload" crossorigin href="./assets/vendor-dnd-DQF7Aoap.js">
396
396
  <link rel="modulepreload" crossorigin href="./assets/close-CQoGQHOF.js">
397
397
  <link rel="modulepreload" crossorigin href="./assets/vendor-draggabilly-Cghb3aIb.js">
398
- <link rel="modulepreload" crossorigin href="./assets/api-Cc-rMHwl.js">
399
- <link rel="modulepreload" crossorigin href="./assets/server-DbpDC3pc.js">
400
- <link rel="modulepreload" crossorigin href="./assets/useServerRestart-CqZRPCpR.js">
401
- <link rel="modulepreload" crossorigin href="./assets/useBackupRestore-DQQc_D6D.js">
398
+ <link rel="modulepreload" crossorigin href="./assets/api-B3KZZ8rN.js">
399
+ <link rel="modulepreload" crossorigin href="./assets/server-CKNXGRUG.js">
400
+ <link rel="modulepreload" crossorigin href="./assets/useServerRestart-D8lCTOtI.js">
401
+ <link rel="modulepreload" crossorigin href="./assets/useBackupRestore-CXFWCOQy.js">
402
402
  <link rel="modulepreload" crossorigin href="./assets/chevron-down-CjSTp091.js">
403
403
  <link rel="modulepreload" crossorigin href="./assets/power-VnZM2-0c.js">
404
- <link rel="modulepreload" crossorigin href="./assets/api-BKU9IS3U.js">
405
- <link rel="modulepreload" crossorigin href="./assets/theme-DlMdsvGC.js">
404
+ <link rel="modulepreload" crossorigin href="./assets/api-BWixZaOV.js">
405
+ <link rel="modulepreload" crossorigin href="./assets/theme-DlzhloFW.js">
406
406
  <link rel="modulepreload" crossorigin href="./assets/trash2-BP__fHgN.js">
407
- <link rel="modulepreload" crossorigin href="./assets/notifications-0_glcRlR.js">
407
+ <link rel="modulepreload" crossorigin href="./assets/notifications-Dit0-wMf.js">
408
408
  <link rel="modulepreload" crossorigin href="./assets/microphone-5exHwwyq.js">
409
- <link rel="modulepreload" crossorigin href="./assets/CuiSchema-Dda4lNPz.js">
410
- <link rel="modulepreload" crossorigin href="./assets/plugins-ICpmsguj.js">
411
- <link rel="modulepreload" crossorigin href="./assets/PluginSchema-CP0JWUSD.js">
409
+ <link rel="modulepreload" crossorigin href="./assets/CuiSchema-cCkrONzF.js">
410
+ <link rel="modulepreload" crossorigin href="./assets/plugins-cZz4VMT0.js">
411
+ <link rel="modulepreload" crossorigin href="./assets/sensors-D6TLuqrM.js">
412
+ <link rel="modulepreload" crossorigin href="./assets/PluginSchema-Czc6k-Yu.js">
412
413
  <link rel="modulepreload" crossorigin href="./assets/trash-can-outline-BbZkHoW7.js">
413
414
  <link rel="modulepreload" crossorigin href="./assets/information-outline-BPCsozSU.js">
414
415
  <link rel="modulepreload" crossorigin href="./assets/plus-CGIx-WV8.js">
415
- <link rel="modulepreload" crossorigin href="./assets/cameras.schema-BtaT3B32.js">
416
+ <link rel="modulepreload" crossorigin href="./assets/cameras.schema-B6NhSVdK.js">
416
417
  <link rel="modulepreload" crossorigin href="./assets/cctv-BKVOVZCR.js">
417
418
  <link rel="modulepreload" crossorigin href="./assets/delete-xWUQUP2x.js">
418
- <link rel="modulepreload" crossorigin href="./assets/useStreamStatus-CVJFHRLZ.js">
419
+ <link rel="modulepreload" crossorigin href="./assets/useStreamStatus-Dpu6Hkfi.js">
419
420
  <link rel="modulepreload" crossorigin href="./assets/bell-ring-C470qCAb.js">
420
421
  <link rel="modulepreload" crossorigin href="./assets/home-af3W_y8U.js">
421
422
  <link rel="modulepreload" crossorigin href="./assets/alarm-light-outline-jCTfmz5t.js">
422
- <link rel="modulepreload" crossorigin href="./assets/CuiLightControl-CaIl2eCO.js">
423
+ <link rel="modulepreload" crossorigin href="./assets/CuiLightControl-jUzSwiWP.js">
423
424
  <link rel="modulepreload" crossorigin href="./assets/arrow-right-outline-BY1ggGA1.js">
424
- <link rel="modulepreload" crossorigin href="./assets/CuiDataTable-Dk8LJl5S.js">
425
+ <link rel="modulepreload" crossorigin href="./assets/CuiDataTable-BmGMKsJm.js">
425
426
  <link rel="modulepreload" crossorigin href="./assets/cube-scan-Ccxismvr.js">
426
- <link rel="stylesheet" crossorigin href="./assets/api-3va2gyB0.css">
427
+ <link rel="stylesheet" crossorigin href="./assets/api-BMM5CP59.css">
427
428
  <link rel="stylesheet" crossorigin href="./assets/CuiSchema--yMBD996.css">
428
429
  <link rel="stylesheet" crossorigin href="./assets/CuiLightControl-DFrZm_sv.css">
429
- <link rel="stylesheet" crossorigin href="./assets/CuiDataTable-W68cyoLf.css">
430
+ <link rel="stylesheet" crossorigin href="./assets/CuiDataTable-BGleWv6B.css">
430
431
  <link rel="stylesheet" crossorigin href="./assets/main-aZt-Pooz.css">
431
432
  <link rel="manifest" href="./manifest.webmanifest"></head>
432
433
  <body>
@@ -1 +1 @@
1
- if(!self.define){let s,e={};const l=(l,i)=>(l=new URL(l+".js",i).href,e[l]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()}).then(()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s}));self.define=(i,r)=>{const a=s||("document"in self?document.currentScript.src:"")||location.href;if(e[a])return;let n={};const u=s=>l(s,a),o={module:{uri:a},exports:n,require:u};e[a]=Promise.all(i.map(s=>o[s]||u(s))).then(s=>(r(...s),n))}}define(["./workbox-778a14ff"],function(s){"use strict";s.setCacheNameDetails({prefix:"camera-ui"}),self.addEventListener("message",s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()}),s.clientsClaim(),s.precacheAndRoute([{url:"robots.txt",revision:"f77c87f977e0fcce05a6df46c885a129"},{url:"og-share.png",revision:"0ca1dd15e2498de1d1423fe6134db452"},{url:"index.html",revision:"ec59285a31b366f28a725be6c36e3021"},{url:"pwa/pwa-96x96.png",revision:"4b6e0a468b365c03904122fa15394e9e"},{url:"pwa/pwa-88x88.png",revision:"3a846d3c7fc8f1fff7f68bbdc4c7ace3"},{url:"pwa/pwa-72x72.png",revision:"725df23728f46846d52df805bf8c8d49"},{url:"pwa/pwa-64x64.png",revision:"47b54ca9f30a7f31cc01057b524136cd"},{url:"pwa/pwa-50x50.png",revision:"cf45f3da900491a0d6c3a0e14bc266ce"},{url:"pwa/pwa-48x48.png",revision:"64024afa06dfb1cef0bdf334c974638e"},{url:"pwa/pwa-36x36.png",revision:"0f71716675fc2aadc7c626276f3fbe84"},{url:"pwa/pwa-300x300.png",revision:"7f79d74e34aedef57c98a1c9c156ba6b"},{url:"pwa/pwa-24x24.png",revision:"7ff01bafee85576e0fa4031236d86a40"},{url:"pwa/pwa-192x192.png",revision:"7c901e9320ceb5d8b2600a78f43c7e57"},{url:"pwa/pwa-180x180.png",revision:"225b42752632e2866c4f8fe4ab2f62ee"},{url:"pwa/pwa-167x167.png",revision:"5d40691f4730d994d3c41deee8f85069"},{url:"pwa/pwa-152x152.png",revision:"e5643254c6ba42265ed3fde32aa8c761"},{url:"pwa/pwa-144x144.png",revision:"410fd64d91409651a78e919aaaeddc6f"},{url:"pwa/pwa-120x120.png",revision:"175a8b2a87b2cf94e565bdc25c02fce5"},{url:"pwa/pwa-1024x1024.png",revision:"1ed367ae76416e79fd0bdd6ee70666bc"},{url:"pwa/maskable-icon-620x300.png",revision:"b4954ceadf0d6f2095c45f8cc8240337"},{url:"pwa/maskable-icon-512x512.png",revision:"e716feaa60f08d95d0909e1c85bf1f98"},{url:"pwa/maskable-icon-1240x600.png",revision:"f3188c7d8e5038f28068c7a3632dbe4b"},{url:"pwa/logo.svg",revision:"1aa262f4a37293a91083eea10794d2ca"},{url:"pwa/favicon-64.ico",revision:"6a697d7662ab5ee246918cdc7c412343"},{url:"pwa/favicon-48.ico",revision:"d0a27003af457cb85651c84c60c87ef0"},{url:"pwa/favicon-32.ico",revision:"6e711cbf0b53afe4a7d0057780fa42b9"},{url:"pwa/favicon-16.ico",revision:"163ae861c5ab9f68ed21324c19dfe35d"},{url:"pwa/apple-touch-icon-180x180.png",revision:"91aec7b3a553812fbd3cd72adb17fcc4"},{url:"pwa/apple-splash-portrait-light-828x1792.png",revision:"8deb1063185df6a2d3089a9fa33f6ad1"},{url:"pwa/apple-splash-portrait-light-750x1334.png",revision:"191c785b1e7b47ac1b1d6bc2a84bde85"},{url:"pwa/apple-splash-portrait-light-640x1136.png",revision:"588e312fd0851d5767972a1efc33e6a3"},{url:"pwa/apple-splash-portrait-light-2048x2732.png",revision:"cf9c75c2e56f8d3af7d914a00ce30286"},{url:"pwa/apple-splash-portrait-light-1668x2388.png",revision:"5db134deca3d2e8a1ae2d8e67c77c420"},{url:"pwa/apple-splash-portrait-light-1668x2224.png",revision:"a1b5adab2a71d0fa646e7b0e9a4fcb71"},{url:"pwa/apple-splash-portrait-light-1620x2160.png",revision:"41bdc2c492d374bf8c6b6875e2beb9f1"},{url:"pwa/apple-splash-portrait-light-1536x2048.png",revision:"42716fc23cfa58d3f154fea1875eb3f5"},{url:"pwa/apple-splash-portrait-light-1290x2796.png",revision:"d57711837cf7e3801a9e8126b1695aaa"},{url:"pwa/apple-splash-portrait-light-1284x2778.png",revision:"461b13cf0d9c293ca220700bb4148afa"},{url:"pwa/apple-splash-portrait-light-1242x2688.png",revision:"2b320f74bc7da7bf0d1be699183416c3"},{url:"pwa/apple-splash-portrait-light-1242x2208.png",revision:"8fd1367cac03e5798973cfa4e0dec5b0"},{url:"pwa/apple-splash-portrait-light-1179x2556.png",revision:"8d1fc622bdb48dda2461e4f47a49249a"},{url:"pwa/apple-splash-portrait-light-1170x2532.png",revision:"58d656b4de9b32a09fc2ea1028116dfb"},{url:"pwa/apple-splash-portrait-light-1125x2436.png",revision:"1a02e33add13bccc9f407efcfd2cf890"},{url:"pwa/apple-splash-portrait-dark-828x1792.png",revision:"543d10f74f6f098e49ba989899182dee"},{url:"pwa/apple-splash-portrait-dark-750x1334.png",revision:"54f99ba556f7cc149eb03fe6207d411d"},{url:"pwa/apple-splash-portrait-dark-640x1136.png",revision:"b901a6f04ef976aa81573ec0f3c8f32b"},{url:"pwa/apple-splash-portrait-dark-2048x2732.png",revision:"60acb5fbde5bb76a368238c5e079c717"},{url:"pwa/apple-splash-portrait-dark-1668x2388.png",revision:"fb7fb372580598abf8a1d8eb7305462a"},{url:"pwa/apple-splash-portrait-dark-1668x2224.png",revision:"1e7b39c9f5fdca7ddf23c1248f7628bf"},{url:"pwa/apple-splash-portrait-dark-1620x2160.png",revision:"1a9f84fba88d4cd5924cf5a39d541b46"},{url:"pwa/apple-splash-portrait-dark-1536x2048.png",revision:"0b26c0a578f6b13b3df06abecc81fb82"},{url:"pwa/apple-splash-portrait-dark-1290x2796.png",revision:"e7f2a468891736413b1e0622a510fd5a"},{url:"pwa/apple-splash-portrait-dark-1284x2778.png",revision:"d7230994de3c4c6016ac252431031ea7"},{url:"pwa/apple-splash-portrait-dark-1242x2688.png",revision:"c56eb0a4a8b4c7bb850cbfc35dd62bba"},{url:"pwa/apple-splash-portrait-dark-1242x2208.png",revision:"1b7f03eaab3cf8af8aa6057fd97278d8"},{url:"pwa/apple-splash-portrait-dark-1179x2556.png",revision:"8eac224083023d0d21374d9f9087bab5"},{url:"pwa/apple-splash-portrait-dark-1170x2532.png",revision:"476ac5131289040d8d88803c18dc20bb"},{url:"pwa/apple-splash-portrait-dark-1125x2436.png",revision:"53ddd8644a89bfc79c8d1bfbaa51527b"},{url:"pwa/apple-splash-landscape-light-2796x1290.png",revision:"a46e458259177e134ad383d133b29774"},{url:"pwa/apple-splash-landscape-light-2778x1284.png",revision:"95d2479cf715c2ea0104fd5f55fa62b3"},{url:"pwa/apple-splash-landscape-light-2732x2048.png",revision:"0e5ec355113efe5ce253583209a64bb8"},{url:"pwa/apple-splash-landscape-light-2688x1242.png",revision:"3757f5338eb50c9f6fb8ad0d72597465"},{url:"pwa/apple-splash-landscape-light-2556x1179.png",revision:"3f0efc9e8de850ae5d3a72a158d39055"},{url:"pwa/apple-splash-landscape-light-2532x1170.png",revision:"b9e11e5a3435cf159f240b5f6da5dc76"},{url:"pwa/apple-splash-landscape-light-2436x1125.png",revision:"459b9c158b3a52222787d00a276baa21"},{url:"pwa/apple-splash-landscape-light-2388x1668.png",revision:"3733608412963cb747e32b2790013523"},{url:"pwa/apple-splash-landscape-light-2224x1668.png",revision:"ecf0efece27d70815f7401f7f3e40a24"},{url:"pwa/apple-splash-landscape-light-2208x1242.png",revision:"653857094b0c183908571fea1aed7b2f"},{url:"pwa/apple-splash-landscape-light-2160x1620.png",revision:"31ac689a78386cf844e33f10fd5d2029"},{url:"pwa/apple-splash-landscape-light-2048x1536.png",revision:"1b27b72b070b260eceeaab092a82663d"},{url:"pwa/apple-splash-landscape-light-1792x828.png",revision:"c6e29d789061fc48eb9f3a54cb1950be"},{url:"pwa/apple-splash-landscape-light-1334x750.png",revision:"f513cdc13ffaf0c2a82bb207e2a9a397"},{url:"pwa/apple-splash-landscape-light-1136x640.png",revision:"c9b4c38f0a267051c0c83cc92c0f5767"},{url:"pwa/apple-splash-landscape-dark-2796x1290.png",revision:"22b9597a28c081730e3430e467b4e36d"},{url:"pwa/apple-splash-landscape-dark-2778x1284.png",revision:"19d1e7a02d9edd3354c61b7c54ea9c1e"},{url:"pwa/apple-splash-landscape-dark-2732x2048.png",revision:"dc9fbb966dfc3350466279749c2946d7"},{url:"pwa/apple-splash-landscape-dark-2688x1242.png",revision:"dcd13ed9567fa4d98867f5c97cc89695"},{url:"pwa/apple-splash-landscape-dark-2556x1179.png",revision:"02e2914d36b2aaf6da02799414a23738"},{url:"pwa/apple-splash-landscape-dark-2532x1170.png",revision:"b89d280148f1bcb816c6364c37daefb6"},{url:"pwa/apple-splash-landscape-dark-2436x1125.png",revision:"85613cc4f5040791ef13e4b2a1ecc840"},{url:"pwa/apple-splash-landscape-dark-2388x1668.png",revision:"e17cbe3b198574eb6fc822c17e22d935"},{url:"pwa/apple-splash-landscape-dark-2224x1668.png",revision:"1144751415d9c1f3d1bc34407b9a9539"},{url:"pwa/apple-splash-landscape-dark-2208x1242.png",revision:"2989b9f038112f8eed3694fa53b86e6a"},{url:"pwa/apple-splash-landscape-dark-2160x1620.png",revision:"ee54046f738fe4346d7febbfaa711244"},{url:"pwa/apple-splash-landscape-dark-2048x1536.png",revision:"70f0181b7e075e3b64e261c4d4e3eada"},{url:"pwa/apple-splash-landscape-dark-1792x828.png",revision:"281d292ea4448638bb250a3fca5f5f44"},{url:"pwa/apple-splash-landscape-dark-1334x750.png",revision:"d82dd37eb2bdf815c1e2ab367134cbbf"},{url:"pwa/apple-splash-landscape-dark-1136x640.png",revision:"c6b193de9bd234c81fdea1d28fe7b88c"},{url:"fonts/InterVariable.woff2",revision:"2bf3d951bf9d6109437ea0874bbf12fb"},{url:"assets/zoom-in-D7BJNotF.js",revision:null},{url:"assets/worker-yaml-crtWQpDN.js",revision:null},{url:"assets/worker-base-ybazWkNy.js",revision:null},{url:"assets/workbox-window.prod.es5-BkFwsIPp.js",revision:null},{url:"assets/webhook-B7YgiSrF.js",revision:null},{url:"assets/web-lrnXIJTz.js",revision:null},{url:"assets/web-XIuTPdFc.js",revision:null},{url:"assets/web-Dymr_MpD.js",revision:null},{url:"assets/web-Ddzvp-fv.js",revision:null},{url:"assets/web-DKBMdBSA.js",revision:null},{url:"assets/web-DARDw7d8.js",revision:null},{url:"assets/web-Ct6Vkr6F.js",revision:null},{url:"assets/web-Cf1yYy4u.js",revision:null},{url:"assets/web-CWBhY0Av.js",revision:null},{url:"assets/web-CHdniv8I.js",revision:null},{url:"assets/web-C8w-z-xR.js",revision:null},{url:"assets/web-BjKL51lK-BQjyRtns.js",revision:null},{url:"assets/web-BcHmbPny.js",revision:null},{url:"assets/web-BX3axHeB.js",revision:null},{url:"assets/vendor-zod-Dbq0fBXY.js",revision:null},{url:"assets/vendor-xterm-BrP-ENHg.css",revision:null},{url:"assets/vendor-xterm-BafMBqaV.js",revision:null},{url:"assets/vendor-vueflow-crUU2mAI.js",revision:null},{url:"assets/vendor-primevue-CyD8V_Ft.js",revision:null},{url:"assets/vendor-markdown-DtOhvyRx.css",revision:null},{url:"assets/vendor-markdown-DWwrEE67.js",revision:null},{url:"assets/vendor-leaflet-vh-t_kPv.css",revision:null},{url:"assets/vendor-leaflet-Bcgd-fkG.js",revision:null},{url:"assets/vendor-gridstack-qw2ro2uB.js",revision:null},{url:"assets/vendor-gridstack-DsRWLz0m.css",revision:null},{url:"assets/vendor-draggabilly-Cghb3aIb.js",revision:null},{url:"assets/vendor-dnd-DQF7Aoap.js",revision:null},{url:"assets/vendor-core-BJsSXMFQ.js",revision:null},{url:"assets/vendor-chart-CoQ9HTE3.js",revision:null},{url:"assets/vendor-capacitor-C-8IYzpJ.js",revision:null},{url:"assets/vendor-cameraui-Cgb5z6NJ.js",revision:null},{url:"assets/vendor-ace-DIEVbs6L.js",revision:null},{url:"assets/vendor-CSg6_Jfu.js",revision:null},{url:"assets/variable-CbNySf4s.js",revision:null},{url:"assets/useUserOptions-drl3-JUC.js",revision:null},{url:"assets/useStreamStatus-CVJFHRLZ.js",revision:null},{url:"assets/useServerRestart-CqZRPCpR.js",revision:null},{url:"assets/usePermissions-C3D3JcPH.js",revision:null},{url:"assets/useLogsSocket-CoA-Nq-_.css",revision:null},{url:"assets/useLogsSocket-CUQwZ6wm.js",revision:null},{url:"assets/useElectron-KnqvZz0q.js",revision:null},{url:"assets/useCardSelection-B3B2qPHO.js",revision:null},{url:"assets/useCameraOptions-DVlhUpbE.js",revision:null},{url:"assets/useBackupRestore-DQQc_D6D.js",revision:null},{url:"assets/useAppVersion-CCxZnwIP.js",revision:null},{url:"assets/upload-CNYrnwuV.js",revision:null},{url:"assets/types-v-mK9gdq.css",revision:null},{url:"assets/types-YwmhC3Ej.js",revision:null},{url:"assets/types-CggzoTPX.js",revision:null},{url:"assets/types-C1VwkReu.js",revision:null},{url:"assets/trash2-BP__fHgN.js",revision:null},{url:"assets/trash-fill-Bgen5QTD.js",revision:null},{url:"assets/trash-can-outline-BbZkHoW7.js",revision:null},{url:"assets/trash-2-B-di2M48.js",revision:null},{url:"assets/theme-DlMdsvGC.js",revision:null},{url:"assets/source-branch-nw9fwXin.js",revision:null},{url:"assets/settings-DY0TJSAM.js",revision:null},{url:"assets/server-DbpDC3pc.js",revision:null},{url:"assets/sensors-Bh5GuQ78.js",revision:null},{url:"assets/search-miJXZGQz.js",revision:null},{url:"assets/round-restart-alt-CxUkNgtt.js",revision:null},{url:"assets/round-restart-alt-BhSxsPhN.css",revision:null},{url:"assets/round-alt-arrow-left-bold-DTrlW4yx.js",revision:null},{url:"assets/rolldown-runtime-C0FnF6B9.js",revision:null},{url:"assets/ring-resize-CodGa6wQ.js",revision:null},{url:"assets/power-VnZM2-0c.js",revision:null},{url:"assets/plus-CrfQUUEC.js",revision:null},{url:"assets/plus-CGIx-WV8.js",revision:null},{url:"assets/plugins-ICpmsguj.js",revision:null},{url:"assets/plugin-D3FpjfF8.js",revision:null},{url:"assets/platformLabels-D-cF6OTP.js",revision:null},{url:"assets/pencil-outline-M9I4mCJO.js",revision:null},{url:"assets/notifications-0_glcRlR.js",revision:null},{url:"assets/nodeDefinitions-CRrkU6zR.js",revision:null},{url:"assets/native-D--k2WN1.js",revision:null},{url:"assets/native-Cpj7zrLp.js",revision:null},{url:"assets/mqtt-CFw_CCq8.js",revision:null},{url:"assets/mode-yaml-CIYL8U3d.js",revision:null},{url:"assets/microphone-5exHwwyq.js",revision:null},{url:"assets/main-aZt-Pooz.css",revision:null},{url:"assets/main-C4qjk6s5.js",revision:null},{url:"assets/logo-DmEiRk0z.png",revision:null},{url:"assets/logo-512-DLKVOU2S.png",revision:null},{url:"assets/logo-256-BCQk9H1-.png",revision:null},{url:"assets/lightbulb-outline-ccTlGyvW.js",revision:null},{url:"assets/information-outline-BPCsozSU.js",revision:null},{url:"assets/home-af3W_y8U.js",revision:null},{url:"assets/history-QBEPNc4X.js",revision:null},{url:"assets/flowSchema-CyZseAPD.js",revision:null},{url:"assets/eye-off-C8kzsdYU.js",revision:null},{url:"assets/esm-xofhyA8r.js",revision:null},{url:"assets/esm-l57LNUWu.js",revision:null},{url:"assets/esm-W4LX4Rpq.js",revision:null},{url:"assets/esm-MvRctfDP.js",revision:null},{url:"assets/esm-Lt6R0RFn.js",revision:null},{url:"assets/esm-KnO8wJyB.js",revision:null},{url:"assets/esm-CwzNi2iW.js",revision:null},{url:"assets/esm-CtKbLoV_.js",revision:null},{url:"assets/esm-Cqqu_mer.js",revision:null},{url:"assets/esm-CJXU9jaA.js",revision:null},{url:"assets/esm-Blvz9SsB.js",revision:null},{url:"assets/esm-BZ3gh7Fj.js",revision:null},{url:"assets/esm-BW9m3dy4.js",revision:null},{url:"assets/esm-B4MXP42m.js",revision:null},{url:"assets/download-PLxvyB7s.js",revision:null},{url:"assets/dist-DVb-CALh.js",revision:null},{url:"assets/delete-xWUQUP2x.js",revision:null},{url:"assets/cube-scan-Ccxismvr.js",revision:null},{url:"assets/copy-yhHCVVOa.js",revision:null},{url:"assets/config-B_lj3Myj.js",revision:null},{url:"assets/cloudHandoff-CPrXpD0L.js",revision:null},{url:"assets/cloud-check-CVx221dJ.js",revision:null},{url:"assets/close-circle-DYhkXsRj.js",revision:null},{url:"assets/close-CQoGQHOF.js",revision:null},{url:"assets/clock-outline-BgcDXoyp.js",revision:null},{url:"assets/chevron-right-B4vB0gm4.js",revision:null},{url:"assets/chevron-down-CjSTp091.js",revision:null},{url:"assets/check-circle-Ce_sbfPZ.js",revision:null},{url:"assets/cctv-BKVOVZCR.js",revision:null},{url:"assets/cameras.schema-BtaT3B32.js",revision:null},{url:"assets/camera-preview-C7GT5VHo.png",revision:null},{url:"assets/bell-ring-C470qCAb.js",revision:null},{url:"assets/back-filled-r7bN5ObT.js",revision:null},{url:"assets/automations-BFkAMu3Y.js",revision:null},{url:"assets/automationBlueprint-D0F9AHk9.js",revision:null},{url:"assets/auth-B4latCDR.js",revision:null},{url:"assets/arrow-right-outline-BY1ggGA1.js",revision:null},{url:"assets/arrow-left-DPtWmM6S.js",revision:null},{url:"assets/api-Cc-rMHwl.js",revision:null},{url:"assets/api-BKU9IS3U.js",revision:null},{url:"assets/api-3va2gyB0.css",revision:null},{url:"assets/alert-outline-DXHNnhoP.js",revision:null},{url:"assets/alert-circle-Cu_kjPlA.js",revision:null},{url:"assets/alarm-light-outline-jCTfmz5t.js",revision:null},{url:"assets/ace.config-BNjBs7Fe.js",revision:null},{url:"assets/ace-BqKKexH4.js",revision:null},{url:"assets/account-C5mHt2Ep.js",revision:null},{url:"assets/Workers-DyJXudfY.js",revision:null},{url:"assets/Workers-CzAz4N2_.css",revision:null},{url:"assets/VirtualSensorCreate-DhuGE1Mf.js",revision:null},{url:"assets/VersionsHandler-v4hH23M_.js",revision:null},{url:"assets/VariableSuggestions-DV_QjTtU.js",revision:null},{url:"assets/VariableInput-Cx9tgiM4.js",revision:null},{url:"assets/Terminal-CrOfQJ-O.css",revision:null},{url:"assets/Terminal-BMFWoJ_k.js",revision:null},{url:"assets/SettingsUsers-2uMPOpyC.js",revision:null},{url:"assets/SettingsSystem-rgucO68X.js",revision:null},{url:"assets/SettingsRemote-DYld6-1F.css",revision:null},{url:"assets/SettingsRemote-CROA1Oa7.js",revision:null},{url:"assets/SettingsRecordings-DYiuW0rA.js",revision:null},{url:"assets/SettingsPermissions-D33G-1kM.js",revision:null},{url:"assets/SettingsNotifications-Cmr9Bvy0.js",revision:null},{url:"assets/SettingsMqtt-DoYFVHoD.js",revision:null},{url:"assets/SettingsList-C4mMOKJh.js",revision:null},{url:"assets/SettingsBackup-CjlVk3hF.js",revision:null},{url:"assets/SettingsBackup-CX0rT0QJ.css",revision:null},{url:"assets/SettingsAppearance-JKbe5xiH.js",revision:null},{url:"assets/SettingsAppearance-Bq-xM16S.js",revision:null},{url:"assets/SettingsAccount-si-6gWl5.css",revision:null},{url:"assets/SettingsAccount-djLxmQ9r.js",revision:null},{url:"assets/SettingsAccount-BrhnlNuF.js",revision:null},{url:"assets/Settings-DmZjKfDi.css",revision:null},{url:"assets/Settings-DCHoD7r8.js",revision:null},{url:"assets/Sensors-D9DLdMaD.js",revision:null},{url:"assets/Sensors-BA9P_Ray.css",revision:null},{url:"assets/SensorHistory-BeCbNWJh.js",revision:null},{url:"assets/SensorEdit-Dq2nV1Wf.js",revision:null},{url:"assets/Recordings-Dxs3srmh.js",revision:null},{url:"assets/Recordings-DO1BPBKp.css",revision:null},{url:"assets/Plugins-DnMPdcQF.js",revision:null},{url:"assets/PluginSearch-Cx_lzDqC.js",revision:null},{url:"assets/PluginSearch-Bbp8D7BJ.css",revision:null},{url:"assets/PluginSearch-BHN0J_JP.js",revision:null},{url:"assets/PluginSchema-CP0JWUSD.js",revision:null},{url:"assets/PluginDetail-BYqji8yN.css",revision:null},{url:"assets/PluginDetail-B1-NdurE.js",revision:null},{url:"assets/PluginConsole-CcRMneFa.js",revision:null},{url:"assets/Plugin-BLqyZrJP.css",revision:null},{url:"assets/Plugin-7daLGUVo.js",revision:null},{url:"assets/OAuthDeviceFlow-CKTokRaq.js",revision:null},{url:"assets/Menu-CJ-MMxvd.js",revision:null},{url:"assets/Logs-DSSDjAY-.js",revision:null},{url:"assets/Instances-DisNu3zt.js",revision:null},{url:"assets/FirstSteps-Dg0Bvjs2.js",revision:null},{url:"assets/Faces-CvQCD53E.js",revision:null},{url:"assets/CuiTopNavbarItem-CJqOqVMt.css",revision:null},{url:"assets/CuiTopNavbarItem-BZawroJz.js",revision:null},{url:"assets/CuiSchema-Dda4lNPz.js",revision:null},{url:"assets/CuiSchema--yMBD996.css",revision:null},{url:"assets/CuiRecordingsGrid-DSf7RXci.js",revision:null},{url:"assets/CuiRecordingsGrid-COHg3ZCT.css",revision:null},{url:"assets/CuiQRCode-DKHFwuhr.js",revision:null},{url:"assets/CuiQRCode-BtErH65J.css",revision:null},{url:"assets/CuiPluginTrustBadge-QHTLaN1n.css",revision:null},{url:"assets/CuiPluginTrustBadge-BC6F9f-3.js",revision:null},{url:"assets/CuiPluginOAuthButton-Bbwly_xJ.js",revision:null},{url:"assets/CuiPluginCategoryChip-DsEuwQrw.js",revision:null},{url:"assets/CuiPluginCategoryChip-CdGrTCxH.css",revision:null},{url:"assets/CuiPluginCard-cvZkF8Cz.js",revision:null},{url:"assets/CuiPluginCard-C9zsmIaC.css",revision:null},{url:"assets/CuiMarkdownContent-Do8-vIl7.js",revision:null},{url:"assets/CuiMarkdownContent-Bjs3wRnq.js",revision:null},{url:"assets/CuiList-Cjbxtb1E.js",revision:null},{url:"assets/CuiLightControl-DFrZm_sv.css",revision:null},{url:"assets/CuiLightControl-CaIl2eCO.js",revision:null},{url:"assets/CuiDataTable-W68cyoLf.css",revision:null},{url:"assets/CuiDataTable-Dk8LJl5S.js",revision:null},{url:"assets/CuiCameraTable-BCrE4TMJ.js",revision:null},{url:"assets/CuiCameraShares-BggG5Ic_.js",revision:null},{url:"assets/CuiCameraRecordings-BWN8gBl4.js",revision:null},{url:"assets/CuiCameraRecordings-BHj7CUE7.css",revision:null},{url:"assets/CuiCameraPipCard-q3yeptLd.js",revision:null},{url:"assets/CuiCameraPipCard-D3o29_wc.css",revision:null},{url:"assets/CuiBottomSheet-DsjZEdig.css",revision:null},{url:"assets/CuiBottomSheet-DIg-nl0p.js",revision:null},{url:"assets/CuiBottomSheet-Bu0PtwX-.js",revision:null},{url:"assets/CuiAutomationRunsDialog-DX0xpNxx.js",revision:null},{url:"assets/Console-BTb5Yc32.js",revision:null},{url:"assets/ConfigTriggerWebhook-CpQakeYG.js",revision:null},{url:"assets/ConfigTriggerSystem-BWs3rP_W.js",revision:null},{url:"assets/ConfigTriggerSensor-Ba2lCSGc.js",revision:null},{url:"assets/ConfigTriggerSchedule-Dv7wIG3G.js",revision:null},{url:"assets/ConfigTriggerMqtt-i57J8-Nq.js",revision:null},{url:"assets/ConfigTriggerManual-t-J-HbqF.js",revision:null},{url:"assets/ConfigTriggerGeofence-DbfBc1AM.js",revision:null},{url:"assets/ConfigTriggerDetection-ld9Upgoc.js",revision:null},{url:"assets/ConfigSensorValueInput-BcbzMf0g.js",revision:null},{url:"assets/ConfigConditionTime-5IrJQgAV.js",revision:null},{url:"assets/ConfigConditionSwitch-C74dDt3R.js",revision:null},{url:"assets/ConfigConditionSensorState-D1V_FhNU.js",revision:null},{url:"assets/ConfigConditionIfElse-BtbZhnCM.js",revision:null},{url:"assets/ConfigActionVariable-Do94c7oi.js",revision:null},{url:"assets/ConfigActionSnapshot-B79IJLFV.js",revision:null},{url:"assets/ConfigActionSensor-C9q3sRuI.js",revision:null},{url:"assets/ConfigActionPlugin-DijuNALK.js",revision:null},{url:"assets/ConfigActionOutput-wV9RFDQO.js",revision:null},{url:"assets/ConfigActionNotificationControl-BCdKNvgC.js",revision:null},{url:"assets/ConfigActionNotification-CjbIPrEb.js",revision:null},{url:"assets/ConfigActionMqtt-CD9RW5Lq.js",revision:null},{url:"assets/ConfigActionImageInput-BTlFV7kK.js",revision:null},{url:"assets/ConfigActionHttp-DVf26mYG.js",revision:null},{url:"assets/ConfigActionDelay-C02w0yBx.js",revision:null},{url:"assets/ConfigActionCameraControl-C2qva2mT.js",revision:null},{url:"assets/Config-iq-YI9Vg.js",revision:null},{url:"assets/Config-JgftUZFe.css",revision:null},{url:"assets/Camview-dF8o0iy2.js",revision:null},{url:"assets/Camview-Cj10uxGy.css",revision:null},{url:"assets/Cameras-DIY20Wlh.css",revision:null},{url:"assets/Cameras-BuHNAHpD.js",revision:null},{url:"assets/CameraConsole-BnKiGukm.js",revision:null},{url:"assets/Camera-yUrhUGmO.css",revision:null},{url:"assets/Camera-Akukeq4_.js",revision:null},{url:"assets/Automations-PHMVe6wG.js",revision:null},{url:"assets/AutomationStoreDetail-BO-9XCRn.js",revision:null},{url:"assets/AutomationStoreDetail--egqUOqn.css",revision:null},{url:"assets/AutomationStore-Q25Okhz8.css",revision:null},{url:"assets/AutomationStore-D8plMzVI.js",revision:null},{url:"assets/AutomationImport-RNgRv6Uc.js",revision:null},{url:"assets/Automation-uaWWTeTZ.js",revision:null},{url:"assets/Automation-BSicfOGF.css",revision:null},{url:"assets/Adminpanel-4ilp8plp.js",revision:null},{url:"assets/About-CvY4xvAU.js",revision:null},{url:"assets/404-CRIhzt2J.js",revision:null},{url:"pwa/maskable-icon-1240x600.png",revision:"f3188c7d8e5038f28068c7a3632dbe4b"},{url:"pwa/maskable-icon-512x512.png",revision:"e716feaa60f08d95d0909e1c85bf1f98"},{url:"pwa/maskable-icon-620x300.png",revision:"b4954ceadf0d6f2095c45f8cc8240337"},{url:"pwa/pwa-1024x1024.png",revision:"1ed367ae76416e79fd0bdd6ee70666bc"},{url:"pwa/pwa-120x120.png",revision:"175a8b2a87b2cf94e565bdc25c02fce5"},{url:"pwa/pwa-144x144.png",revision:"410fd64d91409651a78e919aaaeddc6f"},{url:"pwa/pwa-152x152.png",revision:"e5643254c6ba42265ed3fde32aa8c761"},{url:"pwa/pwa-167x167.png",revision:"5d40691f4730d994d3c41deee8f85069"},{url:"pwa/pwa-180x180.png",revision:"225b42752632e2866c4f8fe4ab2f62ee"},{url:"pwa/pwa-192x192.png",revision:"7c901e9320ceb5d8b2600a78f43c7e57"},{url:"pwa/pwa-24x24.png",revision:"7ff01bafee85576e0fa4031236d86a40"},{url:"pwa/pwa-300x300.png",revision:"7f79d74e34aedef57c98a1c9c156ba6b"},{url:"pwa/pwa-36x36.png",revision:"0f71716675fc2aadc7c626276f3fbe84"},{url:"pwa/pwa-48x48.png",revision:"64024afa06dfb1cef0bdf334c974638e"},{url:"pwa/pwa-50x50.png",revision:"cf45f3da900491a0d6c3a0e14bc266ce"},{url:"pwa/pwa-64x64.png",revision:"47b54ca9f30a7f31cc01057b524136cd"},{url:"pwa/pwa-72x72.png",revision:"725df23728f46846d52df805bf8c8d49"},{url:"pwa/pwa-88x88.png",revision:"3a846d3c7fc8f1fff7f68bbdc4c7ace3"},{url:"pwa/pwa-96x96.png",revision:"4b6e0a468b365c03904122fa15394e9e"},{url:"manifest.webmanifest",revision:"ed2b67044c80f7c0362cd73cde2f96c5"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"),{allowlist:[/^(?!\/api)/],denylist:[/[?&]session=/]}))});
1
+ if(!self.define){let s,e={};const l=(l,i)=>(l=new URL(l+".js",i).href,e[l]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()}).then(()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s}));self.define=(i,r)=>{const a=s||("document"in self?document.currentScript.src:"")||location.href;if(e[a])return;let n={};const u=s=>l(s,a),o={module:{uri:a},exports:n,require:u};e[a]=Promise.all(i.map(s=>o[s]||u(s))).then(s=>(r(...s),n))}}define(["./workbox-778a14ff"],function(s){"use strict";s.setCacheNameDetails({prefix:"camera-ui"}),self.addEventListener("message",s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()}),s.clientsClaim(),s.precacheAndRoute([{url:"robots.txt",revision:"f77c87f977e0fcce05a6df46c885a129"},{url:"og-share.png",revision:"0ca1dd15e2498de1d1423fe6134db452"},{url:"index.html",revision:"0f84510d097ed21beed80df6590136fe"},{url:"pwa/pwa-96x96.png",revision:"4b6e0a468b365c03904122fa15394e9e"},{url:"pwa/pwa-88x88.png",revision:"3a846d3c7fc8f1fff7f68bbdc4c7ace3"},{url:"pwa/pwa-72x72.png",revision:"725df23728f46846d52df805bf8c8d49"},{url:"pwa/pwa-64x64.png",revision:"47b54ca9f30a7f31cc01057b524136cd"},{url:"pwa/pwa-50x50.png",revision:"cf45f3da900491a0d6c3a0e14bc266ce"},{url:"pwa/pwa-48x48.png",revision:"64024afa06dfb1cef0bdf334c974638e"},{url:"pwa/pwa-36x36.png",revision:"0f71716675fc2aadc7c626276f3fbe84"},{url:"pwa/pwa-300x300.png",revision:"7f79d74e34aedef57c98a1c9c156ba6b"},{url:"pwa/pwa-24x24.png",revision:"7ff01bafee85576e0fa4031236d86a40"},{url:"pwa/pwa-192x192.png",revision:"7c901e9320ceb5d8b2600a78f43c7e57"},{url:"pwa/pwa-180x180.png",revision:"225b42752632e2866c4f8fe4ab2f62ee"},{url:"pwa/pwa-167x167.png",revision:"5d40691f4730d994d3c41deee8f85069"},{url:"pwa/pwa-152x152.png",revision:"e5643254c6ba42265ed3fde32aa8c761"},{url:"pwa/pwa-144x144.png",revision:"410fd64d91409651a78e919aaaeddc6f"},{url:"pwa/pwa-120x120.png",revision:"175a8b2a87b2cf94e565bdc25c02fce5"},{url:"pwa/pwa-1024x1024.png",revision:"1ed367ae76416e79fd0bdd6ee70666bc"},{url:"pwa/maskable-icon-620x300.png",revision:"b4954ceadf0d6f2095c45f8cc8240337"},{url:"pwa/maskable-icon-512x512.png",revision:"e716feaa60f08d95d0909e1c85bf1f98"},{url:"pwa/maskable-icon-1240x600.png",revision:"f3188c7d8e5038f28068c7a3632dbe4b"},{url:"pwa/logo.svg",revision:"1aa262f4a37293a91083eea10794d2ca"},{url:"pwa/favicon-64.ico",revision:"6a697d7662ab5ee246918cdc7c412343"},{url:"pwa/favicon-48.ico",revision:"d0a27003af457cb85651c84c60c87ef0"},{url:"pwa/favicon-32.ico",revision:"6e711cbf0b53afe4a7d0057780fa42b9"},{url:"pwa/favicon-16.ico",revision:"163ae861c5ab9f68ed21324c19dfe35d"},{url:"pwa/apple-touch-icon-180x180.png",revision:"91aec7b3a553812fbd3cd72adb17fcc4"},{url:"pwa/apple-splash-portrait-light-828x1792.png",revision:"8deb1063185df6a2d3089a9fa33f6ad1"},{url:"pwa/apple-splash-portrait-light-750x1334.png",revision:"191c785b1e7b47ac1b1d6bc2a84bde85"},{url:"pwa/apple-splash-portrait-light-640x1136.png",revision:"588e312fd0851d5767972a1efc33e6a3"},{url:"pwa/apple-splash-portrait-light-2048x2732.png",revision:"cf9c75c2e56f8d3af7d914a00ce30286"},{url:"pwa/apple-splash-portrait-light-1668x2388.png",revision:"5db134deca3d2e8a1ae2d8e67c77c420"},{url:"pwa/apple-splash-portrait-light-1668x2224.png",revision:"a1b5adab2a71d0fa646e7b0e9a4fcb71"},{url:"pwa/apple-splash-portrait-light-1620x2160.png",revision:"41bdc2c492d374bf8c6b6875e2beb9f1"},{url:"pwa/apple-splash-portrait-light-1536x2048.png",revision:"42716fc23cfa58d3f154fea1875eb3f5"},{url:"pwa/apple-splash-portrait-light-1290x2796.png",revision:"d57711837cf7e3801a9e8126b1695aaa"},{url:"pwa/apple-splash-portrait-light-1284x2778.png",revision:"461b13cf0d9c293ca220700bb4148afa"},{url:"pwa/apple-splash-portrait-light-1242x2688.png",revision:"2b320f74bc7da7bf0d1be699183416c3"},{url:"pwa/apple-splash-portrait-light-1242x2208.png",revision:"8fd1367cac03e5798973cfa4e0dec5b0"},{url:"pwa/apple-splash-portrait-light-1179x2556.png",revision:"8d1fc622bdb48dda2461e4f47a49249a"},{url:"pwa/apple-splash-portrait-light-1170x2532.png",revision:"58d656b4de9b32a09fc2ea1028116dfb"},{url:"pwa/apple-splash-portrait-light-1125x2436.png",revision:"1a02e33add13bccc9f407efcfd2cf890"},{url:"pwa/apple-splash-portrait-dark-828x1792.png",revision:"543d10f74f6f098e49ba989899182dee"},{url:"pwa/apple-splash-portrait-dark-750x1334.png",revision:"54f99ba556f7cc149eb03fe6207d411d"},{url:"pwa/apple-splash-portrait-dark-640x1136.png",revision:"b901a6f04ef976aa81573ec0f3c8f32b"},{url:"pwa/apple-splash-portrait-dark-2048x2732.png",revision:"60acb5fbde5bb76a368238c5e079c717"},{url:"pwa/apple-splash-portrait-dark-1668x2388.png",revision:"fb7fb372580598abf8a1d8eb7305462a"},{url:"pwa/apple-splash-portrait-dark-1668x2224.png",revision:"1e7b39c9f5fdca7ddf23c1248f7628bf"},{url:"pwa/apple-splash-portrait-dark-1620x2160.png",revision:"1a9f84fba88d4cd5924cf5a39d541b46"},{url:"pwa/apple-splash-portrait-dark-1536x2048.png",revision:"0b26c0a578f6b13b3df06abecc81fb82"},{url:"pwa/apple-splash-portrait-dark-1290x2796.png",revision:"e7f2a468891736413b1e0622a510fd5a"},{url:"pwa/apple-splash-portrait-dark-1284x2778.png",revision:"d7230994de3c4c6016ac252431031ea7"},{url:"pwa/apple-splash-portrait-dark-1242x2688.png",revision:"c56eb0a4a8b4c7bb850cbfc35dd62bba"},{url:"pwa/apple-splash-portrait-dark-1242x2208.png",revision:"1b7f03eaab3cf8af8aa6057fd97278d8"},{url:"pwa/apple-splash-portrait-dark-1179x2556.png",revision:"8eac224083023d0d21374d9f9087bab5"},{url:"pwa/apple-splash-portrait-dark-1170x2532.png",revision:"476ac5131289040d8d88803c18dc20bb"},{url:"pwa/apple-splash-portrait-dark-1125x2436.png",revision:"53ddd8644a89bfc79c8d1bfbaa51527b"},{url:"pwa/apple-splash-landscape-light-2796x1290.png",revision:"a46e458259177e134ad383d133b29774"},{url:"pwa/apple-splash-landscape-light-2778x1284.png",revision:"95d2479cf715c2ea0104fd5f55fa62b3"},{url:"pwa/apple-splash-landscape-light-2732x2048.png",revision:"0e5ec355113efe5ce253583209a64bb8"},{url:"pwa/apple-splash-landscape-light-2688x1242.png",revision:"3757f5338eb50c9f6fb8ad0d72597465"},{url:"pwa/apple-splash-landscape-light-2556x1179.png",revision:"3f0efc9e8de850ae5d3a72a158d39055"},{url:"pwa/apple-splash-landscape-light-2532x1170.png",revision:"b9e11e5a3435cf159f240b5f6da5dc76"},{url:"pwa/apple-splash-landscape-light-2436x1125.png",revision:"459b9c158b3a52222787d00a276baa21"},{url:"pwa/apple-splash-landscape-light-2388x1668.png",revision:"3733608412963cb747e32b2790013523"},{url:"pwa/apple-splash-landscape-light-2224x1668.png",revision:"ecf0efece27d70815f7401f7f3e40a24"},{url:"pwa/apple-splash-landscape-light-2208x1242.png",revision:"653857094b0c183908571fea1aed7b2f"},{url:"pwa/apple-splash-landscape-light-2160x1620.png",revision:"31ac689a78386cf844e33f10fd5d2029"},{url:"pwa/apple-splash-landscape-light-2048x1536.png",revision:"1b27b72b070b260eceeaab092a82663d"},{url:"pwa/apple-splash-landscape-light-1792x828.png",revision:"c6e29d789061fc48eb9f3a54cb1950be"},{url:"pwa/apple-splash-landscape-light-1334x750.png",revision:"f513cdc13ffaf0c2a82bb207e2a9a397"},{url:"pwa/apple-splash-landscape-light-1136x640.png",revision:"c9b4c38f0a267051c0c83cc92c0f5767"},{url:"pwa/apple-splash-landscape-dark-2796x1290.png",revision:"22b9597a28c081730e3430e467b4e36d"},{url:"pwa/apple-splash-landscape-dark-2778x1284.png",revision:"19d1e7a02d9edd3354c61b7c54ea9c1e"},{url:"pwa/apple-splash-landscape-dark-2732x2048.png",revision:"dc9fbb966dfc3350466279749c2946d7"},{url:"pwa/apple-splash-landscape-dark-2688x1242.png",revision:"dcd13ed9567fa4d98867f5c97cc89695"},{url:"pwa/apple-splash-landscape-dark-2556x1179.png",revision:"02e2914d36b2aaf6da02799414a23738"},{url:"pwa/apple-splash-landscape-dark-2532x1170.png",revision:"b89d280148f1bcb816c6364c37daefb6"},{url:"pwa/apple-splash-landscape-dark-2436x1125.png",revision:"85613cc4f5040791ef13e4b2a1ecc840"},{url:"pwa/apple-splash-landscape-dark-2388x1668.png",revision:"e17cbe3b198574eb6fc822c17e22d935"},{url:"pwa/apple-splash-landscape-dark-2224x1668.png",revision:"1144751415d9c1f3d1bc34407b9a9539"},{url:"pwa/apple-splash-landscape-dark-2208x1242.png",revision:"2989b9f038112f8eed3694fa53b86e6a"},{url:"pwa/apple-splash-landscape-dark-2160x1620.png",revision:"ee54046f738fe4346d7febbfaa711244"},{url:"pwa/apple-splash-landscape-dark-2048x1536.png",revision:"70f0181b7e075e3b64e261c4d4e3eada"},{url:"pwa/apple-splash-landscape-dark-1792x828.png",revision:"281d292ea4448638bb250a3fca5f5f44"},{url:"pwa/apple-splash-landscape-dark-1334x750.png",revision:"d82dd37eb2bdf815c1e2ab367134cbbf"},{url:"pwa/apple-splash-landscape-dark-1136x640.png",revision:"c6b193de9bd234c81fdea1d28fe7b88c"},{url:"fonts/InterVariable.woff2",revision:"2bf3d951bf9d6109437ea0874bbf12fb"},{url:"assets/zoom-in-D7BJNotF.js",revision:null},{url:"assets/worker-yaml-crtWQpDN.js",revision:null},{url:"assets/worker-base-ybazWkNy.js",revision:null},{url:"assets/workbox-window.prod.es5-BkFwsIPp.js",revision:null},{url:"assets/webhook-B7YgiSrF.js",revision:null},{url:"assets/web-lrnXIJTz.js",revision:null},{url:"assets/web-XIuTPdFc.js",revision:null},{url:"assets/web-Dymr_MpD.js",revision:null},{url:"assets/web-Ddzvp-fv.js",revision:null},{url:"assets/web-DKBMdBSA.js",revision:null},{url:"assets/web-DARDw7d8.js",revision:null},{url:"assets/web-Ct6Vkr6F.js",revision:null},{url:"assets/web-Cf1yYy4u.js",revision:null},{url:"assets/web-CWBhY0Av.js",revision:null},{url:"assets/web-CHdniv8I.js",revision:null},{url:"assets/web-C8w-z-xR.js",revision:null},{url:"assets/web-BjKL51lK-BQjyRtns.js",revision:null},{url:"assets/web-BcHmbPny.js",revision:null},{url:"assets/web-BX3axHeB.js",revision:null},{url:"assets/vendor-zod-Dbq0fBXY.js",revision:null},{url:"assets/vendor-xterm-BrP-ENHg.css",revision:null},{url:"assets/vendor-xterm-BafMBqaV.js",revision:null},{url:"assets/vendor-vueflow-crUU2mAI.js",revision:null},{url:"assets/vendor-primevue-Bchwc-Ab.js",revision:null},{url:"assets/vendor-markdown-DtOhvyRx.css",revision:null},{url:"assets/vendor-markdown-DWwrEE67.js",revision:null},{url:"assets/vendor-leaflet-vh-t_kPv.css",revision:null},{url:"assets/vendor-leaflet-Bcgd-fkG.js",revision:null},{url:"assets/vendor-gridstack-qw2ro2uB.js",revision:null},{url:"assets/vendor-gridstack-DsRWLz0m.css",revision:null},{url:"assets/vendor-draggabilly-Cghb3aIb.js",revision:null},{url:"assets/vendor-dnd-DQF7Aoap.js",revision:null},{url:"assets/vendor-core-BXi0Qi10.js",revision:null},{url:"assets/vendor-chart-CoQ9HTE3.js",revision:null},{url:"assets/vendor-capacitor-C-8IYzpJ.js",revision:null},{url:"assets/vendor-cameraui-D2u3KrB1.js",revision:null},{url:"assets/vendor-ace-DIEVbs6L.js",revision:null},{url:"assets/vendor-CSg6_Jfu.js",revision:null},{url:"assets/variable-CbNySf4s.js",revision:null},{url:"assets/useUserOptions-CBRlNL95.js",revision:null},{url:"assets/useStreamStatus-Dpu6Hkfi.js",revision:null},{url:"assets/useServerRestart-D8lCTOtI.js",revision:null},{url:"assets/usePermissions-qSwLp41H.js",revision:null},{url:"assets/useLogsSocket-CoA-Nq-_.css",revision:null},{url:"assets/useLogsSocket-B6JGfF3p.js",revision:null},{url:"assets/useElectron-_5uSFUvf.js",revision:null},{url:"assets/useCardSelection-B3B2qPHO.js",revision:null},{url:"assets/useCameraOptions-Baxr6kPX.js",revision:null},{url:"assets/useBackupRestore-CXFWCOQy.js",revision:null},{url:"assets/useAppVersion-C9RbfMSY.js",revision:null},{url:"assets/upload-CNYrnwuV.js",revision:null},{url:"assets/types-v-mK9gdq.css",revision:null},{url:"assets/types-YwmhC3Ej.js",revision:null},{url:"assets/types-DaO4wazK.js",revision:null},{url:"assets/types-BDNk1b9h.js",revision:null},{url:"assets/trash2-BP__fHgN.js",revision:null},{url:"assets/trash-fill-Bgen5QTD.js",revision:null},{url:"assets/trash-can-outline-BbZkHoW7.js",revision:null},{url:"assets/trash-2-B-di2M48.js",revision:null},{url:"assets/theme-DlzhloFW.js",revision:null},{url:"assets/source-branch-nw9fwXin.js",revision:null},{url:"assets/settings-DY0TJSAM.js",revision:null},{url:"assets/server-CKNXGRUG.js",revision:null},{url:"assets/sensors-D6TLuqrM.js",revision:null},{url:"assets/search-miJXZGQz.js",revision:null},{url:"assets/round-restart-alt-D3sTGG7n.css",revision:null},{url:"assets/round-restart-alt-BZXAnyzF.js",revision:null},{url:"assets/round-alt-arrow-left-bold-DTrlW4yx.js",revision:null},{url:"assets/rolldown-runtime-C0FnF6B9.js",revision:null},{url:"assets/ring-resize-CodGa6wQ.js",revision:null},{url:"assets/power-VnZM2-0c.js",revision:null},{url:"assets/plus-CrfQUUEC.js",revision:null},{url:"assets/plus-CGIx-WV8.js",revision:null},{url:"assets/plugins-cZz4VMT0.js",revision:null},{url:"assets/plugin-D3FpjfF8.js",revision:null},{url:"assets/platformLabels-D-cF6OTP.js",revision:null},{url:"assets/pencil-outline-M9I4mCJO.js",revision:null},{url:"assets/notifications-Dit0-wMf.js",revision:null},{url:"assets/nodeDefinitions-CRrkU6zR.js",revision:null},{url:"assets/native-D--k2WN1.js",revision:null},{url:"assets/native-Cpj7zrLp.js",revision:null},{url:"assets/mqtt-DaqGTQzc.js",revision:null},{url:"assets/mode-yaml-CIYL8U3d.js",revision:null},{url:"assets/microphone-5exHwwyq.js",revision:null},{url:"assets/main-aZt-Pooz.css",revision:null},{url:"assets/main-DRmCcFpa.js",revision:null},{url:"assets/logo-DmEiRk0z.png",revision:null},{url:"assets/logo-512-DLKVOU2S.png",revision:null},{url:"assets/logo-256-BCQk9H1-.png",revision:null},{url:"assets/lightbulb-outline-ccTlGyvW.js",revision:null},{url:"assets/information-outline-BPCsozSU.js",revision:null},{url:"assets/home-af3W_y8U.js",revision:null},{url:"assets/history-QBEPNc4X.js",revision:null},{url:"assets/flowSchema-CTDMgLvN.js",revision:null},{url:"assets/eye-off-C8kzsdYU.js",revision:null},{url:"assets/esm-xofhyA8r.js",revision:null},{url:"assets/esm-l57LNUWu.js",revision:null},{url:"assets/esm-W4LX4Rpq.js",revision:null},{url:"assets/esm-MvRctfDP.js",revision:null},{url:"assets/esm-Lt6R0RFn.js",revision:null},{url:"assets/esm-KnO8wJyB.js",revision:null},{url:"assets/esm-CwzNi2iW.js",revision:null},{url:"assets/esm-CtKbLoV_.js",revision:null},{url:"assets/esm-Cqqu_mer.js",revision:null},{url:"assets/esm-CJXU9jaA.js",revision:null},{url:"assets/esm-Blvz9SsB.js",revision:null},{url:"assets/esm-BZ3gh7Fj.js",revision:null},{url:"assets/esm-BW9m3dy4.js",revision:null},{url:"assets/esm-B4MXP42m.js",revision:null},{url:"assets/download-PLxvyB7s.js",revision:null},{url:"assets/dist-DVb-CALh.js",revision:null},{url:"assets/deployed-code-update-CHr3gyW9.js",revision:null},{url:"assets/delete-xWUQUP2x.js",revision:null},{url:"assets/cube-scan-Ccxismvr.js",revision:null},{url:"assets/copy-yhHCVVOa.js",revision:null},{url:"assets/config-CuTS8b79.js",revision:null},{url:"assets/cloudHandoff-DOVTmlDw.js",revision:null},{url:"assets/cloud-check-CVx221dJ.js",revision:null},{url:"assets/close-circle-DYhkXsRj.js",revision:null},{url:"assets/close-CQoGQHOF.js",revision:null},{url:"assets/clock-outline-BgcDXoyp.js",revision:null},{url:"assets/chevron-right-DKkuIAth.js",revision:null},{url:"assets/chevron-down-CjSTp091.js",revision:null},{url:"assets/check-circle-Ce_sbfPZ.js",revision:null},{url:"assets/cctv-BKVOVZCR.js",revision:null},{url:"assets/cameras.schema-B6NhSVdK.js",revision:null},{url:"assets/camera-preview-C7GT5VHo.png",revision:null},{url:"assets/bell-ring-C470qCAb.js",revision:null},{url:"assets/back-filled-r7bN5ObT.js",revision:null},{url:"assets/automations-CDnI6oDm.js",revision:null},{url:"assets/automationBlueprint-D0F9AHk9.js",revision:null},{url:"assets/auth-D-G85zNQ.js",revision:null},{url:"assets/arrow-right-outline-BY1ggGA1.js",revision:null},{url:"assets/arrow-left-DPtWmM6S.js",revision:null},{url:"assets/api-BWixZaOV.js",revision:null},{url:"assets/api-BMM5CP59.css",revision:null},{url:"assets/api-B3KZZ8rN.js",revision:null},{url:"assets/alert-outline-DXHNnhoP.js",revision:null},{url:"assets/alert-circle-Cu_kjPlA.js",revision:null},{url:"assets/alarm-light-outline-jCTfmz5t.js",revision:null},{url:"assets/ace.config-BNjBs7Fe.js",revision:null},{url:"assets/ace-BqKKexH4.js",revision:null},{url:"assets/account-C5mHt2Ep.js",revision:null},{url:"assets/Workers-CTqGBl_F.js",revision:null},{url:"assets/Workers-7hKMBU4w.css",revision:null},{url:"assets/VirtualSensorCreate-CA_F6RPb.js",revision:null},{url:"assets/VersionsHandler-Cb2CN1L7.js",revision:null},{url:"assets/VariableSuggestions-Dr5nstx8.js",revision:null},{url:"assets/VariableInput-Be7j2nen.js",revision:null},{url:"assets/Terminal-I3uC-c7V.js",revision:null},{url:"assets/Terminal-CrOfQJ-O.css",revision:null},{url:"assets/SettingsUsers-BQQqlcRJ.js",revision:null},{url:"assets/SettingsSystem-BLEcpC-p.js",revision:null},{url:"assets/SettingsRemote-DYld6-1F.css",revision:null},{url:"assets/SettingsRemote-D0ZJX5wf.js",revision:null},{url:"assets/SettingsRecordings-dSPQF-by.js",revision:null},{url:"assets/SettingsPermissions-CIv5OeZF.js",revision:null},{url:"assets/SettingsNotifications-zfpvJfMb.js",revision:null},{url:"assets/SettingsMqtt-BReb2PWO.js",revision:null},{url:"assets/SettingsList-C077meHM.js",revision:null},{url:"assets/SettingsBackup-CX0rT0QJ.css",revision:null},{url:"assets/SettingsBackup-BSyrNc3Z.js",revision:null},{url:"assets/SettingsAppearance-xKZ26BqD.js",revision:null},{url:"assets/SettingsAppearance-CFAwBkaK.js",revision:null},{url:"assets/SettingsAccount-si-6gWl5.css",revision:null},{url:"assets/SettingsAccount-DwVO8fq2.js",revision:null},{url:"assets/SettingsAccount-3DkQ3Lxj.js",revision:null},{url:"assets/Settings-DmZjKfDi.css",revision:null},{url:"assets/Settings-BTWXZyrk.js",revision:null},{url:"assets/Sensors-Dpwy5UT3.js",revision:null},{url:"assets/Sensors-DfE07b1Q.css",revision:null},{url:"assets/SensorHistory-CFLrj259.js",revision:null},{url:"assets/SensorEdit-BNQC_Typ.js",revision:null},{url:"assets/Recordings-DO1BPBKp.css",revision:null},{url:"assets/Recordings-BMIf2FlS.js",revision:null},{url:"assets/Plugins-BihIbjoN.js",revision:null},{url:"assets/PluginSearch-RgI-CCYF.js",revision:null},{url:"assets/PluginSearch-CLjLT9JT.css",revision:null},{url:"assets/PluginSearch-CL0-IZD0.js",revision:null},{url:"assets/PluginSchema-Czc6k-Yu.js",revision:null},{url:"assets/PluginDetail-BYqji8yN.css",revision:null},{url:"assets/PluginDetail-BUKn2x1R.js",revision:null},{url:"assets/PluginConsole-Cb0aYqXf.js",revision:null},{url:"assets/Plugin-BoBgPYYY.js",revision:null},{url:"assets/Plugin-BLqyZrJP.css",revision:null},{url:"assets/OAuthDeviceFlow-CxdoPgV9.js",revision:null},{url:"assets/Menu-DVPNefJA.js",revision:null},{url:"assets/Logs-Cxug_P1Y.js",revision:null},{url:"assets/Instances-Czb39Tkc.js",revision:null},{url:"assets/FirstSteps-BTcTmqRf.js",revision:null},{url:"assets/Faces-C-99fN6H.js",revision:null},{url:"assets/CuiTopNavbarItem-Dj1lpqE0.js",revision:null},{url:"assets/CuiTopNavbarItem-CJqOqVMt.css",revision:null},{url:"assets/CuiSchema-cCkrONzF.js",revision:null},{url:"assets/CuiSchema--yMBD996.css",revision:null},{url:"assets/CuiRecordingsGrid-COHg3ZCT.css",revision:null},{url:"assets/CuiRecordingsGrid-CBcFHQrq.js",revision:null},{url:"assets/CuiQRCode-Dll6D9H0.js",revision:null},{url:"assets/CuiQRCode-BtErH65J.css",revision:null},{url:"assets/CuiPluginTrustBadge-QHTLaN1n.css",revision:null},{url:"assets/CuiPluginTrustBadge-D6p-Cs5H.js",revision:null},{url:"assets/CuiPluginOAuthButton-BCcvYrt8.js",revision:null},{url:"assets/CuiPluginCategoryChip-DSPwTxQi.js",revision:null},{url:"assets/CuiPluginCategoryChip-CdGrTCxH.css",revision:null},{url:"assets/CuiPluginCard-D_6UFFZW.css",revision:null},{url:"assets/CuiPluginCard-DAmNhiUu.js",revision:null},{url:"assets/CuiMarkdownContent-Do8-vIl7.js",revision:null},{url:"assets/CuiMarkdownContent-Bjs3wRnq.js",revision:null},{url:"assets/CuiLightControl-jUzSwiWP.js",revision:null},{url:"assets/CuiLightControl-DFrZm_sv.css",revision:null},{url:"assets/CuiDataTable-BmGMKsJm.js",revision:null},{url:"assets/CuiDataTable-BGleWv6B.css",revision:null},{url:"assets/CuiCameraTable-B4WVkliT.js",revision:null},{url:"assets/CuiCameraShares-MAey7ufK.js",revision:null},{url:"assets/CuiCameraRecordings-DtwHYkGE.js",revision:null},{url:"assets/CuiCameraRecordings-BHj7CUE7.css",revision:null},{url:"assets/CuiCameraPipCard-Dgq8lF_V.js",revision:null},{url:"assets/CuiCameraPipCard-D3o29_wc.css",revision:null},{url:"assets/CuiBottomSheet-bbdtyXf2.js",revision:null},{url:"assets/CuiBottomSheet-DsjZEdig.css",revision:null},{url:"assets/CuiBottomSheet-DoljrPAH.js",revision:null},{url:"assets/CuiAutomationRunsDialog-BR7NAzJ4.js",revision:null},{url:"assets/Console-BCTb_cA5.js",revision:null},{url:"assets/ConfigTriggerWebhook-DTfV1By5.js",revision:null},{url:"assets/ConfigTriggerSystem-BUKBqK_H.js",revision:null},{url:"assets/ConfigTriggerSensor-CJWLgK9h.js",revision:null},{url:"assets/ConfigTriggerSchedule-BD3Wph3i.js",revision:null},{url:"assets/ConfigTriggerMqtt-LJkIASv5.js",revision:null},{url:"assets/ConfigTriggerManual-xBaOnpVY.js",revision:null},{url:"assets/ConfigTriggerGeofence-CPn3drQV.js",revision:null},{url:"assets/ConfigTriggerDetection-CiE3Vjp2.js",revision:null},{url:"assets/ConfigSensorValueInput-CuTrBHsT.js",revision:null},{url:"assets/ConfigConditionTime-Pbl2smdz.js",revision:null},{url:"assets/ConfigConditionSwitch-0G3BqEQj.js",revision:null},{url:"assets/ConfigConditionSensorState-BfUvxUEF.js",revision:null},{url:"assets/ConfigConditionIfElse-CT2cuUYH.js",revision:null},{url:"assets/ConfigActionVariable-Dq7YjPoV.js",revision:null},{url:"assets/ConfigActionSnapshot-BOqdP-It.js",revision:null},{url:"assets/ConfigActionSensor-0tYVSASv.js",revision:null},{url:"assets/ConfigActionPlugin-BjcHk149.js",revision:null},{url:"assets/ConfigActionOutput-C0ib9PLZ.js",revision:null},{url:"assets/ConfigActionNotificationControl-O2D9WWpM.js",revision:null},{url:"assets/ConfigActionNotification-BxauFTos.js",revision:null},{url:"assets/ConfigActionMqtt-B86fFcxQ.js",revision:null},{url:"assets/ConfigActionImageInput-DBRsJW_A.js",revision:null},{url:"assets/ConfigActionHttp-D8NUgGZ1.js",revision:null},{url:"assets/ConfigActionDelay-Cv1q6noO.js",revision:null},{url:"assets/ConfigActionCameraControl-D3lpO_-w.js",revision:null},{url:"assets/Config-JgftUZFe.css",revision:null},{url:"assets/Config-DI8pFgr0.js",revision:null},{url:"assets/Camview-mLCaY0ld.css",revision:null},{url:"assets/Camview-CienqE_s.js",revision:null},{url:"assets/Cameras-DIY20Wlh.css",revision:null},{url:"assets/Cameras-CghEdt7m.js",revision:null},{url:"assets/CameraConsole-BYwWyoKF.js",revision:null},{url:"assets/Camera-yUrhUGmO.css",revision:null},{url:"assets/Camera-D_DY9F_D.js",revision:null},{url:"assets/Automations-BwlGOItY.js",revision:null},{url:"assets/AutomationStoreDetail-C-4llF7V.js",revision:null},{url:"assets/AutomationStoreDetail--egqUOqn.css",revision:null},{url:"assets/AutomationStore-Q25Okhz8.css",revision:null},{url:"assets/AutomationStore-Cm9mbUVu.js",revision:null},{url:"assets/AutomationImport-DCqF_Kg7.js",revision:null},{url:"assets/Automation-DOefiaJj.js",revision:null},{url:"assets/Automation-BSicfOGF.css",revision:null},{url:"assets/Adminpanel-C11HOLZO.js",revision:null},{url:"assets/About-CY0n3OBB.js",revision:null},{url:"assets/404-BLohRivq.js",revision:null},{url:"pwa/maskable-icon-1240x600.png",revision:"f3188c7d8e5038f28068c7a3632dbe4b"},{url:"pwa/maskable-icon-512x512.png",revision:"e716feaa60f08d95d0909e1c85bf1f98"},{url:"pwa/maskable-icon-620x300.png",revision:"b4954ceadf0d6f2095c45f8cc8240337"},{url:"pwa/pwa-1024x1024.png",revision:"1ed367ae76416e79fd0bdd6ee70666bc"},{url:"pwa/pwa-120x120.png",revision:"175a8b2a87b2cf94e565bdc25c02fce5"},{url:"pwa/pwa-144x144.png",revision:"410fd64d91409651a78e919aaaeddc6f"},{url:"pwa/pwa-152x152.png",revision:"e5643254c6ba42265ed3fde32aa8c761"},{url:"pwa/pwa-167x167.png",revision:"5d40691f4730d994d3c41deee8f85069"},{url:"pwa/pwa-180x180.png",revision:"225b42752632e2866c4f8fe4ab2f62ee"},{url:"pwa/pwa-192x192.png",revision:"7c901e9320ceb5d8b2600a78f43c7e57"},{url:"pwa/pwa-24x24.png",revision:"7ff01bafee85576e0fa4031236d86a40"},{url:"pwa/pwa-300x300.png",revision:"7f79d74e34aedef57c98a1c9c156ba6b"},{url:"pwa/pwa-36x36.png",revision:"0f71716675fc2aadc7c626276f3fbe84"},{url:"pwa/pwa-48x48.png",revision:"64024afa06dfb1cef0bdf334c974638e"},{url:"pwa/pwa-50x50.png",revision:"cf45f3da900491a0d6c3a0e14bc266ce"},{url:"pwa/pwa-64x64.png",revision:"47b54ca9f30a7f31cc01057b524136cd"},{url:"pwa/pwa-72x72.png",revision:"725df23728f46846d52df805bf8c8d49"},{url:"pwa/pwa-88x88.png",revision:"3a846d3c7fc8f1fff7f68bbdc4c7ace3"},{url:"pwa/pwa-96x96.png",revision:"4b6e0a468b365c03904122fa15394e9e"},{url:"manifest.webmanifest",revision:"ed2b67044c80f7c0362cd73cde2f96c5"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"),{allowlist:[/^(?!\/api)/],denylist:[/[?&]session=/]}))});
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camera.ui/server",
3
- "version": "2.0.24",
3
+ "version": "2.1.1",
4
4
  "description": "camera.ui server",
5
5
  "author": "seydx (https://github.com/cameraui/camera.ui)",
6
6
  "type": "module",
@@ -38,8 +38,8 @@
38
38
  "@camera.ui/go2rtc": "^1.9.14-cui.26",
39
39
  "@camera.ui/nats": "^2.14.4",
40
40
  "@camera.ui/rpc": "^1.0.10",
41
- "@camera.ui/rust-postprocessor": "~0.0.8",
42
- "@camera.ui/sdk": "~1.2.3",
41
+ "@camera.ui/rust-postprocessor": "~0.0.9",
42
+ "@camera.ui/sdk": "~1.2.4",
43
43
  "@camera.ui/tunnel": "^1.0.4",
44
44
  "@eneris/push-receiver": "^4.3.1",
45
45
  "@fastify/cors": "^11.3.0",
@@ -63,7 +63,7 @@
63
63
  "fastify-type-provider-zod": "7.0.0",
64
64
  "fkill": "^10.0.3",
65
65
  "fs-extra": "^11.4.0",
66
- "js-yaml": "^5.2.2",
66
+ "js-yaml": "^5.2.3",
67
67
  "jsonwebtoken": "^9.0.3",
68
68
  "lmdb": "^3.5.6",
69
69
  "mqtt": "^5.15.2",
@@ -100,14 +100,14 @@
100
100
  "@types/pacote": "^11.1.8",
101
101
  "@types/qrcode": "^1.5.6",
102
102
  "@types/qs": "^6.15.1",
103
- "@types/semver": "^7.7.1",
103
+ "@types/semver": "^7.8.0",
104
104
  "@types/tail": "^2.2.3",
105
105
  "@types/ws": "^8.18.1",
106
106
  "@typescript-eslint/parser": "^8.65.0",
107
107
  "cpy-cli": "^7.0.0",
108
108
  "cross-env": "^10.1.0",
109
109
  "eslint": "9.39.2",
110
- "globals": "^17.8.0",
110
+ "globals": "^17.9.0",
111
111
  "prettier": "^3.9.6",
112
112
  "rimraf": "^6.1.3",
113
113
  "typescript": "5.9.3",
@@ -1,6 +1,6 @@
1
- camera-ui-sdk==1.2.3
1
+ camera-ui-sdk==1.2.4
2
2
  camera-ui-common==1.0.22
3
- camera-ui-rpc==1.0.6
3
+ camera-ui-rpc==1.0.7
4
4
  certifi==2026.7.22
5
5
  deepdiff==9.1.0
6
6
  msgpack==1.2.1
@@ -196,6 +196,9 @@ class RPCClient(RPCClientProtocol):
196
196
  "reconnect_time_wait": int(
197
197
  self.options.get("reconnect_time_wait", 2000) / 1000
198
198
  ), # Convert to seconds
199
+ # nats-py defaults to 2s, which a host name resolving to a dead ::1
200
+ # first burns entirely before the ipv4 fallback is even tried
201
+ "connect_timeout": int(self.options.get("connect_timeout", 10000) / 1000),
199
202
  # "no_echo": True, # Don't echo messages back to the client
200
203
  "pending_size": 6 * 1024 * 1024, # 6MB pending buffer
201
204
  "error_cb": self._make_error_cb(),
@@ -219,6 +219,9 @@ class RPCClientOptions(TypedDict):
219
219
  reconnect_time_wait: NotRequired[int]
220
220
  """Delay between reconnection attempts in milliseconds"""
221
221
 
222
+ connect_timeout: NotRequired[int]
223
+ """Timeout for a single connection attempt in milliseconds"""
224
+
222
225
  tls: NotRequired[dict[str, str]]
223
226
  """TLS configuration with 'cert', 'key', and 'ca' keys"""
224
227
 
@@ -403,18 +403,6 @@ class Sensor(ABC, Generic[TProperties, TStorage, TCapability]):
403
403
  """
404
404
  return None
405
405
 
406
- def on_assigned(self) -> Any:
407
- """Deprecated: renamed to ``on_start``. Stub window: still fired
408
- alongside ``on_start``, remove in the first minor after the
409
- standalone-sensors release."""
410
- return None
411
-
412
- def on_deassigned(self) -> Any:
413
- """Deprecated: renamed to ``on_stop``. Stub window: still fired
414
- alongside ``on_stop``, remove in the first minor after the
415
- standalone-sensors release."""
416
- return None
417
-
418
406
  def toJSON(self) -> SensorJSON:
419
407
  """Serialize this sensor to a JSON-safe dict for RPC transport."""
420
408
  result: SensorJSON = {
@@ -545,23 +533,21 @@ class Sensor(ABC, Generic[TProperties, TStorage, TCapability]):
545
533
  self._storage = storage
546
534
 
547
535
  def _fire_lifecycle(self, active: bool) -> None:
548
- """Invoke the lifecycle hooks and schedule them if an override is async."""
549
- hooks = (self.on_start, self.on_assigned) if active else (self.on_stop, self.on_deassigned)
550
- for hook in hooks:
536
+ """Invoke the lifecycle hook and schedule it if the override is async."""
537
+ try:
538
+ result = self.on_start() if active else self.on_stop()
539
+ except Exception: # noqa: BLE001 - lifecycle errors must not break bookkeeping
540
+ return
541
+ if asyncio.iscoroutine(result):
551
542
  try:
552
- result = hook()
553
- except Exception: # noqa: BLE001 - lifecycle errors must not break bookkeeping
554
- continue
555
- if asyncio.iscoroutine(result):
556
- try:
557
- loop = asyncio.get_running_loop()
558
- except RuntimeError:
559
- # no loop, close so the coroutine isn't logged as "never awaited"
560
- result.close()
561
- continue
562
- task = loop.create_task(result)
563
- # swallow, otherwise "Task exception was never retrieved" warnings
564
- task.add_done_callback(lambda t: t.exception() if not t.cancelled() else None)
543
+ loop = asyncio.get_running_loop()
544
+ except RuntimeError:
545
+ # no loop, close so the coroutine isn't logged as "never awaited"
546
+ result.close()
547
+ return
548
+ task = loop.create_task(result)
549
+ # swallow, otherwise "Task exception was never retrieved" warnings
550
+ task.add_done_callback(lambda t: t.exception() if not t.cancelled() else None)
565
551
 
566
552
  def _setActive(self, active: bool) -> None:
567
553
  if self._active == active:
@@ -1,6 +1,6 @@
1
1
  import type { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify';
2
2
  import type { DBCamera } from '../database/types.js';
3
- import type { AuthLoginRequest, CameraLineInsertPatchRequest, CameraProbeSourceQueryRequest, CameraSensorCommandParamsRequest, CameraSensorCommandRequest, CameraSnapshotQueryRequest, CameraSourceParamsRequest, CameraZoneInsertPatchRequest, CamerasExtensionsParamsRequest, CamerasExtensionsRequest, CamerasInsertRequest, CamerasParamsRequest, CamerasPatchRequest, CamerasPreviewRequest, CamerasSensorStorageParamsRequest, CamerasStreamRequest, PaginationRequest, StoragePatchRequest, StorageSetRequest, StorageSubmitRequest } from '../types/index.js';
3
+ import type { AuthLoginRequest, CameraLineInsertPatchRequest, CameraProbeSourceQueryRequest, CameraSnapshotQueryRequest, CameraSourceParamsRequest, CameraZoneInsertPatchRequest, CamerasExtensionsParamsRequest, CamerasExtensionsRequest, CamerasInsertRequest, CamerasParamsRequest, CamerasPatchRequest, CamerasPreviewRequest, CamerasSensorStorageParamsRequest, CamerasStreamRequest, PaginationRequest, StoragePatchRequest, StorageSetRequest, StorageSubmitRequest } from '../types/index.js';
4
4
  export declare class CamerasController {
5
5
  private app;
6
6
  private api;
@@ -24,15 +24,6 @@ export declare class CamerasController {
24
24
  streamSourceInfoByName(req: FastifyRequest<AuthLoginRequest & CamerasParamsRequest & CameraSourceParamsRequest>, reply: FastifyReply): Promise<FastifyReply>;
25
25
  getSnapshotByName(req: FastifyRequest<AuthLoginRequest & CamerasParamsRequest & CameraSnapshotQueryRequest>, reply: FastifyReply): Promise<FastifyReply>;
26
26
  getRtspUrlsByName(req: FastifyRequest<AuthLoginRequest & CamerasParamsRequest>, reply: FastifyReply): FastifyReply;
27
- /** @deprecated stub window for the pre-standalone HA integration, superseded by /api/sensors, remove in the first minor after the standalone-sensors release */
28
- getSensorsByName(req: FastifyRequest<AuthLoginRequest & CamerasParamsRequest>, reply: FastifyReply): FastifyReply;
29
- /** @deprecated stub window for the pre-standalone HA integration, superseded by /api/sensors, remove in the first minor after the standalone-sensors release */
30
- getRegisteredSensorsByName(req: FastifyRequest<AuthLoginRequest & CamerasParamsRequest>, reply: FastifyReply): FastifyReply;
31
- /**
32
- * @deprecated stub window for the pre-standalone HA integration, superseded by
33
- * POST /api/sensors/:id/command, remove in the first minor after the standalone-sensors release
34
- */
35
- commandSensorByName(req: FastifyRequest<AuthLoginRequest & CameraSensorCommandParamsRequest & CameraSensorCommandRequest>, reply: FastifyReply): Promise<FastifyReply>;
36
27
  insert(req: FastifyRequest<AuthLoginRequest & CamerasInsertRequest>, reply: FastifyReply): Promise<FastifyReply>;
37
28
  preview(req: FastifyRequest<AuthLoginRequest & CamerasPreviewRequest>, reply: FastifyReply): Promise<FastifyReply>;
38
29
  list(_req: FastifyRequest<AuthLoginRequest & PaginationRequest>, reply: FastifyReply): FastifyReply | DBCamera[];
@@ -2,8 +2,6 @@ import { orderBy } from '@camera.ui/common/utils';
2
2
  import { createReadStream, truncate } from 'node:fs';
3
3
  import { Readable } from 'node:stream';
4
4
  import { container } from 'tsyringe';
5
- import { resolveSensorSemantics } from '../../sensors/semantics.js';
6
- import { isWritableSensor } from '../../sensors/types.js';
7
5
  import { createSourceName } from '../../utils/camera.js';
8
6
  import { CamerasService } from '../services/cameras.service.js';
9
7
  import { PluginsService } from '../services/plugins.service.js';
@@ -413,103 +411,6 @@ export class CamerasController {
413
411
  });
414
412
  }
415
413
  }
416
- /** @deprecated stub window for the pre-standalone HA integration, superseded by /api/sensors, remove in the first minor after the standalone-sensors release */
417
- getSensorsByName(req, reply) {
418
- try {
419
- const camera = this.service.findByName(req.params.cameraname) ?? this.service.findById(req.params.cameraname);
420
- const cameraController = this.api.getCamera(camera?._id ?? '');
421
- if (!camera || !cameraController) {
422
- return reply.code(404).send({
423
- statusCode: 404,
424
- message: 'Camera not exists',
425
- });
426
- }
427
- const sensors = cameraController.sensorController.getAllSensors().map((sensor) => ({
428
- id: sensor.id,
429
- // stub window: pre-standalone clients key on globalId/stableId, alias both to the persistent id
430
- globalId: sensor.id,
431
- stableId: sensor.id,
432
- type: sensor.type,
433
- name: sensor.name,
434
- displayName: sensor.displayName,
435
- assignedCameraIds: sensor.data.assignedCameraIds,
436
- exposed: sensor.data.exposed,
437
- properties: sensor.data.properties,
438
- capabilities: sensor.capabilities,
439
- semantics: resolveSensorSemantics(sensor.data),
440
- }));
441
- return reply.code(200).send({ sensors });
442
- }
443
- catch (error) {
444
- return reply.code(500).send({
445
- statusCode: 500,
446
- message: error.message,
447
- });
448
- }
449
- }
450
- /** @deprecated stub window for the pre-standalone HA integration, superseded by /api/sensors, remove in the first minor after the standalone-sensors release */
451
- getRegisteredSensorsByName(req, reply) {
452
- try {
453
- const camera = this.service.findByName(req.params.cameraname) ?? this.service.findById(req.params.cameraname);
454
- const cameraController = this.api.getCamera(camera?._id ?? '');
455
- if (!camera || !cameraController) {
456
- return reply.code(404).send({
457
- statusCode: 404,
458
- message: 'Camera not exists',
459
- });
460
- }
461
- const sensors = cameraController.sensorController.getAllSensors().map((sensor) => ({
462
- type: sensor.type,
463
- pluginId: sensor.pluginId,
464
- requiresFrames: sensor.data.requiresFrames,
465
- }));
466
- return reply.code(200).send({ sensors });
467
- }
468
- catch (error) {
469
- return reply.code(500).send({
470
- statusCode: 500,
471
- message: error.message,
472
- });
473
- }
474
- }
475
- /**
476
- * @deprecated stub window for the pre-standalone HA integration, superseded by
477
- * POST /api/sensors/:id/command, remove in the first minor after the standalone-sensors release
478
- */
479
- async commandSensorByName(req, reply) {
480
- try {
481
- const camera = this.service.findByName(req.params.cameraname) ?? this.service.findById(req.params.cameraname);
482
- const cameraController = this.api.getCamera(camera?._id ?? '');
483
- if (!camera || !cameraController) {
484
- return reply.code(404).send({
485
- statusCode: 404,
486
- message: 'Camera not exists',
487
- });
488
- }
489
- // sensor ids are persistent entity ids now, the route param keeps its old name for the stub window
490
- const sensor = cameraController.sensorController.getAllSensors().find((s) => s.id === req.params.stableId);
491
- if (!sensor) {
492
- return reply.code(404).send({
493
- statusCode: 404,
494
- message: 'Sensor not exists',
495
- });
496
- }
497
- if (!isWritableSensor(sensor.type, sensor.pluginId)) {
498
- return reply.code(400).send({
499
- statusCode: 400,
500
- message: 'Sensor is read-only',
501
- });
502
- }
503
- await sensor.updateValue(req.body.property, req.body.value);
504
- return reply.code(204).send();
505
- }
506
- catch (error) {
507
- return reply.code(500).send({
508
- statusCode: 500,
509
- message: error.message,
510
- });
511
- }
512
- }
513
414
  async insert(req, reply) {
514
415
  try {
515
416
  const camera = this.service.findByConflictingName(req.body.name) ?? this.service.findById(req.body.name);