homebridge-config-ui-x 5.11.3-beta.1 → 5.11.3-beta.3

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 (249) hide show
  1. package/CHANGELOG.md +12 -13
  2. package/dist/core/auth/auth.controller.d.ts +1 -5
  3. package/dist/core/config/config.interfaces.d.ts +0 -14
  4. package/dist/core/config/config.service.d.ts +0 -6
  5. package/dist/core/config/config.service.js +0 -8
  6. package/dist/core/config/config.service.js.map +1 -1
  7. package/dist/core/config/config.startup.js +17 -48
  8. package/dist/core/config/config.startup.js.map +1 -1
  9. package/dist/core/feature-flags/feature-flags.registry.js +0 -5
  10. package/dist/core/feature-flags/feature-flags.registry.js.map +1 -1
  11. package/dist/core/homebridge-ipc/homebridge-ipc.service.js +0 -1
  12. package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
  13. package/dist/core/spa/spa.filter.d.ts +0 -3
  14. package/dist/core/spa/spa.filter.js +2 -22
  15. package/dist/core/spa/spa.filter.js.map +1 -1
  16. package/dist/globalDefaults.js +0 -3
  17. package/dist/globalDefaults.js.map +1 -1
  18. package/dist/main.js +4 -18
  19. package/dist/main.js.map +1 -1
  20. package/dist/modules/accessories/accessories.controller.d.ts +1 -1
  21. package/dist/modules/accessories/accessories.module.js +0 -2
  22. package/dist/modules/accessories/accessories.module.js.map +1 -1
  23. package/dist/modules/accessories/accessories.service.d.ts +3 -21
  24. package/dist/modules/accessories/accessories.service.js +17 -281
  25. package/dist/modules/accessories/accessories.service.js.map +1 -1
  26. package/dist/modules/child-bridges/child-bridges.interfaces.d.ts +0 -9
  27. package/dist/modules/config-editor/config-editor.controller.d.ts +0 -4
  28. package/dist/modules/config-editor/config-editor.controller.js +0 -64
  29. package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
  30. package/dist/modules/config-editor/config-editor.service.d.ts +1 -6
  31. package/dist/modules/config-editor/config-editor.service.js +1 -45
  32. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  33. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +1 -1
  34. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
  35. package/dist/modules/platform-tools/hb-service/hb-service.controller.d.ts +1 -1
  36. package/dist/modules/platform-tools/hb-service/hb-service.service.d.ts +1 -1
  37. package/dist/modules/plugins/plugins.service.js +0 -15
  38. package/dist/modules/plugins/plugins.service.js.map +1 -1
  39. package/dist/modules/server/server.controller.d.ts +0 -50
  40. package/dist/modules/server/server.controller.js +2 -201
  41. package/dist/modules/server/server.controller.js.map +1 -1
  42. package/dist/modules/server/server.service.d.ts +0 -48
  43. package/dist/modules/server/server.service.js +14 -502
  44. package/dist/modules/server/server.service.js.map +1 -1
  45. package/dist/modules/status/status.gateway.d.ts +0 -2
  46. package/dist/modules/status/status.interfaces.d.ts +0 -11
  47. package/dist/modules/status/status.service.d.ts +1 -4
  48. package/dist/modules/status/status.service.js +0 -9
  49. package/dist/modules/status/status.service.js.map +1 -1
  50. package/package.json +4 -6
  51. package/public/3rdpartylicenses.txt +620 -594
  52. package/public/assets/plugin-ui-utils/ui.js +0 -3
  53. package/public/assets/plugin-ui-utils/ui.js.map +1 -1
  54. package/public/chunk-22BTN37P.js +1 -0
  55. package/public/chunk-2RC4SPAD.js +1 -0
  56. package/public/chunk-3AS73KCY.js +1 -0
  57. package/public/chunk-3PGUQRQW.js +1 -0
  58. package/public/chunk-42IK7XM5.js +1 -0
  59. package/public/chunk-54X33YUH.js +5 -0
  60. package/public/chunk-57FBR5IE.js +12 -0
  61. package/public/{chunk-CRLXCYA4.js → chunk-5RADRGSN.js} +1 -1
  62. package/public/chunk-5ZHDYUXA.js +1 -0
  63. package/public/chunk-6CHQHDTZ.js +1 -0
  64. package/public/chunk-6GBGJ2EL.js +1 -0
  65. package/public/chunk-6XNXZZ5K.js +1 -0
  66. package/public/chunk-73TJBNM5.js +1 -0
  67. package/public/chunk-7NROXTSH.js +4 -0
  68. package/public/chunk-AYCIMHEU.js +1 -0
  69. package/public/chunk-B56MVLLL.js +1 -0
  70. package/public/chunk-BLSOSZIK.js +3 -0
  71. package/public/chunk-C2DUFO2M.js +50 -0
  72. package/public/chunk-COVYK7OD.js +16 -0
  73. package/public/chunk-DFBWHKM7.js +4 -0
  74. package/public/chunk-DFS53XMC.js +1 -0
  75. package/public/chunk-DVMYQE3W.js +1 -0
  76. package/public/chunk-DZMAPM5W.js +1 -0
  77. package/public/chunk-EQDMHFAQ.js +1 -0
  78. package/public/chunk-EQHGBDO3.js +1 -0
  79. package/public/chunk-F37NGDY4.js +1 -0
  80. package/public/{chunk-OG2B4MZN.js → chunk-FANHX5JR.js} +1 -1
  81. package/public/chunk-HBVMTCYO.js +1 -0
  82. package/public/chunk-HUHCZOMP.js +1 -0
  83. package/public/chunk-IGUF25VJ.js +1 -0
  84. package/public/chunk-JHD5MRCG.js +2 -0
  85. package/public/chunk-JLJ7FCYU.js +4 -0
  86. package/public/chunk-JYAM3PTI.js +1 -0
  87. package/public/chunk-KYCW6DOD.js +1 -0
  88. package/public/chunk-LXMEPDWR.js +1 -0
  89. package/public/chunk-MA4NUDLX.js +1 -0
  90. package/public/chunk-MEUHKLFL.js +1 -0
  91. package/public/chunk-MFPHI5B4.js +1 -0
  92. package/public/chunk-N23OKEEV.js +1 -0
  93. package/public/chunk-ND3RS2TV.js +2 -0
  94. package/public/chunk-NJMEVJO2.js +1 -0
  95. package/public/chunk-NLLCIBIU.js +1 -0
  96. package/public/{chunk-J2O4Y2AJ.js → chunk-NXNTFMYU.js} +2 -52
  97. package/public/chunk-O3OLHXQ3.js +19 -0
  98. package/public/chunk-O6MRW75X.js +1 -0
  99. package/public/chunk-Q5NAKXA7.js +5 -0
  100. package/public/chunk-QKY5LBJU.js +40 -0
  101. package/public/chunk-QZKY22KL.js +1 -0
  102. package/public/chunk-SCHH42YG.js +1 -0
  103. package/public/{chunk-BMOLDRJ3.js → chunk-SIVN6M76.js} +1 -1
  104. package/public/chunk-STRTFJ4I.js +1 -0
  105. package/public/chunk-SYSGDJ77.js +1 -0
  106. package/public/chunk-TGQIPKOK.js +51 -0
  107. package/public/chunk-TJC3UQGF.js +1 -0
  108. package/public/chunk-TMGK6CPZ.js +8 -0
  109. package/public/chunk-TZGLHZKZ.js +1 -0
  110. package/public/chunk-UPAFOGG4.js +1 -0
  111. package/public/chunk-USLAB6QF.js +1 -0
  112. package/public/{chunk-H7F7H5MW.js → chunk-V4JCOKHQ.js} +1 -1
  113. package/public/chunk-VSMSETOH.js +1 -0
  114. package/public/chunk-W4X5OSYG.js +1 -0
  115. package/public/chunk-WKNVW3KJ.js +1 -0
  116. package/public/chunk-XOGQ5ZRG.js +1 -0
  117. package/public/chunk-XYBWKCJA.js +1 -0
  118. package/public/chunk-YC2AM6Y7.js +1 -0
  119. package/public/chunk-YPP6M5BH.js +1 -0
  120. package/public/chunk-ZR7W7YZ2.js +1 -0
  121. package/public/chunk-ZRDN4L2J.js +5 -0
  122. package/public/index.html +2 -2
  123. package/public/main-XTPP2T4N.js +1 -0
  124. package/public/polyfills-5KWHJ7II.js +2 -0
  125. package/public/styles-SYG5CZBA.css +1 -0
  126. package/scripts/extract-plugin-alias.js +2 -53
  127. package/dist/core/spa/spa-html.service.d.ts +0 -5
  128. package/dist/core/spa/spa-html.service.js +0 -32
  129. package/dist/core/spa/spa-html.service.js.map +0 -1
  130. package/dist/core/ssl/ssl-cert-generator.service.d.ts +0 -15
  131. package/dist/core/ssl/ssl-cert-generator.service.js +0 -125
  132. package/dist/core/ssl/ssl-cert-generator.service.js.map +0 -1
  133. package/dist/modules/accessories/accessories.interfaces.d.ts +0 -94
  134. package/dist/modules/accessories/accessories.interfaces.js +0 -2
  135. package/dist/modules/accessories/accessories.interfaces.js.map +0 -1
  136. package/docs/matter-todo.md +0 -15
  137. package/docs/ssl-upload-pr.md +0 -103
  138. package/public/assets/matter.svg +0 -8
  139. package/public/chunk-2VGNMGIR.js +0 -2
  140. package/public/chunk-33JY67E7.js +0 -1
  141. package/public/chunk-37PRZWAE.js +0 -1
  142. package/public/chunk-3ELEQCY4.js +0 -4
  143. package/public/chunk-3LPAJLVA.js +0 -1
  144. package/public/chunk-3U5EVF33.js +0 -1
  145. package/public/chunk-4MTKU45H.js +0 -1
  146. package/public/chunk-537Z3TZH.js +0 -1
  147. package/public/chunk-55GLM7AG.js +0 -1
  148. package/public/chunk-5IUE2SI2.js +0 -1
  149. package/public/chunk-5PYHJIFL.js +0 -4
  150. package/public/chunk-6GBRDYWL.js +0 -1
  151. package/public/chunk-6HBUGTGB.js +0 -1
  152. package/public/chunk-6IDWI5FN.js +0 -1
  153. package/public/chunk-6KEEFMT4.js +0 -1
  154. package/public/chunk-6SGMX4QN.js +0 -1
  155. package/public/chunk-6U3HDGMV.js +0 -1
  156. package/public/chunk-7AYXT4NE.js +0 -1
  157. package/public/chunk-AKPNXV2T.js +0 -3
  158. package/public/chunk-AQQQXM6K.js +0 -1
  159. package/public/chunk-ARIUPFP4.js +0 -1
  160. package/public/chunk-AUK5NDCU.js +0 -1
  161. package/public/chunk-B4AJQJMI.js +0 -1
  162. package/public/chunk-BU5OWW3D.js +0 -16
  163. package/public/chunk-BUFOAAED.js +0 -1
  164. package/public/chunk-CLZZPSYM.js +0 -1
  165. package/public/chunk-CQ4V3WTB.js +0 -1
  166. package/public/chunk-D5RAEI3L.js +0 -1
  167. package/public/chunk-DE6IO5N6.js +0 -1
  168. package/public/chunk-DPQ6DNII.js +0 -1
  169. package/public/chunk-ED2WGY4W.js +0 -1
  170. package/public/chunk-EPDCL7TG.js +0 -1
  171. package/public/chunk-EPQ2ZMQD.js +0 -1
  172. package/public/chunk-ESL5FTKU.js +0 -2
  173. package/public/chunk-F4XK3SMH.js +0 -1
  174. package/public/chunk-FCWNINXI.js +0 -1
  175. package/public/chunk-FENK2NPT.js +0 -1
  176. package/public/chunk-G6V4QW45.js +0 -68
  177. package/public/chunk-GVEBFYKG.js +0 -1
  178. package/public/chunk-H2Z7V5LU.js +0 -8
  179. package/public/chunk-HDPCCLQH.js +0 -1
  180. package/public/chunk-HFO4CT77.js +0 -3
  181. package/public/chunk-HIZVM47C.js +0 -1
  182. package/public/chunk-HXRHQRO5.js +0 -1
  183. package/public/chunk-IAVNB5BZ.js +0 -1
  184. package/public/chunk-IK7P4HIE.js +0 -1
  185. package/public/chunk-J2PDRU7K.js +0 -1
  186. package/public/chunk-JI773Q2P.js +0 -1
  187. package/public/chunk-JUCKIM56.js +0 -1
  188. package/public/chunk-K2QSSLBW.js +0 -1
  189. package/public/chunk-K76PH2IQ.js +0 -1
  190. package/public/chunk-KTJDR6WA.js +0 -1
  191. package/public/chunk-KW5REXT7.js +0 -1
  192. package/public/chunk-L24NLXV5.js +0 -1
  193. package/public/chunk-LQGMFKUY.js +0 -1
  194. package/public/chunk-LWKX6TVU.js +0 -1
  195. package/public/chunk-LZZD3ZUF.js +0 -1
  196. package/public/chunk-M7YKGLGD.js +0 -1
  197. package/public/chunk-MAYAJLFA.js +0 -1
  198. package/public/chunk-MIE7YXOK.js +0 -1
  199. package/public/chunk-MISBXZWW.js +0 -2
  200. package/public/chunk-MSZSAJPM.js +0 -1
  201. package/public/chunk-MVGY6YJ7.js +0 -1
  202. package/public/chunk-N2IIV3LN.js +0 -1
  203. package/public/chunk-NMDAPSGJ.js +0 -1
  204. package/public/chunk-NSILEQ2V.js +0 -1
  205. package/public/chunk-NX6WIDIM.js +0 -1
  206. package/public/chunk-NYIFHGIW.js +0 -1
  207. package/public/chunk-O7IN75B3.js +0 -1
  208. package/public/chunk-OOZDDKEF.js +0 -1
  209. package/public/chunk-OQMG62H7.js +0 -1
  210. package/public/chunk-OT3SPW73.js +0 -1
  211. package/public/chunk-PEAQRV5O.js +0 -1
  212. package/public/chunk-QFZRFLTG.js +0 -1
  213. package/public/chunk-QH4YP6BY.js +0 -5
  214. package/public/chunk-QML5ZVO6.js +0 -1
  215. package/public/chunk-QR626DFY.js +0 -1
  216. package/public/chunk-REC7F4I2.js +0 -1
  217. package/public/chunk-RJWIR4SV.js +0 -19
  218. package/public/chunk-RMPSPYKI.js +0 -1
  219. package/public/chunk-S6WYT7FX.js +0 -1
  220. package/public/chunk-SCXXKDXZ.js +0 -1
  221. package/public/chunk-TEJ4HGDV.js +0 -1
  222. package/public/chunk-TLHI6ZOI.js +0 -1
  223. package/public/chunk-TQ2YXTGY.js +0 -1
  224. package/public/chunk-U74DXZLS.js +0 -35
  225. package/public/chunk-UATGQE6M.js +0 -1
  226. package/public/chunk-UEO32F46.js +0 -1
  227. package/public/chunk-V2IZQE54.js +0 -1
  228. package/public/chunk-V3I3OYT7.js +0 -1
  229. package/public/chunk-V3YOVD6B.js +0 -1
  230. package/public/chunk-VDDMHLOW.js +0 -1
  231. package/public/chunk-VELTPSDH.js +0 -1
  232. package/public/chunk-VILWJRZL.js +0 -5
  233. package/public/chunk-VLRP57U3.js +0 -1
  234. package/public/chunk-VU3376IO.js +0 -1
  235. package/public/chunk-VX4RXOTH.js +0 -4
  236. package/public/chunk-WE2SWTKZ.js +0 -1
  237. package/public/chunk-WRB2RELR.js +0 -1
  238. package/public/chunk-XKHWVJWA.js +0 -1
  239. package/public/chunk-XVXDP3DD.js +0 -1
  240. package/public/chunk-YNJ5T73B.js +0 -1
  241. package/public/chunk-YTFACH4Z.js +0 -19
  242. package/public/chunk-ZCGZM7LU.js +0 -1
  243. package/public/chunk-ZGIZ2UDW.js +0 -1
  244. package/public/chunk-ZUPFMQG6.js +0 -1
  245. package/public/chunk-ZUXW4PNF.js +0 -12
  246. package/public/main-XBUEQ7PA.js +0 -1
  247. package/public/media/matter-P563JGDL.svg +0 -8
  248. package/public/polyfills-34U4WL3Z.js +0 -1
  249. package/public/styles-CT2LPGES.css +0 -1
@@ -1 +0,0 @@
1
- import{A as Hr,b as Ut,c as Ee,n as Vr}from"./chunk-MISBXZWW.js";import{$ as We,Aa as Dt,D as Ve,E as He,G as ae,Hc as Fr,Ib as xr,K as pr,L as H,Lc as qr,M as Et,Nc as Br,P as gr,Q as q,R as Ge,Rc as Ze,S as A,U as S,Uc as Ye,V as vr,X as C,Xa as Ir,Xb as jr,Z as mr,_ as T,a as ar,aa as d,ac as $r,b as cr,ba as Ot,bb as Ar,c as ur,cc as kr,d as ee,db as Tr,dc as zr,e as O,ea as ce,fa as D,g as z,h as U,hb as Nt,i as p,ib as x,j as lr,jb as Mr,k as Tt,ka as yr,kb as Er,l as dr,la as Rr,lb as Or,ma as Sr,mb as Pt,na as Cr,nb as Dr,o as R,oa as te,p as hr,pa as wr,pb as Me,q as F,r as Mt,ra as Qe,s as fr,sa as Ae,t as Be,ub as Nr,vb as Pr,wa as G,wb as Ur,xa as Te,xb as _r,ya as Ke,yb as Lr,z as V,za as br}from"./chunk-VX4RXOTH.js";import{a as h,b as P,h as m}from"./chunk-B4AJQJMI.js";var f="primary",ke=Symbol("RouteTitle"),$t=class{params;constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}};function oe(t){return new $t(t)}function en(t,n,e){let r=e.path.split("/");if(r.length>t.length||e.pathMatch==="full"&&(n.hasChildren()||r.length<t.length))return null;let i={};for(let s=0;s<r.length;s++){let o=r[s],a=t[s];if(o[0]===":")i[o.substring(1)]=a;else if(o!==a.path)return null}return{consumed:t.slice(0,r.length),posParams:i}}function nt(t){return new Promise((n,e)=>{t.pipe(H()).subscribe({next:r=>n(r),error:r=>e(r)})})}function Wn(t,n){if(t.length!==n.length)return!1;for(let e=0;e<t.length;++e)if(!j(t[e],n[e]))return!1;return!0}function j(t,n){let e=t?kt(t):void 0,r=n?kt(n):void 0;if(!e||!r||e.length!=r.length)return!1;let i;for(let s=0;s<e.length;s++)if(i=e[s],!tn(t[i],n[i]))return!1;return!0}function kt(t){return[...Object.keys(t),...Object.getOwnPropertySymbols(t)]}function tn(t,n){if(Array.isArray(t)&&Array.isArray(n)){if(t.length!==n.length)return!1;let e=[...t].sort(),r=[...n].sort();return e.every((i,s)=>r[s]===i)}else return t===n}function rn(t){return t.length>0?t[t.length-1]:null}function se(t){return Tt(t)?t:Pr(t)?U(Promise.resolve(t)):p(t)}function nn(t){return Tt(t)?nt(t):Promise.resolve(t)}var Qn={exact:sn,subset:an},on={exact:Kn,subset:Zn,ignored:()=>!0};function Gr(t,n,e){return Qn[e.paths](t.root,n.root,e.matrixParams)&&on[e.queryParams](t.queryParams,n.queryParams)&&!(e.fragment==="exact"&&t.fragment!==n.fragment)}function Kn(t,n){return j(t,n)}function sn(t,n,e){if(!ne(t.segments,n.segments)||!et(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(let r in n.children)if(!t.children[r]||!sn(t.children[r],n.children[r],e))return!1;return!0}function Zn(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>tn(t[e],n[e]))}function an(t,n,e){return cn(t,n,n.segments,e)}function cn(t,n,e,r){if(t.segments.length>e.length){let i=t.segments.slice(0,e.length);return!(!ne(i,e)||n.hasChildren()||!et(i,e,r))}else if(t.segments.length===e.length){if(!ne(t.segments,e)||!et(t.segments,e,r))return!1;for(let i in n.children)if(!t.children[i]||!an(t.children[i],n.children[i],r))return!1;return!0}else{let i=e.slice(0,t.segments.length),s=e.slice(t.segments.length);return!ne(t.segments,i)||!et(t.segments,i,r)||!t.children[f]?!1:cn(t.children[f],n,s,r)}}function et(t,n,e){return n.every((r,i)=>on[e](t[i].parameters,r.parameters))}var L=class{root;queryParams;fragment;_queryParamMap;constructor(n=new g([],{}),e={},r=null){this.root=n,this.queryParams=e,this.fragment=r}get queryParamMap(){return this._queryParamMap??=oe(this.queryParams),this._queryParamMap}toString(){return Jn.serialize(this)}},g=class{segments;children;parent=null;constructor(n,e){this.segments=n,this.children=e,Object.values(e).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return tt(this)}},W=class{path;parameters;_parameterMap;constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=oe(this.parameters),this._parameterMap}toString(){return ln(this)}};function Yn(t,n){return ne(t,n)&&t.every((e,r)=>j(e.parameters,n[r].parameters))}function ne(t,n){return t.length!==n.length?!1:t.every((e,r)=>e.path===n[r].path)}function Xn(t,n){let e=[];return Object.entries(t.children).forEach(([r,i])=>{r===f&&(e=e.concat(n(i,r)))}),Object.entries(t.children).forEach(([r,i])=>{r!==f&&(e=e.concat(n(i,r)))}),e}var Re=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>new Q,providedIn:"root"})}return t})(),Q=class{parse(n){let e=new Ft(n);return new L(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){let e=`/${Oe(n.root,!0)}`,r=ri(n.queryParams),i=typeof n.fragment=="string"?`#${ei(n.fragment)}`:"";return`${e}${r}${i}`}},Jn=new Q;function tt(t){return t.segments.map(n=>ln(n)).join("/")}function Oe(t,n){if(!t.hasChildren())return tt(t);if(n){let e=t.children[f]?Oe(t.children[f],!1):"",r=[];return Object.entries(t.children).forEach(([i,s])=>{i!==f&&r.push(`${i}:${Oe(s,!1)}`)}),r.length>0?`${e}(${r.join("//")})`:e}else{let e=Xn(t,(r,i)=>i===f?[Oe(t.children[f],!1)]:[`${i}:${Oe(r,!1)}`]);return Object.keys(t.children).length===1&&t.children[f]!=null?`${tt(t)}/${e[0]}`:`${tt(t)}/(${e.join("//")})`}}function un(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Xe(t){return un(t).replace(/%3B/gi,";")}function ei(t){return encodeURI(t)}function zt(t){return un(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function rt(t){return decodeURIComponent(t)}function Wr(t){return rt(t.replace(/\+/g,"%20"))}function ln(t){return`${zt(t.path)}${ti(t.parameters)}`}function ti(t){return Object.entries(t).map(([n,e])=>`;${zt(n)}=${zt(e)}`).join("")}function ri(t){let n=Object.entries(t).map(([e,r])=>Array.isArray(r)?r.map(i=>`${Xe(e)}=${Xe(i)}`).join("&"):`${Xe(e)}=${Xe(r)}`).filter(e=>e);return n.length?`?${n.join("&")}`:""}var ni=/^[^\/()?;#]+/;function _t(t){let n=t.match(ni);return n?n[0]:""}var ii=/^[^\/()?;=#]+/;function oi(t){let n=t.match(ii);return n?n[0]:""}var si=/^[^=?&#]+/;function ai(t){let n=t.match(si);return n?n[0]:""}var ci=/^[^&#]+/;function ui(t){let n=t.match(ci);return n?n[0]:""}var Ft=class{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new g([],{}):new g([],this.parseChildren())}parseQueryParams(){let n={};if(this.consumeOptional("?"))do this.parseQueryParam(n);while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(this.remaining==="")return{};this.consumeOptional("/");let n=[];for(this.peekStartsWith("(")||n.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),n.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let r={};return this.peekStartsWith("(")&&(r=this.parseParens(!1)),(n.length>0||Object.keys(e).length>0)&&(r[f]=new g(n,e)),r}parseSegment(){let n=_t(this.remaining);if(n===""&&this.peekStartsWith(";"))throw new S(4009,!1);return this.capture(n),new W(rt(n),this.parseMatrixParams())}parseMatrixParams(){let n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){let e=oi(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let i=_t(this.remaining);i&&(r=i,this.capture(r))}n[rt(e)]=rt(r)}parseQueryParam(n){let e=ai(this.remaining);if(!e)return;this.capture(e);let r="";if(this.consumeOptional("=")){let o=ui(this.remaining);o&&(r=o,this.capture(r))}let i=Wr(e),s=Wr(r);if(n.hasOwnProperty(i)){let o=n[i];Array.isArray(o)||(o=[o],n[i]=o),o.push(s)}else n[i]=s}parseParens(n){let e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let r=_t(this.remaining),i=this.remaining[r.length];if(i!=="/"&&i!==")"&&i!==";")throw new S(4010,!1);let s;r.indexOf(":")>-1?(s=r.slice(0,r.indexOf(":")),this.capture(s),this.capture(":")):n&&(s=f);let o=this.parseChildren();e[s??f]=Object.keys(o).length===1&&o[f]?o[f]:new g([],o),this.consumeOptional("//")}return e}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return this.peekStartsWith(n)?(this.remaining=this.remaining.substring(n.length),!0):!1}capture(n){if(!this.consumeOptional(n))throw new S(4011,!1)}};function dn(t){return t.segments.length>0?new g([],{[f]:t}):t}function hn(t){let n={};for(let[r,i]of Object.entries(t.children)){let s=hn(i);if(r===f&&s.segments.length===0&&s.hasChildren())for(let[o,a]of Object.entries(s.children))n[o]=a;else(s.segments.length>0||s.hasChildren())&&(n[r]=s)}let e=new g(t.segments,n);return li(e)}function li(t){if(t.numberOfChildren===1&&t.children[f]){let n=t.children[f];return new g(t.segments.concat(n.segments),n.children)}return t}function K(t){return t instanceof L}function fn(t,n,e=null,r=null,i=new Q){let s=pn(t);return gn(s,n,e,r,i)}function pn(t){let n;function e(s){let o={};for(let c of s.children){let u=e(c);o[c.outlet]=u}let a=new g(s.url,o);return s===t&&(n=a),a}let r=e(t.root),i=dn(r);return n??i}function gn(t,n,e,r,i){let s=t;for(;s.parent;)s=s.parent;if(n.length===0)return Lt(s,s,s,e,r,i);let o=di(n);if(o.toRoot())return Lt(s,s,new g([],{}),e,r,i);let a=hi(o,s,t),c=a.processChildren?Ne(a.segmentGroup,a.index,o.commands):mn(a.segmentGroup,a.index,o.commands);return Lt(s,a.segmentGroup,c,e,r,i)}function it(t){return typeof t=="object"&&t!=null&&!t.outlets&&!t.segmentPath}function Ue(t){return typeof t=="object"&&t!=null&&t.outlets}function Qr(t,n,e){t||="\u0275";let r=new L;return r.queryParams={[t]:n},e.parse(e.serialize(r)).queryParams[t]}function Lt(t,n,e,r,i,s){let o={};for(let[u,l]of Object.entries(r??{}))o[u]=Array.isArray(l)?l.map(v=>Qr(u,v,s)):Qr(u,l,s);let a;t===n?a=e:a=vn(t,n,e);let c=dn(hn(a));return new L(c,o,i)}function vn(t,n,e){let r={};return Object.entries(t.children).forEach(([i,s])=>{s===n?r[i]=e:r[i]=vn(s,n,e)}),new g(t.segments,r)}var ot=class{isAbsolute;numberOfDoubleDots;commands;constructor(n,e,r){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=r,n&&r.length>0&&it(r[0]))throw new S(4003,!1);let i=r.find(Ue);if(i&&i!==rn(r))throw new S(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function di(t){if(typeof t[0]=="string"&&t.length===1&&t[0]==="/")return new ot(!0,0,t);let n=0,e=!1,r=t.reduce((i,s,o)=>{if(typeof s=="object"&&s!=null){if(s.outlets){let a={};return Object.entries(s.outlets).forEach(([c,u])=>{a[c]=typeof u=="string"?u.split("/"):u}),[...i,{outlets:a}]}if(s.segmentPath)return[...i,s.segmentPath]}return typeof s!="string"?[...i,s]:o===0?(s.split("/").forEach((a,c)=>{c==0&&a==="."||(c==0&&a===""?e=!0:a===".."?n++:a!=""&&i.push(a))}),i):[...i,s]},[]);return new ot(e,n,r)}var le=class{segmentGroup;processChildren;index;constructor(n,e,r){this.segmentGroup=n,this.processChildren=e,this.index=r}};function hi(t,n,e){if(t.isAbsolute)return new le(n,!0,0);if(!e)return new le(n,!1,NaN);if(e.parent===null)return new le(e,!0,0);let r=it(t.commands[0])?0:1,i=e.segments.length-1+r;return fi(e,i,t.numberOfDoubleDots)}function fi(t,n,e){let r=t,i=n,s=e;for(;s>i;){if(s-=i,r=r.parent,!r)throw new S(4005,!1);i=r.segments.length}return new le(r,!1,i-s)}function pi(t){return Ue(t[0])?t[0].outlets:{[f]:t}}function mn(t,n,e){if(t??=new g([],{}),t.segments.length===0&&t.hasChildren())return Ne(t,n,e);let r=gi(t,n,e),i=e.slice(r.commandIndex);if(r.match&&r.pathIndex<t.segments.length){let s=new g(t.segments.slice(0,r.pathIndex),{});return s.children[f]=new g(t.segments.slice(r.pathIndex),t.children),Ne(s,0,i)}else return r.match&&i.length===0?new g(t.segments,{}):r.match&&!t.hasChildren()?qt(t,n,e):r.match?Ne(t,0,i):qt(t,n,e)}function Ne(t,n,e){if(e.length===0)return new g(t.segments,{});{let r=pi(e),i={};if(Object.keys(r).some(s=>s!==f)&&t.children[f]&&t.numberOfChildren===1&&t.children[f].segments.length===0){let s=Ne(t.children[f],n,e);return new g(t.segments,s.children)}return Object.entries(r).forEach(([s,o])=>{typeof o=="string"&&(o=[o]),o!==null&&(i[s]=mn(t.children[s],n,o))}),Object.entries(t.children).forEach(([s,o])=>{r[s]===void 0&&(i[s]=o)}),new g(t.segments,i)}}function gi(t,n,e){let r=0,i=n,s={match:!1,pathIndex:0,commandIndex:0};for(;i<t.segments.length;){if(r>=e.length)return s;let o=t.segments[i],a=e[r];if(Ue(a))break;let c=`${a}`,u=r<e.length-1?e[r+1]:null;if(i>0&&c===void 0)break;if(c&&u&&typeof u=="object"&&u.outlets===void 0){if(!Zr(c,u,o))return s;r+=2}else{if(!Zr(c,{},o))return s;r++}i++}return{match:!0,pathIndex:i,commandIndex:r}}function qt(t,n,e){let r=t.segments.slice(0,n),i=0;for(;i<e.length;){let s=e[i];if(Ue(s)){let c=vi(s.outlets);return new g(r,c)}if(i===0&&it(e[0])){let c=t.segments[n];r.push(new W(c.path,Kr(e[0]))),i++;continue}let o=Ue(s)?s.outlets[f]:`${s}`,a=i<e.length-1?e[i+1]:null;o&&a&&it(a)?(r.push(new W(o,Kr(a))),i+=2):(r.push(new W(o,{})),i++)}return new g(r,{})}function vi(t){let n={};return Object.entries(t).forEach(([e,r])=>{typeof r=="string"&&(r=[r]),r!==null&&(n[e]=qt(new g([],{}),0,r))}),n}function Kr(t){let n={};return Object.entries(t).forEach(([e,r])=>n[e]=`${r}`),n}function Zr(t,n,e){return t==e.path&&j(n,e.parameters)}var de="imperative",y=(function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t})(y||{}),E=class{id;url;constructor(n,e){this.id=n,this.url=e}},Z=class extends E{type=y.NavigationStart;navigationTrigger;restoredState;constructor(n,e,r="imperative",i=null){super(n,e),this.navigationTrigger=r,this.restoredState=i}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},N=class extends E{urlAfterRedirects;type=y.NavigationEnd;constructor(n,e,r){super(n,e),this.urlAfterRedirects=r}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},I=(function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t[t.Aborted=4]="Aborted",t})(I||{}),fe=(function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t})(fe||{}),$=class extends E{reason;code;type=y.NavigationCancel;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},k=class extends E{reason;code;type=y.NavigationSkipped;constructor(n,e,r,i){super(n,e),this.reason=r,this.code=i}},pe=class extends E{error;target;type=y.NavigationError;constructor(n,e,r,i){super(n,e),this.error=r,this.target=i}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},_e=class extends E{urlAfterRedirects;state;type=y.RoutesRecognized;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},st=class extends E{urlAfterRedirects;state;type=y.GuardsCheckStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},at=class extends E{urlAfterRedirects;state;shouldActivate;type=y.GuardsCheckEnd;constructor(n,e,r,i,s){super(n,e),this.urlAfterRedirects=r,this.state=i,this.shouldActivate=s}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},ct=class extends E{urlAfterRedirects;state;type=y.ResolveStart;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},ut=class extends E{urlAfterRedirects;state;type=y.ResolveEnd;constructor(n,e,r,i){super(n,e),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},lt=class{route;type=y.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},dt=class{route;type=y.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},ht=class{snapshot;type=y.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},ft=class{snapshot;type=y.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},pt=class{snapshot;type=y.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},gt=class{snapshot;type=y.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},ge=class{routerEvent;position;anchor;type=y.Scroll;constructor(n,e,r){this.routerEvent=n,this.position=e,this.anchor=r}toString(){let n=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${n}')`}},Le=class{},ve=class{url;navigationBehaviorOptions;constructor(n,e){this.url=n,this.navigationBehaviorOptions=e}};function mi(t){return!(t instanceof Le)&&!(t instanceof ve)}function yi(t,n){return t.providers&&!t._injector&&(t._injector=Pt(t.providers,n,`Route: ${t.path}`)),t._injector??n}function _(t){return t.outlet||f}function Ri(t,n){let e=t.filter(r=>_(r)===n);return e.push(...t.filter(r=>_(r)!==n)),e}function Se(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let n=t.parent;n;n=n.parent){let e=n.routeConfig;if(e?._loadedInjector)return e._loadedInjector;if(e?._injector)return e._injector}return null}var vt=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return Se(this.route?.snapshot)??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new Ce(this.rootInjector)}},Ce=(()=>{class t{rootInjector;contexts=new Map;constructor(e){this.rootInjector=e}onChildOutletCreated(e,r){let i=this.getOrCreateContext(e);i.outlet=r,this.contexts.set(e,i)}onChildOutletDestroyed(e){let r=this.getContext(e);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let r=this.getContext(e);return r||(r=new vt(this.rootInjector),this.contexts.set(e,r)),r}getContext(e){return this.contexts.get(e)||null}static \u0275fac=function(r){return new(r||t)(We(ce))};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),mt=class{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){let e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){let e=Bt(n,this._root);return e?e.children.map(r=>r.value):[]}firstChild(n){let e=Bt(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){let e=Vt(n,this._root);return e.length<2?[]:e[e.length-2].children.map(i=>i.value).filter(i=>i!==n)}pathFromRoot(n){return Vt(n,this._root).map(e=>e.value)}};function Bt(t,n){if(t===n.value)return n;for(let e of n.children){let r=Bt(t,e);if(r)return r}return null}function Vt(t,n){if(t===n.value)return[n];for(let e of n.children){let r=Vt(t,e);if(r.length)return r.unshift(n),r}return[]}var M=class{value;children;constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}};function ue(t){let n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}var xe=class extends mt{snapshot;constructor(n,e){super(n),this.snapshot=e,Zt(this,n)}toString(){return this.snapshot.toString()}};function yn(t){let n=Si(t),e=new O([new W("",{})]),r=new O({}),i=new O({}),s=new O({}),o=new O(""),a=new B(e,r,s,o,i,f,t,n.root);return a.snapshot=n.root,new xe(new M(a,[]),n)}function Si(t){let n={},e={},r={},s=new ie([],n,r,"",e,f,t,null,{});return new je("",new M(s,[]))}var B=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(n,e,r,i,s,o,a,c){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=r,this.fragmentSubject=i,this.dataSubject=s,this.outlet=o,this.component=a,this._futureSnapshot=c,this.title=this.dataSubject?.pipe(R(u=>u[ke]))??p(void 0),this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=s}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(R(n=>oe(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(R(n=>oe(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function yt(t,n,e="emptyOnly"){let r,{routeConfig:i}=t;return n!==null&&(e==="always"||i?.path===""||!n.component&&!n.routeConfig?.loadComponent)?r={params:h(h({},n.params),t.params),data:h(h({},n.data),t.data),resolve:h(h(h(h({},t.data),n.data),i?.data),t._resolvedData)}:r={params:h({},t.params),data:h({},t.data),resolve:h(h({},t.data),t._resolvedData??{})},i&&Sn(i)&&(r.resolve[ke]=i.title),r}var ie=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;get title(){return this.data?.[ke]}constructor(n,e,r,i,s,o,a,c,u){this.url=n,this.params=e,this.queryParams=r,this.fragment=i,this.data=s,this.outlet=o,this.component=a,this.routeConfig=c,this._resolve=u}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=oe(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=oe(this.queryParams),this._queryParamMap}toString(){let n=this.url.map(r=>r.toString()).join("/"),e=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${n}', path:'${e}')`}},je=class extends mt{url;constructor(n,e){super(e),this.url=n,Zt(this,e)}toString(){return Rn(this._root)}};function Zt(t,n){n.value._routerState=t,n.children.forEach(e=>Zt(t,e))}function Rn(t){let n=t.children.length>0?` { ${t.children.map(Rn).join(", ")} } `:"";return`${t.value}${n}`}function xt(t){if(t.snapshot){let n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,j(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),j(n.params,e.params)||t.paramsSubject.next(e.params),Wn(n.url,e.url)||t.urlSubject.next(e.url),j(n.data,e.data)||t.dataSubject.next(e.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function Ht(t,n){let e=j(t.params,n.params)&&Yn(t.url,n.url),r=!t.parent!=!n.parent;return e&&!r&&(!t.parent||Ht(t.parent,n.parent))}function Sn(t){return typeof t.title=="string"||t.title===null}var Cn=new T(""),Yt=(()=>{class t{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=f;activateEvents=new te;deactivateEvents=new te;attachEvents=new te;detachEvents=new te;routerOutletData=Br();parentContexts=d(Ce);location=d(Er);changeDetector=d(Ze);inputBinder=d(wt,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(e){if(e.name){let{firstChange:r,previousValue:i}=e.name;if(r)return;this.isTrackedInParentContexts(i)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(i)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new S(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new S(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new S(4012,!1);this.location.detach();let e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,r){this.activated=e,this._activatedRoute=r,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){let e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,r){if(this.isActivated)throw new S(4013,!1);this._activatedRoute=e;let i=this.location,o=e.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,c=new Gt(e,a,i.injector,this.routerOutletData);this.activated=i.createComponent(o,{index:i.length,injector:c,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(r){return new(r||t)};static \u0275dir=Me({type:t,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[Te]})}return t})(),Gt=class{route;childContexts;parent;outletData;constructor(n,e,r,i){this.route=n,this.childContexts=e,this.parent=r,this.outletData=i}get(n,e){return n===B?this.route:n===Ce?this.childContexts:n===Cn?this.outletData:this.parent.get(n,e)}},wt=new T("");var Xt=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275cmp=Dr({type:t,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(r,i){r&1&&xr(0,"router-outlet")},dependencies:[Yt],encapsulation:2})}return t})();function Jt(t){let n=t.children&&t.children.map(Jt),e=n?P(h({},t),{children:n}):h({},t);return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==f&&(e.component=Xt),e}function Ci(t,n,e){let r=$e(t,n._root,e?e._root:void 0);return new xe(r,n)}function $e(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){let r=e.value;r._futureSnapshot=n.value;let i=wi(t,n,e);return new M(r,i)}else{if(t.shouldAttach(n.value)){let s=t.retrieve(n.value);if(s!==null){let o=s.route;return o.value._futureSnapshot=n.value,o.children=n.children.map(a=>$e(t,a)),o}}let r=bi(n.value),i=n.children.map(s=>$e(t,s));return new M(r,i)}}function wi(t,n,e){return n.children.map(r=>{for(let i of e.children)if(t.shouldReuseRoute(r.value,i.value.snapshot))return $e(t,r,i);return $e(t,r)})}function bi(t){return new B(new O(t.url),new O(t.params),new O(t.queryParams),new O(t.fragment),new O(t.data),t.outlet,t.component,t)}var me=class{redirectTo;navigationBehaviorOptions;constructor(n,e){this.redirectTo=n,this.navigationBehaviorOptions=e}},wn="ngNavigationCancelingError";function Rt(t,n){let{redirectTo:e,navigationBehaviorOptions:r}=K(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,i=bn(!1,I.Redirect);return i.url=e,i.navigationBehaviorOptions=r,i}function bn(t,n){let e=new Error(`NavigationCancelingError: ${t||""}`);return e[wn]=!0,e.cancellationCode=n,e}function Ii(t){return In(t)&&K(t.url)}function In(t){return!!t&&t[wn]}var Ai=(t,n,e,r)=>R(i=>(new Wt(n,i.targetRouterState,i.currentRouterState,e,r).activate(t),i)),Wt=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,e,r,i,s){this.routeReuseStrategy=n,this.futureState=e,this.currState=r,this.forwardEvent=i,this.inputBindingEnabled=s}activate(n){let e=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,r,n),xt(this.futureState.root),this.activateChildRoutes(e,r,n)}deactivateChildRoutes(n,e,r){let i=ue(e);n.children.forEach(s=>{let o=s.value.outlet;this.deactivateRoutes(s,i[o],r),delete i[o]}),Object.values(i).forEach(s=>{this.deactivateRouteAndItsChildren(s,r)})}deactivateRoutes(n,e,r){let i=n.value,s=e?e.value:null;if(i===s)if(i.component){let o=r.getContext(i.outlet);o&&this.deactivateChildRoutes(n,e,o.children)}else this.deactivateChildRoutes(n,e,r);else s&&this.deactivateRouteAndItsChildren(e,r)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,s=ue(n);for(let o of Object.values(s))this.deactivateRouteAndItsChildren(o,i);if(r&&r.outlet){let o=r.outlet.detach(),a=r.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:o,route:n,contexts:a})}}deactivateRouteAndOutlet(n,e){let r=e.getContext(n.value.outlet),i=r&&n.value.component?r.children:e,s=ue(n);for(let o of Object.values(s))this.deactivateRouteAndItsChildren(o,i);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null)}activateChildRoutes(n,e,r){let i=ue(e);n.children.forEach(s=>{this.activateRoutes(s,i[s.value.outlet],r),this.forwardEvent(new gt(s.value.snapshot))}),n.children.length&&this.forwardEvent(new ft(n.value.snapshot))}activateRoutes(n,e,r){let i=n.value,s=e?e.value:null;if(xt(i),i===s)if(i.component){let o=r.getOrCreateContext(i.outlet);this.activateChildRoutes(n,e,o.children)}else this.activateChildRoutes(n,e,r);else if(i.component){let o=r.getOrCreateContext(i.outlet);if(this.routeReuseStrategy.shouldAttach(i.snapshot)){let a=this.routeReuseStrategy.retrieve(i.snapshot);this.routeReuseStrategy.store(i.snapshot,null),o.children.onOutletReAttached(a.contexts),o.attachRef=a.componentRef,o.route=a.route.value,o.outlet&&o.outlet.attach(a.componentRef,a.route.value),xt(a.route.value),this.activateChildRoutes(n,null,o.children)}else o.attachRef=null,o.route=i,o.outlet&&o.outlet.activateWith(i,o.injector),this.activateChildRoutes(n,null,o.children)}else this.activateChildRoutes(n,null,r)}},St=class{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}},he=class{component;route;constructor(n,e){this.component=n,this.route=e}};function Ti(t,n,e){let r=t._root,i=n?n._root:null;return De(r,i,e,[r.value])}function Mi(t){let n=t.routeConfig?t.routeConfig.canActivateChild:null;return!n||n.length===0?null:{node:t,guards:n}}function we(t,n){let e=Symbol(),r=n.get(t,e);return r===e?typeof t=="function"&&!mr(t)?t:n.get(t):r}function De(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let s=ue(n);return t.children.forEach(o=>{Ei(o,s[o.value.outlet],e,r.concat([o.value]),i),delete s[o.value.outlet]}),Object.entries(s).forEach(([o,a])=>Pe(a,e.getContext(o),i)),i}function Ei(t,n,e,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let s=t.value,o=n?n.value:null,a=e?e.getContext(t.value.outlet):null;if(o&&s.routeConfig===o.routeConfig){let c=Oi(o,s,s.routeConfig.runGuardsAndResolvers);c?i.canActivateChecks.push(new St(r)):(s.data=o.data,s._resolvedData=o._resolvedData),s.component?De(t,n,a?a.children:null,r,i):De(t,n,e,r,i),c&&a&&a.outlet&&a.outlet.isActivated&&i.canDeactivateChecks.push(new he(a.outlet.component,o))}else o&&Pe(n,a,i),i.canActivateChecks.push(new St(r)),s.component?De(t,null,a?a.children:null,r,i):De(t,null,e,r,i);return i}function Oi(t,n,e){if(typeof e=="function")return e(t,n);switch(e){case"pathParamsChange":return!ne(t.url,n.url);case"pathParamsOrQueryParamsChange":return!ne(t.url,n.url)||!j(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Ht(t,n)||!j(t.queryParams,n.queryParams);case"paramsChange":default:return!Ht(t,n)}}function Pe(t,n,e){let r=ue(t),i=t.value;Object.entries(r).forEach(([s,o])=>{i.component?n?Pe(o,n.children.getContext(s),e):Pe(o,null,e):Pe(o,n,e)}),i.component?n&&n.outlet&&n.outlet.isActivated?e.canDeactivateChecks.push(new he(n.outlet.component,i)):e.canDeactivateChecks.push(new he(null,i)):e.canDeactivateChecks.push(new he(null,i))}function ze(t){return typeof t=="function"}function Di(t){return typeof t=="boolean"}function Ni(t){return t&&ze(t.canLoad)}function Pi(t){return t&&ze(t.canActivate)}function Ui(t){return t&&ze(t.canActivateChild)}function _i(t){return t&&ze(t.canDeactivate)}function Li(t){return t&&ze(t.canMatch)}function An(t){return t instanceof dr||t?.name==="EmptyError"}var Je=Symbol("INITIAL_VALUE");function ye(){return q(t=>hr(t.map(n=>n.pipe(ae(1),gr(Je)))).pipe(R(n=>{for(let e of n)if(e!==!0){if(e===Je)return Je;if(e===!1||xi(e))return e}return!0}),V(n=>n!==Je),ae(1)))}function xi(t){return K(t)||t instanceof me}function Tn(t){return t.aborted?p(void 0).pipe(ae(1)):new ur(n=>{let e=()=>{n.next(),n.complete()};return t.addEventListener("abort",e),()=>t.removeEventListener("abort",e)})}function Mn(t){return Ge(Tn(t))}function ji(t,n){return F(e=>{let{targetSnapshot:r,currentSnapshot:i,guards:{canActivateChecks:s,canDeactivateChecks:o}}=e;return o.length===0&&s.length===0?p(P(h({},e),{guardsResult:!0})):$i(o,r,i,t).pipe(F(a=>a&&Di(a)?ki(r,s,t,n):p(a)),R(a=>P(h({},e),{guardsResult:a})))})}function $i(t,n,e,r){return U(t).pipe(F(i=>Vi(i.component,i.route,e,n,r)),H(i=>i!==!0,!0))}function ki(t,n,e,r){return U(n).pipe(He(i=>fr(Fi(i.route.parent,r),zi(i.route,r),Bi(t,i.path,e),qi(t,i.route,e))),H(i=>i!==!0,!0))}function zi(t,n){return t!==null&&n&&n(new pt(t)),p(!0)}function Fi(t,n){return t!==null&&n&&n(new ht(t)),p(!0)}function qi(t,n,e){let r=n.routeConfig?n.routeConfig.canActivate:null;if(!r||r.length===0)return p(!0);let i=r.map(s=>Be(()=>{let o=Se(n)??e,a=we(s,o),c=Pi(a)?a.canActivate(n,t):D(o,()=>a(n,t));return se(c).pipe(H())}));return p(i).pipe(ye())}function Bi(t,n,e){let r=n[n.length-1],s=n.slice(0,n.length-1).reverse().map(o=>Mi(o)).filter(o=>o!==null).map(o=>Be(()=>{let a=o.guards.map(c=>{let u=Se(o.node)??e,l=we(c,u),v=Ui(l)?l.canActivateChild(r,t):D(u,()=>l(r,t));return se(v).pipe(H())});return p(a).pipe(ye())}));return p(s).pipe(ye())}function Vi(t,n,e,r,i){let s=n&&n.routeConfig?n.routeConfig.canDeactivate:null;if(!s||s.length===0)return p(!0);let o=s.map(a=>{let c=Se(n)??i,u=we(a,c),l=_i(u)?u.canDeactivate(t,n,e,r):D(c,()=>u(t,n,e,r));return se(l).pipe(H())});return p(o).pipe(ye())}function Hi(t,n,e,r,i){let s=n.canLoad;if(s===void 0||s.length===0)return p(!0);let o=s.map(a=>{let c=we(a,t),u=Ni(c)?c.canLoad(n,e):D(t,()=>c(n,e)),l=se(u);return i?l.pipe(Mn(i)):l});return p(o).pipe(ye(),En(r))}function En(t){return cr(A(n=>{if(typeof n!="boolean")throw Rt(t,n)}),R(n=>n===!0))}function Gi(t,n,e,r,i){let s=n.canMatch;if(!s||s.length===0)return p(!0);let o=s.map(a=>{let c=we(a,t),u=Li(c)?c.canMatch(n,e):D(t,()=>c(n,e)),l=se(u);return i?l.pipe(Mn(i)):l});return p(o).pipe(ye(),En(r))}var re=class On extends Error{segmentGroup;constructor(n){super(),this.segmentGroup=n||null,Object.setPrototypeOf(this,On.prototype)}},Qt=class Dn extends Error{urlTree;constructor(n){super(),this.urlTree=n,Object.setPrototypeOf(this,Dn.prototype)}};function Wi(t){throw new S(4e3,!1)}function Qi(t){throw bn(!1,I.GuardRejected)}var Ki=class{urlSerializer;urlTree;constructor(n,e){this.urlSerializer=n,this.urlTree=e}lineralizeSegments(n,e){return m(this,null,function*(){let r=[],i=e.root;for(;;){if(r=r.concat(i.segments),i.numberOfChildren===0)return r;if(i.numberOfChildren>1||!i.children[f])throw Wi(`${n.redirectTo}`);i=i.children[f]}})}applyRedirectCommands(n,e,r,i,s){return m(this,null,function*(){let o=yield Zi(e,i,s);if(o instanceof L)throw new Qt(o);let a=this.applyRedirectCreateUrlTree(o,this.urlSerializer.parse(o),n,r);if(o[0]==="/")throw new Qt(a);return a})}applyRedirectCreateUrlTree(n,e,r,i){let s=this.createSegmentGroup(n,e.root,r,i);return new L(s,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){let r={};return Object.entries(n).forEach(([i,s])=>{if(typeof s=="string"&&s[0]===":"){let a=s.substring(1);r[i]=e[a]}else r[i]=s}),r}createSegmentGroup(n,e,r,i){let s=this.createSegments(n,e.segments,r,i),o={};return Object.entries(e.children).forEach(([a,c])=>{o[a]=this.createSegmentGroup(n,c,r,i)}),new g(s,o)}createSegments(n,e,r,i){return e.map(s=>s.path[0]===":"?this.findPosParam(n,s,i):this.findOrReturn(s,r))}findPosParam(n,e,r){let i=r[e.path.substring(1)];if(!i)throw new S(4001,!1);return i}findOrReturn(n,e){let r=0;for(let i of e){if(i.path===n.path)return e.splice(r),i;r++}return n}};function Zi(t,n,e){if(typeof t=="string")return Promise.resolve(t);let r=t,{queryParams:i,fragment:s,routeConfig:o,url:a,outlet:c,params:u,data:l,title:v}=n;return nt(se(D(e,()=>r({params:u,data:l,queryParams:i,fragment:s,routeConfig:o,url:a,outlet:c,title:v}))))}var Kt={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function Yi(t,n,e,r,i,s){let o=Nn(t,n,e);return o.matched?(r=yi(n,r),Gi(r,n,e,i,s).pipe(R(a=>a===!0?o:h({},Kt)))):p(o)}function Nn(t,n,e){if(n.path==="**")return Xi(e);if(n.path==="")return n.pathMatch==="full"&&(t.hasChildren()||e.length>0)?h({},Kt):{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};let i=(n.matcher||en)(e,t,n);if(!i)return h({},Kt);let s={};Object.entries(i.posParams??{}).forEach(([a,c])=>{s[a]=c.path});let o=i.consumed.length>0?h(h({},s),i.consumed[i.consumed.length-1].parameters):s;return{matched:!0,consumedSegments:i.consumed,remainingSegments:e.slice(i.consumed.length),parameters:o,positionalParamSegments:i.posParams??{}}}function Xi(t){return{matched:!0,parameters:t.length>0?rn(t).parameters:{},consumedSegments:t,remainingSegments:[],positionalParamSegments:{}}}function Yr(t,n,e,r){return e.length>0&&to(t,e,r)?{segmentGroup:new g(n,eo(r,new g(e,t.children))),slicedSegments:[]}:e.length===0&&ro(t,e,r)?{segmentGroup:new g(t.segments,Ji(t,e,r,t.children)),slicedSegments:e}:{segmentGroup:new g(t.segments,t.children),slicedSegments:e}}function Ji(t,n,e,r){let i={};for(let s of e)if(bt(t,n,s)&&!r[_(s)]){let o=new g([],{});i[_(s)]=o}return h(h({},r),i)}function eo(t,n){let e={};e[f]=n;for(let r of t)if(r.path===""&&_(r)!==f){let i=new g([],{});e[_(r)]=i}return e}function to(t,n,e){return e.some(r=>bt(t,n,r)&&_(r)!==f)}function ro(t,n,e){return e.some(r=>bt(t,n,r))}function bt(t,n,e){return(t.hasChildren()||n.length>0)&&e.pathMatch==="full"?!1:e.path===""}function no(t,n,e){return n.length===0&&!t.children[e]}var io=class{};function oo(t,n,e,r,i,s,o="emptyOnly",a){return m(this,null,function*(){return new ao(t,n,e,r,i,o,s,a).recognize()})}var so=31,ao=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,e,r,i,s,o,a,c){this.injector=n,this.configLoader=e,this.rootComponentType=r,this.config=i,this.urlTree=s,this.paramsInheritanceStrategy=o,this.urlSerializer=a,this.abortSignal=c,this.applyRedirects=new Ki(this.urlSerializer,this.urlTree)}noMatchError(n){return new S(4002,`'${n.segmentGroup}'`)}recognize(){return m(this,null,function*(){let n=Yr(this.urlTree.root,[],[],this.config).segmentGroup,{children:e,rootSnapshot:r}=yield this.match(n),i=new M(r,e),s=new je("",i),o=fn(r,[],this.urlTree.queryParams,this.urlTree.fragment);return o.queryParams=this.urlTree.queryParams,s.url=this.urlSerializer.serialize(o),{state:s,tree:o}})}match(n){return m(this,null,function*(){let e=new ie([],Object.freeze({}),Object.freeze(h({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),f,this.rootComponentType,null,{});try{return{children:yield this.processSegmentGroup(this.injector,this.config,n,f,e),rootSnapshot:e}}catch(r){if(r instanceof Qt)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof re?this.noMatchError(r):r}})}processSegmentGroup(n,e,r,i,s){return m(this,null,function*(){if(r.segments.length===0&&r.hasChildren())return this.processChildren(n,e,r,s);let o=yield this.processSegment(n,e,r,r.segments,i,!0,s);return o instanceof M?[o]:[]})}processChildren(n,e,r,i){return m(this,null,function*(){let s=[];for(let c of Object.keys(r.children))c==="primary"?s.unshift(c):s.push(c);let o=[];for(let c of s){let u=r.children[c],l=Ri(e,c),v=yield this.processSegmentGroup(n,l,u,c,i);o.push(...v)}let a=Pn(o);return co(a),a})}processSegment(n,e,r,i,s,o,a){return m(this,null,function*(){for(let c of e)try{return yield this.processSegmentAgainstRoute(c._injector??n,e,c,r,i,s,o,a)}catch(u){if(u instanceof re||An(u))continue;throw u}if(no(r,i,s))return new io;throw new re(r)})}processSegmentAgainstRoute(n,e,r,i,s,o,a,c){return m(this,null,function*(){if(_(r)!==o&&(o===f||!bt(i,s,r)))throw new re(i);if(r.redirectTo===void 0)return this.matchSegmentAgainstRoute(n,i,r,s,o,c);if(this.allowRedirects&&a)return this.expandSegmentAgainstRouteUsingRedirect(n,i,e,r,s,o,c);throw new re(i)})}expandSegmentAgainstRouteUsingRedirect(n,e,r,i,s,o,a){return m(this,null,function*(){let{matched:c,parameters:u,consumedSegments:l,positionalParamSegments:v,remainingSegments:w}=Nn(e,i,s);if(!c)throw new re(e);typeof i.redirectTo=="string"&&i.redirectTo[0]==="/"&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>so&&(this.allowRedirects=!1));let b=new ie(s,u,Object.freeze(h({},this.urlTree.queryParams)),this.urlTree.fragment,Xr(i),_(i),i.component??i._loadedComponent??null,i,Jr(i)),Y=yt(b,a,this.paramsInheritanceStrategy);if(b.params=Object.freeze(Y.params),b.data=Object.freeze(Y.data),this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let X=yield this.applyRedirects.applyRedirectCommands(l,i.redirectTo,v,b,n),J=yield this.applyRedirects.lineralizeSegments(i,X);return this.processSegment(n,r,e,J.concat(w),o,!1,a)})}matchSegmentAgainstRoute(n,e,r,i,s,o){return m(this,null,function*(){if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let a=yield nt(Yi(e,r,i,n,this.urlSerializer,this.abortSignal));if(r.path==="**"&&(e.children={}),!a?.matched)throw new re(e);n=r._injector??n;let{routes:c}=yield this.getChildConfig(n,r,i),u=r._loadedInjector??n,{parameters:l,consumedSegments:v,remainingSegments:w}=a,b=new ie(v,l,Object.freeze(h({},this.urlTree.queryParams)),this.urlTree.fragment,Xr(r),_(r),r.component??r._loadedComponent??null,r,Jr(r)),Y=yt(b,o,this.paramsInheritanceStrategy);b.params=Object.freeze(Y.params),b.data=Object.freeze(Y.data);let{segmentGroup:X,slicedSegments:J}=Yr(e,v,w,c);if(J.length===0&&X.hasChildren()){let Hn=yield this.processChildren(u,c,X,b);return new M(b,Hn)}if(c.length===0&&J.length===0)return new M(b,[]);let qe=_(r)===s,sr=yield this.processSegment(u,c,X,J,qe?f:s,!0,b);return new M(b,sr instanceof M?[sr]:[])})}getChildConfig(n,e,r){return m(this,null,function*(){if(e.children)return{routes:e.children,injector:n};if(e.loadChildren){if(e._loadedRoutes!==void 0)return{routes:e._loadedRoutes,injector:e._loadedInjector};if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);if(yield nt(Hi(n,e,r,this.urlSerializer,this.abortSignal))){let s=yield this.configLoader.loadChildren(n,e);return e._loadedRoutes=s.routes,e._loadedInjector=s.injector,s}throw Qi(e)}return{routes:[],injector:n}})}};function co(t){t.sort((n,e)=>n.value.outlet===f?-1:e.value.outlet===f?1:n.value.outlet.localeCompare(e.value.outlet))}function uo(t){let n=t.value.routeConfig;return n&&n.path===""}function Pn(t){let n=[],e=new Set;for(let r of t){if(!uo(r)){n.push(r);continue}let i=n.find(s=>r.value.routeConfig===s.value.routeConfig);i!==void 0?(i.children.push(...r.children),e.add(i)):n.push(r)}for(let r of e){let i=Pn(r.children);n.push(new M(r.value,i))}return n.filter(r=>!e.has(r))}function Xr(t){return t.data||{}}function Jr(t){return t.resolve||{}}var lo=new T("",{factory:()=>oo});function ho(t,n,e,r,i,s,o){let a=t.get(lo);return F(c=>p(c).pipe(q(u=>a(t,n,e,r,u.extractedUrl,i,s,o)),R(({state:u,tree:l})=>P(h({},c),{targetSnapshot:u,urlAfterRedirects:l}))))}function fo(t,n){return F(e=>{let{targetSnapshot:r,guards:{canActivateChecks:i}}=e;if(!i.length)return p(e);let s=new Set(i.map(c=>c.route)),o=new Set;for(let c of s)if(!o.has(c))for(let u of Un(c))o.add(u);let a=0;return U(o).pipe(He(c=>s.has(c)?po(c,r,t,n):(c.data=yt(c,c.parent,t).resolve,p(void 0))),A(()=>a++),Et(1),F(c=>a===o.size?p(e):z))})}function Un(t){let n=t.children.map(e=>Un(e)).flat();return[t,...n]}function po(t,n,e,r){let i=t.routeConfig,s=t._resolve;return i?.title!==void 0&&!Sn(i)&&(s[ke]=i.title),Be(()=>(t.data=yt(t,t.parent,e).resolve,go(s,t,n,r).pipe(R(o=>(t._resolvedData=o,t.data=h(h({},t.data),o),null)))))}function go(t,n,e,r){let i=kt(t);if(i.length===0)return p({});let s={};return U(i).pipe(F(o=>vo(t[o],n,e,r).pipe(H(),A(a=>{if(a instanceof me)throw Rt(new Q,a);s[o]=a}))),Et(1),R(()=>s),Ve(o=>An(o)?z:lr(o)))}function vo(t,n,e,r){let i=Se(n)??r,s=we(t,i),o=s.resolve?s.resolve(n,e):D(i,()=>s(n,e));return se(o)}function jt(t){return q(n=>{let e=t(n);return e?U(e).pipe(R(()=>n)):p(n)})}var er=(()=>{class t{buildTitle(e){let r,i=e.root;for(;i!==void 0;)r=this.getResolvedTitleForRoute(i)??r,i=i.children.find(s=>s.outlet===f);return r}getResolvedTitleForRoute(e){return e.data[ke]}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(_n),providedIn:"root"})}return t})(),_n=(()=>{class t extends er{title;constructor(e){super(),this.title=e}updateTitle(e){let r=this.buildTitle(e);r!==void 0&&this.title.setTitle(r)}static \u0275fac=function(r){return new(r||t)(We(Hr))};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),be=new T("",{factory:()=>({})}),Fe=new T(""),Ln=(()=>{class t{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=d(Fr);loadComponent(e,r){return m(this,null,function*(){if(this.componentLoaders.get(r))return this.componentLoaders.get(r);if(r._loadedComponent)return Promise.resolve(r._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(r);let i=m(this,null,function*(){try{let s=yield nn(D(e,()=>r.loadComponent())),o=yield $n(jn(s));return this.onLoadEndListener&&this.onLoadEndListener(r),r._loadedComponent=o,o}finally{this.componentLoaders.delete(r)}});return this.componentLoaders.set(r,i),i})}loadChildren(e,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return Promise.resolve({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let i=m(this,null,function*(){try{let s=yield xn(r,this.compiler,e,this.onLoadEndListener);return r._loadedRoutes=s.routes,r._loadedInjector=s.injector,s}finally{this.childrenLoaders.delete(r)}});return this.childrenLoaders.set(r,i),i}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function xn(t,n,e,r){return m(this,null,function*(){let i=yield nn(D(e,()=>t.loadChildren())),s=yield $n(jn(i)),o;s instanceof Or||Array.isArray(s)?o=s:o=yield n.compileModuleAsync(s),r&&r(t);let a,c,u=!1;return Array.isArray(o)?(c=o,u=!0):(a=o.create(e).injector,c=a.get(Fe,[],{optional:!0,self:!0}).flat()),{routes:c.map(Jt),injector:a}})}function mo(t){return t&&typeof t=="object"&&"default"in t}function jn(t){return mo(t)?t.default:t}function $n(t){return m(this,null,function*(){return t})}var It=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(yo),providedIn:"root"})}return t})(),yo=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,r){return e}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),tr=new T(""),rr=new T("");function kn(t,n,e){let r=t.get(rr),i=t.get(Rr);if(!i.startViewTransition||r.skipNextTransition)return r.skipNextTransition=!1,new Promise(u=>setTimeout(u));let s,o=new Promise(u=>{s=u}),a=i.startViewTransition(()=>(s(),Ro(t)));a.ready.catch(u=>{}),a.finished.catch(u=>{});let{onViewTransitionCreated:c}=r;return c&&D(t,()=>c({transition:a,from:n,to:e})),o}function Ro(t){return new Promise(n=>{Tr({read:()=>setTimeout(n)},{injector:t})})}var So=()=>{},zn=new T(""),nr=(()=>{class t{currentNavigation=Ae(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=Ae(null);events=new ee;transitionAbortWithErrorSubject=new ee;configLoader=d(Ln);environmentInjector=d(ce);destroyRef=d(Sr);urlSerializer=d(Re);rootContexts=d(Ce);location=d(Ee);inputBindingEnabled=d(wt,{optional:!0})!==null;titleStrategy=d(er);options=d(be,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=d(It);createViewTransition=d(tr,{optional:!0});navigationErrorHandler=d(zn,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>p(void 0);rootComponentType=null;destroyed=!1;constructor(){let e=i=>this.events.next(new lt(i)),r=i=>this.events.next(new dt(i));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=e,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(e){let r=++this.navigationId;G(()=>{this.transitions?.next(P(h({},e),{extractedUrl:this.urlHandlingStrategy.extract(e.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:r}))})}setupNavigations(e){return this.transitions=new O(null),this.transitions.pipe(V(r=>r!==null),q(r=>{let i=!1,s=new AbortController;return p(r).pipe(q(o=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,"",I.SupersededByNewNavigation),z;this.currentTransition=r;let a=this.lastSuccessfulNavigation();this.currentNavigation.set({id:o.id,initialUrl:o.rawUrl,extractedUrl:o.extractedUrl,targetBrowserUrl:typeof o.extras.browserUrl=="string"?this.urlSerializer.parse(o.extras.browserUrl):o.extras.browserUrl,trigger:o.source,extras:o.extras,previousNavigation:a?P(h({},a),{previousNavigation:null}):null,abort:()=>s.abort()});let c=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),u=o.extras.onSameUrlNavigation??e.onSameUrlNavigation;if(!c&&u!=="reload")return this.events.next(new k(o.id,this.urlSerializer.serialize(o.rawUrl),"",fe.IgnoredSameUrlNavigation)),o.resolve(!1),z;if(this.urlHandlingStrategy.shouldProcessUrl(o.rawUrl))return p(o).pipe(q(l=>(this.events.next(new Z(l.id,this.urlSerializer.serialize(l.extractedUrl),l.source,l.restoredState)),l.id!==this.navigationId?z:Promise.resolve(l))),ho(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy,s.signal),A(l=>{r.targetSnapshot=l.targetSnapshot,r.urlAfterRedirects=l.urlAfterRedirects,this.currentNavigation.update(w=>(w.finalUrl=l.urlAfterRedirects,w));let v=new _e(l.id,this.urlSerializer.serialize(l.extractedUrl),this.urlSerializer.serialize(l.urlAfterRedirects),l.targetSnapshot);this.events.next(v)}));if(c&&this.urlHandlingStrategy.shouldProcessUrl(o.currentRawUrl)){let{id:l,extractedUrl:v,source:w,restoredState:b,extras:Y}=o,X=new Z(l,this.urlSerializer.serialize(v),w,b);this.events.next(X);let J=yn(this.rootComponentType).snapshot;return this.currentTransition=r=P(h({},o),{targetSnapshot:J,urlAfterRedirects:v,extras:P(h({},Y),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.update(qe=>(qe.finalUrl=v,qe)),p(r)}else return this.events.next(new k(o.id,this.urlSerializer.serialize(o.extractedUrl),"",fe.IgnoredByUrlHandlingStrategy)),o.resolve(!1),z}),A(o=>{let a=new st(o.id,this.urlSerializer.serialize(o.extractedUrl),this.urlSerializer.serialize(o.urlAfterRedirects),o.targetSnapshot);this.events.next(a)}),R(o=>(this.currentTransition=r=P(h({},o),{guards:Ti(o.targetSnapshot,o.currentSnapshot,this.rootContexts)}),r)),ji(this.environmentInjector,o=>this.events.next(o)),A(o=>{if(r.guardsResult=o.guardsResult,o.guardsResult&&typeof o.guardsResult!="boolean")throw Rt(this.urlSerializer,o.guardsResult);let a=new at(o.id,this.urlSerializer.serialize(o.extractedUrl),this.urlSerializer.serialize(o.urlAfterRedirects),o.targetSnapshot,!!o.guardsResult);this.events.next(a)}),V(o=>o.guardsResult?!0:(this.cancelNavigationTransition(o,"",I.GuardRejected),!1)),jt(o=>{if(o.guards.canActivateChecks.length!==0)return p(o).pipe(A(a=>{let c=new ct(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(c)}),q(a=>{let c=!1;return p(a).pipe(fo(this.paramsInheritanceStrategy,this.environmentInjector),A({next:()=>c=!0,complete:()=>{c||this.cancelNavigationTransition(a,"",I.NoDataFromResolver)}}))}),A(a=>{let c=new ut(a.id,this.urlSerializer.serialize(a.extractedUrl),this.urlSerializer.serialize(a.urlAfterRedirects),a.targetSnapshot);this.events.next(c)}))}),jt(o=>{let a=u=>{let l=[];if(u.routeConfig?._loadedComponent)u.component=u.routeConfig?._loadedComponent;else if(u.routeConfig?.loadComponent){let v=Se(u)??this.environmentInjector;l.push(this.configLoader.loadComponent(v,u.routeConfig).then(w=>{u.component=w}))}for(let v of u.children)l.push(...a(v));return l},c=a(o.targetSnapshot.root);return c.length===0?p(o):U(Promise.all(c).then(()=>o))}),jt(()=>this.afterPreactivation()),q(()=>{let{currentSnapshot:o,targetSnapshot:a}=r,c=this.createViewTransition?.(this.environmentInjector,o.root,a.root);return c?U(c).pipe(R(()=>r)):p(r)}),R(o=>{let a=Ci(e.routeReuseStrategy,o.targetSnapshot,o.currentRouterState);return this.currentTransition=r=P(h({},o),{targetRouterState:a}),this.currentNavigation.update(c=>(c.targetRouterState=a,c)),r}),A(()=>{this.events.next(new Le)}),Ai(this.rootContexts,e.routeReuseStrategy,o=>this.events.next(o),this.inputBindingEnabled),ae(1),Ge(Tn(s.signal).pipe(V(()=>!i&&!r.targetRouterState),A(()=>{this.cancelNavigationTransition(r,s.signal.reason+"",I.Aborted)}))),A({next:o=>{i=!0,this.currentNavigation.update(a=>(a.abort=So,a)),this.lastSuccessfulNavigation.set(G(this.currentNavigation)),this.events.next(new N(o.id,this.urlSerializer.serialize(o.extractedUrl),this.urlSerializer.serialize(o.urlAfterRedirects))),this.titleStrategy?.updateTitle(o.targetRouterState.snapshot),o.resolve(!0)},complete:()=>{i=!0}}),Ge(this.transitionAbortWithErrorSubject.pipe(A(o=>{throw o}))),pr(()=>{s.abort(),i||this.cancelNavigationTransition(r,"",I.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),Ve(o=>{if(this.destroyed)return r.resolve(!1),z;if(i=!0,In(o))this.events.next(new $(r.id,this.urlSerializer.serialize(r.extractedUrl),o.message,o.cancellationCode)),Ii(o)?this.events.next(new ve(o.url,o.navigationBehaviorOptions)):r.resolve(!1);else{let a=new pe(r.id,this.urlSerializer.serialize(r.extractedUrl),o,r.targetSnapshot??void 0);try{let c=D(this.environmentInjector,()=>this.navigationErrorHandler?.(a));if(c instanceof me){let{message:u,cancellationCode:l}=Rt(this.urlSerializer,c);this.events.next(new $(r.id,this.urlSerializer.serialize(r.extractedUrl),u,l)),this.events.next(new ve(c.redirectTo,c.navigationBehaviorOptions))}else throw this.events.next(a),o}catch(c){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(c)}}return z}))}))}cancelNavigationTransition(e,r,i){let s=new $(e.id,this.urlSerializer.serialize(e.extractedUrl),r,i);this.events.next(s),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let e=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=G(this.currentNavigation),i=r?.targetBrowserUrl??r?.extractedUrl;return e.toString()!==i?.toString()&&!r?.extras.skipLocationChange}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Co(t){return t!==de}var Fn=(()=>{class t{static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(wo),providedIn:"root"})}return t})(),Ct=class{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}},wo=(()=>{class t extends Ct{static \u0275fac=(()=>{let e;return function(i){return(e||(e=Ke(t)))(i||t)}})();static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})(),ir=(()=>{class t{urlSerializer=d(Re);options=d(be,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";location=d(Ee);urlHandlingStrategy=d(It);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new L;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:e,initialUrl:r,targetBrowserUrl:i}){let s=e!==void 0?this.urlHandlingStrategy.merge(e,r):r,o=i??s;return o instanceof L?this.urlSerializer.serialize(o):o}commitTransition({targetRouterState:e,finalUrl:r,initialUrl:i}){r&&e?(this.currentUrlTree=r,this.rawUrlTree=this.urlHandlingStrategy.merge(r,i),this.routerState=e):this.rawUrlTree=i}routerState=yn(null);getRouterState(){return this.routerState}stateMemento=this.createStateMemento();updateStateMemento(){this.stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}resetInternalState({finalUrl:e}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e??this.rawUrlTree)}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:()=>d(qn),providedIn:"root"})}return t})(),qn=(()=>{class t extends ir{currentPageId=0;lastSuccessfulId=-1;restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(r=>{r.type==="popstate"&&setTimeout(()=>{e(r.url,r.state,"popstate")})})}handleRouterEvent(e,r){e instanceof Z?this.updateStateMemento():e instanceof k?this.commitTransition(r):e instanceof _e?this.urlUpdateStrategy==="eager"&&(r.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof Le?(this.commitTransition(r),this.urlUpdateStrategy==="deferred"&&!r.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(r),r)):e instanceof $&&e.code!==I.SupersededByNewNavigation&&e.code!==I.Redirect?this.restoreHistory(r):e instanceof pe?this.restoreHistory(r,!0):e instanceof N&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,{extras:r,id:i}){let{replaceUrl:s,state:o}=r;if(this.location.isCurrentPathEqualTo(e)||s){let a=this.browserPageId,c=h(h({},o),this.generateNgRouterState(i,a));this.location.replaceState(e,"",c)}else{let a=h(h({},o),this.generateNgRouterState(i,this.browserPageId+1));this.location.go(e,"",a)}}restoreHistory(e,r=!1){if(this.canceledNavigationResolution==="computed"){let i=this.browserPageId,s=this.currentPageId-i;s!==0?this.location.historyGo(s):this.getCurrentUrlTree()===e.finalUrl&&s===0&&(this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(r&&this.resetInternalState(e),this.resetUrlToCurrentUrlTree())}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,r){return this.canceledNavigationResolution==="computed"?{navigationId:e,\u0275routerPageId:r}:{navigationId:e}}static \u0275fac=(()=>{let e;return function(i){return(e||(e=Ke(t)))(i||t)}})();static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function or(t,n){t.events.pipe(V(e=>e instanceof N||e instanceof $||e instanceof pe||e instanceof k),R(e=>e instanceof N||e instanceof k?0:(e instanceof $?e.code===I.Redirect||e.code===I.SupersededByNewNavigation:!1)?2:1),V(e=>e!==2),ae(1)).subscribe(()=>{n()})}var bo={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},Io={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"},Ie=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=d(Nr);stateManager=d(ir);options=d(be,{optional:!0})||{};pendingTasks=d(Cr);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=d(nr);urlSerializer=d(Re);location=d(Ee);urlHandlingStrategy=d(It);injector=d(ce);_events=new ee;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=d(Fn);onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=d(Fe,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!d(wt,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:e=>{this.console.warn(e)}}),this.subscribeToNavigationEvents()}eventsSubscription=new ar;subscribeToNavigationEvents(){let e=this.navigationTransitions.events.subscribe(r=>{try{let i=this.navigationTransitions.currentTransition,s=G(this.navigationTransitions.currentNavigation);if(i!==null&&s!==null){if(this.stateManager.handleRouterEvent(r,s),r instanceof $&&r.code!==I.Redirect&&r.code!==I.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof N)this.navigated=!0;else if(r instanceof ve){let o=r.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(r.url,i.currentRawUrl),c=h({browserUrl:i.extras.browserUrl,info:i.extras.info,skipLocationChange:i.extras.skipLocationChange,replaceUrl:i.extras.replaceUrl||this.urlUpdateStrategy==="eager"||Co(i.source)},o);this.scheduleNavigation(a,de,null,c,{resolve:i.resolve,reject:i.reject,promise:i.promise})}}mi(r)&&this._events.next(r)}catch(i){this.navigationTransitions.transitionAbortWithErrorSubject.next(i)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),de,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,r,i)=>{this.navigateToSyncWithBrowser(e,i,r)})}navigateToSyncWithBrowser(e,r,i){let s={replaceUrl:!0},o=i?.navigationId?i:null;if(i){let c=h({},i);delete c.navigationId,delete c.\u0275routerPageId,Object.keys(c).length!==0&&(s.state=c)}let a=this.parseUrl(e);this.scheduleNavigation(a,r,o,s).catch(c=>{this.disposed||this.injector.get(Qe)(c)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return G(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(Jt),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,r={}){let{relativeTo:i,queryParams:s,fragment:o,queryParamsHandling:a,preserveFragment:c}=r,u=c?this.currentUrlTree.fragment:o,l=null;switch(a??this.options.defaultQueryParamsHandling){case"merge":l=h(h({},this.currentUrlTree.queryParams),s);break;case"preserve":l=this.currentUrlTree.queryParams;break;default:l=s||null}l!==null&&(l=this.removeEmptyProps(l));let v;try{let w=i?i.snapshot:this.routerState.snapshot.root;v=pn(w)}catch{(typeof e[0]!="string"||e[0][0]!=="/")&&(e=[]),v=this.currentUrlTree.root}return gn(v,e,l,u??null,this.urlSerializer)}navigateByUrl(e,r={skipLocationChange:!1}){let i=K(e)?e:this.parseUrl(e),s=this.urlHandlingStrategy.merge(i,this.rawUrlTree);return this.scheduleNavigation(s,de,null,r)}navigate(e,r={skipLocationChange:!1}){return Ao(e),this.navigateByUrl(this.createUrlTree(e,r),r)}serializeUrl(e){return this.urlSerializer.serialize(e)}parseUrl(e){try{return this.urlSerializer.parse(e)}catch{return this.console.warn(vr(4018,!1)),this.urlSerializer.parse("/")}}isActive(e,r){let i;if(r===!0?i=h({},bo):r===!1?i=h({},Io):i=r,K(e))return Gr(this.currentUrlTree,e,i);let s=this.parseUrl(e);return Gr(this.currentUrlTree,s,i)}removeEmptyProps(e){return Object.entries(e).reduce((r,[i,s])=>(s!=null&&(r[i]=s),r),{})}scheduleNavigation(e,r,i,s,o){if(this.disposed)return Promise.resolve(!1);let a,c,u;o?(a=o.resolve,c=o.reject,u=o.promise):u=new Promise((v,w)=>{a=v,c=w});let l=this.pendingTasks.add();return or(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(l))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:i,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:s,resolve:a,reject:c,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(v=>Promise.reject(v))}static \u0275fac=function(r){return new(r||t)};static \u0275prov=C({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();function Ao(t){for(let n=0;n<t.length;n++)if(t[n]==null)throw new S(4008,!1)}var At=(()=>{class t{router;route;tabIndexAttribute;renderer;el;locationStrategy;reactiveHref=Ae(null);get href(){return G(this.reactiveHref)}set href(e){this.reactiveHref.set(e)}target;queryParams;fragment;queryParamsHandling;state;info;relativeTo;isAnchorElement;subscription;onChanges=new ee;applicationErrorHandler=d(Qe);options=d(be,{optional:!0});constructor(e,r,i,s,o,a){this.router=e,this.route=r,this.tabIndexAttribute=i,this.renderer=s,this.el=o,this.locationStrategy=a,this.reactiveHref.set(d(new qr("href"),{optional:!0}));let c=o.nativeElement.tagName?.toLowerCase();this.isAnchorElement=c==="a"||c==="area"||!!(typeof customElements=="object"&&customElements.get(c)?.observedAttributes?.includes?.("href")),this.isAnchorElement?this.setTabIndexIfNotOnNativeEl("0"):this.subscribeToNavigationEventsIfNecessary()}subscribeToNavigationEventsIfNecessary(){if(this.subscription!==void 0||!this.isAnchorElement)return;let e=this.preserveFragment,r=i=>i==="merge"||i==="preserve";e||=r(this.queryParamsHandling),e||=!this.queryParamsHandling&&!r(this.options?.defaultQueryParamsHandling),e&&(this.subscription=this.router.events.subscribe(i=>{i instanceof N&&this.updateHref()}))}preserveFragment=!1;skipLocationChange=!1;replaceUrl=!1;setTabIndexIfNotOnNativeEl(e){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.isAnchorElement&&(this.updateHref(),this.subscribeToNavigationEventsIfNecessary()),this.onChanges.next(this)}routerLinkInput=null;set routerLink(e){e==null?(this.routerLinkInput=null,this.setTabIndexIfNotOnNativeEl(null)):(K(e)?this.routerLinkInput=e:this.routerLinkInput=Array.isArray(e)?e:[e],this.setTabIndexIfNotOnNativeEl("0"))}onClick(e,r,i,s,o){let a=this.urlTree;if(a===null||this.isAnchorElement&&(e!==0||r||i||s||o||typeof this.target=="string"&&this.target!="_self"))return!0;let c={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(a,c)?.catch(u=>{this.applicationErrorHandler(u)}),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){let e=this.urlTree;this.reactiveHref.set(e!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e))??"":null)}applyAttributeValue(e,r){let i=this.renderer,s=this.el.nativeElement;r!==null?i.setAttribute(s,e,r):i.removeAttribute(s,e)}get urlTree(){return this.routerLinkInput===null?null:K(this.routerLinkInput)?this.routerLinkInput:this.router.createUrlTree(this.routerLinkInput,{relativeTo:this.relativeTo!==void 0?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static \u0275fac=function(r){return new(r||t)(x(Ie),x(B),br("tabindex"),x(Nt),x(Dt),x(Ut))};static \u0275dir=Me({type:t,selectors:[["","routerLink",""]],hostVars:2,hostBindings:function(r,i){r&1&&jr("click",function(o){return i.onClick(o.button,o.ctrlKey,o.shiftKey,o.altKey,o.metaKey)}),r&2&&Lr("href",i.reactiveHref(),Ir)("target",i.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[2,"preserveFragment","preserveFragment",Ye],skipLocationChange:[2,"skipLocationChange","skipLocationChange",Ye],replaceUrl:[2,"replaceUrl","replaceUrl",Ye],routerLink:"routerLink"},features:[Te]})}return t})(),To=(()=>{class t{router;element;renderer;cdr;links;classes=[];routerEventsSubscription;linkInputChangesSubscription;_isActive=!1;get isActive(){return this._isActive}routerLinkActiveOptions={exact:!1};ariaCurrentWhenActive;isActiveChange=new te;link=d(At,{optional:!0});constructor(e,r,i,s){this.router=e,this.element=r,this.renderer=i,this.cdr=s,this.routerEventsSubscription=e.events.subscribe(o=>{o instanceof N&&this.update()})}ngAfterContentInit(){p(this.links.changes,p(null)).pipe(Mt()).subscribe(e=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let e=[...this.links.toArray(),this.link].filter(r=>!!r).map(r=>r.onChanges);this.linkInputChangesSubscription=U(e).pipe(Mt()).subscribe(r=>{this._isActive!==this.isLinkActive(this.router)(r)&&this.update()})}set routerLinkActive(e){let r=Array.isArray(e)?e:e.split(" ");this.classes=r.filter(i=>!!i)}ngOnChanges(e){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let e=this.hasActiveLinks();this.classes.forEach(r=>{e?this.renderer.addClass(this.element.nativeElement,r):this.renderer.removeClass(this.element.nativeElement,r)}),e&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==e&&(this._isActive=e,this.cdr.markForCheck(),this.isActiveChange.emit(e))})}isLinkActive(e){let r=Mo(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return i=>{let s=i.urlTree;return s?e.isActive(s,r):!1}}hasActiveLinks(){let e=this.isLinkActive(this.router);return this.link&&e(this.link)||this.links.some(e)}static \u0275fac=function(r){return new(r||t)(x(Ie),x(Dt),x(Nt),x(Ze))};static \u0275dir=Me({type:t,selectors:[["","routerLinkActive",""]],contentQueries:function(r,i,s){if(r&1&&$r(s,At,5),r&2){let o;kr(o=zr())&&(i.links=o)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],features:[Te]})}return t})();function Mo(t){return!!t.paths}var Bn=new T(""),Eo=(()=>{class t{urlSerializer;transitions;viewportScroller;zone;options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource=de;restoredId=0;store={};constructor(e,r,i,s,o={}){this.urlSerializer=e,this.transitions=r,this.viewportScroller=i,this.zone=s,this.options=o,o.scrollPositionRestoration||="disabled",o.anchorScrolling||="disabled"}init(){this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof Z?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof N?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof k&&e.code===fe.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{if(!(e instanceof ge))return;let r={behavior:"instant"};e.position?this.options.scrollPositionRestoration==="top"?this.viewportScroller.scrollToPosition([0,0],r):this.options.scrollPositionRestoration==="enabled"&&this.viewportScroller.scrollToPosition(e.position,r):e.anchor&&this.options.anchorScrolling==="enabled"?this.viewportScroller.scrollToAnchor(e.anchor):this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.scrollToPosition([0,0])})}scheduleScrollEvent(e,r){this.zone.runOutsideAngular(()=>m(this,null,function*(){yield new Promise(i=>{setTimeout(i),typeof requestAnimationFrame<"u"&&requestAnimationFrame(i)}),this.zone.run(()=>{this.transitions.events.next(new ge(e,this.lastSource==="popstate"?this.store[this.restoredId]:null,r))})}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static \u0275fac=function(r){Mr()};static \u0275prov=C({token:t,factory:t.\u0275fac})}return t})();function Oo(t,...n){return Ot([{provide:Fe,multi:!0,useValue:t},[],{provide:B,useFactory:Do},{provide:Ur,multi:!0,useFactory:Po},n.map(e=>e.\u0275providers)])}function Do(){return d(Ie).routerState.root}function Vn(t,n){return{\u0275kind:t,\u0275providers:n}}function No(t={}){return Vn(4,[{provide:Bn,useFactory:()=>{let e=d(Vr),r=d(wr),i=d(nr),s=d(Re);return new Eo(s,i,e,r,t)}}])}function Po(){let t=d(yr);return n=>{let e=t.get(_r);if(n!==e.components[0])return;let r=t.get(Ie),i=t.get(Uo);t.get(_o)===1&&r.initialNavigation(),t.get(Lo,null,{optional:!0})?.setUpPreloading(),t.get(Bn,null,{optional:!0})?.init(),r.resetRootComponentType(e.componentTypes[0]),i.closed||(i.next(),i.complete(),i.unsubscribe())}}var Uo=new T("",{factory:()=>new ee}),_o=new T("",{factory:()=>1});var Lo=new T("");function xo(t){Ar("NgRouterViewTransitions");let n=[{provide:tr,useValue:kn},{provide:rr,useValue:h({skipNextTransition:!!t?.skipInitialTransition},t)}];return Vn(9,n)}export{Z as a,N as b,B as c,Yt as d,Ie as e,At as f,To as g,Oo as h,No as i,xo as j};
@@ -1 +0,0 @@
1
- import{r as oe}from"./chunk-MIE7YXOK.js";import{m as se}from"./chunk-VILWJRZL.js";import{e as G}from"./chunk-QML5ZVO6.js";import{C as ne,e as Y,l as Z,t as ee,u as te,w as ie}from"./chunk-537Z3TZH.js";import{b as X}from"./chunk-S6WYT7FX.js";import{C as H,D as J,F as K,I as Q}from"./chunk-MISBXZWW.js";import{Ab as h,Cb as R,Db as F,Dc as u,Eb as V,Ec as _,Fb as w,Gb as a,Hb as r,Ib as $,Rb as E,Xb as y,Za as s,Zb as p,aa as x,ga as b,ha as I,jc as k,kc as m,lc as f,mc as B,nb as O,nc as P,rc as j,sa as S,sc as q,tc as W,yb as T,yc as N,zb as v,zc as z}from"./chunk-VX4RXOTH.js";import{a as U,b as L,h as D}from"./chunk-B4AJQJMI.js";var ce=(t,l)=>({"fa-matter":t,"fa-hap":l}),le=(t,l)=>({"btn-danger":t,"btn-elegant":l}),de=(t,l,e)=>({"fa-trash":t,"fa-undo":l,"fa-spinner fa-pulse":e});function me(t,l){t&1&&(a(0,"div",12),$(1,"i",13),r(),a(2,"p",14),m(3),u(4,"translate"),r()),t&2&&(s(3),f(_(4,1,"reset.no_accessories")))}function pe(t,l){if(t&1&&(a(0,"option",24),m(1),r()),t&2){let e=l.$implicit;w("value",e._id),s(),P("",e.name," (",e._username,")")}}function ue(t,l){if(t&1){let e=E();a(0,"li",20),m(1),u(2,"translate"),r(),a(3,"li",18)(4,"label",21),m(5),u(6,"translate"),r(),a(7,"div",22)(8,"select",23),W("ngModelChange",function(i){b(e);let o=p(2);return q(o.selectedBridge,i)||(o.selectedBridge=i),I(i)}),y("change",function(i){b(e);let o=p(2);return I(o.onBridgeChange(i))}),F(9,pe,2,3,"option",24,R),r()()()}if(t&2){let e=p(2);s(),f(_(2,3,"form.label.changes_kept")),s(4),f(_(6,5,"reset.accessory_ind.bridge")),s(3),j("ngModel",e.selectedBridge),s(),V(e.pairings())}}function _e(t,l){if(t&1&&(a(0,"li",18)(1,"label",25),m(2),u(3,"translate"),r(),a(4,"div",26),m(5),r()()),t&2){let e=p(2);s(2),f(_(3,2,"reset.accessory_ind.bridge")),s(3),B(" ",e.getCurrentlySelectedBridge()," ")}}function ge(t,l){if(t&1){let e=E();a(0,"li",19)(1,"span",27),$(2,"i",28),r(),a(3,"span",29),m(4),$(5,"br"),a(6,"small")(7,"span",30),m(8),r()()(),a(9,"button",31),u(10,"translate"),y("click",function(){let i=b(e).$implicit,o=p(2);return I(o.toggleList(i.UUID||i.uuid,i.$cacheFile,i.$protocol,i.$deviceId))}),$(11,"i",32),r()()}if(t&2){let e=l.$implicit,n=p(2);s(2),k(N(12,ce,e.$protocol==="matter",e.$protocol!=="matter")),s(2),B(" ",e.displayName," "),s(4),f(e.UUID||e.uuid),s(),k(N(15,le,!n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol),n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol))),w("disabled",n.clicked()),T("aria-label",_(10,10,"form.button_delete")),s(2),k(z(18,de,!n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol),n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol)&&!n.clicked(),n.isInList(e.UUID||e.uuid,e.$cacheFile,e.$protocol)&&n.clicked()))}}function ve(t,l){if(t&1&&(a(0,"div",12),$(1,"i",15),r(),a(2,"ul",16)(3,"li"),m(4),u(5,"translate"),r(),a(6,"li"),m(7),u(8,"translate"),r(),a(9,"li"),m(10),u(11,"translate"),r()(),a(12,"ul",17),v(13,ue,11,7),v(14,_e,6,4,"li",18),F(15,ge,12,22,"li",19,R),r()),t&2){let e=p();s(4),f(_(5,5,"reset.accessory_ind.list_1")),s(3),f(_(8,7,"reset.accessory_ind.list_2")),s(3),f(_(11,9,"reset.accessory_ind.list_3")),s(3),h(e.pairings().length>1?13:-1),s(),h(e.pairings().length===1?14:-1),s(),V(e.selectedBridgeAccessories())}}function he(t,l){if(t&1){let e=E();a(0,"button",33),y("click",function(){b(e);let i=p();return I(i.dismissModal())}),m(1),u(2,"translate"),r()}if(t&2){let e=p();w("disabled",e.clicked()),s(),B(" ",_(2,2,"form.button_close")," ")}}function fe(t,l){if(t&1){let e=E();a(0,"button",34),y("click",function(){b(e);let i=p();return I(i.dismissModal())}),m(1),u(2,"translate"),r()}t&2&&(s(),B(" ",_(2,1,"form.button_close")," "))}function xe(t,l){if(t&1&&m(0),t&2){let e=p(3);B(" (",e.toDelete().length,") ")}}function Ce(t,l){if(t&1&&(m(0),u(1,"translate"),v(2,xe,1,1)),t&2){let e=p(2);B(" ",_(1,2,"form.button_remove")," "),s(2),h(e.toDelete().length>0?2:-1)}}function be(t,l){t&1&&$(0,"i",36)}function Ie(t,l){if(t&1){let e=E();a(0,"button",35),y("click",function(){b(e);let i=p();return I(i.removeAccessories())}),v(1,Ce,3,4),v(2,be,1,0,"i",36),r()}if(t&2){let e=p();w("disabled",!e.toDelete().length||e.clicked()),s(),h(e.clicked()?-1:1),s(),h(e.clicked()?2:-1)}}var Fe=(()=>{class t{$activeModal=x(se);$api=x(Q);$router=x(G);$settings=x(X);$toastr=x(K);$translate=x(H);modalData=x(oe);selectedBridge=this.modalData.selectedBridge;pairings=S([]);clicked=S(!1);currentSelectedBridge=S("");selectedBridgeAccessories=S([]);accessoriesExist=S(!1);toDelete=S([]);isMatterSupported=this.$settings.isFeatureEnabled("matterSupport");ngOnInit(){this.currentSelectedBridge.set(this.selectedBridge),this.loadCachedAccessories()}onBridgeChange(e){let n=e.target.value;this.currentSelectedBridge.set(n),this.selectedBridgeAccessories.set(this.pairings().find(i=>i._id===this.currentSelectedBridge())?.accessories||[])}getCurrentlySelectedBridge(){let e=this.pairings().find(n=>n._id===this.currentSelectedBridge());return e?`${e.name} - ${e._username}`:""}toggleList(e,n,i,o){this.toDelete().some(g=>g.uuid===e&&g.cacheFile===n&&g.protocol===i)?this.toDelete.set(this.toDelete().filter(g=>g.uuid!==e||g.cacheFile!==n||g.protocol!==i)):this.toDelete.update(g=>[...g,{cacheFile:n,uuid:e,protocol:i,deviceId:o}])}isInList(e,n,i){return this.toDelete().some(o=>o.uuid===e&&o.cacheFile===n&&o.protocol===i)}removeAccessories(){return D(this,null,function*(){this.clicked.set(!0);let e=this.toDelete().filter(o=>o.protocol==="hap").map(o=>({uuid:o.uuid,cacheFile:o.cacheFile})),n=this.toDelete().filter(o=>o.protocol==="matter").map(o=>({uuid:o.uuid,deviceId:o.deviceId})),i=[];if(e.length>0&&i.push(this.$api.delete("/server/cached-accessories",{body:e})),this.isMatterSupported&&n.length>0&&i.push(this.$api.delete("/server/matter-accessories",{body:n})),i.length===0){this.clicked.set(!1);return}try{yield Promise.all(i),this.$toastr.success(this.$translate.instant("reset.accessory_ind.done"),this.$translate.instant("toast.title_success")),this.$activeModal.close(),this.$router.navigate(["/restart"],{queryParams:{restarting:!0}})}catch(o){this.clicked.set(!1),console.error(o),this.$toastr.error(this.$translate.instant("reset.accessory_ind.fail"),this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}loadCachedAccessories(){return D(this,null,function*(){try{let e=this.isMatterSupported?[this.$api.get("/server/cached-accessories"),this.$api.get("/server/matter-accessories"),this.$api.get("/server/pairings")]:[this.$api.get("/server/cached-accessories"),this.$api.get("/server/pairings")],n=yield Promise.all(e),i=n[0],o=this.isMatterSupported?n[1]:[],g=this.isMatterSupported?n[2]:n[1],C=new Map(g.map(c=>[c._id,L(U({},c),{accessories:[]})]));i.sort((c,d)=>c.displayName.localeCompare(d.displayName)).forEach(c=>{let d=g.find(re=>re._main),A=c.$cacheFile?.split(".")?.[1]||d._id;(!this.selectedBridge||this.selectedBridge===A)&&(C.has(A)||C.set(A,{_id:A,_username:A.match(/.{1,2}/g).join(":"),name:this.$translate.instant("reset.accessory_ind.unknown"),accessories:[]}),c.$protocol="hap",C.get(A).accessories.push(c))}),this.isMatterSupported&&o.sort((c,d)=>c.displayName.localeCompare(d.displayName)).forEach(c=>{let d=c.$deviceId;(!this.selectedBridge||this.selectedBridge===d)&&(C.has(d)||C.set(d,{_id:d,_username:d.match(/.{1,2}/g).join(":"),name:this.$translate.instant("reset.accessory_ind.unknown"),accessories:[]}),c.$protocol="matter",c.$cacheFile=d,C.get(d).accessories.push(c))});let ae=Array.from(C.values()).filter(c=>c.accessories.length>0).sort((c,d)=>c._main&&!d._main?-1:!c._main&&d._main?1:c.name.localeCompare(d.name));this.pairings.set(ae);let M=this.selectedBridge||this.pairings()[0]?._id;M&&(this.selectedBridge=M,this.currentSelectedBridge.set(M),this.accessoriesExist.set(!0),this.selectedBridgeAccessories.set(this.pairings().find(c=>c._id===M)?.accessories||[]))}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("reset.error_message"),this.$translate.instant("toast.title_error")),this.$activeModal.close()}})}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=O({type:t,selectors:[["ng-component"]],decls:17,vars:12,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"disabled"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"disabled"],[1,"text-center","mb-3"],[1,"fas","fa-circle-check","primary-text",2,"font-size","75px"],[1,"mb-0","text-center"],[1,"fas","fa-network-wired","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"list-group-item","text-center","grey-text","small"],["for","bridgeSelect",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["id","bridgeSelect",1,"custom-select",3,"ngModelChange","change","ngModel"],[3,"value"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50","grey-text","font-monospace"],[1,"me-3"],[1,"fas","fa-lg"],[1,"flex-grow-1"],[1,"font-monospace","grey-text"],[1,"btn","btn-danger","m-0","ms-3",3,"click","disabled"],[1,"fas"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click","disabled"],[1,"fas","fa-spinner","fa-pulse"]],template:function(n,i){n&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),m(3),u(4,"translate"),r(),a(5,"button",3),u(6,"translate"),y("click",function(){return i.dismissModal()}),r()(),a(7,"div",4),v(8,me,5,3),v(9,ve,17,11),r(),a(10,"div",5)(11,"div",6),v(12,he,3,4,"button",7),r(),a(13,"div",8),v(14,fe,3,3,"button",9),r(),a(15,"div",10),v(16,Ie,3,3,"button",11),r()()()),n&2&&(s(3),f(_(4,8,"reset.accessory_ind.title")),s(2),w("disabled",i.clicked()),T("aria-label",_(6,10,"form.button_close")),s(3),h(i.accessoriesExist()?-1:8),s(),h(i.accessoriesExist()?9:-1),s(3),h(i.accessoriesExist()?12:-1),s(2),h(i.accessoriesExist()?-1:14),s(2),h(i.accessoriesExist()?16:-1))},dependencies:[ne,te,ie,ee,Y,Z,J],encapsulation:2})}return t})();export{Fe as a};
@@ -1 +0,0 @@
1
- import{e}from"./chunk-B4AJQJMI.js";var o=e((a,i)=>{i.exports={"accessories.accessory_info":"Informacje o akcesorium","accessories.bridge_ip":"IP mostka","accessories.bridge_port":"Port mostka","accessories.button_add_room":"Dodaj pok\xF3j","accessories.button_delete_room":"Delete Room","accessories.button_edit_room":"Edit Room","accessories.button_hidden_hide":"Ukryj ukryte","accessories.button_hidden_show":"Poka\u017C ukryte","accessories.button_remove":"Usu\u0144 z cache","accessories.control.adaptive_lighting":"O\u015Bwietlenie adaptacyjne","accessories.control.adaptive_lighting_note":"Niekt\xF3re wtyczki mog\u0105 automatycznie ponownie w\u0142\u0105cza\u0107 o\u015Bwietlenie adaptacyjne podczas zmiany tego.","accessories.control.auto":"Auto","accessories.control.away":"Poza domem","accessories.control.battery_charged":"Na\u0142adowany","accessories.control.battery_charging":"\u0141adowanie","accessories.control.battery_low":"Niski poziom baterii","accessories.control.battery_notchargeable":"Brak mo\u017Cliwo\u015Bci \u0142adowania","accessories.control.battery_notcharging":"Brak \u0142adowania","accessories.control.brightness":"Jasno\u015B\u0107","accessories.control.cleaning":"Cleaning","accessories.control.closed":"Zamkni\u0119te","accessories.control.closing":"Zamykanie","accessories.control.color_temperature":"Barwa cieplna","accessories.control.cool":"Ch\u0142odzenie","accessories.control.current":"Obecny","accessories.control.default_room":"Domy\u015Blny pok\xF3j","accessories.control.dehumidify":"Osuszanie","accessories.control.detected":"Wykryto","accessories.control.direction_control":"Direction Control","accessories.control.drag_here":"Przenie\u015B tutaj","accessories.control.filter_level":"Poziom filtra","accessories.control.heat":"Grzanie","accessories.control.home":"W domu","accessories.control.hue":"Odcie\u0144","accessories.control.humidify":"Nawil\u017Canie","accessories.control.idle":"Bezczynny","accessories.control.input":"Lista danych wej\u015Bciowych","accessories.control.input_control":"Input Control","accessories.control.jammed":"Zaci\u0119te","accessories.control.lock_auto":"Zegar automatycznej blokady","accessories.control.locked":"Zablokowany","accessories.control.manual":"R\u0119czny","accessories.control.media_control":"Media Control","accessories.control.microphone":"Mikrofon","accessories.control.mode":"Tryb","accessories.control.mode_control":"Mode Control","accessories.control.mute":"Wycisz. w\u0142.","accessories.control.mute_control":"Mute Control","accessories.control.night":"Noc","accessories.control.no_data":"No Data","accessories.control.not_detected":"Nie wykryto","accessories.control.not_mute":"Wycisz. wy\u0142.","accessories.control.obstructed":"Naruszono","accessories.control.off":"Wy\u0142.","accessories.control.on":"W\u0142.","accessories.control.open":"Otwarte","accessories.control.opening":"Otwieranie","accessories.control.pause":"Pauza","accessories.control.paused":"Paused","accessories.control.play":"Play","accessories.control.replace":"Zamie\u0144","accessories.control.rotation_c_clockwise":"Przeciwnie do ruchu wskaz\xF3wek zegara","accessories.control.rotation_clockwise":"Zgodnie z ruchem wskaz\xF3wek zegara","accessories.control.rotation_direction":"Kierunek obrotu","accessories.control.rotation_speed":"Pr\u0119dko\u015B\u0107 obrotu","accessories.control.running":"Uruchomiony","accessories.control.saturation":"Nasycenie","accessories.control.set_duration":"Ustaw czas trwania","accessories.control.speaker":"G\u0142o\u015Bnik","accessories.control.speaker_volume":"G\u0142o\u015Bno\u015B\u0107","accessories.control.state_control":"State Control","accessories.control.stateless":"Stateless","accessories.control.stop":"Stop","accessories.control.stopped":"Zatrzymano","accessories.control.target":"Cel","accessories.control.target_auto":"Automatyczny cel","accessories.control.threshold_auto":"Automatyczny pr\xF3g","accessories.control.triggered":"Wyzwolono","accessories.control.unknown":"Nieznany","accessories.control.unlocked":"Odblokowano","accessories.control_disabled":"Sterowanie akcesoriami jest wy\u0142\u0105czone","accessories.core.air_purifier":"Air Purifier","accessories.core.air_quality_sensor":"Air Quality Sensor","accessories.core.battery":"Battery","accessories.core.carbon_dioxide_sensor":"Carbon Dioxide Sensor","accessories.core.carbon_monoxide_sensor":"Carbon Monoxide Sensor","accessories.core.contact_sensor":"Contact Sensor","accessories.core.cooler":"Cooler","accessories.core.dehumidifier":"Dehumidifier","accessories.core.door":"Door","accessories.core.doorbell":"Dzwonek do drzwi","accessories.core.fan":"Fan","accessories.core.faucet_valve":"Valve","accessories.core.filter_maintenance":"Filter Maintenance","accessories.core.garage_door_opener":"Garage Door Opener","accessories.core.generic_valve":"Valve","accessories.core.heater":"Heater","accessories.core.heater_cooler":"Heater Cooler","accessories.core.humidifier":"Humidifier","accessories.core.humidifier_dehumidifier":"Humidifier Dehumidifier","accessories.core.humidity_sensor":"Humidity Sensor","accessories.core.irrigation_system":"Irrigation System","accessories.core.irrigation_valve":"Valve","accessories.core.leak_sensor":"Leak Sensor","accessories.core.light_sensor":"Light Sensor","accessories.core.lightbulb":"Lightbulb","accessories.core.lock_mechanism":"Lock Mechanism","accessories.core.microphone":"Microphone","accessories.core.motion_sensor":"Motion Sensor","accessories.core.occupancy_sensor":"Occupancy Sensor","accessories.core.on_off_light":"Lightbulb","accessories.core.on_off_light_switch":"Switch","accessories.core.on_off_plug_in_unit":"Outlet","accessories.core.outlet":"Outlet","accessories.core.robot_vacuum":"Robot Vacuum","accessories.core.robotic_vacuum_cleaner":"Robot Vacuum","accessories.core.security_system":"Security System","accessories.core.shower_head_valve":"Valve","accessories.core.smoke_sensor":"Smoke Sensor","accessories.core.speaker":"Speaker","accessories.core.stateless_programmable_switch":"Stateless Programmable Switch","accessories.core.switch":"Switch","accessories.core.television":"Television","accessories.core.temperature_sensor":"Temperature Sensor","accessories.core.thermostat":"Thermostat","accessories.core.valve":"Valve","accessories.core.washing_machine":"Washing Machine","accessories.core.window":"Window","accessories.core.window_covering":"Window Covering","accessories.custom_name":"Nazwa niestandardowa","accessories.custom_type":"Typ niestandardowy","accessories.delete_room_confirm":"Confirm you want to delete this room by clicking the delete button.","accessories.delete_room_move_accessories":"Any accessories in this room will be moved to {{roomName}}.","accessories.delete_room_new_default":"{{roomName}} will become the new default room.","accessories.hide_this_accessory":"Ukryj to akcesorium","accessories.message_must_use_insecure_mode":"Aby sterowa\u0107 swoimi akcesoriami bezpo\u015Brednio w panelu Homebridge musisz uruchomi\u0107 Homebridge w trybie niezabezpieczonym {{ link }}.","accessories.name":"Nazwa","accessories.no_plugins.message_1":"Accessories are created and managed by Homebridge plugins.","accessories.no_plugins.message_2":"You can find and install plugins from the plugins page.","accessories.no_plugins.title":"No Plugins Installed","accessories.only_ui":"Te ustawienia s\u0105 tylko dla interfejsu u\u017Cytkownika Homebridge i <strong>nie zostan\u0105 uwzgl\u0119dnione w HomeKit</strong>.","accessories.only_ui_2":"Te opcje s\u0105 unikalne dla twojego konta Homebridge UI.","accessories.plugin":"Wtyczka","accessories.room_name":"Nazwa pokoju","accessories.service":"Serwis","accessories.service_info":"Informacje serwisu","accessories.settings_link":"Mo\u017Cesz uzyska\u0107 dost\u0119p do ustawie\u0144 Homebridge w dowolnym momencie z menu g\u0142\xF3wnego lub klikaj\u0105c cog","accessories.show_on_dashboard":"Poka\u017C w dashboard","accessories.support.acc_1":"Pojawienie si\u0119 akcesori\xF3w na tym ekranie mo\u017Ce zaj\u0105\u0107 kilka minut po ponownym uruchomieniu Homebridge lub po dodaniu. Je\u015Bli akcesoria s\u0105 konsekwentnie nieobecne, spr\xF3buj zmieni\u0107 rozg\u0142aszacz mDNS w ustawieniach.","accessories.support.acc_2":"Mo\u017Cesz zmieni\u0107 rodzaj niekt\xF3rych akcesori\xF3w w interfejsie u\u017Cytkownika (np. wy\u015Bwietlanie prze\u0142\u0105cznika jako grzejnika). Mo\u017Cesz to zrobi\u0107, klikaj\u0105c trzy paski, kt\xF3re pojawiaj\u0105 si\u0119 w prawym g\xF3rnym rogu kafelka akcesori\xF3w po najechaniu na niego kursorem. Je\u015Bli akcesorium to obs\u0142uguje, pojawi si\u0119 opcja \u201ETyp niestandardowy\u201D. Zwr\xF3\u0107 uwag\u0119, \u017Ce to nie zmieni akcesorium w HomeKit (tylko wtyczka mo\u017Ce to zrobi\u0107).","accessories.support.rooms_1":"Pomieszczenia utworzone tutaj nie b\u0119d\u0105 wy\u015Bwietlane w aplikacji HomeKit, s\u0105 tylko dla organizacji akcesori\xF3w w Homebridge UI.","accessories.support.rooms_2":"You can rename or delete a room by clicking the cog icon next to its name when the layout is unlocked.","accessories.support.rooms_3":"You must have at least one room, and exactly one default room, which is where new accessories will go.","accessories.title_rooms":"Pokoje","backup.backup_delete_failed":"Usuni\u0119cie kopii zapasowej nie powiod\u0142o si\u0119. Zobacz dzienniki, aby uzyska\u0107 szczeg\xF3\u0142owe informacje.","backup.backup_download_failed":"Tworzenie backupu nieudane","backup.backup_exceeds_max_size":"Backup ({{ backupSize }}) przekracza maksymalny rozmiar {{ maxBackupSizeText }}","backup.backup_help_one":"Utw\xF3rz backup ca\u0142ego \u015Brodowiska Homebridge, kt\xF3ry nast\u0119pnie b\u0119dziesz m\xF3g\u0142 przywr\xF3cic po ponownej instalacji Homebridge, lub po zresetowaniu systemu.","backup.backup_help_two":"Wtyczki niedost\u0119pne z poziomu repozytorium npm lub instalowane bezpo\u015Brednio z GitHub nie b\u0119d\u0105 dodane do backupu.","backup.backup_now":"Utw\xF3rz backup","backup.backup_now_desc":"Wygeneruj i pobierz aktualny backup.","backup.backup_now_save_desc":"Wygeneruj aktualny backup w katalogu backup\xF3w.","backup.backup_restored":"Przywracanie backupu zako\u0144czone sukcesem","backup.backup_warning":"Backup zawiera wa\u017Cne informacje i nie powinien by\u0107 udost\u0119pniany nikomu.","backup.files_auto":"Pliki backupu","backup.label_extracting":"Extracting Archive","backup.label_uploading":"Przywracanie\u2026","backup.load_error":"Nie uda\u0142o si\u0119 za\u0142adowa\u0107 backupu.","backup.restore_failed":"Przywracanie backupu zako\u0144czone niepowodzeniem","backup.restore_help_one":"Przywr\xF3cenie backupu odtworzy ca\u0142\u0105 konfiguracje utworzon\u0105 za pomoc\u0105 Homebridge UI wraz z akcesoriami, plikiem konfiguracyjnym i wszystkimi wtyczkami zainstalowanymi z repozytorium npm.","backup.restore_help_two":"Po przywr\xF3ceniu backupu trzeba ponownie zalogowa\u0107 si\u0119 do Homebridge UI z danymi u\u017Cytkownika zawartymi w tej kopii.","backup.restore_max_size":"Mo\u017Cesz przywr\xF3ci\u0107 backup do rozmiaru: {{ maxBackupSizeText }}.","backup.restore_now":"Przywr\xF3\u0107 backup","backup.restore_now_desc":"Przywr\xF3\u0107 z wcze\u015Bniej pobranego pliku.","backup.restore_warning":"Przywr\xF3cenie backupu jest nieodwracalne i zast\u0105pi ca\u0142\u0105 obecn\u0105 konfiguracj\u0119 Homebridge.","backup.scheduled_backup_disabled":"Zaplanowane backupy zosta\u0142y wy\u0142\u0105czone poprzez konfiguracj\u0119.","backup.scheduled_backup_time":"Pe\u0142ny backup konfiguracji Homebridge jest tworzony automatycznie ka\u017Cdego dnia o godzinie {{ backupTime }} i trzymany przez {{ dayCount }} dni.","backup.settings_enable":"W\u0142\u0105cz automatyczne backupy","backup.settings_path":"\u015Acie\u017Cka katalogu backup\xF3w","backup.settings_path_desc":"Je\u015Bli zmieniasz to z domy\u015Blnego, upewnij si\u0119, \u017Ce katalog istnieje i ma prawo zapisu przez u\u017Cytkownika Homebridge.","backup.settings_title":"Ustawienia backupu","backup.title_backup":"Backup","child_bridge.about":"Homebridge pozwoli ci na uruchomienie twoich wtyczek (platform, akcesori\xF3w) w trybie mostka {{ link }}. Ta funkcja mo\u017Ce poprawi\u0107 szybko\u015B\u0107 i jako\u015B\u0107 dzia\u0142ania Homebridge.","child_bridge.bridge_connect":"Po\u0142\u0105cz z HomeKit","child_bridge.bridge_settings":"Ustawienia mostka","child_bridge.bridges":"Mostki","child_bridge.bridges_paired":"Ka\u017Cdy tak utworzony nowy mostek b\u0119dzie wymaga\u0142 ponownego parowania w aplikacji HomeKit.","child_bridge.bridges_paired_2":"Je\u015Bli teraz skonfigurujesz mostek, a p\xF3\u017Aniej go wy\u0142\u0105czysz, wszelkie akcesoria na tym mostku zostan\u0105 usuni\u0119te i ponownie utworzone na g\u0142\xF3wnym mostku Homebridge.","child_bridge.config.accessory":"Akcesorium","child_bridge.config.debug":"Tryb Debug","child_bridge.config.enable_hap":"Enable HAP","child_bridge.config.firmware":"Wersja oprogramowania","child_bridge.config.hide_pairing_alert":"Hide Pairing Alert","child_bridge.config.manufacturer":"Producent","child_bridge.config.matter_note_1":"Plugins must be updated by the developer to support Matter accessories. There is no use in enabling Matter here unless you definitely know the plugin supports it.","child_bridge.config.matter_note_2":"Matter accessories don't appear in the Homebridge UI accessories screen. They can be managed using the Home app or other Matter controllers.","child_bridge.config.model":"Model","child_bridge.config.name":"Nazwa","child_bridge.config.or_link":"Po\u0142\u0105cz istniej\u0105cy mostek","child_bridge.config.platform":"Platforma","child_bridge.config.port":"Port","child_bridge.config.prevent":"Nie mo\u017Cna wy\u0142\u0105czy\u0107 mostka z po\u0142\u0105czonymi akcesoriami.","child_bridge.config.select_existing":"Wybierz istniej\u0105cy mostek...","child_bridge.config.use":"U\u017Cyj mostka","child_bridge.confirm_delete_1":"Nast\u0119puj\u0105ce mostki zostan\u0105 usuni\u0119te.","child_bridge.confirm_delete_2":"B\u0119dziesz musia\u0142 r\u0119cznie usun\u0105\u0107 sparowane mostki z aplikacji Apple Home. Wszelkie akcesoria zostan\u0105 usuni\u0119te i ponownie utworzone na g\u0142\xF3wnym mostku Homebridge.","child_bridge.must_configure_plugin":"Najpierw musisz skonfigurowa\u0107 wtyczk\u0119 zanim b\u0119dziesz m\xF3g\u0142 zarzadza\u0107 ustawieniami tego mostka.","child_bridge.reset_accessories":"Resetuj akcesoria","child_bridge.restart":"Zrestartuj mostek","child_bridge.restart_plural":"Zrestartuj mostki","child_bridge.return_to_pair":"Wr\xF3\u0107 do tego ekranu po ponownym uruchomieniu Homebridge aby wy\u015Bwietli\u0107 kod QR parowania.","child_bridge.setup":"Ustaw mostek","child_bridge.start":"Uruchom mostek","child_bridge.start_plural":"Uruchom mostki","child_bridge.stop":"Wy\u0142\u0105cz mostek","child_bridge.stop_plural":"Wy\u0142\u0105cz mostki","common.labels.beta":"beta","common.labels.disabled":"Wy\u0142\u0105czony","common.labels.enabled":"Enabled","common.labels.no_confirmation":"Nie ma potwierdzenia po klikni\u0119ciu przycisku, natychmiast wykona akcj\u0119.","common.phrases.are_you_sure":"Na pewno chcesz kontynuowa\u0107?","common.phrases.support":"Czujesz, \u017Ce jest co\u015B po\u017Cytecznego, co mogliby\u015Bmy tutaj doda\u0107? Daj nam zna\u0107 na {{ github }} lub {{ discord }}!","config.config_accessory_must_be_array":"Akcesoria musz\u0105 by\u0107 w tablicy []","config.config_bridge_missing":"Brak ustawie\u0144 mostka","config.config_invalid_json":"Konfiguracja zawiera nieprawid\u0142ow\u0105 sk\u0142adni\u0119 JSON","config.config_platform_must_be_array":"Platformy musz\u0105 by\u0107 w tablicy []","config.config_saved":"Zapisano konfiguracj\u0119","config.config_username_error":"'Username' w sekcji 'Bridge' musi sk\u0142ada\u0107 si\u0119 z 6 par znak\xF3w oddzielonych dwukropkiem (A-F 0-9) w formacie XX:XX:XX:XX:XX:XX","config.error_blocks_objects":"{{ type }} - wszystkie bloki musz\u0105 by\u0107 typu obiekt.","config.error_blocks_type":"{{ type }} - ka\u017Cdy blok musi zawiera\u0107 atrybut: {{ type }}.","config.error_string_array":"{{ key }} - ka\u017Cdy element zbioru musi by\u0107 typu string.","config.error_string_type":"{{ type }} - atrybut musi by\u0107 typu string.","config.failed_to_save_config":"Nie mo\u017Cna zapisa\u0107 konfiguracji","config.hide_hap_pairing":"Hide HAP Pairing Alert","config.hide_matter_pairing":"Hide Matter Pairing Alert","config.hide_plugin_updates":"Hide Plugin Updates For","config.no_restart":"Ponowne uruchomienie nie jest konieczne poniewa\u017C nie wprowadzono \u017Cadnych zmian w konfiguracji Homebridge.","config.restore.confirm":"Kliknij Zapisz, aby przywr\xF3ci\u0107 backup.","config.restore.copy_to_editor":"Kopiuj do edytora","config.restore.download":"Pobierz bie\u017C\u0105c\u0105 konfiguracj\u0119 jako plik JSON.","config.restore.help_1":"Kopia pliku konfiguracyjnego jest tworzona za ka\u017Cdym razem gdy jest on aktualizowany z dzia\u0142a\u0144 podejmowanych w interfejsie u\u017Cytkownika Homebridge.","config.restore.help_2":"Mo\u017Cesz przywr\xF3ci\u0107 poprzedni\u0105 wersj\u0119 pliku konfiguracyjnego wybieraj\u0105c go z poni\u017Cszej listy. B\u0119dziesz m\xF3g\u0142 por\xF3wna\u0107 t\u0119 wersj\u0119 z obecn\u0105 konfiguracj\u0105 przed podj\u0119ciem decyzji czy j\u0105 przywr\xF3ci\u0107.","config.restore.title":"Plik konfiguracyjny JSON","config.restore.toast_backups_deleted":"Wszystkie backupy zosta\u0142y usuni\u0119te","config.restore.view_inline":"Inline View","config.restore.view_side_by_side":"Side-By-Side View","config.title_backup_loaded":"Backup zosta\u0142 za\u0142adowany","form.button_allow":"Pozw\xF3l","form.button_back":"Cofnij","form.button_cancel":"Anuluj","form.button_close":"Zamknij","form.button_continue":"Kontynuuj","form.button_delete":"Usu\u0144","form.button_delete_all":"Usu\u0144 wszystko","form.button_disable":"Wy\u0142\u0105cz","form.button_download":"Pobierz","form.button_edit":"Edytuj","form.button_enable":"W\u0142\u0105cz","form.button_lock":"Zablokuj","form.button_more_info":"Wi\u0119cej info","form.button_remove":"Usu\u0144","form.button_reset":"Zresetuj","form.button_restore":"Przywr\xF3\u0107","form.button_save":"Zapisz","form.button_show":"Poka\u017C","form.button_unlock":"Odblokuj","form.button_unpair":"Od\u0142\u0105cz","form.label.changes_kept":"Zwr\xF3\u0107 uwag\u0119, \u017Ce istniej\u0105ce wybory/zmiany s\u0105 zachowywane podczas prze\u0142\u0105czania mi\u0119dzy elementami.","form.label_invalid":"Weryfikacja konfiguracji nie powiod\u0142a si\u0119 - nadal mo\u017Cesz zapisa\u0107 swoje zmiany.","form.label_invalid_strict":"Weryfikacja konfiguracji nie powiod\u0142a si\u0119 - przejrzyj formularz przed zapisaniem.","form.label_valid":"Weryfikacja konfiguracji pomy\u015Blna","form.optional":"Optional","form.search":"Search...","form.select.auto":"Automatycznie (u\u017Cyj ustawie\u0144 przegl\u0105darki)","login.invalid_code":"Wprowadzony kod jest nieprawid\u0142owy lub wygas\u0142.","login.invalid_credentials":"Nieprawid\u0142owa nazwa lub has\u0142o u\u017Cytkownika","login.invalid_credentials_2":"If you lose access, delete the <code>auth.json</code> file in your Homebridge storage directory and restart Homebridge. Then refresh this page to set up a new admin account. Your Homebridge/UI settings will remain unchanged, except for UI user accounts. The only user account will be the admin account that you are setting up now.","login.invalid_password":"B\u0142\u0119dne has\u0142o","login.label_2fa_code":"Kod uwierzytelniania 2FA","logs.download.error":"Nie uda\u0142o si\u0119 pobra\u0107 pliku logu.","logs.download_warning":"Log mo\u017Ce zawiera\u0107 informacje osobiste, has\u0142a dost\u0119pu, tokeny. Sprawd\u017A zawarte w nim informacje zanim udost\u0119pnisz go innym osobom.","logs.log_file_truncated":"Log wyczyszczony.","logs.placeholder_search_logs":"Search logs (min. 3 characters)...","logs.title_download_log_file":"Pobierz log","logs.title_truncate_log_file":"Wyczy\u015B\u0107 log","logs.truncate.error":"Nie uda\u0142o si\u0119 uci\u0105\u0107 pliku logu.","logs.truncate_log_warning":"Ta czynno\u015B\u0107 nie b\u0119dzie mog\u0142a by\u0107 cofni\u0119ta i usunie intniej\u0105cy log Homebridge. Na pewno chcesz kontynuowa\u0107?","matter_bridge.config.use":"Enable Matter","menu.config_json_editor":"Konfig. JSON","menu.docker.restart_container":"Zrestartuj kontener","menu.docker.startup_script":"Skrypt startowy","menu.docker.terminal":"Terminal","menu.hbrestart.confirm_hb":"Zrestartuj Homebridge","menu.hbrestart.confirm_ui":"Zrestartuj HB Service & UI","menu.hbrestart.title":"Zrestartuj Homebridge","menu.label_accessories":"Akcesoria","menu.label_plugins":"Wtyczki","menu.label_settings":"Ustawienia","menu.label_status":"Status","menu.linux.label_logs":"Log","menu.linux.label_restart_server":"Zrestartuj serwer","menu.linux.label_shutdown_modal":"Czy na pewno chcesz wy\u0142\u0105czy\u0107 system operacyjny? B\u0119dziesz potrzebowa\u0142 fizycznego dost\u0119pu, aby go ponownie w\u0142\u0105czy\u0107.","menu.linux.label_shutdown_server":"Wy\u0142\u0105cz serwer","menu.linux.label_terminal":"Terminal","menu.reload":"Za\u0142aduj ponownie","menu.restart.title":"Opcje zasilania","menu.settings.title":"Ustawienia","menu.tooltip_logout":"Wyloguj","menu.tooltip_restart":"Zrestartuj","menu.tooltip_user_accounts":"U\u017Cytkownicy","menu.tooltip_view_logs":"Poka\u017C Log","platform.docker.container_restarted":"Kontener Docker zosta\u0142 ponownie uruchomiony","platform.docker.must_use_hashbang":"Skrypt musi u\u017Cywa\u0107 '#!/bin/sh'.","platform.docker.restart_required":"Konieczne b\u0119dzie ponowne uruchomienie tego kontenera dokowanego, aby zmiany zacz\u0119\u0142y obowi\u0105zywa\u0107.","platform.docker.run_with_restart":"Upewnij si\u0119, \u017Ce uruchamiasz kontener Docker z parametrem {{ command }}","platform.docker.script_help":"Ten skrypt zostanie wykonany za ka\u017Cdym razem, przy uruchamianiu kontenera Dockera. Mo\u017Cesz tego u\u017Cy\u0107 do zainstalowania dodatkowych pakiet\xF3w, kt\xF3rych mog\u0105 potrzebowa\u0107 wtyczki, takich jak ffmpeg lub libpcap-dev.","platform.docker.script_saved":"Skrypt startowy zosta\u0142 zapisany","platform.docker.server_long_time":"Ponowne uruchomienie serwera zajmuje du\u017Co czasu. Mo\u017Ce by\u0107 konieczne r\u0119czne zresetowanie kontenera Docker.","platform.docker.title_restarting":"Ponowne uruchamianie konternera Docker","platform.linux.long_time":"Ponowne uruchomienie serwera zajmuje du\u017Co czasu. Mo\u017Ce by\u0107 konieczne r\u0119czne zresetowanie serwera.","platform.linux.restart":"Poczekaj, ta strona zostanie automatycznie od\u015Bwie\u017Cona, gdy Homebridge powr\xF3ci online.","platform.linux.restarting_server":"Ponowne uruchamianie serwera","platform.linux.server_restart_error":"Wyst\u0105pi\u0142 b\u0142\u0105d podczas wysy\u0142ania polecenia restartu serwera","platform.linux.server_restarted":"Serwer uruchomi\u0142 si\u0119 ponownie","platform.linux.server_taking_long_time":"Serwer potrzebuje wi\u0119cej czasu, by powr\xF3ci\u0107 do trybu online","platform.linux.server_will_power_down":"Serwer wkr\xF3tce si\u0119 wy\u0142\u0105czy.","platform.linux.shutting_down_server":"Wy\u0142\u0105czanie serwera","platform.terminal.terminate_message_1":"Oddalanie si\u0119 od tej strony zako\u0144czy bie\u017C\u0105c\u0105 sesj\u0119, wszystkie procesy pierwszego planu zostan\u0105 zako\u0144czone.","platform.terminal.terminate_message_2":"Aby unikn\u0105\u0107 tego ostrze\u017Cenia, w\u0142\u0105cz <strong>Trwa\u0142o\u015B\u0107 sesji terminala</strong> w ustawieiniach.","platform.terminal.terminate_title":"Trwa\u0142o\u015B\u0107 sesji terminala","platform.terminal.terminate_unload":"Twoja sesja terminala zostanie zako\u0144czona. W\u0142\u0105cz trwa\u0142o\u015B\u0107 sesji terminala w Ustawieniach, aby temu zapobiec.","platform.version.restart_required":"Homebridge UI v{{ uiVersion }} zainstalowane, ale serwer nadal pracuje na wersji v{{ serverVersion }}.","platform.version.service_restart_required":"Wymagany restart serwera","plugins.bridge.action_error":"B\u0142\u0105d mostka podrz\u0119dnego przy akcji: {{ action }}.","plugins.bridge.name_error":"Bridge name must start and end with a letter or number, and can only contain letters, numbers, spaces, and apostrophes.","plugins.bridge.port_error":"{{ type }} port must be an integer between 1025 and 65533, excluding 5353, 8080, 8443 and any other already-configured port.","plugins.button_homepage":"Strona wtyczki","plugins.button_set_up":"Konfiguruj","plugins.button_settings":"Ustawienia","plugins.button_uninstall":"Odinstaluj","plugins.button_update":"Aktualizuj","plugins.compat.hb_node_too_low":"{{ packageName }} v{{ latestVersion }} wymaga Node.js w wersji v{{ minVersion }} lub nowszej. Aktualnie u\u017Cywasz Node.js w wersji v{{ installedVersion }}.","plugins.compat.hb_too_low":"Wtyczka {{ pluginName }} powinna by\u0107 instalowana u\u017Cywaj\u0105c Homebridge w wersji v{{ minVersion }} lub nowszej. Aktualnie u\u017Cywasz Homebridge w wersji v{{ installedVersion }}.","plugins.compat.node_first":"Zaktualizuj Node.js przed aktualizacj\u0105 {{ packageName }} i spr\xF3buj ponownie.","plugins.compat.node_link":"Jak zaktualizowa\u0107 Node.js","plugins.compat.node_too_low":"Wtyczka {{ pluginName }} powinna by\u0107 instalowana u\u017Cywaj\u0105c Node.js w wersji v{{ minVersion }} lub nowszej. Aktualnie u\u017Cywasz Node.js w wersji v{{ installedVersion }}.","plugins.compat.title":"Sprawdzanie zgodno\u015Bci","plugins.config.load_error":"Nie uda\u0142o si\u0119 za\u0142adowa\u0107 konfiguracji wtyczki.","plugins.config.must_be_array":"Konfiguracja wtyczki musi by\u0107 typu array.","plugins.config.must_be_array_objects":"Konfiguracja wtyczki musi by\u0107 zbiorem obiekt\xF3w.","plugins.config.must_be_object":"Blok konfiguracyjny musi by\u0107 obiektem.","plugins.config.name_property":'Akcesorium musi mie\u0107 prawid\u0142owy atrybut "name"',"plugins.config.please_fix":"Prosz\u0119 naprawi\u0107 b\u0142\u0119dy walidacji przed dodaniem nowego bloku.","plugins.disable.error":"Nie uda\u0142o si\u0119 wy\u0142\u0105czy\u0107 wtyczki.","plugins.donate.message_1":"Poniewa\u017C coraz wi\u0119cej u\u017Cytkownik\xF3w instaluje swoje wtyczki za po\u015Brednictwem interfejsu u\u017Cytkownika Homebridge, jest mniej prawdopodobne, \u017Ce odwiedzaj\u0105 stron\u0119 GitHub projekt\xF3w, na kt\xF3rej zazwyczaj wy\u015Bwietlane by\u0142yby sposoby wspierania programisty.","plugins.donate.message_2":"Dodanie link\xF3w do darowizn bezpo\u015Brednio w interfejsie u\u017Cytkownika Homebridge zapewnia u\u017Cytkownikom, \u017Ce wiedz\u0105, jak wspiera\u0107 programist\xF3w Homebridge, je\u015Bli chc\u0105 to zrobi\u0107.","plugins.donate.tile_donate_to":"Wspom\xF3\u017C {{ author }}","plugins.enable.error":"Nie uda\u0142o si\u0119 w\u0142\u0105czy\u0107 wtyczki.","plugins.manage.all_versions":"Wszystkie wersje","plugins.manage.backup":"Pobra\u0107 backup przed aktualizacj\u0105?","plugins.manage.changelog":"Pe\u0142na lista zmian","plugins.manage.changelog_none":"Nie mo\u017Cna pobra\u0107 listy zmian, by\u0107 mo\u017Ce ta wtyczka nie zapewnia pliku <code>CHANGELOG.md</code>.","plugins.manage.child_bridge_restart":"Mostek zosta\u0142 pomy\u015Blnie uruchomiony ponownie.","plugins.manage.child_bridge_restart_failed":"Restart mostka wtyczki nieudany, zrestartuj Homebridge r\u0119cznie.","plugins.manage.confirm_disable":"Czy na pewno chcesz wy\u0142\u0105czy\u0107 {{ pluginName }}?","plugins.manage.confirm_disable_accessory_1":"Wszelkie akcesoria wyeksponowane przez t\u0105 wtyczk\u0119 zostan\u0105 usuni\u0119te z ekranu akcesori\xF3w Homebridge UI i usuni\u0119te z HomeKit.","plugins.manage.confirm_disable_accessory_2":"Po ponownym w\u0142\u0105czeniu wtyczki akcesoria pojawi\u0105 si\u0119 ponownie w interfejsie Homebridge i HomeKit. Akcesoria strac\u0105 swoje dane HomeKit (takie jak powi\u0105zane sceny i automatyzacje).","plugins.manage.confirm_disable_platform_1":"Wszelkie akcesoria udost\u0119pnione przez t\u0119 wtyczk\u0119 zostan\u0105 usuni\u0119te z ekranu akcesori\xF3w Homebridge UI, ale pozostan\u0105 w HomeKit z etykiet\u0105 'Brak odpowiedzi'.","plugins.manage.confirm_disable_platform_2":"Po ponownym w\u0142\u0105czeniu wtyczki akcesoria pojawi\u0105 si\u0119 ponownie w interfejsie u\u017Cytkownika Homebridge i stan\u0105 si\u0119 ponownie kontrolowane w HomeKit. Akcesoria nie strac\u0105 swoich danych HomeKit (takich jak powi\u0105zane sceny i automatyzacja).","plugins.manage.confirm_disable_setting":"Twoje ustawienie dla {{ setting }} to obecnie {{ value }}, dlatego:","plugins.manage.confirm_enable":"Na pewno w\u0142\u0105czy\u0107 {{ pluginName }}?","plugins.manage.disable":"Wy\u0142\u0105cz","plugins.manage.enable":"W\u0142\u0105cz","plugins.manage.github_support":"Mo\u017Cesz pokaza\u0107 swoje wsparcie, daj\u0105c tej wtyczce {{ iconStar }} (lub {{ iconThumbsUp }}) na GitHub!","plugins.manage.hb_restart":"Homebridge i interfejs u\u017Cytkownika zostan\u0105 automatycznie ponownie uruchomione po ka\u017Cdej zmianie wersji.","plugins.manage.hide_updates":"Wy\u0142\u0105cz powiadomienia o aktualizacjach","plugins.manage.hide_updates_desc":"Je\u015Bli nie chcesz widzie\u0107 powiadomie\u0144 o aktualizacjach dla tej wtyczki, mo\u017Cesz je wy\u0142\u0105czy\u0107 tutaj.","plugins.manage.information":"Informacje wtyczki","plugins.manage.install":"Instaluj","plugins.manage.installed":"Zainstalowane","plugins.manage.json_config":"Konfiguracja JSON","plugins.manage.manage_version":"Zainstaluj inn\u0105 wersj\u0119","plugins.manage.manual_update_command":"Aby zaktualizowa\u0107 pakiet, otw\xF3rz wiersz polecenia Node.js jako administrator i uruchom nast\u0119puj\u0105ce polecenia:","plugins.manage.more_info":"Wi\u0119cej informacji na temat wtyczek o zasi\u0119gu {{ scopedLink }} i zweryfikowanych {{ verifiedLink }}.","plugins.manage.notes":"Informacje o wydaniu","plugins.manage.notes_beta_1":"Dzi\u0119kujemy za pomoc w ulepszeniu {{ pluginName }} poprzez przetestowanie wersji przedpremierowej.","plugins.manage.notes_beta_2":"Mo\u017Cesz u\u017Cy\u0107 interfejsu u\u017Cytkownika Homebridge, aby powr\xF3ci\u0107 do stabilnej wersji w dowolnym momencie.","plugins.manage.notes_beta_3":"Pami\u0119taj, \u017Ce jest to wersja przedpremierowa i zg\u0142aszaj wszelkie problemy na stronie repozytorium wtyczki GitHub.","plugins.manage.notes_latest":"Informacje o wydaniu s\u0105 wy\u015Bwietlane tylko podczas aktualizacji do najnowszej wersji.","plugins.manage.notes_none":"Nie mo\u017Cna pobra\u0107 informacji o wydaniu, by\u0107 mo\u017Ce ta wersja nie ma wydania GitHub.","plugins.manage.online_updates":"Aktualizacje online w systemie Windows nie s\u0105 wspierane. Musisz zaktualizowa\u0107 Config UI X r\u0119cznie po zatrzymaniu Homebridge.","plugins.manage.plugin_logs":"Log wtyczki","plugins.manage.scoped.error":"Wyst\u0105pi\u0142 b\u0142\u0105d. Mo\u017Cesz pobra\u0107 dzienniki poni\u017Cej.","plugins.manage.scoped.info_1":"Wtyczki Scoped Homebridge maj\u0105 nazwy zaczynaj\u0105ce si\u0119 od {{ prefix }}.","plugins.manage.scoped.info_2":"Aby uzyska\u0107 wi\u0119cej informacji na temat wtyczek Scoped i dlaczego warto si\u0119 prze\u0142\u0105cza\u0107, zobacz stron\u0119 wiki {{ link }}.","plugins.manage.scoped.process":"Ten proces nie wp\u0142ynie na akcesoria Homebridge/HomeKit. Nie b\u0119dziesz m\xF3g\u0142 anulowa\u0107 procesu po jego rozpocz\u0119ciu. To b\u0119dzie:","plugins.manage.scoped.switch":"Prze\u0142\u0105cz do Scoped","plugins.manage.scoped.windows":'Aktualizacje online nie s\u0105 obs\u0142ugiwane w systemie Windows. B\u0119dziesz musia\u0142 zainstalowa\u0107 now\u0105 wtyczk\u0119 i r\u0119cznie odinstalowa\u0107 star\u0105 wtyczk\u0119. Nale\u017Cy <span class="fw-bold">nie</span> ponownie uruchomi\u0107 Homebridge, dop\xF3ki oba kroki nie zostan\u0105 zako\u0144czone.',"plugins.manage.scoped_message":"Wtyczki Scoped poprawiaj\u0105 d\u0142ugoterminow\u0105 niezawodno\u015B\u0107 i zapewniaj\u0105 sp\xF3jn\u0105 konserwacj\u0119, \u0142\u0105cz\u0105c scentralizowany nadz\xF3r zespo\u0142u Homebridge z ci\u0105g\u0142ym zaanga\u017Cowaniem oryginalnego opiekuna.","plugins.manage.scoped_subtitle":"Ta wtyczka jest Scoped i zweryfikowana.","plugins.manage.select_version":"Wybierz wersj\u0119 do instalacji","plugins.manage.uninstall":"Odinstaluj","plugins.manage.uninstalled":"Odinstalowane","plugins.manage.unverified_message":"Niezweryfikowane wtyczki Homebridge wskazuj\u0105, \u017Ce nie zosta\u0142y poddane procesowi przegl\u0105du przez zesp\xF3\u0142 projektowy Homebridge. Brak weryfikacji niekoniecznie oznacza nieskuteczno\u015B\u0107 lub obawy dotycz\u0105ce bezpiecze\u0144stwa. Autorzy mogli zdecydowa\u0107 si\u0119 nie szuka\u0107 weryfikacji z r\xF3\u017Cnych powod\xF3w.","plugins.manage.unverified_subtitle":"Ta wtyczka jest niezweryfikowana.","plugins.manage.update":"Aktualizuj","plugins.manage.updated":"Zaktualizowane","plugins.manage.verified_message":"Wtyczki Homebridge oznaczone jako zweryfikowane zosta\u0142y sprawdzone przez zesp\xF3\u0142 Homebridge aby upewni\u0107 si\u0119, \u017Ce spe\u0142niaj\u0105 r\xF3\u017Cne wymagania, kt\xF3re zach\u0119caj\u0105 do najlepszych praktyk i bezproblemowego do\u015Bwiadczenia u\u017Cytkownika.","plugins.manage.verified_subtitle":"Ta wtyczka jest zweryfikowana.","plugins.placeholder_search_first":"U\u017Cyj paska wyszukiwania powy\u017Cej, aby znale\u017A\u0107 swoj\u0105 pierwsz\u0105 wtyczk\u0119.","plugins.placeholder_search_none":"Brak wynik\xF3w","plugins.placeholder_search_plugin":"Wyszukaj dost\u0119pne wtyczki\u2026","plugins.settings.custom.download_dump_file":"Download Dump File","plugins.settings.custom.homebridge-gsh.label_account_linked":"Konto pod\u0142\u0105czone","plugins.settings.custom.homebridge-gsh.label_link_account":"Pod\u0142\u0105cz konto","plugins.settings.custom.homebridge-gsh.message_about":"Wtyczka Homebridge Google Smart Home umo\u017Cliwia kontrol\u0119 akcesori\xF3w za pomoc\u0105 g\u0142o\u015Bnik\xF3w lub aplikacji mobilnej Google Home.","plugins.settings.custom.homebridge-gsh.message_account_link_required":"Aby w\u0142\u0105czy\u0107 t\u0105 funkcjonalno\u015B\u0107, musisz zalogowa\u0107 si\u0119 swoim kontem Google lub GitHub - pami\u0119taj aby u\u017Cy\u0107 tego samego konta dla Homebridge i aplikacji Google Home.","plugins.settings.custom.homebridge-gsh.message_homebridge_restart_required":"Serwer wymaga zrestartowania, aby zastosowa\u0107 zmiany.","plugins.settings.deconz.dump_no_exist":"Plik Homebridge deCONZ jeszcze nie istnieje.","plugins.settings.hue.dump_no_exist":"Plik Homebridge Hue jeszcze nie istnieje.","plugins.settings.label_open_config_editor":"Otw\xF3rz edytor konfiguracji","plugins.settings.message_consult_documentation":"Sprawd\u017C na stronie wsparcia tej wtyczki, jak j\u0105 poprawnie skonfigurowa\u0107.","plugins.settings.message_manual_config_required":"Ta wtyczka musi by\u0107 skonfigurowana r\u0119cznie z u\u017Cyciem wbudowanego edytora.","plugins.settings.plugin_config_saved":"Zapisano konfiguracj\u0119 wtyczki","plugins.settings.restart_required":"Zrestartuj serwer, aby zastosowa\u0107 zmiany.","plugins.stats":"Statystyki wtyczek","plugins.stats_note":"Wtyczki nie mog\u0105 by\u0107 instalowane z tej strony, jest to dostarczane tylko dla zainteresowania.","plugins.status_installed":"Zainstalowana","plugins.support.list_1":"Wtyczki Homebridge s\u0105 elementami konstrukcyjnymi Homebridge, umo\u017Cliwiaj\u0105cymi dodanie wsparcia dla nowych akcesori\xF3w i platform. Wtyczki dodaj\u0105 wsparcie dla inteligentnych \u015Bwiate\u0142, kamer, telewizor\xF3w itp. dla marek, kt\xF3re nie obs\u0142uguj\u0105 natywnie HomeKit. Na przyk\u0142ad, aby wprowadzi\u0107 dzwonki i kamery Ring do HomeKit, mo\u017Cesz zainstalowa\u0107 wtyczk\u0119 <code>homebridge-ring</code>.","plugins.support.list_2":"Wtyczki Homebridge s\u0105 tworzone przez publicznych wsp\xF3\u0142pracownik\xF3w w spo\u0142eczno\u015Bci Homebridge i zazwyczaj nie s\u0105 kojarzone z opiekunami Homebridge, ani z samymi producentami akcesori\xF3w. Je\u015Bli masz pytanie dotycz\u0105ce konkretnej wtyczki, powiniene\u015B da\u0107 zna\u0107 tw\xF3rcy wtyczki za po\u015Brednictwem strony GitHub wtyczki.","plugins.support.list_3":"Obecnie dost\u0119pnych jest ponad 4700 wtyczek dla Homebridge, wi\u0119c powiniene\u015B by\u0107 w stanie znale\u017A\u0107 wtyczki odpowiadaj\u0105ce Twoim potrzebom. Je\u015Bli jeste\u015B programist\u0105 Javascript/TypeScript (lub chcesz skorzysta\u0107 z okazji, aby si\u0119 uczy\u0107), mo\u017Cesz r\xF3wnie\u017C stworzy\u0107 w\u0142asn\u0105 wtyczk\u0119 i udost\u0119pni\u0107 j\u0105 spo\u0142eczno\u015Bci Homebridge. Sprawd\u017A sekcj\u0119 Wsparcie, aby znale\u017A\u0107 przydatne linki, kt\xF3re pomog\u0105 Ci zacz\u0105\u0107.","plugins.support.list_4":"Niekt\xF3re wtyczki pozwalaj\u0105 tworzy\u0107 wirtualne / fikcyjne akcesoria, kt\xF3re s\u0105 akcesoriami bez fizycznego odpowiednika. Mo\u017Cna je wykorzysta\u0107 do tworzenia wirtualnych akcesori\xF3w w HomeKit, takich jak wirtualne prze\u0142\u0105czniki, \u015Bwiat\u0142a lub czujniki. Spr\xF3buj wyszuka\u0107 <code>dummy</code> lub <code>virtual</code> w pasku wyszukiwania, aby znale\u017A\u0107 kilka przyk\u0142ad\xF3w.","plugins.toast_failed_to_load_plugin_schema":"Nie uda\u0142o si\u0119 za\u0142adowa\u0107 schematu konfiguracji wtyczki.","plugins.toast_failed_to_load_plugins":"Nie uda\u0142o si\u0119 za\u0142adowa\u0107 wtyczek","plugins.toast_failed_to_search_plugins":"Failed to search plugins","plugins.uninstall_remove_child_bridge":"Usun\u0105\u0107 mostek wtyczki?","plugins.uninstall_remove_child_bridges":"Usun\u0105\u0107 {{ count }} mostk\xF3w wtyczek?","plugins.uninstall_remove_config_required":"Po ca\u0142kowitym usuni\u0119ciu wtyczki, upewnij si\u0119, \u017Ce usuni\u0119to jej konfiguracj\u0119 w pliku config.json przed zrestartowaniem Homebridge.","plugins.uninstall_remove_confirmation":"Na pewno odinstalowa\u0107 {{ pluginName }}?","plugins.uninstall_remove_plugin_config":"Usun\u0105\u0107 r\xF3wnie\u017C konfiguracj\u0119 tej wtyczki?","plugins.uninstall_warn_1":"Podczas usuwania mostu podrz\u0119dnego wszelkie akcesoria opublikowane przez ten most zostan\u0105 usuni\u0119te z pami\u0119ci podr\u0119cznej Homebridge.","plugins.uninstall_warn_2":"Akcesoria stan\u0105 si\u0119 nieaktualne w HomeKit (pokazuj\u0105c brak odpowiedzi). Aby je usun\u0105\u0107, musisz r\u0119cznie usun\u0105\u0107 ten most z HomeKit. Mo\u017Cesz to zrobi\u0107 w aplikacji Apple Home z sekcji Ustawienia.","reset.accessory_all.desc":"Usu\u0144 wszystkie akcesoria z pami\u0119ci podr\u0119cznej.","reset.accessory_all.list_1":"Homebridge uruchomi si\u0119 ponownie a wszystkie istniej\u0105ce akcesoria zostan\u0105 usuni\u0119te z Homebridge i HomeKit.","reset.accessory_all.list_2":"Wszystkie powi\u0105zane dane HomeKit zostan\u0105 r\xF3wnie\u017C usuni\u0119te, w tym skojarzenia pokoi, sceny oraz automatyzacje, kt\xF3re u\u017Cywaj\u0105 tego akcesorium.","reset.accessory_all.list_3":"Po ponownym uruchomieniu Homebridge twoje wtyczki ponownie dodadz\u0105 wszelkie akcesoria, tak jakby wtyczka by\u0142a instalowana po raz pierwszy.","reset.accessory_all.title":"Usu\u0144 wszystkie akcesoria z pami\u0119ci podr\u0119cznej","reset.accessory_ind.bridge":"Mostek","reset.accessory_ind.desc":"Usu\u0144 poszczeg\xF3lne akcesoria z pami\u0119ci podr\u0119cznej.","reset.accessory_ind.done":"Po zako\u0144czeniu usuwania akcesori\xF3w z pami\u0119ci podr\u0119cznej, sprawd\u017A log pod k\u0105tem potwierdzenia i/lub b\u0142\u0119d\xF3w.","reset.accessory_ind.fail":"Nie uda\u0142o si\u0119 usun\u0105\u0107 akcesori\xF3w z pami\u0119ci podr\u0119cznej, sprawd\u017A log pod k\u0105tem b\u0142\u0119d\xF3w.","reset.accessory_ind.list_1":"Niekt\xF3re wtyczki nie czyszcz\u0105 po sobie prawid\u0142owo akcesori\xF3w. Je\u015Bli masz przestarza\u0142e akcesoria, mo\u017Cesz je usun\u0105\u0107 z pami\u0119ci podr\u0119cznej. Ta funkcja mo\u017Ce by\u0107 r\xF3wnie\u017C u\u017Cyta do zresetowania istniej\u0105cego akcesorium w HomeKit.","reset.accessory_ind.list_2":"Akcesoria zostan\u0105 usuni\u0119te z Homebridge i HomeKit, wraz z powi\u0105zanymi z nimi skojarzeniami pokoi, scenami i automatyzacjami.","reset.accessory_ind.list_3":"Po ponownym uruchomieniu Homebridge, twoje wtyczki ponownie dodaj\u0105 wszelkie usuni\u0119te akcesoria, tak jakby wtyczka by\u0142a instalowana po raz pierwszy.","reset.accessory_ind.title":"Usu\u0144 poszczeg\xF3lne akcesoria","reset.accessory_ind.unknown":"Nieznana nazwa","reset.accessory_reset":"Resetowanie akcesori\xF3w","reset.action_is_irreversible":"Ta czynno\u015B\u0107 jest nieodwracalna! Przeczytaj uwa\u017Cnie, zanim przejdziesz dalej.","reset.bridge_accessories.desc":"Usu\u0144 z pami\u0119ci podr\u0119cznej wszystkie akcesoria opublikowane przez mostek podrz\u0119dny.","reset.bridge_accessories.empty":"Nie masz mostk\xF3w, z kt\xF3rych mo\u017Cna by usun\u0105\u0107 akcesoria.","reset.bridge_accessories.list_1":"Ta funkcja mo\u017Ce by\u0107 u\u017Cyta do zresetowania istniej\u0105cych akcesori\xF3w wtyczki w HomeKit. B\u0119d\u0105 one usuni\u0119te z Homebridge i HomeKit, a nast\u0119pnie ponownie dodane przez wtyczk\u0119 jako nowe akcesoria.","reset.bridge_accessories.list_2":"Szczeg\xF3\u0142y parowania i status mostku podrz\u0119dnego pozostan\u0105 takie same.","reset.bridge_accessories.title":"Usu\u0144 akcesoria mostku podrz\u0119dnego","reset.bridge_all.desc":"Zresetuj wszystkie mostki usuwaj\u0105c je z pami\u0119ci podr\u0119cznej. Obejmuje to g\u0142\xF3wny mostek Homebridge, mostki podrz\u0119dne i mostki do akcesori\xF3w zewn\u0119trznych.","reset.bridge_all.list_1":"Spowoduje to zresetowanie mostu Homebridge, wszystkich most\xF3w podrz\u0119dnych i most\xF3w do zewn\u0119trznych akcesori\xF3w HomeKit.","reset.bridge_all.list_2":"Akcesoria b\u0119d\u0105 nadal wy\u015Bwietlane w HomeKit (jako brak odpowiedzi), dop\xF3ki mostki nie zostan\u0105 r\u0119cznie usuni\u0119te z HomeKit. Mo\u017Cesz to zrobi\u0107 w aplikacji Apple Home, uzyskuj\u0105c dost\u0119p do Ustawienia domu \u2192 Centra akcesori\xF3w i mostki \u2192 {Mostek} \u2192 Usu\u0144 mostek z domu.","reset.bridge_all.list_3":"Wszystkie akcesoria, sceny i automatyki Homebridge do HomeKit b\u0119d\u0105 musia\u0142y zosta\u0107 ponownie skonfigurowane po rozparowaniu.","reset.bridge_all.list_4":"Twoja nazwa u\u017Cytkownika i kod PIN Homebridge zostan\u0105 zmienione. Mo\u017Cesz zobaczy\u0107 nowe warto\u015Bci w konfiguracji Homebridge po rozparowaniu.","reset.bridge_all.title":"Zresetuj wszystkie mostki","reset.bridge_ind.desc":"Zresetuj pojedynczy mostek usuwaj\u0105c go z pami\u0119ci podr\u0119cznej. Mo\u017Ce to by\u0107 mostek podrz\u0119dny lub mostek do zewn\u0119trznego akcesorium takiego jak kamera lub telewizor.","reset.bridge_ind.desc_child_active":"Homebridge wykry\u0142, \u017Ce te mosty dzieci\u0119ce s\u0105 w u\u017Cyciu. Po usuni\u0119ciu ich akcesoria zostan\u0105 usuni\u0119te z pami\u0119ci podr\u0119cznej Homebridge. W po\u0142\u0105czeniu z HomeKit, akcesoria mostu b\u0119d\u0105 wy\u015Bwietlane jako \u201EBrak odpowiedzi\u201D, a mostek b\u0119dzie musia\u0142 zosta\u0107 usuni\u0119ty za pomoc\u0105 aplikacji Home. Informacje o parowaniu mostu potomnego zostan\u0105 zmienione. Po ponownym uruchomieniu Homebridge wtyczka utworzy nowy most dzieci\u0119cy i akcesoria. Nowy mostek b\u0119dzie musia\u0142 zosta\u0107 ponownie sparowany z HomeKit. Mo\u017Cesz wy\u015Bwietli\u0107 nowe informacje o parowaniu na stronie ustawie\u0144 mostu odpowiedniej wtyczki.","reset.bridge_ind.desc_child_stale":"Homebridge wykry\u0142, \u017Ce te mosty nie s\u0105 u\u017Cywane, ale dok\u0142adnie sprawd\u017A przed usuni\u0119ciem. Mog\u0105 by\u0107 pozostawione po wcze\u015Bniej odinstalowanych wtyczkach. W po\u0142\u0105czeniu z HomeKit akcesoria b\u0119d\u0105 wy\u015Bwietlane jako \u201EBrak odpowiedzi\u201D, a mostek b\u0119dzie musia\u0142 zosta\u0107 usuni\u0119ty za pomoc\u0105 aplikacji Home.","reset.bridge_ind.desc_non_child":"Homebridge wykry\u0142, \u017Ce te mosty s\u0105 w u\u017Cyciu. Mo\u017Cesz je usun\u0105\u0107 z pami\u0119ci podr\u0119cznej, ale prawdopodobnie zostan\u0105 one ponownie dodane przez wtyczk\u0119 po ponownym uruchomieniu Homebridge. Informacje o parowaniu pozostan\u0105 niezmienione.","reset.bridge_ind.done":"Zako\u0144czono resetowanie most\xF3w, sprawd\u017A log pod k\u0105tem potwierdzenia i/lub b\u0142\u0119d\xF3w.","reset.bridge_ind.fail":"Nie uda\u0142o si\u0119 zresetowa\u0107 most\xF3w, sprawd\u017A log pod k\u0105tem b\u0142\u0119d\xF3w.","reset.bridge_ind.head_child_active":"Aktywne mostki","reset.bridge_ind.head_child_stale":"Przestarza\u0142e mostki","reset.bridge_ind.head_non_child":"Mostki niepodrz\u0119dne","reset.bridge_ind.title":"Zresetuj poszczeg\xF3lne mostki","reset.bridges.desc":"Je\u015Bli masz problem z parowaniem Homebridge, zewn\u0119trznego akcesorium lub mostku podrz\u0119dnego z HomeKit, mo\u017Ce by\u0107 konieczne roz\u0142\u0105czenie pary z HomeKit aby rozpocz\u0105\u0107 od nowa.","reset.bridges.empty":"Nie masz \u017Cadnych mostk\xF3w do od\u0142\u0105czenia z HomeKit.","reset.bridges.title":"Mostki","reset.clear_cache_single.list_3":"Podczas usuwania akcesorium z pami\u0119ci podr\u0119cznej wszystkie powi\u0105zane z nim dane HomeKit zostan\u0105 usuni\u0119te. Obejmuje to wszelkie powi\u0105zane sceny i automatyzacje, kt\xF3re u\u017Cywaj\u0105 tego akcesorium.","reset.delete_success":"Resetowanie Homebridge i czyszczenie pami\u0119ci podr\u0119cznej akcesori\xF3w zako\u0144czone sukcesem.","reset.error_message":"Nie mo\u017Cna za\u0142adowa\u0107 pami\u0119ci podr\u0119cznej akcesori\xF3w. Mo\u017Cesz nie mie\u0107 \u017Cadnych zbuforowanych akcesori\xF3w.","reset.failed_to_reset":"Nie uda\u0142o si\u0119 zresetowa\u0107 akcesori\xF3w. Sprawd\u017A dziennik log\xF3w.","reset.force_restart_hb_help_text":"U\u017Cyj tej akcji aby wymusi\u0107 pe\u0142ny restart na us\u0142udze hb-service.","reset.no_accessories":"Nie posiadasz w pami\u0119ci podr\u0119cznej \u017Cadnych akcesori\xF3w do usuni\u0119cia.","restart.child_bridge_list":"Prosz\u0119 ponownie uruchomi\u0107 te mostki podrz\u0119dne, aby zmiany mia\u0142y zastosowanie:","restart.child_bridges":"Zrestartuj mostek wtyczki aby zastosowa\u0107 zmiany.","restart.label_restart_command_executed":"Komenda restartu wykonana","restart.please_wait_while_server_restarts":"Prosz\u0119 czeka\u0107, strona zostanie automatycznie od\u015Bwie\u017Cona po powrocie Homebridge do trybu online.","restart.server_is_taking_long_time_to_restart":"Restart Homebridge zajmuje wi\u0119cej czasu. Mo\u017Ce by\u0107 konieczny r\u0119czny restart.","restart.service_ready":"HB Service gotowy","restart.title_restart":"Restartowanie Homebridge","restart.toast_server_restart_error":"B\u0142\u0105d w trakcie restartu serwera","restart.toast_server_restart_timeout":"Homebridge potrzebuje wi\u0119cej czasu, aby powr\xF3ci\u0107 do trybu online","restart.toast_server_restarted":"Homebridge uruchomi\u0142 si\u0119 ponownie","restart.ui_online":"Homebridge UI gotowy","rpi.throttled.currently_message":"Raspberry Pi zg\u0142asza aktualnie za niskie napi\u0119cie - sprawd\u017A czy jest zasilane z odpowiedniego zasilacza. Zbyt niskie napi\u0119cie mo\u017Ce powodowa\u0107 niestabiln\u0105 prace i uszkodzi\u0107 kart\u0119 SD.","rpi.throttled.previously_message":"Raspberry Pi zg\u0142asza\u0142o zbyt niskie napi\u0119cie od ostatniego uruchomienia - sprawd\u017A czy jest zasilane z odpowiedniego zasilacza.","rpi.throttled.undervoltage_title":"Pod Napi\u0119ciem","settings.accessory.debug":"Tryb debugowania akcesori\xF3w","settings.accessory.debug_desc":"Je\u015Bli w\u0142\u0105czone, interfejs u\u017Cytkownika Homebridge b\u0119dzie rejestrowa\u0142 komunikaty poziomu debugowania.","settings.cache.desc":"Homebridge utrzymuje pami\u0119\u0107 podr\u0119czn\u0105 z informacjami o akcesoriach aby nie by\u0142y one usuwane i ponownie dodawane do HomeKit za ka\u017Cdym razem gdy Homebridge uruchamia si\u0119 ponownie. Czasami pami\u0119\u0107 podr\u0119czna mo\u017Ce sta\u0107 si\u0119 niezsynchronizowana z rzeczywistymi akcesoriami w Homebridge.","settings.changes.saved":"Twoje zmiany zosta\u0142y zapisane i wymagaj\u0105 ponownego uruchomienia.","settings.datetime.incorrect":"Data i godzina na twoim serwerze Homebridge wydaj\u0105 si\u0119 by\u0107 nieprawid\u0142owe. Mo\u017Ce to spowodowa\u0107 nieoczekiwane problemy. Kliknij tutaj, aby uzyska\u0107 wi\u0119cej informacji.","settings.display.blue":"Niebieski","settings.display.bluegrey":"Niebiesko-szary","settings.display.brown":"Br\u0105zowy","settings.display.cyan":"Cyjan","settings.display.dark":"Ciemny","settings.display.deep_purple":"Ciemno-purpurowy","settings.display.green":"Zielony","settings.display.grey":"Szary","settings.display.indigo":"Indygo","settings.display.lang":"J\u0119zyk","settings.display.light":"Jasny","settings.display.lighting_mode":"Motyw (jasny / ciemny)","settings.display.menu_default":"Domy\u015Blny","settings.display.menu_freeze":"Trzymaj zamkni\u0119te (desktop)","settings.display.menu_mode":"Tryb menu","settings.display.orange":"Pomara\u0144czowy","settings.display.pink":"R\xF3\u017Cowy","settings.display.purple":"Fioletowy","settings.display.red":"Czerwony","settings.display.show_betas":"Prefer Beta Versions","settings.display.teal":"Turkusowy","settings.display.temp_units":"Jednostka temperatury","settings.display.temp_units.c":"Celsius (\xB0C)","settings.display.temp_units.f":"Fahrenheit (\xB0F)","settings.display.theme":"Motyw (kolor)","settings.display.wallpaper":"Tapeta","settings.display.wallpaper_intro":"Prze\u015Blij tapet\u0119 dla swojego interfejsu u\u017Cytkownika Homebridge. Jest to obecnie wy\u015Bwietlane na ekranie logowania.","settings.display.wallpaper_rule":"Mo\u017Cesz wybra\u0107 plik obrazu, kt\xF3ry jest maksymalnej wielko\u015Bci: {{ maxFileSizeText }}.","settings.display.wallpaper_rule2":"B\u0119dziesz musia\u0142 klikn\u0105\u0107 Zapisz, aby przes\u0142a\u0107 tapet\u0119 do katalogu Homebridge.","settings.display.wallpaper_success":"Tapeta zosta\u0142a pomy\u015Blnie zaktualizowana.","settings.general.title_display":"Wygl\u0105d","settings.general.title_general":"Og\xF3lne","settings.linux.restart":"Polecenie restartu","settings.linux.restart_desc":"Je\u015Bli nie ustawiono polecenia restartu, proces zako\u0144czy si\u0119 niezerowym kodem wyj\u015Bcia.","settings.linux.shutdown":"Polecenie wy\u0142\u0105czania","settings.linux.shutdown_desc":"Je\u015Bli nie jest ustawione polecenie wy\u0142\u0105czenia, proces zako\u0144czy si\u0119 z niezerowym kodem wyj\u015Bcia.","settings.linux.temp":"\u015Acie\u017Cka do pliku temperatury","settings.linux.temp_desc":"Je\u015Bli u\u017Cywasz Homebridge na Raspberry Pi, mo\u017Cesz wprowadzi\u0107 \u015Bcie\u017Ck\u0119 do pliku temperatury systemu operacyjnego tutaj. Spowoduje to wy\u015Bwietlenie aktualnej temperatury na stronie statusu interfejsu u\u017Cytkownika.","settings.matter.desc":"Enables Matter accessories on the main bridge. If only using Matter with child bridges, this setting does not need to be enabled - child bridges have independent Matter settings in their plugin bridge settings.","settings.matter.enabled_desc":"Whether to start a Matter instance and allow plugins to expose Matter accessories.","settings.matter.port":"Port","settings.matter.port_desc":"This must be between 1025 and 65533, and unique to any other configured port.","settings.matter.title":"Matter Settings","settings.mdns_advertiser":"Rozg\u0142aszacz mDNS","settings.mdns_advertiser_exp":"eksperymentalny","settings.mdns_advertiser_help":"Je\u015Bli masz problem z po\u0142\u0105czeniem Homebridge do HomeKit, spr\xF3buj u\u017Cy\u0107 alternatywnego rozg\u0142aszania mDNS.","settings.mdns_advertiser_not_connected":"Roz\u0142\u0105czony","settings.mdns_advertiser_rec":"zalecane","settings.name":"Nazwa Homebridge","settings.network.hb_package":"\u015Acie\u017Cka modu\u0142u Homebridge","settings.network.hb_package_desc":"Je\u015Bli masz zainstalowane kilka wersji Homebridge, mo\u017Cesz tutaj okre\u015Bli\u0107 \u015Bcie\u017Ck\u0119 do wersji, kt\xF3rej chcesz u\u017Cy\u0107.","settings.network.host":"Adres IP hosta","settings.network.host_desc":"Adres IP hosta do nas\u0142uchiwania. W wi\u0119kszo\u015Bci przypadk\xF3w b\u0119dzie to <code>::</code> lub <code>0.0.0.0</code>.","settings.network.mdns_advertise":"Advertise Via mDNS","settings.network.mdns_advertise_help":"Enable mDNS advertising (using Bonjour) for your Homebridge UI, making it discoverable as an HTTP service on your local network.","settings.network.message_network_interface":"Je\u015Bli \u017Caden interfejs nie zostanie wybrany, Homebridge wybierze automatycznie.","settings.network.port_end":"Ko\u0144cowy zakres port\xF3w","settings.network.port_end_desc":"Kontroluj koniec zakresu port\xF3w, na kt\xF3rych powinny dzia\u0142a\u0107 oddzielne akcesoria (takie jak kamera lub telewizor). To musi by\u0107 mi\u0119dzy 1025 a 65533 i wy\u017Csze ni\u017C port startowy powy\u017Cej.","settings.network.port_hb":"Port Homebridge","settings.network.port_hb_desc":"Port Homebridge. Musi by\u0107 mi\u0119dzy 1025 a 65533 i nie powinien by\u0107 taki sam jak port Homebridge UI.","settings.network.port_start":"Pocz\u0105tkowy zakres port\xF3w","settings.network.port_start_desc":"Kontroluj pocz\u0105tek zakresu port\xF3w, na kt\xF3rych powinny dzia\u0142a\u0107 oddzielne akcesoria (takie jak kamera lub telewizor). Musi to by\u0107 mi\u0119dzy 1025 a 65533 i ni\u017Csze ni\u017C port ko\u0144cowy poni\u017Cej.","settings.network.port_ui":"Port Homebridge UI","settings.network.port_ui_desc":"Port Homebridge UI. Nie powinien by\u0107 taki sam jak port Homebridge.","settings.network.proxy":"Nazwa hosta serwera proxy","settings.network.proxy_desc":"Podczas pracy za serwerem proxy mo\u017Ce by\u0107 konieczne wprowadzenie nazwy hosta, kt\xF3rej u\u017Cywasz, aby uzyska\u0107 dost\u0119p do interfejsu u\u017Cytkownika.","settings.network.title_network":"Sie\u0107","settings.network.title_network_interfaces":"Interfejsy sieciowe","settings.network.title_security":"Bezpiecze\u0144stwo","settings.network.title_terminal":"Log & Terminal","settings.network.webroot":"Webroot Path","settings.network.webroot_desc":"This can be configured if you want to access the Homebridge UI under a specific URL path.","settings.reset_bridge.error":"Nie uda\u0142o si\u0119 zresetowa\u0107 mostu.","settings.security.auth":"Uwierzytelnianie","settings.security.auth_desc":"Uwierzytelnianie dla interfejsu Homebridge za pomoc\u0105 nazwy u\u017Cytkownika i has\u0142a.","settings.security.cert":"\u015Acie\u017Cka certyfikatu","settings.security.https":"W\u0142\u0105cz HTTPS","settings.security.https_configure":"Configure HTTPS Settings","settings.security.https_desc":"Enable HTTPS using an auto-generated self-signed certificate or by providing your own certificate files.","settings.security.https_enable":"Enable HTTPS","settings.security.https_enable_desc":"Secure your Homebridge web interface with HTTPS / SSL encryption.","settings.security.https_raspbian":"HTTPS is already enabled by default when running the Homebridge Raspbian image {{ link }}.","settings.security.key":"\u015Acie\u017Cka klucza prywatnego","settings.security.pass":"Has\u0142o certyfikatu PKCS#12","settings.security.pass_optional":"Optional - only required if your certificate is password protected","settings.security.pfx":"\u015Acie\u017Cka certyfikatu PKCS#12","settings.security.selfsigned_hostnames":"Certificate Hostnames","settings.security.selfsigned_hostnames_desc":"Comma-separated list of hostnames or IP addresses to include in the certificate (e.g., localhost, 127.0.0.1, homebridge.local, 192.168.1.100)","settings.security.ssl_mode_keycert":"Upload Certificate Files","settings.security.ssl_mode_keycert_desc":"Upload your own private key and certificate files","settings.security.ssl_mode_off":"Disable HTTPS","settings.security.ssl_mode_off_desc":"Turn off SSL encryption.","settings.security.ssl_mode_pfx":"Upload PFX Certificate","settings.security.ssl_mode_pfx_desc":"Upload a PKCS#12 (.pfx or .p12) certificate file","settings.security.ssl_mode_selfsigned":"Self-Signed Certificate","settings.security.ssl_mode_selfsigned_desc":"Automatically generate a free self-signed certificate","settings.security.ui_control":"Listy kontroli akcesori\xF3w","settings.security.ui_control_desc":"Okre\u015Bl mostki i akcesoria mostk\xF3w, kt\xF3re mog\u0105 by\u0107 kontrolowane lub blokowane przez interfejs u\u017Cytkownika Homebridge.","settings.security.ui_control_desc_2":"Pozw\xF3l interfejsowi u\u017Cytkownika na sterowanie akcesoriami na mo\u015Bcie, w\u0142\u0105czaj\u0105c poni\u017Cszy prze\u0142\u0105cznik.","settings.service.debug_tooltip":"Niekt\xF3re wtyczki wymagaj\u0105 ustawienia zmiennej \u015Brodowiskowej DEBUG {{ link }} aby umo\u017Cliwi\u0107 rejestrowanie poziomu debugowania.","settings.service.node_tooltip":"Opcje uruchomieniowe Node.js dla procesu Homebridge. To pole powinno by\u0107 puste, chyba \u017Ce wiesz co robisz.","settings.startup.debug":"Tryb Homebridge Debug","settings.startup.debug_desc_v1":"Wy\u015Bwietlaj bardziej szczeg\xF3\u0142owe logi systemu. To ustawienie dotyczy Homebridge, a tak\u017Ce wszystkich mostk\xF3w podrz\u0119dnych. Tej opcji mog\u0105 te\u017C wymaga\u0107 niekt\xF3re wtyczki aby wy\u015Bwietla\u0107 bardziej szczeg\xF3\u0142owe logi.","settings.startup.debug_desc_v2":"Wy\u015Bwietlaj bardziej szczeg\xF3\u0142owe logi systemu. To ustawienie dotyczy Homebridge. Ustawienia dla ka\u017Cdego mostka podrz\u0119dnego mo\u017Cna znale\u017A\u0107 w konfiguracji mostka podrz\u0119dnego dla danej wtyczki. Tej opcji mog\u0105 te\u017C wymaga\u0107 niekt\xF3re wtyczki aby wy\u015Bwietla\u0107 bardziej szczeg\xF3\u0142owe logi.","settings.startup.insecure":"Enable UI Accessory Control","settings.startup.insecure_desc":"Aby sterowa\u0107 akcesoriami za pomoc\u0105 interfejsu u\u017Cytkownika Homebridge, musisz uruchomi\u0107 Homebridge w trybie niezabezpieczonym (Insecure).","settings.startup.keep_accessories":"Zachowaj akcesoria odinstalowanych wtyczek","settings.startup.keep_accessories_desc":"Akcesoria wtyczek (tych typu platform) pozostan\u0105 w pami\u0119ci podr\u0119cznej nawet po odinstalowaniu wtyczki. Mo\u017Ce to by\u0107 przydatne je\u015Bli planujesz ponownie zainstalowa\u0107 wtyczk\u0119 w przysz\u0142o\u015Bci.","settings.startup.metrics":"W\u0142\u0105cz monitorowanie metryczne serwera","settings.startup.metrics_desc":"Po w\u0142\u0105czeniu, interfejs u\u017Cytkownika Homebridge b\u0119dzie zbiera\u0142 i wy\u015Bwietla\u0142 statystyki procesora i pami\u0119ci na stronie statusu.","settings.startup.scheduled_restart":"Scheduled Restart Cron","settings.startup.scheduled_restart_desc":"Schedule automatic restarts relative to your timezone using a cron expression. Leave empty to disable. Create a cron expression {{ link }}.","settings.startup.scheduled_restart_desc_2":"You can apply this setting per child bridge from the plugin bridge configuration.","settings.startup.session":"Limit czasu sesji","settings.startup.session_days":"days","settings.startup.session_desc":"Liczba sekund zanim u\u017Cytkownik zostanie wylogowany. Domy\u015Blnie 28800 (8 godzin).","settings.startup.session_hours":"hours","settings.startup.session_inactivity_based":"Inactivity-Based Session Refresh","settings.startup.session_inactivity_based_desc":"When enabled, the session will automatically refresh on navigation to prevent logout during active use.","settings.startup.session_minutes":"minutes","settings.terminal.buffer_size":"Rozmiar bufora terminala","settings.terminal.buffer_size_help":"Ilo\u015B\u0107 danych wyj\u015Bciowych terminala do zachowania dla trwa\u0142ych sesji. Wi\u0119ksze warto\u015Bci zu\u017Cywaj\u0105 wi\u0119cej pami\u0119ci.","settings.terminal.log_max":"Maksymalny rozmiar loga","settings.terminal.log_max_desc":"Maksymalny rozmiar loga (bajty). Ustaw na -1, aby wy\u0142\u0105czy\u0107 obcinanie dziennika.","settings.terminal.log_truncate":"Rozmiar obcinania loga","settings.terminal.log_truncate_desc":"Rozmiar (bajty) do obci\u0119cia loga po przekroczeniu maksymalnego rozmiaru okre\u015Blonego powy\u017Cej.","settings.terminal.persistence":"Trwa\u0142o\u015B\u0107 sesji terminala","settings.terminal.persistence_confirm_message":"Wy\u0142\u0105czenie trwa\u0142o\u015Bci sesji terminala zako\u0144czy bie\u017C\u0105c\u0105 sesj\u0119 terminala.","settings.terminal.persistence_confirm_title":"Wy\u0142\u0105cz trwa\u0142o\u015B\u0107 sesji terminala","settings.terminal.persistence_help":"Po w\u0142\u0105czeniu, sesje terminala b\u0119d\u0105 si\u0119 utrzymywa\u0107 podczas nawigacji i mo\u017Cna je wznowi\u0107 po powrocie do strony terminala (lub wid\u017Cetu strony statusu). Sesje terminala s\u0105 wsp\xF3\u0142dzielone mi\u0119dzy u\u017Cytkownikami administratora Homebridge UI.","settings.terminal.warning":"Ukryj ostrze\u017Cenie o zako\u0144czeniu terminala","settings.terminal.warning_help":"Po w\u0142\u0105czeniu okno dialogowe z ostrze\u017Ceniem nie zostanie wy\u015Bwietlone przed zako\u0144czeniem nietrwa\u0142ych sesji terminala.","settings.title_startup_options":"Opcje specjalne","settings.unpair_bridge.load_error":"Nie mo\u017Cna by\u0142o za\u0142adowa\u0107 sparowanych mostk\xF3w.","settings.warning_pwa":"This setting cannot be changed when accessing the UI from a PWA, please use a regular browser.","settings.warning_webroot":"Homebridge does not have write access to the served <code>index.html</code> file. To set up a webroot, please fix this issue and restart the Homebridge service.","setup.button_get_started":"Rozpocznij","setup.create_account":"Utw\xF3rz konto","setup.intro":"Je\u015Bli konfigurujesz po raz pierwszy lub po prostu chcesz zresetowa\u0107 has\u0142o do istniej\u0105cej konfiguracji Homebridge, wybierz <strong>Rozpocznij</strong>.","setup.welcome_to_homebridge":"Witaj w Homebridge",setup_wizard_complete:"Przywracanie zako\u0144czone!",setup_wizard_complete_title:"Gratulacje!",setup_wizard_completed:"Procedura zosta\u0142a zako\u0144czona, mo\u017Cesz zacz\u0105\u0107 u\u017Cywa\u0107 Homebridge.",setup_wizard_create_info:"Po skonfigurowaniu Homebridge mo\u017Cesz skonfigurowa\u0107 2FA na swoim koncie lub ca\u0142kowicie wy\u0142\u0105czy\u0107 potrzeb\u0119 uwierzytelniania.",setup_wizard_page_title:"Konfiguracja Homebridge",setup_wizard_restore:"Przywr\xF3\u0107 z backupu",setup_wizard_restoring:"Przywracanie backupu...",setup_wizard_starting:"Uruchamianie Homebridge...","status.code_scan":"Zeskanuj aby doda\u0107 do HomeKit","status.cpu.load":"Obci\u0105\u017Cenie","status.cpu.temp":"Temperatura","status.cpu.title_cpu":"CPU","status.credits.plugins_thanks":"Homebridge plugins are created by awesome developers in the Homebridge community.","status.credits.supporters":"Supporters","status.credits.title":"Tw\xF3rcy","status.credits.translations":"Translations","status.credits.translations_thanks":"Homebridge UI translations are provided by the community, with special thanks to:","status.homebridge.checking":"Sprawdzanie aktualizacji\u2026","status.homebridge.up_to_date":"Aktualne","status.memory.label_available":"Dost\u0119pna","status.memory.label_total":"Ca\u0142kowita","status.memory.title_memory":"Pami\u0119\u0107","status.network.received_per_second":"Odebrano","status.network.sent_per_second":"Wys\u0142ano","status.network.title_network":"Aktywno\u015B\u0107 sieci","status.readiness.node_no":"Twoja wersja Node.js nie jest kompatybilna z {{ app }}.","status.readiness.node_yes":"Twoja wersja Node.js jest kompatybilna z {{ app }}.","status.readiness.title":"{{ app }} gotowo\u015B\u0107","status.services.label_not_enabled":"Not Enabled","status.services.label_not_running":"Nieuruchomiony","status.services.label_running":"Uruchomiony","status.services.updates":"Aktualizacje","status.uptime.title_uptime":"Czas pracy","status.widget.accessories.choose_accessories":"Wybierz to akcesorium, aby wy\u015Bwietli\u0107 go jako wid\u017Cet.","status.widget.account_1":"Uk\u0142ad wid\u017Cetu jest wsp\xF3\u0142dzielony dla wszystkich u\u017Cytkownik\xF3w interfejsu u\u017Cytkownika Homebridge.","status.widget.account_2":"Administratorzy mog\u0105 modyfikowa\u0107 uk\u0142ad, podczas gdy u\u017Cytkownicy nieb\u0119d\u0105cy administratorami nie mog\u0105 wprowadza\u0107 zmian.","status.widget.add.label_pairing_code":"Kod parowania","status.widget.add.matter_pairing_code":"Matter Pairing Code","status.widget.bridge.restart_error":"Nie uda\u0142o si\u0119 ponownie uruchomi\u0107 mostu podrz\u0119dnego.","status.widget.clock":"Zegar","status.widget.clock_dateformat":"Format daty","status.widget.clock_timeformat":"Format czasu","status.widget.expand_docker":"Expand Docker Container Information","status.widget.font_size":"Rozmiar czcionki","status.widget.font_weight":"Grubo\u015B\u0107 czcionki","status.widget.hide_node_info":"Ukryj aktualizacje Node.js","status.widget.hide_npm":"Poka\u017C wersje npm","status.widget.hide_on_mobile":"Ukryj na urz\u0105dzeniach mobilnych","status.widget.homebridge_logs":"Homebridge log","status.widget.info":"Informacje o systemie","status.widget.info.arch":"Arch.","status.widget.info.config_path":"\u015Acie\u017Cka konfiguracji","status.widget.info.docker":"Docker","status.widget.info.docker_update_message":"Aktualizacja kontenera Docker wymaga r\u0119cznego wyci\u0105gni\u0119cia najnowszego obrazu i ponownego uruchomienia kontenera. Homebridge nie wykonuje tego automatycznie. Zapoznaj si\u0119 z dokumentacj\u0105 obrazu Dockera, aby uzyska\u0107 instrukcje dotycz\u0105ce aktualizacji.","status.widget.info.docker_update_title":"Aktualizacja kontenera Docker","status.widget.info.hostname":"Nazwa hosta","status.widget.info.ipv4":"IPv4","status.widget.info.ipv6":"IPv6","status.widget.info.no":"Nie","status.widget.info.node_major":"Node.js Major Versions","status.widget.info.node_next_no":"Your current architecture ({{ architecture }}) is 32-bit, which is not supported. You will need to migrate to a 64-bit system. Please use Node.js v22 instead, which we will be supporting until April 2027.","status.widget.info.node_next_yes":"Your current architecture ({{ architecture }}) supports Node.js v24, so you can upgrade when you are ready.","status.widget.info.node_unsupp":"Niewspierane","status.widget.info.node_unsupp_message":"U\u017Cywasz wersji Node.js kt\xF3ra nie jest oficjalnie wspierana przez Homebridge. Powiniene\u015B u\u017Cy\u0107 wersji oficjalnie wspieranej.","status.widget.info.node_update_message":"Homebridge wymaga zainstalowania Node.js w systemie do dzia\u0142ania. Od czasu do czasu trzeba zaktualizowa\u0107 Node.js, aby w\u0142\u0105czy\u0107 obs\u0142ug\u0119 nowych funkcji. Homebridge (i zweryfikowane wtyczki) obs\u0142uguj\u0105 wszystkie aktualne wersje Active i Maintenance LTS Node.js.","status.widget.info.node_update_message_2":"Dla u\u017Cytkownik\xF3w Docker/Synology, wersja Node.js jest zarz\u0105dzana przez obraz Docker lub pakiet Synology. Mo\u017Cesz ukry\u0107 informacje o aktualizacji Node.js za pomoc\u0105 ustawie\u0144 wid\u017Cetu.","status.widget.info.nodejs_path":"\u015Acie\u017Cka Node.js","status.widget.info.os":"System","status.widget.info.plugin_path":"\u015Acie\u017Cka wtyczki","status.widget.info.service_user":"U\u017Cytkownik","status.widget.info.storage_path":"\u015Acie\u017Cka zapisu","status.widget.info.synology_package":"Paczka Synology","status.widget.info.timezone":"Strefa czasowa","status.widget.info.yes":"Tak","status.widget.network.history_items":"Elementy historii","status.widget.network.items":"elementy","status.widget.network.network_interface":"Interfejs sieciowy","status.widget.network.none_selected":"U\u017Cywaj domy\u015Blne","status.widget.network.refresh_interval":"Cz\u0119stotliwo\u015B\u0107 od\u015Bwie\u017Cania","status.widget.network.seconds":"sekundy","status.widget.qr_paired":"Sparowany","status.widget.qr_unpaired":"Niesparowany","status.widget.show_hide":"Poka\u017C / ukryj wid\u017Cety","status.widget.title_manage_widget":"Ustawienia wid\u017Cetu","status.widget.update_node_no":"{{ pluginName }} nie jest kompatybilne z Node {{ nodeVersion }}.","status.widget.update_node_unknown":"Deweloper wtyczki {{ pluginName }} nie okre\u015Bli\u0142 kompatybilno\u015Bci z t\u0105 wersj\u0105 Node.","status.widget.update_node_yes":"{{ pluginName }} jest kompatybilne z Node {{ nodeVersion }}.","status.widget.uptime.label_process":"Procesy","status.widget.uptime.label_server":"Serwer","status.widget.weather.label_config_required_help":"Prosz\u0119 wybra\u0107 swoje miasto w ustawieniach wid\u017Cetu.","status.widget.weather.label_search_for_your_city":"Wyszukaj swoje miasto:","status.widget.weather.title_weather":"Pogoda","support.dev.api":"Homebridge API","support.dev.api_hap":"HAP-NodeJS API","support.dev.api_hap_sub":"HAP-NodeJS jest implementacj\u0105 HomeKit Accessory Server, jak okre\u015Blono w HomeKit Accessory Protocol (HAP), kt\xF3ry jest zdefiniowany przez Apple jako cz\u0119\u015B\u0107 HomeKit Framework.","support.dev.api_sub":"Homebridge to lekki serwer Node.js, kt\xF3ry mo\u017Cesz uruchomi\u0107 w sieci domowej by emulowa\u0107 HomeKit Accessory Protocol (HAP).","support.dev.item_swagger":"Dokumenty Swagger","support.dev.item_swagger_sub":"Homebridge REST API umo\u017Cliwia interakcj\u0119 z serwerem Homebridge za pomoc\u0105 \u017C\u0105da\u0144 HTTP.","support.dev.template":"Repozytorium szablonu wtyczki","support.dev.template_sub":"Szablon wtyczki Homebridge, kt\xF3ry mo\u017Ce by\u0107 u\u017Cywany jako podstawa aby pom\xF3c Ci rozpocz\u0105\u0107 tworzenie w\u0142asnej wtyczki.","support.dev.title":"Deweloper","support.dev.verified":"Zweryfikowane przez Homebridge","support.dev.verified_sub":"Program weryfikacji przez Homebridge pozwala tw\xF3rcom wtyczek na sprawdzenie i zatwierdzenie ich przez zesp\xF3\u0142 projektowy Homebridge.","support.links.discord":"Serwer Discord","support.links.discord_sub":"Do\u0142\u0105cz do czatu Homebridge Discord aby rozmawia\u0107 z innymi u\u017Cytkownikami i programistami.","support.links.documentation":"Dokumentacja","support.links.documentation_sub":"Dokumentacja Homebridge zawiera wiele informacji o tym jak zacz\u0105\u0107 korzysta\u0107 z Homebridge i typowych rozwi\u0105za\u0144 problem\xF3w.","support.links.issue":"Zg\u0142o\u015B b\u0142\u0105d / sugesti\u0119","support.links.issue_sub":"Je\u015Bli masz problem z Homebridge, otw\xF3rz nowy problem na GitHub. Ta opcja nie powinna by\u0107 u\u017Cywana w przypadku problem\xF3w z konkretnymi wtyczkami.","support.links.reddit":"Spo\u0142eczno\u015B\u0107 Reddit","support.links.reddit_sub":"Reddit Homebridge to \u015Bwietne miejsce aby podzieli\u0107 si\u0119 konfiguracj\u0105 Homebridge i poprosi\u0107 o pomoc.","support.links.title":"Przydatne linki","support.title":"Wsparcie","toast.no_auth":"Tylko administratorzy mog\u0105 uzyska\u0107 dost\u0119p do \u017C\u0105danej strony.","toast.title_error":"B\u0142\u0105d","toast.title_success":"Powodzenie","toast.title_warning":"Ostrze\u017Cenie","users.button_add_user":"Dodaj u\u017Cytkownika","users.label_admin_user":"Administrator","users.label_confirm_password":"Potwierd\u017A has\u0142o","users.label_full_name":"Pe\u0142na nazwa","users.label_new_password":"Nowe has\u0142o","users.label_password":"Has\u0142o","users.label_username":"Nazwa u\u017Cytkownika","users.setup_2fa":"Konfiguruj 2FA","users.setup_2fa_activate_error":"Wyst\u0105pi\u0142 b\u0142\u0105d podczas aktywacji 2FA.","users.setup_2fa_cannot_setup_2fa":"Nie mo\u017Cna skonfigurowa\u0107 2FA","users.setup_2fa_disable":"Wy\u0142\u0105cz 2FA","users.setup_2fa_disable_current_password":"Wprowad\u017A aktualne has\u0142o, aby wy\u0142\u0105czy\u0107 2FA:","users.setup_2fa_disable_success":"2FA zosta\u0142o wy\u0142\u0105czone.","users.setup_2fa_enable":"W\u0142\u0105cz 2FA","users.setup_2fa_enable_error":"Wyst\u0105pi\u0142 b\u0142\u0105d podczas konfigurowania 2FA.","users.setup_2fa_enabled_success":"2FA zosta\u0142o w\u0142\u0105czone.","users.setup_2fa_enter_code":"Wprowad\u017A kod z aplikacji uwierzytelniaj\u0105cej:","users.setup_2fa_scan_qr_code":"Zeskanuj kod QR w aplikacji uwierzytelniaj\u0105cej:","users.setup_2fa_scan_qr_manual":"Je\u015Bli nie mo\u017Cesz zeskanowa\u0107 kodu QR, mo\u017Cesz r\u0119cznie wprowadzi\u0107 nast\u0119puj\u0105cy tajny klucz:","users.setup_2fa_server_time_out":"Zegar serwera jest przesuni\u0119ty o {{ timeDiffError }} ms. Dopuszczalne maksimum to +/-5000 ms.","users.setup_2fa_warning":"Uwierzytelnianie dwusk\u0142adnikowe wymaga serwera Homebridge, aby mie\u0107 aktualny czas i dat\u0119 w trakcie logowania. Je\u015Bli tw\xF3j server nie b\u0119dzie w stanie utrzyma\u0107 poprawnego czasu, mo\u017Ce nie by\u0107 mo\u017Cliwe w\u0142\u0105czenie 2FA lub mo\u017Ce wyst\u0105pi\u0107 ryzyko zablokowania interfejsu Config UI X.","users.support.acc_1":"Istniej\u0105 dwa typy u\u017Cytkownik\xF3w, kt\xF3rzy mog\u0105 uzyska\u0107 dost\u0119p do interfejsu u\u017Cytkownika Homebridge: u\u017Cytkownicy administratora i osoby nieb\u0119d\u0105ce administratorem. Administratorzy mog\u0105 uzyska\u0107 dost\u0119p i kontrolowa\u0107 wszystko, co jest dost\u0119pne w interfejsie u\u017Cytkownika. U\u017Cytkownicy nieb\u0119d\u0105cy administratorami maj\u0105 widok tylko do odczytu nast\u0119puj\u0105cych stron:","users.support.acc_2":"2FA mo\u017Ce by\u0107 skonfigurowany tylko na kontach administratora i musi to zrobi\u0107 za po\u015Brednictwem strony u\u017Cytkownik\xF3w zalogowanych jako oni sami.","users.support.control":"mo\u017Ce by\u0107 kontrolowany","users.title_add_user":"Dodaj u\u017Cytkownika","users.title_edit_user":"Edytuj u\u017Cytkownika","users.title_users":"U\u017Cytkownicy","users.toast_added_new_user":"Dodaj u\u017Cytkownika","users.toast_failed_to_add_user":"B\u0142\u0105d dodawania u\u017Cytkownika","users.toast_failed_to_delete_user":"B\u0142\u0105d usuwania u\u017Cytkownika","users.toast_updated_user":"U\u017Cytkownik zaktualizowany","users.toast_user_deleted":"U\u017Cytkownik usuni\u0119ty"}});export{o as a};
@@ -1,19 +0,0 @@
1
- import{a as vt,b as $t,c as Ht,d as St}from"./chunk-BU5OWW3D.js";import{a as Ct}from"./chunk-CLZZPSYM.js";import{a as Ot}from"./chunk-H7F7H5MW.js";import{t as q,w as wt}from"./chunk-MIE7YXOK.js";import{a as Et}from"./chunk-OQMG62H7.js";import{b as B}from"./chunk-ZCGZM7LU.js";import{a as kt,b as xt}from"./chunk-2VGNMGIR.js";import{m as _t,n as yt,t as U}from"./chunk-VILWJRZL.js";import{c as pt,e as I}from"./chunk-QML5ZVO6.js";import"./chunk-ZGIZ2UDW.js";import{C as ut,D as bt,c as mt,e as ft,l as ht}from"./chunk-537Z3TZH.js";import{b as gt}from"./chunk-S6WYT7FX.js";import{C as O,D as H,F as N,I as F,h as ct}from"./chunk-MISBXZWW.js";import{Ab as S,Cb as rt,Db as at,Dc as r,Eb as lt,Ec as l,Fb as _,Fc as X,Gb as a,Hb as d,Ib as m,Rb as E,Xb as y,Za as o,Zb as p,aa as g,ea as st,ga as u,ha as b,hb as ot,ic as dt,jc as Y,kc as C,lc as M,mb as G,mc as V,n as nt,nb as R,sa as k,yb as $,yc as Q,zb as x}from"./chunk-VX4RXOTH.js";import{a as j,b as K,d as et,g as it,h as w}from"./chunk-B4AJQJMI.js";var Dt=it(Ht(),1);var Mt=it(Ot(),1);var Tt=(s,v)=>({"fa-trash":s,"fa-cog fa-spin":v});function Ft(s,v){s&1&&(a(0,"div",13),m(1,"i",20),d())}function Ut(s,v){if(s&1){let t=E();a(0,"li",9)(1,"span"),C(2),r(3,"date"),m(4,"br"),a(5,"span",21),C(6),r(7,"date"),d()(),a(8,"span",22)(9,"button",25),r(10,"translate"),r(11,"translate"),y("click",function(){let i=u(t).$implicit,n=p(2);return b(n.restore(i.id))}),m(12,"i",26),d(),a(13,"button",27),r(14,"translate"),r(15,"translate"),y("click",function(){let i=u(t).$implicit,n=p(2);return b(n.download(i.id))}),m(16,"i",28),d(),a(17,"button",23),r(18,"translate"),r(19,"translate"),y("click",function(){let i=u(t).$implicit,n=p(2);return b(n.delete(i.id))}),m(20,"i",24),d()()()}if(s&2){let t=v.$implicit,e=p(2);o(2),V(" ",X(3,16,t.timestamp,"mediumDate")),o(4),M(X(7,19,t.timestamp,"shortTime")),o(3),_("disabled",e.clicked()||e.deleting())("ngbTooltip",l(10,22,"config.restore.copy_to_editor"))("openDelay",150),$("aria-label",l(11,24,"config.restore.copy_to_editor")),o(4),_("disabled",e.clicked()||e.deleting())("ngbTooltip",l(14,26,"form.button_download"))("openDelay",150),$("aria-label",l(15,28,"form.button_download")),o(4),_("disabled",e.clicked()||e.deleting())("ngbTooltip",l(18,30,"form.button_delete"))("openDelay",150),$("aria-label",l(19,32,"form.button_delete")),o(3),Y(Q(34,Tt,t.id!==e.deleting(),t.id===e.deleting()))}}function qt(s,v){if(s&1){let t=E();a(0,"ul",14),at(1,Ut,21,37,"li",9,rt),a(3,"li",9)(4,"span"),C(5),r(6,"translate"),m(7,"br"),a(8,"span",21),C(9),r(10,"translate"),d()(),a(11,"span",22)(12,"button",23),r(13,"translate"),r(14,"translate"),y("click",function(){u(t);let i=p();return b(i.deleteAllBackups())}),m(15,"i",24),d()()()()}if(s&2){let t=p();o(),lt(t.backupList()),o(4),V(" ",l(6,8,"form.button_delete_all")),o(4),M(l(10,10,"common.labels.no_confirmation")),o(3),_("disabled",t.clicked()||t.deleting())("ngbTooltip",l(13,12,"form.button_delete_all"))("openDelay",150),$("aria-label",l(14,14,"form.button_delete")),o(3),Y(Q(16,Tt,t.deleting()!=="all",t.deleting()==="all"))}}var Bt=(()=>{class s{$activeModal=g(_t);$api=g(F);$router=g(I);$toastr=g(N);$translate=g(O);modalData=g(q);currentConfig=this.modalData.currentConfig;fromSettings=this.modalData.fromSettings??!1;loading=k(!0);backupList=k([]);clicked=k(!1);deleting=k(null);ngOnInit(){this.getConfigBackups()}getConfigBackups(){return w(this,null,function*(){try{let t=yield this.$api.get("/config-editor/backups");this.loading.set(!1),this.backupList.set(t)}catch(t){this.loading.set(!1),console.error(t),this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),this.dismissModal()}})}restore(t){return this.$activeModal.close(t)}download(t){return w(this,null,function*(){this.clicked.set(!0);try{let e=yield this.$api.get(`/config-editor/backups/${t}`),i=JSON.stringify(e,null,4),n=new Blob([i],{type:"application/json"}),f=`config-backup-${t}.json`;(0,Mt.saveAs)(n,f),this.clicked.set(!1)}catch(e){this.clicked.set(!1),this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}downloadCurrentConfig(){let t=`data:text/json;charset=utf-8,${encodeURIComponent(this.currentConfig)}`,e=document.createElement("a");e.setAttribute("href",t),e.setAttribute("download","config.json"),document.body.appendChild(e),e.click(),e.remove()}delete(t){return w(this,null,function*(){this.deleting.set(t);try{yield this.$api.delete(`/config-editor/backups/${t}`),yield this.getConfigBackups(),this.deleting.set(null)}catch(e){this.deleting.set(null),this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}deleteAllBackups(){return w(this,null,function*(){this.deleting.set("all");try{yield this.$api.delete("/config-editor/backups"),this.$toastr.success(this.$translate.instant("config.restore.toast_backups_deleted"),this.$translate.instant("toast.title_success")),this.backupList.set([]),this.deleting.set(null)}catch(t){this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),console.error(t),this.deleting.set(null)}})}dismissModal(){this.fromSettings&&this.$router.navigate(["/settings"]),this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=R({type:s,selectors:[["ng-component"]],decls:40,vars:31,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-history","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],[1,"btn","btn-primary","m-0","ms-3","py-1",3,"click","disabled"],[1,"fas","fa-arrow-right"],[1,"text-center","primary-text"],[1,"list-group","list-group-box","mt-3"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-end"],[1,"fa","fa-cog","fa-spin","mt-3",2,"font-size","75px"],[1,"grey-text","small"],[2,"display","flex","flex-wrap","nowrap"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-danger","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-3","py-1",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-history"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-download"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),C(3),r(4,"translate"),d(),a(5,"button",3),r(6,"translate"),y("click",function(){return i.dismissModal()}),d()(),a(7,"div",4)(8,"div",5),m(9,"i",6),d(),a(10,"ul",7)(11,"li"),C(12),r(13,"translate"),d(),a(14,"li"),C(15),r(16,"translate"),d()(),a(17,"ul",8)(18,"li",9)(19,"div")(20,"span"),C(21),r(22,"translate"),d(),m(23,"br"),a(24,"small",10),C(25),r(26,"translate"),d()(),a(27,"button",11),r(28,"translate"),y("click",function(){return i.downloadCurrentConfig()}),m(29,"i",12),d()()(),x(30,Ft,2,0,"div",13)(31,qt,16,19,"ul",14),d(),a(32,"div",15),m(33,"div",16),a(34,"div",17)(35,"button",18),r(36,"translate"),y("click",function(){return i.dismissModal()}),C(37),r(38,"translate"),d()(),m(39,"div",19),d()()),e&2&&(o(3),M(l(4,13,"config.restore.title")),o(2),_("disabled",i.clicked()||i.deleting()),$("aria-label",l(6,15,"form.button_close")),o(7),M(l(13,17,"config.restore.help_1")),o(3),M(l(16,19,"config.restore.help_2")),o(6),M(l(22,21,"form.button_download")),o(4),M(l(26,23,"config.restore.download")),o(2),_("disabled",i.clicked()||i.deleting()),$("aria-label",l(28,25,"backup.backup_now")),o(3),S(i.loading()?30:i.backupList().length?31:-1),o(5),_("disabled",i.clicked()||i.deleting()),$("aria-label",l(36,27,"form.button_close")),o(2),V(" ",l(38,29,"form.button_close")," "))},dependencies:[U,bt,ct,H],encapsulation:2})}return s})();function zt(s,v){if(s&1){let t=E();a(0,"button",13),r(1,"translate"),r(2,"translate"),y("click",function(){u(t);let i=p();return b(i.onCancelRestore())}),m(3,"i",14),d()}if(s&2){let t=p();_("disabled",t.saveInProgress())("openDelay",150)("ngbTooltip",l(1,4,"form.button_cancel")),$("aria-label",l(2,6,"form.button_cancel"))}}function Lt(s,v){if(s&1){let t=E();a(0,"button",15),r(1,"translate"),r(2,"translate"),y("click",function(){u(t);let i=p();return b(i.onRestore())}),m(3,"i",16),d()}s&2&&(_("openDelay",150)("ngbTooltip",l(1,3,"form.button_restore")),$("aria-label",l(2,5,"form.button_restore")))}function Jt(s,v){if(s&1){let t=E();a(0,"button",15),r(1,"translate"),r(2,"translate"),y("click",function(){u(t);let i=p();return b(i.toggleSideBySide())}),m(3,"i",17),d()}if(s&2){let t=p();_("openDelay",150)("ngbTooltip",l(1,7,t.renderSideBySide()?"config.restore.view_inline":"config.restore.view_side_by_side")),$("aria-label",l(2,9,t.renderSideBySide()?"config.restore.view_inline":"config.restore.view_side_by_side")),o(3),dt("fa-columns",!t.renderSideBySide())("fa-bars",t.renderSideBySide())}}function Wt(s,v){s&1&&m(0,"i",8)}function Kt(s,v){s&1&&m(0,"i",9)}function Gt(s,v){if(s&1){let t=E();a(0,"ngx-monaco-editor",18),y("onInit",function(i){u(t);let n=p();return b(n.onEditorInit(i))})("keydown.control.s",function(i){u(t);let n=p();return i.preventDefault(),b(n.onSave())})("keydown.meta.s",function(i){u(t);let n=p();return i.preventDefault(),b(n.onSave())}),d()}if(s&2){let t=p();_("options",t.editorOptions)("model",t.monacoEditorModel)}}function Yt(s,v){if(s&1){let t=E();a(0,"ngx-monaco-diff-editor",19),y("onInit",function(i){u(t);let n=p();return b(n.onInitDiffEditor(i))})("keydown.control.s",function(i){u(t);let n=p();return i.preventDefault(),b(n.onSave())})("keydown.meta.s",function(i){u(t);let n=p();return i.preventDefault(),b(n.onSave())}),d()}if(s&2){let t=p();_("options",t.editorOptions)("originalModel",t.diffOriginalModel)("modifiedModel",t.diffModifiedModel)}}function Qt(s,v){if(s&1){let t=E();a(0,"textarea",20),y("ngModelChange",function(i){u(t);let n=p();return b(n.homebridgeConfig.set(i))}),C(1," "),d()}if(s&2){let t=p();_("ngModel",t.homebridgeConfig())}}var De=(()=>{class s{injector=g(st);$api=g(F);$md=g(Ct);$modal=g(yt);$monacoEditor=g(Et);$renderer=g(ot);$route=g(pt);$router=g(I);$settings=g(gt);$toastr=g(N);$translate=g(O);editorDecorations=[];lastHeight;visualViewPortEventCallback;latestSavedConfig;childBridgesToRestart=[];hbPendingRestart=!1;isDebugModeEnabled=this.$settings.isFeatureEnabled("childBridgeDebugMode");isMatterSupported=this.$settings.isFeatureEnabled("matterSupport");homebridgeConfig=k("");originalConfig=k("");saveInProgress=k(!1);isMobile=k(!1);monacoEditor;editorOptions;monacoEditorModel;diffOriginalModel;diffModifiedModel;renderSideBySide=k(!1);constructor(){this.isMobile.set(!!this.$md.detect.mobile())}ngOnInit(){let t=this.$translate.instant("menu.config_json_editor");this.$settings.setPageTitle(t),this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",renderSideBySide:this.renderSideBySide(),renderIndicators:!0,ignoreTrimWhitespace:!1,glyphMargin:!0};let e=document.querySelector(".content");this.$renderer.setStyle(e,"height","100%"),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile()&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile()&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.$route.data.subscribe(n=>{this.homebridgeConfig.set(n.config),this.latestSavedConfig=JSON.parse(n.config),this.diffModifiedModel&&this.updateDiffModels()}),this.monacoEditorModel={value:"{}",language:"json",uri:window.monaco?window.monaco.Uri.parse("a://homebridge/config.json"):void 0},this.diffOriginalModel={code:"",language:"json"},this.diffModifiedModel={code:this.homebridgeConfig()||"{}",language:"json"},window.monaco?this.setMonacoEditorModel():this.waitForMonaco();let{action:i}=this.$router.parseUrl(this.$router.url).queryParams;if(i){switch(i){case"restore":{this.onRestore(!0);break}}this.$router.navigate([],{queryParams:{},replaceUrl:!0,queryParamsHandling:""})}}waitForMonaco(){return w(this,null,function*(){try{yield nt(this.$monacoEditor.readyEvent),this.setMonacoEditorModel()}catch(t){console.error("Failed to wait for monaco ready event:",t)}})}onEditorInit(t){window.editor=t,this.monacoEditor=t;let e=this.monacoEditor.getModel();e&&e.setValue(this.homebridgeConfig())}onInitDiffEditor(t){this.monacoEditor=t.getModifiedEditor(),this.updateDiffModels(),window.editor=t}updateDiffModels(){if(this.diffOriginalModel&&(this.diffOriginalModel.code=this.originalConfig()||""),this.diffModifiedModel&&(this.diffModifiedModel.code=this.homebridgeConfig()||"{}"),window.editor&&window.editor.getOriginalEditor){let t=window.editor.getOriginalEditor(),e=window.editor.getModifiedEditor();if(t&&e){let i=t.getModel(),n=e.getModel();i&&i.setValue(this.originalConfig()||""),n&&n.setValue(this.homebridgeConfig()||"{}")}}}onSave(){return w(this,null,function*(){if(!this.saveInProgress()){this.monacoEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[])),this.saveInProgress.set(!0);try{if(!this.isMobile()){yield this.monacoEditor.getAction("editor.action.formatDocument").run();let e=window.monaco.editor.getModelMarkers({owner:"json"});for(let i of e)if(i.message==="Duplicate object key"){this.saveInProgress.set(!1),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"));return}this.homebridgeConfig.set(this.monacoEditor.getModel().getValue())}let t=this.parseConfigFromEditor();this.homebridgeConfig.set(JSON.stringify(t,null,4)),typeof t.bridge!="object"?this.$toastr.error(this.$translate.instant("config.config_bridge_missing"),this.$translate.instant("toast.title_error")):/^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$/i.test(t.bridge.username)?t.accessories&&!Array.isArray(t.accessories)?this.$toastr.error(this.$translate.instant("config.config_accessory_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&!Array.isArray(t.platforms)?this.$toastr.error(this.$translate.instant("config.config_platform_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&Array.isArray(t.platforms)&&!this.validateSection(t.platforms,"platform")||t.accessories&&Array.isArray(t.accessories)&&!this.validateSection(t.accessories,"accessory")||t.plugins&&Array.isArray(t.plugins)&&!this.validatePlugins(t.plugins,"plugins")||t.disabledPlugins&&Array.isArray(t.disabledPlugins)&&!this.validatePlugins(t.disabledPlugins,"disabledPlugins")||(yield this.saveConfig(t),this.originalConfig.set("")):this.$toastr.error(this.$translate.instant("config.config_username_error"),this.$translate.instant("toast.title_error"))}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"))}this.saveInProgress.set(!1)}})}onRestore(t=!1){return w(this,null,function*(){let e=G([{provide:q,useValue:{currentConfig:this.homebridgeConfig(),fromSettings:t}}],this.injector),i=this.$modal.open(Bt,{size:"lg",backdrop:"static",injector:e});try{let n=yield i.result;try{this.originalConfig()||(this.originalConfig.set(this.homebridgeConfig()),this.updateDiffModels());let f=yield this.$api.get(`/config-editor/backups/${n}`);this.$toastr.info(this.$translate.instant("config.restore.confirm"),this.$translate.instant("config.title_backup_loaded")),this.homebridgeConfig.set(JSON.stringify(f,null,4)),this.updateDiffModels(),this.monacoEditor&&window.editor.modifiedEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[]),this.monacoEditor.executeEdits("beautifier",[{identifier:"delete",range:new monaco.Range(1,1,this.monacoEditor.getModel().getLineCount()+10,1),text:"",forceMoveMarkers:!0}]),this.monacoEditor.executeEdits("beautifier",[{identifier:"insert",range:new monaco.Range(1,1,1,1),text:this.homebridgeConfig(),forceMoveMarkers:!0}]))}catch(f){console.error(f);let h=f?.error?.message||this.$translate.instant("backup.load_error");this.$toastr.error(h,this.$translate.instant("toast.title_error"))}}catch{}})}onCancelRestore(){if(window.editor&&window.editor.dispose)try{window.editor.dispose(),window.editor=void 0}catch{}this.homebridgeConfig.set(this.originalConfig()),this.originalConfig.set(""),this.renderSideBySide()&&this.toggleSideBySide(),this.updateDiffModels(),this.onRestore()}toggleSideBySide(){this.renderSideBySide.set(!this.renderSideBySide()),this.editorOptions=K(j({},this.editorOptions),{renderSideBySide:this.renderSideBySide()})}ngOnDestroy(){let t=document.querySelector(".content");this.$renderer.removeStyle(t,"height"),window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.enableTouchMove());try{if(window.editor&&window.editor.dispose&&(window.editor.dispose(),window.editor=void 0),window.monaco){let e=window.monaco.Uri.parse("file:///original.json"),i=window.monaco.Uri.parse("file:///modified.json"),n=window.monaco.editor.getModel(e);n&&n.dispose();let f=window.monaco.editor.getModel(i);f&&f.dispose();let T=(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas||[]).filter(D=>D.uri!=="http://homebridge/config.json");window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({validate:!0,allowComments:!1,schemas:T})}this.monacoEditor&&this.monacoEditor.dispose()}catch{}}validateSection(t,e){for(let i of t){if(typeof i!="object"||i===null||Array.isArray(i))return this.$toastr.error(this.$translate.instant("config.error_blocks_objects",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(JSON.stringify(i)),!1;if(!(e in i))return this.$toastr.error(this.$translate.instant("config.error_blocks_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(JSON.stringify(i)),!1;if(typeof i[e]!="string")return this.$toastr.error(this.$translate.instant("config.error_string_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(JSON.stringify(i)),!1}return!0}validatePlugins(t,e){for(let i of t)if(typeof i!="string")return this.$toastr.error(this.$translate.instant("config.error_string_array",{key:e}),this.$translate.instant("toast.title_error")),!1;return!0}highlightOffendingArrayItem(t){this.monacoEditor&&(t=JSON.stringify(t,null,4).split(`
2
- `).map(e=>` ${e}`).join(`
3
- `),requestAnimationFrame(()=>{let e=this.monacoEditor.getModel().findMatches(t);if(e.length){let i=e[0].range,n=new monaco.Range(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn);this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[{range:n,options:{isWholeLine:!0,linesDecorationsClassName:"hb-monaco-editor-line-error"}}])}}))}setMonacoEditorModel(){if(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas.some(i=>i.uri==="http://homebridge/config.json"))return;let t=monaco.Uri.parse("a://homebridge/config.json"),e=St(this.$translate,{isDebugModeEnabled:this.isDebugModeEnabled,isMatterSupported:this.isMatterSupported});window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({allowComments:!1,validate:!0,schemas:[{uri:"http://homebridge/config.json",fileMatch:[t.toString()],schema:{type:"object",additionalProperties:!1,required:["bridge"],properties:{bridge:{type:"object",additionalProperties:!1,required:["name","username","port","pin"],properties:j({name:{type:"string",title:this.$translate.instant("settings.name"),description:`The Homebridge instance name.
4
- This should be unique if you are running multiple instances of Homebridge.`,default:"Homebridge"},username:{type:"string",title:this.$translate.instant("users.label_username"),description:`Homebridge username must be 6 pairs of colon-separated hexadecimal characters (A-F 0-9).
5
- You should change this pin if you need to re-pair your instance with HomeKit.
6
- Example: 0E:89:49:64:91:86.`,default:"0E:89:49:64:91:86",pattern:"^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$"},port:{type:"number",title:this.$translate.instant("settings.network.port_hb"),description:`The port Homebridge listens on.
7
- If running more than one instance of Homebridge on the same server make sure each instance is given a unique port.`,default:51173,minimum:1025,maximum:65534},pin:{type:"string",description:`The Homebridge instance pin.
8
- This is used when pairing Homebridge to HomeKit.
9
- Example: 630-27-655.`,default:"630-27-655",pattern:"^([0-9]{3}-[0-9]{2}-[0-9]{3})$"},manufacturer:{type:"string",title:this.$translate.instant("child_bridge.config.manufacturer"),description:"The bridge manufacturer to be displayed in HomeKit."},firmwareRevision:{type:"string",title:this.$translate.instant("child_bridge.config.firmware"),description:"The bridge firmware version to be displayed in HomeKit."},model:{type:"string",title:this.$translate.instant("child_bridge.config.model"),description:"The bridge model to be displayed in HomeKit."},advertiser:{type:"string",title:this.$translate.instant("settings.mdns_advertiser"),description:this.$translate.instant("settings.mdns_advertiser_help"),oneOf:[{title:"Avahi",enum:["avahi"]},{title:"Bonjour HAP",enum:["bonjour-hap"]},{title:"Ciao",enum:["ciao"]},{title:"Resolved",enum:["resolved"]}]},bind:{title:this.$translate.instant("settings.network.title_network_interfaces"),description:`A string or an array of strings with the name(s) of the network interface(s) Homebridge should bind to.
10
- Requires Homebridge v1.3 or later.`,type:["string","array"],items:{type:"string",description:this.$translate.instant("status.widget.network.network_interface")}}},this.isMatterSupported?{matter:{type:"object",additionalProperties:!1,title:this.$translate.instant("settings.matter.title"),description:"Matter-specific configuration for the main bridge.",properties:{port:{type:"number",title:this.$translate.instant("settings.matter.port"),description:this.$translate.instant("settings.matter.port_desc"),minimum:1025,maximum:65534}}}}:{}),default:{name:"Homebridge",username:"0E:89:49:64:91:86",port:51173,pin:"6302-7655"}},mdns:{type:"object",additionalProperties:!1,properties:{interface:{type:"string",title:this.$translate.instant("status.widget.network.network_interface"),description:`The interface or IP address of the interface you want Homebridge to listen on.
11
- This is useful if your server has multiple interfaces.
12
- Deprecated as of Homebridge v1.3.0 - use bridge.bind instead.`},legacyAdvertiser:{type:"boolean",title:"Legacy mDNS Advertiser",description:"Set to false to use the new mdns library, ciao."}},default:{legacyAdvertiser:!1}},ports:{type:"object",additionalProperties:!1,title:"Port Range",description:"The range of ports that should be used for external accessories like cameras and TVs.",required:["start","end"],properties:{start:{type:"number",default:52100,minimum:1025,maximum:65534,title:this.$translate.instant("settings.network.port_start"),description:this.$translate.instant("settings.network.port_start_desc")},end:{type:"number",default:52150,minimum:1025,maximum:65534,title:this.$translate.instant("settings.network.port_end"),description:this.$translate.instant("settings.network.port_end_desc")}},default:{start:52100,end:52150}},platforms:{type:"array",title:"Platforms",description:`Any plugin that exposes a platform should have its config entered in this array.
13
- Separate each plugin config block using a comma.`,items:{type:"object",required:["platform"],anyOf:[{type:"object",required:["platform"],title:this.$translate.instant("plugins.button_settings"),properties:{platform:{type:"string",title:"Platform Name",description:"This is used by Homebridge to identify which plugin this platform belongs to.",not:{enum:["config"]}},name:{type:"string",title:this.$translate.instant("accessories.name"),description:"The name of the platform."},_bridge:e}},{type:"object",additionalProperties:!1,properties:K(j({platform:{type:"string",title:"Platform Name",description:`Homebridge UI platform name must be set to "config".
14
- Do not change!`,const:"config"},name:{title:this.$translate.instant("accessories.name"),type:"string",default:"Homebridge UI",minLength:1,description:"The name of the Homebridge instance."},port:{title:this.$translate.instant("settings.network.port_ui"),type:"integer",default:8080,minimum:1025,maximum:65535,description:this.$translate.instant("settings.network.port_ui_desc")},auth:{type:"string",default:"form",title:this.$translate.instant("settings.security.auth"),description:this.$translate.instant("settings.security.auth_desc"),oneOf:[{title:"Require Authentication",enum:["form"]},{title:"None",enum:["none"]}]},theme:{title:this.$translate.instant("settings.display.theme"),description:"The theme used for the UI.",type:"string",default:"orange",oneOf:[{title:this.$translate.instant("settings.display.orange"),enum:["orange"]},{title:this.$translate.instant("settings.display.red"),enum:["red"]},{title:this.$translate.instant("settings.display.pink"),enum:["pink"]},{title:this.$translate.instant("settings.display.purple"),enum:["purple"]},{title:this.$translate.instant("settings.display.deep_purple"),enum:["deep-purple"]},{title:this.$translate.instant("settings.display.indigo"),enum:["indigo"]},{title:this.$translate.instant("settings.display.blue"),enum:["blue"]},{title:this.$translate.instant("settings.display.bluegrey"),enum:["blue-grey"]},{title:this.$translate.instant("settings.display.cyan"),enum:["cyan"]},{title:this.$translate.instant("settings.display.green"),enum:["green"]},{title:this.$translate.instant("settings.display.teal"),enum:["teal"]},{title:this.$translate.instant("settings.display.grey"),enum:["grey"]},{title:this.$translate.instant("settings.display.brown"),enum:["brown"]}]},lightingMode:{title:this.$translate.instant("settings.display.lighting_mode"),description:"The lighting mode used for the UI.",type:"string",default:"auto",oneOf:[{title:this.$translate.instant("accessories.control.auto"),enum:["auto"]},{title:this.$translate.instant("settings.display.light"),enum:["light"]},{title:this.$translate.instant("settings.display.dark"),enum:["dark"]}]},menuMode:{title:this.$translate.instant("settings.display.menu_mode"),description:"Modes for the UI side menu.",type:"string",default:"default",oneOf:[{title:this.$translate.instant("settings.display.menu_default"),enum:["default"]},{title:this.$translate.instant("settings.display.menu_freeze"),enum:["freeze"]}]},temp:{title:this.$translate.instant("settings.linux.temp"),type:"string",description:this.$translate.instant("settings.linux.temp_desc")},tempUnits:{title:this.$translate.instant("settings.display.temp_units"),description:"The units used to display the temperature.",type:"string",default:"c",oneOf:[{title:this.$translate.instant("settings.display.temp_units.c"),enum:["c"]},{title:this.$translate.instant("settings.display.temp_units.f"),enum:["f"]}]},lang:{title:this.$translate.instant("settings.display.lang"),type:"string",default:"auto",description:"The language used for the UI.",oneOf:[{title:this.$translate.instant("form.select.auto"),enum:["auto"]},{title:"Bulgarian (bg)",enum:["bg"]},{title:"Catalan (ca)",enum:["ca"]},{title:"Chinese - Simplified (zh-CN)",enum:["zh-CN"]},{title:"Chinese - Traditional (zh-TW)",enum:["zh-TW"]},{title:"Czech (cs)",enum:["cs"]},{title:"Dutch (nl)",enum:["nl"]},{title:"English (en)",enum:["en"]},{title:"Finnish (fi)",enum:["fi"]},{title:"French (fr)",enum:["fr"]},{title:"German (de)",enum:["de"]},{title:"Hebrew (he)",enum:["he"]},{title:"Hungarian (hu)",enum:["hu"]},{title:"Indonesian (id)",enum:["id"]},{title:"Italian (it)",enum:["it"]},{title:"Japanese (ja)",enum:["ja"]},{title:"Korean (ko)",enum:["ko"]},{title:"Macedonian (mk)",enum:["mk"]},{title:"Norwegian (no)",enum:["no"]},{title:"Polish (pl)",enum:["pl"]},{title:"Portuguese (Brazil)",enum:["pt-BR"]},{title:"Portuguese (Portugal)",enum:["pt"]},{title:"Russian (ru)",enum:["ru"]},{title:"Slovenian (sl)",enum:["sl"]},{title:"Spanish (es)",enum:["es"]},{title:"Swedish (sv)",enum:["sv"]},{title:"Thai (th)",enum:["th"]},{title:"Turkish (tr)",enum:["tr"]},{title:"Ukrainian (uk)",enum:["uk"]}]},wallpaper:{title:this.$translate.instant("settings.display.wallpaper"),description:"The full path to the .jpg file.",type:"string"},homebridgePackagePath:{title:this.$translate.instant("settings.network.hb_package"),type:"string",description:this.$translate.instant("settings.network.hb_package_desc")},host:{type:"string",pattern:"^[^{}/ :\\\\]+(?::\\d+)?$",title:this.$translate.instant("settings.network.host"),description:this.$translate.instant("settings.network.host_desc")},sessionTimeoutInactivityBased:{type:"boolean",title:this.$translate.instant("settings.startup.session_inactivity_based"),description:this.$translate.instant("settings.startup.session_inactivity_based_desc")},sessionTimeout:{type:"integer",minimum:600,maximum:864e5,title:this.$translate.instant("settings.startup.session"),description:this.$translate.instant("settings.startup.session_desc")},log:{type:"object",additionalProperties:!1,title:"Log Settings",description:"The log settings for the Homebridge UI.",properties:{maxSize:{type:"integer",title:this.$translate.instant("settings.terminal.log_max"),description:this.$translate.instant("settings.terminal.log_max_desc"),minimum:-1},truncateSize:{type:"integer",title:this.$translate.instant("settings.terminal.log_truncate"),description:this.$translate.instant("settings.terminal.log_truncate_desc"),minimum:0}}},ssl:{type:"object",additionalProperties:!1,title:this.$translate.instant("settings.security.https"),description:this.$translate.instant("settings.security.https_desc"),properties:{key:{type:"string",title:this.$translate.instant("settings.security.key"),description:"The full path to the private key file."},cert:{type:"string",title:this.$translate.instant("settings.security.cert"),description:"The full path to the certificate file."},pfx:{title:this.$translate.instant("settings.security.pfx"),type:"string",description:"The full path to the PKCS#12 certificate file."},passphrase:{title:this.$translate.instant("settings.security.pass"),type:"string",description:"The passphrase for the PKCS#12 certificate file."}}},accessoryControl:{title:"Accessory Control Setup",type:"object",additionalProperties:!1,description:"The accessory control settings for the Homebridge UI.",properties:{debug:{title:this.$translate.instant("settings.accessory.debug"),type:"boolean",description:this.$translate.instant("settings.accessory.debug_desc")},instanceBlacklist:{title:this.$translate.instant("settings.security.ui_control"),type:"array",description:this.$translate.instant("settings.security.ui_control_desc"),items:{title:this.$translate.instant("users.label_username"),type:"string",pattern:"^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$"}}}},linux:{title:"Linux Server Commands",type:"object",additionalProperties:!1,description:"The Linux server commands for the Homebridge UI.",properties:{shutdown:{title:this.$translate.instant("settings.linux.shutdown"),type:"string",description:this.$translate.instant("settings.linux.shutdown_desc")},restart:{title:this.$translate.instant("settings.linux.restart"),type:"string",description:this.$translate.instant("settings.linux.restart_desc")}}}},this.$settings.originalWebroot!==globalThis.webroot.errorCode?{webroot:{title:this.$translate.instant("settings.network.webroot"),type:"string",description:this.$translate.instant("settings.network.webroot_desc")}}:{}),{proxyHost:{title:this.$translate.instant("settings.network.proxy"),type:"string",pattern:"^[^{}/ :\\\\]+(?::\\d+)?$",description:this.$translate.instant("settings.network.proxy_desc")},scheduledBackupPath:{title:this.$translate.instant("backup.settings_path"),description:"The full path to where the service should save daily scheduled backups archives.",type:"string"},scheduledBackupDisable:{title:"Disable Scheduled Backups",type:"boolean",description:"When enabled, the Homebridge UI will not create daily scheduled backups."},scheduledRestartCron:{type:"string",title:this.$translate.instant("settings.startup.scheduled_restart"),description:this.$translate.instant("settings.startup.scheduled_restart_desc")},disableServerMetricsMonitoring:{title:"Disable Server Metrics Monitoring",type:"boolean",description:"When enabled, the Homebridge UI will not collect or report CPU or memory stats."},enableMdnsAdvertise:{title:this.$translate.instant("settings.network.mdns_advertise"),type:"boolean",description:this.$translate.instant("settings.network.mdns_advertise_help")},plugins:{title:this.$translate.instant("menu.label_plugins"),type:"object",additionalProperties:!1,description:"Settings surrounding plugins that are used by the Homebridge UI.",properties:{hideUpdatesFor:{type:"array",title:this.$translate.instant("config.hide_plugin_updates"),description:"A list of plugin names for which frontend update notifications will be hidden.",items:{type:"string",title:this.$translate.instant("accessories.plugin"),pattern:"^(?:@[\\w-]+(?:\\.[\\w-]+)*/)?homebridge-[\\w-]+$"}},alwaysShowBetas:{type:"boolean",title:this.$translate.instant("settings.display.show_betas"),description:"When enabled, beta releases will be shown as available for Homebridge, the UI and plugins."}}},bridges:{type:"array",title:this.$translate.instant("child_bridge.bridges"),description:"Settings surrounding bridges that are used by the Homebridge UI.",items:{type:"object",additionalProperties:!1,required:["username"],properties:{username:{type:"string",title:this.$translate.instant("users.label_username"),description:'The MAC address of the bridge (e.g., "0E:02:9A:9D:44:45").',pattern:"^[0-9A-F]{2}(?::[0-9A-F]{2}){5}$"},hideHapAlert:{type:"boolean",title:this.$translate.instant("config.hide_hap_pairing"),description:"Hide the HAP pairing alert for this bridge."},hideMatterAlert:{type:"boolean",title:this.$translate.instant("config.hide_matter_pairing"),description:"Hide the Matter pairing alert for this bridge."},scheduledRestartCron:{type:"string",title:this.$translate.instant("settings.startup.scheduled_restart"),description:this.$translate.instant("settings.startup.scheduled_restart_desc")}}}},terminal:{type:"object",additionalProperties:!1,title:"Terminal Settings",description:"The terminal settings for the Homebridge UI.",properties:{persistence:{title:this.$translate.instant("settings.terminal.persistence"),type:"boolean",description:this.$translate.instant("settings.terminal.persistence_help"),default:!1},hideWarning:{title:this.$translate.instant("settings.terminal.warning"),type:"boolean",description:this.$translate.instant("settings.terminal.warning_help"),default:!1},bufferSize:{title:this.$translate.instant("settings.terminal.buffer_size"),type:"integer",description:this.$translate.instant("settings.terminal.buffer_size_help"),default:5e4,minimum:0}}}})}]}},accessories:{type:"array",title:this.$translate.instant("menu.label_accessories"),description:`Any plugin that exposes an accessory should have its config entered in this array.
15
- Separate each plugin config block using a comma.`,items:{type:"object",required:["accessory","name"],title:this.$translate.instant("plugins.button_settings"),properties:{accessory:{type:"string",title:this.$translate.instant("child_bridge.config.accessory"),description:"This is used by Homebridge to identify which plugin this accessory belongs to."},name:{type:"string",title:this.$translate.instant("accessories.name"),description:"The name of the accessory."},_bridge:e}}},plugins:{type:"array",title:this.$translate.instant("menu.label_plugins"),description:`An array of plugins that should be selectively enabled.
16
- Remove this array to enable all plugins.`,items:{type:"string",title:this.$translate.instant("accessories.plugin"),description:`The full plugin npm package name.
17
- Example: homebridge-dummy.`},default:["homebridge-config-ui-x"]},disabledPlugins:{type:"array",description:`An array of plugins that should be disabled.
18
- Requires Homebridge v1.3 or later.`,items:{type:"string",title:this.$translate.instant("accessories.plugin"),description:`The full plugin npm package name.
19
- Example: homebridge-dummy.`},default:[]}}}}]}),this.monacoEditorModel.uri=monaco.Uri.parse("a://homebridge/config.json")}visualViewPortChanged(){this.lastHeight<window.visualViewport.height&&document.activeElement.blur(),window.visualViewport.height<window.innerHeight?(this.$md.enableTouchMove(),this.lastHeight=window.visualViewport.height):window.visualViewport.height===window.innerHeight&&(this.$md.disableTouchMove(),this.lastHeight=window.visualViewport.height)}saveConfig(t){return w(this,null,function*(){try{let e=yield this.$api.post("/config-editor",t);this.homebridgeConfig.set(JSON.stringify(e,null,4)),yield this.detectSavesChangesForRestart()}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}validateArraysEqual(t,e){if(t.length!==e.length)return!1;let i=[...t].sort(),n=[...e].sort();return i.every((f,h)=>f===n[h])}removePlatformsAndAccessories(t){let f=t,{accessories:e,platforms:i}=f;return et(f,["accessories","platforms"])}removeEmptyBridges(t){return t.filter(e=>e._bridge&&Object.keys(e._bridge).length>0).map(e=>e._bridge)}validateBridgesEqual(t,e){return t.length!==e.length?!1:t.every(i=>e.some(n=>B(i,n)))}detectConfigPlatformChanges(){try{let t=this.latestSavedConfig,e=JSON.parse(this.homebridgeConfig()),i=(t.platforms||[]).find(T=>T.platform==="config"),n=(e.platforms||[]).find(T=>T.platform==="config"),f=i?.webroot||"",h=n?.webroot||"";return f!==h&&(h=h?`/${h}`.replace(/\/+/g,"/").replace(/\/$/,""):"",h==="/"&&(h=""),this.$settings.setItem("webroot",h),n&&(h&&this.$settings.originalWebroot!==globalThis.webroot.errorCode?n.webroot=h:delete n.webroot,this.homebridgeConfig.set(JSON.stringify(e,null,4)),this.monacoEditor&&this.monacoEditor.getModel().setValue(this.homebridgeConfig()))),!i&&n||i&&!n?!0:!i&&!n?!1:!B(i,n)}catch(t){return console.error("Error detecting config platform changes:",t),!1}}detectSavesChangesForRestart(){return w(this,null,function*(){let t=yield this.determineRestartType();if(t==="full"){let e=this.detectConfigPlatformChanges();yield this.performFullRestart(e)}else t==="child"&&(yield this.performChildBridgeRestart());this.latestSavedConfig=JSON.parse(this.homebridgeConfig())})}determineRestartType(){return w(this,null,function*(){if(this.hbPendingRestart)return"full";let t=this.latestSavedConfig,e=JSON.stringify(t,null,4),i=JSON.parse(this.homebridgeConfig()),n=this.homebridgeConfig();if(e===n&&!this.childBridgesToRestart.length)return this.$toastr.info(this.$translate.instant("config.no_restart"),this.$translate.instant("config.config_saved")),"none";if(!this.validateArraysEqual(Object.keys(t),Object.keys(i))||[...i.platforms||[],...i.accessories||[]].every(c=>!c._bridge||!Object.keys(c._bridge).length))return"full";let h=this.removePlatformsAndAccessories(t),T=this.removePlatformsAndAccessories(i);if(!B(h,T))return"full";let D=t.platforms||[],z=i.platforms||[],At=D.map(c=>c.platform),Pt=z.map(c=>c.platform);if(!this.validateArraysEqual(At,Pt))return"full";let L=t.accessories||[],J=i.accessories||[],jt=L.map(c=>c.accessory),Rt=J.map(c=>c.accessory);if(!this.validateArraysEqual(jt,Rt)||!this.validateBridgesEqual(this.removeEmptyBridges(D),this.removeEmptyBridges(z))||!this.validateBridgesEqual(this.removeEmptyBridges(L),this.removeEmptyBridges(J)))return"full";let Z=D.filter(c=>!B(c,z.find(A=>A.platform===c.platform))),Vt=L.filter(c=>!B(c,J.find(A=>A.accessory===c.accessory))),tt=[...Z,...Vt];if(Z.some(c=>c.platform==="config")||tt.some(c=>c.platform==="config"?!1:!c._bridge||Object.keys(c._bridge).length===0))return"full";try{let c=yield this.$api.get("/status/homebridge/child-bridges");return tt.forEach(A=>{let It=A._bridge.username.toUpperCase(),P=c.find(({username:W})=>W===It);if(P)this.childBridgesToRestart.some(W=>W.username===P.username)||this.childBridgesToRestart.push({name:P.name,username:P.username,matterSerialNumber:P.matterSerialNumber});else return"full"}),"child"}catch(c){return console.error("Error fetching child bridges:",c),"full"}})}performChildBridgeRestart(){return w(this,null,function*(){if(!this.childBridgesToRestart.length){yield this.performFullRestart(!1);return}let t=G([{provide:wt,useValue:{bridges:this.childBridgesToRestart}}],this.injector),e=this.$modal.open($t,{size:"lg",backdrop:"static",injector:t});try{yield e.result,this.childBridgesToRestart=[]}catch{}})}performFullRestart(t){return w(this,null,function*(){t&&(yield this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}));let e=this.$modal.open(vt,{size:"lg",backdrop:"static"});try{yield e.result,this.hbPendingRestart=!1,this.childBridgesToRestart=[]}catch{this.hbPendingRestart=!0}})}parseConfigFromEditor(){try{return JSON.parse(this.homebridgeConfig())}catch{let e=Dt.default.parse(this.homebridgeConfig());return this.homebridgeConfig.set(JSON.stringify(e,null,4)),this.monacoEditor&&this.monacoEditor.getModel().setValue(this.homebridgeConfig()),e}}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=R({type:s,selectors:[["ng-component"]],decls:18,vars:19,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100"],[1,"row"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-danger","waves-effect","my-0","me-2",3,"disabled","openDelay","ngbTooltip"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"openDelay","ngbTooltip"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-0",3,"click","disabled","openDelay","ngbTooltip"],[1,"fas","fa-floppy-disk"],[1,"fas","fa-spinner","fa-pulse"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"options","model"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"options","originalModel","modifiedModel"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-3",3,"ngModel"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-danger","waves-effect","my-0","me-2",3,"click","disabled","openDelay","ngbTooltip"],[1,"fas","fa-times"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"click","openDelay","ngbTooltip"],[1,"fas","fa-history"],[1,"fas"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"onInit","keydown.control.s","keydown.meta.s","options","model"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"onInit","keydown.control.s","keydown.meta.s","options","originalModel","modifiedModel"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-3",3,"ngModelChange","ngModel"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3",3),C(4),r(5,"translate"),d()(),a(6,"div",4),x(7,zt,4,8,"button",5),x(8,Lt,4,7,"button",6),x(9,Jt,4,11,"button",6),a(10,"button",7),r(11,"translate"),r(12,"translate"),y("click",function(){return i.onSave()}),x(13,Wt,1,0,"i",8),x(14,Kt,1,0,"i",9),d()()(),x(15,Gt,1,2,"ngx-monaco-editor",10),x(16,Yt,1,3,"ngx-monaco-diff-editor",11),x(17,Qt,2,1,"textarea",12),d()),e&2&&(o(4),M(l(5,13,"menu.config_json_editor")),o(3),S(i.originalConfig()?7:-1),o(),S(i.originalConfig()?-1:8),o(),S(!i.isMobile()&&i.originalConfig()?9:-1),o(),_("disabled",i.saveInProgress())("openDelay",150)("ngbTooltip",l(11,15,"form.button_save")),$("aria-label",l(12,17,"form.button_save")),o(3),S(i.saveInProgress()?-1:13),o(),S(i.saveInProgress()?14:-1),o(),S(!i.isMobile()&&!i.originalConfig()?15:-1),o(),S(!i.isMobile()&&i.originalConfig()?16:-1),o(),S(i.isMobile()?17:-1))},dependencies:[U,kt,xt,ut,mt,ft,ht,H],encapsulation:2})}return s})();export{De as ConfigEditorComponent};