@camstack/addon-admin-ui 1.2.101 → 1.2.103

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 (111) hide show
  1. package/dist/assets/{AddLocationWizard-BaRS1vSp.js → AddLocationWizard-DaP6_A46.js} +1 -1
  2. package/dist/assets/{AddonCollectionPage-ZXOrokti.js → AddonCollectionPage-nyWYiJDc.js} +1 -1
  3. package/dist/assets/{Addons-Dye82TRM.js → Addons-CWWOTg0U.js} +1 -1
  4. package/dist/assets/{AdminTabs-Bj4P1GYJ.js → AdminTabs-Czxta2mh.js} +1 -1
  5. package/dist/assets/{AiProfiles-DOozhwy_.js → AiProfiles-C0pMBH8I.js} +1 -1
  6. package/dist/assets/{BrokerForm-C0-7inyn.js → BrokerForm-BxTezkNC.js} +1 -1
  7. package/dist/assets/{Build-BYQSYy7F.js → Build-BtEumGI6.js} +1 -1
  8. package/dist/assets/{Capabilities-BNdrW5yr.js → Capabilities-Br7NRp9v.js} +1 -1
  9. package/dist/assets/{CapabilityBadges-C1bMk_7C.js → CapabilityBadges-D0JFygyN.js} +1 -1
  10. package/dist/assets/{Cluster-B8SGnNL3.js → Cluster-CNkXokiW.js} +1 -1
  11. package/dist/assets/Data-Cpi8zlqS.js +1 -0
  12. package/dist/assets/{DetectionIntelligence-B5gdz0kC.js → DetectionIntelligence-D5457LWO.js} +1 -1
  13. package/dist/assets/{DeviceAggregateSection-CNVtSKGy.js → DeviceAggregateSection-CRGubEqf.js} +1 -1
  14. package/dist/assets/{DeviceDetail-fqRbXQOC.js → DeviceDetail-LFXiIuPr.js} +2 -2
  15. package/dist/assets/Devices-Bpwz1iYB.js +1 -0
  16. package/dist/assets/{EmbedPlayerPage-XGlgPJrB.js → EmbedPlayerPage-DGsEdaTJ.js} +1 -1
  17. package/dist/assets/Events-D6kMH49l.js +1 -0
  18. package/dist/assets/{FormBuilder-Bz6uPkMn.js → FormBuilder-ClH7B8PL.js} +1 -1
  19. package/dist/assets/Identity-ESyEdFYd.js +1 -0
  20. package/dist/assets/{IntegrationDetail-CDW7Eu_V.js → IntegrationDetail-BNWu0UHs.js} +1 -1
  21. package/dist/assets/{Integrations-BZJHGp5D.js → Integrations-C3RNkXgq.js} +1 -1
  22. package/dist/assets/{Integrations-_MxWMXKm.js → Integrations-DPNPWp1y.js} +1 -1
  23. package/dist/assets/Logs-Ds0WAXGY.js +1 -0
  24. package/dist/assets/{MotionZonesSettings-rdWjLFCA.js → MotionZonesSettings-B8AShyPC.js} +1 -1
  25. package/dist/assets/{MyAccess-De5E70Mx.js → MyAccess-CE0FuC4H.js} +1 -1
  26. package/dist/assets/{Network-3zKD5uww.js → Network-CC6Uh7my.js} +1 -1
  27. package/dist/assets/{NodeAddonsSettingsPanel-DPLZFO38.js → NodeAddonsSettingsPanel-Bg3Rx-rO.js} +1 -1
  28. package/dist/assets/NodeInferenceDevices-VZSQudL0.js +1 -0
  29. package/dist/assets/{Notifications-DRoRG3NR.js → Notifications-B_Iy7T49.js} +1 -1
  30. package/dist/assets/Pipeline-DUSuuX9E.js +1 -0
  31. package/dist/assets/{Plates-B2O3-4Uk.js → Plates-PiYyE435.js} +1 -1
  32. package/dist/assets/{PrivacyMaskSettings-Bpe_P906.js → PrivacyMaskSettings-Mkjx3Wsl.js} +1 -1
  33. package/dist/assets/{ProviderIcon-B3ZMGpmV.js → ProviderIcon--75xJaei.js} +1 -1
  34. package/dist/assets/Recordings-hKFEsNib.js +1 -0
  35. package/dist/assets/{ScanNetworkModal-C3KwS4Kk.js → ScanNetworkModal-BIf9KytP.js} +1 -1
  36. package/dist/assets/{SceneMonitorEditor-8n1BKUpz.js → SceneMonitorEditor-CjJXkyxy.js} +1 -1
  37. package/dist/assets/Scenes-CcpgVJtX.js +1 -0
  38. package/dist/assets/{Settings-rlvwMnze.js → Settings-DMs9Jd9K.js} +1 -1
  39. package/dist/assets/{Showroom-m8bxoJza.js → Showroom-B9VM3EL0.js} +1 -1
  40. package/dist/assets/{Terminal-BckLeEA9.js → Terminal-CF5uQHom.js} +3 -3
  41. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-Drdd-pqm.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-DK9B4R7J.js} +1 -1
  42. package/dist/assets/{bell-ring-CZRwj8zz.js → bell-ring-BVWtC7kI.js} +1 -1
  43. package/dist/assets/{boxes-BVJ0-dJL.js → boxes-Qmd6WnZ8.js} +1 -1
  44. package/dist/assets/{build-cluster-graph-DRLmLTvu.js → build-cluster-graph-Bahs_9Ho.js} +1 -1
  45. package/dist/assets/circle-check-big-hqSxF3X3.js +1 -0
  46. package/dist/assets/{circle-x-DmnziSMX.js → circle-x-C150uNWh.js} +1 -1
  47. package/dist/assets/clock-IndoSe_I.js +1 -0
  48. package/dist/assets/{copy-B89T25pr.js → copy-CVW_9pP2.js} +1 -1
  49. package/dist/assets/{debounced-invalidate-kEK1Gvwa.js → debounced-invalidate-C0yrXEMj.js} +1 -1
  50. package/dist/assets/{dist-LO0m0T5x.js → dist-CLok0S8J.js} +1 -1
  51. package/dist/assets/dist-EvnUhZFU.js +349 -0
  52. package/dist/assets/{download-BtY8Mzkb.js → download-DwUIiHtP.js} +1 -1
  53. package/dist/assets/{face-bbox-BZdruwK2.js → face-bbox-CCMxuWbS.js} +1 -1
  54. package/dist/assets/{hostInit-CTUWo00T.js → hostInit-Byx0xNZ7.js} +1 -1
  55. package/dist/assets/index-BlRpxCYM.css +2 -0
  56. package/dist/assets/index-C4ZumSL3.js +4 -0
  57. package/dist/assets/{key-round-CHpqcY9g.js → key-round-lB56F1Ys.js} +1 -1
  58. package/dist/assets/layers-CfdK3HVz.js +1 -0
  59. package/dist/assets/{mf-entry-bootstrap-0-e4f61b9c.js → mf-entry-bootstrap-0-aef68a91.js} +2 -2
  60. package/dist/assets/{pencil-WK7qCbrF.js → pencil-H6Yq51LI.js} +1 -1
  61. package/dist/assets/play-CrKYmytT.js +1 -0
  62. package/dist/assets/{player-overlays-B308H6FT.js → player-overlays-CCLUhzOH.js} +1 -1
  63. package/dist/assets/plus-BzDdzkqf.js +1 -0
  64. package/dist/assets/power-KFh7AhbJ.js +1 -0
  65. package/dist/assets/{radio-DwIVHryI.js → radio-D6LU--aB.js} +1 -1
  66. package/dist/assets/{refresh-cw-ZkEXcNt0.js → refresh-cw-BIuNSTm2.js} +1 -1
  67. package/dist/assets/remoteEntry-B8tBMyi_.js +1 -0
  68. package/dist/assets/rotate-ccw-zJuAaRRf.js +1 -0
  69. package/dist/assets/rotate-cw-CxErjJTg.js +1 -0
  70. package/dist/assets/{send-C4Hp2_AW.js → send-BUWXQB_L.js} +1 -1
  71. package/dist/assets/{server-jri2rxti.js → server-DYvYwfzj.js} +1 -1
  72. package/dist/assets/{shield-qKpb8V3c.js → shield-CBa-_zS9.js} +1 -1
  73. package/dist/assets/{square-check-big-CQJv5PGp.js → square-check-big-CoiR0MrH.js} +1 -1
  74. package/dist/assets/square-z88Fbhnc.js +1 -0
  75. package/dist/assets/{src-CRRfIT-p.js → src-Bnzp_4un.js} +17 -17
  76. package/dist/assets/src-CCyejt1U.js +349 -0
  77. package/dist/assets/{star-Dmj270Gi.js → star-DtLD0XCB.js} +1 -1
  78. package/dist/assets/{undo-2-CL7xnyv-.js → undo-2-BqRjog65.js} +1 -1
  79. package/dist/assets/{upload-DGmWKI7v.js → upload-BPwkcjcA.js} +1 -1
  80. package/dist/assets/{use-scenes-feed-DVrl7-Dv.js → use-scenes-feed-B3mLEcqD.js} +1 -1
  81. package/dist/assets/useEventInvalidation-DyLB_hSC.js +1 -0
  82. package/dist/assets/{video-DtcLus75.js → video-CGa96NMP.js} +1 -1
  83. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DqWJTfxv.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-C4zTZRyK.js} +2 -2
  84. package/dist/assets/{wifi-BrXEnGuA.js → wifi-BppHK6Ke.js} +1 -1
  85. package/dist/assets/{zap-LIk0nazc.js → zap-Bj48PE7R.js} +1 -1
  86. package/dist/index.html +6 -6
  87. package/dist/server/addon.js +573 -62
  88. package/package.json +1 -1
  89. package/dist/assets/Data-yTLKGui0.js +0 -1
  90. package/dist/assets/Devices-C4bHXSBW.js +0 -1
  91. package/dist/assets/Events-BM2eUsM0.js +0 -1
  92. package/dist/assets/Identity-pji2asLl.js +0 -1
  93. package/dist/assets/Logs-BgAQkk9B.js +0 -1
  94. package/dist/assets/NodeInferenceDevices-9ldJLPqw.js +0 -1
  95. package/dist/assets/Pipeline-Be00UqWq.js +0 -1
  96. package/dist/assets/Recordings-BXnzReYl.js +0 -1
  97. package/dist/assets/Scenes-Di16PVHl.js +0 -1
  98. package/dist/assets/circle-check-big-wJc69kBE.js +0 -1
  99. package/dist/assets/clock-CBE2-l0s.js +0 -1
  100. package/dist/assets/dist-BMaxdNnd.js +0 -349
  101. package/dist/assets/index-BJ67e-An.js +0 -4
  102. package/dist/assets/index-r1TtJ95R.css +0 -2
  103. package/dist/assets/play-BENacAEi.js +0 -1
  104. package/dist/assets/plus-BA0vJ9nq.js +0 -1
  105. package/dist/assets/power-CaTDknuZ.js +0 -1
  106. package/dist/assets/remoteEntry-DLHq_qsa.js +0 -1
  107. package/dist/assets/rotate-ccw-CCdRDDlj.js +0 -1
  108. package/dist/assets/rotate-cw-CpmhjVGV.js +0 -1
  109. package/dist/assets/square-BPeDflLw.js +0 -1
  110. package/dist/assets/src-CAbNcnj2.js +0 -349
  111. package/dist/assets/useEventInvalidation-BBS5Ap1s.js +0 -1
@@ -1,4 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Devices-C4bHXSBW.js","assets/src-CRRfIT-p.js","assets/__vite-browser-external-B6qJ4svC.js","assets/src-CAbNcnj2.js","assets/player-overlays-B308H6FT.js","assets/ProviderIcon-B3ZMGpmV.js","assets/radio-DwIVHryI.js","assets/server-jri2rxti.js","assets/wifi-BrXEnGuA.js","assets/AdminPage-CCD07UMs.js","assets/useEventInvalidation-BBS5Ap1s.js","assets/Integrations-_MxWMXKm.js","assets/plus-BA0vJ9nq.js","assets/ScanNetworkModal-C3KwS4Kk.js","assets/download-BtY8Mzkb.js","assets/FormBuilder-Bz6uPkMn.js","assets/refresh-cw-ZkEXcNt0.js","assets/BrokerForm-C0-7inyn.js","assets/StatusBadge-CeptlsPG.js","assets/useBodyScrollLock-BDocajQE.js","assets/IntegrationDetail-CDW7Eu_V.js","assets/circle-x-DmnziSMX.js","assets/rotate-cw-CpmhjVGV.js","assets/Pipeline-Be00UqWq.js","assets/build-cluster-graph-DRLmLTvu.js","assets/format-size-DIxKXxtj.js","assets/NodeInferenceDevices-9ldJLPqw.js","assets/zap-LIk0nazc.js","assets/video-DtcLus75.js","assets/pencil-WK7qCbrF.js","assets/square-check-big-CQJv5PGp.js","assets/square-BPeDflLw.js","assets/NodeAddonsSettingsPanel-DPLZFO38.js","assets/StableTabPanel-Dc954AQl.js","assets/SchemaTabBar-DC28nb9j.js","assets/DeviceDetail-fqRbXQOC.js","assets/CapabilityBadges-C1bMk_7C.js","assets/shield-qKpb8V3c.js","assets/bell-ring-CZRwj8zz.js","assets/boxes-BVJ0-dJL.js","assets/power-CaTDknuZ.js","assets/rotate-ccw-CCdRDDlj.js","assets/DeviceAggregateSection-CNVtSKGy.js","assets/Showroom-m8bxoJza.js","assets/EmbedPlayerPage-XGlgPJrB.js","assets/DetectionIntelligence-B5gdz0kC.js","assets/face-bbox-BZdruwK2.js","assets/authed-media-BPd_L9jr.js","assets/debounced-invalidate-kEK1Gvwa.js","assets/undo-2-CL7xnyv-.js","assets/Plates-B2O3-4Uk.js","assets/Events-BM2eUsM0.js","assets/clock-CBE2-l0s.js","assets/copy-B89T25pr.js","assets/star-Dmj270Gi.js","assets/AdminTabs-Bj4P1GYJ.js","assets/Scenes-Di16PVHl.js","assets/use-scenes-feed-DVrl7-Dv.js","assets/Recordings-BXnzReYl.js","assets/AddLocationWizard-BaRS1vSp.js","assets/Build-BYQSYy7F.js","assets/play-BENacAEi.js","assets/Addons-Dye82TRM.js","assets/upload-DGmWKI7v.js","assets/AiProfiles-DOozhwy_.js","assets/send-C4Hp2_AW.js","assets/MyAccess-De5E70Mx.js","assets/circle-check-big-wJc69kBE.js","assets/key-round-CHpqcY9g.js","assets/Logs-BgAQkk9B.js","assets/Identity-pji2asLl.js","assets/AddonCollectionPage-ZXOrokti.js","assets/addon-display-names-DvSEQty-.js","assets/Network-3zKD5uww.js","assets/Integrations-BZJHGp5D.js","assets/Data-yTLKGui0.js","assets/Settings-rlvwMnze.js","assets/Cluster-B8SGnNL3.js","assets/Capabilities-BNdrW5yr.js","assets/Terminal-BckLeEA9.js","assets/Terminal-kHJ-D0s7.css","assets/Notifications-DRoRG3NR.js"])))=>i.map(i=>d[i]);
2
- import{i as e,t}from"./rolldown-runtime-Cyuzqnbw.js";import"./virtual_mf-exposes___mfe_internal__admin_ui_host__remoteEntry-_hash_-DnnXQRkG.js";import{a as n,o as r}from"./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DqWJTfxv.js";import{t as i}from"./vite-preload-helper-zJ_50EbN.js";import{A as a,B as o,D as s,E as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,S as v,U as y,W as b,X as x,Y as S,Z as C,a as w,b as T,d as E,j as D,k as O,o as k,q as A,u as j,x as M,z as N}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-DhP-Lgiq.js";import{Y as ee,Z as P}from"./player-overlays-B308H6FT.js";import{$ as te,An as ne,Es as re,F as ie,Gn as ae,Hn as oe,Is as F,Kn as se,Ls as ce,Q as I,Qa as le,Ra as L,Un as ue,Vr as de,Wn as fe,Wt as pe,X as me,Yt as he,Z as ge,_t as _e,an as ve,ao as ye,ct as be,gt as xe,hn as Se,hs as Ce,in as we,ln as Te,m as Ee,mn as De,n as Oe,nn as ke,qa as Ae,rn as je,ro as Me,wn as Ne,xi as Pe}from"./src-CRRfIT-p.js";import{r as Fe,t as Ie}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare__react_mf_2_dom__loadShare__.js-BsvPG3BX.js";import{t as Le}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-DtoGixA1.js";import{o as Re,t as ze,xt as Be}from"./src-CAbNcnj2.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),_();var Ve=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,He=/^[\\/]{2}/;function Ue(e,t){return t+e.replace(/\\/g,`/`)}var We=`popstate`;function Ge(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function Ke(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return Ye(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:Xe(t)}return Qe(t,n,null,e)}function R(e,t){if(e===!1||e==null)throw Error(t)}function z(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function qe(){return Math.random().toString(36).substring(2,10)}function Je(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function Ye(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?Ze(t):t,state:n,key:t&&t.key||r||qe(),mask:i}}function Xe({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function Ze(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function Qe(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=Ge(e)?e:Ye(h.location,e,t);n&&n(r,e),l=u()+1;let d=Je(r,l),f=h.createHref(r.mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=Ge(e)?e:Ye(h.location,e,t);n&&n(r,e),l=u();let i=Je(r,l),d=h.createHref(r.mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return $e(i,e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(We,d),c=e,()=>{i.removeEventListener(We,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function $e(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),R(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:Xe(t);return i=i.replace(/ $/,`%20`),!n&&He.test(i)&&(i=r+i),new URL(i,r)}function et(e,t,n=`/`){return tt(e,t,n,!1)}function tt(e,t,n,r,i){let a=B((typeof t==`string`?Ze(t):t).pathname||`/`,n);if(a==null)return null;let o=i??rt(e),s=null,c=bt(a);for(let e=0;s==null&&e<o.length;++e)s=gt(o[e],c,r);return s}function nt(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function rt(e){let t=it(e);return ot(t),t}function it(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;R(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=V([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(R(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),it(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:mt(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=yt(e.relativePath,e.caseSensitive,t===u.length-1);return{...e,matcher:n,compiledParams:r}})})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of at(e.path))a(e,t,!0,n)}),t}function at(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=at(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function ot(e){e.sort((e,t)=>e.score===t.score?ht(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var st=/^:[\w-]+$/,ct=3,lt=2,ut=1,dt=10,ft=-2,pt=e=>e===`*`;function mt(e,t){let n=e.split(`/`),r=n.length;return n.some(pt)&&(r+=ft),t&&(r+=lt),n.filter(e=>!pt(e)).reduce((e,t)=>e+(st.test(t)?ct:t===``?ut:dt),r)}function ht(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function gt(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u={path:s.relativePath,caseSensitive:s.caseSensitive,end:c},d=s.matcher&&s.compiledParams?vt(u,l,s.matcher,s.compiledParams):_t(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=_t({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:V([a,d.pathname]),pathnameBase:kt(V([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=V([a,d.pathnameBase]))}return o}function _t(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=yt(e.path,e.caseSensitive,e.end);return vt(e,t,n,r)}function vt(e,t,n,r){let i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,`$1`),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function yt(e,t=!1,n=!0){z(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function bt(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return z(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function B(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function xt(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?Ze(e):e,a;return n?(n=Dt(n),a=n.startsWith(`/`)?St(n.substring(1),`/`):St(n,t)):a=t,{pathname:a,search:At(r),hash:jt(i)}}function St(e,t){let n=Ot(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function Ct(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function wt(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function Tt(e){let t=wt(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function Et(e,t,n,r=!1){let i;typeof e==`string`?i=Ze(e):(i={...e},R(!i.pathname||!i.pathname.includes(`?`),Ct(`?`,`pathname`,`search`,i)),R(!i.pathname||!i.pathname.includes(`#`),Ct(`#`,`pathname`,`hash`,i)),R(!i.search||!i.search.includes(`#`),Ct(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=xt(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var Dt=e=>e.replace(/[\\/]{2,}/g,`/`),V=e=>Dt(e.join(`/`)),Ot=e=>e.replace(/\/+$/,``),kt=e=>Ot(e).replace(/^\/*/,`/`),At=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,jt=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,Mt=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function Nt(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function Pt(e){return V(e.map(e=>e.route.path).filter(Boolean))||`/`}var Ft=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function It(e,t){let n=e;if(typeof n!=`string`||!Ve.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(Ft)try{let e=new URL(window.location.href),r=He.test(n)?new URL(Ue(n,e.protocol)):new URL(n),a=B(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{z(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var Lt=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(Lt);var Rt=[`GET`,...Lt];new Set(Rt);var zt=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function Bt(e){try{return zt.includes(new URL(e).protocol)}catch{return!1}}var Vt=s(null);Vt.displayName=`DataRouter`;var Ht=s(null);Ht.displayName=`DataRouterState`;var Ut=s(!1);function Wt(){return f(Ut)}var Gt=s({isTransitioning:!1});Gt.displayName=`ViewTransition`;var Kt=s(new Map);Kt.displayName=`Fetchers`;var qt=s(null);qt.displayName=`Await`;var H=s(null);H.displayName=`Navigation`;var Jt=s(null);Jt.displayName=`Location`;var U=s({outlet:null,matches:[],isDataRoute:!1});U.displayName=`Route`;var Yt=s(null);Yt.displayName=`RouteError`;var Xt=`REACT_ROUTER_ERROR`,Zt=`REDIRECT`,Qt=`ROUTE_ERROR_RESPONSE`;function $t(e){if(e.startsWith(`${Xt}:${Zt}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function en(e){if(e.startsWith(`${Xt}:${Qt}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new Mt(t.status,t.statusText,t.data)}catch{}}function tn(e,{relative:t}={}){R(nn(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=f(H),{hash:i,pathname:a,search:o}=un(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:V([n,a])),r.createHref({pathname:s,search:o,hash:i})}function nn(){return f(Jt)!=null}function W(){return R(nn(),`useLocation() may be used only in the context of a <Router> component.`),f(Jt).location}var rn=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function an(e){f(H).static||y(e)}function G(){let{isDataRoute:e}=f(U);return e?kn():on()}function on(){R(nn(),`useNavigate() may be used only in the context of a <Router> component.`);let e=f(Vt),{basename:t,navigator:n}=f(H),{matches:r}=f(U),{pathname:i}=W(),a=JSON.stringify(Tt(r)),o=d(!1);return an(()=>{o.current=!0}),l((r,s={})=>{if(z(o.current,rn),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=Et(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:V([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}var sn=s(null);function cn(e){let t=f(U).outlet;return b(()=>t&&h(sn.Provider,{value:e},t),[t,e])}function ln(){let{matches:e}=f(U);return e[e.length-1]?.params??{}}function un(e,{relative:t}={}){let{matches:n}=f(U),{pathname:r}=W(),i=JSON.stringify(Tt(n));return b(()=>Et(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function dn(e,t){return fn(e,t)}function fn(e,t,n){R(nn(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=f(H),{matches:i}=f(U),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;jn(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${s}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
3
-
4
- Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=W(),d;if(t){let e=typeof t==`string`?Ze(t):t;R(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let p=d.pathname||`/`,m=p;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);m=`/`+p.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let g=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):et(e,{pathname:m});z(l||g!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),z(g==null||g[g.length-1].route.element!==void 0||g[g.length-1].route.Component!==void 0||g[g.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let _=yn(g&&g.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:V([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:V([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&_?h(Jt.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},_):_}function pn(){let e=On(),t=Nt(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},s=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),s=h(o,null,h(`p`,null,`💿 Hey developer 👋`),h(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,h(`code`,{style:a},`ErrorBoundary`),` or`,` `,h(`code`,{style:a},`errorElement`),` prop on your route.`)),h(o,null,h(`h2`,null,`Unexpected Application Error!`),h(`h3`,{style:{fontStyle:`italic`}},t),n?h(`pre`,{style:i},n):null,s)}var mn=h(pn,null),hn=class extends m{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=en(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:h(U.Provider,{value:this.props.routeContext},h(Yt.Provider,{value:e,children:this.props.component}));return this.context?h(_n,{error:e},t):t}};hn.contextType=Ut;var gn=new WeakMap;function _n({children:e,error:t}){let{basename:n}=f(H);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=$t(t.digest);if(e){let r=gn.get(t);if(r)throw r;let i=It(e.location,n),a=i.absoluteURL||i.to;if(Bt(a))throw Error(`Invalid redirect location`);if(Ft&&!gn.get(t))if(i.isExternal||e.reloadDocument)window.location.href=a;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw gn.set(t,n),n}return h(`meta`,{httpEquiv:`refresh`,content:`0;url=${a}`})}}return e}function vn({routeContext:e,match:t,children:n}){let r=f(Vt);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),h(U.Provider,{value:e},n)}function yn(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);R(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:a}=r,c=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!a||a[t.route.id]===void 0);if(t.route.lazy||c){n.isStatic&&(o=!0),i=s>=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},pattern:Pt(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||mn,o&&(s<0&&c===0?(jn(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),g=()=>{let t;return t=u?f:d?p:n.route.Component?h(n.route.Component,null):n.route.element?n.route.element:e,h(vn,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?h(hn,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:g(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):g()},null)}function bn(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function xn(e){let t=f(Vt);return R(t,bn(e)),t}function Sn(e){let t=f(Ht);return R(t,bn(e)),t}function Cn(e){let t=f(U);return R(t,bn(e)),t}function wn(e){let t=Cn(e),n=t.matches[t.matches.length-1];return R(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Tn(){return wn(`useRouteId`)}function En(){let e=Sn(`useNavigation`);return b(()=>{let{matches:t,historyAction:n,...r}=e.navigation;return r},[e.navigation])}function Dn(){let{matches:e,loaderData:t}=Sn(`useMatches`);return b(()=>e.map(e=>nt(e,t)),[e,t])}function On(){let e=f(Yt),t=Sn(`useRouteError`),n=wn(`useRouteError`);return e===void 0?t.errors?.[n]:e}function kn(){let{router:e}=xn(`useNavigate`),t=wn(`useNavigate`),n=d(!1);return an(()=>{n.current=!0}),l(async(r,i={})=>{z(n.current,rn),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var An={};function jn(e,t,n){!t&&!An[e]&&(An[e]=!0,z(!1,n))}p(Mn);function Mn({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return fn(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function K({to:e,replace:t,state:n,relative:r}){R(nn(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:i}=f(H);z(!i,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:a}=f(U),{pathname:o}=W(),s=G(),c=Et(e,Tt(a),o,r===`path`),l=JSON.stringify(c);return N(()=>{s(JSON.parse(l),{replace:t,state:n,relative:r})},[s,l,r,t,n]),null}function Nn(e){return cn(e.context)}function q(e){R(!1,`A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`)}function Pn({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){R(!nn(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=b(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=Ze(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,mask:m}=n,g=b(()=>{let e=B(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return z(g!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),g==null?null:h(H.Provider,{value:c},h(Jt.Provider,{children:t,value:g}))}function Fn({children:e,location:t}){return dn(In(e),t)}function In(e,t=[]){let n=[];return c.forEach(e,(e,r)=>{if(!a(e))return;let i=[...t,r];if(e.type===o){n.push.apply(n,In(e.props.children,i));return}R(e.type===q,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),R(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let s={id:e.props.id||i.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(s.children=In(e.props.children,i)),n.push(s)}),n}var Ln=`get`,Rn=`application/x-www-form-urlencoded`;function zn(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function Bn(e){return zn(e)&&e.tagName.toLowerCase()===`button`}function Vn(e){return zn(e)&&e.tagName.toLowerCase()===`form`}function Hn(e){return zn(e)&&e.tagName.toLowerCase()===`input`}function Un(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Wn(e,t){return e.button===0&&(!t||t===`_self`)&&!Un(e)}function Gn(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function Kn(e,t){let n=Gn(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var qn=null;function Jn(){if(qn===null)try{new FormData(document.createElement(`form`),0),qn=!1}catch{qn=!0}return qn}var Yn=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Xn(e){return e!=null&&!Yn.has(e)?(z(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Rn}"`),null):e}function Zn(e,t){let n,r,i,a,o;if(Vn(e)){let o=e.getAttribute(`action`);r=o?B(o,t):null,n=e.getAttribute(`method`)||Ln,i=Xn(e.getAttribute(`enctype`))||Rn,a=new FormData(e)}else if(Bn(e)||Hn(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?B(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||Ln,i=Xn(e.getAttribute(`formenctype`))||Xn(o.getAttribute(`enctype`))||Rn,a=new FormData(o,e),!Jn()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(zn(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=Ln,r=null,i=Rn,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var Qn={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},$n=/[&><\u2028\u2029]/g;function er(e){return e.replace($n,e=>Qn[e])}function tr(e,t){if(e===!1||e==null)throw Error(t)}function nr(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&B(i.pathname,t)===`/`?i.pathname=`${Ot(t)}/_root.${r}`:i.pathname=`${Ot(i.pathname)}.${r}`,i}async function rr(e,t){if(e.id in t)return t[e.id];try{let n=await i(()=>import(e.module),[]);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function ir(e){return e!=null&&typeof e.page==`string`}function ar(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function or(e,t,n){return dr((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await rr(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(ar).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function sr(e,t,n,r,i,a){let o=(e,t)=>n[t]?e.route.id!==n[t].route.id:!0,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function cr(e,t,{includeHydrateFallback:n}={}){return lr(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function lr(e){return[...new Set(e)]}function ur(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function dr(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!ir(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(ur(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function fr(){let e=f(Vt);return tr(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function pr(){let e=f(Ht);return tr(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var mr=s(void 0);mr.displayName=`FrameworkContext`;function hr(){let e=f(mr);return tr(e,`You must render this element inside a <HydratedRouter> element`),e}function gr(e,t){let n=f(mr),[r,i]=A(!1),[a,o]=A(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:p}=t,m=d(null);N(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return m.current&&e.observe(m.current),()=>{e.disconnect()}}},[e]),N(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let h=()=>{i(!0)},g=()=>{i(!1),o(!1)};return n?e===`intent`?[a,m,{onFocus:_r(s,h),onBlur:_r(c,g),onMouseEnter:_r(l,h),onMouseLeave:_r(u,g),onTouchStart:_r(p,h)}]:[a,m,{}]:[!1,m,{}]}function _r(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function vr({page:e,...t}){let n=Wt(),{nonce:r}=hr(),{router:i}=fr(),a=b(()=>et(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),h(n?br:xr,{page:e,matches:a,...t})):null}function yr(e){let{manifest:t,routeModules:n}=hr(),[r,i]=A([]);return N(()=>{let r=!1;return or(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function br({page:e,matches:t,...n}){let r=W(),{future:i}=hr(),{basename:a}=fr();return h(o,null,b(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=nr(e,a,i.v8_trailingSlashAwareDataRequests,`rsc`),o=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?o=!0:s.push(e.route.id);return o&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[a,i.v8_trailingSlashAwareDataRequests,e,r,t]).map(e=>h(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function xr({page:e,matches:t,...n}){let r=W(),{future:i,manifest:a,routeModules:s}=hr(),{basename:c}=fr(),{loaderData:l,matches:u}=pr(),d=b(()=>sr(e,t,u,a,r,`data`),[e,t,u,a,r]),f=b(()=>sr(e,t,u,a,r,`assets`),[e,t,u,a,r]),p=b(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,o=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];!t||!t.hasLoader||(!d.some(t=>t.route.id===e.route.id)&&e.route.id in l&&s[e.route.id]?.shouldRevalidate||t.hasClientLoader?o=!0:n.add(e.route.id))}),n.size===0)return[];let u=nr(e,c,i.v8_trailingSlashAwareDataRequests,`data`);return o&&n.size>0&&u.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[u.pathname+u.search]},[c,i.v8_trailingSlashAwareDataRequests,l,r,a,d,t,e,s]),m=b(()=>cr(f,a),[f,a]),g=yr(f);return h(o,null,p.map(e=>h(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),m.map(e=>h(`link`,{key:e,rel:`modulepreload`,href:e,...n})),g.map(({key:e,link:t})=>h(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Sr(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}var Cr=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{Cr&&(window.__reactRouterVersion=`7.18.0`)}catch{}function wr({basename:e,children:t,useTransitions:n,window:r}){let i=d();i.current??=Ke({window:r,v5Compat:!0});let a=i.current,[o,s]=A({action:a.action,location:a.location}),c=l(e=>{n===!1?s(e):g(()=>s(e))},[n]);return y(()=>a.listen(c),[a,c]),h(Pn,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}function Tr({basename:e,children:t,history:n,useTransitions:r}){let[i,a]=A({action:n.action,location:n.location}),o=l(e=>{r===!1?a(e):g(()=>a(e))},[r]);return y(()=>n.listen(o),[n,o]),h(Pn,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:n,useTransitions:r})}Tr.displayName=`unstable_HistoryRouter`;var Er=O(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,mask:s,state:c,target:l,to:u,preventScrollReset:d,viewTransition:p,defaultShouldRevalidate:m,...g},_){let{basename:v,navigator:y,useTransitions:b}=f(H),x=typeof u==`string`&&Ve.test(u),S=It(u,v);u=S.to;let C=tn(u,{relative:r}),w=W(),T=null;if(s){let e=Et(s,[],w.mask?w.mask.pathname:`/`,!0);v!==`/`&&(e.pathname=e.pathname===`/`?v:V([v,e.pathname])),T=y.createHref(e)}let[E,D,O]=gr(n,g),k=Nr(u,{replace:a,mask:s,state:c,target:l,preventScrollReset:d,relative:r,viewTransition:p,defaultShouldRevalidate:m,useTransitions:b});function A(t){e&&e(t),t.defaultPrevented||k(t)}let j=!(S.isExternal||i),M=h(`a`,{...g,...O,href:(j?T:void 0)||S.absoluteURL||C,onClick:j?A:e,ref:Sr(_,D),target:l,"data-discover":!x&&t===`render`?`true`:void 0});return E&&!x?h(o,null,M,h(vr,{page:C})):M});Er.displayName=`Link`;var Dr=O(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:s,...c},l){let u=un(a,{relative:c.relative}),d=W(),p=f(Ht),{navigator:m,basename:g}=f(H),_=p!=null&&Wr(u)&&o===!0,v=m.encodeLocation?m.encodeLocation(u).pathname:u.pathname,y=d.pathname,b=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;t||(y=y.toLowerCase(),b=b?b.toLowerCase():null,v=v.toLowerCase()),b&&g&&(b=B(b,g)||b);let x=v!==`/`&&v.endsWith(`/`)?v.length-1:v.length,S=y===v||!r&&y.startsWith(v)&&y.charAt(x)===`/`,C=b!=null&&(b===v||!r&&b.startsWith(v)&&b.charAt(v.length)===`/`),w={isActive:S,isPending:C,isTransitioning:_},T=S?e:void 0,E;E=typeof n==`function`?n(w):[n,S?`active`:null,C?`pending`:null,_?`transitioning`:null].filter(Boolean).join(` `);let D=typeof i==`function`?i(w):i;return h(Er,{...c,"aria-current":T,className:E,ref:l,style:D,to:a,viewTransition:o},typeof s==`function`?s(w):s)});Dr.displayName=`NavLink`;var Or=O(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=Ln,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:p,...m},_)=>{let{useTransitions:v}=f(H),y=Lr(),b=Rr(s,{relative:l}),x=o.toLowerCase()===`get`?`get`:`post`,S=typeof s==`string`&&Ve.test(s);return h(`form`,{ref:_,method:x,action:b,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,f=()=>y(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:p});v&&n!==!1?g(()=>f()):f()},...m,"data-discover":!S&&e===`render`?`true`:void 0})});Or.displayName=`Form`;function kr({getKey:e,storageKey:t,...n}){let r=f(mr),{basename:i}=f(H),a=W(),o=Dn();Hr({getKey:e,storageKey:t});let s=b(()=>{if(!r||!e)return null;let t=Vr(a,o,i,e);return t===a.key?null:t},[]);if(!r||r.isSpaMode)return null;let c=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return n.nonce==null&&r?.nonce&&(n.nonce=r.nonce),h(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${c})(${er(JSON.stringify(t||zr))}, ${er(JSON.stringify(s))})`}})}kr.displayName=`ScrollRestoration`;function Ar(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function jr(e){let t=f(Vt);return R(t,Ar(e)),t}function Mr(e){let t=f(Ht);return R(t,Ar(e)),t}function Nr(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:u}={}){let d=G(),f=W(),p=un(e,{relative:o});return l(l=>{if(Wn(l,t)){l.preventDefault();let t=n===void 0?Xe(f)===Xe(p):n,m=()=>d(e,{replace:t,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c});u?g(()=>m()):m()}},[f,d,p,n,r,i,t,e,a,o,s,c,u])}function Pr(e){z(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=d(Gn(e)),n=d(!1),r=W(),i=b(()=>Kn(r.search,n.current?null:t.current),[r.search]),a=G();return[i,l((e,t)=>{let r=Gn(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var Fr=0,Ir=()=>`__${String(++Fr)}__`;function Lr(){let{router:e}=jr(`useSubmit`),{basename:t}=f(H),n=Tn(),r=e.fetch,i=e.navigate;return l(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Zn(e,t);a.navigate===!1?await r(a.fetcherKey||Ir(),n,a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync}):await i(a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function Rr(e,{relative:t}={}){let{basename:n}=f(H),r=f(U);R(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...un(e||`.`,{relative:t})},o=W();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:V([n,a.pathname])),Xe(a)}var zr=`react-router-scroll-positions`,Br={};function Vr(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:B(e.pathname,n)||e.pathname},t)),i??=e.key,i}function Hr({getKey:e,storageKey:t}={}){let{router:n}=jr(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:i}=Mr(`useScrollRestoration`),{basename:a}=f(H),o=W(),s=Dn(),c=En();N(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),Ur(l(()=>{if(c.state===`idle`){let t=Vr(o,s,a,e);Br[t]=window.scrollY}try{sessionStorage.setItem(t||zr,JSON.stringify(Br))}catch(e){z(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[c.state,e,a,o,s,t])),typeof document<`u`&&(y(()=>{try{let e=sessionStorage.getItem(t||zr);e&&(Br=JSON.parse(e))}catch{}},[t]),y(()=>{let t=n?.enableScrollRestoration(Br,()=>window.scrollY,e?(t,n)=>Vr(t,n,a,e):void 0);return()=>t&&t()},[n,a,e]),y(()=>{if(r!==!1){if(typeof r==`number`){window.scrollTo(0,r);return}try{if(o.hash){let e=document.getElementById(decodeURIComponent(o.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{z(!1,`"${o.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}i!==!0&&window.scrollTo(0,0)}},[o,r,i]))}function Ur(e,t){let{capture:n}=t||{};N(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function Wr(e,{relative:t}={}){let n=f(Gt);R(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=jr(`useViewTransitionState`),i=un(e,{relative:t});if(!n.isTransitioning)return!1;let a=B(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=B(n.nextLocation.pathname,r)||n.nextLocation.pathname;return _t(i.pathname,o)!=null||_t(i.pathname,a)!=null}var Gr=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),Kr=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),qr=e=>{let t=Kr(e);return t.charAt(0).toUpperCase()+t.slice(1)},Jr=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),Yr=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0},Xr={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`};_();var Zr=O(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>h(`svg`,{ref:c,...Xr,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:Jr(`lucide`,i),...!a&&!Yr(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>h(e,t)),...Array.isArray(a)?a:[a]]));_();var J=(e,t)=>{let n=O(({className:n,...r},i)=>h(Zr,{ref:i,iconNode:t,className:Jr(`lucide-${Gr(qr(e))}`,`lucide-${e}`,n),...r}));return n.displayName=qr(e),n},Qr=J(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),$r=J(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),ei=J(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),ti=J(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),ni=J(`box`,[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]),ri=J(`camera`,[[`path`,{d:`M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z`,key:`1tc9qg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]),ii=J(`car`,[[`path`,{d:`M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2`,key:`5owen`}],[`circle`,{cx:`7`,cy:`17`,r:`2`,key:`u2ysq9`}],[`path`,{d:`M9 17h6`,key:`r8uit2`}],[`circle`,{cx:`17`,cy:`17`,r:`2`,key:`axvx0g`}]]),ai=J(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),oi=J(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),si=J(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),ci=J(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),li=J(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),ui=J(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),di=J(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),fi=J(`compass`,[[`path`,{d:`m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z`,key:`9ktpf1`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),pi=J(`cpu`,[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]),mi=J(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),hi=J(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),gi=J(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),_i=J(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),vi=J(`film`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M7 3v18`,key:`bbkbws`}],[`path`,{d:`M3 7.5h4`,key:`zfgn84`}],[`path`,{d:`M3 12h18`,key:`1i2n21`}],[`path`,{d:`M3 16.5h4`,key:`1230mu`}],[`path`,{d:`M17 3v18`,key:`in4fa5`}],[`path`,{d:`M17 7.5h4`,key:`myr1c1`}],[`path`,{d:`M17 16.5h4`,key:`go4c1d`}]]),yi=J(`fingerprint`,[[`path`,{d:`M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4`,key:`1nerag`}],[`path`,{d:`M14 13.12c0 2.38 0 6.38-1 8.88`,key:`o46ks0`}],[`path`,{d:`M17.29 21.02c.12-.6.43-2.3.5-3.02`,key:`ptglia`}],[`path`,{d:`M2 12a10 10 0 0 1 18-6`,key:`ydlgp0`}],[`path`,{d:`M2 16h.01`,key:`1gqxmh`}],[`path`,{d:`M21.8 16c.2-2 .131-5.354 0-6`,key:`drycrb`}],[`path`,{d:`M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2`,key:`1tidbn`}],[`path`,{d:`M8.65 22c.21-.66.45-1.32.57-2`,key:`13wd9y`}],[`path`,{d:`M9 6.8a6 6 0 0 1 9 5.2v2`,key:`1fr1j5`}]]),bi=J(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),xi=J(`git-branch`,[[`line`,{x1:`6`,x2:`6`,y1:`3`,y2:`15`,key:`17qcm7`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`path`,{d:`M18 9a9 9 0 0 1-9 9`,key:`n2h4wq`}]]),Si=J(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),Ci=J(`hammer`,[[`path`,{d:`m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9`,key:`eefl8a`}],[`path`,{d:`m18 15 4-4`,key:`16gjal`}],[`path`,{d:`m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172V7l-2.26-2.26a6 6 0 0 0-4.202-1.756L9 2.96l.92.82A6.18 6.18 0 0 1 12 8.4V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5`,key:`b7pghm`}]]),wi=J(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),Ti=J(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),Ei=J(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),Di=J(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),Oi=J(`menu`,[[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 18h16`,key:`19g7jn`}],[`path`,{d:`M4 6h16`,key:`1o0s65`}]]),ki=J(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),Ai=J(`moon`,[[`path`,{d:`M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z`,key:`a7tn18`}]]),ji=J(`network`,[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]),Mi=J(`plug`,[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M9 8V2`,key:`14iosj`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`,key:`osxo6l`}]]),Ni=J(`puzzle`,[[`path`,{d:`M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z`,key:`w46dr5`}]]),Pi=J(`scan-eye`,[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`path`,{d:`M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0`,key:`11ak4c`}]]),Fi=J(`scan-face`,[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`path`,{d:`M8 14s1.5 2 4 2 4-2 4-2`,key:`1y1vjs`}],[`path`,{d:`M9 9h.01`,key:`1q5me6`}],[`path`,{d:`M15 9h.01`,key:`x1ddxp`}]]),Ii=J(`scroll-text`,[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]),Li=J(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),Ri=J(`settings`,[[`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`,key:`1qme2f`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),zi=J(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),Bi=J(`shield-x`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m14.5 9.5-5 5`,key:`17q4r4`}],[`path`,{d:`m9.5 9.5 5 5`,key:`18nt4w`}]]),Vi=J(`sliders-horizontal`,[[`line`,{x1:`21`,x2:`14`,y1:`4`,y2:`4`,key:`obuewd`}],[`line`,{x1:`10`,x2:`3`,y1:`4`,y2:`4`,key:`1q6298`}],[`line`,{x1:`21`,x2:`12`,y1:`12`,y2:`12`,key:`1iu8h1`}],[`line`,{x1:`8`,x2:`3`,y1:`12`,y2:`12`,key:`ntss68`}],[`line`,{x1:`21`,x2:`16`,y1:`20`,y2:`20`,key:`14d8ph`}],[`line`,{x1:`12`,x2:`3`,y1:`20`,y2:`20`,key:`m0wm8r`}],[`line`,{x1:`14`,x2:`14`,y1:`2`,y2:`6`,key:`14e1ph`}],[`line`,{x1:`8`,x2:`8`,y1:`10`,y2:`14`,key:`1i6ji0`}],[`line`,{x1:`16`,x2:`16`,y1:`18`,y2:`22`,key:`1lctlv`}]]),Hi=J(`smartphone`,[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]),Ui=J(`sparkles`,[[`path`,{d:`M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z`,key:`4pj2yx`}],[`path`,{d:`M20 3v4`,key:`1olli1`}],[`path`,{d:`M22 5h-4`,key:`1gvqau`}],[`path`,{d:`M4 17v2`,key:`vumght`}],[`path`,{d:`M5 18H3`,key:`zchphs`}]]),Wi=J(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),Gi=J(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),Ki=J(`trash-2`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]),qi=J(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Ji=J(`wifi-off`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}],[`path`,{d:`M5 12.859a10 10 0 0 1 5.17-2.69`,key:`1dl1wf`}],[`path`,{d:`M19 12.859a10 10 0 0 0-2.007-1.523`,key:`4k23kn`}],[`path`,{d:`M2 8.82a15 15 0 0 1 4.177-2.643`,key:`1grhjp`}],[`path`,{d:`M22 8.82a15 15 0 0 0-11.288-3.764`,key:`z3jwby`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Yi=J(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),Xi=J(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z`,key:`cbrjhi`}]]);_();function Zi({tabs:e,active:t,onChange:n}){return M(`div`,{className:`flex rounded-lg border border-border bg-surface p-0.5 gap-0.5`,children:e.map(e=>M(`button`,{type:`button`,onClick:()=>n(e.id),className:[`flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors`,t===e.id?`bg-primary/12 text-primary`:`text-foreground-subtle hover:text-foreground hover:bg-surface-hover`].join(` `),children:e.label},e.id))})}function Qi(e){let t=e.formats;if(!t)return``;let n=Object.values(t).filter(e=>e!==void 0&&e.sizeMB>0).map(e=>e.sizeMB);if(n.length===0)return``;let r=Math.min(...n),i=Math.max(...n);return r===i?`${r} MB`:`${r}-${i} MB`}function $i(e){return`${e.inputSize.width}x${e.inputSize.height}`}function ea(e){return e.formats?Object.keys(e.formats).filter(t=>e.formats[t]!==void 0):[]}function ta({entry:e,selected:t,onSelect:n,disabled:r}){let i=Qi(e),a=$i(e),o=ea(e);return v(`button`,{type:`button`,onClick:n,disabled:r,className:[`w-full text-left rounded-lg border p-3 transition-all`,t?`border-primary bg-primary/5 ring-1 ring-primary/30`:`border-border bg-background hover:border-foreground-subtle/40 hover:bg-surface-hover/50`,r?`opacity-50 cursor-not-allowed`:`cursor-pointer`].join(` `),children:[M(`div`,{className:`flex items-start justify-between gap-2`,children:v(`div`,{className:`flex-1 min-w-0`,children:[v(`div`,{className:`flex items-center gap-2`,children:[M(`span`,{className:`text-xs font-semibold text-foreground truncate`,children:e.name}),t&&M(oi,{className:`h-3.5 w-3.5 text-primary shrink-0`})]}),M(`p`,{className:`text-[10px] text-foreground-subtle mt-0.5 line-clamp-2`,children:e.description})]})}),v(`div`,{className:`flex items-center gap-3 mt-2 flex-wrap`,children:[v(`span`,{className:`inline-flex items-center gap-1 text-[10px] text-foreground-subtle`,children:[M(pi,{className:`h-3 w-3`}),a]}),i&&M(`span`,{className:`text-[10px] text-foreground-subtle`,children:i}),o.length>0&&M(`div`,{className:`flex gap-1`,children:o.map(e=>M(`span`,{className:`text-[9px] uppercase rounded bg-surface border border-border px-1 py-0.5 text-foreground-subtle font-mono`,children:e},e))}),e.labels.length>0&&v(`span`,{className:`text-[10px] text-foreground-subtle`,children:[e.labels.length,` label`,e.labels.length===1?``:`s`]})]})]})}function na({field:e,value:t,onChange:n,disabled:r}){let i=e.catalog??[],a=i.length>0,o=Be(i).length>0,s=e.allowCustomPath!==!1||e.allowCustom===!0,c=[...a?[{id:`catalog`,label:`Models (${i.length})`}]:[],...s?[{id:`custom`,label:`Custom Path`}]:[]],[l,u]=A(a?`catalog`:`custom`),d=t==null?``:String(t);return v(`div`,{className:`space-y-3`,children:[c.length>1&&M(Zi,{tabs:c,active:l,onChange:u}),l===`catalog`&&a&&o&&M(pe,{catalog:i,value:d,onChange:e=>n(e),disabled:r||e.disabled}),l===`catalog`&&a&&!o&&M(`div`,{className:`space-y-1.5 max-h-[320px] overflow-y-auto pr-1`,children:i.filter(e=>e.legacy!==!0).map(t=>M(ta,{entry:t,selected:d===t.id,onSelect:()=>n(t.id),disabled:r||e.disabled},t.id))}),l===`catalog`&&!a&&v(`div`,{className:`rounded-md border border-info/30 bg-info/5 px-3 py-2 flex items-start gap-2`,children:[M(wi,{className:`h-3.5 w-3.5 text-info shrink-0 mt-0.5`}),M(`p`,{className:`text-[11px] text-foreground-subtle leading-relaxed`,children:`No predefined models available. Use the Custom Path tab to specify a model file path or URL.`})]}),l===`custom`&&s&&v(`div`,{className:`space-y-2`,children:[M(`input`,{type:`text`,className:`w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none disabled:opacity-50`,placeholder:`Enter path like /data/models/custom.onnx or https://...`,value:d,disabled:r||e.disabled,onChange:e=>n(e.target.value)}),e.acceptFormats&&e.acceptFormats.length>0&&v(`p`,{className:`text-[10px] text-foreground-subtle`,children:[`Accepted formats: `,e.acceptFormats.join(`, `)]})]}),(e.compatibilityNote||e.conversionGuideUrl)&&v(`div`,{className:`flex items-start justify-between gap-3 pt-1`,children:[e.compatibilityNote&&v(`p`,{className:`flex items-start gap-1 text-[10px] text-foreground-subtle`,children:[M(wi,{className:`h-3 w-3 mt-0.5 shrink-0`}),e.compatibilityNote]}),e.conversionGuideUrl&&v(`a`,{href:e.conversionGuideUrl,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-1 text-[11px] text-primary hover:underline shrink-0`,children:[`How to convert your model`,M(hi,{className:`h-3 w-3`})]})]})]})}function ra(e){let t=P();return w({queryKey:[`field-resolver`,e?.capName??`<none>`,e?.methodName??`<none>`,e?.input??{}],enabled:!!e,queryFn:async()=>{if(!e)throw Error(`useFieldResolver: resolver is null (enabled guard should have prevented this)`);let n=e=>e!==null&&(typeof e==`object`||typeof e==`function`),r=Reflect.get(t.trpcClient,e.capName);if(!n(r))throw Error(`useFieldResolver: no cap namespace '${e.capName}' on the tRPC client`);let i=Reflect.get(r,e.methodName);if(!n(i))throw Error(`useFieldResolver: no method '${e.methodName}' on cap '${e.capName}'`);let a=Reflect.get(i,`query`);if(typeof a!=`function`)throw Error(`useFieldResolver: '${e.capName}.${e.methodName}' has no .query() (resolvers must be query methods, not mutations)`);return await a(e.input??{})}})}_();function ia(e){return typeof e==`string`&&e.length>0&&e!==`undefined`&&e!==`null`}function aa(e={}){let t=k(),n=Ae(void 0,{enabled:e.enabled??!0}),r=b(()=>(n.data??[]).filter(e=>ia(e.nodeId)),[n.data]),i=l(()=>{t.invalidateQueries({queryKey:[`pipelineOrchestrator`,`listAgentSettings`]})},[t]);return{agents:r,isLoading:n.isLoading,isError:n.isError,error:n.error,refetch:()=>{n.refetch()},invalidate:i}}_();function oa({field:e,disabled:t}){let n=k(),r=e.deviceId,i=ra(e.catalogResolver),a=L({deviceId:r}),o=ye({onSuccess:()=>{n.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`getCameraSettings`]]}),n.invalidateQueries({queryKey:[[`deviceManager`]]})}}),s=i.data,c=a.data??null,l=b(()=>s?da(s,c):[],[s,c]),u=b(()=>{if(!s)return{};let e={};for(let t of s.slots)for(let n of t.addons)e[n.id]=n.enabledByDefault??!0;return e},[s]);return i.error?v(`div`,{className:`text-xs text-red-400`,children:[`Failed to load pipeline catalog for `,M(`code`,{children:e.nodeId}),`:`,` `,String(i.error.message??i.error)]}):i.isLoading||!s?v(`div`,{className:`text-xs text-foreground-subtle animate-pulse`,children:[`Loading pipeline for `,e.nodeId,`…`]}):v(`div`,{className:`col-span-full space-y-4`,children:[v(`div`,{className:`flex items-center gap-2 text-[11px] text-foreground-subtle`,children:[`Agent: `,M(`span`,{className:`text-foreground`,children:e.nodeId}),v(`span`,{className:`ml-2`,children:[`Engine:`,` `,M(`span`,{className:`text-foreground font-mono`,children:`${s.selectedEngine.runtime}/${s.selectedEngine.backend}`})]}),v(`span`,{className:`ml-auto text-[10px]`,children:[`Model + settings edited on Pipeline → `,e.nodeId,`.`]})]}),M(Ee,{schema:s,steps:l,onChange:()=>{},templates:[],selectedTemplateId:null,onSelectTemplate:()=>{},onSaveTemplate:()=>{},onUpdateTemplate:()=>{},onDeleteTemplate:()=>{},readOnly:t===!0,hideTemplates:!0,toggleMode:`threeState`,hideModelAndSettings:!0,overrides:c?.stepToggles??{},onOverrideChange:(e,t)=>o.mutate({deviceId:r,addonId:e,enabled:t}),inheritedEnabledByAddon:u}),M(ua,{deviceId:r,currentAgentNodeId:e.nodeId,catalog:s,pipelineByAgent:la(c?.pipelineByAgent,s),disabled:t===!0})]})}function sa(e,t){for(let n of e.slots)for(let e of n.addons)if(e.id===t)return e.defaultModelId}function ca(e,t){return e?{modelId:e.modelId??sa(t,`audio-classifier`)??``,enabled:e.enabled}:null}function la(e,t){let n={};for(let[r,i]of Object.entries(e??{}))n[r]={steps:i.steps,audio:ca(i.audio,t)};return n}function ua({deviceId:e,currentAgentNodeId:t,catalog:n,pipelineByAgent:r,disabled:i}){let a=k(),[o,s]=A(!1),[c,l]=A(t),{agents:u}=aa({enabled:o}),d=le({deviceId:e,agentNodeId:c},{enabled:o}),f=Me({onSuccess:()=>{a.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`getCameraSettings`]]}),a.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`resolvePipeline`]]})}}),p=r[c]??null,m=u,h=b(()=>p?fa(p.steps,n):[],[p,n]);return v(`section`,{className:`rounded-lg border border-border bg-surface overflow-hidden`,children:[v(`button`,{type:`button`,onClick:()=>s(e=>!e),className:`w-full px-4 py-2 flex items-center gap-2 hover:bg-surface-hover`,children:[M(o?si:li,{className:`h-3 w-3`}),M(`h3`,{className:`text-xs font-semibold text-foreground uppercase tracking-wide`,children:`Advanced — custom pipeline per agent`}),M(`span`,{className:`ml-auto text-[10px] text-foreground-subtle`,children:Object.keys(r).length>0?`${Object.keys(r).length} override(s) active`:`None configured`})]}),o&&v(`div`,{className:`border-t border-border px-4 py-3 space-y-3`,children:[v(`div`,{className:`flex items-center gap-2 text-xs`,children:[M(`span`,{className:`text-foreground-subtle`,children:`Agent:`}),v(`select`,{value:c,disabled:i,onChange:e=>l(e.target.value),className:`rounded border border-border bg-surface-hover px-2 py-1 text-xs text-foreground focus:outline-none focus:border-primary`,children:[typeof t==`string`&&t.length>0&&t!==`undefined`&&v(`option`,{value:t,children:[t,` (current)`]}),m.filter(e=>e.nodeId!==t).map(e=>M(`option`,{value:e.nodeId,children:e.nodeId},e.nodeId))]}),r[c]&&v(`button`,{type:`button`,onClick:()=>{window.confirm(`Remove custom pipeline override for ${c}? The camera will revert to the agent default + step toggles.`)&&f.mutate({deviceId:e,agentNodeId:c,pipeline:null})},disabled:i||f.isPending,className:`ml-auto inline-flex items-center gap-1 px-2 py-1 text-[11px] text-red-400 hover:bg-red-500/10 rounded disabled:opacity-50`,children:[M(Ki,{className:`h-3 w-3`}),`Remove override`]})]}),p?M(Ee,{schema:n,steps:h,onChange:t=>{let n=p?.audio??null;f.mutate({deviceId:e,agentNodeId:c,pipeline:{steps:pa(t),audio:n?{modelId:n.modelId,enabled:n.enabled}:null}})},templates:[],selectedTemplateId:null,onSelectTemplate:()=>{},onSaveTemplate:()=>{},onUpdateTemplate:()=>{},onDeleteTemplate:()=>{},readOnly:i,hideTemplates:!0,allowAutoModel:!0}):v(`div`,{className:`text-xs text-foreground-subtle space-y-2`,children:[v(`p`,{children:[`No custom pipeline for `,M(`code`,{children:c}),`. The camera uses the agent's default + step toggles.`]}),M(`button`,{type:`button`,onClick:()=>{let t=d.data;t&&f.mutate({deviceId:e,agentNodeId:c,pipeline:{steps:t.steps,audio:ca(t.audio,n)}})},disabled:i||f.isPending||!d.data,className:`inline-flex items-center gap-1 px-3 py-1.5 text-xs font-medium rounded bg-primary/15 text-primary hover:bg-primary/25 disabled:opacity-50`,children:`Create wholesale override from current default`})]})]})]})}function da(e,t){let n=t=>{for(let n of e.slots)for(let e of n.addons)if(e.id===t)return e;return null},r=e=>{let n=e.enabledByDefault??!0,r=t?.stepToggles?.[e.id],i=r===void 0?n:r;return{addonId:e.id,addonName:e.name,slot:e.slot,inputClasses:[...e.inputClasses],outputClasses:[...e.outputClasses],enabled:i,modelId:e.defaultModelId,children:[]}},i=new Map;for(let t of e.slots)for(let e of t.addons)i.set(e.id,r(e));let a=[],o=new Set;for(let[e,t]of i){let r=n(e);r&&r.inputClasses.length===0&&(a.push(t),o.add(e))}let s=!0;for(;s;){s=!1;for(let[e,t]of i){if(o.has(e))continue;let r=n(e);if(r)for(let[a,c]of i){if(a===e)continue;let i=n(a);if(i&&o.has(a)&&i.outputClasses.some(e=>r.inputClasses.includes(e))){c.children.push(t),o.add(e),s=!0;break}}}}return a}function fa(e,t){let n=new Map;for(let e of t.slots)for(let t of e.addons)n.set(t.id,t);let r=e=>{let t=n.get(e.addonId);return{addonId:e.addonId,addonName:t?.name??e.addonId,slot:t?.slot??`detector`,inputClasses:t?.inputClasses?[...t.inputClasses]:[],outputClasses:t?.outputClasses?[...t.outputClasses]:[],enabled:e.enabled,modelId:e.modelId??``,children:(e.children??[]).map(r),...e.settings?{settings:{...e.settings}}:{}}};return[...e].map(r)}function pa(e){let t=e=>({addonId:e.addonId,...e.modelId?{modelId:e.modelId}:{},enabled:e.enabled,children:e.children.map(t),...e.settings?{settings:{...e.settings}}:{}});return e.map(t)}function ma({to:e}){let{search:t}=W();return M(K,{to:`${e}${t}`,replace:!0})}_();function ha(){let e=P(),t=k(),[n,r]=A(()=>e.isConnected()?`connected`:`disconnected`),i=d(!1),[a,o]=A(0),[s,c]=A([]);N(()=>e.subscribeConnectionEvents(e=>{r(t=>(t!==`connected`&&e===`connected`&&i.current&&o(e=>e+1),e!==`connected`&&(i.current=!0),e))}),[e]),N(()=>{a!==0&&t.invalidateQueries({queryKey:[[`addons`,`getLastRestart`]]})},[a,t]);let{data:l}=Ne(void 0,{enabled:n===`connected`&&a>0,staleTime:0,refetchOnMount:!1,refetchOnWindowFocus:!1}),u=d(null);return N(()=>{if(l==null||l.requestedAt===u.current)return;u.current=l.requestedAt;let e=_a(l);c(t=>[...t,e]);let t=window.setTimeout(()=>{c(t=>t.filter(t=>t.id!==e.id))},6e3);return()=>window.clearTimeout(t)},[l]),M(T,{children:s.length>0&&M(ga,{toasts:s})})}function ga({toasts:e}){return M(`div`,{className:`fixed top-[calc(env(safe-area-inset-top)+1rem)] right-[calc(env(safe-area-inset-right)+1rem)] z-50 flex flex-col gap-2 max-w-sm w-full pointer-events-none`,children:e.map(e=>v(`div`,{className:`pointer-events-auto flex items-start gap-2 px-3 py-2.5 rounded-md border border-green-500/30 bg-green-500/10 shadow-lg backdrop-blur-sm`,children:[M(di,{className:`w-4 h-4 shrink-0 mt-0.5 text-green-400`}),v(`div`,{children:[M(`div`,{className:`text-[11px] font-semibold text-foreground`,children:e.title}),M(`div`,{className:`text-[10px] text-foreground-subtle mt-0.5`,children:e.message})]})]},e.id))})}function _a(e){let t=`restart-${e.requestedAt}`;if(e.kind===`framework-update`&&e.packageName!==void 0&&e.toVersion!==void 0){let n=e.fromVersion===void 0?`v${e.toVersion}`:`v${e.fromVersion} → v${e.toVersion}`;return{id:t,title:`Framework updated`,message:`${e.packageName} is now ${n}.`}}return{id:t,title:`Server restarted`,message:e.requestedBy===void 0?`Manual restart completed.`:`Manual restart by ${e.requestedBy} completed.`}}_();var va={info:{bg:`bg-blue-500/10`,border:`border-blue-500/30`,icon:wi},warning:{bg:`bg-orange-500/10`,border:`border-orange-500/30`,icon:qi},critical:{bg:`bg-red-500/10`,border:`border-red-500/30`,icon:ui}};function ya({toast:e,onDismiss:t}){let n=va[e.severity]??va.info,r=n.icon;return N(()=>{let n=e.duration??5e3;if(n<=0)return;let r=setTimeout(()=>t(e.id),n);return()=>clearTimeout(r)},[e.id,e.duration,t]),v(`div`,{className:`flex items-start gap-3 px-4 py-3 rounded-lg border ${n.border} ${n.bg} shadow-lg backdrop-blur-sm animate-in slide-in-from-right-5 fade-in duration-200`,children:[M(r,{className:`h-4 w-4 shrink-0 mt-0.5 text-foreground-subtle`}),v(`div`,{className:`flex-1 min-w-0`,children:[M(`div`,{className:`text-xs font-semibold text-foreground`,children:e.title}),M(`div`,{className:`text-[11px] text-foreground-subtle mt-0.5`,children:e.message})]}),M(`button`,{type:`button`,onClick:()=>t(e.id),className:`shrink-0 p-0.5 rounded hover:bg-surface-hover transition-colors`,children:M(Yi,{className:`h-3.5 w-3.5 text-foreground-subtle`})})]})}function ba(){let[e,t]=A([]),n=l(e=>{t(t=>t.filter(t=>t.id!==e))},[]);return Ce(void 0,{onData:e=>{let n=e,r=`toast-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;t(e=>[...e,{...n,id:r,timestamp:Date.now()}])}}),e.length===0?null:M(`div`,{className:`fixed bottom-[calc(env(safe-area-inset-bottom)+1rem)] right-[calc(env(safe-area-inset-right)+1rem)] z-50 flex flex-col gap-2 max-w-sm w-full pointer-events-none`,children:e.map(e=>M(`div`,{className:`pointer-events-auto`,children:M(ya,{toast:e,onDismiss:n})},e.id))})}function xa(e){return e.hubReachable?e.authOk===!1?{kind:`auth-expired`}:{kind:`cluster-degraded`,offlineAgents:e.offlineAgents,offlineAgentIds:e.offlineAgentIds}:{kind:`hub-unreachable`}}function Sa(e){switch(e.kind){case`connected`:return null;case`reconnecting`:return{severity:`warning`,message:`Reconnecting…`,i18nKey:`connection.reconnecting`,showSpinner:!0};case`cluster-degraded`:{let t=e.offlineAgentIds??[];return t.length>0?{severity:`warning`,message:`Cluster degraded — ${t.length===1?`node ${t[0]}`:`nodes ${t.join(`, `)}`} not responding. Hub is online, live link re-establishing…`,i18nKey:`connection.degradedNodes`,i18nParams:{nodes:t.join(`, `),count:t.length},showSpinner:!0}:e.offlineAgents!==null&&e.offlineAgents>0?{severity:`warning`,message:`Cluster degraded — ${e.offlineAgents} cluster node${e.offlineAgents===1?``:`s`} offline. Hub is online, live link re-establishing…`,i18nKey:`connection.degradedCount`,i18nParams:{count:e.offlineAgents},showSpinner:!0}:{severity:`warning`,message:`Live connection interrupted — hub is online (a cluster node may be unresponsive), re-establishing…`,i18nKey:`connection.degraded`,showSpinner:!0}}case`hub-unreachable`:return{severity:`danger`,message:`Server unreachable — reconnecting…`,i18nKey:`connection.disconnected`,showSpinner:!0};case`auth-expired`:return{severity:`danger`,message:`Session expired — please sign in again.`,i18nKey:`connection.sessionExpired`,showSpinner:!1,action:`sign-in`}}}var Ca=4e3,wa=5e3;function Ta(e){if(typeof e!=`object`||!e)return{offline:null,offlineIds:null,ok:null};let t={...e},n=typeof t.ok==`boolean`?t.ok:null,r=t.agents;if(typeof r!=`object`||!r)return{offline:null,offlineIds:null,ok:n};let i={...r},a=i.offline,o=typeof a==`number`?a:null,s=i.offlineIds;return{offline:o,offlineIds:Array.isArray(s)?s.filter(e=>typeof e==`string`):null,ok:n}}async function Ea(e,t,n,r){let i=new AbortController,a=setTimeout(()=>i.abort(),n);try{return await e(t,{method:`GET`,signal:i.signal,credentials:`omit`,...r===void 0?{}:{headers:r}})}finally{clearTimeout(a)}}async function Da(e){let t=e.fetchFn??fetch,n=e.timeoutMs??Ca,r=e.origin.replace(/\/+$/,``),i;try{i=await Ea(t,`${r}/health`,n)}catch{return{hubReachable:!1,authOk:`unknown`,offlineAgents:null,offlineAgentIds:null}}if(!i.ok)return{hubReachable:!1,authOk:`unknown`,offlineAgents:null,offlineAgentIds:null};let a=null,o=e.getToken();if(o!==null&&o!==``)try{let e=await Ea(t,`${r}/health/details`,n,{Authorization:`Bearer ${o}`});e.ok&&(a=await e.json())}catch{}let s;try{s=Ta(a??await i.json())}catch{s={offline:null,offlineIds:null,ok:null}}if(s.ok===!1)return{hubReachable:!1,authOk:`unknown`,offlineAgents:null,offlineAgentIds:null};let c=e.getToken(),l=`unknown`;if(c!==null&&c!==``)try{let e=await Ea(t,`${r}/trpc/auth.me`,n,{Authorization:`Bearer ${c}`});e.status===401||e.status===403?l=!1:e.ok&&(l=!0)}catch{l=`unknown`}return{hubReachable:!0,authOk:l,offlineAgents:s.offline,offlineAgentIds:s.offlineIds}}var Oa={kind:`connected`},ka={kind:`reconnecting`};function Aa(e){let t=e.probeIntervalMs??wa,n=new Set,r=Oa,i=0,a=!1,o=null;function s(e){if(r!==e){r=e;for(let e of n)e()}}function c(){a=!1,o!==null&&(clearTimeout(o),o=null)}function l(){let n=i;e.probe().then(e=>{n!==i||!a||(s(xa(e)),o=setTimeout(l,t))},()=>{n!==i||!a||(s({kind:`hub-unreachable`}),o=setTimeout(l,t))})}function u(e){if(i+=1,e===`connected`){c(),s(Oa);return}if(e===`connecting`){c(),s(ka);return}(r.kind===`connected`||r.kind===`reconnecting`)&&s(ka),o!==null&&(clearTimeout(o),o=null),a=!0,l()}return{getSnapshot:()=>r,subscribe:e=>(n.add(e),()=>{n.delete(e)}),onSdkConnectionState:u,dispose:()=>{i+=1,c(),n.clear()}}}var ja=null;function Ma(){return ja===null&&(ja=Aa({probe:()=>Da({origin:window.location.origin,getToken:()=>localStorage.getItem(`camstack_admin_token`)})})),ja}function Na(e){Ma().onSdkConnectionState(e)}var Pa=null,Fa=0;function Ia(){if(!Pa){let e=Fa,t=window.location.origin;Pa=te({serverUrl:t,token:localStorage.getItem(`camstack_admin_token`)??void 0,onConnectionChange:t=>{e===Fa&&Na(t)}})}return Pa}function La(){let e=Pa;Pa=null,Fa+=1,e?.close()}function Ra(e){try{let t=e.split(`.`);if(t.length<2||!t[1])return null;let n=JSON.parse(atob(t[1]));return{id:String(n.userId??``),username:String(n.username??`unknown`),isAdmin:!!n.isAdmin,exp:Number(n.exp??0),scopes:za(n.scopes)}}catch{return null}}function za(e){return Re(e)}function Ba(e){let t=Ra(e);return t?t.exp*1e3<Date.now():!0}var Va=[`camstack://auth-callback`,`camstack.dev://auth-callback`],Ha=512;function Ua(e){return e.replace(/^([a-z][a-z0-9.+-]*):\/\/\/(?!\/)/i,`$1://`).replace(/\/$/,``)}function Wa(e){if(!e||e.length>Ha)return null;let t=Ua(e);return Va.includes(t)?{kind:`app-callback`,url:t}:!e.startsWith(`/`)||e.startsWith(`//`)||e.includes(`\\`)||e.includes(`://`)||e.includes(`..`)||e===`/login`||e.startsWith(`/login?`)||e.startsWith(`/login/`)?null:{kind:`path`,path:e}}function Ga(e,t){return`${e}?code=${encodeURIComponent(t)}`}function Ka(e,t=Date.now()){return ao(t)??Wa(e)}var qa=2048;function Ja(e){return!e||e.length>qa||!e.startsWith(`/`)||e.startsWith(`//`)||e.includes(`\\`)||e.includes(`://`)||e.includes(`..`)||e===`/login`||e.startsWith(`/login?`)||e.startsWith(`/login/`)?null:e}function Ya(e,t=Date.now()){to($a,e,Ja,t)}function Xa(e=Date.now()){return no($a,Ja,e)}function Za(e,t=Date.now()){return Xa(t)??Ja(e)}var Qa=`camstack:login-redirect`,$a=`camstack:login-next`,eo=10*6e4;function to(e,t,n,r){let i=ro();if(!i||!n(t))return;let a={raw:t??``,at:r};try{i.setItem(e,JSON.stringify(a))}catch{}}function no(e,t,n){let r=ro();if(!r)return null;let i=null;try{i=r.getItem(e),r.removeItem(e)}catch{return null}if(!i)return null;try{let e=JSON.parse(i);if(typeof e!=`object`||!e)return null;let r=Reflect.get(e,`at`),a=Reflect.get(e,`raw`);return typeof r!=`number`||typeof a!=`string`||n-r>eo?null:t(a)}catch{return null}}function ro(){if(typeof window>`u`)return null;try{return window.sessionStorage}catch{return null}}function io(e,t=Date.now()){to(Qa,e,Wa,t)}function ao(e=Date.now()){return no(Qa,Wa,e)}_();var oo=`changeme`;async function so(e){await fetch(`/api/auth/session`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({token:e})}).catch(()=>{})}async function co(e,t){if(await so(e),t.kind===`path`){window.location.replace(t.path);return}try{La();let{code:e}=await Ia().trpcClient.auth.createHandoffCode.mutate();window.location.replace(Ga(t.url,e))}catch{window.location.replace(`/admin`)}}async function lo(e,t){await so(e),window.location.replace(t)}var uo=s(null);function fo({children:e}){let[t,n]=A(null),[r,i]=A(!0),[a,o]=A(!1);N(()=>{if(typeof window<`u`&&window.location.hash.startsWith(`#token=`)){let e=new URLSearchParams(window.location.hash.slice(1)).get(`token`);if(e){localStorage.setItem(`camstack_admin_token`,e);let t=ao();if(t){co(e,t);return}let n=Xa();if(n){lo(e,n);return}window.history.replaceState({},``,`/admin`)}}let e=localStorage.getItem(`camstack_admin_token`);if(!e){i(!1);return}if(Ba(e)){localStorage.removeItem(`camstack_admin_token`),i(!1);return}let t=Ra(e);if(!t){localStorage.removeItem(`camstack_admin_token`),i(!1);return}so(e),Ia().trpcClient.system.info.query().then(()=>n(t)).catch(e=>{let r=e?.data?.code;r===`UNAUTHORIZED`||r===`FORBIDDEN`?(localStorage.removeItem(`camstack_admin_token`),La()):n(t)}).finally(()=>i(!1))},[]);let s=l(async(e,t)=>{let r=await Ia().login(e,t),i=r.secondFactors??(r.requiresTotp===!0?[`totp`]:[]);if(i.length>0)return{kind:`second-factor`,challengeToken:r.token,factors:i};let a=r.token;return localStorage.setItem(`camstack_admin_token`,a),await so(a),La(),n(Ra(a)),o(t===oo),{kind:`ok`}},[]),c=l(async(e,t)=>{let r=(await Ia().loginVerifyTotp(e,t)).token;localStorage.setItem(`camstack_admin_token`,r),await so(r),La(),n(Ra(r)),o(!1)},[]),u=l(async e=>{localStorage.setItem(`camstack_admin_token`,e),await so(e),La(),n(Ra(e)),o(!1)},[]),d=l(()=>{localStorage.removeItem(`camstack_admin_token`),fetch(`/api/auth/session`,{method:`DELETE`}).catch(()=>{}),La(),n(null),o(!1)},[]),f=l(()=>{o(!1)},[]);return M(uo.Provider,{value:{user:t,loading:r,mustChangePassword:a,login:s,verifyTotp:c,finalizePasskeyLogin:u,logout:d,clearMustChangePassword:f},children:e})}function po(){let e=f(uo);if(!e)throw Error(`useAuth must be used within AuthProvider`);return e}_();var mo=3e4;function ho(e){let t=d(e);t.current=e,N(()=>{let e=null,n=()=>{if(document.visibilityState===`hidden`){e=Date.now();return}if(document.visibilityState===`visible`&&e!==null){let n=Date.now()-e;e=null,n>=mo&&t.current()}},r=()=>{t.current()},i=e=>{e.persisted&&t.current()};return document.addEventListener(`visibilitychange`,n),window.addEventListener(`online`,r),window.addEventListener(`pageshow`,i),()=>{document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`online`,r),window.removeEventListener(`pageshow`,i)}},[])}_();function go(e){let t=new Set,n=new Set,r=e=>e.page.remoteName.includes(e.addonId.replace(/[^a-zA-Z0-9]+/g,`_`)),i=[...e.filter(r),...e.filter(e=>!r(e))],a=[];for(let e of i){let r=`${e.addonId}::${e.page.id}`;t.has(r)||n.has(e.page.path)||(t.add(r),n.add(e.page.path),a.push({id:e.page.id,addonId:e.addonId,label:e.page.label,icon:e.page.icon,path:e.page.path,remoteName:e.page.remoteName,bundle:e.page.bundle,bundleUrl:e.bundleUrl,...e.page.section===void 0?{}:{section:e.page.section},...e.page.sectionLabel===void 0?{}:{sectionLabel:e.page.sectionLabel}}))}return a}var _o=new Map,vo=new Map,yo=new Set;function bo(e){return!e||typeof e!=`object`?!1:typeof e.default==`function`}async function xo(e,t){let i=_o.get(e);if(i)return i;let a=vo.get(e);if(a)return a;yo.has(e)||(ve(),r([{name:e,entry:t,type:`module`}],{force:!1}),yo.add(e));let o=n(`${e}/page`).then(n=>{if(!bo(n))throw Error(`Addon page remote ${e} (${t}) does not expose a default React component on './page'`);return _o.set(e,n.default),vo.delete(e),n.default}).catch(t=>{throw vo.delete(e),t});return vo.set(e,o),o}function So(){let{pagePath:e}=ln(),t=P(),{data:n}=Se(void 0),r=b(()=>n?go(n):void 0,[n]),i=r?.find(t=>t.path===`/addon/${e}`),[a,o]=A(null),[s,c]=A(null);return N(()=>{if(!i)return;c(null),o(null);let e=!1;return xo(i.remoteName,i.bundleUrl).then(t=>{e||o(()=>t)}).catch(t=>{e||c(`Failed to load addon page: ${t instanceof Error?t.message:String(t)}`)}),()=>{e=!0}},[i]),r?i?s?M(`div`,{className:`flex items-center justify-center h-full text-red-400 text-sm`,children:s}):a?M(a,{trpc:t.trpcClient,theme:{isDark:document.documentElement.classList.contains(`dark`)},navigate:e=>{window.location.href=e}}):M(`div`,{className:`flex items-center justify-center h-full`,children:M(`div`,{className:`animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full`})}):M(`div`,{className:`flex items-center justify-center h-full text-foreground-subtle`,children:`Addon page not found`}):M(`div`,{className:`flex items-center justify-center h-full`,children:M(`div`,{className:`animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full`})})}Fe();var Y=e=>typeof e==`string`,Co=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},wo=e=>e==null?``:String(e),To=(e,t,n)=>{e.forEach(e=>{t[e]&&(n[e]=t[e])})},Eo=/###/g,Do=e=>e&&e.includes(`###`)?e.replace(Eo,`.`):e,Oo=e=>!e||Y(e),ko=(e,t,n)=>{let r=Y(t)?t.split(`.`):t,i=0;for(;i<r.length-1;){if(Oo(e))return{};let t=Do(r[i]);!e[t]&&n&&(e[t]=new n),e=Object.prototype.hasOwnProperty.call(e,t)?e[t]:{},++i}return Oo(e)?{}:{obj:e,k:Do(r[i])}},Ao=(e,t,n)=>{let{obj:r,k:i}=ko(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=ko(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=ko(e,o,Object),s?.obj&&s.obj[`${s.k}.${a}`]!==void 0&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},jo=(e,t,n,r)=>{let{obj:i,k:a}=ko(e,t,Object);i[a]=i[a]||[],i[a].push(n)},Mo=(e,t)=>{let{obj:n,k:r}=ko(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},No=(e,t,n)=>{let r=Mo(e,n);return r===void 0?Mo(t,n):r},Po=(e,t,n)=>{for(let r in t)r!==`__proto__`&&r!==`constructor`&&(r in e?Y(e[r])||e[r]instanceof String||Y(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):Po(e[r],t[r],n):e[r]=t[r]);return e},X=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),Fo={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`,"/":`&#x2F;`},Io=e=>Y(e)?e.replace(/[&<>"'\/]/g,e=>Fo[e]):e,Lo=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}},Ro=[` `,`,`,`?`,`!`,`;`],zo=new Lo(20),Bo=(e,t,n)=>{t||=``,n||=``;let r=Ro.filter(e=>!t.includes(e)&&!n.includes(e));if(r.length===0)return!0;let i=zo.getRegExp(`(${r.map(e=>e===`?`?`\\?`:e).join(`|`)})`),a=!i.test(e);if(!a){let t=e.indexOf(n);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a},Vo=(e,t,n=`.`)=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let r=t.split(n),i=e;for(let e=0;e<r.length;){if(!i||typeof i!=`object`)return;let t,a=``;for(let o=e;o<r.length;++o)if(o!==e&&(a+=n),a+=r[o],t=i[a],t!==void 0){if([`string`,`number`,`boolean`].includes(typeof t)&&o<r.length-1)continue;e+=o-e+1;break}i=t}return i},Ho=e=>e?.replace(/_/g,`-`),Uo={type:`logger`,log(e){this.output(`log`,e)},warn(e){this.output(`warn`,e)},error(e){this.output(`error`,e)},output(e,t){console?.[e]?.apply?.(console,t)}},Z=new class e{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||`i18next:`,this.logger=e||Uo,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,`log`,``,!0)}warn(...e){return this.forward(e,`warn`,``,!0)}error(...e){return this.forward(e,`error`,``)}deprecate(...e){return this.forward(e,`warn`,`WARNING DEPRECATED: `,!0)}forward(e,t,n,r){return r&&!this.debug?null:(e=e.map(e=>Y(e)?e.replace(/[\r\n\x00-\x1F\x7F]/g,` `):e),Y(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t||=this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},Wo=class{constructor(){this.observers={}}on(e,t){return e.split(` `).forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r<n;r++)e(...t)}),this.observers[`*`]&&Array.from(this.observers[`*`].entries()).forEach(([n,r])=>{for(let i=0;i<r;i++)n(e,...t)})}},Go=class extends Wo{constructor(e,t={ns:[`translation`],defaultNS:`translation`}){super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.includes(e)||this.options.ns.push(e)}removeNamespaces(e){let t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){let i=r.keySeparator===void 0?this.options.keySeparator:r.keySeparator,a=r.ignoreJSONStructure===void 0?this.options.ignoreJSONStructure:r.ignoreJSONStructure,o;e.includes(`.`)?o=e.split(`.`):(o=[e,t],n&&(Array.isArray(n)?o.push(...n):Y(n)&&i?o.push(...n.split(i)):o.push(n)));let s=Mo(this.data,o);return!s&&!t&&!n&&e.includes(`.`)&&(e=o[0],t=o[1],n=o.slice(2).join(`.`)),s||!a||!Y(n)?s:Vo(this.data?.[e]?.[t],n,i)}addResource(e,t,n,r,i={silent:!1}){let a=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,o=[e,t];n&&(o=o.concat(a?n.split(a):n)),e.includes(`.`)&&(o=e.split(`.`),r=t,t=o[1]),this.addNamespaces(t),Ao(this.data,o,r),i.silent||this.emit(`added`,e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(let r in n)(Y(n[r])||Array.isArray(n[r]))&&this.addResource(e,t,r,n[r],{silent:!0});r.silent||this.emit(`added`,e,t,n)}addResourceBundle(e,t,n,r,i,a={silent:!1,skipCopy:!1}){let o=[e,t];e.includes(`.`)&&(o=e.split(`.`),r=n,n=t,t=o[1]),this.addNamespaces(t);let s=Mo(this.data,o)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?Po(s,n,i):s={...s,...n},Ao(this.data,o,s),a.silent||this.emit(`added`,e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit(`removed`,e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||=this.options.defaultNS,this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}},Ko={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(e=>{t=this.processors[e]?.process(t,n,r,i)??t}),t}},qo=Symbol(`i18next/PATH_KEY`);function Jo(){let e=[],t=Object.create(null),n;return t.get=(r,i)=>(n?.revoke?.(),i===qo?e:(e.push(i),n=Proxy.revocable(r,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function Yo(e,t){let{[qo]:n}=e(Jo()),r=t?.keySeparator??`.`,i=t?.nsSeparator??`:`,a=t?.enableSelector===`strict`;if(n.length>1&&i){let e=t?.ns,o=a?Array.isArray(e)?e:e?[e]:null:Array.isArray(e)?e:null;if(o&&(a?o:o.length>1?o.slice(1):[]).includes(n[0]))return`${n[0]}${i}${n.slice(1).join(r)}`}return n.join(r)}var Xo=e=>!Y(e)&&typeof e!=`boolean`&&typeof e!=`number`,Zo=class e extends Wo{constructor(e,t={}){super(),To([`resourceStore`,`languageUtils`,`pluralResolver`,`interpolator`,`backendConnector`,`i18nFormat`,`utils`],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.logger=Z.create(`translator`),this.checkedLoadedFor={}}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let n={...t};if(e==null)return!1;let r=this.resolve(e,n);if(r?.res===void 0)return!1;let i=Xo(r.res);return!(n.returnObjects===!1&&i)}extractFromKey(e,t){let n=t.nsSeparator===void 0?this.options.nsSeparator:t.nsSeparator;n===void 0&&(n=`:`);let r=t.keySeparator===void 0?this.options.keySeparator:t.keySeparator,i=t.ns||this.options.defaultNS||[],a=n&&e.includes(n),o=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!Bo(e,n,r);if(a&&!o){let t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:Y(i)?[i]:i};let a=e.split(n);(n!==r||n===r&&this.options.ns.includes(a[0]))&&(i=a.shift()),e=a.join(r)}return{key:e,namespaces:Y(i)?[i]:i}}translate(t,n,r){let i=typeof n==`object`?{...n}:n;if(typeof i!=`object`&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i==`object`&&(i={...i}),i||={},t==null)return``;typeof t==`function`&&(t=Yo(t,{...this.options,...i})),Array.isArray(t)||(t=[String(t)]),t=t.map(e=>typeof e==`function`?Yo(e,{...this.options,...i}):String(e));let a=i.returnDetails===void 0?this.options.returnDetails:i.returnDetails,o=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,{key:s,namespaces:c}=this.extractFromKey(t[t.length-1],i),l=c[c.length-1],u=i.nsSeparator===void 0?this.options.nsSeparator:i.nsSeparator;u===void 0&&(u=`:`);let d=i.lng||this.language,f=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d?.toLowerCase()===`cimode`)return f?a?{res:`${l}${u}${s}`,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${s}`:a?{res:s,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:s;let p=this.resolve(t,i),m=p?.res,h=p?.usedKey||s,g=p?.exactUsedKey||s,_=[`[object Number]`,`[object Function]`,`[object RegExp]`],v=i.joinArrays===void 0?this.options.joinArrays:i.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=i.count!==void 0&&!Y(i.count),x=e.hasDefaultValue(i),S=b?this.pluralResolver.getSuffix(d,i.count,i):``,C=i.ordinal&&b?this.pluralResolver.getSuffix(d,i.count,{ordinal:!1}):``,w=b&&!i.ordinal&&i.count===0,T=w&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${S}`]||i[`defaultValue${C}`]||i.defaultValue,E=m;y&&!m&&x&&(E=T);let D=Xo(E),O=Object.prototype.toString.apply(E);if(y&&E&&D&&!_.includes(O)&&!(Y(v)&&Array.isArray(E))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn(`accessing an object - but returnObjects options is not enabled!`);let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,E,{...i,ns:c}):`key '${s} (${this.language})' returned an object instead of string.`;return a?(p.res=e,p.usedParams=this.getUsedParamsDetails(i),p):e}if(o){let e=Array.isArray(E),t=e?[]:{},n=e?g:h;for(let e in E)if(Object.prototype.hasOwnProperty.call(E,e)){let r=`${n}${o}${e}`;x&&!m?t[e]=this.translate(r,{...i,defaultValue:Xo(T)?T[e]:void 0,joinArrays:!1,ns:c}):t[e]=this.translate(r,{...i,joinArrays:!1,ns:c}),t[e]===r&&(t[e]=E[e])}m=t}}else if(y&&Y(v)&&Array.isArray(m))m=m.join(v),m&&=this.extendTranslation(m,t,i,r);else{let e=!1,n=!1;!this.isValidLookup(m)&&x&&(e=!0,m=T),this.isValidLookup(m)||(n=!0,m=s);let a=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:m,c=x&&T!==m&&this.options.updateMissing;if(n||e||c){if(this.logger.log(c?`updateKey`:`missingKey`,d,l,b&&!c?`${s}${this.pluralResolver.getSuffix(d,i.count,i)}`:s,c?T:m),o){let e=this.resolve(s,{...i,keySeparator:!1});e&&e.res&&this.logger.warn(`Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.`)}let e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo===`fallback`&&t&&t[0])for(let n=0;n<t.length;n++)e.push(t[n]);else this.options.saveMissingTo===`all`?e=this.languageUtils.toResolveHierarchy(i.lng||this.language):e.push(i.lng||this.language);let n=(e,t,n)=>{let r=x&&n!==m?n:a;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,r,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,r,c,i),this.emit(`missingKey`,e,l,t,m)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,i);w&&i[`defaultValue${this.options.pluralSeparator}zero`]&&!t.includes(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],s+t,i[`defaultValue${t}`]||T)})}):n(e,s,T))}m=this.extendTranslation(m,t,i,p,r),n&&m===s&&this.options.appendNamespaceToMissingKey&&(m=`${l}${u}${s}`),(n||e)&&this.options.parseMissingKeyHandler&&(m=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${s}`:s,e?m:void 0,i))}return a?(p.res=m,p.usedParams=this.getUsedParamsDetails(i),p):m}extendTranslation(e,t,n,r,i){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let a=Y(e)&&(n?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:n.interpolation.skipOnVariables),o;if(a){let t=e.match(this.interpolator.nestingRegexp);o=t&&t.length}let s=n.replace&&!Y(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),e=this.interpolator.interpolate(e,s,n.lng||this.language||r.usedLng,n),a){let t=e.match(this.interpolator.nestingRegexp),r=t&&t.length;o<r&&(n.nest=!1)}!n.lng&&r&&r.res&&(n.lng=this.language||r.usedLng),n.nest!==!1&&(e=this.interpolator.nest(e,(...e)=>i?.[0]===e[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null):this.translate(...e,t),n)),n.interpolation&&this.interpolator.reset()}let a=n.postProcess||this.options.postProcess,o=Y(a)?[a]:a;return e!=null&&o?.length&&n.applyPostProcessor!==!1&&(e=Ko.handle(o,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,i,a,o;return Y(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>typeof e==`function`?Yo(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;let s=this.extractFromKey(e,t),c=s.key;r=c;let l=s.namespaces;this.options.fallbackNS&&(l=l.concat(this.options.fallbackNS));let u=t.count!==void 0&&!Y(t.count),d=u&&!t.ordinal&&t.count===0,f=t.context!==void 0&&(Y(t.context)||typeof t.context==`number`)&&t.context!==``,p=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);l.forEach(e=>{this.isValidLookup(n)||(o=e,!this.checkedLoadedFor[`${p[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(this.checkedLoadedFor[`${p[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${p.join(`, `)}" won't get resolved as namespace "${o}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`)),p.forEach(r=>{if(this.isValidLookup(n))return;a=r;let o=[c];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(o,c,r,e,t);else{let e;u&&(e=this.pluralResolver.getSuffix(r,t.count,t));let n=`${this.options.pluralSeparator}zero`,i=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(u&&(t.ordinal&&e.startsWith(i)&&o.push(c+e.replace(i,this.options.pluralSeparator)),o.push(c+e),d&&o.push(c+n)),f){let r=`${c}${this.options.contextSeparator||`_`}${t.context}`;o.push(r),u&&(t.ordinal&&e.startsWith(i)&&o.push(r+e.replace(i,this.options.pluralSeparator)),o.push(r+e),d&&o.push(r+n))}}let s;for(;s=o.pop();)this.isValidLookup(n)||(i=s,n=this.getResource(r,e,s,t))}))})}),{res:n,usedKey:r,exactUsedKey:i,usedLng:a,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e===``)}getResource(e,t,n,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){let t=[`defaultValue`,`ordinal`,`context`,`replace`,`lng`,`lngs`,`fallbackLng`,`ns`,`keySeparator`,`nsSeparator`,`returnObjects`,`returnDetails`,`joinArrays`,`postProcess`,`interpolation`],n=e.replace&&!Y(e.replace),r=n?e.replace:e;if(n&&e.count!==void 0&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(let e of t)delete r[e]}return r}static hasDefaultValue(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t.startsWith(`defaultValue`)&&e[t]!==void 0)return!0;return!1}},Qo=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Z.create(`languageUtils`)}getScriptPartFromCode(e){if(e=Ho(e),!e||!e.includes(`-`))return null;let t=e.split(`-`);return t.length===2||(t.pop(),t[t.length-1].toLowerCase()===`x`)?null:this.formatLanguageCode(t.join(`-`))}getLanguagePartFromCode(e){if(e=Ho(e),!e||!e.includes(`-`))return e;let t=e.split(`-`);return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(Y(e)&&e.includes(`-`)){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load===`languageOnly`||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(e)}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;let n=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(n))&&(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;let r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?!0:!e.includes(`-`)&&!r.includes(`-`)?!1:!!(e.includes(`-`)&&!r.includes(`-`)&&e.slice(0,e.indexOf(`-`))===r||e.startsWith(r)&&r.length>1))}),t||=this.getFallbackCodes(this.options.fallbackLng)[0],t}getFallbackCodes(e,t){if(!e)return[];if(typeof e==`function`&&(e=e(t)),Y(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||=e[this.getScriptPartFromCode(t)],n||=e[this.formatLanguageCode(t)],n||=e[this.getLanguagePartFromCode(t)],n||=e.default,n||[]}toResolveHierarchy(e,t){let n=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),r=[],i=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return Y(e)&&(e.includes(`-`)||e.includes(`_`))?(this.options.load!==`languageOnly`&&i(this.formatLanguageCode(e)),this.options.load!==`languageOnly`&&this.options.load!==`currentOnly`&&i(this.getScriptPartFromCode(e)),this.options.load!==`currentOnly`&&i(this.getLanguagePartFromCode(e))):Y(e)&&i(this.formatLanguageCode(e)),n.forEach(e=>{r.includes(e)||i(this.formatLanguageCode(e))}),r}},$o={zero:0,one:1,two:2,few:3,many:4,other:5},es={select:e=>e===1?`one`:`other`,resolvedOptions:()=>({pluralCategories:[`one`,`other`]})},ts=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=Z.create(`pluralResolver`),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let n=Ho(e===`dev`?`en`:e),r=t.ordinal?`ordinal`:`cardinal`,i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(typeof Intl>`u`)return this.logger.error(`No Intl support, please use an Intl polyfill!`),es;if(!e.match(/-|_/))return es;let n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[i]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?n.resolvedOptions().pluralCategories.sort((e,t)=>$o[e]-$o[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:``}${e}`):[]}getSuffix(e,t,n={}){let r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:``}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix(`dev`,t,n))}},ns=(e,t,n,r=`.`,i=!0)=>{let a=No(e,t,n);return!a&&i&&Y(n)&&(a=Vo(e,n,r),a===void 0&&(a=Vo(t,n,r))),a},rs=e=>e.replace(/\$/g,`$$$$`),is=class{constructor(e={}){this.logger=Z.create(`interpolator`),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||={escapeValue:!0};let{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:o,suffixEscaped:s,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:h,maxReplaces:g,alwaysFormat:_}=e.interpolation;this.escape=t===void 0?Io:t,this.escapeValue=n===void 0?!0:n,this.useRawValueToEscape=r===void 0?!1:r,this.prefix=i?X(i):a||`{{`,this.suffix=o?X(o):s||`}}`,this.formatSeparator=c||`,`,this.unescapePrefix=l?``:u?X(u):`-`,this.unescapeSuffix=this.unescapePrefix?``:l?X(l):``,this.nestingPrefix=d?X(d):f||X(`$t(`),this.nestingSuffix=p?X(p):m||X(`)`),this.nestingOptionsSeparator=h||`,`,this.maxReplaces=g||1e3,this.alwaysFormat=_===void 0?!1:_,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,`g`);this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){let i,a,o,s=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=e=>{if(!e.includes(this.formatSeparator)){let i=ns(t,s,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(i,void 0,n,{...r,...t,interpolationkey:e}):i}let i=e.split(this.formatSeparator),a=i.shift().trim(),o=i.join(this.formatSeparator).trim();return this.format(ns(t,s,a,this.options.keySeparator,this.options.ignoreJSONStructure),o,n,{...r,...t,interpolationkey:a})};this.resetRegExp(),!this.escapeValue&&typeof e==`string`&&/\$t\([^)]*\{[^}]*\{\{/.test(e)&&this.logger.warn(`nesting options string contains interpolated variables with escapeValue: false — if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.`);let l=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,u=r?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:r.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>rs(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?rs(this.escape(e)):rs(e)}].forEach(t=>{for(o=0;i=t.regex.exec(e);){let n=i[1].trim();if(a=c(n),a===void 0)if(typeof l==`function`){let t=l(e,i,r);a=Y(t)?t:``}else if(r&&Object.prototype.hasOwnProperty.call(r,n))a=``;else if(u){a=i[0];continue}else this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),a=``;else !Y(a)&&!this.useRawValueToEscape&&(a=wo(a));let s=t.safeValue(a);if(e=e.replace(i[0],s),u?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=i[0].length):t.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,i,a,o=(e,t)=>{let n=this.nestingOptionsSeparator;if(!e.includes(n))return e;let r=e.split(RegExp(`${X(n)}[ ]*{`)),i=`{${r[1]}`;e=r[0],i=this.interpolate(i,a);let o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||(s?.length??0)%2!=0)&&(i=i.replace(/'/g,`"`));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${n}${i}`}return a.defaultValue&&a.defaultValue.includes(this.prefix)&&delete a.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let s=[];a={...n},a=a.replace&&!Y(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;let c=/{.*}/.test(r[1])?r[1].lastIndexOf(`}`)+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(s=r[1].slice(c).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),i=t(o.call(this,r[1].trim(),a),a),i&&r[0]===e&&!Y(i))return i;Y(i)||(i=wo(i)),i||=(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),``),s.length&&(i=s.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),i.trim())),e=e.replace(r[0],i),this.regexp.lastIndex=0}return e}},as=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes(`(`)){let r=e.split(`(`);t=r[0].toLowerCase().trim();let i=r[1].slice(0,-1);t===`currency`&&!i.includes(`:`)?n.currency||=i.trim():t===`relativetime`&&!i.includes(`:`)?n.range||=i.trim():i.split(`;`).forEach(e=>{if(e){let[t,...r]=e.split(`:`),i=r.join(`:`).trim().replace(/^'+|'+$/g,``),a=t.trim();n[a]||(n[a]=i),i===`false`&&(n[a]=!1),i===`true`&&(n[a]=!0),isNaN(i)||(n[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:n}},os=e=>{let t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let o=r+JSON.stringify(a),s=t[o];return s||(s=e(Ho(r),i),t[o]=s),s(n)}},ss=e=>(t,n,r)=>e(Ho(n),r)(t),cs=class{constructor(e={}){this.logger=Z.create(`formatter`),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||`,`;let n=t.cacheInBuiltFormats?os:ss;this.formats={number:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t,style:`currency`});return e=>n.format(e)}),datetime:n((e,t)=>{let n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{let n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||`day`)}),list:n((e,t)=>{let n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=os(t)}format(e,t,n,r={}){if(!t||e==null)return e;let i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf(`(`)>1&&!i[0].includes(`)`)&&i.find(e=>e.includes(`)`))){let e=i.findIndex(e=>e.includes(`)`));i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{let{formatName:i,formatOptions:a}=as(t);if(this.formats[i]){let t=e;try{let o=r?.formatParams?.[r.interpolationkey]||{},s=o.locale||o.lng||r.locale||r.lng||n;t=this.formats[i](e,s,{...a,...r,...o})}catch(e){this.logger.warn(e)}return t}else this.logger.warn(`there was no format function for ${i}`);return e},e)}},ls=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},us=class extends Wo{constructor(e,t,n,r={}){super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=Z.create(`backendConnector`),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,r.backend,r)}queueLoad(e,t,n,r){let i={},a={},o={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{let o=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[o]=2:this.state[o]<0||(this.state[o]===1?a[o]===void 0&&(a[o]=!0):(this.state[o]=1,r=!1,a[o]===void 0&&(a[o]=!0),i[o]===void 0&&(i[o]=!0),s[t]===void 0&&(s[t]=!0)))}),r||(o[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){let r=e.split(`|`),i=r[0],a=r[1];t&&this.emit(`failedLoading`,i,a,t),!t&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);let o={};this.queue.forEach(n=>{jo(n.loaded,[i],a),ls(n,e),t&&n.errors.push(t),n.pendingCount===0&&!n.done&&(Object.keys(n.loaded).forEach(e=>{o[e]||(o[e]={});let t=n.loaded[e];t.length&&t.forEach(t=>{o[e][t]===void 0&&(o[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit(`loaded`,o),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;let o=(o,s)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}if(o&&s&&r<this.maxRetries){setTimeout(()=>{this.read(e,t,n,r+1,i*2,a)},i);return}a(o,s)},s=this.backend[n].bind(this.backend);if(s.length===2){try{let n=s(e,t);n&&typeof n.then==`function`?n.then(e=>o(null,e)).catch(o):o(null,n)}catch(e){o(e)}return}return s(e,t,o)}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn(`No backend was added via i18next.use. Will not load resources.`),r&&r();Y(e)&&(e=this.languageUtils.toResolveHierarchy(e)),Y(t)&&(t=[t]);let i=this.queueLoad(e,t,n,r);if(!i.toLoad.length)return i.pending.length||r(),null;i.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=``){let n=e.split(`|`),r=n[0],i=n[1];this.read(r,i,`read`,void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${i} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,i,a={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${n}" as the namespace "${t}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`);return}if(!(n==null||n===``)){if(this.backend?.create){let s={...a,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=c.length===5?c(e,t,n,r,s):c(e,t,n,r),i&&typeof i.then==`function`?i.then(e=>o(null,e)).catch(o):o(null,i)}catch(e){o(e)}else c(e,t,n,r,o,s)}!e||!e[0]||this.store.addResource(e[0],t,n,r)}}},ds=()=>({debug:!1,initAsync:!0,ns:[`translation`],defaultNS:[`translation`],fallbackLng:[`dev`],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:`all`,preload:!1,keySeparator:`.`,nsSeparator:`:`,pluralSeparator:`_`,contextSeparator:`_`,enableSelector:!1,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:`fallback`,saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]==`object`&&(t=e[1]),Y(e[1])&&(t.defaultValue=e[1]),Y(e[2])&&(t.tDescription=e[2]),typeof e[2]==`object`||typeof e[3]==`object`){let n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,prefix:`{{`,suffix:`}}`,formatSeparator:`,`,unescapePrefix:`-`,nestingPrefix:`$t(`,nestingSuffix:`)`,nestingOptionsSeparator:`,`,maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),fs=e=>(Y(e.ns)&&(e.ns=[e.ns]),Y(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),Y(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes(`cimode`)&&(e.supportedLngs=e.supportedLngs.concat([`cimode`])),e),ps=()=>{},ms=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{typeof e[t]==`function`&&(e[t]=e[t].bind(e))})},Q=class e extends Wo{constructor(e={},t){if(super(),this.options=fs(e),this.services={},this.logger=Z,this.modules={external:[]},ms(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e==`function`&&(t=e,e={}),e.defaultNS==null&&e.ns&&(Y(e.ns)?e.defaultNS=e.ns:e.ns.includes(`translation`)||(e.defaultNS=e.ns[0]));let n=ds();this.options={...n,...this.options,...fs(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!=`function`&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler);let r=e=>e?typeof e==`function`?new e:e:null;if(!this.options.isClone){this.modules.logger?Z.init(r(this.modules.logger),this.options):Z.init(null,this.options);let e;e=this.modules.formatter?this.modules.formatter:cs;let t=new Qo(this.options);this.store=new Go(this.options.resources,this.options);let n=this.services;n.logger=Z,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new ts(t,{prepend:this.options.pluralSeparator}),e&&(n.formatter=r(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new is(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new us(r(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=r(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=r(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new Zo(this.services,this.options),this.translator.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||=ps,this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&e[0]!==`dev`&&(this.options.lng=e[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn(`init: no languageDetector is used and no lng is defined`),[`getResource`,`hasResourceBundle`,`getResourceBundle`,`getDataByLanguage`].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),[`addResource`,`addResources`,`addResourceBundle`,`removeResourceBundle`].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let i=Co(),a=()=>{let e=(e,n)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn(`init: i18next is already initialized. You should call init just once!`),this.isInitialized=!0,this.options.isClone||this.logger.log(`initialized`,this.options),this.emit(`initialized`,this.options),i.resolve(n),t(e,n)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),i}loadResources(e,t=ps){let n=t,r=Y(e)?e:this.language;if(typeof e==`function`&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()===`cimode`&&(!this.options.preload||this.options.preload.length===0))return n();let e=[],t=t=>{t&&t!==`cimode`&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{t!==`cimode`&&(e.includes(t)||e.push(t))})};r?t(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{!e&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(e)})}else n(null)}reloadResources(e,t,n){let r=Co();return typeof e==`function`&&(n=e,e=void 0),typeof t==`function`&&(n=t,t=void 0),e||=this.languages,t||=this.options.ns,n||=ps,this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw Error(`You are passing an undefined module! Please check the object you are passing to i18next.use()`);if(!e.type)throw Error(`You are passing a wrong module! Please check the object you are passing to i18next.use()`);return e.type===`backend`&&(this.modules.backend=e),(e.type===`logger`||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type===`languageDetector`&&(this.modules.languageDetector=e),e.type===`i18nFormat`&&(this.modules.i18nFormat=e),e.type===`postProcessor`&&Ko.addPostProcessor(e),e.type===`formatter`&&(this.modules.formatter=e),e.type===`3rdParty`&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&![`cimode`,`dev`].includes(e)){for(let e=0;e<this.languages.length;e++){let t=this.languages[e];if(![`cimode`,`dev`].includes(t)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&!this.languages.includes(e)&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;let n=Co();this.emit(`languageChanging`,e);let r=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},i=(i,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit(`languageChanged`,a),this.logger.log(`languageChanged`,a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(i,(...e)=>this.t(...e))},a=t=>{!e&&!t&&this.services.languageDetector&&(t=[]);let n=Y(t)?t:t&&t[0],a=this.store.hasLanguageSomeTranslations(n)?n:this.services.languageUtils.getBestMatchFromCodes(Y(t)?[t]:t);a&&(this.language||r(a),this.translator.language||this.translator.changeLanguage(a),this.services.languageDetector?.cacheUserLanguage?.(a)),this.loadResources(a,e=>{i(e,a)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e),n}getFixedT(e,t,n,r){let i=r?.scopeNs,a=(e,t,...r)=>{let o;o=typeof t==`object`?{...t}:this.options.overloadTranslationOptionHandler([e,t].concat(r)),o.lng=o.lng||a.lng,o.lngs=o.lngs||a.lngs;let s=o.ns!==void 0&&o.ns!==null;o.ns=o.ns||a.ns,o.keyPrefix!==``&&(o.keyPrefix=o.keyPrefix||n||a.keyPrefix);let c={...this.options,...o};Array.isArray(i)&&!s&&(c.ns=i),typeof o.keyPrefix==`function`&&(o.keyPrefix=Yo(o.keyPrefix,c));let l=this.options.keySeparator||`.`,u;return o.keyPrefix&&Array.isArray(e)?u=e.map(e=>(typeof e==`function`&&(e=Yo(e,c)),`${o.keyPrefix}${l}${e}`)):(typeof e==`function`&&(e=Yo(e,c)),u=o.keyPrefix?`${o.keyPrefix}${l}${e}`:e),this.t(u,o)};return Y(e)?a.lng=e:a.lngs=e,a.ns=t,a.keyPrefix=n,a}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn(`hasLoadedNamespace: i18next was not initialized`,this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn(`hasLoadedNamespace: i18n.languages were undefined or empty`,this.languages),!1;let n=t.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()===`cimode`)return!0;let a=(e,t)=>{let n=this.services.backendConnector.state[`${e}|${t}`];return n===-1||n===0||n===2};if(t.precheck){let e=t.precheck(this,a);if(e!==void 0)return e}return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,e)&&(!r||a(i,e)))}loadNamespaces(e,t){let n=Co();return this.options.ns?(Y(e)&&(e=[e]),e.forEach(e=>{this.options.ns.includes(e)||this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){let n=Co();Y(e)&&(e=[e]);let r=this.options.preload||[],i=e.filter(e=>!r.includes(e)&&this.services.languageUtils.isSupportedCode(e));return i.length?(this.options.preload=r.concat(i),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){if(e||=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language),!e)return`rtl`;try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch{}let t=`ar.shu.sqr.ssh.xaa.yhd.yud.aao.abh.abv.acm.acq.acw.acx.acy.adf.ads.aeb.aec.afb.ajp.apc.apd.arb.arq.ars.ary.arz.auz.avl.ayh.ayl.ayn.ayp.bbz.pga.he.iw.ps.pbt.pbu.pst.prp.prd.ug.ur.ydd.yds.yih.ji.yi.hbo.men.xmn.fa.jpr.peo.pes.prs.dv.sam.ckb`.split(`.`),n=this.services?.languageUtils||new Qo(ds());return e.toLowerCase().indexOf(`-latn`)>1?`ltr`:t.includes(n.getLanguagePartFromCode(e))||e.toLowerCase().indexOf(`-arab`)>1?`rtl`:`ltr`}static createInstance(t={},n){let r=new e(t,n);return r.createInstance=e.createInstance,r}cloneInstance(t={},n=ps){let r=t.forkResourceStore;r&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},a=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),[`store`,`services`,`language`].forEach(e=>{a[e]=this[e]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new Go(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{}),i),a.services.resourceStore=a.store),t.interpolation){let e={...ds().interpolation,...this.options.interpolation,...t.interpolation},n={...i,interpolation:e};a.services.interpolator=new is(n)}return a.translator=new Zo(a.services,i),a.translator.on(`*`,(e,...t)=>{a.emit(e,...t)}),a.init(i,n),a.translator.options=i,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}.createInstance();Q.createInstance,Q.dir,Q.init,Q.loadResources,Q.reloadResources,Q.use,Q.changeLanguage,Q.getFixedT,Q.t,Q.exists,Q.setDefaultNamespace,Q.hasLoadedNamespace,Q.loadNamespaces,Q.loadLanguages;var hs=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);Ss(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},gs={},_s=(e,t,n,r)=>{Ss(n)&&gs[n]||(Ss(n)&&(gs[n]=new Date),hs(e,t,n,r))},vs=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},ys=(e,t,n)=>{e.loadNamespaces(t,vs(e,n))},bs=(e,t,n,r)=>{if(Ss(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return ys(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,vs(e,r))},xs=(e,t,n={})=>!t.languages||!t.languages.length?(_s(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),Ss=e=>typeof e==`string`,Cs=e=>typeof e==`object`&&!!e,ws=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Ts={"&amp;":`&`,"&#38;":`&`,"&lt;":`<`,"&#60;":`<`,"&gt;":`>`,"&#62;":`>`,"&apos;":`'`,"&#39;":`'`,"&quot;":`"`,"&#34;":`"`,"&nbsp;":` `,"&#160;":` `,"&copy;":`©`,"&#169;":`©`,"&reg;":`®`,"&#174;":`®`,"&hellip;":`…`,"&#8230;":`…`,"&#x2F;":`/`,"&#47;":`/`},Es=e=>Ts[e],Ds={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(ws,Es),transDefaultProps:void 0},Os=(e={})=>{Ds={...Ds,...e}},ks=()=>Ds,As,js=e=>{As=e},Ms=()=>As,Ns={type:`3rdParty`,init(e){Os(e.options.react),js(e)}};_();var Ps=s(),Fs=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},Is=t((t=>{var n=(_(),e(C));function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useState,o=n.useEffect,s=n.useLayoutEffect,c=n.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;t.useSyncExternalStore=n.useSyncExternalStore===void 0?f:n.useSyncExternalStore})),Ls=t(((e,t)=>{t.exports=Is()}));_();var Rs=Ls(),zs={t:(e,t)=>{if(Ss(t))return t;if(Cs(t)&&Ss(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},Bs=()=>()=>{},Vs=(e,t={})=>{let{i18n:n}=t,{i18n:r,defaultNS:i}=f(Ps)||{},a=n||r||Ms();a&&!a.reportNamespaces&&(a.reportNamespaces=new Fs),a||_s(a,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next`);let o=b(()=>({...ks(),...a?.options?.react,...t}),[a,t]),{useSuspense:s,keyPrefix:c}=o,u=e||i||a?.options?.defaultNS,p=Ss(u)?[u]:u||[`translation`],m=b(()=>p,p);a?.reportNamespaces?.addUsedNamespaces?.(m);let h=d(0),g=l(e=>{if(!a)return Bs;let{bindI18n:t,bindI18nStore:n}=o,r=()=>{h.current+=1,e()};return t&&a.on(t,r),n&&a.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>a.off(e,r)),n&&n.split(` `).forEach(e=>a.store.off(e,r))}},[a,o]),_=d(),v=l(()=>{if(!a)return zs;let e=!!(a.isInitialized||a.initializedStoreOnce)&&m.every(e=>xs(e,a,o)),n=t.lng||a.language,r=h.current,i=_.current;if(i&&i.ready===e&&i.lng===n&&i.keyPrefix===c&&i.revision===r)return i;let s={t:a.getFixedT(n,o.nsMode===`fallback`?m:m[0],c,{scopeNs:m}),ready:e,lng:n,keyPrefix:c,revision:r};return _.current=s,s},[a,m,c,o,t.lng]),[y,x]=A(0),{t:S,ready:C}=(0,Rs.useSyncExternalStore)(g,v,v);N(()=>{if(a&&!C&&!s){let e=()=>x(e=>e+1);t.lng?bs(a,t.lng,m,e):ys(a,m,e)}},[a,t.lng,m,C,s,y]);let w=a||{},T=d(null),E=d(),D=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,"__original",{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},O=b(()=>{let e=w,t=e?.language,n=e;e&&(T.current&&T.current.__original===e&&E.current===t?n=T.current:(n=D(e),T.current=n,E.current=t));let r=!C&&!s?(...e)=>(_s(a,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),S(...e)):S,i=[r,n,C];return i.t=r,i.i18n=n,i.ready=C,i},[S,w,C,w.resolvedLanguage,w.language,w.languages]);if(a&&s&&!C)throw new Promise(e=>{let n=()=>e();t.lng?bs(a,t.lng,m,n):ys(a,m,n)});return O},Hs=/\p{Mn}/gu;function Us(e){return e.normalize(`NFD`).replace(Hs,``).toLowerCase().trim()}var Ws=[`device`,`page`,`integration`];function Gs(e,t,n){return e===n?0:e.startsWith(n)?1:e.split(/\s+/).some(e=>e.startsWith(n))?2:e.includes(n)?3:t.some(e=>e.includes(n))?4:null}function Ks(e,t){let n=0;for(let r=0;r<e.length&&n<t.length;r++)e[r]===t[n]&&n++;return n===t.length}function qs(e){return e<4?0:e<=7?1:e<=12?2:3}function Js(e,t,n){if(e===t)return 0;if(n<=0||Math.abs(e.length-t.length)>n)return null;let r=t.length,i=Array(r+1).fill(0),a=Array.from({length:r+1},(e,t)=>t),o=Array(r+1).fill(0);for(let s=1;s<=e.length;s++){o[0]=s;let c=s,l=e[s-1];for(let n=1;n<=r;n++){let r=t[n-1],u=l===r?0:1,d=Math.min((a[n]??1/0)+1,o[n-1]+1,(a[n-1]??1/0)+u);s>1&&n>1&&l===t[n-2]&&e[s-2]===r&&(d=Math.min(d,(i[n-2]??1/0)+1)),o[n]=d,d<c&&(c=d)}if(c>n)return null;let u=i;i=a,a=o,o=u}let s=a[r]??1/0;return s<=n?s:null}function Ys(e,t){if(Ks(e,t))return 5;let n=qs(t.length);if(n>0){for(let r of e.split(/\s+/))if(Js(r,t,n)!==null)return 6}return null}function Xs(e,t,n=200){let r=Us(t);if(r.length===0)return{groups:[],totalMatched:0,truncated:!1};let i=new Map;for(let t of e){let e=Us(t.label),n=Gs(e,(t.keywords??[]).map(Us),r)??Ys(e,r);if(n===null)continue;let a=i.get(t.domain)??[];a.push({item:t,rank:n}),i.set(t.domain,a)}let a=0;for(let e of i.values())a+=e.length;let o=n,s=[];for(let e of Ws){let t=i.get(e);if(!t||t.length===0||o<=0)continue;t.sort((e,t)=>e.rank-t.rank||e.item.label.localeCompare(t.item.label));let n=t.slice(0,o).map(e=>e.item);o-=n.length,s.push({domain:e,items:n})}return{groups:s,totalMatched:a,truncated:a>n}}function Zs(e){return e.flatMap(e=>e.items)}function Qs(e,t){return e.filter(e=>!e.adminOnly||t)}function $s({t:e,isAdmin:t}){let n=Qs([{label:e(`nav.devices`,`Devices`),icon:ri,path:`/devices`},{label:e(`nav.integrations`),icon:Mi,path:`/integrations`},{label:e(`nav.build`,`Build-your-self`),icon:Ci,path:`/build`,adminOnly:!0},{label:e(`nav.viewer`,`Viewer`),icon:ki,path:`/viewer/camstack/`,external:!0}],t),r=Qs([{label:e(`nav.pipeline`,`Pipeline`),icon:xi,path:`/pipeline`},{label:e(`nav.detectionIntelligence`,`People`),icon:Fi,path:`/detection-intelligence`,adminOnly:!0},{label:e(`nav.vehicles`,`Vehicles`),icon:ii,path:`/plates`,adminOnly:!0},{label:e(`nav.events`,`Library`),icon:Qr,path:`/events`,adminOnly:!0},{label:e(`nav.scenes`,`Scenes`),icon:Pi,path:`/scenes`,adminOnly:!0},{label:e(`nav.recordings`,`Recordings`),icon:vi,path:`/recordings`,adminOnly:!0}],t),i=Qs([{label:e(`system.cluster`,`Cluster`),icon:ji,path:`/system/cluster`,adminOnly:!0},{label:e(`system.addons`),icon:Ni,path:`/system/addons`,adminOnly:!0},{label:e(`system.ai`,`AI`),icon:Ui,path:`/system/ai`,adminOnly:!0}],t),a=Qs([{label:e(`system.identity`,`Identity & Access`),icon:Ei,path:`/system/identity`,adminOnly:!0},{label:e(`system.network`,`Network`),icon:Si,path:`/system/network`,adminOnly:!0},{label:e(`system.integrations`,`Connectivity`),icon:Mi,path:`/system/integrations`,adminOnly:!0},{label:e(`system.data`,`Data`),icon:mi,path:`/system/data`,adminOnly:!0},{label:e(`system.notifications`,`Notifications`),icon:ei,path:`/system/notifications`,adminOnly:!0},{label:e(`system.capabilities`,`Capabilities`),icon:Vi,path:`/system/capabilities`,adminOnly:!0},{label:e(`system.systemNav`,`System`),icon:Ri,path:`/system/settings`,adminOnly:!0},{label:e(`system.logs`,`Logs`),icon:Ii,path:`/system/logs`,adminOnly:!0},{label:e(`system.terminal`,`Terminal`),icon:Gi,path:`/system/terminal`,adminOnly:!0}],t);return[{key:`top`,label:null,items:n},{key:`detection`,label:e(`nav.detectionSection`,`Detection`),items:r},{key:`cluster`,label:e(`nav.clusterSection`,`Cluster & Server`),items:i},{key:`administration`,label:e(`system.title`,`Administration`),items:a}]}var ec={gauge:bi,puzzle:Ni,bot:ti,cpu:pi,terminal:Gi,box:ni,wrench:Xi,activity:Qr,plug:Mi};function tc(e){return ec[e]??Ni}function nc(e){return e.map(e=>({key:`device:${String(e.id)}`,domain:`device`,label:e.name||e.stableId||`#${String(e.id)}`,subtitle:e.disabled?`${e.type} · disabled`:e.type,keywords:[e.stableId,e.addonId,e.location??``].filter(e=>e.length>0),path:`/devices/${String(e.id)}`,icon:ie(e.type).icon}))}function rc(e){return e.map(e=>({key:`integration:${e.id}`,domain:`integration`,label:e.name||e.addonId,subtitle:e.enabled?e.addonId:`${e.addonId} · disabled`,keywords:[e.addonId,e.processState],path:`/integrations/${e.id}`}))}function ic(e,t,n){let r=e.section?.trim();return r?t[r]??e.sectionLabel?.trim()??r:n}function ac(e,t,n){let r=e.flatMap(e=>e.items.map(t=>({key:`page:${t.path}`,domain:`page`,label:t.label,subtitle:e.label??void 0,path:t.path,external:t.external,icon:t.icon}))),i={detection:n.detection,cluster:n.cluster,administration:n.administration},a=t.map(e=>({key:`page:addon:${e.addonId}:${e.id}`,domain:`page`,label:e.label,subtitle:ic(e,i,n.ungrouped),keywords:[e.addonId],path:e.path,icon:tc(e.icon)}));return[...r,...a]}_();var oc={device:{label:`Devices`,icon:ri},page:{label:`Pages`,icon:fi},integration:{label:`Integrations`,icon:Mi}};function sc({groups:e,activeKey:t,query:n,totalMatched:r,truncated:i,onSelect:a,onHover:o}){let{t:s}=Vs(),c=d(null);if(N(()=>{t&&(c.current?.querySelector(`[data-key="${CSS.escape(t)}"]`))?.scrollIntoView({block:`nearest`})},[t]),n.trim().length===0)return null;if(e.length===0)return v(`div`,{className:`px-3 py-4 text-center text-[12px] text-foreground-subtle`,children:[`No results for “`,n,`”`]});let l=e.reduce((e,t)=>e+t.items.length,0);return v(T,{children:[M(`div`,{ref:c,role:`listbox`,className:`max-h-[60vh] overflow-y-auto py-1`,children:e.map(e=>{let n=oc[e.domain],r=n.icon;return v(`div`,{className:`px-1 py-1`,children:[v(`div`,{className:`sticky top-0 z-10 flex items-center gap-1.5 bg-surface px-2 py-1 text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:[M(r,{className:`h-3 w-3`}),n.label]}),e.items.map(e=>{let r=e.icon??n.icon,i=e.key===t;return v(`button`,{type:`button`,role:`option`,"aria-selected":i,"data-key":e.key,onMouseEnter:()=>o(e),onClick:()=>a(e),className:`flex w-full items-center gap-2.5 rounded-md px-2 py-1.5 text-left text-[12px] transition-colors ${i?`bg-primary/12 text-primary`:`text-foreground hover:bg-surface-hover`}`,children:[M(r,{className:`h-3.5 w-3.5 shrink-0 ${i?`text-primary`:`text-foreground-subtle`}`}),v(`span`,{className:`flex-1 min-w-0`,children:[M(`span`,{className:`block truncate font-medium`,children:e.label}),e.subtitle&&M(`span`,{className:`block truncate text-[10px] text-foreground-subtle`,children:e.subtitle})]})]},e.key)})]},e.domain)})}),i&&M(`div`,{className:`border-t border-border px-3 py-1.5 text-center text-[10px] text-foreground-subtle`,children:s(`search.truncatedResults`,`Showing first {{shown}} of {{total}} — refine your search.`,{shown:l,total:r})})]})}_();function cc({navSections:e,addonPages:t,compact:n,onNavigated:r}){let{t:i}=Vs(),a=G(),o=d(null),s=d(null),[c,u]=A(``),[f,p]=A(0),[m,h]=A(!1),{data:g}=de({}),{data:_}=Pe(void 0),y=b(()=>{let n={detection:i(`nav.detectionSection`,`Detection`),cluster:i(`nav.clusterSection`,`Cluster & Server`),administration:i(`system.title`,`Administration`),ungrouped:i(`nav.addonPages`,`Addon Pages`)};return[...nc(g??[]),...ac(e,t,n),...rc(_??[])]},[g,_,e,t,i]),{groups:x,totalMatched:S,truncated:C}=b(()=>Xs(y,c),[y,c]),w=b(()=>Zs(x),[x]);N(()=>{p(0)},[c,y]),N(()=>{m&&o.current?.focus()},[m]);let T=l(()=>{h(!1),u(``),p(0)},[]),E=l(e=>{e.external?window.open(e.path,`_blank`,`noopener,noreferrer`):a(e.path),T(),o.current?.blur(),r?.()},[a,T,r]);N(()=>{function e(e){(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),h(!0))}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),N(()=>{if(!m)return;function e(e){s.current&&e.target instanceof Node&&!s.current.contains(e.target)&&h(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[m]);let D=w[f]?.key??null,O=i(`search.placeholder`,`Search devices, pages, integrations…`),k=v(`div`,{className:`relative`,children:[M(Li,{className:`pointer-events-none absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-foreground-subtle`}),M(`input`,{ref:o,type:`text`,value:c,placeholder:O,"aria-label":O,role:`combobox`,"aria-expanded":m&&c.trim().length>0,"aria-controls":`global-search-results`,onChange:e=>{u(e.target.value),h(!0)},onFocus:()=>h(!0),onKeyDown:e=>{if(e.key===`ArrowDown`)e.preventDefault(),w.length>0&&p(e=>(e+1)%w.length);else if(e.key===`ArrowUp`)e.preventDefault(),w.length>0&&p(e=>(e-1+w.length)%w.length);else if(e.key===`Enter`){e.preventDefault();let t=w[f];t&&E(t)}else e.key===`Escape`&&(e.preventDefault(),T(),o.current?.blur())},className:`w-full rounded-md border border-border bg-surface py-1.5 pl-7 pr-6 text-[12px] text-foreground placeholder:text-foreground-subtle/70 focus:outline-none focus:ring-1 focus:ring-primary/50`}),c.length>0&&M(`button`,{type:`button`,"aria-label":`Clear search`,onClick:()=>{u(``),o.current?.focus()},className:`absolute right-1.5 top-1/2 -translate-y-1/2 text-foreground-subtle hover:text-foreground`,children:M(Yi,{className:`h-3 w-3`})}),m&&c.trim().length>0&&M(`div`,{id:`global-search-results`,className:`absolute left-0 right-0 top-full z-50 mt-1 rounded-lg border border-border bg-surface shadow-xl`,children:M(sc,{groups:x,activeKey:D,query:c,totalMatched:S,truncated:C,onSelect:E,onHover:e=>{let t=w.findIndex(t=>t.key===e.key);t>=0&&p(t)}})})]});return n?M(`div`,{ref:s,className:`px-1.5 pb-1.5`,children:m?M(`div`,{className:`fixed z-50 w-72`,style:{left:`calc(env(safe-area-inset-left) + 3.5rem)`,top:`calc(env(safe-area-inset-top) + 3.5rem)`},children:k}):M(`button`,{type:`button`,onClick:()=>h(!0),"aria-label":O,title:O,className:`flex w-full items-center justify-center rounded-md px-0 py-2 text-foreground-subtle hover:bg-surface-hover hover:text-foreground transition-colors`,children:M(Li,{className:`h-3.5 w-3.5 shrink-0`})})}):M(`div`,{ref:s,className:`px-2 pb-2`,children:k})}var lc=/^(\d{1,3}\.){3}\d{1,3}$/;function uc(e){let t=e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1):e;return!!(lc.test(t)||t.includes(`:`))}function dc(e,t){return!t||uc(e)?!1:e===t||e.endsWith(`.${t}`)}_();var fc=`auth-webauthn/passkey-enrollment`,pc=`camstack_passkey_prompt_dismissed:`,mc=720*60*60*1e3;function hc(e){try{let t=localStorage.getItem(`${pc}${e}`);if(!t)return!1;let n=Number(t);return Number.isFinite(n)?Date.now()-n<mc:!1}catch{return!1}}function gc(e){try{localStorage.setItem(`${pc}${e}`,String(Date.now()))}catch{}}function _c(){let{user:e}=po(),{t}=Vs(),n=P(),r=we(fc),[i,a]=A(!1),[o,s]=A(!1),c=b(()=>e?hc(e.id):!0,[e]),u=ce.auth.listLoginMethods.useQuery().data?.find(e=>e.kind===`passkey`),d=u!==void 0&&dc(window.location.hostname,u.rpId),f=e!==null&&d&&r!=null&&!c,p=w({queryKey:[`auth`,`listOwnPasskeys`],queryFn:()=>n.listOwnPasskeys(),enabled:f,staleTime:6e4}),m=l(()=>{e&&gc(e.id),a(!0),s(!1)},[e]),h=l(()=>{s(!1),p.refetch()},[p]);return!f||i||p.data===void 0||p.data.length>0?null:v(`div`,{className:`shrink-0 border-b border-primary/20 bg-primary/5`,children:[v(`div`,{className:`flex items-center gap-2.5 px-3 py-2 text-xs text-foreground`,children:[M(yi,{className:`h-4 w-4 text-primary shrink-0`}),M(`span`,{className:`flex-1 min-w-0`,children:t(`passkeyPrompt.message`,`Save a passkey for faster sign-in?`)}),M(`button`,{onClick:()=>s(e=>!e),className:`rounded bg-primary px-2.5 py-1 text-[11px] font-semibold text-primary-foreground hover:bg-primary/90`,children:t(`passkeyPrompt.enrollNow`,`Enroll now`)}),M(`button`,{onClick:m,className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-[11px] text-foreground-subtle hover:text-foreground hover:bg-surface-hover`,children:t(`passkeyPrompt.notNow`,`Not now`)}),M(`button`,{onClick:m,"aria-label":t(`passkeyPrompt.notNow`,`Not now`),className:`p-1 rounded text-foreground-subtle hover:text-foreground`,children:M(Yi,{className:`h-3.5 w-3.5`})})]}),o&&M(`div`,{className:`px-3 pb-3`,children:v(`div`,{className:`max-w-xl`,children:[M(he,{widgetId:fc,host:`dashboard`}),M(`div`,{className:`mt-2 flex justify-end`,children:M(`button`,{onClick:h,className:`rounded border border-border px-2.5 py-1 text-[11px] text-foreground-subtle hover:text-foreground hover:bg-surface-hover`,children:t(`common.close`,`Close`)})})]})})]})}_();var vc={info:wi,success:di,warning:qi,error:ui},yc={info:`text-blue-400`,success:`text-green-400`,warning:`text-amber-400`,error:`text-red-400`},bc={active:`border-l-blue-400`,"in-progress":`border-l-amber-400`,completed:`border-l-green-400`,failed:`border-l-red-400`,dismissed:`border-l-foreground-subtle/30`};function xc(e){let t=Math.floor((Date.now()-e)/1e3);if(t<60)return`just now`;let n=Math.floor(t/60);if(n<60)return`${String(n)}m ago`;let r=Math.floor(n/60);if(r<24)return`${String(r)}h ago`;let i=Math.floor(r/24);return`${String(i)}d ago`}function Sc({alert:e,onMarkRead:t,onDismiss:n}){let r=e.severity in vc?e.severity:`info`,i=e.status in bc?e.status:`active`,a=vc[r],o=yc[r],s=bc[i];return v(`div`,{className:`flex items-start gap-2.5 px-3 py-2.5 border-l-2 ${s} ${e.read?`opacity-60`:``} hover:bg-surface-hover transition-colors`,children:[M(a,{className:`h-3.5 w-3.5 shrink-0 mt-0.5 ${o}`}),v(`div`,{className:`flex-1 min-w-0`,children:[v(`div`,{className:`flex items-center gap-1.5`,children:[M(`span`,{className:`text-[11px] font-semibold ${e.read?`text-foreground-subtle`:`text-foreground`}`,children:e.title}),!e.read&&M(`span`,{className:`h-1.5 w-1.5 rounded-full bg-primary shrink-0`})]}),M(`div`,{className:`text-[10px] text-foreground-subtle mt-0.5 line-clamp-2`,children:e.message}),e.status===`in-progress`&&e.progress!==void 0&&v(`div`,{className:`mt-1.5 flex items-center gap-2`,children:[M(`div`,{className:`flex-1 h-1 bg-surface-hover rounded-full overflow-hidden`,children:M(`div`,{className:`h-full bg-primary rounded-full transition-all duration-300`,style:{width:`${String(Math.min(100,Math.max(0,e.progress)))}%`}})}),v(`span`,{className:`text-[9px] text-foreground-subtle font-mono shrink-0`,children:[String(Math.round(e.progress)),`%`]})]}),M(`div`,{className:`text-[9px] text-foreground-subtle/60 mt-1`,children:xc(e.updatedAt)})]}),v(`div`,{className:`flex items-center gap-0.5 shrink-0`,children:[!e.read&&M(`button`,{type:`button`,onClick:n=>{n.stopPropagation(),t(e.id)},className:`p-1 rounded hover:bg-surface-hover transition-colors`,title:`Mark as read`,children:M(oi,{className:`h-3 w-3 text-foreground-subtle`})}),e.status!==`in-progress`&&M(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),n(e.id)},className:`p-1 rounded hover:bg-surface-hover transition-colors`,title:`Dismiss`,children:M(Yi,{className:`h-3 w-3 text-foreground-subtle`})})]})]})}function Cc({variant:e=`icon`,compact:t=!1}={}){let[n,r]=A(!1),[i,a]=A(!1),o=d(null),s=d(null),c=k(),{data:u=0}=ue(void 0,{refetchInterval:3e4}),{data:f=[],isLoading:p}=fe({limit:50},{enabled:n}),m=i?f:f.filter(e=>!e.read),h=f.filter(e=>e.read).length,g=()=>{c.invalidateQueries({queryKey:[[`alerts`]]})},_=se({onSuccess:g}),y=ae({onSuccess:g}),b=oe({onSuccess:g});F(`alert.created`,()=>{c.invalidateQueries({queryKey:[[`alerts`]]})}),F(`alert.updated`,()=>{c.invalidateQueries({queryKey:[[`alerts`]]})}),N(()=>{if(!n)return;let e=e=>{let t=e.target;o.current&&!o.current.contains(t)&&s.current&&!s.current.contains(t)&&r(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`touchstart`,e),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`touchstart`,e)}},[n]);let x=l(e=>{_.mutate({alertId:e})},[_]),S=l(e=>{e&&b.mutate({alertId:e})},[b]),C=l(()=>{y.mutate(void 0),r(!1)},[y]),w=m.filter(e=>e.status===`in-progress`),T=m.filter(e=>e.status!==`in-progress`),[E,D]=A({}),O=l(()=>{let e=s.current;if(!e)return;let t=e.getBoundingClientRect(),n=window.innerWidth,r=window.innerHeight,i=Math.min(320,n-16),a=t.left;a+i>n-8&&(a=n-8-i),a<8&&(a=8);let o=r-t.bottom,c=t.top,l={position:`fixed`,left:a,width:i,zIndex:9999};o>=c?(l.top=t.bottom+4,l.maxHeight=Math.max(160,o-8-4)):(l.bottom=r-t.top+4,l.maxHeight=Math.max(160,c-8-4)),D(l)},[]);return N(()=>{if(!n)return;O();let e=()=>O();return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[n,O]),v(`div`,{children:[e===`sidebar`?v(`button`,{ref:s,type:`button`,onClick:()=>r(!n),className:`flex w-full items-center gap-2.5 rounded-md ${t?`justify-center px-0 py-2`:`px-2.5 py-1.5`} text-[12px] text-foreground-subtle hover:bg-surface-hover hover:text-foreground transition-colors`,title:t?`Alerts${u>0?` (${u})`:``}`:void 0,children:[v(`span`,{className:`relative inline-flex shrink-0`,children:[M(Ii,{className:`h-3.5 w-3.5`}),t&&u>0&&M(`span`,{className:`absolute -top-1 -right-1 h-2 w-2 rounded-full bg-primary`})]}),!t&&M(`span`,{className:`flex-1 text-left`,children:`Alerts`}),!t&&u>0&&M(`span`,{className:`flex items-center justify-center h-4 min-w-4 px-1 rounded-full bg-primary text-primary-foreground text-[9px] font-bold leading-none`,children:u>99?`99+`:String(u)})]}):v(`button`,{ref:s,type:`button`,onClick:()=>r(!n),className:`relative p-1.5 rounded-md hover:bg-surface-hover text-foreground-subtle hover:text-foreground transition-colors`,"aria-label":`Alerts`,children:[M(Ii,{className:`h-4.5 w-4.5`}),u>0&&M(`span`,{className:`absolute -top-0.5 -right-0.5 flex items-center justify-center h-4 min-w-4 px-0.5 rounded-full bg-primary text-primary-foreground text-[9px] font-bold leading-none`,children:u>99?`99+`:String(u)})]}),n&&Ie(v(`div`,{ref:o,style:E,className:`bg-surface border border-border rounded-lg shadow-xl flex flex-col overflow-hidden`,children:[v(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[M(`span`,{className:`text-[12px] font-semibold text-foreground`,children:`Alerts`}),v(`div`,{className:`flex items-center gap-2`,children:[h>0&&v(`label`,{className:`flex items-center gap-1 text-[10px] text-foreground-subtle cursor-pointer select-none`,children:[M(`input`,{type:`checkbox`,checked:i,onChange:e=>a(e.target.checked),className:`h-3 w-3 rounded border-border accent-primary cursor-pointer`}),`Show read`]}),u>0&&v(`button`,{type:`button`,onClick:C,className:`flex items-center gap-1 text-[10px] text-primary hover:text-primary/80 transition-colors`,children:[M(ai,{className:`h-3 w-3`}),`Mark all read`]})]})]}),v(`div`,{className:`flex-1 overflow-y-auto`,children:[p&&M(`div`,{className:`flex items-center justify-center py-8`,children:M(Ti,{className:`h-4 w-4 animate-spin text-foreground-subtle`})}),!p&&m.length===0&&v(`div`,{className:`flex flex-col items-center justify-center py-8 text-foreground-subtle`,children:[M(Ii,{className:`h-6 w-6 mb-2 opacity-40`}),M(`span`,{className:`text-[11px]`,children:f.length>0?`No unread alerts`:`No alerts`}),f.length>0&&!i&&v(`button`,{type:`button`,onClick:()=>a(!0),className:`text-[10px] text-primary mt-1 hover:underline`,children:[`Show `,h,` read alert`,h===1?``:`s`]})]}),w.length>0&&v(`div`,{className:`border-b border-border`,children:[M(`div`,{className:`px-3 py-1.5 bg-surface-hover/50`,children:M(`span`,{className:`text-[9px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:`In Progress`})}),w.map(e=>M(Sc,{alert:e,onMarkRead:x,onDismiss:S},e.id))]}),T.map(e=>M(Sc,{alert:e,onMarkRead:x,onDismiss:S},e.id))]})]}),document.body)]})}_();function wc(){let e=Ma();return u(e.subscribe,e.getSnapshot,e.getSnapshot)}var Tc=[`detection`,`cluster`,`administration`];function Ec(e){return Tc.includes(e)}function Dc(e){let t=new Map,n=new Map,r=[];for(let i of e){let e=i.section?.trim();if(e===void 0||e.length===0){r.push(i);continue}if(Ec(e)){let n=t.get(e)??[];n.push(i),t.set(e,n);continue}let a=n.get(e);a?a.pages.push(i):n.set(e,{label:i.sectionLabel?.trim()||e,pages:[i]})}return{known:t,custom:[...n.entries()].map(([e,t])=>({id:e,label:t.label,pages:t.pages})),ungrouped:r}}var Oc=`camstack:last-path`,kc=512,Ac=[`/login`,`/change-password`,`/access-denied`,`/logout`];function jc(e){return!e.startsWith(`/`)||e.startsWith(`//`)||e.length>kc?!1:!Ac.some(t=>e===t||e.startsWith(t+`/`))}function Mc(e){if(!(typeof window>`u`)&&jc(e))try{window.localStorage.setItem(Oc,e)}catch{}}function Nc(){if(typeof window>`u`)return null;try{let e=window.localStorage.getItem(Oc);return e===null?null:jc(e)?e:null}catch{return null}}_();var Pc={dark:Ai,light:Wi,system:ki};function Fc(){let e=W(),t=G(),{user:n,logout:r}=po(),i=me(),{t:a}=Vs(),o=_e(),s=xe(),c=Sa(wc()),[l,u]=A(!1);N(()=>{Mc(e.pathname+e.search)},[e.pathname,e.search]);let[f,p]=A(()=>typeof window>`u`?!1:window.localStorage.getItem(`camstack:sidebar-collapsed`)===`1`);N(()=>{typeof window>`u`||window.localStorage.setItem(`camstack:sidebar-collapsed`,f?`1`:`0`)},[f]);let[m]=A(()=>{if(typeof window>`u`)return new Set;try{let e=window.localStorage.getItem(`camstack:sidebar-collapsed-groups`);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}});N(()=>{typeof window>`u`||window.localStorage.setItem(`camstack:sidebar-collapsed-groups`,JSON.stringify([...m]))},[m]),N(()=>{s&&window.localStorage.getItem(`camstack:sidebar-collapsed`)===null&&p(!0)},[s]);let{data:h=[]}=ne({nodeId:`hub`},{refetchInterval:3e4}),g=h.length,_=k(),y=d(Date.now()),{data:x}=Se(void 0,{staleTime:0,refetchOnMount:`always`,refetchInterval:e=>{let t=e.state.data;return t&&t.length>0||Date.now()-y.current>=3e4?!1:2e3}}),S=b(()=>x&&n?.isAdmin?go(x):[],[x,n?.isAdmin]),C=b(()=>Dc(S),[S]),w=C.known.get(`detection`)??[],E=C.known.get(`cluster`)??[],D=C.known.get(`administration`)??[];F(`addon.page-ready`,()=>{_.invalidateQueries({queryKey:[[`addonPages`,`listPages`]]})});let O=()=>{r(),t(`/login`)},j=t=>!!(e.pathname===t||e.pathname.startsWith(t+`/`)),ee=[`/pipeline`].some(t=>e.pathname===t||e.pathname.startsWith(t+`/`)),P=n?.isAdmin===!0,te=b(()=>$s({t:a,isAdmin:P}),[a,P]),re=te[0]?.items??[],ie=te[1]?.items??[],ae=te[2]?.items??[],oe=te[3]?.items??[],se=i?.mode??`system`,ce={dark:a(`theme.dark`),light:a(`theme.light`),system:a(`theme.system`)},I=f&&!o,le=(e,t=`md`)=>`flex w-full items-center gap-2.5 rounded-md ${I?`justify-center px-0 py-2`:`px-2.5 py-1.5`} ${t===`lg`?`text-[13px] font-medium`:`text-[12px]`} transition-all ${e?t===`lg`?`bg-primary/12 text-primary shadow-sm shadow-primary/5`:`bg-primary/12 text-primary`:`text-foreground-subtle hover:bg-surface-hover hover:text-foreground`}`,L=(e,t)=>e===0?null:I?M(`div`,{className:`pt-3 mb-1 mx-2 border-t border-border/60`},`sep-${t}`):M(`div`,{className:`pt-4 pb-1.5 px-2.5`,children:M(`span`,{className:`text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:t})},`hdr-${t}`),ue=e=>{let n=j(e.path),r=tc(e.icon);return v(`button`,{onClick:()=>{t(e.path),u(!1)},className:le(n),title:I?e.label:void 0,children:[M(r,{className:`h-3.5 w-3.5 shrink-0 ${n?`text-primary`:``}`}),!I&&e.label]},`${e.addonId}::${e.id}`)},de=e=>{let n=e.icon,r=e.external?!1:j(e.path),i=e.path===`/system/addons`;return v(`button`,{"data-testid":`nav-${e.path.replace(/^\//,``).replace(/\//g,`-`)}`,onClick:()=>{e.external?window.open(e.path,`_blank`,`noopener,noreferrer`):t(e.path),u(!1)},className:le(r),title:I?e.label:void 0,children:[M(n,{className:`h-3.5 w-3.5 shrink-0 ${r?`text-primary`:``}`}),!I&&v(T,{children:[M(`span`,{className:`flex-1 text-left`,children:e.label}),i&&g>0&&M(`span`,{className:`ml-auto rounded-full bg-primary px-1.5 py-0.5 text-[9px] font-bold text-primary-foreground leading-none`,children:g})]}),I&&i&&g>0&&M(`span`,{className:`absolute mt-[-14px] ml-3 h-2 w-2 rounded-full bg-primary`})]},e.path)},fe=v(T,{children:[v(`div`,{className:`flex h-14 items-center border-b border-border ${I?`justify-center px-1`:`pl-3 pr-4 gap-2`}`,children:[!I&&M(`img`,{src:i?.resolvedMode===`light`?`/brand/logo-horizontal-light.svg`:`/brand/logo-horizontal-dark.svg`,alt:`CamStack Admin`,className:`h-9 flex-1 min-w-0`}),!o&&M(`button`,{onClick:()=>p(e=>!e),className:`p-1.5 rounded-md hover:bg-surface-hover text-foreground-subtle transition-colors flex-shrink-0 ${I?``:`mr-2`}`,"aria-label":f?`Expand sidebar`:`Collapse sidebar`,title:f?`Expand sidebar`:`Collapse sidebar`,children:M(f?li:ci,{className:`h-4 w-4`})})]}),M(`div`,{className:`border-b border-border pt-2`,children:M(cc,{navSections:te,addonPages:S,compact:I,onNavigated:()=>u(!1)})}),v(`nav`,{className:`flex-1 overflow-y-auto py-3 ${I?`px-1.5`:`px-2`} space-y-0.5`,children:[re.map(e=>de(e)),L(ie.length+w.length,a(`nav.detectionSection`,`Detection`)),ie.map(e=>de(e)),w.map(e=>ue(e)),L(ae.length+E.length,a(`nav.clusterSection`,`Cluster & Server`)),ae.map(e=>de(e)),E.map(e=>ue(e)),L(oe.length+D.length,a(`system.title`,`Administration`)),oe.map(e=>de(e)),D.map(e=>ue(e)),C.custom.map(e=>v(`div`,{className:`contents`,children:[L(e.pages.length,e.label),e.pages.map(e=>ue(e))]},`custom-${e.id}`)),L(C.ungrouped.length,a(`nav.addonPages`,`Addon Pages`)),C.ungrouped.map(e=>ue(e))]}),v(`div`,{className:`border-t border-border ${I?`p-1.5`:`p-2`} space-y-0.5`,children:[v(`button`,{onClick:()=>i?.toggleMode(),className:le(!1),title:I?ce[se]:void 0,children:[(()=>{let e=Pc[se];return M(e,{className:`h-3.5 w-3.5 shrink-0`})})(),!I&&M(`span`,{children:ce[se]})]}),M(Cc,{variant:`sidebar`,compact:I}),v(`button`,{type:`button`,onClick:()=>t(`/system/my-access`),className:le(j(`/system/my-access`)),title:I?a(`system.myAccess`,`My access`):void 0,children:[M(zi,{className:`h-3.5 w-3.5 shrink-0`}),!I&&M(`span`,{className:`truncate`,children:a(`system.myAccess`,`My access`)})]}),v(`button`,{onClick:O,className:le(!1).replace(`hover:text-foreground`,`hover:text-danger`),title:I?n?.username??`Logout`:void 0,children:[M(Di,{className:`h-3.5 w-3.5 shrink-0`}),!I&&M(`span`,{className:`truncate`,children:n?.username??`User`})]}),M(`div`,{className:`pt-1 text-[10px] text-foreground-disabled select-none ${I?`text-center`:`px-2`}`,title:`admin-ui v1.2.101`,children:I?`1.2.101`:`v1.2.101`})]})]});return v(`div`,{className:`flex h-dvh overflow-hidden bg-background text-foreground pt-[env(safe-area-inset-top)] pb-[env(safe-area-inset-bottom)]`,children:[!o&&M(`aside`,{className:`flex flex-col border-r border-border bg-surface/80 backdrop-blur-sm shrink-0 transition-[width] duration-150 ease-out ${I?`w-12`:`w-48`}`,children:fe}),o&&M(be,{open:l,onClose:()=>u(!1),width:`w-64`,children:fe}),v(`div`,{className:`flex flex-1 flex-col min-w-0`,children:[c!==null&&v(`div`,{className:`flex items-center justify-center gap-2 px-3 py-2 text-[12px] font-medium shrink-0 ${c.severity===`danger`?`bg-danger/90 text-white`:`bg-warning/15 text-warning border-b border-warning/30`}`,children:[c.severity===`danger`?M(Ji,{className:`h-3.5 w-3.5`}):M(Qr,{className:`h-3.5 w-3.5`}),M(`span`,{children:a(c.i18nKey,{defaultValue:c.message,...c.i18nParams})}),c.action===`sign-in`&&M(`button`,{onClick:()=>r(),className:`ml-2 rounded border border-white/40 px-2 py-0.5 text-[11px] font-semibold hover:bg-white/10`,children:a(`connection.signIn`,`Sign in`)}),c.showSpinner&&M(Ti,{className:`h-3.5 w-3.5 animate-spin`})]}),M(_c,{}),o&&v(`header`,{className:`flex items-center h-12 border-b border-border px-3 shrink-0 bg-surface/80 backdrop-blur-sm`,children:[M(`button`,{onClick:()=>u(!0),className:`p-1.5 -ml-1.5 rounded-md hover:bg-surface-hover text-foreground-muted transition-colors`,"aria-label":`Open menu`,children:M(Oi,{className:`h-5 w-5`})}),M(`div`,{className:`flex-1 flex justify-center`,children:M(`img`,{src:i?.resolvedMode===`light`?`/brand/logo-horizontal-light.svg`:`/brand/logo-horizontal-dark.svg`,alt:`CamStack`,className:`h-7`})}),M(Cc,{})]}),M(`main`,{className:`relative flex-1 min-h-0 overscroll-contain bg-background ${ee?`overflow-hidden`:`overflow-auto`}`,children:M(Nn,{})})]})]})}function $({children:e,requireAdmin:t}){let{user:n,loading:r,mustChangePassword:i}=po(),a=W();return r?M(`div`,{className:`flex h-screen items-center justify-center bg-background text-foreground-subtle`,children:`Loading...`}):n?i&&a.pathname!==`/change-password`?M(K,{to:`/change-password`,replace:!0}):t&&!n.isAdmin?M(K,{to:`/access-denied`,replace:!0}):M(T,{children:e}):M(K,{to:`/login`,replace:!0,state:{from:a.pathname+a.search}})}function Ic(){let e=G();return v(`div`,{className:`flex flex-col items-center justify-center text-foreground py-16 px-4`,children:[M(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-2xl bg-danger/10 mb-4`,children:M(Bi,{className:`h-8 w-8 text-danger`})}),M(`h1`,{className:`text-xl font-bold`,children:`Access Denied`}),M(`p`,{className:`mt-2 text-sm text-foreground-subtle`,children:`You don't have permission to access this page.`}),M(`button`,{onClick:()=>e(`/devices`),className:`mt-6 rounded-lg bg-primary px-5 py-2.5 text-sm font-medium text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg transition-all`,children:`Go to Devices`})]})}_();var Lc=8;function Rc(){let{user:e,mustChangePassword:t,clearMustChangePassword:n,logout:r}=po(),i=me(),a=G(),[o,s]=A(``),[c,l]=A(``),[u,d]=A(!1),[f,p]=A(``),m=re({onSuccess:()=>{n(),a(`/devices`,{replace:!0})},onError:e=>{p(e instanceof Error?e.message:`Could not change password`)}});return M(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:v(`div`,{className:`w-full max-w-sm`,children:[M(`div`,{className:`flex justify-center mb-8`,children:M(`img`,{src:i?.resolvedMode===`light`?`/brand/logo-horizontal-light.svg`:`/brand/logo-horizontal-dark.svg`,alt:`CamStack Admin`,className:`h-12`})}),v(`form`,{onSubmit:async t=>{if(t.preventDefault(),p(``),!e){p(`Not signed in`);return}if(o.length<Lc){p(`Password must be at least ${Lc} characters`);return}if(o!==c){p(`The two passwords do not match`);return}if(o===`changeme`){p(`Choose a password different from the seed default`);return}m.mutate({id:e.id,newPassword:o})},className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[v(`div`,{className:`space-y-1`,children:[M(`h1`,{className:`text-sm font-semibold text-foreground`,children:`Set a new password`}),M(`p`,{className:`text-xs text-foreground-subtle`,children:t?`You must rotate the seed password before continuing.`:`Choose a new password for your account.`})]}),f&&M(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:f}),v(`div`,{className:`space-y-1.5`,children:[M(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`New password`}),v(`div`,{className:`relative`,children:[M(`input`,{"data-testid":`change-password-new`,type:u?`text`:`password`,value:o,onChange:e=>s(e.target.value),className:`w-full rounded-lg border border-border bg-background px-3 py-2.5 pr-10 text-sm text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`,autoFocus:!0}),M(`button`,{type:`button`,onClick:()=>d(!u),className:`absolute right-2.5 top-1/2 -translate-y-1/2 text-foreground-subtle hover:text-foreground transition-colors`,tabIndex:-1,children:M(u?gi:_i,{className:`h-4 w-4`})})]})]}),v(`div`,{className:`space-y-1.5`,children:[M(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`Confirm new password`}),M(`input`,{"data-testid":`change-password-confirm`,type:u?`text`:`password`,value:c,onChange:e=>l(e.target.value),className:`w-full rounded-lg border border-border bg-background px-3 py-2.5 text-sm text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`})]}),M(`button`,{"data-testid":`change-password-submit`,type:`submit`,disabled:m.isPending||!o||!c,className:`w-full rounded-lg bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg hover:shadow-primary/30 disabled:opacity-50 disabled:shadow-none transition-all`,children:m.isPending?`Saving…`:`Save and continue`}),t&&M(`button`,{type:`button`,onClick:()=>{r(),a(`/login`,{replace:!0})},className:`w-full text-xs text-foreground-subtle hover:text-foreground transition-colors`,children:`Sign out instead`})]})]})})}function zc(e){let t=new Uint8Array(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=/g,``)}function Bc(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=(4-t.length%4)%4,r=t.padEnd(t.length+n,`=`),i=atob(r),a=new ArrayBuffer(i.length),o=new Uint8Array(a);for(let e=0;e<i.length;e++)o[e]=i.charCodeAt(e);return a}function Vc(){return window?.PublicKeyCredential!==void 0&&typeof window.PublicKeyCredential==`function`}function Hc(e){let{id:t}=e;return{...e,id:Bc(t),transports:e.transports}}function Uc(e){return e===`localhost`||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}var Wc=class extends Error{constructor({message:e,code:t,cause:n,name:r}){super(e,{cause:n}),this.name=r??n.name,this.code=t}},Gc=new class{createNewAbortSignal(){if(this.controller){let e=Error(`Cancelling existing WebAuthn API call for new one`);e.name=`AbortError`,this.controller.abort(e)}let e=new AbortController;return this.controller=e,e.signal}cancelCeremony(){if(this.controller){let e=Error(`Manually cancelling existing WebAuthn API call`);e.name=`AbortError`,this.controller.abort(e),this.controller=void 0}}},Kc=[`cross-platform`,`platform`];function qc(e){if(e&&!(Kc.indexOf(e)<0))return e}function Jc(){if(!Vc())return new Promise(e=>e(!1));let e=window.PublicKeyCredential;return e.isConditionalMediationAvailable===void 0?new Promise(e=>e(!1)):e.isConditionalMediationAvailable()}function Yc({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error(`options was missing required publicKey property`);if(e.name===`AbortError`){if(t.signal instanceof AbortSignal)return new Wc({message:`Authentication ceremony was sent an abort signal`,code:`ERROR_CEREMONY_ABORTED`,cause:e})}else if(e.name===`NotAllowedError`)return new Wc({message:e.message,code:`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`,cause:e});else if(e.name===`SecurityError`){let t=window.location.hostname;if(!Uc(t))return new Wc({message:`${window.location.hostname} is an invalid domain`,code:`ERROR_INVALID_DOMAIN`,cause:e});if(n.rpId!==t)return new Wc({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:`ERROR_INVALID_RP_ID`,cause:e})}else if(e.name===`UnknownError`)return new Wc({message:`The authenticator was unable to process the specified options, or could not create a new assertion signature`,code:`ERROR_AUTHENTICATOR_GENERAL_ERROR`,cause:e});return e}async function Xc(e){let{optionsJSON:t,useBrowserAutofill:n=!1,verifyBrowserAutofillInput:r=!0}=e;if(!Vc())throw Error(`WebAuthn is not supported in this browser`);let i;t.allowCredentials?.length!==0&&(i=t.allowCredentials?.map(Hc));let a={...t,challenge:Bc(t.challenge),allowCredentials:i},o={};if(n){if(!await Jc())throw Error(`Browser does not support WebAuthn autofill`);if(document.querySelectorAll(`input[autocomplete$='webauthn']`).length<1&&r)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');o.mediation=`conditional`,a.allowCredentials=[]}o.publicKey=a,o.signal=Gc.createNewAbortSignal();let s;try{s=await navigator.credentials.get(o)}catch(e){throw Yc({error:e,options:o})}if(!s)throw Error(`Authentication was not completed`);let{id:c,rawId:l,response:u,type:d}=s,f;return u.userHandle&&(f=zc(u.userHandle)),{id:c,rawId:zc(l),response:{authenticatorData:zc(u.authenticatorData),clientDataJSON:zc(u.clientDataJSON),signature:zc(u.signature),userHandle:f},type:d,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:qc(s.authenticatorAttachment)}}var Zc=()=>window.location.hostname;function Qc(e,t=Zc){return Vc()&&dc(t(),e.rpId)}function $c(e,t=Zc){let n=e.filter(e=>e.kind===`passkey`&&e.stage===`second-factor`).filter(e=>Qc(e,t));return{passkeyMethods:n,widgetMethods:n.length>0?[]:e.filter(e=>e.kind===`widget`&&e.stage===`second-factor`)}}function el(e,t){let n=e.includes(`passkey`),r=t.passkeyMethods.length>0||t.widgetMethods.length>0,i=e.includes(`totp`);return n&&!r&&!i}_();async function tl(e){let t=await Xc({optionsJSON:e});return Object.fromEntries(Object.entries(t))}function nl({method:e,challengeToken:t,onComplete:n,onSecondFactor:r,onError:i}){let[a,o]=A(!1),[s,c]=A(null),l=async()=>{c(null),o(!0);try{let e=Ia();if(t){let r=await tl((await e.loginBeginPasskey(t)).optionsJSON);n((await e.loginVerifyPasskey(t,r)).token);return}let a=await tl((await e.passkeyLoginBegin()).optionsJSON),o=await e.passkeyLoginFinish(a),s=o.secondFactors??(o.requiresTotp===!0?[`totp`]:[]);if(s.length>0){if(r)r({challengeToken:o.token,factors:s});else{let e=`Additional verification is required — sign in with your password to continue.`;c(e),i?.(e)}return}n(o.token)}catch(e){let n=t?`Passkey verification failed`:`Passkey sign-in failed`,r=e instanceof Error?e.message:n;c(r),i?.(r)}finally{o(!1)}};return v(`div`,{className:`space-y-2`,children:[v(`button`,{type:`button`,"data-testid":t?`login-passkey`:`login-passkey-direct`,onClick:()=>void l(),disabled:a,className:`w-full flex items-center justify-center gap-2 rounded-lg border border-border bg-surface px-4 py-2.5 text-sm font-medium text-foreground hover:bg-surface-hover disabled:opacity-50 transition-colors`,children:[a?M(Ti,{className:`h-4 w-4 animate-spin text-primary`}):M(yi,{className:`h-4 w-4 text-primary`}),e.label]}),s&&M(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:s})]})}function rl(e){let t=e.onComplete,n=e.onSecondFactor;return typeof t==`function`?{onComplete:t,onSecondFactor:typeof n==`function`?n:void 0}:null}function il({methods:e,widgetConfig:t}){let n=e.filter(e=>e.kind!==`passkey`||Qc(e));return n.length===0?null:v(`div`,{className:`mt-6 space-y-3`,children:[v(`div`,{className:`flex items-center gap-3`,children:[M(`div`,{className:`h-px flex-1 bg-border`}),M(`span`,{className:`text-[10px] uppercase tracking-wider text-foreground-subtle`,children:`Or continue with`}),M(`div`,{className:`h-px flex-1 bg-border`})]}),M(`div`,{className:`space-y-2`,children:n.map(e=>{if(e.kind===`redirect`)return v(`a`,{href:e.startUrl,className:`flex items-center justify-center gap-2 w-full rounded-lg border border-border bg-surface px-4 py-2.5 text-sm font-medium text-foreground hover:bg-surface-hover transition-colors`,children:[M(zi,{className:`h-4 w-4 text-primary`}),e.label]},e.id);if(e.kind===`passkey`){let n=rl(t);return n?M(nl,{method:e,onComplete:n.onComplete,onSecondFactor:n.onSecondFactor},e.id):null}return M(al,{method:e,config:t},e.id)})})]})}function al({method:e,config:t}){let n=je(e.remote,e.bundleUrl);return n===null?v(`div`,{className:`flex items-center justify-center gap-2 rounded-lg border border-border bg-background px-4 py-2.5 text-xs text-foreground-subtle`,children:[M(Ti,{className:`h-3.5 w-3.5 animate-spin`}),`Loading…`]}):n===void 0?v(`div`,{"data-testid":`login-method-load-error`,className:`flex items-center justify-center gap-2 rounded-lg border border-danger/20 bg-danger/10 px-4 py-2.5 text-xs text-danger`,children:[M(ui,{className:`h-3.5 w-3.5 shrink-0`}),`A sign-in method could not be loaded — reload the page to retry.`]}):M(n,{instanceId:e.id,host:`dashboard`,config:t})}_();function ol(){let{login:e,verifyTotp:t,finalizePasskeyLogin:n,user:r}=po(),{i18n:i}=Vs(),a=me(),o=G(),s=W(),c=new URLSearchParams(window.location.search).get(`next`);N(()=>{Ya(c)},[c]);let l=new URLSearchParams(window.location.search).get(`redirect`);N(()=>{io(l)},[l]);let u=s.state?.from??Nc()??`/devices`,[f,p]=A(``),[m,h]=A(``),[g,_]=A(!1),[y,b]=A(``),[x,S]=A(!1),[C,w]=A(`credentials`),[E,D]=A(``),[O,k]=A([]),[j,ee]=A(``),P=ce.auth.listLoginMethods.useQuery().data??[],te=P.filter(e=>e.stage===`primary`),ne=$c(P),{passkeyMethods:re,widgetMethods:ie}=ne,ae=d(!1),oe=async()=>{if(ae.current)return;ae.current=!0;let e=Ka(l);if(e?.kind===`app-callback`){await I(e.url);return}else if(e){window.location.assign(e.path);return}let t=Za(c);t?window.location.assign(t):o(u,{replace:!0})},[F,se]=A(null),I=async e=>{se({callbackBase:e,mintedUrl:null,failed:!1});try{let{code:t}=await Ia().trpcClient.auth.createHandoffCode.mutate(),n=Ga(e,t);se({callbackBase:e,mintedUrl:n,failed:!1}),window.location.assign(n)}catch{se({callbackBase:e,mintedUrl:null,failed:!0})}},le=r!==null,[L,ue]=A(!1);N(()=>{!le||!l&&!c||L||(ue(!0),oe())},[le,l,c,L]);let de=async t=>{t.preventDefault(),b(``),S(!0);try{let t=await e(f,m);if(t.kind===`second-factor`){D(t.challengeToken),k(t.factors),w(`second-factor`);return}m===`changeme`?o(`/change-password`,{replace:!0}):await oe()}catch(e){b(e instanceof Error?e.message:`Login failed`)}finally{S(!1)}},fe=async e=>{e.preventDefault(),b(``),S(!0);try{await t(E,j.trim()),await oe()}catch(e){b(e instanceof Error?e.message:`TOTP verification failed`),ee(``)}finally{S(!1)}},pe=async e=>{try{await n(e),await oe()}catch(e){b(e instanceof Error?e.message:`Passkey sign-in failed`)}};return F===null?M(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:v(`div`,{className:`w-full max-w-sm`,children:[M(`div`,{className:`flex justify-center mb-8`,children:M(`img`,{src:a?.resolvedMode===`light`?`/brand/logo-horizontal-light.svg`:`/brand/logo-horizontal-dark.svg`,alt:`CamStack Admin`,className:`h-12`})}),C===`credentials`?v(`form`,{onSubmit:de,className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[y&&M(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:y}),v(`div`,{className:`space-y-1.5`,children:[M(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`Username`}),M(`input`,{"data-testid":`login-username`,type:`text`,placeholder:`Username`,value:f,onChange:e=>p(e.target.value),className:`w-full rounded-lg border border-border bg-background px-3 py-2.5 text-sm text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`,autoFocus:!0})]}),v(`div`,{className:`space-y-1.5`,children:[M(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`Password`}),v(`div`,{className:`relative`,children:[M(`input`,{"data-testid":`login-password`,type:g?`text`:`password`,placeholder:`Password`,value:m,onChange:e=>h(e.target.value),className:`w-full rounded-lg border border-border bg-background px-3 py-2.5 pr-10 text-sm text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`}),M(`button`,{type:`button`,onClick:()=>_(!g),className:`absolute right-2.5 top-1/2 -translate-y-1/2 text-foreground-subtle hover:text-foreground transition-colors`,tabIndex:-1,children:M(g?gi:_i,{className:`h-4 w-4`})})]})]}),M(`button`,{"data-testid":`login-submit`,type:`submit`,disabled:x||!f||!m,className:`w-full rounded-lg bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg hover:shadow-primary/30 disabled:opacity-50 disabled:shadow-none transition-all`,children:x?v(`span`,{className:`flex items-center justify-center gap-2`,children:[M(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary-foreground/30 border-t-primary-foreground`}),`Logging in...`]}):`Log in`})]}):v(`div`,{className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[v(`div`,{className:`flex items-center gap-2 pb-1 border-b border-border`,children:[M(Hi,{className:`h-4 w-4 text-primary`}),M(`div`,{className:`text-sm font-medium text-foreground`,children:`Two-factor authentication`})]}),M(`p`,{className:`text-xs text-foreground-subtle`,children:f?v(T,{children:[`Finish signing in as `,M(`span`,{className:`font-mono text-foreground`,children:f}),`.`]}):`Finish signing in.`}),y&&M(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:y}),O.includes(`passkey`)&&re.map(e=>M(nl,{method:e,challengeToken:E,onComplete:pe},e.id)),O.includes(`passkey`)&&ie.map(e=>M(al,{method:e,config:{challengeToken:E,onComplete:pe}},e.id)),el(O,ne)&&M(`div`,{className:`rounded-md border border-border bg-background px-3 py-2 text-xs text-foreground-subtle`,children:`Passkey verification isn't available on this address. Open the hub via its domain URL to complete sign-in.`}),O.includes(`passkey`)&&O.includes(`totp`)&&v(`div`,{className:`flex items-center gap-3`,children:[M(`div`,{className:`h-px flex-1 bg-border`}),M(`span`,{className:`text-[10px] uppercase tracking-wider text-foreground-subtle`,children:`or`}),M(`div`,{className:`h-px flex-1 bg-border`})]}),O.includes(`totp`)&&v(`form`,{onSubmit:fe,className:`space-y-4`,children:[v(`div`,{className:`space-y-1.5`,children:[M(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`Authentication code`}),M(`input`,{"data-testid":`login-totp`,type:`text`,inputMode:`numeric`,autoComplete:`one-time-code`,placeholder:`123456`,value:j,onChange:e=>ee(e.target.value.replace(/\D/g,``).slice(0,6)),className:`w-full rounded-lg border border-border bg-background px-3 py-3 text-center text-2xl font-mono tracking-widest text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`,autoFocus:!0})]}),M(`button`,{"data-testid":`login-totp-submit`,type:`submit`,disabled:x||j.length!==6,className:`w-full rounded-lg bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg hover:shadow-primary/30 disabled:opacity-50 disabled:shadow-none transition-all`,children:x?v(`span`,{className:`flex items-center justify-center gap-2`,children:[M(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary-foreground/30 border-t-primary-foreground`}),`Verifying...`]}):`Verify and sign in`})]}),v(`button`,{type:`button`,onClick:()=>{w(`credentials`),D(``),k([]),ee(``),b(``)},className:`w-full flex items-center justify-center gap-1.5 text-xs text-foreground-subtle hover:text-foreground transition-colors`,children:[M($r,{className:`h-3 w-3`}),`Back to username + password`]})]}),C===`credentials`&&M(il,{methods:te,widgetConfig:{onComplete:pe,onSecondFactor:e=>{let t=e.factors.filter(e=>e===`totp`||e===`passkey`);D(e.challengeToken),k(t),ee(``),b(``),w(`second-factor`)},locale:i.language}}),v(`p`,{className:`mt-6 text-center text-[10px] text-foreground-subtle/50`,children:[`CamStack v`,`1.2.101`]})]})}):M(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:v(`div`,{className:`w-full max-w-sm rounded-xl border border-border bg-surface p-6 text-center space-y-4`,children:[M(`h1`,{className:`text-sm font-semibold text-foreground`,children:`Returning to the app…`}),F.failed?v(T,{children:[M(`p`,{className:`text-xs text-danger`,children:`Could not prepare the sign-in handoff. You are logged in — retry below.`}),M(`button`,{onClick:()=>void I(F.callbackBase),className:`inline-flex rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90`,children:`Retry`})]}):F.mintedUrl===null?M(`p`,{className:`text-xs text-foreground-subtle`,children:`Preparing a one-time sign-in code…`}):v(T,{children:[M(`p`,{className:`text-xs text-foreground-subtle`,children:`If the app does not open automatically, tap below (the code expires in 60s).`}),M(`a`,{href:F.mintedUrl,className:`inline-flex rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90`,children:`Open CamStack`})]})]})})}_();function sl(){return M(K,{to:Nc()??`/devices`,replace:!0})}var cl=D(()=>i(()=>import(`./Devices-C4bHXSBW.js`).then(e=>({default:e.DevicesPage})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]))),ll=D(()=>i(()=>import(`./Integrations-_MxWMXKm.js`).then(e=>({default:e.IntegrationsPage})),__vite__mapDeps([11,1,2,3,4,5,6,7,8,12,13,14,15,16,17,9,18,19,10]))),ul=D(()=>i(()=>import(`./IntegrationDetail-CDW7Eu_V.js`).then(e=>({default:e.IntegrationDetailPage})),__vite__mapDeps([20,1,2,3,4,5,6,7,8,21,15,16,12,13,14,17,22]))),dl=D(()=>i(()=>import(`./Pipeline-Be00UqWq.js`).then(e=>({default:e.PipelinePage})),__vite__mapDeps([23,24,1,2,3,4,22,25,26,27,28,29,12,6,16,7,30,31,32,15,33,34,10]))),fl=D(()=>i(()=>import(`./DeviceDetail-fqRbXQOC.js`).then(e=>({default:e.DeviceDetailPage})),__vite__mapDeps([35,1,2,3,4,36,28,6,16,37,27,38,39,5,7,8,26,15,29,40,41,22,42,33,34,18,10]))),pl=D(()=>i(()=>import(`./Showroom-m8bxoJza.js`).then(e=>({default:e.ShowroomPage})),__vite__mapDeps([43,36,28,6,16,37,27,5,7,8,15,1,2,3,4,18]))),ml=D(()=>i(()=>import(`./EmbedPlayerPage-XGlgPJrB.js`).then(e=>({default:e.EmbedPlayerPage})),__vite__mapDeps([44,1,2,3,4]))),hl=D(()=>i(()=>import(`./DetectionIntelligence-B5gdz0kC.js`).then(e=>({default:e.DetectionIntelligencePage})),__vite__mapDeps([45,1,2,3,4,46,47,48,29,12,16,22,30,31,49,9]))),gl=D(()=>i(()=>import(`./Plates-B2O3-4Uk.js`).then(e=>({default:e.PlatesPage})),__vite__mapDeps([50,1,2,3,4,46,47,48,29,12,30,31,9]))),_l=D(()=>i(()=>import(`./Events-BM2eUsM0.js`).then(e=>({default:e.EventsPage})),__vite__mapDeps([51,1,2,3,4,52,53,14,48,16,30,31,54,49,9,55,33,47]))),vl=D(()=>i(()=>import(`./Scenes-Di16PVHl.js`).then(e=>({default:e.ScenesPage})),__vite__mapDeps([56,1,2,3,4,12,9,57]))),yl=D(()=>i(()=>import(`./Recordings-BXnzReYl.js`).then(e=>({default:e.RecordingsPage})),__vite__mapDeps([58,1,2,3,4,21,14,59,15,16,29,12,40,54,9,55,33,42,34,47,25]))),bl=D(()=>i(()=>import(`./Build-BYQSYy7F.js`).then(e=>({default:e.BuildPage})),__vite__mapDeps([60,1,2,3,4,39,29,61,12,22,9]))),xl=D(()=>i(()=>import(`./Addons-Dye82TRM.js`).then(e=>({default:e.AddonsPage})),__vite__mapDeps([62,1,2,3,4,52,14,12,16,63,9,32,15,33,34]))),Sl=D(()=>i(()=>import(`./AiProfiles-DOozhwy_.js`).then(e=>({default:e.AiProfilesPage})),__vite__mapDeps([64,1,2,3,4,39,14,65,29,12,7,31,9,55,33]))),Cl=D(()=>i(()=>import(`./MyAccess-De5E70Mx.js`).then(e=>({default:e.MyAccessPage})),__vite__mapDeps([66,1,2,3,4,67,53,68,29,9]))),wl=D(()=>i(()=>import(`./Logs-BgAQkk9B.js`).then(e=>({default:e.LogsPage})),__vite__mapDeps([69,1,2,3,4,9]))),Tl=D(()=>i(()=>import(`./Identity-pji2asLl.js`).then(e=>({default:e.IdentityPage})),__vite__mapDeps([70,1,2,3,4,67,53,68,29,12,71,61,16,31,9,32,15,33,34,55,72]))),El=D(()=>i(()=>import(`./Network-3zKD5uww.js`).then(e=>({default:e.NetworkPage})),__vite__mapDeps([73,1,2,3,4,39,53,61,16,41,7,37,31,8,71,12,9,32,15,33,34,55,72]))),Dl=D(()=>i(()=>import(`./Integrations-BZJHGp5D.js`).then(e=>({default:e.IntegrationsPage})),__vite__mapDeps([74,1,2,3,4,29,12,6,8,71,61,16,31,9,32,15,33,34,55,17,19]))),Ol=D(()=>i(()=>import(`./Data-yTLKGui0.js`).then(e=>({default:e.DataPage})),__vite__mapDeps([75,1,2,3,4,14,59,15,16,29,12,40,54,61,22,71,31,9,32,33,34,55,72,47,25]))),kl=D(()=>i(()=>import(`./Settings-rlvwMnze.js`).then(e=>({default:e.SettingsPage})),__vite__mapDeps([76,1,2,3,4,15,16,9,32,33,34]))),Al=D(()=>i(()=>import(`./Cluster-B8SGnNL3.js`).then(e=>({default:e.ClusterPage})),__vite__mapDeps([77,24,1,2,3,4,22,25,29,6,16,7,63,32,15,33,34]))),jl=D(()=>i(()=>import(`./Capabilities-BNdrW5yr.js`).then(e=>({default:e.CapabilitiesPage})),__vite__mapDeps([78,1,2,3,4,67,9]))),Ml=D(()=>i(()=>import(`./Terminal-BckLeEA9.js`).then(e=>({default:e.TerminalPage})),__vite__mapDeps([79,1,2,3,4,29,12,40,9,32,15,16,33,34,80]))),Nl=D(()=>i(()=>import(`./Notifications-DRoRG3NR.js`).then(e=>({default:e.NotificationsPage})),__vite__mapDeps([81,1,2,3,4,38,67,53,65,29,12,6,16,41,27,9,55,33,57]))),Pl=new E({defaultOptions:{queries:{gcTime:0,staleTime:0,retry:!1,refetchOnWindowFocus:!1}}});function Fl({field:e,value:t,onChange:n,disabled:r}){return M(oa,{field:e,value:t,onChange:n,disabled:r})}function Il({field:e,value:t,onChange:n,disabled:r}){return M(na,{field:e,value:t,onChange:n,disabled:r})}var Ll={"pipeline-editor":Fl,"model-selector":Il};function Rl({children:e}){let{user:t,logout:n}=po(),[r,i]=A(0),a=d(t?.username??null);N(()=>{let e=t?.username??null;e!==a.current&&(a.current=e,La(),i(e=>e+1))},[t]);let o=b(()=>Ia(),[r]),[s,c]=A(!1),[u,f]=A(null);return N(()=>{if(c(!1),f(null),!t){c(!0);return}let e=!1;return o.init().then(()=>{e||c(!0)},t=>{if(e)return;let r=t instanceof Error?t.message:String(t),i=t?.data?.code;if(i===`UNAUTHORIZED`||i===`FORBIDDEN`||/UNAUTHORIZED|FORBIDDEN/.test(r)){n();return}f(r),c(!0)}),()=>{e=!0}},[o,t,n]),ho(l(()=>{La(),i(e=>e+1),Pl.invalidateQueries()},[])),M(ee,{system:o,children:M(ce.Provider,{client:o.trpcClient,queryClient:Pl,children:v(ke,{children:[s?e:M(zl,{}),s&&M(ha,{}),u!==null&&s&&v(`div`,{className:`fixed bottom-[calc(env(safe-area-inset-bottom)+1rem)] right-[calc(env(safe-area-inset-right)+1rem)] z-50 max-w-sm rounded-lg border border-warning/30 bg-warning/10 px-3 py-2 text-xs text-warning shadow-lg`,children:[`Boot probe failed: `,u,`. Retrying in background.`]})]})})})}function zl(){return M(`div`,{className:`flex min-h-screen items-center justify-center bg-background`,children:v(`div`,{className:`flex items-center gap-3 text-sm text-foreground-subtle`,children:[M(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`}),`Connecting…`]})})}function Bl(){return M(`div`,{className:`flex min-h-screen items-center justify-center bg-background`,children:M(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`})})}function Vl(){return M(ge,{defaultMode:`dark`,children:M(j,{client:Pl,children:M(fo,{children:M(Rl,{children:M(Te,{children:v(De,{renderers:Ll,children:[M(wr,{children:M(x,{fallback:M(Bl,{}),children:v(Fn,{children:[M(q,{path:`/login`,element:M(ol,{})}),M(q,{path:`/change-password`,element:M($,{children:M(Rc,{})})}),M(q,{path:`/showroom`,element:M(pl,{})}),M(q,{path:`/embed/player`,element:M(ml,{})}),v(q,{element:M($,{children:M(Fc,{})}),children:[M(q,{index:!0,element:M(sl,{})}),M(q,{path:`/access-denied`,element:M(Ic,{})}),M(q,{path:`/dashboard`,element:M(K,{to:`/devices`,replace:!0})}),M(q,{path:`/devices`,element:M(cl,{})}),M(q,{path:`/cameras`,element:M(K,{to:`/devices`,replace:!0})}),M(q,{path:`/integrations`,element:M(ll,{})}),M(q,{path:`/integrations/:integrationId`,element:M(ul,{})}),M(q,{path:`/pipeline`,element:M(dl,{})}),M(q,{path:`/devices/:deviceId`,element:M(fl,{})}),M(q,{path:`/system/logs`,element:M($,{requireAdmin:!0,children:M(wl,{})})}),M(q,{path:`/system/addons`,element:M($,{requireAdmin:!0,children:M(xl,{})})}),M(q,{path:`/system/ai`,element:M($,{requireAdmin:!0,children:M(Sl,{})})}),M(q,{path:`/system/settings`,element:M($,{requireAdmin:!0,children:M(kl,{})})}),M(q,{path:`/system/cluster`,element:M($,{requireAdmin:!0,children:M(Al,{})})}),M(q,{path:`/system/capabilities`,element:M($,{requireAdmin:!0,children:M(jl,{})})}),M(q,{path:`/system/terminal`,element:M($,{requireAdmin:!0,children:M(Ml,{})})}),M(q,{path:`/system/server`,element:M(K,{to:`/system/cluster`,replace:!0})}),M(q,{path:`/system/notifications`,element:M($,{requireAdmin:!0,children:M(Nl,{})})}),M(q,{path:`/system/identity`,element:M($,{requireAdmin:!0,children:M(Tl,{})})}),M(q,{path:`/system/my-access`,element:M(Cl,{})}),M(q,{path:`/system/network`,element:M($,{requireAdmin:!0,children:M(El,{})})}),M(q,{path:`/system/integrations`,element:M($,{requireAdmin:!0,children:M(Dl,{})})}),M(q,{path:`/system/data`,element:M($,{requireAdmin:!0,children:M(Ol,{})})}),M(q,{path:`/system/users`,element:M(K,{to:`/system/identity?tab=users`,replace:!0})}),M(q,{path:`/system/api-keys`,element:M(K,{to:`/system/identity?tab=api-keys`,replace:!0})}),M(q,{path:`/system/authentication`,element:M(K,{to:`/system/identity?tab=authentication`,replace:!0})}),M(q,{path:`/system/linked-sessions`,element:M(K,{to:`/system/identity?tab=linked-sessions`,replace:!0})}),M(q,{path:`/system/remote-access`,element:M(K,{to:`/system/network?tab=remote-access`,replace:!0})}),M(q,{path:`/system/turn`,element:M(K,{to:`/system/network?tab=turn`,replace:!0})}),M(q,{path:`/system/storage`,element:M(K,{to:`/system/data?tab=storage`,replace:!0})}),M(q,{path:`/system/backup`,element:M(K,{to:`/system/data?tab=backup`,replace:!0})}),M(q,{path:`/detection-intelligence`,element:M($,{requireAdmin:!0,children:M(hl,{})})}),M(q,{path:`/plates`,element:M($,{requireAdmin:!0,children:M(gl,{})})}),M(q,{path:`/retrain`,element:M(K,{to:`/events?tab=retrain`,replace:!0})}),M(q,{path:`/events`,element:M($,{requireAdmin:!0,children:M(_l,{})})}),M(q,{path:`/scenes`,element:M($,{requireAdmin:!0,children:M(vl,{})})}),M(q,{path:`/recordings`,element:M($,{requireAdmin:!0,children:M(yl,{})})}),M(q,{path:`/build`,element:M($,{requireAdmin:!0,children:M(bl,{})})}),M(q,{path:`/automation`,element:M(ma,{to:`/build`})}),M(q,{path:`/addon/:pagePath`,element:M($,{requireAdmin:!0,children:M(So,{})})})]})]})})}),M(ba,{})]})})})})})})}var Hl={nav:{integrations:`Integrations`,metrics:`Metrics`,detectionSection:`Detection`,detectionIntelligence:`People`,vehicles:`Vehicles`,events:`Library`,clusterSection:`Cluster & Server`},system:{title:`Administration`,addons:`Addons`,agents:`Agents`,processes:`Processes`,logs:`Logs`,users:`Users`,settings:`Settings`,repl:`REPL`,models:`Models`,integrations:`Connectivity`,serverManagement:`Server`,systemNav:`System`},common:{save:`Save`,cancel:`Cancel`,delete:`Delete`,enable:`Enable`,disable:`Disable`,edit:`Edit`,add:`Add`,remove:`Remove`,confirm:`Confirm`,close:`Close`,back:`Back`,next:`Next`,search:`Search`,filter:`Filter`,reset:`Reset`,apply:`Apply`,submit:`Submit`,loading:`Loading…`,error:`Error`,success:`Success`,warning:`Warning`,info:`Info`,noData:`No data available`,noResults:`No results found`,retry:`Retry`,refresh:`Refresh`,copy:`Copy`,copied:`Copied!`,yes:`Yes`,no:`No`},connection:{disconnected:`Server unreachable — reconnecting…`,connected:`Connected`,reconnecting:`Reconnecting…`,degraded:`Live connection interrupted — hub is online (a cluster node may be unresponsive), re-establishing…`,degradedNodes_one:`Cluster degraded — node {{nodes}} not responding. Hub is online, live link re-establishing…`,degradedNodes_other:`Cluster degraded — nodes {{nodes}} not responding. Hub is online, live link re-establishing…`,degradedCount_one:`Cluster degraded — {{count}} cluster node offline. Hub is online, live link re-establishing…`,degradedCount_other:`Cluster degraded — {{count}} cluster nodes offline. Hub is online, live link re-establishing…`,sessionExpired:`Session expired — please sign in again.`,signIn:`Sign in`},passkeyPrompt:{message:`Save a passkey for faster sign-in?`,enrollNow:`Enroll now`,notNow:`Not now`},status:{online:`Online`,offline:`Offline`,connecting:`Connecting`,error:`Error`,disabled:`Disabled`,enabled:`Enabled`,active:`Active`,inactive:`Inactive`,running:`Running`,stopped:`Stopped`,pending:`Pending`,unknown:`Unknown`},auth:{login:`Login`,logout:`Logout`,username:`Username`,password:`Password`,signIn:`Sign In`,invalidCredentials:`Invalid username or password`},theme:{dark:`Dark`,light:`Light`,system:`System`},language:{select:`Language`,en:`English`,it:`Italian`},pages:{integrations:{title:`Integrations`,subtitle:`Manage camera sources and provider connections`},metrics:{title:`Metrics`,subtitle:`System performance and usage statistics`},agents:{title:`Agents`,subtitle:`Manage distributed processing agents`},addons:{title:`Addons`,subtitle:`Extend functionality with addon modules`},settings:{title:`Settings`,subtitle:`Configure system-wide preferences`},users:{title:`Users`,subtitle:`Manage user accounts and permissions`},logs:{title:`Logs`,subtitle:`View system and device logs`}},integrations:{preview:`Preview`,snapshotUnavailable:`Snapshot unavailable`,noSnapshot:`No snapshot`,lastSnapshot:`Last snapshot:`,offline:`Offline`,active:`Active`,available:`Available`,noDevices:`No devices.`,addFirstDevice:`Add your first device to get started.`,import:`+ Import`,noProviders:`No providers available. Install a provider addon.`,manage:`Manage`,integrationName:`Integration name`,integrationNamePlaceholder:`e.g. Garage Server`,connectionSuccess:`Connection successful!`,errorPrefix:`Error:`,back:`Back`,testing:`Testing...`,testConnection:`Test connection`,forward:`Next`,searchingDevices:`Searching for devices...`,foundDevices:`Found {{count}} devices. Select the ones to import.`,noDevicesFound:`No devices found.`,skip:`Skip`,importSelected:`Import selected`,newIntegration:`New Integration`,configureIntegration:`Configure Integration`,importDevices:`Import Devices`,addDevice:`Add device`,name:`Name`,namePlaceholder:`e.g. Entrance Camera`,snapshotUrlOptional:`Snapshot URL (optional)`,streamUrls:`Stream URLs`,addStream:`Add stream`,cancel:`Cancel`,saving:`Saving...`,save:`Save`,saveAndNew:`Save and new`,test:`Test`,stream:`Stream {{number}}:`,devices:`devices`,rediscover:`Rediscover`,config:`Config`,integrationNotFound:`Integration not found.`,configComingSoon:`Config coming soon.`,providerConfig:`Provider Config`,editConfig:`Edit configuration`,relinkBrokerHelp:`Choose the broker this integration connects through. Picking a different broker re-points it and restarts the addon.`,currentBroker:`Current broker`,relinkFailed:`Failed to update broker link.`,noBrokerKind:`This integration declares device-adoption but its addon manifest has no brokerKind.`,connectionInconclusive:`Could not be checked:`,connectionUntestable:`This integration cannot be tested before it is created.`},ai:{addProfile:`Add profile`,attachSnapshot:`Camera snapshot`,attachTrack:`Recent track`,chatEmpty:`Pick a profile, optionally attach a camera snapshot or a recent track, and send a message. Nothing here is saved.`,chatFailed:`The test call failed`,chooseKind:`Choose a profile type`,clearChat:`Clear`,colAvgMs:`Avg ms`,colCalls:`Calls`,colConsumer:`Consumer`,colDay:`Day`,colDisk:`On disk`,colError:`Error`,colKind:`Kind`,colModel:`Model`,colNode:`Node`,colOkErr:`OK / err`,colOn:`On`,colProfile:`Profile`,colState:`State`,colTokens:`In / out tok`,colVision:`Vision`,createProfile:`Create profile`,defaultDisabled:`This default profile is disabled — callers resolve to no profile.`,defaultMissing:`This default names a profile that no longer exists.`,defaultText:`Default text profile`,defaultVision:`Default vision profile`,editProfile:`Edit {{name}}`,lastDays:`Last {{days}} days`,loadFailed:`Failed to load profiles`,message:`Message`,messagePlaceholder:`Ask the model something…`,model:`Model`,name:`Name`,newProfile:`New {{kind}} profile`,noCameras:`No camera found.`,noEnabledProfiles:`No enabled profile. Add one on the Profiles tab.`,noKinds:`No AI provider is installed.`,noProfiles:`No AI profiles yet. Click "Add profile" to configure one.`,noRuntimes:`No node advertises the llm-runtime capability.`,noTracks:`No track in the last 6 hours.`,noUsage:`No AI calls in this window.`,none:`None`,notVision:`This profile is not vision-capable — an attached image will be refused before anything is read.`,pickModelFirst:`pick a model`,profile:`Profile`,profilesSubtitle:`One row = one usable model endpoint. The defaults below decide who answers when a feature names no profile.`,profilesTitle:`AI profiles`,ready:`ready`,runtimeNode:`Runtime node`,runtimesFailed:`Failed to read runtime nodes`,runtimesSubtitle:`Nodes advertising the llm-runtime capability: what each has loaded, what it is downloading, and how much model data sits on its disk.`,runtimesTitle:`Managed runtimes`,saveChanges:`Save changes`,saveFailed:`Save failed`,secretHint:`A stored API key is never shown. Leave it as-is to keep it; type a new value to replace it.`,selectModel:`Select a model…`,selectProfile:`Select a profile…`,send:`Send`,snapshotOf:`Snapshot of {{name}}`,stop:`Stop`,streamNote:`The answer streams as the model produces it. A cold model can take a while to load — the status line says which phase it is in.`,systemPlaceholder:`Answer in one short sentence.`,systemPrompt:`System prompt (optional)`,tabProfiles:`Profiles`,tabRuntimes:`Runtimes`,tabTest:`Test`,tabUsage:`Usage`,test:`Test`,testSubtitle:`A throwaway conversation with one profile. Attach a live camera snapshot or a recent track to check the model can actually read a picture. Nothing is saved — only the usage row.`,testTitle:`Test chat`,trackOf:`{{class}} on {{name}}`,unreachable:`unreachable`,usageFailed:`Failed to read usage`,usageSubtitle:`Server-side rollup per day, consumer and profile — never raw call rows. Errors are counted, so a profile that always fails is visible here before a feature reports it.`,usageTitle:`Usage`,vision:`vision`,window:`Window`}},Ul={nav:{integrations:`Integrazioni`,metrics:`Metriche`,detectionSection:`Detection`,detectionIntelligence:`Persone`,vehicles:`Veicoli`,events:`Libreria`,clusterSection:`Cluster & Server`},system:{title:`Amministrazione`,addons:`Addon`,agents:`Agenti`,processes:`Processi`,logs:`Log`,users:`Utenti`,settings:`Impostazioni`,repl:`REPL`,models:`Modelli`,integrations:`Connettività`,serverManagement:`Server`,systemNav:`Sistema`},common:{save:`Salva`,cancel:`Annulla`,delete:`Elimina`,enable:`Abilita`,disable:`Disabilita`,edit:`Modifica`,add:`Aggiungi`,remove:`Rimuovi`,confirm:`Conferma`,close:`Chiudi`,back:`Indietro`,next:`Avanti`,search:`Cerca`,filter:`Filtra`,reset:`Reimposta`,apply:`Applica`,submit:`Invia`,loading:`Caricamento…`,error:`Errore`,success:`Successo`,warning:`Avviso`,info:`Info`,noData:`Nessun dato disponibile`,noResults:`Nessun risultato trovato`,retry:`Riprova`,refresh:`Aggiorna`,copy:`Copia`,copied:`Copiato!`,yes:`Sì`,no:`No`},connection:{disconnected:`Server non raggiungibile — riconnessione in corso…`,connected:`Connesso`,reconnecting:`Riconnessione in corso…`,degraded:`Connessione live interrotta — l'hub è online (un nodo del cluster potrebbe non rispondere), ripristino in corso…`,degradedNodes_one:`Cluster degradato — il nodo {{nodes}} non risponde. L'hub è online, ripristino del collegamento live…`,degradedNodes_other:`Cluster degradato — i nodi {{nodes}} non rispondono. L'hub è online, ripristino del collegamento live…`,degradedCount_one:`Cluster degradato — {{count}} nodo del cluster offline. L'hub è online, ripristino del collegamento live…`,degradedCount_other:`Cluster degradato — {{count}} nodi del cluster offline. L'hub è online, ripristino del collegamento live…`,sessionExpired:`Sessione scaduta — effettua di nuovo l'accesso.`,signIn:`Accedi`},passkeyPrompt:{message:`Vuoi salvare una passkey per accedere più velocemente?`,enrollNow:`Registra ora`,notNow:`Non ora`},status:{online:`Online`,offline:`Offline`,connecting:`Connessione in corso`,error:`Errore`,disabled:`Disabilitato`,enabled:`Abilitato`,active:`Attivo`,inactive:`Inattivo`,running:`In esecuzione`,stopped:`Fermato`,pending:`In attesa`,unknown:`Sconosciuto`},auth:{login:`Accesso`,logout:`Esci`,username:`Nome utente`,password:`Password`,signIn:`Accedi`,invalidCredentials:`Nome utente o password non validi`},theme:{dark:`Scuro`,light:`Chiaro`,system:`Sistema`},language:{select:`Lingua`,en:`Inglese`,it:`Italiano`},pages:{integrations:{title:`Integrazioni`,subtitle:`Gestisci le sorgenti video e le connessioni ai provider`},metrics:{title:`Metriche`,subtitle:`Statistiche di prestazioni e utilizzo del sistema`},agents:{title:`Agenti`,subtitle:`Gestisci gli agenti di elaborazione distribuita`},addons:{title:`Addon`,subtitle:`Estendi le funzionalità con moduli addon`},settings:{title:`Impostazioni`,subtitle:`Configura le preferenze di sistema`},users:{title:`Utenti`,subtitle:`Gestisci gli account utente e i permessi`},logs:{title:`Log`,subtitle:`Visualizza i log di sistema e dei dispositivi`}},integrations:{preview:`Anteprima`,snapshotUnavailable:`Snapshot non disponibile`,noSnapshot:`Nessuno snapshot`,lastSnapshot:`Ultimo snapshot:`,offline:`Offline`,active:`Attivi`,available:`Disponibili`,noDevices:`Nessun dispositivo.`,addFirstDevice:`Aggiungi il primo dispositivo per iniziare.`,import:`+ Importa`,noProviders:`Nessun provider disponibile. Installa un addon provider.`,manage:`Gestisci`,integrationName:`Nome integrazione`,integrationNamePlaceholder:`es. Server Garage`,connectionSuccess:`Connessione riuscita!`,errorPrefix:`Errore:`,back:`Indietro`,testing:`Test...`,testConnection:`Test connessione`,forward:`Avanti`,searchingDevices:`Ricerca dispositivi in corso...`,foundDevices:`Trovati {{count}} dispositivi. Seleziona quelli da importare.`,noDevicesFound:`Nessun dispositivo trovato.`,skip:`Salta`,importSelected:`Importa selezionati`,newIntegration:`Nuova Integrazione`,configureIntegration:`Configura Integrazione`,importDevices:`Importa Dispositivi`,addDevice:`Aggiungi dispositivo`,name:`Nome`,namePlaceholder:`es. Camera Ingresso`,snapshotUrlOptional:`Snapshot URL (opzionale)`,streamUrls:`Stream URLs`,addStream:`Aggiungi stream`,cancel:`Annulla`,saving:`Salvataggio...`,save:`Salva`,saveAndNew:`Salva e nuova`,test:`Test`,stream:`Stream {{number}}:`,devices:`dispositivi`,rediscover:`Riscopri`,config:`Config`,integrationNotFound:`Integrazione non trovata.`,configComingSoon:`Config coming soon.`,providerConfig:`Provider Config`,editConfig:`Modifica configurazione`,relinkBrokerHelp:`Scegli il broker tramite cui questa integrazione si connette. Selezionando un broker diverso la si ricollega e riavvia l’addon.`,currentBroker:`Broker attuale`,relinkFailed:`Aggiornamento del collegamento al broker non riuscito.`,noBrokerKind:`Questa integrazione dichiara device-adoption ma il manifest dell’addon non ha un brokerKind.`,connectionInconclusive:`Non è stato possibile verificare:`,connectionUntestable:`Questa integrazione non può essere testata prima di essere creata.`},serverManagement:{title:`Gestione server`,subtitle:`Pacchetti radice aggiornabili a runtime per ogni nodo — gli aggiornamenti si installano nella data directory del nodo e si applicano al riavvio con rollback automatico.`,nodeHub:`hub`,nodeAgent:`agent`,nodeOffline:`offline`,lastReportedVersion:`Ultima versione riportata`,nodeRestarting:`Il nodo si sta riavviando per applicare la modifica…`,topologyError:`Impossibile caricare l'elenco dei nodi del cluster — viene mostrato solo il hub.`,checkForUpdate:`Controlla aggiornamenti`,updateTo:`Aggiorna a {{version}}`,rollback:`Ripristina {{version}}`,runningVersion:`Versione in esecuzione`,latestVersion:`Ultima sul registry`,previousVersion:`Precedente (destinazione rollback)`,seedVersion:`Versione seed immagine`,pendingVersion:`In attesa (si applica al riavvio)`,stateUpToDate:`aggiornato`,stateUpdateAvailable:`aggiornamento disponibile`,stateChecking:`controllo…`,stateStaging:`aggiornamento…`,statePending:`riavvio in sospeso`,stateAwaitingConfirmation:`in attesa di conferma`,stateRolledBack:`rollback eseguito (aggiornamento fallito)`,bootDataRoot:`aggiornabile a runtime`,bootWorkspace:`workspace di sviluppo`,bootBaked:`seed dell'immagine`,bakedSeed:`il seed dell'immagine`,lastChecked:`Ultimo controllo: {{when}}`,loadError:`Impossibile caricare lo stato del pacchetto radice del nodo.`,workspaceNote:`Workspace di sviluppo rilevato — gli aggiornamenti runtime sono disabilitati.`,rolledBackDetail:`Aggiornamento a {{from}} fallito, rollback a {{to}}: {{reason}}`,confirmUpdateTitle:`Aggiorna pacchetto radice del nodo`,confirmUpdateBody:`Installa {{pkg}}@{{version}} sul nodo "{{node}}" e riavvialo per applicarlo. La nuova versione parte in prova: se non raggiunge lo stato ready, il nodo torna automaticamente alla versione corrente. Richiede un supervisore che riavvii sempre il processo (restart policy Docker "unless-stopped" o "always"), altrimenti il nodo resta spento dopo essere uscito per applicare l'aggiornamento.`,confirmUpdateAction:`Aggiorna e riavvia`,confirmRollbackTitle:`Ripristina pacchetto radice del nodo`,confirmRollbackBody:`Riavviare il nodo "{{node}}" sulla versione precedente ({{version}})?`,confirmRollbackAction:`Ripristina e riavvia`,restart:`Riavvia`,nodeRuntimeVersion:`Runtime Node.js`,confirmRestartTitle:`Riavvia nodo`,confirmRestartBody:`Riavviare ora il nodo "{{node}}"? Il processo esce e il suo supervisore lo riavvia sulla stessa versione. Le richieste in corso verso questo nodo vengono interrotte.`,confirmRestartAction:`Riavvia`,updateAll:`Aggiorna tutti i nodi`,updateAllHint:`In sequenza: prima gli agent, l'hub per ultimo — i nodi già aggiornati vengono saltati.`,confirmUpdateAllTitle:`Aggiorna tutti i nodi`,confirmUpdateAllBody:`Aggiorna in sequenza ogni nodo online all'ultima versione pubblicata — prima gli agent, l'hub per ultimo. Ogni nodo installa il suo pacchetto radice (solo se più recente di quello in esecuzione) e riparte in prova con rollback automatico; i nodi già aggiornati vengono saltati. L'hub riparte per ultimo, quindi questa pagina si riconnetterà successivamente.`,confirmUpdateAllAction:`Aggiorna tutti e riavvia`,awaitingConfirmationWarning:`Questo nodo è ripartito su {{version}} e sta confermando lo stato di boot — evita di riavviarlo ora. Aggiornamento e rollback sono temporaneamente non disponibili finché il boot in prova non viene confermato; un riavvio manuale in questa finestra causerebbe il rollback automatico dell'aggiornamento.`,stateCorruptWarning:`Il file di stato server-root su questo nodo è corrotto — il nodo è partito dal seed dell'immagine e le versioni installate nella data directory vengono ignorate. Applicare un aggiornamento riscriverà il file di stato.`,phase2Note:`Fase 2: l'aggiornamento riguarda solo il processo principale di ciascun nodo (hub + agent docker) — i runner degli addon restano sull'overlay /data/framework e l'agent Electron resta legato al bundle fino alle fasi successive. Non assumere coerenza dell'intero stack da un singolo Update.`},ai:{addProfile:`Aggiungi profilo`,attachSnapshot:`Snapshot telecamera`,attachTrack:`Traccia recente`,chatEmpty:`Scegli un profilo, allega se vuoi uno snapshot di una telecamera o una traccia recente, e invia un messaggio. Niente di tutto questo viene salvato.`,chatFailed:`La chiamata di test è fallita`,chooseKind:`Scegli un tipo di profilo`,clearChat:`Pulisci`,colAvgMs:`ms medi`,colCalls:`Chiamate`,colConsumer:`Consumatore`,colDay:`Giorno`,colDisk:`Su disco`,colError:`Errore`,colKind:`Tipo`,colModel:`Modello`,colNode:`Nodo`,colOkErr:`OK / err`,colOn:`Attivo`,colProfile:`Profilo`,colState:`Stato`,colTokens:`Token in / out`,colVision:`Vision`,createProfile:`Crea profilo`,defaultDisabled:`Questo profilo predefinito è disabilitato — i chiamanti non risolvono alcun profilo.`,defaultMissing:`Questo predefinito indica un profilo che non esiste più.`,defaultText:`Profilo testo predefinito`,defaultVision:`Profilo vision predefinito`,editProfile:`Modifica {{name}}`,lastDays:`Ultimi {{days}} giorni`,loadFailed:`Impossibile caricare i profili`,message:`Messaggio`,messagePlaceholder:`Chiedi qualcosa al modello…`,model:`Modello`,name:`Nome`,newProfile:`Nuovo profilo {{kind}}`,noCameras:`Nessuna telecamera trovata.`,noEnabledProfiles:`Nessun profilo abilitato. Aggiungine uno nella scheda Profili.`,noKinds:`Nessun provider AI installato.`,noProfiles:`Nessun profilo AI. Premi "Aggiungi profilo" per configurarne uno.`,noRuntimes:`Nessun nodo espone la capability llm-runtime.`,noTracks:`Nessuna traccia nelle ultime 6 ore.`,noUsage:`Nessuna chiamata AI in questo intervallo.`,none:`Nessuno`,notVision:`Questo profilo non supporta la vision — un'immagine allegata verrà rifiutata prima di leggere qualsiasi cosa.`,pickModelFirst:`scegli un modello`,profile:`Profilo`,profilesSubtitle:`Una riga = un endpoint di modello utilizzabile. I predefiniti qui sotto decidono chi risponde quando una funzione non nomina alcun profilo.`,profilesTitle:`Profili AI`,ready:`pronto`,runtimeNode:`Nodo di esecuzione`,runtimesFailed:`Impossibile leggere i nodi di esecuzione`,runtimesSubtitle:`Nodi che espongono la capability llm-runtime: cosa ha caricato ciascuno, cosa sta scaricando e quanti dati di modello occupa su disco.`,runtimesTitle:`Runtime gestiti`,saveChanges:`Salva modifiche`,saveFailed:`Salvataggio fallito`,secretHint:`Una chiave API salvata non viene mai mostrata. Lasciala com'è per conservarla; digita un nuovo valore per sostituirla.`,selectModel:`Scegli un modello…`,selectProfile:`Scegli un profilo…`,send:`Invia`,snapshotOf:`Snapshot di {{name}}`,stop:`Ferma`,streamNote:`La risposta arriva in streaming mentre il modello la produce. Un modello a freddo può metterci un po' a caricarsi — la riga di stato dice in quale fase si trova.`,systemPlaceholder:`Rispondi con una frase breve.`,systemPrompt:`System prompt (opzionale)`,tabProfiles:`Profili`,tabRuntimes:`Runtime`,tabTest:`Test`,tabUsage:`Utilizzo`,test:`Prova`,testSubtitle:`Una conversazione usa e getta con un solo profilo. Allega uno snapshot dal vivo o una traccia recente per verificare che il modello sappia davvero leggere un'immagine. Non viene salvato nulla — solo la riga di utilizzo.`,testTitle:`Chat di test`,trackOf:`{{class}} su {{name}}`,unreachable:`irraggiungibile`,usageFailed:`Impossibile leggere l'utilizzo`,usageSubtitle:`Aggregato lato server per giorno, consumatore e profilo — mai le singole chiamate. Gli errori sono contati, così un profilo che fallisce sempre è visibile qui prima che una funzione lo segnali.`,usageTitle:`Utilizzo`,vision:`vision`,window:`Intervallo`}},Wl=`camstack_language`,Gl=localStorage.getItem(Wl)??`en`;Q.use(Ns).init({resources:{en:{translation:Hl},it:{translation:Ul}},lng:Gl,fallbackLng:`en`,interpolation:{escapeValue:!1}}),Q.on(`languageChanged`,e=>{localStorage.setItem(Wl,e)}),_(),window.__camstackUiLibrary=Oe,window.__camstackSdk=I,window.__camstackTypes=ze,Le(document.getElementById(`root`)).render(M(S,{children:M(Vl,{})}));export{_i as A,oi as B,Ei as C,Si as D,Ci as E,di as F,$r as G,ri as H,ui as I,Er as J,Qr as K,li as L,hi as M,mi as N,bi as O,pi as P,ci as R,Di as S,wi as T,ni as U,ii as V,ei as W,ln as X,G as Y,Pr as Z,Pi as _,Ji as a,ji as b,Gi as c,Vi as d,zi as f,Fi as g,Ii as h,Yi as i,gi as j,vi as k,Ui as l,Li as m,Ls as n,qi as o,Ri as p,J as q,po as r,Ki as s,Vs as t,Hi as u,Ni as v,Ti as w,Ai as x,Mi as y,si as z};