(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const l of s)if(l.type==="childList")for(const o of l.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(s){const l={};return s.integrity&&(l.integrity=s.integrity),s.referrerPolicy&&(l.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?l.credentials="include":s.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function r(s){if(s.ep)return;s.ep=!0;const l=n(s);fetch(s.href,l)}})();const dt=!1,gt=(e,t)=>e===t,G=Symbol("solid-proxy"),Ee=Symbol("solid-track"),de={equals:gt};let Ve=Ye;const V=1,ge=2,Ke={owned:null,cleanups:null,context:null,owner:null};var k=null;let Ae=null,ht=null,_=null,O=null,R=null,ye=0;function le(e,t){const n=_,r=k,s=e.length===0,l=t===void 0?r:t,o=s?Ke:{owned:null,cleanups:null,context:l?l.context:null,owner:l},i=s?e:()=>e(()=>B(()=>oe(o)));k=o,_=null;try{return J(i,!0)}finally{_=n,k=r}}function A(e,t){t=t?Object.assign({},de,t):de;const n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},r=s=>(typeof s=="function"&&(s=s(n.value)),qe(n,s));return[Ge.bind(n),r]}function E(e,t,n){const r=Pe(e,t,!1,V);ce(r)}function K(e,t,n){Ve=_t;const r=Pe(e,t,!1,V);(!n||!n.render)&&(r.user=!0),R?R.push(r):ce(r)}function H(e,t,n){n=n?Object.assign({},de,n):de;const r=Pe(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,ce(r),Ge.bind(r)}function bt(e){return J(e,!1)}function B(e){if(_===null)return e();const t=_;_=null;try{return e()}finally{_=t}}function mt(e,t,n){const r=Array.isArray(e);let s,l=n&&n.defer;return o=>{let i;if(r){i=Array(e.length);for(let c=0;ct(i,s,o));return s=i,a}}function pt(e){K(()=>B(e))}function q(e){return k===null||(k.cleanups===null?k.cleanups=[e]:k.cleanups.push(e)),e}function Ce(){return _}function $t(){return k}function wt(e,t){const n=k,r=_;k=e,_=null;try{return J(t,!0)}catch(s){Ne(s)}finally{k=n,_=r}}function Ge(){if(this.sources&&this.state)if(this.state===V)ce(this);else{const e=O;O=null,J(()=>be(this),!1),O=e}if(_){const e=this.observers?this.observers.length:0;_.sources?(_.sources.push(this),_.sourceSlots.push(e)):(_.sources=[this],_.sourceSlots=[e]),this.observers?(this.observers.push(_),this.observerSlots.push(_.sources.length-1)):(this.observers=[_],this.observerSlots=[_.sources.length-1])}return this.value}function qe(e,t,n){let r=e.value;return(!e.comparator||!e.comparator(r,t))&&(e.value=t,e.observers&&e.observers.length&&J(()=>{for(let s=0;s1e6)throw O=[],new Error},!1)),t}function ce(e){if(!e.fn)return;oe(e);const t=ye;vt(e,e.value,t)}function vt(e,t,n){let r;const s=k,l=_;_=k=e;try{r=e.fn(t)}catch(o){return e.pure&&(e.state=V,e.owned&&e.owned.forEach(oe),e.owned=null),e.updatedAt=n+1,Ne(o)}finally{_=l,k=s}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&"observers"in e?qe(e,r):e.value=r,e.updatedAt=n)}function Pe(e,t,n,r=V,s){const l={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:k,context:k?k.context:null,pure:n};return k===null||k!==Ke&&(k.owned?k.owned.push(l):k.owned=[l]),l}function he(e){if(e.state===0)return;if(e.state===ge)return be(e);if(e.suspense&&B(e.suspense.inFallback))return e.suspense.effects.push(e);const t=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt=0;n--)if(e=t[n],e.state===V)ce(e);else if(e.state===ge){const r=O;O=null,J(()=>be(e,t[0]),!1),O=r}}function J(e,t){if(O)return e();let n=!1;t||(O=[]),R?n=!0:R=[],ye++;try{const r=e();return yt(n),r}catch(r){n||(R=null),O=null,Ne(r)}}function yt(e){if(O&&(Ye(O),O=null),e)return;const t=R;R=null,t.length&&J(()=>Ve(t),!1)}function Ye(e){for(let t=0;t=0;t--)oe(e.tOwned[t]);delete e.tOwned}if(e.owned){for(t=e.owned.length-1;t>=0;t--)oe(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}e.state=0}function kt(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error",{cause:e})}function Ne(e,t=k){throw kt(e)}const St=Symbol("fallback");function Be(e){for(let t=0;t1?[]:null;return q(()=>Be(l)),()=>{let a=e()||[],c=a.length,u,f;return a[Ee],B(()=>{let g,v,w,T,C,p,m,y,S;if(c===0)o!==0&&(Be(l),l=[],r=[],s=[],o=0,i&&(i=[])),n.fallback&&(r=[St],s[0]=le(x=>(l[0]=x,n.fallback())),o=1);else if(o===0){for(s=new Array(c),f=0;f=p&&y>=p&&r[m]===a[y];m--,y--)w[y]=s[m],T[y]=l[m],i&&(C[y]=i[m]);for(g=new Map,v=new Array(y+1),f=y;f>=p;f--)S=a[f],u=g.get(S),v[f]=u===void 0?-1:u,g.set(S,f);for(u=p;u<=m;u++)S=r[u],f=g.get(S),f!==void 0&&f!==-1?(w[f]=s[u],T[f]=l[u],i&&(C[f]=i[u]),f=v[f],g.set(S,f)):l[u]();for(f=p;fe(t||{}))}const At=e=>`Stale read from <${e}>.`;function Q(e){const t="fallback"in e&&{fallback:()=>e.fallback};return H(xt(()=>e.each,e.children,t||void 0))}function N(e){const t=e.keyed,n=H(()=>e.when,void 0,void 0),r=t?n:H(n,void 0,{equals:(s,l)=>!s==!l});return H(()=>{const s=r();if(s){const l=e.children;return typeof l=="function"&&l.length>0?B(()=>l(t?s:()=>{if(!B(r))throw At("Show");return n()})):l}return e.fallback},void 0,void 0)}const I=e=>H(()=>e());function Et(e,t,n){let r=n.length,s=t.length,l=r,o=0,i=0,a=t[s-1].nextSibling,c=null;for(;ou-i){const v=t[o];for(;i{s=l,t===document?e():d(t,e(),t.firstChild?null:void 0,n)},r.owner),()=>{s(),t.textContent=""}}function b(e,t,n,r){let s;const l=()=>{const i=document.createElement("template");return i.innerHTML=e,i.content.firstChild},o=()=>(s||(s=l())).cloneNode(!0);return o.cloneNode=o,o}function _e(e,t=window.document){const n=t[We]||(t[We]=new Set);for(let r=0,s=e.length;re(t,n))}function d(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!="function")return me(e,t,r,n);E(s=>me(e,t(),s,n),r)}function Pt(e){let t=e.target;const n=`$$${e.type}`,r=e.target,s=e.currentTarget,l=a=>Object.defineProperty(e,"target",{configurable:!0,value:a}),o=()=>{const a=t[n];if(a&&!t.disabled){const c=t[`${n}Data`];if(c!==void 0?a.call(t,c,e):a.call(t,e),e.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(e.target)&&l(t.host),!0},i=()=>{for(;o()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),e.composedPath){const a=e.composedPath();l(a[0]);for(let c=0;c{let i=t();for(;typeof i=="function";)i=i();n=me(e,i,n,r)}),()=>n;if(Array.isArray(t)){const i=[],a=n&&Array.isArray(n);if(Oe(i,t,n,s))return E(()=>n=me(e,i,n,r,!0)),()=>n;if(i.length===0){if(n=X(e,n,r),o)return n}else a?n.length===0?Ue(e,i,r):Et(e,n,i):(n&&X(e),Ue(e,i));n=i}else if(t.nodeType){if(Array.isArray(n)){if(o)return n=X(e,n,r,t);X(e,n,null,t)}else n==null||n===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}}return n}function Oe(e,t,n,r){let s=!1;for(let l=0,o=t.length;l=0;o--){const i=t[o];if(s!==i){const a=i.parentNode===e;!l&&!o?a?e.replaceChild(s,i):e.insertBefore(s,n):a&&i.remove()}else l=!0}}else e.insertBefore(s,n);return[s]}const Nt="http://www.w3.org/2000/svg";function Lt(e,t=!1,n=void 0){return t?document.createElementNS(Nt,e):document.createElement(e,{is:n})}function It(e){const{useShadow:t}=e,n=document.createTextNode(""),r=()=>e.mount||document.body,s=$t();let l;return K(()=>{l||(l=wt(s,()=>H(()=>e.children)));const o=r();if(o instanceof HTMLHeadElement){const[i,a]=A(!1),c=()=>a(!0);le(u=>d(o,()=>i()?u():l(),null)),q(c)}else{const i=Lt(e.isSVG?"g":"div",e.isSVG),a=t&&i.attachShadow?i.attachShadow({mode:"open"}):i;Object.defineProperty(i,"_$host",{get(){return n.parentNode},configurable:!0}),d(a,l),o.appendChild(i),e.ref&&e.ref(i),q(()=>o.removeChild(i))}},void 0,{render:!0}),n}async function Xe(e){const t=await fetch(e,{credentials:"same-origin"});if(!t.ok)throw new Error(`${e}: ${t.status} ${t.statusText}`);return await t.json()}function Ze(){return Xe("/view/api/state")}function jt(){return Xe("/view/api/version")}const pe=Symbol("store-raw"),z=Symbol("store-node"),M=Symbol("store-has"),ze=Symbol("store-self");function Qe(e){let t=e[G];if(!t&&(Object.defineProperty(e,G,{value:t=new Proxy(e,Rt)}),!Array.isArray(e))){const n=Object.keys(e),r=Object.getOwnPropertyDescriptors(e);for(let s=0,l=n.length;se[G][t]),n}function et(e){Ce()&&ae($e(e,z),ze)()}function Mt(e){return et(e),Reflect.ownKeys(e)}const Rt={get(e,t,n){if(t===pe)return e;if(t===G)return n;if(t===Ee)return et(e),n;const r=$e(e,z),s=r[t];let l=s?s():e[t];if(t===z||t===M||t==="__proto__")return l;if(!s){const o=Object.getOwnPropertyDescriptor(e,t);Ce()&&(typeof l!="function"||e.hasOwnProperty(t))&&!(o&&o.get)&&(l=ae(r,t,l)())}return ee(l)?Qe(l):l},has(e,t){return t===pe||t===G||t===Ee||t===z||t===M||t==="__proto__"?!0:(Ce()&&ae($e(e,M),t)(),t in e)},set(){return!0},deleteProperty(){return!0},ownKeys:Mt,getOwnPropertyDescriptor:Dt};function ne(e,t,n,r=!1){if(!r&&e[t]===n)return;const s=e[t],l=e.length;n===void 0?(delete e[t],e[M]&&e[M][t]&&s!==void 0&&e[M][t].$()):(e[t]=n,e[M]&&e[M][t]&&s===void 0&&e[M][t].$());let o=$e(e,z),i;if((i=ae(o,t,s))&&i.$(()=>n),Array.isArray(e)&&e.length!==l){for(let a=e.length;a1){r=t.shift();const o=typeof r,i=Array.isArray(e);if(Array.isArray(r)){for(let a=0;a1){se(e[r],t,[r].concat(n));return}s=e[r],n=[r].concat(n)}let l=t[0];typeof l=="function"&&(l=l(s,n),l===s)||r===void 0&&l==null||(l=te(l),r===void 0||ee(s)&&ee(l)&&!Array.isArray(l)?tt(s,l):ne(e,r,l))}function Wt(...[e,t]){const n=te(e||{}),r=Array.isArray(n),s=Qe(n);function l(...o){bt(()=>{r&&o.length===1?Bt(n,o[0]):se(n,o)})}return[s,l]}const we=new WeakMap,nt={get(e,t){if(t===pe)return e;const n=e[t];let r;return ee(n)?we.get(n)||(we.set(n,r=new Proxy(n,nt)),r):n},set(e,t,n){return ne(e,t,te(n)),!0},deleteProperty(e,t){return ne(e,t,void 0,!0),!0}};function F(e){return t=>{if(ee(t)){let n;(n=we.get(t))||we.set(t,n=new Proxy(t,nt)),e(n)}return t}}const[Ut,Ht]=A(0);setInterval(()=>Ht(e=>e+1),5e3);function Le(e){const t={};for(const n of e.backends)t[n.name]=n.state;for(const n of e.frontends){let r=0;for(let a=0;a0){c=!0;break}if(c){r=a;break}}let s=!1,l=!1,o=!0;const i=new Set;for(let a=0;a0&&(s=!0),i.has(c.name)||(i.add(c.name),l=!0,u!=="unknown"&&(o=!1))}!l||o?n.state="unknown":s?n.state="up":n.state="down"}}const[Y,W]=Wt({byName:{},settling:{}}),Ft=2e3,ie=new Map;function Vt(e,t){return`${e}\0${t}`}function rt(e,t){W(F(s=>{s.settling[e]||(s.settling[e]={}),s.settling[e][t]=!0}));const n=Vt(e,t),r=ie.get(n);r&&clearTimeout(r),ie.set(n,setTimeout(()=>{ie.delete(n),W(F(s=>{s.settling[e]&&delete s.settling[e][t]}))},Ft))}function Kt(e){for(const[t,n]of ie)t.startsWith(e+"\0")&&(clearTimeout(n),ie.delete(t));W(F(t=>{t.settling[e]&&(t.settling[e]={})}))}function st(e){const t={};for(const n of e)Le(n),t[n.maglevd.name]=n;W({byName:t})}function Gt(e,t){W(F(r=>{const s=r.byName[e];if(!s)return;const l=s.backends.find(o=>o.name===t.backend);l&&(l.state=t.transition.to,l.enabled=t.transition.to!=="disabled",l.last_transition=t.transition,l.transitions||(l.transitions=[]),l.transitions.push(t.transition),l.transitions.length>20&&(l.transitions=l.transitions.slice(l.transitions.length-20)),Le(s))}));const n=Y.byName[e];if(n)for(const r of n.frontends)r.pools.some(s=>s.backends.some(l=>l.name===t.backend))&&rt(e,r.name)}function qt(e,t){W(F(n=>{const r=n.byName[e];if(!r)return;const s=t.per_frontend;if(!s||Object.keys(s).length===0){r.lb_state!==void 0&&(r.lb_state=void 0);return}r.lb_state||(r.lb_state={per_frontend:{}});const o=r.lb_state.per_frontend;for(const i of Object.keys(s)){o[i]||(o[i]={});const a=o[i],c=s[i];for(const u of Object.keys(c))a[u]!==c[u]&&(a[u]=c[u]);for(const u of Object.keys(a))u in c||delete a[u]}for(const i of Object.keys(o))i in s||delete o[i]})),Kt(e)}function Yt(e,t,n){return e?.lb_state?.per_frontend?.[t]?.[n]}function Jt(e,t){W(F(n=>{const r=n.byName[e];r&&(r.vpp_state=t)}))}function Xt(e,t){W(F(n=>{const r=n.byName[e];r&&(r.maglevd.connected=t.connected,r.maglevd.last_error=t.last_error)}))}function Zt(e,t,n,r,s){W(F(l=>{const o=l.byName[e];if(!o)return;const i=o.frontends.find(u=>u.name===t);if(!i)return;const a=i.pools.find(u=>u.name===n);if(!a)return;const c=a.backends.find(u=>u.name===r);c&&(c.weight=s,Le(o))})),rt(e,t)}function zt(e,t){const n={};for(const f of e.backends)n[f.name]=f.state;const r=!!e.lb_state,s=e.lb_state?.per_frontend?.[t.name],l=!!Y.settling[e.maglevd.name]?.[t.name];let o=!1,i=!1;for(const f of t.pools)for(const $ of f.backends)if(n[$.name]!=="up"&&(o=!0),!l&&r&&$.effective_weight>0){const g=s?.[$.name];(g===void 0||g===0)&&(i=!0)}const a=t.pools[0],c=!!a&&a.backends.some(f=>f.weight>0),u=!a||a.backends.every(f=>f.effective_weight===0);return!o&&c&&!i?"ok":i?"bug-buckets":u?"primary-drained":o?"degraded":"unknown"}function Qt(e,t){switch(zt(e,t)){case"ok":return"✅";case"bug-buckets":return"‼️";case"primary-drained":return"❗";case"degraded":return"⚠️";case"unknown":return"❓"}}function en(e,t){return e.includes(":")?`[${e}]:${t}`:`${e}:${t}`}function tn(e){if(Ut(),!e||!e.at_unix_ns||e.at_unix_ns<=0)return"";const t=Date.now()-e.at_unix_ns/1e6,n=Math.floor(t/1e3);if(n<=1)return"now";const r=n%60,s=Math.floor(n/60);if(s<1)return`${n}s ago`;const l=s%60,o=Math.floor(s/60);if(o<1)return`${l}m${r}s ago`;const i=o%24,a=Math.floor(o/24);return a<1?`${o}h${l}m ago`:`${a}d${i}h ago`}const He=500,[ve,nn]=A([]);function rn(e){nn(t=>{const n=[...t,e];return n.length>He?n.slice(n.length-He):n})}const sn=1e4,ln=3e4;function on(){let e,t=!1;const n=i=>{try{const a=JSON.parse(i.data);an(a)}catch(a){console.error("sse parse error",a,i.data)}},r=async()=>{try{const i=await Ze();st(i)}catch(i){console.error("resync refetch failed",i)}},s=()=>{e&&(e.close(),e=void 0),e=new EventSource("/view/api/events"),e.onmessage=n,e.addEventListener("resync",r),e.onerror=i=>{console.debug("sse error, browser will reconnect",i)}},l=i=>{t||(t=!0,console.info("sse reconnecting:",i),s(),setTimeout(()=>{t=!1},1e3))};let o=Date.now();setInterval(()=>{const i=Date.now(),a=i-o;o=i,a>ln&&l(`wake detected (${Math.round(a/1e3)}s gap)`)},sn),s()}function an(e){switch(rn(e),e.type){case"backend":Gt(e.maglevd,e.payload);break;case"frontend":e.maglevd,e.payload;break;case"maglevd-status":Xt(e.maglevd,e.payload);break;case"vpp-status":Jt(e.maglevd,e.payload.state);break;case"lb-state":qt(e.maglevd,e.payload);break}}const[Se,lt]=A(void 0);var cn=b("