homebridge-config-ui-x 5.9.1-beta.1 → 5.9.1-beta.10

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 (383) hide show
  1. package/CHANGELOG.md +23 -3
  2. package/TODO-MATTER.md +15 -0
  3. package/dist/app.controller.d.ts +1 -1
  4. package/dist/app.controller.js +14 -12
  5. package/dist/app.controller.js.map +1 -1
  6. package/dist/app.gateway.js +7 -10
  7. package/dist/app.gateway.js.map +1 -1
  8. package/dist/app.module.js +42 -43
  9. package/dist/app.module.js.map +1 -1
  10. package/dist/app.service.js +4 -7
  11. package/dist/app.service.js.map +1 -1
  12. package/dist/bin/base-platform.d.ts +1 -1
  13. package/dist/bin/base-platform.js +11 -17
  14. package/dist/bin/base-platform.js.map +1 -1
  15. package/dist/bin/fork.js +7 -45
  16. package/dist/bin/fork.js.map +1 -1
  17. package/dist/bin/hb-service.js +224 -243
  18. package/dist/bin/hb-service.js.map +1 -1
  19. package/dist/bin/platforms/darwin.d.ts +1 -1
  20. package/dist/bin/platforms/darwin.js +61 -65
  21. package/dist/bin/platforms/darwin.js.map +1 -1
  22. package/dist/bin/platforms/freebsd.d.ts +1 -1
  23. package/dist/bin/platforms/freebsd.js +42 -47
  24. package/dist/bin/platforms/freebsd.js.map +1 -1
  25. package/dist/bin/platforms/linux.d.ts +1 -1
  26. package/dist/bin/platforms/linux.js +127 -132
  27. package/dist/bin/platforms/linux.js.map +1 -1
  28. package/dist/bin/platforms/win32.d.ts +1 -1
  29. package/dist/bin/platforms/win32.js +30 -36
  30. package/dist/bin/platforms/win32.js.map +1 -1
  31. package/dist/bin/standalone.js +15 -53
  32. package/dist/bin/standalone.js.map +1 -1
  33. package/dist/core/auth/auth.controller.d.ts +5 -4
  34. package/dist/core/auth/auth.controller.js +40 -39
  35. package/dist/core/auth/auth.controller.js.map +1 -1
  36. package/dist/core/auth/auth.dto.js +17 -18
  37. package/dist/core/auth/auth.dto.js.map +1 -1
  38. package/dist/core/auth/auth.module.js +28 -31
  39. package/dist/core/auth/auth.module.js.map +1 -1
  40. package/dist/core/auth/auth.service.d.ts +3 -3
  41. package/dist/core/auth/auth.service.js +65 -62
  42. package/dist/core/auth/auth.service.js.map +1 -1
  43. package/dist/core/auth/guards/admin.guard.js +4 -7
  44. package/dist/core/auth/guards/admin.guard.js.map +1 -1
  45. package/dist/core/auth/guards/custom.guard.js +6 -9
  46. package/dist/core/auth/guards/custom.guard.js.map +1 -1
  47. package/dist/core/auth/guards/ws-admin-guard.d.ts +2 -2
  48. package/dist/core/auth/guards/ws-admin-guard.js +13 -11
  49. package/dist/core/auth/guards/ws-admin-guard.js.map +1 -1
  50. package/dist/core/auth/guards/ws.guard.d.ts +2 -2
  51. package/dist/core/auth/guards/ws.guard.js +13 -11
  52. package/dist/core/auth/guards/ws.guard.js.map +1 -1
  53. package/dist/core/auth/jwt.strategy.d.ts +3 -2
  54. package/dist/core/auth/jwt.strategy.js +21 -16
  55. package/dist/core/auth/jwt.strategy.js.map +1 -1
  56. package/dist/core/config/config.interfaces.d.ts +8 -1
  57. package/dist/core/config/config.interfaces.js +1 -2
  58. package/dist/core/config/config.module.js +8 -10
  59. package/dist/core/config/config.module.js.map +1 -1
  60. package/dist/core/config/config.service.d.ts +4 -3
  61. package/dist/core/config/config.service.js +90 -83
  62. package/dist/core/config/config.service.js.map +1 -1
  63. package/dist/core/config/config.startup.d.ts +1 -1
  64. package/dist/core/config/config.startup.js +23 -28
  65. package/dist/core/config/config.startup.js.map +1 -1
  66. package/dist/core/feature-flags/feature-flags.registry.js +2 -5
  67. package/dist/core/feature-flags/feature-flags.registry.js.map +1 -1
  68. package/dist/core/homebridge-ipc/homebridge-ipc.module.js +11 -14
  69. package/dist/core/homebridge-ipc/homebridge-ipc.module.js.map +1 -1
  70. package/dist/core/homebridge-ipc/homebridge-ipc.service.d.ts +4 -4
  71. package/dist/core/homebridge-ipc/homebridge-ipc.service.js +25 -19
  72. package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
  73. package/dist/core/logger/logger.module.js +8 -10
  74. package/dist/core/logger/logger.module.js.map +1 -1
  75. package/dist/core/logger/logger.service.js +13 -23
  76. package/dist/core/logger/logger.service.js.map +1 -1
  77. package/dist/core/node-pty/node-pty.module.js +7 -10
  78. package/dist/core/node-pty/node-pty.module.js.map +1 -1
  79. package/dist/core/node-pty/node-pty.service.js +6 -11
  80. package/dist/core/node-pty/node-pty.service.js.map +1 -1
  81. package/dist/core/node-version.constants.js +4 -11
  82. package/dist/core/node-version.constants.js.map +1 -1
  83. package/dist/core/scheduler/scheduler.module.js +15 -10
  84. package/dist/core/scheduler/scheduler.module.js.map +1 -1
  85. package/dist/core/scheduler/scheduler.service.d.ts +12 -1
  86. package/dist/core/scheduler/scheduler.service.js +101 -13
  87. package/dist/core/scheduler/scheduler.service.js.map +1 -1
  88. package/dist/core/spa/spa-html.service.js +9 -15
  89. package/dist/core/spa/spa-html.service.js.map +1 -1
  90. package/dist/core/spa/spa.filter.d.ts +1 -1
  91. package/dist/core/spa/spa.filter.js +11 -16
  92. package/dist/core/spa/spa.filter.js.map +1 -1
  93. package/dist/core/ssl/ssl-cert-generator.service.js +34 -36
  94. package/dist/core/ssl/ssl-cert-generator.service.js.map +1 -1
  95. package/dist/env-setup.d.ts +1 -0
  96. package/dist/env-setup.js +7 -0
  97. package/dist/env-setup.js.map +1 -0
  98. package/dist/globalDefaults.d.ts +1 -0
  99. package/dist/globalDefaults.js +1 -0
  100. package/dist/index.d.ts +1 -1
  101. package/dist/index.js +16 -19
  102. package/dist/index.js.map +1 -1
  103. package/dist/main.d.ts +5 -3
  104. package/dist/main.js +44 -51
  105. package/dist/main.js.map +1 -1
  106. package/dist/modules/accessories/accessories.controller.d.ts +3 -3
  107. package/dist/modules/accessories/accessories.controller.js +28 -29
  108. package/dist/modules/accessories/accessories.controller.js.map +1 -1
  109. package/dist/modules/accessories/accessories.dto.js +11 -13
  110. package/dist/modules/accessories/accessories.dto.js.map +1 -1
  111. package/dist/modules/accessories/accessories.gateway.d.ts +2 -2
  112. package/dist/modules/accessories/accessories.gateway.js +18 -16
  113. package/dist/modules/accessories/accessories.gateway.js.map +1 -1
  114. package/dist/modules/accessories/accessories.interfaces.d.ts +94 -0
  115. package/dist/modules/accessories/accessories.interfaces.js +2 -0
  116. package/dist/modules/accessories/accessories.interfaces.js.map +1 -0
  117. package/dist/modules/accessories/accessories.module.js +19 -20
  118. package/dist/modules/accessories/accessories.module.js.map +1 -1
  119. package/dist/modules/accessories/accessories.service.d.ts +23 -5
  120. package/dist/modules/accessories/accessories.service.js +316 -51
  121. package/dist/modules/accessories/accessories.service.js.map +1 -1
  122. package/dist/modules/backup/backup.controller.d.ts +4 -4
  123. package/dist/modules/backup/backup.controller.js +68 -67
  124. package/dist/modules/backup/backup.controller.js.map +1 -1
  125. package/dist/modules/backup/backup.gateway.d.ts +4 -4
  126. package/dist/modules/backup/backup.gateway.js +25 -21
  127. package/dist/modules/backup/backup.gateway.js.map +1 -1
  128. package/dist/modules/backup/backup.module.js +22 -25
  129. package/dist/modules/backup/backup.module.js.map +1 -1
  130. package/dist/modules/backup/backup.service.d.ts +5 -5
  131. package/dist/modules/backup/backup.service.js +143 -133
  132. package/dist/modules/backup/backup.service.js.map +1 -1
  133. package/dist/modules/child-bridges/child-bridges.gateway.d.ts +3 -3
  134. package/dist/modules/child-bridges/child-bridges.gateway.js +23 -21
  135. package/dist/modules/child-bridges/child-bridges.gateway.js.map +1 -1
  136. package/dist/modules/child-bridges/child-bridges.interfaces.js +1 -2
  137. package/dist/modules/child-bridges/child-bridges.module.js +19 -22
  138. package/dist/modules/child-bridges/child-bridges.module.js.map +1 -1
  139. package/dist/modules/child-bridges/child-bridges.service.d.ts +3 -3
  140. package/dist/modules/child-bridges/child-bridges.service.js +15 -11
  141. package/dist/modules/child-bridges/child-bridges.service.js.map +1 -1
  142. package/dist/modules/config-editor/config-editor.controller.d.ts +13 -11
  143. package/dist/modules/config-editor/config-editor.controller.js +168 -103
  144. package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
  145. package/dist/modules/config-editor/config-editor.dto.d.ts +6 -0
  146. package/dist/modules/config-editor/config-editor.dto.js +40 -0
  147. package/dist/modules/config-editor/config-editor.dto.js.map +1 -0
  148. package/dist/modules/config-editor/config-editor.module.js +21 -24
  149. package/dist/modules/config-editor/config-editor.module.js.map +1 -1
  150. package/dist/modules/config-editor/config-editor.service.d.ts +11 -8
  151. package/dist/modules/config-editor/config-editor.service.js +123 -66
  152. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  153. package/dist/modules/custom-plugins/custom-plugins.module.js +10 -13
  154. package/dist/modules/custom-plugins/custom-plugins.module.js.map +1 -1
  155. package/dist/modules/custom-plugins/homebridge-deconz/homebridge-deconz.controller.d.ts +2 -2
  156. package/dist/modules/custom-plugins/homebridge-deconz/homebridge-deconz.controller.js +21 -19
  157. package/dist/modules/custom-plugins/homebridge-deconz/homebridge-deconz.controller.js.map +1 -1
  158. package/dist/modules/custom-plugins/homebridge-deconz/homebridge-deconz.module.js +14 -17
  159. package/dist/modules/custom-plugins/homebridge-deconz/homebridge-deconz.module.js.map +1 -1
  160. package/dist/modules/custom-plugins/homebridge-deconz/homebridge-deconz.service.d.ts +2 -2
  161. package/dist/modules/custom-plugins/homebridge-deconz/homebridge-deconz.service.js +18 -15
  162. package/dist/modules/custom-plugins/homebridge-deconz/homebridge-deconz.service.js.map +1 -1
  163. package/dist/modules/custom-plugins/homebridge-hue/homebridge-hue.controller.d.ts +2 -2
  164. package/dist/modules/custom-plugins/homebridge-hue/homebridge-hue.controller.js +21 -19
  165. package/dist/modules/custom-plugins/homebridge-hue/homebridge-hue.controller.js.map +1 -1
  166. package/dist/modules/custom-plugins/homebridge-hue/homebridge-hue.module.js +14 -17
  167. package/dist/modules/custom-plugins/homebridge-hue/homebridge-hue.module.js.map +1 -1
  168. package/dist/modules/custom-plugins/homebridge-hue/homebridge-hue.service.d.ts +2 -2
  169. package/dist/modules/custom-plugins/homebridge-hue/homebridge-hue.service.js +18 -15
  170. package/dist/modules/custom-plugins/homebridge-hue/homebridge-hue.service.js.map +1 -1
  171. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.controller.d.ts +2 -2
  172. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.controller.js +18 -19
  173. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.controller.js.map +1 -1
  174. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.gateway.d.ts +2 -2
  175. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.gateway.js +15 -13
  176. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.gateway.js.map +1 -1
  177. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.module.js +18 -21
  178. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.module.js.map +1 -1
  179. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.d.ts +8 -8
  180. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +47 -41
  181. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
  182. package/dist/modules/log/log.gateway.d.ts +3 -3
  183. package/dist/modules/log/log.gateway.js +15 -13
  184. package/dist/modules/log/log.gateway.js.map +1 -1
  185. package/dist/modules/log/log.interfaces.js +1 -2
  186. package/dist/modules/log/log.module.js +14 -17
  187. package/dist/modules/log/log.module.js.map +1 -1
  188. package/dist/modules/log/log.service.d.ts +5 -5
  189. package/dist/modules/log/log.service.js +47 -43
  190. package/dist/modules/log/log.service.js.map +1 -1
  191. package/dist/modules/platform-tools/docker/docker.controller.d.ts +1 -1
  192. package/dist/modules/platform-tools/docker/docker.controller.js +24 -25
  193. package/dist/modules/platform-tools/docker/docker.controller.js.map +1 -1
  194. package/dist/modules/platform-tools/docker/docker.module.js +14 -17
  195. package/dist/modules/platform-tools/docker/docker.module.js.map +1 -1
  196. package/dist/modules/platform-tools/docker/docker.service.d.ts +2 -2
  197. package/dist/modules/platform-tools/docker/docker.service.js +20 -16
  198. package/dist/modules/platform-tools/docker/docker.service.js.map +1 -1
  199. package/dist/modules/platform-tools/hb-service/hb-service.controller.d.ts +2 -2
  200. package/dist/modules/platform-tools/hb-service/hb-service.controller.js +35 -36
  201. package/dist/modules/platform-tools/hb-service/hb-service.controller.js.map +1 -1
  202. package/dist/modules/platform-tools/hb-service/hb-service.dto.js +20 -19
  203. package/dist/modules/platform-tools/hb-service/hb-service.dto.js.map +1 -1
  204. package/dist/modules/platform-tools/hb-service/hb-service.module.js +14 -17
  205. package/dist/modules/platform-tools/hb-service/hb-service.module.js.map +1 -1
  206. package/dist/modules/platform-tools/hb-service/hb-service.service.d.ts +3 -3
  207. package/dist/modules/platform-tools/hb-service/hb-service.service.js +37 -30
  208. package/dist/modules/platform-tools/hb-service/hb-service.service.js.map +1 -1
  209. package/dist/modules/platform-tools/linux/linux.controller.d.ts +1 -1
  210. package/dist/modules/platform-tools/linux/linux.controller.js +23 -21
  211. package/dist/modules/platform-tools/linux/linux.controller.js.map +1 -1
  212. package/dist/modules/platform-tools/linux/linux.module.js +14 -17
  213. package/dist/modules/platform-tools/linux/linux.module.js.map +1 -1
  214. package/dist/modules/platform-tools/linux/linux.service.d.ts +2 -2
  215. package/dist/modules/platform-tools/linux/linux.service.js +18 -14
  216. package/dist/modules/platform-tools/linux/linux.service.js.map +1 -1
  217. package/dist/modules/platform-tools/platform-tools.module.js +12 -15
  218. package/dist/modules/platform-tools/platform-tools.module.js.map +1 -1
  219. package/dist/modules/platform-tools/terminal/terminal.controller.d.ts +1 -1
  220. package/dist/modules/platform-tools/terminal/terminal.controller.js +15 -13
  221. package/dist/modules/platform-tools/terminal/terminal.controller.js.map +1 -1
  222. package/dist/modules/platform-tools/terminal/terminal.gateway.d.ts +2 -2
  223. package/dist/modules/platform-tools/terminal/terminal.gateway.js +17 -15
  224. package/dist/modules/platform-tools/terminal/terminal.gateway.js.map +1 -1
  225. package/dist/modules/platform-tools/terminal/terminal.interfaces.js +1 -2
  226. package/dist/modules/platform-tools/terminal/terminal.module.js +18 -21
  227. package/dist/modules/platform-tools/terminal/terminal.module.js.map +1 -1
  228. package/dist/modules/platform-tools/terminal/terminal.service.d.ts +7 -7
  229. package/dist/modules/platform-tools/terminal/terminal.service.js +33 -28
  230. package/dist/modules/platform-tools/terminal/terminal.service.js.map +1 -1
  231. package/dist/modules/plugins/plugins.controller.d.ts +12 -7
  232. package/dist/modules/plugins/plugins.controller.js +100 -52
  233. package/dist/modules/plugins/plugins.controller.js.map +1 -1
  234. package/dist/modules/plugins/plugins.dto.js +26 -24
  235. package/dist/modules/plugins/plugins.dto.js.map +1 -1
  236. package/dist/modules/plugins/plugins.gateway.d.ts +5 -5
  237. package/dist/modules/plugins/plugins.gateway.js +38 -34
  238. package/dist/modules/plugins/plugins.gateway.js.map +1 -1
  239. package/dist/modules/plugins/plugins.interfaces.js +1 -2
  240. package/dist/modules/plugins/plugins.module.js +27 -26
  241. package/dist/modules/plugins/plugins.module.js.map +1 -1
  242. package/dist/modules/plugins/plugins.service.d.ts +26 -13
  243. package/dist/modules/plugins/plugins.service.js +365 -203
  244. package/dist/modules/plugins/plugins.service.js.map +1 -1
  245. package/dist/modules/server/server.controller.d.ts +7 -7
  246. package/dist/modules/server/server.controller.js +208 -205
  247. package/dist/modules/server/server.controller.js.map +1 -1
  248. package/dist/modules/server/server.dto.js +13 -16
  249. package/dist/modules/server/server.dto.js.map +1 -1
  250. package/dist/modules/server/server.module.js +23 -26
  251. package/dist/modules/server/server.module.js.map +1 -1
  252. package/dist/modules/server/server.service.d.ts +6 -6
  253. package/dist/modules/server/server.service.js +202 -224
  254. package/dist/modules/server/server.service.js.map +1 -1
  255. package/dist/modules/setup-wizard/setup-wizard.controller.d.ts +3 -3
  256. package/dist/modules/setup-wizard/setup-wizard.controller.js +19 -20
  257. package/dist/modules/setup-wizard/setup-wizard.controller.js.map +1 -1
  258. package/dist/modules/setup-wizard/setup-wizard.gateway.d.ts +4 -4
  259. package/dist/modules/setup-wizard/setup-wizard.gateway.js +25 -21
  260. package/dist/modules/setup-wizard/setup-wizard.gateway.js.map +1 -1
  261. package/dist/modules/setup-wizard/setup-wizard.guard.d.ts +2 -2
  262. package/dist/modules/setup-wizard/setup-wizard.guard.js +11 -9
  263. package/dist/modules/setup-wizard/setup-wizard.guard.js.map +1 -1
  264. package/dist/modules/setup-wizard/setup-wizard.module.js +12 -15
  265. package/dist/modules/setup-wizard/setup-wizard.module.js.map +1 -1
  266. package/dist/modules/status/status.controller.d.ts +5 -5
  267. package/dist/modules/status/status.controller.js +40 -36
  268. package/dist/modules/status/status.controller.js.map +1 -1
  269. package/dist/modules/status/status.gateway.d.ts +11 -11
  270. package/dist/modules/status/status.gateway.js +51 -47
  271. package/dist/modules/status/status.gateway.js.map +1 -1
  272. package/dist/modules/status/status.interfaces.js +2 -5
  273. package/dist/modules/status/status.interfaces.js.map +1 -1
  274. package/dist/modules/status/status.module.js +26 -29
  275. package/dist/modules/status/status.module.js.map +1 -1
  276. package/dist/modules/status/status.service.d.ts +13 -13
  277. package/dist/modules/status/status.service.js +100 -88
  278. package/dist/modules/status/status.service.js.map +1 -1
  279. package/dist/modules/users/users.controller.d.ts +3 -3
  280. package/dist/modules/users/users.controller.js +59 -60
  281. package/dist/modules/users/users.controller.js.map +1 -1
  282. package/dist/modules/users/users.dto.js +51 -45
  283. package/dist/modules/users/users.dto.js.map +1 -1
  284. package/dist/modules/users/users.module.js +14 -17
  285. package/dist/modules/users/users.module.js.map +1 -1
  286. package/dist/self-check.js +25 -25
  287. package/dist/self-check.js.map +1 -1
  288. package/package.json +14 -12
  289. package/public/3rdpartylicenses.txt +26 -26
  290. package/public/{chunk-6KT3BYU6.js → chunk-2UCXG3TD.js} +1 -1
  291. package/public/{chunk-5T4JHJYL.js → chunk-2VYE34OE.js} +1 -1
  292. package/public/{chunk-TOYVIOBH.js → chunk-4AG5CIDJ.js} +1 -1
  293. package/public/{chunk-RMZRXORR.js → chunk-4H57TZAE.js} +1 -1
  294. package/public/{chunk-73TX7DHV.js → chunk-5CCE4FIL.js} +1 -1
  295. package/public/{chunk-2CNQY2E7.js → chunk-5RBSMCFS.js} +1 -1
  296. package/public/{chunk-LZOHFRHN.js → chunk-6O32KEYY.js} +1 -1
  297. package/public/{chunk-EAGKQ5OJ.js → chunk-7K67C3PU.js} +1 -1
  298. package/public/{chunk-732XLY23.js → chunk-7PEOCUE2.js} +3 -3
  299. package/public/{chunk-W3SNJ7TC.js → chunk-7RXQUWCY.js} +1 -1
  300. package/public/{chunk-EVND2DL5.js → chunk-7SZF43OV.js} +1 -1
  301. package/public/chunk-AEYQANK4.js +68 -0
  302. package/public/{chunk-2KEG7SYT.js → chunk-AU2Q4PYM.js} +1 -1
  303. package/public/chunk-AZIULTML.js +1 -0
  304. package/public/chunk-B63E4PTS.js +19 -0
  305. package/public/{chunk-X5AKILHJ.js → chunk-CT6TS63V.js} +1 -1
  306. package/public/{chunk-LWAL5JUG.js → chunk-DGS32J2V.js} +1 -1
  307. package/public/{chunk-D5RKKI2A.js → chunk-DWAKEAKY.js} +1 -1
  308. package/public/chunk-DZVJNQPQ.js +1 -0
  309. package/public/chunk-E26RJWMZ.js +4 -0
  310. package/public/{chunk-7UDDRMZZ.js → chunk-H22EEHWT.js} +1 -1
  311. package/public/{chunk-2FNQEOXF.js → chunk-HZFYCQBZ.js} +1 -1
  312. package/public/{chunk-OS2SEJZU.js → chunk-I24Z7SXB.js} +1 -1
  313. package/public/{chunk-7IYTG6GP.js → chunk-IA43FDJ7.js} +1 -1
  314. package/public/{chunk-WLGXJQPD.js → chunk-IHMVNP7Y.js} +1 -1
  315. package/public/{chunk-TSFGO3MA.js → chunk-IJNJ3FHH.js} +1 -1
  316. package/public/{chunk-ZJJ3EOBP.js → chunk-IM4LXJ36.js} +1 -1
  317. package/public/chunk-J4AYRIB4.js +1 -0
  318. package/public/{chunk-NKNWXFAK.js → chunk-JXJXX7ID.js} +1 -1
  319. package/public/chunk-K73OEMZP.js +1 -0
  320. package/public/chunk-KAZYWBPX.js +1 -0
  321. package/public/chunk-KGXF4YD5.js +1 -0
  322. package/public/chunk-KN2SQNGB.js +1 -0
  323. package/public/chunk-LN3BMCV4.js +1 -0
  324. package/public/{chunk-5ETJWAIW.js → chunk-LOQEG2RD.js} +1 -1
  325. package/public/chunk-M3HVG4RQ.js +1 -0
  326. package/public/{chunk-CYBDQV2B.js → chunk-MNT5ZGV3.js} +1 -1
  327. package/public/{chunk-UF2IM5BE.js → chunk-NTFDKV64.js} +1 -1
  328. package/public/chunk-PF7M52WR.js +1 -0
  329. package/public/chunk-PFWD43QS.js +2 -0
  330. package/public/{chunk-4QXLJX7D.js → chunk-PHND6FV5.js} +1 -1
  331. package/public/chunk-PSYU6RB3.js +1 -0
  332. package/public/{chunk-3E2NZ5JW.js → chunk-Q7T3F2Y7.js} +1 -1
  333. package/public/chunk-QKKTMQUU.js +1 -0
  334. package/public/chunk-QT6XPFQS.js +1 -0
  335. package/public/{chunk-3IZSIVEA.js → chunk-R2WI5YTX.js} +1 -1
  336. package/public/chunk-R44T3ZI7.js +50 -0
  337. package/public/{chunk-YNONXMOG.js → chunk-R6KWC4OQ.js} +1 -1
  338. package/public/{chunk-SY4VNLXW.js → chunk-RDOYYGV5.js} +1 -1
  339. package/public/chunk-RERUZJD4.js +5 -0
  340. package/public/chunk-S5IG2PNV.js +1 -0
  341. package/public/{chunk-AI6E5JVH.js → chunk-SVVZYE76.js} +1 -1
  342. package/public/{chunk-325LPX6W.js → chunk-T3SFHTRG.js} +1 -1
  343. package/public/{chunk-ADW6BF5G.js → chunk-TJ6P7UCH.js} +1 -1
  344. package/public/{chunk-ASKB5DLO.js → chunk-U3NNN7U4.js} +1 -1
  345. package/public/{chunk-BLT2YCDN.js → chunk-UBLR5WZR.js} +1 -1
  346. package/public/{chunk-YH6MRXGX.js → chunk-UZHUIPNT.js} +1 -1
  347. package/public/{chunk-BTBGWLKK.js → chunk-VNXIDOPC.js} +1 -1
  348. package/public/{chunk-WWSLIQVD.js → chunk-W6VJMRO6.js} +1 -1
  349. package/public/{chunk-3IJXQMYZ.js → chunk-WFVVY4KI.js} +1 -1
  350. package/public/{chunk-QK4V5DVW.js → chunk-WHSTHY5K.js} +1 -1
  351. package/public/chunk-XMBCOKOA.js +1 -0
  352. package/public/{chunk-OAHDGV32.js → chunk-XQACD65E.js} +1 -1
  353. package/public/{chunk-ZEI3HZ6P.js → chunk-XQCLQKCG.js} +2 -2
  354. package/public/{chunk-2UOYBCTN.js → chunk-XS55KH6X.js} +1 -1
  355. package/public/{chunk-VYC5JLE6.js → chunk-YFMEPI62.js} +1 -1
  356. package/public/chunk-Z4E6BJST.js +1 -0
  357. package/public/{chunk-OK5EJ7US.js → chunk-ZSWIXPXA.js} +1 -1
  358. package/public/index.html +2 -2
  359. package/public/{main-27RPBS22.js → main-WFXBCXTF.js} +1 -1
  360. package/public/{styles-CSF457UW.css → styles-WNHDEKE4.css} +1 -1
  361. package/scripts/extract-plugin-alias.js +8 -4
  362. package/public/chunk-2LXNPXT5.js +0 -1
  363. package/public/chunk-3XDYZNNE.js +0 -1
  364. package/public/chunk-57DUDNZJ.js +0 -1
  365. package/public/chunk-FM6ZYPKR.js +0 -4
  366. package/public/chunk-JJ7TVAIH.js +0 -5
  367. package/public/chunk-L43N56JA.js +0 -1
  368. package/public/chunk-L5I3DZ23.js +0 -1
  369. package/public/chunk-LH2LMHIZ.js +0 -1
  370. package/public/chunk-N2TWGDNX.js +0 -1
  371. package/public/chunk-O4SS7KVP.js +0 -40
  372. package/public/chunk-ONTEIYY3.js +0 -19
  373. package/public/chunk-P7TZIGJS.js +0 -50
  374. package/public/chunk-Q2IS3QQY.js +0 -1
  375. package/public/chunk-QQ5VZZQG.js +0 -1
  376. package/public/chunk-RYTGW6B7.js +0 -1
  377. package/public/chunk-SOT54YHI.js +0 -1
  378. package/public/chunk-TGZNYEGN.js +0 -1
  379. package/public/chunk-U5JF2ZOK.js +0 -1
  380. package/public/chunk-UNGEHXRN.js +0 -1
  381. package/public/chunk-VEGMNMLG.js +0 -1
  382. package/public/chunk-Y5FP6C55.js +0 -2
  383. package/public/chunk-YYJG2ENF.js +0 -1
@@ -1 +0,0 @@
1
- import{B as G,C as Q,c as $,d as C,e as B,f as O,g as T,j as w,m as q,q as z,r as D,y as H,z as A}from"./chunk-N2TWGDNX.js";import{b as K}from"./chunk-WLGXJQPD.js";import{e as U}from"./chunk-CYBDQV2B.js";import{b as J}from"./chunk-U5JF2ZOK.js";import{l as j,p as W}from"./chunk-SOT54YHI.js";import{$b as h,Dc as b,Gc as L,La as x,Lb as E,Nb as M,P as I,Qa as i,Rc as N,Ub as v,Uc as V,Vb as F,_b as g,ac as R,cd as P,db as k,h as y,mc as f,na as p,qb as u,rb as c,sc as l,tc as d,wb as m,x as S,xb as r,yb as a,zb as s}from"./chunk-JJ7TVAIH.js";var Y=["password"],Z=["username"],ee=["otp"],te=e=>({background:e}),ie=e=>({anim:e}),X=e=>({"is-invalid":e});function ne(e,_){if(e&1&&(r(0,"div",8)(1,"span",12),s(2,"i",13),a(),s(3,"input",14,0),l(5,"translate"),a(),r(6,"div",8)(7,"span",12),s(8,"i",15),a(),s(9,"input",16,1),l(11,"translate"),a()),e&2){let n=M();i(3),m("placeholder",d(5,4,"users.label_username"))("ngClass",f(8,X,n.form.controls.username.dirty&&n.form.controls.username.errors)),i(6),m("placeholder",d(11,6,"users.label_password"))("ngClass",f(10,X,n.form.controls.password.dirty&&n.form.controls.password.errors))}}function oe(e,_){e&1&&(r(0,"div",8)(1,"span",12),s(2,"i",17),a(),s(3,"input",18,2),l(5,"translate"),a()),e&2&&(i(3),m("placeholder",d(5,1,"login.label_2fa_code")))}function ae(e,_){e&1&&(r(0,"div",9)(1,"div",12),s(2,"i",19),a(),r(3,"div",20)(4,"div",21),g(5),l(6,"translate"),a(),s(7,"div",22),l(8,"translate"),a()()),e&2&&(i(5),h(d(6,2,"login.invalid_credentials")),i(2),m("innerHTML",d(8,4,"login.invalid_credentials_2"),x))}function re(e,_){e&1&&(r(0,"div",9)(1,"div",12),s(2,"i",19),a(),r(3,"div",20)(4,"div",21),g(5),l(6,"translate"),a(),s(7,"div",22),l(8,"translate"),a()()),e&2&&(i(5),h(d(6,2,"login.invalid_code")),i(2),m("innerHTML",d(8,4,"login.invalid_credentials_2"),x))}var _e=(()=>{class e{$auth=p(K);$cdr=p(L);$router=p(U);$settings=p(J);targetRoute;validNonAdminRoutes=["/accessories","/plugins","/logs","/support"];passwordInput=b("password");usernameInput=b("username");otpInput=b("otp");backgroundStyle;invalidCredentials=!1;invalid2faCode=!1;twoFactorCodeRequired=!1;inProgress=!1;form;ngOnInit(){this.form=new T({username:new w(""),password:new w("")}),this.form.valueChanges.pipe(I(500)).subscribe(n=>{let o=this.passwordInput()?.nativeElement.value;o&&o!==n.password&&this.form.controls.password.setValue(o)}),this.targetRoute=window.sessionStorage.getItem("target_route")||"",this.setBackground()}ngAfterViewChecked(){this.$cdr.detectChanges()}onSubmit(){return y(this,null,function*(){this.invalidCredentials=!1,this.invalid2faCode=!1,this.inProgress=!0,document.getElementById("submit-button")?.blur();let n=this.passwordInput()?.nativeElement.value;n&&n!==this.form.get("password").value&&this.form.controls.password.setValue(n);let o=this.usernameInput()?.nativeElement.value;if(o&&o!==this.form.get("username").value&&this.form.controls.username.setValue(o),this.twoFactorCodeRequired){let t=this.otpInput()?.nativeElement.value;t&&t!==this.form.get("otp").value&&this.form.controls.username.setValue(t)}try{yield this.$auth.login(this.form.getRawValue()),!this.$auth.user.admin&&!this.validNonAdminRoutes.includes(this.targetRoute)&&(this.targetRoute="/"),this.$router.navigateByUrl(this.targetRoute),window.sessionStorage.removeItem("target_route")}catch(t){t.status===412?(this.form.controls.otp?(this.form.controls.otp.setErrors(["Invalid Code"]),this.invalid2faCode=!0):this.form.addControl("otp",new w("",[C.required,C.minLength(6),C.maxLength(6)])),this.twoFactorCodeRequired=!0,setTimeout(()=>{document.getElementById("form-ota").focus()},100)):this.invalidCredentials=!0}this.inProgress=!1})}setBackground(){return y(this,null,function*(){if(this.$settings.settingsLoaded||(yield S(this.$settings.onSettingsLoaded)),this.$settings.env.customWallpaperHash){let n=`${W.api.base}/auth/wallpaper/${this.$settings.env.customWallpaperHash}`;this.backgroundStyle=`url('${n}') center/cover`}})}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=k({type:e,selectors:[["ng-component"]],viewQuery:function(o,t){o&1&&(v(t.passwordInput,Y,5),v(t.usernameInput,Z,5),v(t.otpInput,ee,5)),o&2&&F(3)},decls:15,vars:18,consts:[["username",""],["password",""],["otp",""],[1,"login-container","gradient","d-flex","align-items-start","justify-content-center",3,"ngStyle","ngClass"],[1,"w-100","login-card","d-flex","py-4","flex-column"],["ngSrc","assets/homebridge-color-round.svg","alt","Homebridge Logo","height","100","width","100","priority","true",1,"homebridge-logo","mx-auto","my-3"],["novalidate","",3,"ngSubmit","formGroup"],[1,"mb-4","text-center"],[1,"input-group","mb-4"],[1,"input-group","no-border","mb-4"],[1,"text-center"],["tabindex","3","id","submit-button","type","submit",1,"btn","btn-primary","mb-2",3,"disabled"],[1,"input-group-text","custom-input"],[1,"fas","fa-user","primary-text","fa-lg"],["formControlName","username","type","text","id","form-username","autofocus","","autocomplete","username","autocapitalize","none","tabindex","1","required","",1,"form-control","custom-input",3,"placeholder","ngClass"],[1,"fas","fa-lock","primary-text","fa-lg"],["formControlName","password","type","password","id","form-pass","autocomplete","current-password","tabindex","2","required","",1,"form-control","custom-input",3,"placeholder","ngClass"],[1,"fas","fa-key","primary-text","fa-lg"],["formControlName","otp","type","text","id","form-ota","autofocus","","autocomplete","one-time-code","autocapitalize","none","inputmode","numeric","pattern","[0-9]*","tabindex","1",1,"form-control","custom-input",3,"placeholder"],[1,"fas","fa-exclamation-triangle","pink-text","fa-lg"],[1,"form-control","custom-input"],[1,"small","grey-text","fw-semibold"],[1,"small","grey-text",3,"innerHTML"]],template:function(o,t){o&1&&(r(0,"div",3)(1,"div",4),s(2,"img",5),r(3,"form",6),E("ngSubmit",function(){return t.onSubmit()}),r(4,"h4",7),g(5),l(6,"translate"),a(),u(7,ne,12,12),u(8,oe,6,3,"div",8),u(9,ae,9,6,"div",9),u(10,re,9,6,"div",9),r(11,"div",10)(12,"button",11),g(13),l(14,"translate"),a()()()()()),o&2&&(m("ngStyle",f(14,te,t.backgroundStyle))("ngClass",f(16,ie,!t.backgroundStyle)),i(3),m("formGroup",t.form),i(2),h(d(6,10,"setup.welcome_to_homebridge")),i(2),c(t.twoFactorCodeRequired?-1:7),i(),c(t.twoFactorCodeRequired?8:-1),i(),c(t.invalidCredentials?9:-1),i(),c(t.invalid2faCode?10:-1),i(2),m("disabled",t.form.invalid),i(),R(" ",d(14,12,"form.button_continue")," "))},dependencies:[V,G,q,$,B,O,H,A,Q,z,D,N,P,j],styles:["body{overflow:scroll!important} body.dark-mode .login-card{background-color:#2b2b2b;color:#fff}.login-container[_ngcontent-%COMP%]{z-index:-1;padding-top:2em;padding-bottom:2em;min-height:100%;background-size:300% 300%}.anim[_ngcontent-%COMP%]{-webkit-animation:_ngcontent-%COMP%_gradient 20s ease infinite;-moz-animation:gradient 20s ease infinite;-o-animation:gradient 20s ease infinite;animation:_ngcontent-%COMP%_gradient 20s ease infinite}@keyframes _ngcontent-%COMP%_gradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.login-card[_ngcontent-%COMP%]{max-width:550px;border-radius:1rem;padding-right:25px;padding-left:25px;background-color:#ffffffe6}.login-card[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{background-color:inherit!important}@media screen and (max-width: 575px){.login-card[_ngcontent-%COMP%]{margin-left:1em;margin-right:1em}}.homebridge-logo[_ngcontent-%COMP%]{margin-bottom:10px}"]})}return e})();export{_e as LoginComponent};
@@ -1 +0,0 @@
1
- import{a as d0}from"./chunk-BTBGWLKK.js";import{m as n0,n as U}from"./chunk-ZEI3HZ6P.js";import{B as i0,b as z,c as J,e as X,l as Z,s as Q,t as e0,v as t0}from"./chunk-N2TWGDNX.js";import{a as l0}from"./chunk-325LPX6W.js";import{b as B0}from"./chunk-WLGXJQPD.js";import{b as c0}from"./chunk-U5JF2ZOK.js";import{k as o0,l as a0,n as r0,q as s0}from"./chunk-SOT54YHI.js";import{$b as u,Ib as N,La as W,Lb as R,Nb as B,Qa as o,_b as a,a as Y,ac as C,b as K,db as j,e as E0,fc as w,g as y0,gb as h,gc as H,h as P,hc as k,ia as q,n as $,na as T,pb as D,qb as _,rb as S,sa as M,sc as p,ta as L,tb as g,tc as m,ub as x,vb as I,wb as O,x as V,xb as l,yb as s,zb as v}from"./chunk-JJ7TVAIH.js";var p0=E0(y=>{"use strict";Object.defineProperty(y,"__esModule",{value:!0});y.Enums=y.Categories=y.Characteristics=y.Services=void 0;y.Services={"00000260-0000-1000-8000-0026BB765291":"AccessCode",AccessCode:"00000260-0000-1000-8000-0026BB765291","000000DA-0000-1000-8000-0026BB765291":"AccessControl",AccessControl:"000000DA-0000-1000-8000-0026BB765291","0000003E-0000-1000-8000-0026BB765291":"AccessoryInformation",AccessoryInformation:"0000003E-0000-1000-8000-0026BB765291","00000270-0000-1000-8000-0026BB765291":"AccessoryMetrics",AccessoryMetrics:"00000270-0000-1000-8000-0026BB765291","00000239-0000-1000-8000-0026BB765291":"AccessoryRuntimeInformation",AccessoryRuntimeInformation:"00000239-0000-1000-8000-0026BB765291","000000BB-0000-1000-8000-0026BB765291":"AirPurifier",AirPurifier:"000000BB-0000-1000-8000-0026BB765291","0000008D-0000-1000-8000-0026BB765291":"AirQualitySensor",AirQualitySensor:"0000008D-0000-1000-8000-0026BB765291","00000267-0000-1000-8000-0026BB765291":"AssetUpdate",AssetUpdate:"00000267-0000-1000-8000-0026BB765291","0000026A-0000-1000-8000-0026BB765291":"Assistant",Assistant:"0000026A-0000-1000-8000-0026BB765291","00000127-0000-1000-8000-0026BB765291":"AudioStreamManagement",AudioStreamManagement:"00000127-0000-1000-8000-0026BB765291","00000096-0000-1000-8000-0026BB765291":"Battery",Battery:"00000096-0000-1000-8000-0026BB765291","0000021A-0000-1000-8000-0026BB765291":"CameraOperatingMode",CameraOperatingMode:"0000021A-0000-1000-8000-0026BB765291","00000204-0000-1000-8000-0026BB765291":"CameraRecordingManagement",CameraRecordingManagement:"00000204-0000-1000-8000-0026BB765291","00000110-0000-1000-8000-0026BB765291":"CameraRTPStreamManagement",CameraRTPStreamManagement:"00000110-0000-1000-8000-0026BB765291","00000097-0000-1000-8000-0026BB765291":"CarbonDioxideSensor",CarbonDioxideSensor:"00000097-0000-1000-8000-0026BB765291","0000007F-0000-1000-8000-0026BB765291":"CarbonMonoxideSensor",CarbonMonoxideSensor:"0000007F-0000-1000-8000-0026BB765291","0000005A-0000-1000-8000-0026BB765291":"CloudRelay",CloudRelay:"0000005A-0000-1000-8000-0026BB765291","00000080-0000-1000-8000-0026BB765291":"ContactSensor",ContactSensor:"00000080-0000-1000-8000-0026BB765291","00000129-0000-1000-8000-0026BB765291":"DataStreamTransportManagement",DataStreamTransportManagement:"00000129-0000-1000-8000-0026BB765291","00000237-0000-1000-8000-0026BB765291":"Diagnostics",Diagnostics:"00000237-0000-1000-8000-0026BB765291","00000081-0000-1000-8000-0026BB765291":"Door",Door:"00000081-0000-1000-8000-0026BB765291","00000121-0000-1000-8000-0026BB765291":"Doorbell",Doorbell:"00000121-0000-1000-8000-0026BB765291","00000040-0000-1000-8000-0026BB765291":"Fan",Fan:"00000040-0000-1000-8000-0026BB765291","000000B7-0000-1000-8000-0026BB765291":"Fanv2",Fanv2:"000000B7-0000-1000-8000-0026BB765291","000000D7-0000-1000-8000-0026BB765291":"Faucet",Faucet:"000000D7-0000-1000-8000-0026BB765291","000000BA-0000-1000-8000-0026BB765291":"FilterMaintenance",FilterMaintenance:"000000BA-0000-1000-8000-0026BB765291","00000236-0000-1000-8000-0026BB765291":"FirmwareUpdate",FirmwareUpdate:"00000236-0000-1000-8000-0026BB765291","00000041-0000-1000-8000-0026BB765291":"GarageDoorOpener",GarageDoorOpener:"00000041-0000-1000-8000-0026BB765291","000000BC-0000-1000-8000-0026BB765291":"HeaterCooler",HeaterCooler:"000000BC-0000-1000-8000-0026BB765291","000000BD-0000-1000-8000-0026BB765291":"HumidifierDehumidifier",HumidifierDehumidifier:"000000BD-0000-1000-8000-0026BB765291","00000082-0000-1000-8000-0026BB765291":"HumiditySensor",HumiditySensor:"00000082-0000-1000-8000-0026BB765291","000000D9-0000-1000-8000-0026BB765291":"InputSource",InputSource:"000000D9-0000-1000-8000-0026BB765291","000000CF-0000-1000-8000-0026BB765291":"IrrigationSystem",IrrigationSystem:"000000CF-0000-1000-8000-0026BB765291","00000083-0000-1000-8000-0026BB765291":"LeakSensor",LeakSensor:"00000083-0000-1000-8000-0026BB765291","00000043-0000-1000-8000-0026BB765291":"Lightbulb",Lightbulb:"00000043-0000-1000-8000-0026BB765291","00000084-0000-1000-8000-0026BB765291":"LightSensor",LightSensor:"00000084-0000-1000-8000-0026BB765291","00000044-0000-1000-8000-0026BB765291":"LockManagement",LockManagement:"00000044-0000-1000-8000-0026BB765291","00000045-0000-1000-8000-0026BB765291":"LockMechanism",LockMechanism:"00000045-0000-1000-8000-0026BB765291","00000112-0000-1000-8000-0026BB765291":"Microphone",Microphone:"00000112-0000-1000-8000-0026BB765291","00000085-0000-1000-8000-0026BB765291":"MotionSensor",MotionSensor:"00000085-0000-1000-8000-0026BB765291","00000266-0000-1000-8000-0026BB765291":"NFCAccess",NFCAccess:"00000266-0000-1000-8000-0026BB765291","00000086-0000-1000-8000-0026BB765291":"OccupancySensor",OccupancySensor:"00000086-0000-1000-8000-0026BB765291","00000047-0000-1000-8000-0026BB765291":"Outlet",Outlet:"00000047-0000-1000-8000-0026BB765291","00000055-0000-1000-8000-0026BB765291":"Pairing",Pairing:"00000055-0000-1000-8000-0026BB765291","00000221-0000-1000-8000-0026BB765291":"PowerManagement",PowerManagement:"00000221-0000-1000-8000-0026BB765291","000000A2-0000-1000-8000-0026BB765291":"ProtocolInformation",ProtocolInformation:"000000A2-0000-1000-8000-0026BB765291","0000007E-0000-1000-8000-0026BB765291":"SecuritySystem",SecuritySystem:"0000007E-0000-1000-8000-0026BB765291","000000CC-0000-1000-8000-0026BB765291":"ServiceLabel",ServiceLabel:"000000CC-0000-1000-8000-0026BB765291","00000133-0000-1000-8000-0026BB765291":"Siri",Siri:"00000133-0000-1000-8000-0026BB765291","00000253-0000-1000-8000-0026BB765291":"SiriEndpoint",SiriEndpoint:"00000253-0000-1000-8000-0026BB765291","000000B9-0000-1000-8000-0026BB765291":"Slats",Slats:"000000B9-0000-1000-8000-0026BB765291","00000228-0000-1000-8000-0026BB765291":"SmartSpeaker",SmartSpeaker:"00000228-0000-1000-8000-0026BB765291","00000087-0000-1000-8000-0026BB765291":"SmokeSensor",SmokeSensor:"00000087-0000-1000-8000-0026BB765291","00000113-0000-1000-8000-0026BB765291":"Speaker",Speaker:"00000113-0000-1000-8000-0026BB765291","00000088-0000-1000-8000-0026BB765291":"StatefulProgrammableSwitch",StatefulProgrammableSwitch:"00000088-0000-1000-8000-0026BB765291","00000089-0000-1000-8000-0026BB765291":"StatelessProgrammableSwitch",StatelessProgrammableSwitch:"00000089-0000-1000-8000-0026BB765291","00000049-0000-1000-8000-0026BB765291":"Switch",Switch:"00000049-0000-1000-8000-0026BB765291","0000022E-0000-1000-8000-0026BB765291":"TapManagement",TapManagement:"0000022E-0000-1000-8000-0026BB765291","00000125-0000-1000-8000-0026BB765291":"TargetControl",TargetControl:"00000125-0000-1000-8000-0026BB765291","00000122-0000-1000-8000-0026BB765291":"TargetControlManagement",TargetControlManagement:"00000122-0000-1000-8000-0026BB765291","000000D8-0000-1000-8000-0026BB765291":"Television",Television:"000000D8-0000-1000-8000-0026BB765291",TelevisionSpeaker:"00000113-0000-1000-8000-0026BB765291","0000008A-0000-1000-8000-0026BB765291":"TemperatureSensor",TemperatureSensor:"0000008A-0000-1000-8000-0026BB765291","0000004A-0000-1000-8000-0026BB765291":"Thermostat",Thermostat:"0000004A-0000-1000-8000-0026BB765291","00000701-0000-1000-8000-0026BB765291":"ThreadTransport",ThreadTransport:"00000701-0000-1000-8000-0026BB765291","00000203-0000-1000-8000-0026BB765291":"TransferTransportManagement",TransferTransportManagement:"00000203-0000-1000-8000-0026BB765291","00000056-0000-1000-8000-0026BB765291":"Tunnel",Tunnel:"00000056-0000-1000-8000-0026BB765291","000000D0-0000-1000-8000-0026BB765291":"Valve",Valve:"000000D0-0000-1000-8000-0026BB765291","0000020A-0000-1000-8000-0026BB765291":"WiFiRouter",WiFiRouter:"0000020A-0000-1000-8000-0026BB765291","0000020F-0000-1000-8000-0026BB765291":"WiFiSatellite",WiFiSatellite:"0000020F-0000-1000-8000-0026BB765291","0000022A-0000-1000-8000-0026BB765291":"WiFiTransport",WiFiTransport:"0000022A-0000-1000-8000-0026BB765291","0000008B-0000-1000-8000-0026BB765291":"Window",Window:"0000008B-0000-1000-8000-0026BB765291","0000008C-0000-1000-8000-0026BB765291":"WindowCovering",WindowCovering:"0000008C-0000-1000-8000-0026BB765291"};y.Characteristics={"00000262-0000-1000-8000-0026BB765291":"AccessCodeControlPoint",AccessCodeControlPoint:"00000262-0000-1000-8000-0026BB765291","00000261-0000-1000-8000-0026BB765291":"AccessCodeSupportedConfiguration",AccessCodeSupportedConfiguration:"00000261-0000-1000-8000-0026BB765291","000000E5-0000-1000-8000-0026BB765291":"AccessControlLevel",AccessControlLevel:"000000E5-0000-1000-8000-0026BB765291","000000A6-0000-1000-8000-0026BB765291":"AccessoryFlags",AccessoryFlags:"000000A6-0000-1000-8000-0026BB765291","00000057-0000-1000-8000-0026BB765291":"AccessoryIdentifier",AccessoryIdentifier:"00000057-0000-1000-8000-0026BB765291","000000B0-0000-1000-8000-0026BB765291":"Active",Active:"000000B0-0000-1000-8000-0026BB765291","000000E7-0000-1000-8000-0026BB765291":"ActiveIdentifier",ActiveIdentifier:"000000E7-0000-1000-8000-0026BB765291","0000023B-0000-1000-8000-0026BB765291":"ActivityInterval",ActivityInterval:"0000023B-0000-1000-8000-0026BB765291","00000001-0000-1000-8000-0026BB765291":"AdministratorOnlyAccess",AdministratorOnlyAccess:"00000001-0000-1000-8000-0026BB765291","00000064-0000-1000-8000-0026BB765291":"AirParticulateDensity",AirParticulateDensity:"00000064-0000-1000-8000-0026BB765291","00000065-0000-1000-8000-0026BB765291":"AirParticulateSize",AirParticulateSize:"00000065-0000-1000-8000-0026BB765291","0000025B-0000-1000-8000-0026BB765291":"AirPlayEnable",AirPlayEnable:"0000025B-0000-1000-8000-0026BB765291","00000095-0000-1000-8000-0026BB765291":"AirQuality",AirQuality:"00000095-0000-1000-8000-0026BB765291","000000A4-0000-1000-8000-0026BB765291":"AppMatchingIdentifier",AppMatchingIdentifier:"000000A4-0000-1000-8000-0026BB765291","00000269-0000-1000-8000-0026BB765291":"AssetUpdateReadiness",AssetUpdateReadiness:"00000269-0000-1000-8000-0026BB765291","00000005-0000-1000-8000-0026BB765291":"AudioFeedback",AudioFeedback:"00000005-0000-1000-8000-0026BB765291","00000068-0000-1000-8000-0026BB765291":"BatteryLevel",BatteryLevel:"00000068-0000-1000-8000-0026BB765291","00000008-0000-1000-8000-0026BB765291":"Brightness",Brightness:"00000008-0000-1000-8000-0026BB765291","00000126-0000-1000-8000-0026BB765291":"ButtonEvent",ButtonEvent:"00000126-0000-1000-8000-0026BB765291","0000021D-0000-1000-8000-0026BB765291":"CameraOperatingModeIndicator",CameraOperatingModeIndicator:"0000021D-0000-1000-8000-0026BB765291","00000092-0000-1000-8000-0026BB765291":"CarbonDioxideDetected",CarbonDioxideDetected:"00000092-0000-1000-8000-0026BB765291","00000093-0000-1000-8000-0026BB765291":"CarbonDioxideLevel",CarbonDioxideLevel:"00000093-0000-1000-8000-0026BB765291","00000094-0000-1000-8000-0026BB765291":"CarbonDioxidePeakLevel",CarbonDioxidePeakLevel:"00000094-0000-1000-8000-0026BB765291","00000069-0000-1000-8000-0026BB765291":"CarbonMonoxideDetected",CarbonMonoxideDetected:"00000069-0000-1000-8000-0026BB765291","00000090-0000-1000-8000-0026BB765291":"CarbonMonoxideLevel",CarbonMonoxideLevel:"00000090-0000-1000-8000-0026BB765291","00000091-0000-1000-8000-0026BB765291":"CarbonMonoxidePeakLevel",CarbonMonoxidePeakLevel:"00000091-0000-1000-8000-0026BB765291","00000246-0000-1000-8000-0026BB765291":"CCAEnergyDetectThreshold",CCAEnergyDetectThreshold:"00000246-0000-1000-8000-0026BB765291","00000245-0000-1000-8000-0026BB765291":"CCASignalDetectThreshold",CCASignalDetectThreshold:"00000245-0000-1000-8000-0026BB765291","0000024B-0000-1000-8000-0026BB765291":"CharacteristicValueActiveTransitionCount",CharacteristicValueActiveTransitionCount:"0000024B-0000-1000-8000-0026BB765291","00000143-0000-1000-8000-0026BB765291":"CharacteristicValueTransitionControl",CharacteristicValueTransitionControl:"00000143-0000-1000-8000-0026BB765291","0000008F-0000-1000-8000-0026BB765291":"ChargingState",ChargingState:"0000008F-0000-1000-8000-0026BB765291","000000DD-0000-1000-8000-0026BB765291":"ClosedCaptions",ClosedCaptions:"000000DD-0000-1000-8000-0026BB765291","000000CE-0000-1000-8000-0026BB765291":"ColorTemperature",ColorTemperature:"000000CE-0000-1000-8000-0026BB765291","00000263-0000-1000-8000-0026BB765291":"ConfigurationState",ConfigurationState:"00000263-0000-1000-8000-0026BB765291","000000E3-0000-1000-8000-0026BB765291":"ConfiguredName",ConfiguredName:"000000E3-0000-1000-8000-0026BB765291","0000006A-0000-1000-8000-0026BB765291":"ContactSensorState",ContactSensorState:"0000006A-0000-1000-8000-0026BB765291","0000000D-0000-1000-8000-0026BB765291":"CoolingThresholdTemperature",CoolingThresholdTemperature:"0000000D-0000-1000-8000-0026BB765291","00000250-0000-1000-8000-0026BB765291":"CryptoHash",CryptoHash:"00000250-0000-1000-8000-0026BB765291","000000A9-0000-1000-8000-0026BB765291":"CurrentAirPurifierState",CurrentAirPurifierState:"000000A9-0000-1000-8000-0026BB765291","0000006B-0000-1000-8000-0026BB765291":"CurrentAmbientLightLevel",CurrentAmbientLightLevel:"0000006B-0000-1000-8000-0026BB765291","0000000E-0000-1000-8000-0026BB765291":"CurrentDoorState",CurrentDoorState:"0000000E-0000-1000-8000-0026BB765291","000000AF-0000-1000-8000-0026BB765291":"CurrentFanState",CurrentFanState:"000000AF-0000-1000-8000-0026BB765291","000000B1-0000-1000-8000-0026BB765291":"CurrentHeaterCoolerState",CurrentHeaterCoolerState:"000000B1-0000-1000-8000-0026BB765291","0000000F-0000-1000-8000-0026BB765291":"CurrentHeatingCoolingState",CurrentHeatingCoolingState:"0000000F-0000-1000-8000-0026BB765291","0000006C-0000-1000-8000-0026BB765291":"CurrentHorizontalTiltAngle",CurrentHorizontalTiltAngle:"0000006C-0000-1000-8000-0026BB765291","000000B3-0000-1000-8000-0026BB765291":"CurrentHumidifierDehumidifierState",CurrentHumidifierDehumidifierState:"000000B3-0000-1000-8000-0026BB765291","000000E0-0000-1000-8000-0026BB765291":"CurrentMediaState",CurrentMediaState:"000000E0-0000-1000-8000-0026BB765291","0000006D-0000-1000-8000-0026BB765291":"CurrentPosition",CurrentPosition:"0000006D-0000-1000-8000-0026BB765291","00000010-0000-1000-8000-0026BB765291":"CurrentRelativeHumidity",CurrentRelativeHumidity:"00000010-0000-1000-8000-0026BB765291","000000AA-0000-1000-8000-0026BB765291":"CurrentSlatState",CurrentSlatState:"000000AA-0000-1000-8000-0026BB765291","00000011-0000-1000-8000-0026BB765291":"CurrentTemperature",CurrentTemperature:"00000011-0000-1000-8000-0026BB765291","000000C1-0000-1000-8000-0026BB765291":"CurrentTiltAngle",CurrentTiltAngle:"000000C1-0000-1000-8000-0026BB765291","0000022B-0000-1000-8000-0026BB765291":"CurrentTransport",CurrentTransport:"0000022B-0000-1000-8000-0026BB765291","0000006E-0000-1000-8000-0026BB765291":"CurrentVerticalTiltAngle",CurrentVerticalTiltAngle:"0000006E-0000-1000-8000-0026BB765291","00000135-0000-1000-8000-0026BB765291":"CurrentVisibilityState",CurrentVisibilityState:"00000135-0000-1000-8000-0026BB765291","00000138-0000-1000-8000-0026BB765291":"DataStreamHAPTransport",DataStreamHAPTransport:"00000138-0000-1000-8000-0026BB765291","00000139-0000-1000-8000-0026BB765291":"DataStreamHAPTransportInterrupt",DataStreamHAPTransportInterrupt:"00000139-0000-1000-8000-0026BB765291","00000224-0000-1000-8000-0026BB765291":"DiagonalFieldOfView",DiagonalFieldOfView:"00000224-0000-1000-8000-0026BB765291","0000011D-0000-1000-8000-0026BB765291":"DigitalZoom",DigitalZoom:"0000011D-0000-1000-8000-0026BB765291","00000136-0000-1000-8000-0026BB765291":"DisplayOrder",DisplayOrder:"00000136-0000-1000-8000-0026BB765291","0000023D-0000-1000-8000-0026BB765291":"EventRetransmissionMaximum",EventRetransmissionMaximum:"0000023D-0000-1000-8000-0026BB765291","00000223-0000-1000-8000-0026BB765291":"EventSnapshotsActive",EventSnapshotsActive:"00000223-0000-1000-8000-0026BB765291","0000023E-0000-1000-8000-0026BB765291":"EventTransmissionCounters",EventTransmissionCounters:"0000023E-0000-1000-8000-0026BB765291","000000AC-0000-1000-8000-0026BB765291":"FilterChangeIndication",FilterChangeIndication:"000000AC-0000-1000-8000-0026BB765291","000000AB-0000-1000-8000-0026BB765291":"FilterLifeLevel",FilterLifeLevel:"000000AB-0000-1000-8000-0026BB765291","00000052-0000-1000-8000-0026BB765291":"FirmwareRevision",FirmwareRevision:"00000052-0000-1000-8000-0026BB765291","00000234-0000-1000-8000-0026BB765291":"FirmwareUpdateReadiness",FirmwareUpdateReadiness:"00000234-0000-1000-8000-0026BB765291","00000235-0000-1000-8000-0026BB765291":"FirmwareUpdateStatus",FirmwareUpdateStatus:"00000235-0000-1000-8000-0026BB765291","0000026C-0000-1000-8000-0026BB765291":"HardwareFinish",HardwareFinish:"0000026C-0000-1000-8000-0026BB765291","00000053-0000-1000-8000-0026BB765291":"HardwareRevision",HardwareRevision:"00000053-0000-1000-8000-0026BB765291","0000024A-0000-1000-8000-0026BB765291":"HeartBeat",HeartBeat:"0000024A-0000-1000-8000-0026BB765291","00000012-0000-1000-8000-0026BB765291":"HeatingThresholdTemperature",HeatingThresholdTemperature:"00000012-0000-1000-8000-0026BB765291","0000006F-0000-1000-8000-0026BB765291":"HoldPosition",HoldPosition:"0000006F-0000-1000-8000-0026BB765291","0000021B-0000-1000-8000-0026BB765291":"HomeKitCameraActive",HomeKitCameraActive:"0000021B-0000-1000-8000-0026BB765291","00000013-0000-1000-8000-0026BB765291":"Hue",Hue:"00000013-0000-1000-8000-0026BB765291","000000E6-0000-1000-8000-0026BB765291":"Identifier",Identifier:"000000E6-0000-1000-8000-0026BB765291","00000014-0000-1000-8000-0026BB765291":"Identify",Identify:"00000014-0000-1000-8000-0026BB765291","0000011F-0000-1000-8000-0026BB765291":"ImageMirroring",ImageMirroring:"0000011F-0000-1000-8000-0026BB765291","0000011E-0000-1000-8000-0026BB765291":"ImageRotation",ImageRotation:"0000011E-0000-1000-8000-0026BB765291","000000DC-0000-1000-8000-0026BB765291":"InputDeviceType",InputDeviceType:"000000DC-0000-1000-8000-0026BB765291","000000DB-0000-1000-8000-0026BB765291":"InputSourceType",InputSourceType:"000000DB-0000-1000-8000-0026BB765291","000000D2-0000-1000-8000-0026BB765291":"InUse",InUse:"000000D2-0000-1000-8000-0026BB765291","000000D6-0000-1000-8000-0026BB765291":"IsConfigured",IsConfigured:"000000D6-0000-1000-8000-0026BB765291","00000070-0000-1000-8000-0026BB765291":"LeakDetected",LeakDetected:"00000070-0000-1000-8000-0026BB765291","00000050-0000-1000-8000-0026BB765291":"ListPairings",ListPairings:"00000050-0000-1000-8000-0026BB765291","00000019-0000-1000-8000-0026BB765291":"LockControlPoint",LockControlPoint:"00000019-0000-1000-8000-0026BB765291","0000001D-0000-1000-8000-0026BB765291":"LockCurrentState",LockCurrentState:"0000001D-0000-1000-8000-0026BB765291","0000001C-0000-1000-8000-0026BB765291":"LockLastKnownAction",LockLastKnownAction:"0000001C-0000-1000-8000-0026BB765291","0000001A-0000-1000-8000-0026BB765291":"LockManagementAutoSecurityTimeout",LockManagementAutoSecurityTimeout:"0000001A-0000-1000-8000-0026BB765291","000000A7-0000-1000-8000-0026BB765291":"LockPhysicalControls",LockPhysicalControls:"000000A7-0000-1000-8000-0026BB765291","0000001E-0000-1000-8000-0026BB765291":"LockTargetState",LockTargetState:"0000001E-0000-1000-8000-0026BB765291","0000001F-0000-1000-8000-0026BB765291":"Logs",Logs:"0000001F-0000-1000-8000-0026BB765291","00000247-0000-1000-8000-0026BB765291":"MACRetransmissionMaximum",MACRetransmissionMaximum:"00000247-0000-1000-8000-0026BB765291","00000248-0000-1000-8000-0026BB765291":"MACTransmissionCounters",MACTransmissionCounters:"00000248-0000-1000-8000-0026BB765291","00000215-0000-1000-8000-0026BB765291":"ManagedNetworkEnable",ManagedNetworkEnable:"00000215-0000-1000-8000-0026BB765291","00000227-0000-1000-8000-0026BB765291":"ManuallyDisabled",ManuallyDisabled:"00000227-0000-1000-8000-0026BB765291","00000020-0000-1000-8000-0026BB765291":"Manufacturer",Manufacturer:"00000020-0000-1000-8000-0026BB765291","0000026D-0000-1000-8000-0026BB765291":"MatterFirmwareRevisionNumber",MatterFirmwareRevisionNumber:"0000026D-0000-1000-8000-0026BB765291","0000026E-0000-1000-8000-0026BB765291":"MatterFirmwareUpdateStatus",MatterFirmwareUpdateStatus:"0000026E-0000-1000-8000-0026BB765291","00000243-0000-1000-8000-0026BB765291":"MaximumTransmitPower",MaximumTransmitPower:"00000243-0000-1000-8000-0026BB765291","00000272-0000-1000-8000-0026BB765291":"MetricsBufferFullState",MetricsBufferFullState:"00000272-0000-1000-8000-0026BB765291","00000021-0000-1000-8000-0026BB765291":"Model",Model:"00000021-0000-1000-8000-0026BB765291","00000022-0000-1000-8000-0026BB765291":"MotionDetected",MotionDetected:"00000022-0000-1000-8000-0026BB765291","0000026B-0000-1000-8000-0026BB765291":"MultifunctionButton",MultifunctionButton:"0000026B-0000-1000-8000-0026BB765291","0000011A-0000-1000-8000-0026BB765291":"Mute",Mute:"0000011A-0000-1000-8000-0026BB765291","00000023-0000-1000-8000-0026BB765291":"Name",Name:"00000023-0000-1000-8000-0026BB765291","0000021F-0000-1000-8000-0026BB765291":"NetworkAccessViolationControl",NetworkAccessViolationControl:"0000021F-0000-1000-8000-0026BB765291","0000020C-0000-1000-8000-0026BB765291":"NetworkClientProfileControl",NetworkClientProfileControl:"0000020C-0000-1000-8000-0026BB765291","0000020D-0000-1000-8000-0026BB765291":"NetworkClientStatusControl",NetworkClientStatusControl:"0000020D-0000-1000-8000-0026BB765291","00000264-0000-1000-8000-0026BB765291":"NFCAccessControlPoint",NFCAccessControlPoint:"00000264-0000-1000-8000-0026BB765291","00000265-0000-1000-8000-0026BB765291":"NFCAccessSupportedConfiguration",NFCAccessSupportedConfiguration:"00000265-0000-1000-8000-0026BB765291","0000011B-0000-1000-8000-0026BB765291":"NightVision",NightVision:"0000011B-0000-1000-8000-0026BB765291","000000C4-0000-1000-8000-0026BB765291":"NitrogenDioxideDensity",NitrogenDioxideDensity:"000000C4-0000-1000-8000-0026BB765291","00000024-0000-1000-8000-0026BB765291":"ObstructionDetected",ObstructionDetected:"00000024-0000-1000-8000-0026BB765291","00000071-0000-1000-8000-0026BB765291":"OccupancyDetected",OccupancyDetected:"00000071-0000-1000-8000-0026BB765291","00000025-0000-1000-8000-0026BB765291":"On",On:"00000025-0000-1000-8000-0026BB765291","00000232-0000-1000-8000-0026BB765291":"OperatingStateResponse",OperatingStateResponse:"00000232-0000-1000-8000-0026BB765291","0000011C-0000-1000-8000-0026BB765291":"OpticalZoom",OpticalZoom:"0000011C-0000-1000-8000-0026BB765291","00000026-0000-1000-8000-0026BB765291":"OutletInUse",OutletInUse:"00000026-0000-1000-8000-0026BB765291","000000C3-0000-1000-8000-0026BB765291":"OzoneDensity",OzoneDensity:"000000C3-0000-1000-8000-0026BB765291","0000004F-0000-1000-8000-0026BB765291":"PairingFeatures",PairingFeatures:"0000004F-0000-1000-8000-0026BB765291","0000004C-0000-1000-8000-0026BB765291":"PairSetup",PairSetup:"0000004C-0000-1000-8000-0026BB765291","0000004E-0000-1000-8000-0026BB765291":"PairVerify",PairVerify:"0000004E-0000-1000-8000-0026BB765291","000000E4-0000-1000-8000-0026BB765291":"PasswordSetting",PasswordSetting:"000000E4-0000-1000-8000-0026BB765291","00000225-0000-1000-8000-0026BB765291":"PeriodicSnapshotsActive",PeriodicSnapshotsActive:"00000225-0000-1000-8000-0026BB765291","000000E2-0000-1000-8000-0026BB765291":"PictureMode",PictureMode:"000000E2-0000-1000-8000-0026BB765291","0000023C-0000-1000-8000-0026BB765291":"Ping",Ping:"0000023C-0000-1000-8000-0026BB765291","000000C7-0000-1000-8000-0026BB765291":"PM10Density",PM10Density:"000000C7-0000-1000-8000-0026BB765291","000000C6-0000-1000-8000-0026BB765291":"PM2_5Density",PM2_5Density:"000000C6-0000-1000-8000-0026BB765291","00000072-0000-1000-8000-0026BB765291":"PositionState",PositionState:"00000072-0000-1000-8000-0026BB765291","000000DF-0000-1000-8000-0026BB765291":"PowerModeSelection",PowerModeSelection:"000000DF-0000-1000-8000-0026BB765291","00000220-0000-1000-8000-0026BB765291":"ProductData",ProductData:"00000220-0000-1000-8000-0026BB765291","00000073-0000-1000-8000-0026BB765291":"ProgrammableSwitchEvent",ProgrammableSwitchEvent:"00000073-0000-1000-8000-0026BB765291","00000074-0000-1000-8000-0026BB765291":"ProgrammableSwitchOutputState",ProgrammableSwitchOutputState:"00000074-0000-1000-8000-0026BB765291","000000D1-0000-1000-8000-0026BB765291":"ProgramMode",ProgramMode:"000000D1-0000-1000-8000-0026BB765291","0000023F-0000-1000-8000-0026BB765291":"ReceivedSignalStrengthIndication",ReceivedSignalStrengthIndication:"0000023F-0000-1000-8000-0026BB765291","00000244-0000-1000-8000-0026BB765291":"ReceiverSensitivity",ReceiverSensitivity:"00000244-0000-1000-8000-0026BB765291","00000226-0000-1000-8000-0026BB765291":"RecordingAudioActive",RecordingAudioActive:"00000226-0000-1000-8000-0026BB765291","000000C9-0000-1000-8000-0026BB765291":"RelativeHumidityDehumidifierThreshold",RelativeHumidityDehumidifierThreshold:"000000C9-0000-1000-8000-0026BB765291","000000CA-0000-1000-8000-0026BB765291":"RelativeHumidityHumidifierThreshold",RelativeHumidityHumidifierThreshold:"000000CA-0000-1000-8000-0026BB765291","0000005E-0000-1000-8000-0026BB765291":"RelayControlPoint",RelayControlPoint:"0000005E-0000-1000-8000-0026BB765291","0000005B-0000-1000-8000-0026BB765291":"RelayEnabled",RelayEnabled:"0000005B-0000-1000-8000-0026BB765291","0000005C-0000-1000-8000-0026BB765291":"RelayState",RelayState:"0000005C-0000-1000-8000-0026BB765291","000000D4-0000-1000-8000-0026BB765291":"RemainingDuration",RemainingDuration:"000000D4-0000-1000-8000-0026BB765291","000000E1-0000-1000-8000-0026BB765291":"RemoteKey",RemoteKey:"000000E1-0000-1000-8000-0026BB765291","000000AD-0000-1000-8000-0026BB765291":"ResetFilterIndication",ResetFilterIndication:"000000AD-0000-1000-8000-0026BB765291","00000028-0000-1000-8000-0026BB765291":"RotationDirection",RotationDirection:"00000028-0000-1000-8000-0026BB765291","00000029-0000-1000-8000-0026BB765291":"RotationSpeed",RotationSpeed:"00000029-0000-1000-8000-0026BB765291","0000020E-0000-1000-8000-0026BB765291":"RouterStatus",RouterStatus:"0000020E-0000-1000-8000-0026BB765291","0000002F-0000-1000-8000-0026BB765291":"Saturation",Saturation:"0000002F-0000-1000-8000-0026BB765291","0000008E-0000-1000-8000-0026BB765291":"SecuritySystemAlarmType",SecuritySystemAlarmType:"0000008E-0000-1000-8000-0026BB765291","00000066-0000-1000-8000-0026BB765291":"SecuritySystemCurrentState",SecuritySystemCurrentState:"00000066-0000-1000-8000-0026BB765291","00000067-0000-1000-8000-0026BB765291":"SecuritySystemTargetState",SecuritySystemTargetState:"00000067-0000-1000-8000-0026BB765291","00000128-0000-1000-8000-0026BB765291":"SelectedAudioStreamConfiguration",SelectedAudioStreamConfiguration:"00000128-0000-1000-8000-0026BB765291","00000209-0000-1000-8000-0026BB765291":"SelectedCameraRecordingConfiguration",SelectedCameraRecordingConfiguration:"00000209-0000-1000-8000-0026BB765291","0000024D-0000-1000-8000-0026BB765291":"SelectedDiagnosticsModes",SelectedDiagnosticsModes:"0000024D-0000-1000-8000-0026BB765291","00000117-0000-1000-8000-0026BB765291":"SelectedRTPStreamConfiguration",SelectedRTPStreamConfiguration:"00000117-0000-1000-8000-0026BB765291","00000252-0000-1000-8000-0026BB765291":"SelectedSleepConfiguration",SelectedSleepConfiguration:"00000252-0000-1000-8000-0026BB765291","00000030-0000-1000-8000-0026BB765291":"SerialNumber",SerialNumber:"00000030-0000-1000-8000-0026BB765291","000000CB-0000-1000-8000-0026BB765291":"ServiceLabelIndex",ServiceLabelIndex:"000000CB-0000-1000-8000-0026BB765291","000000CD-0000-1000-8000-0026BB765291":"ServiceLabelNamespace",ServiceLabelNamespace:"000000CD-0000-1000-8000-0026BB765291","000000D3-0000-1000-8000-0026BB765291":"SetDuration",SetDuration:"000000D3-0000-1000-8000-0026BB765291","00000131-0000-1000-8000-0026BB765291":"SetupDataStreamTransport",SetupDataStreamTransport:"00000131-0000-1000-8000-0026BB765291","00000118-0000-1000-8000-0026BB765291":"SetupEndpoints",SetupEndpoints:"00000118-0000-1000-8000-0026BB765291","00000201-0000-1000-8000-0026BB765291":"SetupTransferTransport",SetupTransferTransport:"00000201-0000-1000-8000-0026BB765291","00000241-0000-1000-8000-0026BB765291":"SignalToNoiseRatio",SignalToNoiseRatio:"00000241-0000-1000-8000-0026BB765291","00000255-0000-1000-8000-0026BB765291":"SiriEnable",SiriEnable:"00000255-0000-1000-8000-0026BB765291","00000254-0000-1000-8000-0026BB765291":"SiriEndpointSessionStatus",SiriEndpointSessionStatus:"00000254-0000-1000-8000-0026BB765291","0000025A-0000-1000-8000-0026BB765291":"SiriEngineVersion",SiriEngineVersion:"0000025A-0000-1000-8000-0026BB765291","00000132-0000-1000-8000-0026BB765291":"SiriInputType",SiriInputType:"00000132-0000-1000-8000-0026BB765291","00000258-0000-1000-8000-0026BB765291":"SiriLightOnUse",SiriLightOnUse:"00000258-0000-1000-8000-0026BB765291","00000256-0000-1000-8000-0026BB765291":"SiriListening",SiriListening:"00000256-0000-1000-8000-0026BB765291","00000257-0000-1000-8000-0026BB765291":"SiriTouchToUse",SiriTouchToUse:"00000257-0000-1000-8000-0026BB765291","000000C0-0000-1000-8000-0026BB765291":"SlatType",SlatType:"000000C0-0000-1000-8000-0026BB765291","000000E8-0000-1000-8000-0026BB765291":"SleepDiscoveryMode",SleepDiscoveryMode:"000000E8-0000-1000-8000-0026BB765291","0000023A-0000-1000-8000-0026BB765291":"SleepInterval",SleepInterval:"0000023A-0000-1000-8000-0026BB765291","00000076-0000-1000-8000-0026BB765291":"SmokeDetected",SmokeDetected:"00000076-0000-1000-8000-0026BB765291","00000054-0000-1000-8000-0026BB765291":"SoftwareRevision",SoftwareRevision:"00000054-0000-1000-8000-0026BB765291","00000249-0000-1000-8000-0026BB765291":"StagedFirmwareVersion",StagedFirmwareVersion:"00000249-0000-1000-8000-0026BB765291","00000075-0000-1000-8000-0026BB765291":"StatusActive",StatusActive:"00000075-0000-1000-8000-0026BB765291","00000077-0000-1000-8000-0026BB765291":"StatusFault",StatusFault:"00000077-0000-1000-8000-0026BB765291","00000078-0000-1000-8000-0026BB765291":"StatusJammed",StatusJammed:"00000078-0000-1000-8000-0026BB765291","00000079-0000-1000-8000-0026BB765291":"StatusLowBattery",StatusLowBattery:"00000079-0000-1000-8000-0026BB765291","0000007A-0000-1000-8000-0026BB765291":"StatusTampered",StatusTampered:"0000007A-0000-1000-8000-0026BB765291","00000120-0000-1000-8000-0026BB765291":"StreamingStatus",StreamingStatus:"00000120-0000-1000-8000-0026BB765291","000000C5-0000-1000-8000-0026BB765291":"SulphurDioxideDensity",SulphurDioxideDensity:"000000C5-0000-1000-8000-0026BB765291","00000268-0000-1000-8000-0026BB765291":"SupportedAssetTypes",SupportedAssetTypes:"00000268-0000-1000-8000-0026BB765291","00000207-0000-1000-8000-0026BB765291":"SupportedAudioRecordingConfiguration",SupportedAudioRecordingConfiguration:"00000207-0000-1000-8000-0026BB765291","00000115-0000-1000-8000-0026BB765291":"SupportedAudioStreamConfiguration",SupportedAudioStreamConfiguration:"00000115-0000-1000-8000-0026BB765291","00000205-0000-1000-8000-0026BB765291":"SupportedCameraRecordingConfiguration",SupportedCameraRecordingConfiguration:"00000205-0000-1000-8000-0026BB765291","00000144-0000-1000-8000-0026BB765291":"SupportedCharacteristicValueTransitionConfiguration",SupportedCharacteristicValueTransitionConfiguration:"00000144-0000-1000-8000-0026BB765291","00000130-0000-1000-8000-0026BB765291":"SupportedDataStreamTransportConfiguration",SupportedDataStreamTransportConfiguration:"00000130-0000-1000-8000-0026BB765291","0000024C-0000-1000-8000-0026BB765291":"SupportedDiagnosticsModes",SupportedDiagnosticsModes:"0000024C-0000-1000-8000-0026BB765291","00000238-0000-1000-8000-0026BB765291":"SupportedDiagnosticsSnapshot",SupportedDiagnosticsSnapshot:"00000238-0000-1000-8000-0026BB765291","00000233-0000-1000-8000-0026BB765291":"SupportedFirmwareUpdateConfiguration",SupportedFirmwareUpdateConfiguration:"00000233-0000-1000-8000-0026BB765291","00000271-0000-1000-8000-0026BB765291":"SupportedMetrics",SupportedMetrics:"00000271-0000-1000-8000-0026BB765291","00000210-0000-1000-8000-0026BB765291":"SupportedRouterConfiguration",SupportedRouterConfiguration:"00000210-0000-1000-8000-0026BB765291","00000116-0000-1000-8000-0026BB765291":"SupportedRTPConfiguration",SupportedRTPConfiguration:"00000116-0000-1000-8000-0026BB765291","00000251-0000-1000-8000-0026BB765291":"SupportedSleepConfiguration",SupportedSleepConfiguration:"00000251-0000-1000-8000-0026BB765291","00000202-0000-1000-8000-0026BB765291":"SupportedTransferTransportConfiguration",SupportedTransferTransportConfiguration:"00000202-0000-1000-8000-0026BB765291","00000206-0000-1000-8000-0026BB765291":"SupportedVideoRecordingConfiguration",SupportedVideoRecordingConfiguration:"00000206-0000-1000-8000-0026BB765291","00000114-0000-1000-8000-0026BB765291":"SupportedVideoStreamConfiguration",SupportedVideoStreamConfiguration:"00000114-0000-1000-8000-0026BB765291","000000B6-0000-1000-8000-0026BB765291":"SwingMode",SwingMode:"000000B6-0000-1000-8000-0026BB765291","0000022F-0000-1000-8000-0026BB765291":"TapType",TapType:"0000022F-0000-1000-8000-0026BB765291","000000A8-0000-1000-8000-0026BB765291":"TargetAirPurifierState",TargetAirPurifierState:"000000A8-0000-1000-8000-0026BB765291","00000124-0000-1000-8000-0026BB765291":"TargetControlList",TargetControlList:"00000124-0000-1000-8000-0026BB765291","00000123-0000-1000-8000-0026BB765291":"TargetControlSupportedConfiguration",TargetControlSupportedConfiguration:"00000123-0000-1000-8000-0026BB765291","00000032-0000-1000-8000-0026BB765291":"TargetDoorState",TargetDoorState:"00000032-0000-1000-8000-0026BB765291","000000BF-0000-1000-8000-0026BB765291":"TargetFanState",TargetFanState:"000000BF-0000-1000-8000-0026BB765291","000000B2-0000-1000-8000-0026BB765291":"TargetHeaterCoolerState",TargetHeaterCoolerState:"000000B2-0000-1000-8000-0026BB765291","00000033-0000-1000-8000-0026BB765291":"TargetHeatingCoolingState",TargetHeatingCoolingState:"00000033-0000-1000-8000-0026BB765291","0000007B-0000-1000-8000-0026BB765291":"TargetHorizontalTiltAngle",TargetHorizontalTiltAngle:"0000007B-0000-1000-8000-0026BB765291","000000B4-0000-1000-8000-0026BB765291":"TargetHumidifierDehumidifierState",TargetHumidifierDehumidifierState:"000000B4-0000-1000-8000-0026BB765291","00000137-0000-1000-8000-0026BB765291":"TargetMediaState",TargetMediaState:"00000137-0000-1000-8000-0026BB765291","0000007C-0000-1000-8000-0026BB765291":"TargetPosition",TargetPosition:"0000007C-0000-1000-8000-0026BB765291","00000034-0000-1000-8000-0026BB765291":"TargetRelativeHumidity",TargetRelativeHumidity:"00000034-0000-1000-8000-0026BB765291","00000035-0000-1000-8000-0026BB765291":"TargetTemperature",TargetTemperature:"00000035-0000-1000-8000-0026BB765291","000000C2-0000-1000-8000-0026BB765291":"TargetTiltAngle",TargetTiltAngle:"000000C2-0000-1000-8000-0026BB765291","0000007D-0000-1000-8000-0026BB765291":"TargetVerticalTiltAngle",TargetVerticalTiltAngle:"0000007D-0000-1000-8000-0026BB765291","00000134-0000-1000-8000-0026BB765291":"TargetVisibilityState",TargetVisibilityState:"00000134-0000-1000-8000-0026BB765291","00000036-0000-1000-8000-0026BB765291":"TemperatureDisplayUnits",TemperatureDisplayUnits:"00000036-0000-1000-8000-0026BB765291","0000021C-0000-1000-8000-0026BB765291":"ThirdPartyCameraActive",ThirdPartyCameraActive:"0000021C-0000-1000-8000-0026BB765291","00000704-0000-1000-8000-0026BB765291":"ThreadControlPoint",ThreadControlPoint:"00000704-0000-1000-8000-0026BB765291","00000702-0000-1000-8000-0026BB765291":"ThreadNodeCapabilities",ThreadNodeCapabilities:"00000702-0000-1000-8000-0026BB765291","00000706-0000-1000-8000-0026BB765291":"ThreadOpenThreadVersion",ThreadOpenThreadVersion:"00000706-0000-1000-8000-0026BB765291","00000703-0000-1000-8000-0026BB765291":"ThreadStatus",ThreadStatus:"00000703-0000-1000-8000-0026BB765291","00000231-0000-1000-8000-0026BB765291":"Token",Token:"00000231-0000-1000-8000-0026BB765291","00000242-0000-1000-8000-0026BB765291":"TransmitPower",TransmitPower:"00000242-0000-1000-8000-0026BB765291","00000061-0000-1000-8000-0026BB765291":"TunnelConnectionTimeout",TunnelConnectionTimeout:"00000061-0000-1000-8000-0026BB765291","00000060-0000-1000-8000-0026BB765291":"TunneledAccessoryAdvertising",TunneledAccessoryAdvertising:"00000060-0000-1000-8000-0026BB765291","00000059-0000-1000-8000-0026BB765291":"TunneledAccessoryConnected",TunneledAccessoryConnected:"00000059-0000-1000-8000-0026BB765291","00000058-0000-1000-8000-0026BB765291":"TunneledAccessoryStateNumber",TunneledAccessoryStateNumber:"00000058-0000-1000-8000-0026BB765291","000000D5-0000-1000-8000-0026BB765291":"ValveType",ValveType:"000000D5-0000-1000-8000-0026BB765291","00000037-0000-1000-8000-0026BB765291":"Version",Version:"00000037-0000-1000-8000-0026BB765291","00000229-0000-1000-8000-0026BB765291":"VideoAnalysisActive",VideoAnalysisActive:"00000229-0000-1000-8000-0026BB765291","000000C8-0000-1000-8000-0026BB765291":"VOCDensity",VOCDensity:"000000C8-0000-1000-8000-0026BB765291","00000119-0000-1000-8000-0026BB765291":"Volume",Volume:"00000119-0000-1000-8000-0026BB765291","000000E9-0000-1000-8000-0026BB765291":"VolumeControlType",VolumeControlType:"000000E9-0000-1000-8000-0026BB765291","000000EA-0000-1000-8000-0026BB765291":"VolumeSelector",VolumeSelector:"000000EA-0000-1000-8000-0026BB765291","00000222-0000-1000-8000-0026BB765291":"WakeConfiguration",WakeConfiguration:"00000222-0000-1000-8000-0026BB765291","00000211-0000-1000-8000-0026BB765291":"WANConfigurationList",WANConfigurationList:"00000211-0000-1000-8000-0026BB765291","00000212-0000-1000-8000-0026BB765291":"WANStatusList",WANStatusList:"00000212-0000-1000-8000-0026BB765291","000000B5-0000-1000-8000-0026BB765291":"WaterLevel",WaterLevel:"000000B5-0000-1000-8000-0026BB765291","0000022C-0000-1000-8000-0026BB765291":"WiFiCapabilities",WiFiCapabilities:"0000022C-0000-1000-8000-0026BB765291","0000022D-0000-1000-8000-0026BB765291":"WiFiConfigurationControl",WiFiConfigurationControl:"0000022D-0000-1000-8000-0026BB765291","0000021E-0000-1000-8000-0026BB765291":"WiFiSatelliteStatus",WiFiSatelliteStatus:"0000021E-0000-1000-8000-0026BB765291"};y.Categories={OTHER:1,BRIDGE:2,FAN:3,GARAGE_DOOR_OPENER:4,LIGHTBULB:5,DOOR_LOCK:6,OUTLET:7,SWITCH:8,THERMOSTAT:9,SENSOR:10,ALARM_SYSTEM:11,SECURITY_SYSTEM:11,DOOR:12,WINDOW:13,WINDOW_COVERING:14,PROGRAMMABLE_SWITCH:15,RANGE_EXTENDER:16,CAMERA:17,IP_CAMERA:17,VIDEO_DOORBELL:18,AIR_PURIFIER:19,AIR_HEATER:20,AIR_CONDITIONER:21,AIR_HUMIDIFIER:22,AIR_DEHUMIDIFIER:23,APPLE_TV:24,HOMEPOD:25,SPEAKER:26,AIRPORT:27,SPRINKLER:28,FAUCET:29,SHOWER_HEAD:30,TELEVISION:31,TARGET_CONTROLLER:32,ROUTER:33,AUDIO_RECEIVER:34,TV_SET_TOP_BOX:35,TV_STREAMING_STICK:36};y.Enums={AccessoryFlags:{1:"REQUIRES_ADDITIONAL_SETUP_BIT_MASK"},Active:{0:"INACTIVE",1:"ACTIVE"},AirParticulateSize:{0:"_2_5_M",1:"_10_M"},AirQuality:{0:"UNKNOWN",1:"EXCELLENT",2:"GOOD",3:"FAIR",4:"INFERIOR",5:"POOR"},CameraOperatingModeIndicator:{0:"DISABLE",1:"ENABLE"},CarbonDioxideDetected:{0:"CO2_LEVELS_NORMAL",1:"CO2_LEVELS_ABNORMAL"},CarbonMonoxideDetected:{0:"CO_LEVELS_NORMAL",1:"CO_LEVELS_ABNORMAL"},ChargingState:{0:"NOT_CHARGING",1:"CHARGING",2:"NOT_CHARGEABLE"},ClosedCaptions:{0:"DISABLED",1:"ENABLED"},ContactSensorState:{0:"CONTACT_DETECTED",1:"CONTACT_NOT_DETECTED"},CurrentAirPurifierState:{0:"INACTIVE",1:"IDLE",2:"PURIFYING_AIR"},CurrentDoorState:{0:"OPEN",1:"CLOSED",2:"OPENING",3:"CLOSING",4:"STOPPED"},CurrentFanState:{0:"INACTIVE",1:"IDLE",2:"BLOWING_AIR"},CurrentHeaterCoolerState:{0:"INACTIVE",1:"IDLE",2:"HEATING",3:"COOLING"},CurrentHeatingCoolingState:{0:"OFF",1:"HEAT",2:"COOL"},CurrentHumidifierDehumidifierState:{0:"INACTIVE",1:"IDLE",2:"HUMIDIFYING",3:"DEHUMIDIFYING"},CurrentMediaState:{0:"PLAY",1:"PAUSE",2:"STOP",4:"LOADING",5:"INTERRUPTED"},CurrentSlatState:{0:"FIXED",1:"JAMMED",2:"SWINGING"},CurrentVisibilityState:{0:"SHOWN",1:"HIDDEN"},EventSnapshotsActive:{0:"DISABLE",1:"ENABLE"},FilterChangeIndication:{0:"FILTER_OK",1:"CHANGE_FILTER"},HomeKitCameraActive:{0:"OFF",1:"ON"},InputDeviceType:{0:"OTHER",1:"TV",2:"RECORDING",3:"TUNER",4:"PLAYBACK",5:"AUDIO_SYSTEM"},InputSourceType:{0:"OTHER",1:"HOME_SCREEN",2:"TUNER",3:"HDMI",4:"COMPOSITE_VIDEO",5:"S_VIDEO",6:"COMPONENT_VIDEO",7:"DVI",8:"AIRPLAY",9:"USB",10:"APPLICATION"},InUse:{0:"NOT_IN_USE",1:"IN_USE"},IsConfigured:{0:"NOT_CONFIGURED",1:"CONFIGURED"},LeakDetected:{0:"LEAK_NOT_DETECTED",1:"LEAK_DETECTED"},LockCurrentState:{0:"UNSECURED",1:"SECURED",2:"JAMMED",3:"UNKNOWN"},LockLastKnownAction:{0:"SECURED_PHYSICALLY_INTERIOR",1:"UNSECURED_PHYSICALLY_INTERIOR",2:"SECURED_PHYSICALLY_EXTERIOR",3:"UNSECURED_PHYSICALLY_EXTERIOR",4:"SECURED_BY_KEYPAD",5:"UNSECURED_BY_KEYPAD",6:"SECURED_REMOTELY",7:"UNSECURED_REMOTELY",8:"SECURED_BY_AUTO_SECURE_TIMEOUT",9:"SECURED_PHYSICALLY",10:"UNSECURED_PHYSICALLY"},LockPhysicalControls:{0:"CONTROL_LOCK_DISABLED",1:"CONTROL_LOCK_ENABLED"},LockTargetState:{0:"UNSECURED",1:"SECURED"},ManagedNetworkEnable:{0:"DISABLED",1:"ENABLED"},ManuallyDisabled:{0:"ENABLED",1:"DISABLED"},OccupancyDetected:{0:"OCCUPANCY_NOT_DETECTED",1:"OCCUPANCY_DETECTED"},PeriodicSnapshotsActive:{0:"DISABLE",1:"ENABLE"},PictureMode:{0:"OTHER",1:"STANDARD",2:"CALIBRATED",3:"CALIBRATED_DARK",4:"VIVID",5:"GAME",6:"COMPUTER",7:"CUSTOM"},PositionState:{0:"DECREASING",1:"INCREASING",2:"STOPPED"},PowerModeSelection:{0:"SHOW",1:"HIDE"},ProgrammableSwitchEvent:{0:"SINGLE_PRESS",1:"DOUBLE_PRESS",2:"LONG_PRESS"},ProgramMode:{0:"NO_PROGRAM_SCHEDULED",1:"PROGRAM_SCHEDULED",2:"PROGRAM_SCHEDULED_MANUAL_MODE"},RecordingAudioActive:{0:"DISABLE",1:"ENABLE"},RemoteKey:{0:"REWIND",1:"FAST_FORWARD",2:"NEXT_TRACK",3:"PREVIOUS_TRACK",4:"ARROW_UP",5:"ARROW_DOWN",6:"ARROW_LEFT",7:"ARROW_RIGHT",8:"SELECT",9:"BACK",10:"EXIT",11:"PLAY_PAUSE",15:"INFORMATION"},RotationDirection:{0:"CLOCKWISE",1:"COUNTER_CLOCKWISE"},RouterStatus:{0:"READY",1:"NOT_READY"},SecuritySystemAlarmType:{0:"NO_ALARM",1:"UNKNOWN"},SecuritySystemCurrentState:{0:"STAY_ARM",1:"AWAY_ARM",2:"NIGHT_ARM",3:"DISARMED",4:"ALARM_TRIGGERED"},SecuritySystemTargetState:{0:"STAY_ARM",1:"AWAY_ARM",2:"NIGHT_ARM",3:"DISARM"},ServiceLabelNamespace:{0:"DOTS",1:"ARABIC_NUMERALS"},SiriInputType:{0:"PUSH_BUTTON_TRIGGERED_APPLE_TV"},SlatType:{0:"HORIZONTAL",1:"VERTICAL"},SleepDiscoveryMode:{0:"NOT_DISCOVERABLE",1:"ALWAYS_DISCOVERABLE"},SmokeDetected:{0:"SMOKE_NOT_DETECTED",1:"SMOKE_DETECTED"},StatusFault:{0:"NO_FAULT",1:"GENERAL_FAULT"},StatusJammed:{0:"NOT_JAMMED",1:"JAMMED"},StatusLowBattery:{0:"BATTERY_LEVEL_NORMAL",1:"BATTERY_LEVEL_LOW"},StatusTampered:{0:"NOT_TAMPERED",1:"TAMPERED"},SwingMode:{0:"SWING_DISABLED",1:"SWING_ENABLED"},TargetAirPurifierState:{0:"MANUAL",1:"AUTO"},TargetDoorState:{0:"OPEN",1:"CLOSED"},TargetFanState:{0:"MANUAL",1:"AUTO"},TargetHeaterCoolerState:{0:"AUTO",1:"HEAT",2:"COOL"},TargetHeatingCoolingState:{0:"OFF",1:"HEAT",2:"COOL",3:"AUTO"},TargetHumidifierDehumidifierState:{0:"HUMIDIFIER_OR_DEHUMIDIFIER",1:"HUMIDIFIER",2:"DEHUMIDIFIER"},TargetMediaState:{0:"PLAY",1:"PAUSE",2:"STOP"},TargetVisibilityState:{0:"SHOWN",1:"HIDDEN"},TemperatureDisplayUnits:{0:"CELSIUS",1:"FAHRENHEIT"},ThirdPartyCameraActive:{0:"OFF",1:"ON"},ValveType:{0:"GENERIC_VALVE",1:"IRRIGATION",2:"SHOWER_HEAD",3:"WATER_FAUCET"},VolumeControlType:{0:"NONE",1:"RELATIVE",2:"RELATIVE_WITH_CURRENT",3:"ABSOLUTE"},VolumeSelector:{0:"INCREMENT",1:"DECREMENT"},WiFiSatelliteStatus:{0:"UNKNOWN",1:"CONNECTED",2:"NOT_CONNECTED"}}});var S0=y0(p0(),1);var m0=(()=>{class t{transform(e){if(typeof e!="number")return e;let i=1e6/e,n=Math.round(e),r=Math.round(i);return`${n}M (${r}K)`}static \u0275fac=function(i){return new(i||t)};static \u0275pipe=h({name:"convertMired",type:t,pure:!0})}return t})();var u0=(()=>{class t{$settings=T(c0);transform(e,i=this.$settings.env.temperatureUnits){return i==="f"?Math.round((e*1.8+32)*10)/10:Math.round(e*10)/10}static \u0275fac=function(i){return new(i||t)};static \u0275pipe=h({name:"convertTemp",type:t,pure:!0})}return t})();var C0=(()=>{class t{transform(e){return typeof e!="string"?e:e.replace(/_/g," ").toLowerCase().replace(/\b\w/g,i=>i.toUpperCase()).replace(/([a-z])([A-Z])/g,"$1 $2")}static \u0275fac=function(i){return new(i||t)};static \u0275pipe=h({name:"prettify",type:t,pure:!0})}return t})();var _0=(()=>{class t{transform(e){return typeof e!="string"||!e?e:`accessories.core.${e.replace(/^([A-Z])/,n=>n.toLowerCase()).replace(/([A-Z])/g,n=>`_${n.toLowerCase()}`)}`}static \u0275fac=function(i){return new(i||t)};static \u0275pipe=h({name:"serviceToTranslationString",type:t,pure:!0})}return t})();function h0(t,c){t&1&&(a(0),p(1,"translate")),t&2&&C(" (",m(1,1,"settings.display.menu_default"),") ")}function g0(t,c){if(t&1&&(l(0,"option",30),a(1),p(2,"serviceToTranslationString"),p(3,"translate"),_(4,h0,2,3),s()),t&2){let e=c.$implicit,i=B(2);O("value",e),o(),C(" ",m(3,5,m(2,3,e))," "),o(3),S(e===i.service.type?4:-1)}}function x0(t,c){if(t&1){let e=N();l(0,"li",8)(1,"label",27),a(2),p(3,"translate"),l(4,"span",28),a(5),p(6,"translate"),s()(),l(7,"div",10)(8,"select",29),k("ngModelChange",function(n){M(e);let r=B();return H(r.service.customType,n)||(r.service.customType=n),L(n)}),x(9,g0,5,7,"option",30,g),s()()()}if(t&2){let e=B();o(2),C(" ",m(3,3,"accessories.custom_type")," "),o(3),u(m(6,5,"common.labels.beta")),o(3),w("ngModel",e.service.customType),o(),I(e.customTypeList.sort())}}function I0(t,c){if(t&1){let e=N();l(0,"li",12)(1,"span",13),a(2),p(3,"translate"),s(),l(4,"div",14)(5,"input",31),p(6,"translate"),k("ngModelChange",function(n){M(e);let r=B();return H(r.service.onDashboard,n)||(r.service.onDashboard=n),L(n)}),s(),v(7,"label",32),s()()}if(t&2){let e=B();o(2),u(m(3,3,"accessories.show_on_dashboard")),o(3),w("ngModel",e.service.onDashboard),D("aria-label",m(6,5,"accessories.show_on_dashboard"))}}function v0(t,c){if(t&1){let e=N();l(0,"span",37),R("click",function(){M(e);let n=B().$implicit,r=B();return L(r.toggleDetailsVisibility(n))}),a(1),s()}if(t&2){let e=B().$implicit,i=B();D("aria-expanded",i.isDetailsVisible[e.uuid]),o(),u(e.description)}}function D0(t,c){if(t&1&&a(0),t&2){let e=B().$implicit;C(" ",e.description," ")}}function R0(t,c){if(t&1&&(l(0,"div"),a(1),s()),t&2){let e=B(2).$implicit;o(),C("Step: ",e.minStep)}}function M0(t,c){if(t&1&&(l(0,"div"),a(1),s()),t&2){let e=B(2).$implicit;o(),C("Min: ",e.minValue)}}function L0(t,c){if(t&1&&(l(0,"div"),a(1),s()),t&2){let e=B(2).$implicit;o(),C("Max: ",e.maxValue)}}function N0(t,c){t&1&&a(0," \xB7 ")}function F0(t,c){if(t&1&&(a(0),_(1,N0,1,0)),t&2){let e=c.$implicit,i=c.$index,n=c.$count;C(" ",e," "),o(),S(i!==n-1?1:-1)}}function O0(t,c){if(t&1&&(l(0,"div"),a(1," Valid: "),x(2,F0,2,2,null,null,g),s()),t&2){let e=B(2).$implicit;o(2),I(e.validValues)}}function b0(t,c){if(t&1&&(l(0,"div",34),_(1,R0,2,1,"div"),_(2,M0,2,1,"div"),_(3,L0,2,1,"div"),_(4,O0,4,0,"div"),s()),t&2){let e=B().$implicit;o(),S("minStep"in e?1:-1),o(),S("minValue"in e?2:-1),o(),S("maxValue"in e?3:-1),o(),S("validValues"in e?4:-1)}}function P0(t,c){t&1&&a(0," Value: ")}function V0(t,c){if(t&1&&a(0),t&2){let e=B().$implicit;C(" ",e.value,"% ")}}function w0(t,c){if(t&1&&(a(0),p(1,"convertTemp")),t&2){let e=B().$implicit,i=B();C(" ",m(1,1,i.Number(e.value)),"\xB0 ")}}function H0(t,c){if(t&1&&(a(0),p(1,"convertMired")),t&2){let e=B(2).$implicit;C(" ",m(1,1,e.value)," ")}}function k0(t,c){if(t&1&&a(0),t&2){let e=B(2).$implicit;C(" ",e.value," ")}}function U0(t,c){if(t&1&&_(0,H0,2,3)(1,k0,1,1),t&2){let e,i=B().$implicit;S((e=i.type)==="ColorTemperature"?0:1)}}function $0(t,c){if(t&1&&(a(0),p(1,"prettify")),t&2){let e=B().$implicit,i=B();C(" (",m(1,1,i.enums[e.type][e.value]),") ")}}function W0(t,c){if(t&1&&(a(0),p(1,"translate")),t&2){let e=B().$implicit;C(" (",m(1,1,e.value?"status.widget.info.yes":"status.widget.info.no"),") ")}}function G0(t,c){if(t&1&&a(0),t&2){let e=B().$implicit;C(" ",e.value,"% ")}}function Y0(t,c){if(t&1&&(a(0),p(1,"convertTemp")),t&2){let e=B().$implicit,i=B();C(" ",m(1,1,i.Number(e.value)),"\xB0 ")}}function K0(t,c){if(t&1&&(a(0),p(1,"convertMired")),t&2){let e=B(2).$implicit;C(" ",m(1,1,e.value)," ")}}function q0(t,c){if(t&1&&a(0),t&2){let e=B(2).$implicit;C(" ",e.value," ")}}function j0(t,c){if(t&1&&_(0,K0,2,3)(1,q0,1,1),t&2){let e,i=B().$implicit;S((e=i.type)==="ColorTemperature"?0:1)}}function z0(t,c){if(t&1&&(a(0),p(1,"prettify")),t&2){let e=B().$implicit,i=B();C(" (",m(1,1,i.enums[e.type][e.value]),") ")}}function J0(t,c){if(t&1&&(a(0),p(1,"translate")),t&2){let e=B().$implicit;C(" (",m(1,1,e.value?"status.widget.info.yes":"status.widget.info.no"),") ")}}function X0(t,c){if(t&1&&(l(0,"li",19)(1,"span"),_(2,v0,2,2,"span",33)(3,D0,1,1),_(4,b0,5,4,"div",34),l(5,"div",35),_(6,P0,1,0),_(7,V0,1,1)(8,w0,2,3)(9,U0,2,1),_(10,$0,2,3)(11,W0,2,3),s()(),l(12,"span",36),_(13,G0,1,1)(14,Y0,2,3)(15,j0,2,1),_(16,z0,2,3)(17,J0,2,3),s()()),t&2){let e,i,n=c.$implicit,r=B();o(2),S("minStep"in n||"minValue"in n||"maxValue"in n||"validValues"in n?2:3),o(2),S(r.isDetailsVisible[n.uuid]?4:-1),o(2),S(r.isDetailsVisible[n.uuid]?6:-1),o(),S((e=n.unit)==="percentage"?7:e==="celsius"?8:9),o(3),S(r.enums[n.type]!=null&&r.enums[n.type][n.value]?10:n.format==="bool"?11:-1),o(3),S((i=n.unit)==="percentage"?13:i==="celsius"?14:15),o(3),S(r.enums[n.type]!=null&&r.enums[n.type][n.value]?16:n.format==="bool"?17:-1)}}function Z0(t,c){if(t&1){let e=N();l(0,"span",37),R("click",function(){M(e);let n=B().$implicit,r=B(2);return L(r.toggleDetailsVisibility(n))}),a(1),s()}if(t&2){let e=B().$implicit,i=B(2);D("aria-expanded",i.isDetailsVisible[e.uuid]),o(),u(e.description)}}function Q0(t,c){if(t&1&&a(0),t&2){let e=B().$implicit;C(" ",e.description," ")}}function ee(t,c){if(t&1&&(l(0,"div"),a(1),s()),t&2){let e=B(2).$implicit;o(),C("Step: ",e.minStep)}}function te(t,c){if(t&1&&(l(0,"div"),a(1),s()),t&2){let e=B(2).$implicit;o(),C("Min: ",e.minValue)}}function ie(t,c){if(t&1&&(l(0,"div"),a(1),s()),t&2){let e=B(2).$implicit;o(),C("Max: ",e.maxValue)}}function ne(t,c){t&1&&a(0," \xB7 ")}function oe(t,c){if(t&1&&(a(0),_(1,ne,1,0)),t&2){let e=c.$implicit,i=c.$index,n=c.$count;C(" ",e," "),o(),S(i!==n-1?1:-1)}}function ae(t,c){if(t&1&&(l(0,"div"),a(1," Valid: "),x(2,oe,2,2,null,null,g),s()),t&2){let e=B(2).$implicit;o(2),I(e.validValues)}}function re(t,c){if(t&1&&(l(0,"div",34),_(1,ee,2,1,"div"),_(2,te,2,1,"div"),_(3,ie,2,1,"div"),_(4,ae,4,0,"div"),s()),t&2){let e=B().$implicit;o(),S("minStep"in e?1:-1),o(),S("minValue"in e?2:-1),o(),S("maxValue"in e?3:-1),o(),S("validValues"in e?4:-1)}}function se(t,c){t&1&&a(0," Value: ")}function ce(t,c){if(t&1&&a(0),t&2){let e=B().$implicit;C(" ",e.value,"% ")}}function Be(t,c){if(t&1&&(a(0),p(1,"convertTemp")),t&2){let e=B().$implicit,i=B(2);C(" ",m(1,1,i.Number(e.value)),"\xB0 ")}}function le(t,c){if(t&1&&(a(0),p(1,"convertMired")),t&2){let e=B(2).$implicit;C(" ",m(1,1,e.value)," ")}}function de(t,c){if(t&1&&a(0),t&2){let e=B(2).$implicit;C(" ",e.value," ")}}function pe(t,c){if(t&1&&_(0,le,2,3)(1,de,1,1),t&2){let e,i=B().$implicit;S((e=i.type)==="ColorTemperature"?0:1)}}function me(t,c){if(t&1&&(a(0),p(1,"prettify")),t&2){let e=B().$implicit,i=B(2);C(" (",m(1,1,i.enums[e.type][e.value]),") ")}}function ue(t,c){if(t&1&&(a(0),p(1,"translate")),t&2){let e=B().$implicit;C(" (",m(1,1,e.value?"status.widget.info.yes":"status.widget.info.no"),") ")}}function Ce(t,c){if(t&1&&a(0),t&2){let e=B().$implicit;C(" ",e.value,"% ")}}function _e(t,c){if(t&1&&(a(0),p(1,"convertTemp")),t&2){let e=B().$implicit,i=B(2);C(" ",m(1,1,i.Number(e.value)),"\xB0 ")}}function Se(t,c){if(t&1&&(a(0),p(1,"convertMired")),t&2){let e=B(2).$implicit;C(" ",m(1,1,e.value)," ")}}function fe(t,c){if(t&1&&a(0),t&2){let e=B(2).$implicit;C(" ",e.value," ")}}function Ae(t,c){if(t&1&&_(0,Se,2,3)(1,fe,1,1),t&2){let e,i=B().$implicit;S((e=i.type)==="ColorTemperature"?0:1)}}function Te(t,c){if(t&1&&(a(0),p(1,"prettify")),t&2){let e=B().$implicit,i=B(2);C(" (",m(1,1,i.enums[e.type][e.value]),") ")}}function Ee(t,c){if(t&1&&(a(0),p(1,"translate")),t&2){let e=B().$implicit;C(" (",m(1,1,e.value?"status.widget.info.yes":"status.widget.info.no"),") ")}}function ye(t,c){if(t&1&&(l(0,"li",19)(1,"span"),_(2,Z0,2,2,"span",33)(3,Q0,1,1),_(4,re,5,4,"div",34),l(5,"div",35),_(6,se,1,0),_(7,ce,1,1)(8,Be,2,3)(9,pe,2,1),_(10,me,2,3)(11,ue,2,3),s()(),l(12,"span",36),_(13,Ce,1,1)(14,_e,2,3)(15,Ae,2,1),_(16,Te,2,3)(17,Ee,2,3),s()()),t&2){let e,i,n=c.$implicit,r=B(2);o(2),S("minStep"in n||"minValue"in n||"maxValue"in n||"validValues"in n?2:3),o(2),S(r.isDetailsVisible[n.uuid]?4:-1),o(2),S(r.isDetailsVisible[n.uuid]?6:-1),o(),S((e=n.unit)==="percentage"?7:e==="celsius"?8:9),o(3),S(r.enums[n.type]!=null&&r.enums[n.type][n.value]?10:n.format==="bool"?11:-1),o(3),S((i=n.unit)==="percentage"?13:i==="celsius"?14:15),o(3),S(r.enums[n.type]!=null&&r.enums[n.type][n.value]?16:n.format==="bool"?17:-1)}}function he(t,c){if(t&1&&(l(0,"ul",5)(1,"li",17)(2,"h6",18),a(3),p(4,"translate"),s()(),l(5,"li",19)(6,"span",13),a(7),p(8,"translate"),s(),l(9,"span",20),a(10),s()(),l(11,"li",19)(12,"span",13),a(13),p(14,"translate"),s(),l(15,"span",20),a(16),s()(),x(17,ye,18,7,"li",19,g),s()),t&2){let e=c.$implicit;o(3),u(m(4,5,"accessories.service_info")),o(4),u(m(8,7,"accessories.service")),o(3),u(e.humanType),o(3),u(m(14,9,"accessories.name")),o(3),u(e.serviceName),o(),I(e.serviceCharacteristics)}}function ge(t,c){if(t&1&&(l(0,"li",19)(1,"span",13),a(2),p(3,"translate"),s(),l(4,"span",20),a(5),s()()),t&2){let e=B(2);o(2),u(m(3,2,"child_bridge.config.platform")),o(3),u(e.matchedCachedAccessory.platform)}}function xe(t,c){if(t&1&&(l(0,"li",19)(1,"span",13),a(2),p(3,"translate"),s(),l(4,"span",20),a(5),s()()),t&2){let e=B(2);o(2),u(m(3,2,"child_bridge.config.accessory")),o(3),u(e.matchedCachedAccessory.accessory)}}function Ie(t,c){if(t&1&&(l(0,"li",19)(1,"span",13),a(2),p(3,"translate"),s(),l(4,"span",20),a(5),s()(),_(6,ge,6,4,"li",19),_(7,xe,6,4,"li",19)),t&2){let e=B();o(2),u(m(3,4,"accessories.plugin")),o(3),u(e.matchedCachedAccessory.plugin),o(),S(e.matchedCachedAccessory.platform?6:-1),o(),S(e.matchedCachedAccessory.accessory?7:-1)}}function ve(t,c){if(t&1&&(l(0,"li",19)(1,"span",13),a(2),s(),l(3,"span",20),a(4),s()()),t&2){let e=c.$implicit;o(2),u(e.key),o(2),u(e.value)}}function De(t,c){if(t&1&&(l(0,"li",19)(1,"span",13),a(2),p(3,"translate"),s(),l(4,"span",20),a(5),s()()),t&2){let e=B();o(2),u(m(3,2,"child_bridge.config.name")),o(3),u(e.matchedCachedAccessory.bridge)}}function Re(t,c){if(t&1){let e=N();l(0,"li",19)(1,"span",22),a(2,"UUID"),s(),l(3,"span",20),a(4),s()(),l(5,"li",38)(6,"span",13),a(7),p(8,"translate"),s(),l(9,"button",39),R("click",function(){M(e);let n=B();return L(n.removeSingleCachedAccessories())}),v(10,"i",40),s()()}if(t&2){let e=B();o(4),u(e.matchedCachedAccessory.UUID),o(3),u(m(8,2,"accessories.button_remove"))}}var f0=(()=>{class t{$activeModal=T(n0);$modal=T(U);allCustomTypeList=[["AirPurifier","Switch","Outlet","Fan","Lightbulb","Heater","Cooler","Humidifier","Dehumidifier","Television","Valve","RobotVacuum","WashingMachine"],["Switch","Outlet","LockMechanism"],["Switch","Outlet","GarageDoorOpener"],["Door","Window","WindowCovering"],["Doorbell","Speaker","SmartSpeaker","Microphone"]];accessoryCache;pairingCache;service;isDetailsVisible={};accessoryInformation;extraServices=[];matchedCachedAccessory=null;enums=S0.Enums;customTypeList=[];ngOnInit(){this.accessoryInformation=Object.entries(this.service.accessoryInformation).map(([e,i])=>({key:e,value:i})),this.matchedCachedAccessory=this.matchToCachedAccessory(),this.service.type==="LockMechanism"&&Object.values(this.service.linkedServices).filter(e=>e.type==="LockManagement").forEach(e=>this.extraServices.push(e)),this.customTypeList=[...new Set(this.allCustomTypeList.filter(e=>e.includes(this.service.type)).flat())],this.service.customType||(this.service.customType=this.service.type)}removeSingleCachedAccessories(){this.$activeModal.close();let e=this.$modal.open(d0,{size:"lg",backdrop:"static"});e.componentInstance.selectedBridge=this.service.instance.username.replaceAll(":","")}toggleDetailsVisibility(e){("minStep"in e||"minValue"in e||"maxValue"in e||"validValues"in e)&&(this.isDetailsVisible[e.uuid]=!this.isDetailsVisible[e.uuid])}dismissModal(){this.$activeModal.dismiss("Dismiss")}matchToCachedAccessory(){let e=this.service.instance.username,i=this.pairingCache.find(n=>n._username===e);if(i){let n=i._main?"cachedAccessories":`cachedAccessories.${i._id}`,r=this.accessoryCache.filter(d=>d.$cacheFile===n);if(r.length){let d=this.service.accessoryInformation.Name,f=this.service.accessoryInformation["Serial Number"],A=r.filter(E=>{let G=E.services.find(F=>F.constructorName==="AccessoryInformation"),A0=G.characteristics.find(F=>F.displayName==="Name"),T0=G.characteristics.find(F=>F.displayName==="Serial Number");return A0.value===d&&T0.value===f});if(A.length===1)return K(Y({},A[0]),{bridge:i.name})}}}Number=Number;static \u0275fac=function(i){return new(i||t)};static \u0275cmp=j({type:t,selectors:[["ng-component"]],inputs:{accessoryCache:"accessoryCache",pairingCache:"pairingCache",service:"service"},decls:97,vars:60,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"list-group","list-group-box","mb-3"],[1,"list-group-item","text-center","grey-text","small"],[3,"innerHTML"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","form-name",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["type","text","id","form-name","autocomplete","off",1,"form-control","custom-input",3,"ngModelChange","ngModel"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-start"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox","id","hide-accessory",1,"rendux-input",3,"ngModelChange","ngModel"],["for","hide-accessory",1,"rendux-label","ms-3"],[1,"list-group-item"],[1,"mb-0","text-center"],[1,"list-group-item","d-flex","justify-content-between","align-items-left","flex-column","flex-md-row"],[1,"text-start","text-md-end","grey-text","font-monospace"],[1,"list-group","list-group-box","mb-0"],[1,"text-start","font-monospace"],[1,"modal-footer","justify-content-between"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-end"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"badge","badge-primary","ms-1"],[1,"custom-select",3,"ngModelChange","ngModel"],[3,"value"],["type","checkbox","id","show-on-dashboard",1,"rendux-input","mb-0",3,"ngModelChange","ngModel"],["for","show-on-dashboard",1,"rendux-label","ms-3"],[1,"hover-pointer"],[1,"grey-text","m-0","p-0","font-monospace"],[1,"d-block","d-md-none","font-monospace","grey-text"],[1,"text-start","text-md-end","grey-text","font-monospace","d-none","d-md-block","align-content-center"],[1,"hover-pointer",3,"click"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"btn","btn-primary","m-0","ms-3",3,"click"],[1,"fas","fa-arrow-right"]],template:function(i,n){i&1&&(l(0,"div",0)(1,"div",1)(2,"h5",2),a(3),s(),l(4,"button",3),p(5,"translate"),R("click",function(){return n.dismissModal()}),s()(),l(6,"div",4)(7,"ul",5)(8,"li",6),v(9,"span",7),p(10,"translate"),v(11,"br")(12,"span",7),p(13,"translate"),s(),l(14,"li",8)(15,"label",9),a(16),p(17,"translate"),s(),l(18,"div",10)(19,"input",11),R("ngModelChange",function(d){return n.service.customName=d}),s()()(),_(20,x0,11,7,"li",8),l(21,"li",12)(22,"span",13),a(23),p(24,"translate"),s(),l(25,"div",14)(26,"input",15),p(27,"translate"),k("ngModelChange",function(d){return H(n.service.hidden,d)||(n.service.hidden=d),d}),s(),v(28,"label",16),s()(),_(29,I0,8,7,"li",12),s(),l(30,"ul",5)(31,"li",17)(32,"h6",18),a(33),p(34,"translate"),s()(),l(35,"li",19)(36,"span",13),a(37),p(38,"translate"),s(),l(39,"span",20),a(40),s()(),l(41,"li",19)(42,"span",13),a(43),p(44,"translate"),s(),l(45,"span",20),a(46),s()(),x(47,X0,18,7,"li",19,g),s(),x(49,he,19,11,"ul",5,g),l(51,"ul",21)(52,"li",17)(53,"h6",18),a(54),p(55,"translate"),s()(),_(56,Ie,8,6),x(57,ve,5,2,"li",19,g),l(59,"li",19)(60,"span",13),a(61),p(62,"translate"),s(),l(63,"span",20),a(64),s()(),_(65,De,6,4,"li",19),l(66,"li",19)(67,"span",13),a(68),p(69,"translate"),s(),l(70,"span",20),a(71),s()(),l(72,"li",19)(73,"span",13),a(74),p(75,"translate"),s(),l(76,"span",20),a(77),s()(),l(78,"li",19)(79,"span",22),a(80,"aid"),s(),l(81,"span",20),a(82),s()(),l(83,"li",19)(84,"span",22),a(85,"iid"),s(),l(86,"span",20),a(87),s()(),_(88,Re,11,4),s()(),l(89,"div",23),v(90,"div",13),l(91,"div",24)(92,"button",25),p(93,"translate"),R("click",function(){return n.dismissModal()}),a(94),p(95,"translate"),s()(),v(96,"div",26),s()()),i&2&&(o(3),u(n.service.customName||n.service.serviceName),o(),D("aria-label",m(5,30,"form.button_close")),o(5),O("innerHTML",m(10,32,"accessories.only_ui"),W),o(3),O("innerHTML",m(13,34,"accessories.only_ui_2"),W),o(4),u(m(17,36,"accessories.custom_name")),o(3),O("ngModel",n.service.customName||n.service.serviceName),o(),S(n.customTypeList.length?20:-1),o(3),u(m(24,38,"accessories.hide_this_accessory")),o(3),w("ngModel",n.service.hidden),D("aria-label",m(27,40,"accessories.hide_this_accessory")),o(3),S(n.service.hidden?-1:29),o(4),u(m(34,42,"accessories.service_info")),o(4),u(m(38,44,"accessories.service")),o(3),u(n.service.humanType),o(3),u(m(44,46,"accessories.name")),o(3),u(n.service.serviceName),o(),I(n.service.serviceCharacteristics),o(2),I(n.extraServices),o(5),u(m(55,48,"accessories.accessory_info")),o(2),S(n.matchedCachedAccessory?56:-1),o(),I(n.accessoryInformation),o(4),u(m(62,50,"users.label_username")),o(3),u(n.service.instance.username),o(),S(n.matchedCachedAccessory?65:-1),o(3),u(m(69,52,"accessories.bridge_ip")),o(3),u(n.service.instance.ipAddress),o(3),u(m(75,54,"accessories.bridge_port")),o(3),u(n.service.instance.port),o(5),u(n.service.aid),o(5),u(n.service.iid),o(),S(n.matchedCachedAccessory?88:-1),o(4),D("aria-label",m(93,56,"form.button_close")),o(2),C(" ",m(95,58,"form.button_close")," "))},dependencies:[i0,e0,t0,J,z,Q,X,Z,a0,u0,C0,m0,_0],encapsulation:2})}return t})();var ct=(()=>{class t{$api=T(s0);$auth=T(B0);$modal=T(U);$toastr=T(r0);$translate=T(o0);$ws=T(l0);accessoryCache=[];pairingCache=[];io;roomsOrdered=!1;hiddenTypes=["InputSource","LockManagement","CameraRTPStreamManagement","ProtocolInformation"];layoutSaved=new $;accessoryData=new $;readyForControl=!1;accessories={services:[]};rooms=[];accessoryLayout;originalLayout;constructor(){this.$auth.user.admin&&(V(this.$api.get("/server/cached-accessories")).then(e=>{this.accessoryCache=e}).catch(e=>console.error(e)),V(this.$api.get("/server/pairings")).then(e=>{this.pairingCache=e}).catch(e=>console.error(e)))}showAccessoryInformation(e){let i=this.$modal.open(f0,{size:"lg",backdrop:"static"});return i.componentInstance.service=e,i.componentInstance.accessoryCache=this.accessoryCache,i.componentInstance.pairingCache=this.pairingCache,i.result.then(()=>this.saveLayout()).catch(()=>this.saveLayout()),!1}stop(){this.io.end(),this.rooms=[],this.accessories={services:[]},this.roomsOrdered=!1,delete this.accessoryLayout,delete this.originalLayout}start(){return P(this,null,function*(){this.readyForControl=!1,this.io=this.$ws.connectToNamespace("accessories"),yield this.loadLayout(),this.io.connected?(this.io.socket.emit("get-accessories"),setTimeout(()=>{this.io.connected.subscribe(()=>{this.io.socket.emit("get-accessories")})},1e3)):this.io.connected.subscribe(()=>{this.io.socket.emit("get-accessories")}),this.io.socket.on("accessories-data",e=>{this.parseServices(e),this.generateHelpers(),this.sortIntoRooms(),this.roomsOrdered||(this.orderRooms(),this.applyCustomAttributes(),this.roomsOrdered=!0),this.accessoryData.next(e)}),this.io.socket.on("accessories-reload-required",()=>P(this,null,function*(){this.stop(),yield this.start()})),this.io.socket.on("accessory-control-failure",e=>{console.error(e),this.$toastr.error(e,this.$translate.instant("toast.title_error"))}),this.io.socket.on("accessories-ready-for-control",()=>{this.readyForControl=!0})})}saveLayout(){let e=this.rooms.map(i=>({name:i.name,services:i.services.map(n=>({uniqueId:n.uniqueId,name:n.serviceName,serial:n.accessoryInformation["Serial Number"],bridge:n.instance.username,aid:n.aid,iid:n.iid,uuid:n.uuid,customName:n.customName||void 0,customType:n.customType||void 0,hidden:n.hidden||void 0,onDashboard:n.onDashboard||void 0}))})).filter(i=>i.services.length);this.accessoryLayout=this.mergeWithUndiscoveredServices(e),this.io.request("save-layout",{user:this.$auth.user.username,layout:this.accessoryLayout}).subscribe({next:()=>this.layoutSaved.next(void 0),error:i=>{console.error(i),this.$toastr.error(i.message,this.$translate.instant("toast.title_error"))}})}loadLayout(){return P(this,null,function*(){this.accessoryLayout=yield V(this.io.request("get-layout",{user:this.$auth.user.username})),this.originalLayout=JSON.parse(JSON.stringify(this.accessoryLayout)),this.rooms=this.accessoryLayout.map(e=>({name:e.name,services:[]}))})}mergeWithUndiscoveredServices(e){if(!this.originalLayout)return e;let i=JSON.parse(JSON.stringify(e)),n=new Set;return i.forEach(r=>{r.services.forEach(d=>{let f=null;for(let A of this.originalLayout){for(let E of A.services)if(E.name){if(E.uniqueId===d.uniqueId){f=E;break}if(!f&&E.name===d.name&&E.serial===d.serial&&E.bridge===d.bridge&&E.uuid===d.uuid){f=E;break}}if(f)break}f&&n.add(f.uniqueId)})}),this.originalLayout.forEach(r=>{r.services.forEach(d=>{if(n.has(d.uniqueId)||!d.name)return;let f=i.find(A=>A.name===r.name);f||(f={name:r.name,services:[]},i.push(f)),f.services.push({uniqueId:d.uniqueId,name:d.name,bridge:d.bridge,serial:d.serial,aid:d.aid,iid:d.iid,uuid:d.uuid,customName:d.customName,customType:d.customType,hidden:d.hidden,onDashboard:d.onDashboard})})}),i.filter(r=>r.services.length)}parseServices(e){if(!this.accessories.services.length){this.accessories.services=e;return}e.forEach(i=>{let n=this.accessories.services.find(r=>r.uniqueId===i.uniqueId);i.type==="LockMechanism"&&this.attachLockManagementToMechanism(i),n?Object.assign(n,i):this.accessories.services.push(i)})}sortIntoRooms(){let e=new Set(this.hiddenTypes);this.accessories.services.forEach(i=>{if(e.has(i.type))return;if(i.linked&&(i.linkedServices={},i.linked.forEach(r=>{i.linkedServices[r]=this.accessories.services.find(d=>d.aid===i.aid&&d.iid===r&&d.instance.username===i.instance.username)})),!this.rooms.find(r=>r.services.find(d=>d.uniqueId===i.uniqueId))){let r=null,d=null;for(let f of this.accessoryLayout){if(d=f.services.find(A=>A.uniqueId===i.uniqueId),d){r=f;break}if(d=f.services.find(A=>A.name===i.serviceName&&A.serial===i.accessoryInformation?.["Serial Number"]&&A.bridge===i.instance?.username&&A.uuid===i.uuid),d){r=f;break}}if(r&&d){let f=this.rooms.find(A=>A.name===r.name);d.customType&&(i.customType=d.customType),d.customName&&(i.customName=d.customName),d.hidden&&(i.hidden=d.hidden),d.onDashboard&&(i.onDashboard=d.onDashboard),f.services.push(i)}else{let f=this.rooms.find(A=>A.name==="Default Room");f?f.services.push(i):this.rooms.push({name:"Default Room",services:[i]})}}})}orderRooms(){this.rooms.forEach(e=>{let i=this.accessoryLayout.find(n=>n.name===e.name);e.services.sort((n,r)=>{let d=i.services.findIndex(A=>A.uniqueId===n.uniqueId),f=i.services.findIndex(A=>A.uniqueId===r.uniqueId);return d<f?-1:d>f?1:0})})}applyCustomAttributes(){this.rooms.forEach(e=>{let i=this.accessoryLayout.find(n=>n.name===e.name);e.services.forEach(n=>{let r=i.services.find(d=>d.uniqueId===n.uniqueId);Object.assign(n,r)})})}generateHelpers(){this.accessories.services.forEach(e=>{e.getCharacteristic||(e.getCharacteristic=i=>{let n=e.serviceCharacteristics.find(r=>r.type===i);return n?(n.setValue=r=>new Promise(d=>(this.readyForControl||d(void 0),this.io.socket.emit("accessory-control",{set:{uniqueId:e.uniqueId,aid:e.aid,siid:e.iid,iid:n.iid,value:r}}),d(void 0))),n):null})})}attachLockManagementToMechanism(e){let i=[],n=[];for(let r of this.accessories.services)r.type==="LockMechanism"&&r.accessoryInformation.Name===e.accessoryInformation.Name&&r.accessoryInformation["Serial Number"]===e.accessoryInformation["Serial Number"]?i.push(r):r.type==="LockManagement"&&r.accessoryInformation.Name===e.accessoryInformation.Name&&r.accessoryInformation["Serial Number"]===e.accessoryInformation["Serial Number"]&&n.push(r);if(i.length===1&&n.length===1){let r=n[0];e.linkedServices||(e.linkedServices={}),e.linkedServices[r.iid]=r}}static \u0275fac=function(i){return new(i||t)};static \u0275prov=q({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();export{m0 as a,u0 as b,ct as c};
@@ -1 +0,0 @@
1
- import{a as Ei}from"./chunk-73TX7DHV.js";import{a as Ti}from"./chunk-VYC5JLE6.js";import{N as Vi,P as X}from"./chunk-P7TZIGJS.js";import"./chunk-ADW6BF5G.js";import{f as j}from"./chunk-732XLY23.js";import"./chunk-WWSLIQVD.js";import{a as Ii}from"./chunk-D5RKKI2A.js";import"./chunk-AI6E5JVH.js";import"./chunk-EAGKQ5OJ.js";import"./chunk-YNONXMOG.js";import"./chunk-OS2SEJZU.js";import"./chunk-7UDDRMZZ.js";import"./chunk-TSFGO3MA.js";import{a as Bi}from"./chunk-OAHDGV32.js";import{g as bi,h as xi,i as vi,j as Pi,k as yi,l as wi,m as A,n as R,t as L}from"./chunk-ZEI3HZ6P.js";import{B as Ci,C as hi,c as di,e as pi,f as ci,g as ui,j as mi,m as gi,q as _i,r as fi}from"./chunk-N2TWGDNX.js";import{a as K}from"./chunk-325LPX6W.js";import{b as J}from"./chunk-WLGXJQPD.js";import{b as Si,e as ki}from"./chunk-CYBDQV2B.js";import{b as W}from"./chunk-U5JF2ZOK.js";import{k as O,l as B,n as G,q as Q}from"./chunk-SOT54YHI.js";import{$b as h,Ib as P,La as V,Lb as _,Ma as $,Na as ti,Nb as u,Qa as n,Rb as ni,Rc as D,Sb as oi,Tb as ai,Uc as ri,Yc as si,Zb as Z,_b as c,ac as b,db as k,h as I,jc as ii,mc as M,na as y,nc as T,oc as li,pb as S,qb as m,rb as g,sa as x,sc as r,ta as v,tb as z,tc as s,ub as U,uc as E,vb as q,wb as C,x as H,xb as a,yb as l,zb as p}from"./chunk-JJ7TVAIH.js";var ji=e=>({pluginName:e}),Fi=(e,d)=>({setting:e,value:d});function zi(e,d){e&1&&(a(0,"li"),c(1),r(2,"translate"),l(),a(3,"li"),c(4),r(5,"translate"),l()),e&2&&(n(),h(s(2,2,"plugins.manage.confirm_disable_platform_1")),n(3),h(s(5,4,"plugins.manage.confirm_disable_platform_2")))}function Ui(e,d){e&1&&(a(0,"li"),c(1),r(2,"translate"),l(),a(3,"li"),c(4),r(5,"translate"),l()),e&2&&(n(),h(s(2,2,"plugins.manage.confirm_disable_accessory_1")),n(3),h(s(5,4,"plugins.manage.confirm_disable_accessory_2")))}function qi(e,d){if(e&1&&(a(0,"ul",15),p(1,"li",16),r(2,"translate"),a(3,"ul",17),m(4,zi,6,6)(5,Ui,6,6),l()()),e&2){let i=u(2);n(),C("innerHtml",E(2,2,"plugins.manage.confirm_disable_setting",T(5,Fi,i.keepOrphansName,i.keepOrphansValue)),V),n(3),g(i.keepOrphans?4:5)}}function Ri(e,d){e&1&&(a(0,"ul",15)(1,"li"),c(2),r(3,"translate"),l(),a(4,"li"),c(5),r(6,"translate"),l()()),e&2&&(n(2),h(s(3,2,"plugins.manage.confirm_disable_accessory_1")),n(3),h(s(6,4,"plugins.manage.confirm_disable_accessory_2")))}function Li(e,d){if(e&1&&m(0,qi,6,8,"ul",15)(1,Ri,7,6,"ul",15),e&2){let i=u();g(i.isConfiguredDynamicPlatform?0:1)}}var $i=(()=>{class e{$activeModal=y(A);$translate=y(O);pluginName;isConfigured=!1;isConfiguredDynamicPlatform=!1;keepOrphans=!1;keepOrphansName=`<code>${this.$translate.instant("settings.startup.keep_accessories")}</code>`;keepOrphansValue=`<code>${this.keepOrphans}</code>`;dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(){this.$activeModal.close()}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=k({type:e,selectors:[["ng-component"]],inputs:{pluginName:"pluginName",isConfigured:"isConfigured",isConfiguredDynamicPlatform:"isConfiguredDynamicPlatform",keepOrphans:"keepOrphans"},decls:25,vars:21,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"mb-3","text-center"],[1,"fas","fa-circle-pause","primary-text",2,"font-size","75px"],["type","warning",1,"mb-0",3,"dismissible"],[1,"w-100","text-center","mb-0"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click"],[1,"mb-3"],[3,"innerHtml"],[1,"mb-1"]],template:function(o,t){o&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),c(3),l(),a(4,"button",3),r(5,"translate"),_("click",function(){return t.dismissModal()}),l()(),a(6,"div",4)(7,"div",5),p(8,"i",6),l(),m(9,Li,2,1),a(10,"ngb-alert",7)(11,"p",8),c(12),r(13,"translate"),l()()(),a(14,"div",9)(15,"div",10)(16,"button",11),r(17,"translate"),_("click",function(){return t.dismissModal()}),c(18),r(19,"translate"),l()(),p(20,"div",12),a(21,"div",13)(22,"button",14),_("click",function(){return t.closeModal()}),c(23),r(24,"translate"),l()()()()),o&2&&(n(3),h(t.pluginName),n(),S("aria-label",s(5,8,"form.button_close")),n(5),g(t.isConfigured?9:-1),n(),C("dismissible",!1),n(2),h(E(13,10,"plugins.manage.confirm_disable",M(19,ji,t.pluginName))),n(4),S("aria-label",s(17,13,"form.button_close")),n(2),b(" ",s(19,15,"form.button_close")," "),n(5),b(" ",s(24,17,"plugins.manage.disable")," "))},dependencies:[bi,B],encapsulation:2})}return e})();var Gi=e=>({author:e});function Qi(e,d){if(e&1&&(a(0,"li",9),p(1,"i",15),a(2,"a",16),c(3),l()()),e&2){let i=d.$implicit,o=u();n(),C("ngClass",o.getIconClass(i.type)),n(),C("href",i.url,$),n(),h(i.url)}}var Mi=(()=>{class e{$activeModal=y(A);plugin;fundingOptions;ngOnInit(){this.plugin.funding||this.$activeModal.close(),this.plugin.name==="homebridge-config-ui-x"&&(this.plugin.author="oznu"),Array.isArray(this.plugin.funding)?this.fundingOptions=this.plugin.funding.map(i=>{if(typeof i=="string")return{type:"other",url:i};if(typeof i=="object")return{type:i.type||"other",url:i.url}}):typeof this.plugin.funding=="string"?this.fundingOptions=[{type:"other",url:this.plugin.funding}]:typeof this.plugin.funding=="object"&&(this.fundingOptions=[{type:this.plugin.funding.type||"other",url:this.plugin.funding.url}])}getIconClass(i){switch(i.toLowerCase()){case"paypal":return"fab fa-paypal";case"github":return"fab fa-github";case"patreon":return"fab fa-patreon";case"kofi":case"ko-fi":return"fas fa-coffee";default:return"fas fa-link"}}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=k({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin"},decls:28,vars:21,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","pink-text","mb-3"],[1,"fas","fa-heart",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box"],[1,"list-group-item"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-end"],[1,"me-2","primary-text","fa-xl",3,"ngClass"],["target","_blank","rel","noopener noreferrer",1,"text-break-all",3,"href"]],template:function(o,t){o&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),c(3),r(4,"translate"),l(),a(5,"button",3),r(6,"translate"),_("click",function(){return t.dismissModal()}),l()(),a(7,"div",4)(8,"div",5),p(9,"i",6),l(),a(10,"ul",7)(11,"li"),c(12),r(13,"translate"),l(),a(14,"li"),c(15),r(16,"translate"),l()(),a(17,"ul",8),U(18,Qi,4,3,"li",9,z),l()(),a(20,"div",10),p(21,"div",11),a(22,"div",12)(23,"button",13),r(24,"translate"),_("click",function(){return t.dismissModal()}),c(25),r(26,"translate"),l()(),p(27,"div",14),l()()),o&2&&(n(3),h(E(4,6,"plugins.donate.tile_donate_to",M(19,Gi,"@"+t.plugin.author))),n(2),S("aria-label",s(6,9,"form.button_close")),n(7),h(s(13,11,"plugins.donate.message_1")),n(3),h(s(16,13,"plugins.donate.message_2")),n(3),q(t.fundingOptions),n(5),S("aria-label",s(24,15,"form.button_close")),n(2),b(" ",s(26,17,"form.button_close")," "))},dependencies:[D,B],styles:[".text-break-all[_ngcontent-%COMP%]{word-break:break-all}"]})}return e})();var Wi=(e,d)=>({"orange-text":e,"grey-text":d}),ei=e=>({opacity:e}),Ji=(e,d)=>({"green-text":e,"grey-text":d}),Ki=(e,d)=>({"purple-text":e,"grey-text":d}),Xi=(e,d)=>({scopedLink:e,verifiedLink:d});function Yi(e,d){e&1&&(a(0,"h6",18),c(1),r(2,"translate"),l(),a(3,"p",19),c(4),r(5,"translate"),l(),a(6,"p",19),c(7),r(8,"translate"),l()),e&2&&(n(),h(s(2,3,"plugins.manage.scoped_subtitle")),n(3),h(s(5,5,"plugins.manage.scoped_message")),n(3),h(s(8,7,"plugins.manage.verified_message")))}function Zi(e,d){e&1&&(a(0,"h6",18),c(1),r(2,"translate"),l(),a(3,"p",19),c(4),r(5,"translate"),l()),e&2&&(n(),h(s(2,2,"plugins.manage.verified_subtitle")),n(3),h(s(5,4,"plugins.manage.verified_message")))}function ie(e,d){e&1&&(a(0,"h6",18),c(1),r(2,"translate"),l(),a(3,"p",19),c(4),r(5,"translate"),l()),e&2&&(n(),h(s(2,2,"plugins.manage.unverified_subtitle")),n(3),h(s(5,4,"plugins.manage.unverified_message")))}function ee(e,d){if(e&1){let i=P();a(0,"button",20),_("click",function(){x(i);let t=u();return v(t.dismissModal())}),c(1),r(2,"translate"),l()}e&2&&(n(),b(" ",s(2,1,"form.button_close")," "))}function te(e,d){if(e&1){let i=P();a(0,"button",20),_("click",function(){x(i);let t=u();return v(t.dismissModal())}),c(1),r(2,"translate"),l()}e&2&&(n(),b(" ",s(2,1,"form.button_close")," "))}function ne(e,d){if(e&1&&(a(0,"a",17),c(1),r(2,"translate"),p(3,"i",21),l()),e&2){let i=u();C("href",i.plugin.links.homepage||i.plugin.links.npm,$),n(),b(" ",s(2,2,"plugins.button_homepage")," ")}}var Di=(()=>{class e{$activeModal=y(A);plugin;defaultIcon="assets/hb-icon.png";linkScoped='<a href="https://github.com/homebridge/plugins/wiki/Scoped-Plugins" target="_blank"><i class="fas fa-external-link-alt primary-text"></i></a>';linkVerified='<a href="https://github.com/homebridge/plugins/wiki/Verified-Plugins" target="_blank"><i class="fas fa-external-link-alt primary-text"></i></a>';ngOnInit(){this.plugin.icon||(this.plugin.icon=this.defaultIcon)}handleIconError(){this.plugin.icon=this.defaultIcon}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=k({type:e,selectors:[["ng-component"]],inputs:{plugin:"plugin"},decls:32,vars:45,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body","text-center"],["alt","Plugin Icon",1,"mb-3","plugin-icon-card",3,"error","src"],[1,"mb-1"],[1,"grey-text","mb-0","font-monospace"],[1,"grey-text","mb-1","font-monospace"],[1,"mb-3"],[1,"fas","fa-shield-alt","mb-3",2,"font-size","48px",3,"ngClass","ngStyle"],[1,"mb-0","grey-text",3,"innerHTML"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["target","_blank","rel","noopener noreferrer",1,"btn","btn-primary","text-decoration-none",3,"href"],[1,"mb-2"],[1,"mb-1","grey-text"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"fas","fa-external-link-alt"]],template:function(o,t){o&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),c(3),r(4,"translate"),l(),a(5,"button",3),r(6,"translate"),_("click",function(){return t.dismissModal()}),l()(),a(7,"div",4)(8,"img",5),_("error",function(){return t.handleIconError()}),l(),a(9,"h4",6),c(10),l(),a(11,"p",7),c(12),l(),a(13,"p",8),c(14),l(),a(15,"p",9),c(16),l(),p(17,"i",10)(18,"i",10)(19,"i",10),m(20,Yi,9,9),m(21,Zi,6,6),m(22,ie,6,6),p(23,"p",11),r(24,"translate"),l(),a(25,"div",12)(26,"div",13),m(27,ee,3,3,"button",14),l(),a(28,"div",15),m(29,te,3,3,"button",14),l(),a(30,"div",16),m(31,ne,4,4,"a",17),l()()()),o&2&&(n(3),h(s(4,20,"plugins.manage.information")),n(2),S("aria-label",s(6,22,"form.button_close")),n(3),C("src",t.plugin.icon,$),n(2),h(t.plugin.displayName),n(2),h(t.plugin.name),n(2),b("@",t.plugin.author),n(2),h(t.plugin.description),n(),C("ngClass",T(27,Wi,!t.plugin.verifiedPlugin&&!t.plugin.verifiedPlusPlugin,t.plugin.verifiedPlugin||t.plugin.verifiedPlusPlugin))("ngStyle",M(30,ei,!t.plugin.verifiedPlugin&&!t.plugin.verifiedPlusPlugin?1:.25)),n(),C("ngClass",T(32,Ji,!t.plugin.isHbScoped&&(t.plugin.verifiedPlugin||t.plugin.verifiedPlusPlugin),t.plugin.isHbScoped||!t.plugin.verifiedPlugin&&!t.plugin.verifiedPlusPlugin))("ngStyle",M(35,ei,!t.plugin.isHbScoped&&(t.plugin.verifiedPlugin||t.plugin.verifiedPlusPlugin)?1:.25)),n(),C("ngClass",T(37,Ki,t.plugin.isHbScoped,!t.plugin.isHbScoped))("ngStyle",M(40,ei,t.plugin.isHbScoped?1:.25)),n(),g(t.plugin.isHbScoped?20:-1),n(),g(!t.plugin.isHbScoped&&(t.plugin.verifiedPlugin||t.plugin.verifiedPlusPlugin)?21:-1),n(),g(!t.plugin.verifiedPlugin&&!t.plugin.verifiedPlusPlugin?22:-1),n(),C("innerHTML",E(24,24,"plugins.manage.more_info",T(42,Xi,t.linkScoped,t.linkVerified)),V),n(4),g(t.plugin.links.homepage||t.plugin.links.npm?27:-1),n(2),g(!t.plugin.links.homepage&&!t.plugin.links.npm?29:-1),n(2),g(t.plugin.links.homepage||t.plugin.links.npm?31:-1))},dependencies:[D,ri,B],styles:[".plugin-icon[_ngcontent-%COMP%]{height:75px;width:75px;border-radius:15px;border:1px solid #222222}"]})}return e})();var oe=(e,d,i)=>({"purple-text":e,"green-text":d,"orange-text":i}),ae=(e,d)=>({"fa-bridge-circle-exclamation orange-text":e,"fa-bridge-circle-xmark red-text":d});function le(e,d){if(e&1){let i=P();a(0,"a",21),r(1,"translate"),r(2,"translate"),_("click",function(){x(i);let t=u(2);return v(t.checkAndUpdatePlugin())}),p(3,"i",22),l()}e&2&&(C("openDelay",150)("ngbTooltip",s(1,3,"plugins.button_update")),S("aria-label",s(2,5,"plugins.button_update")))}function re(e,d){if(e&1){let i=P();a(0,"a",21),r(1,"translate"),r(2,"translate"),_("click",function(){x(i);let t=u(2);return v(t.switchToScoped())}),p(3,"i",23),l()}e&2&&(C("openDelay",150)("ngbTooltip",s(1,3,"plugins.manage.scoped.switch")),S("aria-label",s(2,5,"plugins.manage.scoped.switch")))}function se(e,d){if(e&1){let i=P();a(0,"a",24),r(1,"translate"),r(2,"translate"),_("click",function(){x(i);let t=u(2);return v(t.openSettings())}),p(3,"i",25),l()}e&2&&(C("ngbTooltip",s(1,3,"plugins.button_set_up"))("openDelay",150),S("aria-label",s(2,5,"plugins.button_set_up")))}function de(e,d){if(e&1){let i=P();a(0,"a",24),r(1,"translate"),r(2,"translate"),_("click",function(){x(i);let t=u(2);return v(t.openBridgeSettings())}),p(3,"i",26),l()}e&2&&(C("ngbTooltip",s(1,3,"child_bridge.setup"))("openDelay",150),S("aria-label",s(2,5,"child_bridge.setup")))}function pe(e,d){if(e&1){let i=P();a(0,"a",24),r(1,"translate"),r(2,"translate"),_("click",function(){x(i);let t=u(2);return v(t.openBridgeSettings())}),p(3,"i",27),l()}e&2&&(C("ngbTooltip",s(1,3,"child_bridge.bridge_connect"))("openDelay",150),S("aria-label",s(2,5,"child_bridge.bridge_connect")))}function ce(e,d){if(e&1&&p(0,"i",20),e&2){let i=u(2);C("ngClass",T(1,ae,i.childBridgeStatus==="pending",i.childBridgeStatus==="down"))}}function ue(e,d){if(e&1&&(a(0,"div",9),m(1,le,4,7,"a",17),m(2,re,4,7,"a",17),m(3,se,4,7,"a",18),m(4,de,4,7,"a",18),m(5,pe,4,7,"a",18),p(6,"i",19),m(7,ce,1,4,"i",20),l()),e&2){let i=u();n(),g(i.plugin.installedVersion&&i.plugin.updateAvailable&&!i.childBridgeRestartInProgress?1:-1),n(),g(i.plugin.installedVersion&&(i.plugin.newHbScope==null?null:i.plugin.newHbScope.switch)===i.plugin.installedVersion&&!i.childBridgeRestartInProgress?2:-1),n(),g(i.plugin.installedVersion&&(!i.plugin.newHbScope||i.plugin.newHbScope.switch!==i.plugin.installedVersion)&&!i.plugin.updateAvailable&&!i.plugin.isConfigured&&!i.childBridgeRestartInProgress&&!i.plugin.disabled?3:-1),n(),g(i.plugin.installedVersion&&(!i.plugin.newHbScope||i.plugin.newHbScope.switch!==i.plugin.installedVersion)&&!i.plugin.updateAvailable&&i.plugin.isConfigured&&!i.plugin.hasChildBridges&&!i.plugin.disabled&&i.plugin.recommendChildBridge&&!i.childBridgeRestartInProgress?4:-1),n(),g(i.plugin.installedVersion&&(!i.plugin.newHbScope||i.plugin.newHbScope.switch!==i.plugin.installedVersion)&&!i.plugin.updateAvailable&&i.plugin.isConfigured&&i.plugin.hasChildBridges&&!i.childBridgeRestartInProgress&&i.plugin.hasChildBridgesUnpaired&&i.childBridgeStatus==="ok"&&!i.plugin.disabled?5:-1),n(),C("hidden",!i.childBridgeRestartInProgress),n(),g(i.plugin.installedVersion&&(!i.plugin.newHbScope||i.plugin.newHbScope.switch!==i.plugin.installedVersion)&&!i.plugin.updateAvailable&&i.plugin.isConfigured&&i.plugin.hasChildBridges&&!i.childBridgeRestartInProgress&&!i.plugin.hasChildBridgesUnpaired&&i.childBridgeStatus!=="ok"&&!i.plugin.disabled?7:-1)}}function me(e,d){if(e&1){let i=P();a(0,"a",11),_("click",function(){x(i);let t=u();return v(t.openFundingModal(t.plugin))}),p(1,"i",28),a(2,"span",13),c(3),l()()}if(e&2){let i=u();n(3),b("@",i.plugin.author)}}function ge(e,d){if(e&1&&(a(0,"span",13),p(1,"i",29),c(2),l()),e&2){let i=u();n(2),b("@",i.plugin.author," ")}}function _e(e,d){if(e&1&&(a(0,"span"),c(1),r(2,"date"),l()),e&2){let i=u(2);n(),b("(",E(2,1,i.plugin.lastUpdated,"yyyy-MM-dd"),")")}}function fe(e,d){if(e&1&&(a(0,"span"),p(1,"i",30),a(2,"span",13),c(3),m(4,_e,3,4,"span"),l()()),e&2){let i=u();n(3),b("v",i.plugin.latestVersion," "),n(),g(i.plugin.lastUpdated?4:-1)}}function Ce(e,d){if(e&1&&(p(0,"i",31),c(1)),e&2){let i=u();n(),b("v",i.plugin.installedVersion," ")}}function he(e,d){if(e&1){let i=P();a(0,"a",21),r(1,"translate"),_("click",function(){x(i);let t=u(2);return v(t.doChildBridgeAction("restart"))}),p(2,"i",35),l()}if(e&2){let i=u(2);C("openDelay",150)("ngbTooltip",s(1,2,i.setChildBridges.length>1?"child_bridge.restart_plural":"child_bridge.restart"))}}function be(e,d){if(e&1){let i=P();a(0,"a",36),_("click",function(){x(i);let t=u(2);return v(t.enablePlugin(t.plugin))}),p(1,"i",37),r(2,"translate"),l()}e&2&&(n(),C("ngbTooltip",s(2,2,"plugins.status_disabled"))("openDelay",150))}function xe(e,d){if(e&1){let i=P();a(0,"a",38),_("click",function(){x(i);let t=u(2);return v(t.installAlternateVersion())}),p(1,"i",39),l()}}function ve(e,d){if(e&1){let i=P();a(0,"button",43),_("click",function(){x(i);let t=u(3);return v(t.viewPluginLog())}),p(1,"i",48),c(2),r(3,"translate"),l()}e&2&&(n(2),b(" ",s(3,1,"plugins.manage.plugin_logs")," "))}function Pe(e,d){if(e&1){let i=P();a(0,"button",43),_("click",function(){x(i);let t=u(3);return v(t.installAlternateVersion())}),p(1,"i",49),c(2),r(3,"translate"),l()}e&2&&(n(2),b(" ",s(3,1,"plugins.manage.manage_version")," "))}function ye(e,d){if(e&1){let i=P();a(0,"button",43),_("click",function(){x(i);let t=u(3);return v(t.openJsonEditor())}),p(1,"i",50),c(2),r(3,"translate"),l()}e&2&&(n(2),b(" ",s(3,1,"plugins.manage.json_config")," "))}function we(e,d){if(e&1){let i=P();a(0,"button",43),_("click",function(){x(i);let t=u(3);return v(t.disablePlugin(t.plugin))}),p(1,"i",51),c(2),r(3,"translate"),l()}e&2&&(n(2),b(" ",s(3,1,"plugins.manage.disable")," "))}function Se(e,d){if(e&1){let i=P();a(0,"button",43),_("click",function(){x(i);let t=u(3);return v(t.enablePlugin(t.plugin))}),p(1,"i",52),c(2),r(3,"translate"),l()}e&2&&(n(2),b(" ",s(3,1,"plugins.manage.enable")," "))}function ke(e,d){if(e&1){let i=P();a(0,"button",43),_("click",function(){x(i);let t=u(3);return v(t.uninstallPlugin())}),p(1,"i",53),c(2),r(3,"translate"),l()}e&2&&(n(2),b(" ",s(3,1,"plugins.button_uninstall")," "))}function Be(e,d){e&1&&p(0,"div",46)}function Te(e,d){if(e&1){let i=P();a(0,"button",43),_("click",function(){x(i);let t=u(4);return v(t.doChildBridgeAction("restart"))}),p(1,"i",56),c(2),r(3,"translate"),l()}if(e&2){let i=u(4);n(2),b(" ",s(3,1,i.setChildBridges.length>1?"child_bridge.restart_plural":"child_bridge.restart")," ")}}function Ie(e,d){if(e&1){let i=P();a(0,"button",43),_("click",function(){x(i);let t=u(4);return v(t.doChildBridgeAction("stop"))}),p(1,"i",57),c(2),r(3,"translate"),l()}if(e&2){let i=u(4);n(2),b(" ",s(3,1,i.setChildBridges.length>1?"child_bridge.stop_plural":"child_bridge.stop")," ")}}function Ve(e,d){if(e&1){let i=P();a(0,"button",43),_("click",function(){x(i);let t=u(4);return v(t.doChildBridgeAction("start"))}),p(1,"i",58),c(2),r(3,"translate"),l()}if(e&2){let i=u(4);n(2),b(" ",s(3,1,i.setChildBridges.length>1?"child_bridge.start_plural":"child_bridge.start")," ")}}function Ee(e,d){if(e&1){let i=P();a(0,"button",43),_("click",function(){x(i);let t=u(3);return v(t.openBridgeSettings())}),p(1,"i",54),c(2),r(3,"translate"),l(),m(4,Te,4,3,"button",45),m(5,Ie,4,3,"button",45),m(6,Ve,4,3,"button",45),a(7,"button",43),_("click",function(){x(i);let t=u(3);return v(t.resetChildBridges())}),p(8,"i",55),c(9),r(10,"translate"),l()}if(e&2){let i=u(3);n(2),b(" ",s(3,5,"child_bridge.bridge_settings")," "),n(2),g(i.childBridgeRestartInProgress?-1:4),n(),g(i.allChildBridgesStopped?-1:5),n(),g(i.allChildBridgesStopped?6:-1),n(3),b(" ",s(10,7,"child_bridge.reset_accessories")," ")}}function $e(e,d){e&1&&p(0,"div",46)}function Me(e,d){if(e&1){let i=P();a(0,"button",43),_("click",function(){x(i);let t=u(3);return v(t.openBridgeSettings())}),p(1,"i",59),c(2),r(3,"translate"),l()}e&2&&(n(2),b(" ",s(3,1,"child_bridge.setup")," "))}function De(e,d){e&1&&p(0,"div",46)}function Ae(e,d){if(e&1){let i=P();a(0,"button",43),_("click",function(){x(i);let t=u(3);return v(t.openBridgeSettings())}),p(1,"i",59),c(2),r(3,"translate"),l()}e&2&&(n(2),b(" ",s(3,1,"child_bridge.setup")," "))}function Ne(e,d){e&1&&p(0,"div",46)}function He(e,d){if(e&1&&(a(0,"a",47),p(1,"i",60),c(2),r(3,"translate"),l()),e&2){let i=u(3);C("href",i.plugin.links.bugs,$),n(2),b(" ",s(3,2,"support.links.issue")," ")}}function Oe(e,d){if(e&1){let i=P();a(0,"span",34)(1,"a",40),p(2,"i",41),l(),a(3,"div",42)(4,"button",43),_("click",function(){x(i);let t=u(2);return v(t.openSettings())}),p(5,"i",44),c(6),r(7,"translate"),l(),m(8,ve,4,3,"button",45),m(9,Pe,4,3,"button",45),m(10,ye,4,3,"button",45),m(11,we,4,3,"button",45),m(12,Se,4,3,"button",45),m(13,ke,4,3,"button",45),m(14,Be,1,0,"div",46),m(15,Ee,11,9),m(16,$e,1,0,"div",46),m(17,Me,4,3,"button",45),m(18,De,1,0,"div",46),m(19,Ae,4,3,"button",45),m(20,Ne,1,0,"div",46),m(21,He,4,4,"a",47),l()()}if(e&2){let i=u(2);n(),S("aria-label","Plugin Actions Dropdown"),n(5),b(" ",s(7,16,"plugins.button_settings")," "),n(2),g(i.plugin.isConfigured&&!i.plugin.disabled?8:-1),n(),g(i.plugin.publicPackage?9:-1),n(),g(!i.isMobile&&i.plugin.name!=="homebridge-config-ui-x"?10:-1),n(),g(i.plugin.name!=="homebridge-config-ui-x"&&!i.plugin.disabled?11:-1),n(),g(i.plugin.name!=="homebridge-config-ui-x"&&i.plugin.disabled?12:-1),n(),g(i.plugin.name!=="homebridge-config-ui-x"?13:-1),n(),g(!i.plugin.disabled&&i.plugin.isConfigured&&i.plugin.hasChildBridges&&i.plugin.installedVersion&&i.plugin.name!=="homebridge-config-ui-x"?14:-1),n(),g(i.plugin.hasChildBridges&&!i.plugin.disabled?15:-1),n(),g(i.plugin.isConfigured&&!i.plugin.hasChildBridges&&!i.plugin.disabled&&!i.plugin.recommendChildBridge?16:-1),n(),g(i.plugin.isConfigured&&!i.plugin.hasChildBridges&&!i.plugin.disabled&&!i.plugin.recommendChildBridge?17:-1),n(),g(i.plugin.isConfigured&&!i.plugin.hasChildBridges&&!i.plugin.disabled&&i.plugin.recommendChildBridge&&i.plugin.updateAvailable?18:-1),n(),g(i.plugin.isConfigured&&!i.plugin.hasChildBridges&&!i.plugin.disabled&&i.plugin.recommendChildBridge&&i.plugin.updateAvailable?19:-1),n(),g(i.plugin.links!=null&&i.plugin.links.bugs?20:-1),n(),g(i.plugin.links!=null&&i.plugin.links.bugs?21:-1)}}function je(e,d){if(e&1&&(a(0,"div",9),m(1,he,3,4,"a",17),m(2,be,3,4,"a",32),m(3,xe,2,0,"a",33),m(4,Oe,22,18,"span",34),l()),e&2){let i=u();n(),g(!i.plugin.disabled&&i.plugin.hasChildBridges&&i.childBridgeStatus==="ok"?1:-1),n(),g(i.plugin.installedVersion&&i.plugin.disabled?2:-1),n(),g(i.plugin.publicPackage&&!i.plugin.installedVersion?3:-1),n(),g(i.plugin.installedVersion?4:-1)}}var Ai=(()=>{class e{$api=y(Q);$auth=y(J);$md=y(Ii);$modal=y(R);$plugin=y(X);$settings=y(W);$toastr=y(G);$translate=y(O);$ws=y(K);io;plugin;hasChildBridges=!1;allChildBridgesStopped=!1;childBridgeStatus="pending";childBridgeRestartInProgress=!1;defaultIcon="assets/hb-icon.png";isMobile;setChildBridges=[];isAdmin=this.$auth.user.admin;set childBridges(i){this.hasChildBridges=i.length>0,this.allChildBridgesStopped=i.every(o=>o.manuallyStopped===!0),this.hasChildBridges&&(i.some(o=>o.status==="down")?this.childBridgeStatus="down":i.some(o=>o.status==="pending")?this.childBridgeStatus="pending":i.some(o=>o.status==="ok")&&(this.childBridgeStatus="ok")),this.setChildBridges=i}ngOnInit(){this.isMobile=this.$md.detect.mobile(),this.io=this.$ws.getExistingNamespace("child-bridges"),this.isMobile&&this.plugin.displayName.toLowerCase().startsWith("homebridge ")&&(this.plugin.displayName=this.plugin.displayName.replace(/^homebridge /i,"")),this.plugin.icon||(this.plugin.icon=this.defaultIcon)}openFundingModal(i){let o=this.$modal.open(Mi,{size:"lg",backdrop:"static"});o.componentInstance.plugin=i}pluginInfoModal(i){let o=this.$modal.open(Di,{size:"lg",backdrop:"static"});o.componentInstance.plugin=i}disablePlugin(i){let o=this.$modal.open($i,{size:"lg",backdrop:"static"});o.componentInstance.pluginName=i.displayName,o.componentInstance.isConfigured=i.isConfigured,o.componentInstance.isConfiguredDynamicPlatform=i.isConfiguredDynamicPlatform,o.componentInstance.keepOrphans=this.$settings.keepOrphans,o.result.then(()=>I(this,null,function*(){try{yield H(this.$api.put(`/config-editor/plugin/${encodeURIComponent(i.name)}/disable`,{})),i.disabled=!0,this.hasChildBridges&&this.doChildBridgeAction("stop"),this.$modal.open(j,{size:"lg",backdrop:"static"})}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("plugins.disable.error"),this.$translate.instant("toast.title_error"))}}))}enablePlugin(i){let o=this.$modal.open(Bi,{size:"lg",backdrop:"static"});o.componentInstance.title=i.name,o.componentInstance.message=this.$translate.instant("plugins.manage.confirm_enable",{pluginName:i.displayName}),o.componentInstance.confirmButtonLabel=this.$translate.instant("plugins.manage.enable"),o.componentInstance.faIconClass="fa-circle-play primary-text",o.result.then(()=>I(this,null,function*(){try{yield H(this.$api.put(`/config-editor/plugin/${encodeURIComponent(i.name)}/enable`,{})),i.disabled=!1,this.hasChildBridges&&(yield this.doChildBridgeAction("start")),this.$modal.open(j,{size:"lg",backdrop:"static"})}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("plugins.enable.error"),this.$translate.instant("toast.title_error"))}}))}viewPluginLog(){let i=this.$modal.open(Vi,{size:"xl",backdrop:"static"});i.componentInstance.plugin=this.plugin,i.componentInstance.childBridges=this.setChildBridges}doChildBridgeAction(i){return I(this,null,function*(){this.childBridgeRestartInProgress=!0;try{for(let o of this.setChildBridges)yield H(this.io.request(`${i}-child-bridge`,o.username))}catch(o){console.error(o),this.$toastr.error(this.$translate.instant("plugins.bridge.action_error",{action:i}),this.$translate.instant("toast.title_error")),this.childBridgeRestartInProgress=!1}finally{setTimeout(()=>{this.childBridgeRestartInProgress=!1},i==="restart"?12e3:i==="stop"?6e3:1e3)}})}handleIconError(){this.plugin.icon=this.defaultIcon}checkAndUpdatePlugin(){this.$plugin.checkAndUpdatePlugin(this.plugin,this.plugin.latestVersion)}openSettings(){this.$plugin.settings(this.plugin)}openBridgeSettings(){this.$plugin.bridgeSettings(this.plugin)}switchToScoped(){this.$plugin.switchToScoped(this.plugin)}installAlternateVersion(){this.$plugin.installAlternateVersion(this.plugin)}openJsonEditor(){this.$plugin.jsonEditor(this.plugin)}uninstallPlugin(){this.$plugin.uninstallPlugin(this.plugin,this.setChildBridges)}resetChildBridges(){this.$plugin.resetChildBridges(this.setChildBridges)}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=k({type:e,selectors:[["app-plugin-card"]],inputs:{plugin:"plugin",childBridges:"childBridges"},decls:24,vars:14,consts:[[1,"card","card-body","mb-3"],[1,"d-flex","flex-row","justify-content-between"],[1,"d-flex","flex-column","me-3","align-items-center","justify-content-between"],["alt","Plugin Icon",1,"plugin-icon-card","mb-3",3,"error","src"],[1,"d-flex","flex-column","justify-content-between",2,"min-width","calc(100% - 80px)"],[1,"d-flex","flex-row","align-items-end"],[1,"d-flex","flex-column","w-100"],[1,"d-flex","flex-row"],[1,"card-title","mb-2","text-truncate"],[1,"ms-auto"],[1,"card-text","mb-2","text-truncate"],["href","javascript:void(0)",1,"card-link",3,"click"],[1,"fas","fa-shield-alt","fa-lg","me-1",3,"ngClass"],[1,"grey-text"],[1,"card-text","mb-2"],["href","javascript:void(0)",1,"card-link"],[1,"card-text","mb-0","grey-text"],["href","javascript:void(0)","container","body","triggers","hover",1,"card-link",3,"openDelay","ngbTooltip"],["href","javascript:void(0)","container","body","triggers","hover",1,"card-link",3,"ngbTooltip","openDelay"],[1,"fas","fa-spinner","fa-pulse","fa-lg","grey-text","ms-3",3,"hidden"],[1,"fas","fa-lg","ms-3",3,"ngClass"],["href","javascript:void(0)","container","body","triggers","hover",1,"card-link",3,"click","openDelay","ngbTooltip"],[1,"far","fa-arrow-alt-circle-up","primary-text","fa-lg","fa-fade","ms-3",2,"--fa-animation-duration","2s"],[1,"fas","fa-arrow-right-arrow-left","primary-text","fa-lg","fa-fade","ms-3",2,"--fa-animation-duration","2s"],["href","javascript:void(0)","container","body","triggers","hover",1,"card-link",3,"click","ngbTooltip","openDelay"],[1,"fas","fa-sliders","primary-text","fa-lg","fa-fade","ms-3",2,"--fa-animation-duration","2s"],[1,"icon-button","fas","fa-bridge","primary-text","fa-lg","fa-fade","ms-3",2,"--fa-animation-duration","2s"],[1,"icon-button","fas","fa-qrcode","primary-text","fa-lg","fa-fade","ms-3",2,"--fa-animation-duration","2s"],[1,"fas","fa-heart","fa-lg","me-1","pink-text"],[1,"fas","fa-heart","fa-lg","me-1",2,"opacity","0.5"],[1,"far","fa-circle-dot","fa-lg","me-1"],[1,"far","fa-circle-check","fa-lg","me-1"],["href","javascript:void(0)",1,"card-link","red-text"],["href","javascript:void(0)"],["ngbDropdown","","placement","left",1,"d-inline-block","ms-3","mt-auto"],[1,"fas","fa-lg","fa-power-off","ms-3"],["href","javascript:void(0)",1,"card-link","red-text",3,"click"],["container","body","triggers","hover",1,"far","fa-pause-circle","fa-lg",3,"ngbTooltip","openDelay"],["href","javascript:void(0)",3,"click"],[1,"far","fa-arrow-alt-circle-down","fa-lg"],["href","javascript:void(0)","ngbDropdownToggle","",1,"card-link","text-decoration-none","mt-auto",2,"outline","none"],[1,"fa-solid","fa-ellipsis-v","fa-lg"],["ngbDropdownMenu","","aria-labelledby","Plugin Actions Dropdown"],["ngbDropdownItem","",3,"click"],[1,"fas","fa-sliders"],["ngbDropdownItem",""],[1,"dropdown-divider"],["ngbDropdownItem","","rel","noopener noreferrer","target","_blank",3,"href"],[1,"fas","fa-wave-square"],[1,"fas","fa-code-compare"],[1,"fas","fa-code"],[1,"far","fa-circle-pause"],[1,"far","fa-circle-play"],[1,"fas","fa-trash"],[1,"fas","fa-bridge"],[1,"fas","fa-broom"],[1,"icon-button","fas","fa-power-off"],[1,"fas","fa-stop"],[1,"fas","fa-play"],[1,"icon-button","fas","fa-bridge"],[1,"icon-button","fa","fa-question-circle-o"]],template:function(o,t){o&1&&(a(0,"div",0)(1,"div",1)(2,"div",2)(3,"img",3),_("error",function(){return t.handleIconError()}),l()(),a(4,"div",4)(5,"div",5)(6,"div",6)(7,"div",7)(8,"h5",8),c(9),l(),m(10,ue,8,7,"div",9),l(),a(11,"p",10)(12,"a",11),_("click",function(){return t.pluginInfoModal(t.plugin)}),p(13,"i",12),a(14,"span",13),c(15),l()()(),a(16,"p",14),m(17,me,4,1,"a",15),m(18,ge,3,1,"span",13),l(),a(19,"div",7)(20,"p",16),m(21,fe,5,2,"span"),m(22,Ce,2,1),l(),m(23,je,5,4,"div",9),l()()()()()()),o&2&&(n(3),C("src",t.plugin.icon,$),n(6),h(t.plugin.displayName),n(),g(t.isAdmin?10:-1),n(3),C("ngClass",li(10,oe,t.plugin.isHbScoped,!t.plugin.isHbScoped&&(t.plugin.verifiedPlugin||t.plugin.verifiedPlusPlugin),!t.plugin.isHbScoped&&!t.plugin.verifiedPlugin&&!t.plugin.verifiedPlusPlugin)),n(2),h(t.plugin.name),n(2),g((t.plugin.verifiedPlugin||t.plugin.verifiedPlusPlugin)&&t.plugin.funding?17:-1),n(),g((t.plugin.verifiedPlugin||t.plugin.verifiedPlusPlugin)&&t.plugin.funding?-1:18),n(3),g(t.plugin.publicPackage&&!t.plugin.installedVersion?21:-1),n(),g(t.plugin.installedVersion?22:-1),n(),g(t.isAdmin?23:-1))},dependencies:[L,D,wi,yi,Pi,vi,xi,si,B],encapsulation:2})}return e})();var Ni=(()=>{class e{$activeModal=y(A);dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=k({type:e,selectors:[["ng-component"]],decls:28,vars:21,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fa","fa-question-circle-o","primary-text",2,"font-size","75px"],[1,"mb-0"],[3,"innerHTML"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-end"]],template:function(o,t){o&1&&(a(0,"div",0)(1,"form")(2,"div",1)(3,"h5",2),c(4),r(5,"translate"),l(),a(6,"button",3),r(7,"translate"),_("click",function(){return t.dismissModal()}),l()(),a(8,"div",4)(9,"div",5),p(10,"i",6),l(),a(11,"ul",7),p(12,"li",8),r(13,"translate"),p(14,"li",8),r(15,"translate"),p(16,"li",8),r(17,"translate"),p(18,"li",8),r(19,"translate"),l(),p(20,"app-support-banner"),l(),a(21,"div",9),p(22,"div",10),a(23,"div",11)(24,"button",12),_("click",function(){return t.dismissModal()}),c(25),r(26,"translate"),l()(),p(27,"div",13),l()()()),o&2&&(n(4),h(s(5,7,"support.title")),n(2),S("aria-label",s(7,9,"form.button_close")),n(6),C("innerHTML",s(13,11,"plugins.support.list_1"),V),n(2),C("innerHTML",s(15,13,"plugins.support.list_2"),V),n(2),C("innerHTML",s(17,15,"plugins.support.list_3"),V),n(2),C("innerHTML",s(19,17,"plugins.support.list_4"),V),n(7),b(" ",s(26,19,"form.button_close")," "))},dependencies:[Ei,B],encapsulation:2})}return e})();var Fe=["searchInput"],ze=(e,d)=>({"fa-magnifying-glass":e,"fa-exclamation-circle":d});function Ue(e,d){e&1&&p(0,"app-spinner")}function qe(e,d){if(e&1){let i=P();a(0,"button",7),r(1,"translate"),r(2,"translate"),_("click",function(){x(i);let t=u();return v(t.showSearch())}),p(3,"i"),l(),a(4,"button",8),r(5,"translate"),r(6,"translate"),_("click",function(){x(i);let t=u();return v(t.showStats())}),p(7,"i"),l()}if(e&2){let i=u();C("openDelay",150)("ngbTooltip",s(1,13,"form.search"))("hidden",!i.installedPlugins.length&&!i.showSearchBar),S("aria-label",s(2,15,"form.search")),n(3),Z(ii("fas",i.showSearchBar?" primary-text":""," fa-search")),n(),C("openDelay",150)("ngbTooltip",s(5,17,"plugins.stats")),S("aria-label",s(6,19,"plugins.stats")),n(3),Z(ii("fas",i.tab==="stats"?" primary-text":""," fa-sliders"))}}function Re(e,d){if(e&1){let i=P();a(0,"a",15),_("click",function(){x(i);let t=u(3);return v(t.onClearSearch())}),p(1,"i",16),l()}}function Le(e,d){if(e&1){let i=P();a(0,"div",9)(1,"div",11)(2,"form",12),_("ngSubmit",function(){x(i);let t=u(2);return v(t.onSubmit(t.form))}),p(3,"input",13,0),r(5,"translate"),m(6,Re,2,0,"a",14),l()()()}if(e&2){let i=u(2);n(2),C("formGroup",i.form),n(),C("placeholder",s(5,3,"plugins.placeholder_search_plugin")),n(3),g(i.showExitButton?6:-1)}}function Ge(e,d){if(e&1&&(a(0,"div",17),p(1,"app-plugin-card",19),l()),e&2){let i=d.$implicit,o=u(3);n(),C("plugin",i)("childBridges",o.getPluginChildBridges(i))}}function Qe(e,d){if(e&1&&(a(0,"div",18),p(1,"i",20),a(2,"p"),c(3),r(4,"translate"),l()()),e&2){let i=u(3);n(),C("ngClass",T(4,ze,!i.showExitButton,i.showExitButton)),n(2),h(s(4,2,i.showExitButton?"plugins.placeholder_search_none":"plugins.placeholder_search_first"))}}function We(e,d){if(e&1&&(a(0,"div",10),U(1,Ge,2,2,"div",17,z),m(3,Qe,5,7,"div",18),l()),e&2){let i=u(2);n(),q(i.installedPlugins),n(2),g(i.installedPlugins.length===0&&!i.loading&&!i.mainError?3:-1)}}function Je(e,d){if(e&1&&(m(0,Le,7,5,"div",9),m(1,We,4,1,"div",10)),e&2){let i=u();g(i.showSearchBar?0:-1),n(),g(i.loading?-1:1)}}function Ke(e,d){e&1&&(a(0,"div",21)(1,"div",22)(2,"code"),c(3,"https://developers.homebridge.io/analytics "),a(4,"a",23),p(5,"i",24),l()()(),a(6,"div",25),c(7),r(8,"translate"),l()(),p(9,"iframe",26)),e&2&&(n(7),h(s(8,1,"plugins.stats_note")))}var un=(()=>{class e{searchInput;$api=y(Q);$auth=y(J);$modal=y(R);$plugin=y(X);$router=y(ki);$settings=y(W);$toastr=y(G);$translate=y(O);$ws=y(K);isSearchMode=!1;io;navigationSubscription;mainError=!1;loading=!0;tab="main";installedPlugins=[];childBridges=[];showSearchBar=!1;showExitButton=!1;isAdmin=this.$auth.user.admin;form=new ui({query:new mi("")});ngOnInit(){return I(this,null,function*(){let i=this.$translate.instant("menu.label_plugins");this.$settings.setPageTitle(i),this.io=this.$ws.connectToNamespace("child-bridges"),this.io.connected.subscribe(()=>I(this,null,function*(){this.getChildBridgeMetadata(),this.io.socket.emit("monitor-child-bridge-status"),yield this.loadInstalledPlugins(),this.installedPlugins.length||this.showSearch();let{action:o,plugin:t}=this.$router.parseUrl(this.$router.url).queryParams;if(o){let f=this.installedPlugins.find(w=>w.name===t);switch(o){case"just-installed":{f&&(f.isConfigured?this.$modal.open(j,{size:"lg",backdrop:"static"}):this.$plugin.settings(f));break}case"open-manage-version":{f&&this.$plugin.installAlternateVersion(f);break}}this.$router.navigate([],{queryParams:{},replaceUrl:!0,queryParamsHandling:""})}})),this.io.socket.on("child-bridge-status-update",o=>{let t=this.childBridges.find(f=>f.username===o.username);t?Object.assign(t,o):this.childBridges.push(o)}),this.navigationSubscription=this.$router.events.subscribe(o=>{o instanceof Si&&this.loadInstalledPlugins()})})}search(){this.installedPlugins=[],this.loading=!0,this.showExitButton=!0,this.$api.get(`/plugins/search/${encodeURIComponent(this.form.value.query)}`).subscribe({next:i=>{let o=new Set,t=new Map(i.map(f=>[f.name,f]));this.installedPlugins=i.reduce((f,w)=>{if(w.name==="homebridge-config-ui-x"||o.has(w.name))return f;if(w.newHbScope){let N=w.newHbScope.to,Y=t.has(N);(w.installedVersion||!Y)&&(o.add(N),f.push(w))}else f.push(w);return f},[]),this.appendMetaInfo(),this.loading=!1},error:i=>{this.loading=!1,this.isSearchMode=!1,console.error(i),this.$toastr.error(i.error?.message||i.message,this.$translate.instant("toast.title_error")),this.loadInstalledPlugins()}})}onClearSearch(){this.loadInstalledPlugins()}onSubmit({value:i}){i.query.length?(this.isSearchMode=!0,this.search()):this.isSearchMode&&(this.isSearchMode=!1,this.loadInstalledPlugins())}showSearch(){this.showSearchBar?(this.showSearchBar=!1,this.isSearchMode&&(this.isSearchMode=!1,this.form.setValue({query:""}),this.loadInstalledPlugins())):(window.document.querySelector("body").classList.remove("bg-black"),this.tab="main",this.showSearchBar=!0,setTimeout(()=>this.searchInput.nativeElement.focus(),0))}showStats(){this.tab==="stats"?(window.document.querySelector("body").classList.remove("bg-black"),this.tab="main"):(window.document.querySelector("body").classList.add("bg-black"),this.tab="stats",this.showSearchBar=!1)}openSupport(){this.$modal.open(Ni,{size:"lg",backdrop:"static"})}ngOnDestroy(){window.document.querySelector("body").classList.remove("bg-black"),this.navigationSubscription&&this.navigationSubscription.unsubscribe(),this.io.end()}getPluginChildBridges(i){return this.childBridges.filter(o=>o.plugin===i.name)}loadInstalledPlugins(){return I(this,null,function*(){this.form.setValue({query:""}),this.showExitButton=!1,this.installedPlugins=[],this.loading=!0,this.mainError=!1;try{let i=yield H(this.$api.get("/plugins"));this.installedPlugins=i.filter(t=>t.name!=="homebridge-config-ui-x"),yield this.appendMetaInfo();let o=this.installedPlugins.sort((t,f)=>{let w=(t.updateAvailable?1e3:0)+(t.newHbScope?100:0)+(t.disabled?-10:0)+(t.isConfigured?-20:0)+(t.hasChildBridgesUnpaired?5:0)+(t.hasChildBridges&&this.$settings.env.recommendChildBridges?-1:0),N=(f.updateAvailable?1e3:0)+(f.newHbScope?100:0)+(f.disabled?-10:0)+(f.isConfigured?-20:0)+(f.hasChildBridgesUnpaired?5:0)+(f.hasChildBridges&&this.$settings.env.recommendChildBridges?-1:0);return w!==N?N-w:t.name.localeCompare(f.name)});return this.loading=!1,o}catch(i){console.error(i),this.loading=!1,this.mainError=!0,this.$toastr.error(this.$translate.instant("plugins.toast_failed_to_load_plugins"),this.$translate.instant("toast.title_error"))}})}appendMetaInfo(){return I(this,null,function*(){if(this.isAdmin){let i=new Set(this.$settings.env.plugins?.hidePairingAlerts||[]);yield Promise.all(this.installedPlugins.filter(o=>o.installedVersion).map(o=>I(this,null,function*(){try{let t=yield H(this.$api.get(`/config-editor/plugin/${encodeURIComponent(o.name)}`));o.isConfigured=t.length>0,o.isConfiguredDynamicPlatform=o.isConfigured&&Object.prototype.hasOwnProperty.call(t[0],"platform"),o.recommendChildBridge=o.isConfigured&&this.$settings.env.recommendChildBridges&&!["homebridge","homebridge-config-ui-x"].includes(o.name),o.hasChildBridges=o.isConfigured&&t.some(w=>w._bridge&&w._bridge.username);let f=this.getPluginChildBridges(o);o.hasChildBridgesUnpaired=f.some(w=>{let N=`${w.username}-hap`,Y=`${w.username}-matter`,Hi=w.paired===!1&&!i.has(N.toUpperCase()),Oi=w.matterConfig&&w.matterCommissioned===!1&&!i.has(Y.toUpperCase());return Hi||Oi}),this.$settings.env.plugins?.hideUpdatesFor?.includes(o.name)&&(o.updateAvailable=!1)}catch{o.isConfigured=!0,o.hasChildBridges=!0}})))}})}getChildBridgeMetadata(){this.io.request("get-homebridge-child-bridge-status").subscribe(i=>{this.childBridges=i})}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=k({type:e,selectors:[["ng-component"]],viewQuery:function(o,t){if(o&1&&ni(Fe,5),o&2){let f;oi(f=ai())&&(t.searchInput=f.first)}},decls:13,vars:9,consts:[["searchInput",""],[1,"row","mb-3"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],["type","button",1,"btn","btn-elegant","my-0","me-0",3,"click"],[1,"fa","fa-question-circle-o"],["type","button","container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0","me-2",3,"click","openDelay","ngbTooltip","hidden"],["type","button","container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0","me-2","d-none","d-md-inline-block",3,"click","openDelay","ngbTooltip"],[1,"row"],[1,"d-flex","flex-wrap","justify-content-between"],[1,"col-md-12"],["novalidate","",3,"ngSubmit","formGroup"],["type","text","formControlName","query",1,"search-bar",3,"placeholder"],["href","javascript:void(0)",1,"search-bar-clear"],["href","javascript:void(0)",1,"search-bar-clear",3,"click"],[1,"fas","fa-square-xmark"],[1,"hb-plugin-space-between"],[1,"alert","alert-info","mt-4","text-center","w-100"],[3,"plugin","childBridges"],[1,"fas","primary-text","my-3",2,"font-size","75px",3,"ngClass"],[1,"w-100","py-3","hb-stats-header","text-white","text-center"],[1,"mb-2"],["href","https://developers.homebridge.io/analytics","target","_blank"],[1,"fa","fa-external-link"],[1,"small","grey-text"],["src",ti`https://developers.homebridge.io/analytics/`,"sandbox","allow-scripts allow-same-origin allow-popups","referrerpolicy","no-referrer",1,"hb-stats"]],template:function(o,t){o&1&&(m(0,Ue,1,0,"app-spinner"),a(1,"div",1)(2,"div",2)(3,"h3",3),c(4),r(5,"translate"),l()(),a(6,"div",4),m(7,qe,8,21),a(8,"button",5),r(9,"translate"),_("click",function(){return t.openSupport()}),p(10,"i",6),l()()(),m(11,Je,2,2)(12,Ke,10,3)),o&2&&(g(t.loading?0:-1),n(4),h(s(5,5,"menu.label_plugins")),n(3),g(t.isAdmin?7:-1),n(),S("aria-label",s(9,7,"support.title")),n(3),g(t.tab==="main"?11:t.tab==="stats"?12:-1))},dependencies:[Ti,Ci,gi,di,pi,ci,hi,_i,fi,Ai,D,L,B],styles:[".search-bar[_ngcontent-%COMP%]{outline:none;box-sizing:inherit!important;background-color:inherit;height:50px!important;width:100%;border-width:.5px;padding:10px;margin-bottom:15px}@media (hover: hover){.search-bar[_ngcontent-%COMP%]:hover{border:1px solid #000000}}.search-bar[_ngcontent-%COMP%]:focus{border:1px solid #000000;box-shadow:0 1px #000}.search-bar-clear[_ngcontent-%COMP%]{position:absolute;right:30px;font-size:25px;color:#d0d0d0;line-height:50px;cursor:pointer}.hb-plugin-space-between[_ngcontent-%COMP%]{box-sizing:border-box;width:calc(50% - 6.6666666667px)}@media only screen and (max-width: 991px){.hb-plugin-space-between[_ngcontent-%COMP%]{width:100%}}.hb-stats-header[_ngcontent-%COMP%]{background:#242424;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.hb-stats-header[_ngcontent-%COMP%] code[_ngcontent-%COMP%]{border:1px solid grey;border-radius:5px;padding:5px;font-size:.8rem;color:#d3d3d3}.hb-stats[_ngcontent-%COMP%]{height:calc(100% - 121px);width:100%;overflow:hidden;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}@media (max-width: 767px){.hb-stats[_ngcontent-%COMP%]{height:calc(100% - 60px)}}"]})}return e})();export{un as PluginsComponent};
@@ -1 +0,0 @@
1
- import{Aa as E,Ca as w,Da as g,E as Se,Fa as F,Gc as ce,Hc as he,Lb as _,Lc as fe,Sa as D,Va as Pe,Yb as de,Za as I,_a as o,a as h,b as f,eb as Y,fa as Z,fb as l,ha as d,hb as u,ia as Ne,ja as X,kc as c,la as A,lb as Re,n as we,na as P,ob as ke,pb as R,r as Fe,wa as Oe,y as Ie,ya as xe,yc as v,zc as S}from"./chunk-JJ7TVAIH.js";var $e=(()=>{class n{_renderer;_elementRef;onChange=e=>{};onTouched=()=>{};constructor(e,i){this._renderer=e,this._elementRef=i}setProperty(e,i){this._renderer.setProperty(this._elementRef.nativeElement,e,i)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}static \u0275fac=function(i){return new(i||n)(o(I),o(F))};static \u0275dir=l({type:n})}return n})(),x=(()=>{class n extends $e{static \u0275fac=(()=>{let e;return function(r){return(e||(e=g(n)))(r||n)}})();static \u0275dir=l({type:n,features:[u]})}return n})(),C=new A(""),_t={provide:C,useExisting:d(()=>vt),multi:!0},vt=(()=>{class n extends x{writeValue(e){this.setProperty("checked",e)}static \u0275fac=(()=>{let e;return function(r){return(e||(e=g(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["input","type","checkbox","formControlName",""],["input","type","checkbox","formControl",""],["input","type","checkbox","ngModel",""]],hostBindings:function(i,r){i&1&&_("change",function(a){return r.onChange(a.target.checked)})("blur",function(){return r.onTouched()})},standalone:!1,features:[c([_t]),u]})}return n})(),yt={provide:C,useExisting:d(()=>qe),multi:!0};function Ct(){let n=fe()?fe().getUserAgent():"";return/android (\d+)/.test(n.toLowerCase())}var Vt=new A(""),qe=(()=>{class n extends $e{_compositionMode;_composing=!1;constructor(e,i,r){super(e,i),this._compositionMode=r,this._compositionMode==null&&(this._compositionMode=!Ct())}writeValue(e){let i=e??"";this.setProperty("value",i)}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}static \u0275fac=function(i){return new(i||n)(o(I),o(F),o(Vt,8))};static \u0275dir=l({type:n,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(i,r){i&1&&_("input",function(a){return r._handleInput(a.target.value)})("blur",function(){return r.onTouched()})("compositionstart",function(){return r._compositionStart()})("compositionend",function(a){return r._compositionEnd(a.target.value)})},standalone:!1,features:[c([yt]),u]})}return n})();function me(n){return n==null||_e(n)===0}function _e(n){return n==null?null:Array.isArray(n)||typeof n=="string"?n.length:n instanceof Set?n.size:null}var V=new A(""),$=new A(""),Dt=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,je=class{static min(t){return ze(t)}static max(t){return Ze(t)}static required(t){return Xe(t)}static requiredTrue(t){return bt(t)}static email(t){return At(t)}static minLength(t){return Mt(t)}static maxLength(t){return Et(t)}static pattern(t){return Ye(t)}static nullValidator(t){return J()}static compose(t){return nt(t)}static composeAsync(t){return it(t)}};function ze(n){return t=>{if(t.value==null||n==null)return null;let e=parseFloat(t.value);return!isNaN(e)&&e<n?{min:{min:n,actual:t.value}}:null}}function Ze(n){return t=>{if(t.value==null||n==null)return null;let e=parseFloat(t.value);return!isNaN(e)&&e>n?{max:{max:n,actual:t.value}}:null}}function Xe(n){return me(n.value)?{required:!0}:null}function bt(n){return n.value===!0?null:{required:!0}}function At(n){return me(n.value)||Dt.test(n.value)?null:{email:!0}}function Mt(n){return t=>{let e=t.value?.length??_e(t.value);return e===null||e===0?null:e<n?{minlength:{requiredLength:n,actualLength:e}}:null}}function Et(n){return t=>{let e=t.value?.length??_e(t.value);return e!==null&&e>n?{maxlength:{requiredLength:n,actualLength:e}}:null}}function Ye(n){if(!n)return J;let t,e;return typeof n=="string"?(e="",n.charAt(0)!=="^"&&(e+="^"),e+=n,n.charAt(n.length-1)!=="$"&&(e+="$"),t=new RegExp(e)):(e=n.toString(),t=n),i=>{if(me(i.value))return null;let r=i.value;return t.test(r)?null:{pattern:{requiredPattern:e,actualValue:r}}}}function J(n){return null}function Ke(n){return n!=null}function Je(n){return Re(n)?Fe(n):n}function Qe(n){let t={};return n.forEach(e=>{t=e!=null?h(h({},t),e):t}),Object.keys(t).length===0?null:t}function et(n,t){return t.map(e=>e(n))}function wt(n){return!n.validate}function tt(n){return n.map(t=>wt(t)?t:e=>t.validate(e))}function nt(n){if(!n)return null;let t=n.filter(Ke);return t.length==0?null:function(e){return Qe(et(e,t))}}function ve(n){return n!=null?nt(tt(n)):null}function it(n){if(!n)return null;let t=n.filter(Ke);return t.length==0?null:function(e){let i=et(e,t).map(Je);return Se(i).pipe(Ie(Qe))}}function ye(n){return n!=null?it(tt(n)):null}function Ge(n,t){return n===null?[t]:Array.isArray(n)?[...n,t]:[n,t]}function rt(n){return n._rawValidators}function st(n){return n._rawAsyncValidators}function ge(n){return n?Array.isArray(n)?n:[n]:[]}function Q(n,t){return Array.isArray(n)?n.includes(t):n===t}function Te(n,t){let e=ge(t);return ge(n).forEach(r=>{Q(e,r)||e.push(r)}),e}function Be(n,t){return ge(t).filter(e=>!Q(n,e))}var ee=class{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(t){this._rawValidators=t||[],this._composedValidatorFn=ve(this._rawValidators)}_setAsyncValidators(t){this._rawAsyncValidators=t||[],this._composedAsyncValidatorFn=ye(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(t){this._onDestroyCallbacks.push(t)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(t=>t()),this._onDestroyCallbacks=[]}reset(t=void 0){this.control&&this.control.reset(t)}hasError(t,e){return this.control?this.control.hasError(t,e):!1}getError(t,e){return this.control?this.control.getError(t,e):null}},y=class extends ee{name;get formDirective(){return null}get path(){return null}},p=class extends ee{_parent=null;name=null;valueAccessor=null},te=class{_cd;constructor(t){this._cd=t}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}},Ft={"[class.ng-untouched]":"isUntouched","[class.ng-touched]":"isTouched","[class.ng-pristine]":"isPristine","[class.ng-dirty]":"isDirty","[class.ng-valid]":"isValid","[class.ng-invalid]":"isInvalid","[class.ng-pending]":"isPending"},Sn=f(h({},Ft),{"[class.ng-submitted]":"isSubmitted"}),Nn=(()=>{class n extends te{constructor(e){super(e)}static \u0275fac=function(i){return new(i||n)(o(p,2))};static \u0275dir=l({type:n,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,r){i&2&&de("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)},standalone:!1,features:[u]})}return n})(),On=(()=>{class n extends te{constructor(e){super(e)}static \u0275fac=function(i){return new(i||n)(o(y,10))};static \u0275dir=l({type:n,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(i,r){i&2&&de("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)("ng-submitted",r.isSubmitted)},standalone:!1,features:[u]})}return n})();var k="VALID",K="INVALID",N="PENDING",j="DISABLED",b=class{},ne=class extends b{value;source;constructor(t,e){super(),this.value=t,this.source=e}},T=class extends b{pristine;source;constructor(t,e){super(),this.pristine=t,this.source=e}},B=class extends b{touched;source;constructor(t,e){super(),this.touched=t,this.source=e}},O=class extends b{status;source;constructor(t,e){super(),this.status=t,this.source=e}},ie=class extends b{source;constructor(t){super(),this.source=t}},U=class extends b{source;constructor(t){super(),this.source=t}};function Ce(n){return(ae(n)?n.validators:n)||null}function It(n){return Array.isArray(n)?ve(n):n||null}function Ve(n,t){return(ae(t)?t.asyncValidators:n)||null}function St(n){return Array.isArray(n)?ye(n):n||null}function ae(n){return n!=null&&!Array.isArray(n)&&typeof n=="object"}function ot(n,t,e){let i=n.controls;if(!(t?Object.keys(i):i).length)throw new Z(1e3,"");if(!i[e])throw new Z(1001,"")}function at(n,t,e){n._forEachChild((i,r)=>{if(e[r]===void 0)throw new Z(1002,"")})}var H=class{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(t,e){this._assignValidators(t),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(t){this._rawValidators=this._composedValidatorFn=t}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(t){this._rawAsyncValidators=this._composedAsyncValidatorFn=t}get parent(){return this._parent}get status(){return v(this.statusReactive)}set status(t){v(()=>this.statusReactive.set(t))}_status=S(()=>this.statusReactive());statusReactive=E(void 0);get valid(){return this.status===k}get invalid(){return this.status===K}get pending(){return this.status==N}get disabled(){return this.status===j}get enabled(){return this.status!==j}errors;get pristine(){return v(this.pristineReactive)}set pristine(t){v(()=>this.pristineReactive.set(t))}_pristine=S(()=>this.pristineReactive());pristineReactive=E(!0);get dirty(){return!this.pristine}get touched(){return v(this.touchedReactive)}set touched(t){v(()=>this.touchedReactive.set(t))}_touched=S(()=>this.touchedReactive());touchedReactive=E(!1);get untouched(){return!this.touched}_events=new we;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(t){this._assignValidators(t)}setAsyncValidators(t){this._assignAsyncValidators(t)}addValidators(t){this.setValidators(Te(t,this._rawValidators))}addAsyncValidators(t){this.setAsyncValidators(Te(t,this._rawAsyncValidators))}removeValidators(t){this.setValidators(Be(t,this._rawValidators))}removeAsyncValidators(t){this.setAsyncValidators(Be(t,this._rawAsyncValidators))}hasValidator(t){return Q(this._rawValidators,t)}hasAsyncValidator(t){return Q(this._rawAsyncValidators,t)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(t={}){let e=this.touched===!1;this.touched=!0;let i=t.sourceControl??this;this._parent&&!t.onlySelf&&this._parent.markAsTouched(f(h({},t),{sourceControl:i})),e&&t.emitEvent!==!1&&this._events.next(new B(!0,i))}markAllAsDirty(t={}){this.markAsDirty({onlySelf:!0,emitEvent:t.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsDirty(t))}markAllAsTouched(t={}){this.markAsTouched({onlySelf:!0,emitEvent:t.emitEvent,sourceControl:this}),this._forEachChild(e=>e.markAllAsTouched(t))}markAsUntouched(t={}){let e=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let i=t.sourceControl??this;this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0,emitEvent:t.emitEvent,sourceControl:i})}),this._parent&&!t.onlySelf&&this._parent._updateTouched(t,i),e&&t.emitEvent!==!1&&this._events.next(new B(!1,i))}markAsDirty(t={}){let e=this.pristine===!0;this.pristine=!1;let i=t.sourceControl??this;this._parent&&!t.onlySelf&&this._parent.markAsDirty(f(h({},t),{sourceControl:i})),e&&t.emitEvent!==!1&&this._events.next(new T(!1,i))}markAsPristine(t={}){let e=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let i=t.sourceControl??this;this._forEachChild(r=>{r.markAsPristine({onlySelf:!0,emitEvent:t.emitEvent})}),this._parent&&!t.onlySelf&&this._parent._updatePristine(t,i),e&&t.emitEvent!==!1&&this._events.next(new T(!0,i))}markAsPending(t={}){this.status=N;let e=t.sourceControl??this;t.emitEvent!==!1&&(this._events.next(new O(this.status,e)),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.markAsPending(f(h({},t),{sourceControl:e}))}disable(t={}){let e=this._parentMarkedDirty(t.onlySelf);this.status=j,this.errors=null,this._forEachChild(r=>{r.disable(f(h({},t),{onlySelf:!0}))}),this._updateValue();let i=t.sourceControl??this;t.emitEvent!==!1&&(this._events.next(new ne(this.value,i)),this._events.next(new O(this.status,i)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(f(h({},t),{skipPristineCheck:e}),this),this._onDisabledChange.forEach(r=>r(!0))}enable(t={}){let e=this._parentMarkedDirty(t.onlySelf);this.status=k,this._forEachChild(i=>{i.enable(f(h({},t),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(f(h({},t),{skipPristineCheck:e}),this),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(t,e){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),t.skipPristineCheck||this._parent._updatePristine({},e),this._parent._updateTouched({},e))}setParent(t){this._parent=t}getRawValue(){return this.value}updateValueAndValidity(t={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let i=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===k||this.status===N)&&this._runAsyncValidator(i,t.emitEvent)}let e=t.sourceControl??this;t.emitEvent!==!1&&(this._events.next(new ne(this.value,e)),this._events.next(new O(this.status,e)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.updateValueAndValidity(f(h({},t),{sourceControl:e}))}_updateTreeValidity(t={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(t)),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?j:k}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(t,e){if(this.asyncValidator){this.status=N,this._hasOwnPendingAsyncValidator={emitEvent:e!==!1,shouldHaveEmitted:t!==!1};let i=Je(this.asyncValidator(this));this._asyncValidationSubscription=i.subscribe(r=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(r,{emitEvent:e,shouldHaveEmitted:t})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let t=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,t}return!1}setErrors(t,e={}){this.errors=t,this._updateControlsErrors(e.emitEvent!==!1,this,e.shouldHaveEmitted)}get(t){let e=t;return e==null||(Array.isArray(e)||(e=e.split(".")),e.length===0)?null:e.reduce((i,r)=>i&&i._find(r),this)}getError(t,e){let i=e?this.get(e):this;return i&&i.errors?i.errors[t]:null}hasError(t,e){return!!this.getError(t,e)}get root(){let t=this;for(;t._parent;)t=t._parent;return t}_updateControlsErrors(t,e,i){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),(t||i)&&this._events.next(new O(this.status,e)),this._parent&&this._parent._updateControlsErrors(t,e,i)}_initObservables(){this.valueChanges=new D,this.statusChanges=new D}_calculateStatus(){return this._allControlsDisabled()?j:this.errors?K:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(N)?N:this._anyControlsHaveStatus(K)?K:k}_anyControlsHaveStatus(t){return this._anyControls(e=>e.status===t)}_anyControlsDirty(){return this._anyControls(t=>t.dirty)}_anyControlsTouched(){return this._anyControls(t=>t.touched)}_updatePristine(t,e){let i=!this._anyControlsDirty(),r=this.pristine!==i;this.pristine=i,this._parent&&!t.onlySelf&&this._parent._updatePristine(t,e),r&&this._events.next(new T(this.pristine,e))}_updateTouched(t={},e){this.touched=this._anyControlsTouched(),this._events.next(new B(this.touched,e)),this._parent&&!t.onlySelf&&this._parent._updateTouched(t,e)}_onDisabledChange=[];_registerOnCollectionChange(t){this._onCollectionChange=t}_setUpdateStrategy(t){ae(t)&&t.updateOn!=null&&(this._updateOn=t.updateOn)}_parentMarkedDirty(t){let e=this._parent&&this._parent.dirty;return!t&&!!e&&!this._parent._anyControlsDirty()}_find(t){return null}_assignValidators(t){this._rawValidators=Array.isArray(t)?t.slice():t,this._composedValidatorFn=It(this._rawValidators)}_assignAsyncValidators(t){this._rawAsyncValidators=Array.isArray(t)?t.slice():t,this._composedAsyncValidatorFn=St(this._rawAsyncValidators)}},L=class extends H{constructor(t,e,i){super(Ce(e),Ve(i,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;registerControl(t,e){return this.controls[t]?this.controls[t]:(this.controls[t]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(t,e,i={}){this.registerControl(t,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(t,e={}){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(t,e,i={}){this.controls[t]&&this.controls[t]._registerOnCollectionChange(()=>{}),delete this.controls[t],e&&this.registerControl(t,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled}setValue(t,e={}){at(this,!0,t),Object.keys(t).forEach(i=>{ot(this,!0,i),this.controls[i].setValue(t[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){t!=null&&(Object.keys(t).forEach(i=>{let r=this.controls[i];r&&r.patchValue(t[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(t={},e={}){this._forEachChild((i,r)=>{i.reset(t?t[r]:null,{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e),e?.emitEvent!==!1&&this._events.next(new U(this))}getRawValue(){return this._reduceChildren({},(t,e,i)=>(t[i]=e.getRawValue(),t))}_syncPendingControls(){let t=this._reduceChildren(!1,(e,i)=>i._syncPendingControls()?!0:e);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_forEachChild(t){Object.keys(this.controls).forEach(e=>{let i=this.controls[e];i&&t(i,e)})}_setUpControls(){this._forEachChild(t=>{t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(t){for(let[e,i]of Object.entries(this.controls))if(this.contains(e)&&t(i))return!0;return!1}_reduceValue(){let t={};return this._reduceChildren(t,(e,i,r)=>((i.enabled||this.disabled)&&(e[r]=i.value),e))}_reduceChildren(t,e){let i=t;return this._forEachChild((r,s)=>{i=e(i,r,s)}),i}_allControlsDisabled(){for(let t of Object.keys(this.controls))if(this.controls[t].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(t){return this.controls.hasOwnProperty(t)?this.controls[t]:null}};var xn=L;var M=new A("",{providedIn:"root",factory:()=>q}),q="always";function lt(n,t){return[...t.path,n]}function W(n,t,e=q){De(n,t),t.valueAccessor.writeValue(n.value),(n.disabled||e==="always")&&t.valueAccessor.setDisabledState?.(n.disabled),Ot(n,t),Pt(n,t),xt(n,t),Nt(n,t)}function re(n,t,e=!0){let i=()=>{};t.valueAccessor&&(t.valueAccessor.registerOnChange(i),t.valueAccessor.registerOnTouched(i)),oe(n,t),n&&(t._invokeOnDestroyCallbacks(),n._registerOnCollectionChange(()=>{}))}function se(n,t){n.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(t)})}function Nt(n,t){if(t.valueAccessor.setDisabledState){let e=i=>{t.valueAccessor.setDisabledState(i)};n.registerOnDisabledChange(e),t._registerOnDestroy(()=>{n._unregisterOnDisabledChange(e)})}}function De(n,t){let e=rt(n);t.validator!==null?n.setValidators(Ge(e,t.validator)):typeof e=="function"&&n.setValidators([e]);let i=st(n);t.asyncValidator!==null?n.setAsyncValidators(Ge(i,t.asyncValidator)):typeof i=="function"&&n.setAsyncValidators([i]);let r=()=>n.updateValueAndValidity();se(t._rawValidators,r),se(t._rawAsyncValidators,r)}function oe(n,t){let e=!1;if(n!==null){if(t.validator!==null){let r=rt(n);if(Array.isArray(r)&&r.length>0){let s=r.filter(a=>a!==t.validator);s.length!==r.length&&(e=!0,n.setValidators(s))}}if(t.asyncValidator!==null){let r=st(n);if(Array.isArray(r)&&r.length>0){let s=r.filter(a=>a!==t.asyncValidator);s.length!==r.length&&(e=!0,n.setAsyncValidators(s))}}}let i=()=>{};return se(t._rawValidators,i),se(t._rawAsyncValidators,i),e}function Ot(n,t){t.valueAccessor.registerOnChange(e=>{n._pendingValue=e,n._pendingChange=!0,n._pendingDirty=!0,n.updateOn==="change"&&ut(n,t)})}function xt(n,t){t.valueAccessor.registerOnTouched(()=>{n._pendingTouched=!0,n.updateOn==="blur"&&n._pendingChange&&ut(n,t),n.updateOn!=="submit"&&n.markAsTouched()})}function ut(n,t){n._pendingDirty&&n.markAsDirty(),n.setValue(n._pendingValue,{emitModelToViewChange:!1}),t.viewToModelUpdate(n._pendingValue),n._pendingChange=!1}function Pt(n,t){let e=(i,r)=>{t.valueAccessor.writeValue(i),r&&t.viewToModelUpdate(i)};n.registerOnChange(e),t._registerOnDestroy(()=>{n._unregisterOnChange(e)})}function dt(n,t){n==null,De(n,t)}function Rt(n,t){return oe(n,t)}function be(n,t){if(!n.hasOwnProperty("model"))return!1;let e=n.model;return e.isFirstChange()?!0:!Object.is(t,e.currentValue)}function kt(n){return Object.getPrototypeOf(n.constructor)===x}function ct(n,t){n._syncPendingControls(),t.forEach(e=>{let i=e.control;i.updateOn==="submit"&&i._pendingChange&&(e.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}function Ae(n,t){if(!t)return null;Array.isArray(t);let e,i,r;return t.forEach(s=>{s.constructor===qe?e=s:kt(s)?i=s:r=s}),r||i||e||null}function jt(n,t){let e=n.indexOf(t);e>-1&&n.splice(e,1)}var Gt={provide:y,useExisting:d(()=>Tt)},G=Promise.resolve(),Tt=(()=>{class n extends y{callSetDisabledState;get submitted(){return v(this.submittedReactive)}_submitted=S(()=>this.submittedReactive());submittedReactive=E(!1);_directives=new Set;form;ngSubmit=new D;options;constructor(e,i,r){super(),this.callSetDisabledState=r,this.form=new L({},ve(e),ye(i))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){G.then(()=>{let i=this._findContainer(e.path);e.control=i.registerControl(e.name,e.control),W(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){G.then(()=>{let i=this._findContainer(e.path);i&&i.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){G.then(()=>{let i=this._findContainer(e.path),r=new L({});dt(r,e),i.registerControl(e.name,r),r.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){G.then(()=>{let i=this._findContainer(e.path);i&&i.removeControl(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,i){G.then(()=>{this.form.get(e.path).setValue(i)})}setValue(e){this.control.setValue(e)}onSubmit(e){return this.submittedReactive.set(!0),ct(this.form,this._directives),this.ngSubmit.emit(e),this.form._events.next(new ie(this.control)),e?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submittedReactive.set(!1)}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}static \u0275fac=function(i){return new(i||n)(o(V,10),o($,10),o(M,8))};static \u0275dir=l({type:n,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(i,r){i&1&&_("submit",function(a){return r.onSubmit(a)})("reset",function(){return r.onReset()})},inputs:{options:[0,"ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[c([Gt]),u]})}return n})();function Ue(n,t){let e=n.indexOf(t);e>-1&&n.splice(e,1)}function He(n){return typeof n=="object"&&n!==null&&Object.keys(n).length===2&&"value"in n&&"disabled"in n}var Me=class extends H{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(t=null,e,i){super(Ce(e),Ve(i,e)),this._applyFormState(t),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),ae(e)&&(e.nonNullable||e.initialValueIsDefault)&&(He(t)?this.defaultValue=t.value:this.defaultValue=t)}setValue(t,e={}){this.value=this._pendingValue=t,this._onChange.length&&e.emitModelToViewChange!==!1&&this._onChange.forEach(i=>i(this.value,e.emitViewToModelChange!==!1)),this.updateValueAndValidity(e)}patchValue(t,e={}){this.setValue(t,e)}reset(t=this.defaultValue,e={}){this._applyFormState(t),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1,e?.emitEvent!==!1&&this._events.next(new U(this))}_updateValue(){}_anyControls(t){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(t){this._onChange.push(t)}_unregisterOnChange(t){Ue(this._onChange,t)}registerOnDisabledChange(t){this._onDisabledChange.push(t)}_unregisterOnDisabledChange(t){Ue(this._onDisabledChange,t)}_forEachChild(t){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(t){He(t)?(this.value=this._pendingValue=t.value,t.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=t}},Rn=Me,Bt=n=>n instanceof Me;var Ut={provide:p,useExisting:d(()=>Ht)},Le=Promise.resolve(),Ht=(()=>{class n extends p{_changeDetectorRef;callSetDisabledState;control=new Me;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name="";isDisabled;model;options;update=new D;constructor(e,i,r,s,a,m){super(),this._changeDetectorRef=a,this.callSetDisabledState=m,this._parent=e,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=Ae(this,s)}ngOnChanges(e){if(this._checkForErrors(),!this._registered||"name"in e){if(this._registered&&(this._checkName(),this.formDirective)){let i=e.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in e&&this._updateDisabled(e),be(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){W(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(e){Le.then(()=>{this.control.setValue(e,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(e){let i=e.isDisabled.currentValue,r=i!==0&&he(i);Le.then(()=>{r&&!this.control.disabled?this.control.disable():!r&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(e){return this._parent?lt(e,this._parent):[e]}static \u0275fac=function(i){return new(i||n)(o(y,9),o(V,10),o($,10),o(C,10),o(ce,8),o(M,8))};static \u0275dir=l({type:n,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],standalone:!1,features:[c([Ut]),u,w]})}return n})();var kn=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275dir=l({type:n,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""],standalone:!1})}return n})(),Lt={provide:C,useExisting:d(()=>Wt),multi:!0},Wt=(()=>{class n extends x{writeValue(e){let i=e??"";this.setProperty("value",i)}registerOnChange(e){this.onChange=i=>{e(i==""?null:parseFloat(i))}}static \u0275fac=(()=>{let e;return function(r){return(e||(e=g(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(i,r){i&1&&_("input",function(a){return r.onChange(a.target.value)})("blur",function(){return r.onTouched()})},standalone:!1,features:[c([Lt]),u]})}return n})(),$t={provide:C,useExisting:d(()=>zt),multi:!0};var qt=(()=>{class n{_accessors=[];add(e,i){this._accessors.push([e,i])}remove(e){for(let i=this._accessors.length-1;i>=0;--i)if(this._accessors[i][1]===e){this._accessors.splice(i,1);return}}select(e){this._accessors.forEach(i=>{this._isSameGroup(i,e)&&i[1]!==e&&i[1].fireUncheck(e.value)})}_isSameGroup(e,i){return e[0].control?e[0]._parent===i._control._parent&&e[1].name===i.name:!1}static \u0275fac=function(i){return new(i||n)};static \u0275prov=Ne({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})(),zt=(()=>{class n extends x{_registry;_injector;_state;_control;_fn;setDisabledStateFired=!1;onChange=()=>{};name;formControlName;value;callSetDisabledState=P(M,{optional:!0})??q;constructor(e,i,r,s){super(e,i),this._registry=r,this._injector=s}ngOnInit(){this._control=this._injector.get(p),this._checkName(),this._registry.add(this._control,this)}ngOnDestroy(){this._registry.remove(this)}writeValue(e){this._state=e===this.value,this.setProperty("checked",this._state)}registerOnChange(e){this._fn=e,this.onChange=()=>{e(this.value),this._registry.select(this)}}setDisabledState(e){(this.setDisabledStateFired||e||this.callSetDisabledState==="whenDisabledForLegacyCode")&&this.setProperty("disabled",e),this.setDisabledStateFired=!0}fireUncheck(e){this.writeValue(e)}_checkName(){this.name&&this.formControlName&&(this.name,this.formControlName),!this.name&&this.formControlName&&(this.name=this.formControlName)}static \u0275fac=function(i){return new(i||n)(o(I),o(F),o(qt),o(Oe))};static \u0275dir=l({type:n,selectors:[["input","type","radio","formControlName",""],["input","type","radio","formControl",""],["input","type","radio","ngModel",""]],hostBindings:function(i,r){i&1&&_("change",function(){return r.onChange()})("blur",function(){return r.onTouched()})},inputs:{name:"name",formControlName:"formControlName",value:"value"},standalone:!1,features:[c([$t]),u]})}return n})();var Ee=new A(""),Zt={provide:p,useExisting:d(()=>Xt)},Xt=(()=>{class n extends p{_ngModelWarningConfig;callSetDisabledState;viewModel;form;set isDisabled(e){}model;update=new D;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(e,i,r,s,a){super(),this._ngModelWarningConfig=s,this.callSetDisabledState=a,this._setValidators(e),this._setAsyncValidators(i),this.valueAccessor=Ae(this,r)}ngOnChanges(e){if(this._isControlChanged(e)){let i=e.form.previousValue;i&&re(i,this,!1),W(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}be(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&re(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_isControlChanged(e){return e.hasOwnProperty("form")}static \u0275fac=function(i){return new(i||n)(o(V,10),o($,10),o(C,10),o(Ee,8),o(M,8))};static \u0275dir=l({type:n,selectors:[["","formControl",""]],inputs:{form:[0,"formControl","form"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],standalone:!1,features:[c([Zt]),u,w]})}return n})(),Yt={provide:y,useExisting:d(()=>Kt)},Kt=(()=>{class n extends y{callSetDisabledState;get submitted(){return v(this._submittedReactive)}set submitted(e){this._submittedReactive.set(e)}_submitted=S(()=>this._submittedReactive());_submittedReactive=E(!1);_oldForm;_onCollectionChange=()=>this._updateDomValue();directives=[];form=null;ngSubmit=new D;constructor(e,i,r){super(),this.callSetDisabledState=r,this._setValidators(e),this._setAsyncValidators(i)}ngOnChanges(e){e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(oe(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(e){let i=this.form.get(e.path);return W(i,e,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),i}getControl(e){return this.form.get(e.path)}removeControl(e){re(e.control||null,e,!1),jt(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}getFormArray(e){return this.form.get(e.path)}updateModel(e,i){this.form.get(e.path).setValue(i)}onSubmit(e){return this._submittedReactive.set(!0),ct(this.form,this.directives),this.ngSubmit.emit(e),this.form._events.next(new ie(this.control)),e?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(e=void 0,i={}){this.form.reset(e,i),this._submittedReactive.set(!1)}_updateDomValue(){this.directives.forEach(e=>{let i=e.control,r=this.form.get(e.path);i!==r&&(re(i||null,e),Bt(r)&&(W(r,e,this.callSetDisabledState),e.control=r))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){let i=this.form.get(e.path);dt(i,e),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){if(this.form){let i=this.form.get(e.path);i&&Rt(i,e)&&i.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){De(this.form,this),this._oldForm&&oe(this._oldForm,this)}static \u0275fac=function(i){return new(i||n)(o(V,10),o($,10),o(M,8))};static \u0275dir=l({type:n,selectors:[["","formGroup",""]],hostBindings:function(i,r){i&1&&_("submit",function(a){return r.onSubmit(a)})("reset",function(){return r.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[c([Yt]),u,w]})}return n})();var Jt={provide:p,useExisting:d(()=>Qt)},Qt=(()=>{class n extends p{_ngModelWarningConfig;_added=!1;viewModel;control;name=null;set isDisabled(e){}model;update=new D;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(e,i,r,s,a){super(),this._ngModelWarningConfig=a,this._parent=e,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=Ae(this,s)}ngOnChanges(e){this._added||this._setUpControl(),be(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}get path(){return lt(this.name==null?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_setUpControl(){this.control=this.formDirective.addControl(this),this._added=!0}static \u0275fac=function(i){return new(i||n)(o(y,13),o(V,10),o($,10),o(C,10),o(Ee,8))};static \u0275dir=l({type:n,selectors:[["","formControlName",""]],inputs:{name:[0,"formControlName","name"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},standalone:!1,features:[c([Jt]),u,w]})}return n})();var en={provide:C,useExisting:d(()=>ft),multi:!0};function ht(n,t){return n==null?`${t}`:(t&&typeof t=="object"&&(t="Object"),`${n}: ${t}`.slice(0,50))}function tn(n){return n.split(":")[0]}var ft=(()=>{class n extends x{value;_optionMap=new Map;_idCounter=0;set compareWith(e){this._compareWith=e}_compareWith=Object.is;appRefInjector=P(ke).injector;destroyRef=P(xe);cdr=P(ce);_queuedWrite=!1;_writeValueAfterRender(){this._queuedWrite||this.appRefInjector.destroyed||(this._queuedWrite=!0,Pe({write:()=>{this.destroyRef.destroyed||(this._queuedWrite=!1,this.writeValue(this.value))}},{injector:this.appRefInjector}))}writeValue(e){this.cdr.markForCheck(),this.value=e;let i=this._getOptionId(e),r=ht(i,e);this.setProperty("value",r)}registerOnChange(e){this.onChange=i=>{this.value=this._getOptionValue(i),e(this.value)}}_registerOption(){return(this._idCounter++).toString()}_getOptionId(e){for(let i of this._optionMap.keys())if(this._compareWith(this._optionMap.get(i),e))return i;return null}_getOptionValue(e){let i=tn(e);return this._optionMap.has(i)?this._optionMap.get(i):e}static \u0275fac=(()=>{let e;return function(r){return(e||(e=g(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["select","formControlName","",3,"multiple",""],["select","formControl","",3,"multiple",""],["select","ngModel","",3,"multiple",""]],hostBindings:function(i,r){i&1&&_("change",function(a){return r.onChange(a.target.value)})("blur",function(){return r.onTouched()})},inputs:{compareWith:"compareWith"},standalone:!1,features:[c([en]),u]})}return n})(),jn=(()=>{class n{_element;_renderer;_select;id;constructor(e,i,r){this._element=e,this._renderer=i,this._select=r,this._select&&(this.id=this._select._registerOption())}set ngValue(e){this._select!=null&&(this._select._optionMap.set(this.id,e),this._setElementValue(ht(this.id,e)),this._select._writeValueAfterRender())}set value(e){this._setElementValue(e),this._select&&this._select._writeValueAfterRender()}_setElementValue(e){this._renderer.setProperty(this._element.nativeElement,"value",e)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select._writeValueAfterRender())}static \u0275fac=function(i){return new(i||n)(o(F),o(I),o(ft,9))};static \u0275dir=l({type:n,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"},standalone:!1})}return n})(),nn={provide:C,useExisting:d(()=>gt),multi:!0};function We(n,t){return n==null?`${t}`:(typeof t=="string"&&(t=`'${t}'`),t&&typeof t=="object"&&(t="Object"),`${n}: ${t}`.slice(0,50))}function rn(n){return n.split(":")[0]}var gt=(()=>{class n extends x{value;_optionMap=new Map;_idCounter=0;set compareWith(e){this._compareWith=e}_compareWith=Object.is;writeValue(e){this.value=e;let i;if(Array.isArray(e)){let r=e.map(s=>this._getOptionId(s));i=(s,a)=>{s._setSelected(r.indexOf(a.toString())>-1)}}else i=(r,s)=>{r._setSelected(!1)};this._optionMap.forEach(i)}registerOnChange(e){this.onChange=i=>{let r=[],s=i.selectedOptions;if(s!==void 0){let a=s;for(let m=0;m<a.length;m++){let z=a[m],ue=this._getOptionValue(z.value);r.push(ue)}}else{let a=i.options;for(let m=0;m<a.length;m++){let z=a[m];if(z.selected){let ue=this._getOptionValue(z.value);r.push(ue)}}}this.value=r,e(r)}}_registerOption(e){let i=(this._idCounter++).toString();return this._optionMap.set(i,e),i}_getOptionId(e){for(let i of this._optionMap.keys())if(this._compareWith(this._optionMap.get(i)._value,e))return i;return null}_getOptionValue(e){let i=rn(e);return this._optionMap.has(i)?this._optionMap.get(i)._value:e}static \u0275fac=(()=>{let e;return function(r){return(e||(e=g(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["select","multiple","","formControlName",""],["select","multiple","","formControl",""],["select","multiple","","ngModel",""]],hostBindings:function(i,r){i&1&&_("change",function(a){return r.onChange(a.target)})("blur",function(){return r.onTouched()})},inputs:{compareWith:"compareWith"},standalone:!1,features:[c([nn]),u]})}return n})(),Gn=(()=>{class n{_element;_renderer;_select;id;_value;constructor(e,i,r){this._element=e,this._renderer=i,this._select=r,this._select&&(this.id=this._select._registerOption(this))}set ngValue(e){this._select!=null&&(this._value=e,this._setElementValue(We(this.id,e)),this._select.writeValue(this._select.value))}set value(e){this._select?(this._value=e,this._setElementValue(We(this.id,e)),this._select.writeValue(this._select.value)):this._setElementValue(e)}_setElementValue(e){this._renderer.setProperty(this._element.nativeElement,"value",e)}_setSelected(e){this._renderer.setProperty(this._element.nativeElement,"selected",e)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}static \u0275fac=function(i){return new(i||n)(o(F),o(I),o(gt,9))};static \u0275dir=l({type:n,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"},standalone:!1})}return n})();function pt(n){return typeof n=="number"?n:parseFloat(n)}var le=(()=>{class n{_validator=J;_onChange;_enabled;ngOnChanges(e){if(this.inputName in e){let i=this.normalizeInput(e[this.inputName].currentValue);this._enabled=this.enabled(i),this._validator=this._enabled?this.createValidator(i):J,this._onChange&&this._onChange()}}validate(e){return this._validator(e)}registerOnValidatorChange(e){this._onChange=e}enabled(e){return e!=null}static \u0275fac=function(i){return new(i||n)};static \u0275dir=l({type:n,features:[w]})}return n})(),sn={provide:V,useExisting:d(()=>on),multi:!0},on=(()=>{class n extends le{max;inputName="max";normalizeInput=e=>pt(e);createValidator=e=>Ze(e);static \u0275fac=(()=>{let e;return function(r){return(e||(e=g(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["input","type","number","max","","formControlName",""],["input","type","number","max","","formControl",""],["input","type","number","max","","ngModel",""]],hostVars:1,hostBindings:function(i,r){i&2&&R("max",r._enabled?r.max:null)},inputs:{max:"max"},standalone:!1,features:[c([sn]),u]})}return n})(),an={provide:V,useExisting:d(()=>ln),multi:!0},ln=(()=>{class n extends le{min;inputName="min";normalizeInput=e=>pt(e);createValidator=e=>ze(e);static \u0275fac=(()=>{let e;return function(r){return(e||(e=g(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["input","type","number","min","","formControlName",""],["input","type","number","min","","formControl",""],["input","type","number","min","","ngModel",""]],hostVars:1,hostBindings:function(i,r){i&2&&R("min",r._enabled?r.min:null)},inputs:{min:"min"},standalone:!1,features:[c([an]),u]})}return n})(),un={provide:V,useExisting:d(()=>dn),multi:!0};var dn=(()=>{class n extends le{required;inputName="required";normalizeInput=he;createValidator=e=>Xe;enabled(e){return e}static \u0275fac=(()=>{let e;return function(r){return(e||(e=g(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["","required","","formControlName","",3,"type","checkbox"],["","required","","formControl","",3,"type","checkbox"],["","required","","ngModel","",3,"type","checkbox"]],hostVars:1,hostBindings:function(i,r){i&2&&R("required",r._enabled?"":null)},inputs:{required:"required"},standalone:!1,features:[c([un]),u]})}return n})();var cn={provide:V,useExisting:d(()=>hn),multi:!0},hn=(()=>{class n extends le{pattern;inputName="pattern";normalizeInput=e=>e;createValidator=e=>Ye(e);static \u0275fac=(()=>{let e;return function(r){return(e||(e=g(n)))(r||n)}})();static \u0275dir=l({type:n,selectors:[["","pattern","","formControlName",""],["","pattern","","formControl",""],["","pattern","","ngModel",""]],hostVars:1,hostBindings:function(i,r){i&2&&R("pattern",r._enabled?r.pattern:null)},inputs:{pattern:"pattern"},standalone:!1,features:[c([cn]),u]})}return n})();var mt=(()=>{class n{static \u0275fac=function(i){return new(i||n)};static \u0275mod=Y({type:n});static \u0275inj=X({})}return n})(),pe=class extends H{constructor(t,e,i){super(Ce(e),Ve(i,e)),this.controls=t,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;at(t){return this.controls[this._adjustIndex(t)]}push(t,e={}){Array.isArray(t)?t.forEach(i=>{this.controls.push(i),this._registerControl(i)}):(this.controls.push(t),this._registerControl(t)),this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}insert(t,e,i={}){this.controls.splice(t,0,e),this._registerControl(e),this.updateValueAndValidity({emitEvent:i.emitEvent})}removeAt(t,e={}){let i=this._adjustIndex(t);i<0&&(i=0),this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),this.controls.splice(i,1),this.updateValueAndValidity({emitEvent:e.emitEvent})}setControl(t,e,i={}){let r=this._adjustIndex(t);r<0&&(r=0),this.controls[r]&&this.controls[r]._registerOnCollectionChange(()=>{}),this.controls.splice(r,1),e&&(this.controls.splice(r,0,e),this._registerControl(e)),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(t,e={}){at(this,!1,t),t.forEach((i,r)=>{ot(this,!1,r),this.at(r).setValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(t,e={}){t!=null&&(t.forEach((i,r)=>{this.at(r)&&this.at(r).patchValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(t=[],e={}){this._forEachChild((i,r)=>{i.reset(t[r],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e,this),this._updateTouched(e,this),this.updateValueAndValidity(e),e?.emitEvent!==!1&&this._events.next(new U(this))}getRawValue(){return this.controls.map(t=>t.getRawValue())}clear(t={}){this.controls.length<1||(this._forEachChild(e=>e._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:t.emitEvent}))}_adjustIndex(t){return t<0?t+this.length:t}_syncPendingControls(){let t=this.controls.reduce((e,i)=>i._syncPendingControls()?!0:e,!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t}_forEachChild(t){this.controls.forEach((e,i)=>{t(e,i)})}_updateValue(){this.value=this.controls.filter(t=>t.enabled||this.disabled).map(t=>t.value)}_anyControls(t){return this.controls.some(e=>e.enabled&&t(e))}_setUpControls(){this._forEachChild(t=>this._registerControl(t))}_allControlsDisabled(){for(let t of this.controls)if(t.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)}_find(t){return this.at(t)??null}},Tn=pe;var Bn=(()=>{class n{static withConfig(e){return{ngModule:n,providers:[{provide:M,useValue:e.callSetDisabledState??q}]}}static \u0275fac=function(i){return new(i||n)};static \u0275mod=Y({type:n});static \u0275inj=X({imports:[mt]})}return n})(),Un=(()=>{class n{static withConfig(e){return{ngModule:n,providers:[{provide:Ee,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:M,useValue:e.callSetDisabledState??q}]}}static \u0275fac=function(i){return new(i||n)};static \u0275mod=Y({type:n});static \u0275inj=X({imports:[mt]})}return n})();export{C as a,vt as b,qe as c,je as d,Nn as e,On as f,L as g,xn as h,Tt as i,Me as j,Rn as k,Ht as l,kn as m,Wt as n,zt as o,Xt as p,Kt as q,Qt as r,ft as s,jn as t,gt as u,Gn as v,on as w,ln as x,dn as y,hn as z,Tn as A,Bn as B,Un as C};